在 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');
}"
第四步:配置环境变量
有两种方式,推荐用「永久配置」,避免每次都要重新设置。
方式一:图形界面(最直观)
-
按 Win + S,搜索”环境变量”,点击「编辑系统环境变量」 -
点击右下角「环境变量」按钮 -
在「用户变量」区域点击「新建」 -
依次添加以下三条变量:
| 变量名 | 变量值 |
|---|---|
ANTHROPIC_BASE_URL |
https://api.kimi.com/coding/ |
ANTHROPIC_API_KEY |
sk-kimi-你的Key |
ENABLE_TOOL_SEARCH |
FALSE |
-
每条填完点确定,最后点「确定」保存 -
「重新打开终端」,直接输入 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 的单行写法测试。
小结
把整个配置流程提炼成三个核心检查点:
-
「Base URL 必须是」 https://api.kimi.com/coding/(Claude Code)或https://api.kimi.com/coding/v1(Roo Code),不是api.moonshot.cn -
「模型名必须是」 kimi-for-coding,不是kimi-k2.5或其他变体 -
「API Key 必须从 Kimi Code 会员页面生成」,不是 Moonshot 平台的通用 Key -
「Claude Code 必须额外设置」 ENABLE_TOOL_SEARCH=FALSE,否则工具调用会报 400
按这四点核对一遍,95% 的配置问题都能解决。剩下 5% 通常是 Key 本身失效,重新生成即可。
