OpenClaw 配置 Kimi Code 完全指南
OpenClaw 配置 Kimi Code 完全指南

1. 为什么需要这篇教程?
1.1 直接改 baseUrl 行不通
如果你之前配过其他模型,可能会想:”把 baseUrl 一换、加个 key,完事。”
Kimi Code 不行。 Kimi Code 走的不是 OpenAI 协议,而是 Anthropic Messages API 协议。两者在四个关键层面不兼容:
|
|
|
|
|---|---|---|
| API 路径 | /v1/chat/completions |
/v1/messages
/coding/v1 下) |
| 认证头 | Authorization: Bearer |
Authorization: Bearer
anthropic-version: 2023-06-01 |
| system 消息 |
|
必须是 messages[0]
role="system" |
| 流式响应 | delta.content |
delta.text |
这就是为什么你不能简单复制其他 OpenAI 兼容模型的配置——协议层不兼容。
本文提供一套经过端到端验证的配置 ,避免你踩坑。
2. Kimi Code 是什么
Kimi Code 是 Kimi 会员权益中专为开发者提供的智能编程服务,基于 Kimi 最新旗舰模型,通过 CLI、VS Code 扩展插件等产品形态,为开发者提供代码阅读、文件编辑、命令执行等 AI 辅助能力。同时,订阅用户可获取 API Key,将 Kimi Code 的模型能力接入到第三方开发工具与平台。
本文要做的就是:把 Kimi Code 接入 OpenClaw,让你在 OpenClaw 的会话中直接调用 Kimi Code 的编程能力。
3. 获取 Kimi API Key
-
1. 登录 Kimi Code 控制台 -
2. 进入 API Keys 页面(通常在左侧导航栏或设置中) -
3. 创建新 Key(类型选择 Kimi Code) -
4. 立即复制——页面关闭后无法再次查看完整 Key
⚠️ 安全提醒:API Key 等同于密码。泄露后他人可消耗你的额度。下文会演示如何安全存放。
4. 理解 OpenClaw 的模型配置结构
在动手改 JSON 之前,先理解 OpenClaw 的三层模型架构(这是通用知识,适用于所有模型):
┌─────────────────────────────────────────┐│ Layer 1: Provider(提供商) ││ - baseUrl(API 端点) ││ - api(协议类型) ││ - models(该提供商下的模型列表) │└─────────────────────────────────────────┘ ↓┌─────────────────────────────────────────┐│ Layer 2: Model(模型) ││ - id(模型标识符) ││ - name(显示名称) ││ - contextWindow / maxTokens(容量限制) │└─────────────────────────────────────────┘ ↓┌─────────────────────────────────────────┐│ Layer 3: Alias(别名) ││ - 让用户可以用短名调用模型 ││ - 例:kimi/kimicode → "Kimi Code" │└─────────────────────────────────────────┘
Kimi 的凭证存放方式:Kimi 使用环境变量 KIMI_API_KEY,需要在 openclaw.json 的 env 区块中定义。
5. 手动配置步骤(零命令,纯 JSON 编辑)
5.1 备份原配置
操作:复制 ~/.openclaw/openclaw.json 到同目录下的 openclaw.json.bak。
为什么备份:JSON 语法错误(比如漏了逗号、多了括号)会导致 OpenClaw 无法启动。有备份可以随时回滚。
5.2 打开配置文件
用任意文本编辑器打开:
-
• Windows: %USERPROFILE%\.openclaw\openclaw.json -
• macOS/Linux: ~/.openclaw/openclaw.json
5.3 配置 Provider(第一层)
在 models.providers 下找到或新建 kimi 节点:
"kimi": { "baseUrl": "https://api.kimi.com/coding/v1", "api": "anthropic-messages", "models": []}
字段说明:
-
• baseUrl:https://api.kimi.com/coding/v1(必须带/v1,否则 404) -
• api:anthropic-messages(Kimi Code 使用 Anthropic 协议,不是openai-completions)
5.4 配置 Model(第二层)
在 kimi.models 数组中添加模型定义。以下是两个常用模型:
"models": [ { "id": "k2p5", "name": "Kimi for Coding", "reasoning":true, "input": ["text", "image"], "contextWindow": 262144, "maxTokens": 32768, "compat": { "requiresOpenAiAnthropicToolPayload":true } }, { "id": "kimicode", "name": "Kimi Code", "reasoning":true, "input": ["text", "image"], "contextWindow": 262144, "maxTokens": 32768, "compat": { "requiresOpenAiAnthropicToolPayload":true } }]
字段说明:
|
|
|
|
|---|---|---|
id |
k2p5
kimicode |
k2p5 是 Kimi 官方 id;kimicode 是自定义别名 id |
name |
|
|
reasoning |
true |
|
input |
["text", "image"] |
|
contextWindow |
262144 |
|
maxTokens |
32768 |
|
compat.requiresOpenAiAnthropicToolPayload |
true |
|
关于
id的选择:k2p5是 Kimi 官方模型 id(通过openclaw models list可见)。kimicode是我自定义的 id,用于区分不同用途(例如一个走旧 key,一个走新 key)。你可以只保留k2p5,也可以自定义一个更易记的 id。
5.5 配置环境变量(凭证)
在 openclaw.json 的根级别找到 env 区块(如果没有则新建),添加:
"env": { "KIMI_API_KEY": "sk-kimi-..."}
具体位置:env 与 models、agents、auth 等是同级字段,都位于 JSON 的根级别。将 sk-kimi-... 替换为你的实际 Key。
⚠️ 安全提醒:
openclaw.json通常不会被提交到 Git(它在~/.openclaw/目录下,不在项目仓库里),所以直接把 Key 写进env.KIMI_API_KEY是安全的。如果你确实担心泄露,可以将 Key 放在独立文件中,通过启动脚本注入环境变量——但这需要额外配置,不在本文讨论范围内。
5.6 配置 Agent 别名(第三层)
在 agents.defaults.models 下添加:
"agents": { "defaults": { "models": { "kimi/k2p5": { "alias": "Kimi" }, "kimi/kimicode": { "alias": "Kimi Code" } } }}
这样你可以用 kimi/kimicode 或 Kimi Code 来引用模型。
5.7 配置 Auth Profile
在 auth.profiles 下添加:
"auth": { "profiles": { "kimi:default": { "provider": "kimi", "mode": "api_key" } }}
这告诉 OpenClaw:Kimi provider 使用 API Key 模式认证。
5.8 配置插件白名单(消除启动警告)
在 plugins 下添加:
"plugins": { "allow": ["kimi"], "entries": { "kimi": { "enabled":true } }}
如果不加 allow,每次启动都会看到警告:plugins.allow is empty; discovered non-bundled plugins may auto-load。
6. 验证配置
6.1 检查 JSON 语法
openclaw config validate
期望输出:Config valid: ~\.openclaw\openclaw.json
6.2 查看模型列表
openclaw models list
期望输出(节选):
kimi/k2p5 text+image 262k no yes configured,alias:Kimikimi/kimicode text+image 262k no yes configured,alias:Kimi Code
看到 configured,alias:Kimi Code 说明注册成功。
注意:你可能还会看到
kimi-coding/kimicode(没有configured标记)。这是 Kimi 插件自动注册的别名,与kimi/kimicode功能相同。优先使用带configured标记的kimi/kimicode。
6.3 执行 one-shot 推理测试
openclaw agent --agent main --model kimi/kimicode --message "Reply with exactly one word: pong" --thinking off --timeout 30
期望输出:
pongProcess exited with code 0.
如果返回 pong,说明端到端通了:OpenClaw → Gateway → Kimi API → 返回内容。
6.4 执行代码生成测试
openclaw agent --agent main --model kimi/kimicode --message "Write a Python function that returns the sum of two integers. Output ONLY the code." --thinking off --timeout 45
期望:返回有效的 Python 函数代码,例如:
def add(a: int, b: int) -> int: return a + b
7. 日常使用
7.1 单次任务(指定模型)
openclaw agent --agent main --model kimi/kimicode --message "你的任务描述" --thinking medium
7.2 TUI 交互模式
openclaw chat
openclaw chat 是终端 UI 命令,不是 one-shot 推理命令。它连接到已有 session,不带 --model 参数——模型由当前 session 的默认配置决定。
如需在 TUI 中使用 Kimi Code,先通过 openclaw agent --model kimi/kimicode 运行一次指定模型的任务,或修改 session 的默认模型配置。
8. 常见问题与排错
Q1: openclaw models list 看不到 kimi/kimicode
排查步骤:
-
1. 检查 JSON 语法: openclaw config validate -
2. 确认 models.providers.kimi.models数组中包含id: "kimicode" -
3. 确认 agents.defaults.models中包含"kimi/kimicode" -
4. 重启 Gateway(托盘图标右键 → Restart,或关掉重新运行 gateway.cmd)
Q2: 测试返回 401 Unauthorized
原因:API Key 无效或过期。
解决:
-
1. 检查 env.KIMI_API_KEY是否与实际 Key 一致 -
2. 在 Kimi 开放平台 确认 Key 状态 -
3. 重新写入 Key 并重启 Gateway
Q3: 测试返回 400 Bad Request
原因:协议字段不匹配。
排查:
-
1. 确认 api字段为anthropic-messages(不是openai-completions) -
2. 确认 baseUrl为https://api.kimi.com/coding/v1 -
3. 检查模型 id是否有效
Q4: kimi-coding/kimicode 和 kimi/kimicode 有什么区别?
说明:kimi-coding/* 是 Kimi 插件自动注册的别名,与手动配置的 kimi/* 指向同一套 API。两者功能相同,建议使用 kimi/kimicode(带有 configured 标记,表示显式配置)。
Q5: 每次启动都看到 plugins.allow is empty 警告
解决:已在本文档 5.8 节配置 plugins.allow,添加后重启 Gateway 即可消除。
9. 附录 A:完整配置示例
{ "agents": { "defaults": { "models": { "kimi/k2p5": { "alias": "Kimi" }, "kimi/kimicode": { "alias": "Kimi Code" } } } }, "models": { "providers": { "kimi": { "baseUrl": "https://api.kimi.com/coding/v1", "api": "anthropic-messages", "models": [ { "id": "k2p5", "name": "Kimi for Coding", "reasoning":true, "input": ["text", "image"], "contextWindow": 262144, "maxTokens": 32768, "compat": { "requiresOpenAiAnthropicToolPayload":true } }, { "id": "kimicode", "name": "Kimi Code", "reasoning":true, "input": ["text", "image"], "contextWindow": 262144, "maxTokens": 32768, "compat": { "requiresOpenAiAnthropicToolPayload":true } } ] } } }, "auth": { "profiles": { "kimi:default": { "provider": "kimi", "mode": "api_key" } } }, "env": { "KIMI_API_KEY": "sk-kimi-..." }, "plugins": { "allow": ["kimi"], "entries": { "kimi": { "enabled":true } } }}
夜雨聆风