在 Windows 上用 Claude Code 接入 Kimi Code:从报错到跑通的完整指南

很多人第一次配置 Kimi Code + Claude Code 的时候,照着网上随便找的教程填完配置,结果一启动就是 401 Invalid Authentication,换个姿势又变成 400 Invalid Request。折腾半天,甚至开始怀疑自己的 API Key 是不是买到假货了。

这篇文章把整个踩坑过程整理成了一条清晰的路径,帮你一次性搞定配置,少走弯路。


先搞清楚:Kimi Code 是什么?

Kimi Code 是月之暗面(Moonshot AI)专门为代码开发场景推出的 AI 服务,核心模型叫 kimi-for-coding,底层是 Kimi K2 系列的能力。

它的定位不是通用对话,而是专门服务于软件开发场景,比如:

  • 阅读和理解代码库
  • 编写、调试、重构代码
  • 执行终端命令
  • 与 VS Code、Claude Code 等开发工具集成

Kimi Code 提供了与 Claude Code 兼容的接口,也就是说,你可以用 Claude Code 这个工具,把 AI 模型换成 Kimi,在 Windows 上本地跑一套完整的 AI 编程助手。


配置失败的三个最常见原因

原因一:Base URL 用错了

这是最高频的问题。很多教程会把 Moonshot 的 API 地址写成:

https://api.moonshot.cn/v1

这个地址是「国内通用版」 Moonshot API 的入口,用于普通对话任务。

但 Kimi Code 有专属的 API 地址:

https://api.kimi.com/coding/v1

两个地址背后对应的是不同的服务和账号体系,混用必定报 401。

用途 Base URL
Moonshot 通用 API https://api.moonshot.cn/v1
「Kimi Code 专用」 https://api.kimi.com/coding/v1
Claude Code 环境变量 https://api.kimi.com/coding/

注意:Claude Code 的环境变量 ANTHROPIC_BASE_URL 填的是不带 v1 的路径,而 Roo Code 等工具填的是带 /v1 的完整路径。不同工具,格式略有差异。


原因二:模型名称写错了

常见的错误写法:

kimi-k2.5
kimi-k2
moonshot-v1-8k

Kimi Code 官方文档中,正确的模型 ID 只有一个:

kimi-for-coding

模型名称写错不会报 “模型不存在”,而是直接返回认证失败或请求错误,很容易误导排查方向。


原因三:API Key 来源搞混了

Kimi Code 的 API Key 和 Moonshot 平台的 API Key 「不是同一个东西」,不能混用。

  • 「Moonshot 平台 Key」:在 platform.moonshot.cn 注册生成,用于普通 API 调用
  • 「Kimi Code Key」:在 Kimi Code 会员页面(kimi.com/code)生成,专用于 Kimi Code 服务

如果你拿了 Moonshot 的 Key 去调 Kimi Code 的接口,或者反过来,都会得到 401 Invalid Authentication

「验证 Key 是否有效的最简单方法」——在 CMD 里运行:

curl https://api.kimi.com/coding/v1/models -H "Authorization: Bearer 你的Key"

如果返回模型列表,说明 Key 正确;如果返回 401,说明 Key 本身有问题,去会员页面重新生成。


正确的配置参数

搞清楚三个错误原因之后,正确配置就很直接了。

Claude Code 配置(环境变量方式)

Claude Code 通过环境变量来指定模型和 API:

ANTHROPIC_BASE_URL = https://api.kimi.com/coding/
ANTHROPIC_API_KEY  = sk-kimi-你的Key
ENABLE_TOOL_SEARCH = FALSE

Roo Code 配置(VS Code 插件)

在 Roo Code 的 Provider 设置中填写:

字段
Provider 类型 OpenAI Compatible
Entrypoint https://api.kimi.com/coding/v1
API Key 你的 Kimi Code Key
Model kimi-for-coding
Use legacy OpenAI API format ✅ 开启
Enable streaming ✅ 开启
Include max output tokens ✅ 开启
Enable Reasoning Effort Medium
Max Output Tokens 32768
Context Window Size 262144

为什么需要设置 ENABLE_TOOL_SEARCH=FALSE?

这是很多人成功连上之后遇到的第二道坎。

现象:对话第一条消息(比如说”你好”)能正常响应,但一旦发出需要执行操作的指令(比如”查看当前目录”),就立刻报:

API Error: 400 {"error":{"type":"invalid_request_error","message":"Invalid request Error"}}

「原因在于 Claude Code 的工具调用机制。」

Claude Code 在执行任何实际操作之前,会先发起一次 tool_search 调用,目的是查询当前环境中有哪些工具可用。这是 Claude Code 自己的内部机制,但 Kimi 的 API 目前对这种调用格式不兼容,所以直接返回 400。

第一条”你好”能成功,是因为纯对话不触发工具调用。一旦涉及文件操作、命令执行等,tool_search 就会被触发,然后报错。

第三条”你好”也会失败,是因为此时对话历史中已经包含了前两次失败的 tool 调用记录,整个请求体的格式变得复杂,同样撞上了兼容问题。

「设置 ENABLE_TOOL_SEARCH=FALSE 就是告诉 Claude Code:跳过工具搜索这一步,直接执行。」 Kimi 的接口就能正常处理了。


Windows 上的完整安装步骤

第一步:安装 Node.js 和 Git

打开 Windows 终端(PowerShell),依次执行:

winget install --id Git.Git -e --source winget
winget install OpenJS.NodeJS
Set-ExecutionPolicy -Scope CurrentUser RemoteSigned

执行完成后,「关闭终端窗口,重新开一个新的终端」,让环境变量生效。

第二步:安装 Claude Code

npm install -g @anthropic-ai/claude-code --registry=https://registry.npmmirror.com

第三步:初始化配置文件

node --eval "
    const homeDir = os.homedir();
    const filePath = path.join(homeDir, '.claude.json');
    if (fs.existsSync(filePath)) {
        const content = JSON.parse(fs.readFileSync(filePath, 'utf-8'));
        fs.writeFileSync(filePath, JSON.stringify({ ...content, hasCompletedOnboarding: true }, null, 2), 'utf-8');
    } else {
        fs.writeFileSync(filePath, JSON.stringify({ hasCompletedOnboarding: true }), 'utf-8');
    }"

第四步:配置环境变量

有两种方式,推荐用「永久配置」,避免每次都要重新设置。

方式一:图形界面(最直观)

  1. Win + S,搜索”环境变量”,点击「编辑系统环境变量」
  2. 点击右下角「环境变量」按钮
  3. 在「用户变量」区域点击「新建」
  4. 依次添加以下三条变量:
变量名 变量值
ANTHROPIC_BASE_URL https://api.kimi.com/coding/
ANTHROPIC_API_KEY sk-kimi-你的Key
ENABLE_TOOL_SEARCH FALSE
  1. 每条填完点确定,最后点「确定」保存
  2. 「重新打开终端」,直接输入 claude 即可

方式二:PowerShell 命令(更快)

[System.Environment]::SetEnvironmentVariable("ANTHROPIC_BASE_URL", "https://api.kimi.com/coding/", "User")
[System.Environment]::SetEnvironmentVariable("ANTHROPIC_API_KEY", "sk-kimi-你的Key", "User")
[System.Environment]::SetEnvironmentVariable("ENABLE_TOOL_SEARCH", "FALSE", "User")

执行后关闭终端,重新打开,变量永久生效。

方式三:临时设置(当次启动有效)

如果只是想临时测试,不想动系统配置,可以在 PowerShell 里一次性执行:

$env:ANTHROPIC_BASE_URL="https://api.kimi.com/coding/";
$env:ANTHROPIC_API_KEY="sk-kimi-你的Key";
$env:ENABLE_TOOL_SEARCH="FALSE";
claude

注意:关闭终端后这些变量就消失了,下次还要重新设置。

第五步:验证配置是否生效

启动 Claude Code 后,在命令输入框输入:

/status

这会显示当前使用的模型和连接状态,确认模型显示正确即说明配置成功。

也可以在 PowerShell 里提前验证环境变量是否生效:

echo $env:ENABLE_TOOL_SEARCH
# 应该输出:FALSE

echo $env:ANTHROPIC_BASE_URL
# 应该输出:https://api.kimi.com/coding/

常见报错速查表

报错信息 原因 解决方法
401 Invalid Authentication API Key 无效或 Base URL 错误 检查 Key 来源是否为 Kimi Code 会员页;检查 Base URL 是否为 https://api.kimi.com/coding/
400 Invalid Request(工具调用时) tool_search 兼容问题 设置 ENABLE_TOOL_SEARCH=FALSE
第一条消息正常,后续全部 400 同上,触发了 tool_search 同上
模型不可用 模型 ID 填写错误 改为 kimi-for-coding

常见问题解答

「问:Kimi Code 的 API Key 在哪里生成?」

kimi.com/code 的会员页面生成,不是在 platform.moonshot.cn,两个平台账号独立,Key 不通用。

「问:Key 泄露了怎么办?」

立刻去 Kimi Code 会员页面的 API Key 管理界面,将旧 Key 废弃,重新生成一个,然后更新本地的环境变量。泄露的 Key 有被恶意使用消耗额度的风险,发现后应立即处理。

「问:ENABLE_TOOL_SEARCH=FALSE 会影响功能吗?」

目前阶段不会影响 Kimi Code 的核心功能使用。这是一个临时的兼容性方案,官方文档已明确说明后续会迭代兼容,不需要长期依赖这个设置。

「问:Roo Code 也需要设置 ENABLE_TOOL_SEARCH=FALSE 吗?」

不需要。ENABLE_TOOL_SEARCH 是 Claude Code CLI 的专属环境变量,Roo Code 走的是独立的插件配置逻辑,不受这个变量影响。

「问:配置完成后,Claude Code 里怎么切换模型?」

在 Claude Code 的命令输入框里输入 /model,可以查看和切换当前使用的模型。

「问:Windows CMD 和 PowerShell 的 curl 语法有什么区别?」

CMD 里的 curl 命令需要写成一行,不支持反斜杠 \ 换行;PowerShell 里用 -Uri-Headers 参数,格式与 Linux 的 curl 有区别。遇到语法问题,优先用 CMD 的单行写法测试。


小结

把整个配置流程提炼成三个核心检查点:

  1. 「Base URL 必须是」 https://api.kimi.com/coding/(Claude Code)或 https://api.kimi.com/coding/v1(Roo Code),不是 api.moonshot.cn
  2. 「模型名必须是」 kimi-for-coding,不是 kimi-k2.5 或其他变体
  3. 「API Key 必须从 Kimi Code 会员页面生成」,不是 Moonshot 平台的通用 Key
  4. 「Claude Code 必须额外设置」 ENABLE_TOOL_SEARCH=FALSE,否则工具调用会报 400

按这四点核对一遍,95% 的配置问题都能解决。剩下 5% 通常是 Key 本身失效,重新生成即可。