OpenClaw 接入 Kitcoding
OpenClaw(龙虾)是自托管的 AI Agent,可以接 Kitcoding 作为模型供应商。配置看着没问题却不工作,多半是踩了下面几个高频坑。
先看分组——别用 VIP/SVIP 接 OpenClaw
Kitcoding 明确禁止使用 VIP / SVIP 分组为 OpenClaw 供 API,否则可能导致账号封禁。
接 OpenClaw 请使用 Claude 特价 / Claude 特价-缓存优化 / AWS / Anthropic 官方 分组。详见 模型分组介绍。这一步比下面任何排坑都重要 —— 分组用错,省下的钱不够赔。
排查总思路
先用 curl 确认 Kitcoding 本身没问题(能返回 200),再看 OpenClaw 端发出去的请求有什么不同(UA、路径、格式)。大多数问题就是下面这几个坑。把本页直接丢给 Claude Code / OpenClaw 让它帮你修也很有效。
坑 1:403 被拦(SDK UA 被 WAF 拦)
症状:curl 直接请求 Kitcoding 正常(200),但 OpenClaw 发出去就是 403 Your request was blocked。
原因:OpenClaw 底层用 @anthropic-ai/sdk,会带上官方 SDK 的 User-Agent(如 Anthropic/JS 0.73.0)。套了 Cloudflare / WAF 的中转站可能直接拦截带官方 SDK 特征的 UA。
验证:
# 带 SDK UA → 可能 403
curl -H "User-Agent: Anthropic/JS 0.73.0" \
-H "x-api-key: 你的-kitcoding-令牌" \
-H "anthropic-version: 2023-06-01" \
https://kitcoding.com/v1/messages \
-d '{"model":"claude-sonnet-4-20250514","max_tokens":10,"messages":[{"role":"user","content":"hi"}]}'
# 普通 UA → 200
curl -H "User-Agent: Mozilla/5.0" \
-H "x-api-key: 你的-kitcoding-令牌" \
-H "anthropic-version: 2023-06-01" \
https://kitcoding.com/v1/messages \
-d '{"model":"claude-sonnet-4-20250514","max_tokens":10,"messages":[{"role":"user","content":"hi"}]}'解决:在 provider 配置里加 headers 覆盖 UA:
{
"kitcoding": {
"baseUrl": "https://kitcoding.com",
"apiKey": "你的-kitcoding-令牌",
"api": "anthropic-messages",
"headers": {
"User-Agent": "Mozilla/5.0"
},
"models": []
}
}补充
若在 provider 层加 UA 不生效,可尝试在 provider.model 层也加一个(某些版本有此情况)。若 curl 原本就 200,其实不用加 UA。
坑 2:baseUrl 不要带 /v1
症状:请求直接 404,日志里路径变成了 /v1/v1/messages。
原因:Anthropic SDK 会自动在 baseUrl 后拼 /v1/messages。如果你的 baseUrl 写了 https://kitcoding.com/v1,实际就成了 /v1/v1/messages → 404。OpenAI 模式同理(自动拼 /v1/chat/completions)。
解决:baseUrl 只写到域名,不带路径:
{ "baseUrl": "https://kitcoding.com" }注意:这与 Codex 配置 中"要带 /v1"的规则不冲突 —— 那是 Codex 自己不自动拼,而 OpenClaw 的 SDK 会自动拼。看客户端行为,别死记。
坑 3:api 字段只认三个值
症状:启动报 Config invalid,或模型列表里看不到你配的 provider。
原因:OpenClaw 的 api 字段严格校验,只接受:
| 值 | 对应格式 |
|---|---|
anthropic-messages | Anthropic Messages API(推荐) |
openai-completions | OpenAI Chat Completions |
openai-responses | OpenAI Responses API |
写成 openai-chat、openai、anthropic 等都会报错。
解决:用上面三个之一。推荐 anthropic-messages,因为 OpenClaw 内部就是 Anthropic 格式。(部分中转站只支持 openai-responses,按实际情况选。)
坑 4:openai-completions 收到空回复
症状:api 设为 openai-completions,请求成功(isError=false)但 UI 显示空消息。
原因:OpenClaw 内部用 Anthropic 格式处理消息流,openai-completions 的响应在某些情况下无法正确映射。
解决:Kitcoding 同时支持 Anthropic 和 OpenAI 格式,优先用 anthropic-messages。
坑 5:有两个配置文件要同步改
OpenClaw 有两处 provider 配置需要同步修改,只改一个会出现"配了但没生效":
~/.openclaw/openclaw.json → models.providers
~/.openclaw/agents/main/agent/models.json → providers改完用 openclaw models status 确认。
坑 6:上下文已压缩 / 模型只说话不干活
- 频繁提示"上下文已压缩":
provider.model.contextWindow默认值偏小(如 16000),改成32000或更高。 - GPT-Codex 系列只回文字不调用工具:配置里缺推理能力声明,补:
"compat": {
"supportsReasoningEffort": true,
"supportsStore": true
}(同样需要在 openclaw.json 和 agent 的 models.json 两处都加。)
完整配置示例
{
"kitcoding": {
"baseUrl": "https://kitcoding.com",
"apiKey": "你的-kitcoding-令牌",
"api": "anthropic-messages",
"headers": {
"User-Agent": "Mozilla/5.0"
},
"models": [
{
"id": "claude-sonnet-4-20250514",
"name": "kitcoding claude-sonnet-4",
"reasoning": false,
"input": ["text", "image"],
"contextWindow": 200000,
"maxTokens": 32000
}
]
}
}排查工具速查
| 命令 | 用途 |
|---|---|
openclaw logs --follow | 实时查看运行日志 |
openclaw models status | 查看当前模型与认证状态 |
openclaw models list --provider xxx | 查看特定 provider 的模型 |
openclaw doctor | 综合诊断 |
openclaw agent --agent 'main' --message '你好' | 命令行直接测试(比界面方便) |