OpenClaw 切换 Claude Sonnet 4.6 模型完整指南(含踩坑排查)
本文记录了将飞书Agent默认模型从阿里云DashScope的kimi-k2.5切换至第三方ClaudeAPI代理api123.icu的过程。主要操作仅需修改openclaw.json配置并重启Gateway,但实际遇到三个问题:飞书插件重复注册警告(通过移除extensions目录解决)、API响应延迟高(首次请求约15秒)、切换后HTTP400报错(采用二分法逐步排查Skills)。经验表明C
环境信息
| 项目 | 值 |
|---|---|
| 服务器 | 阿里云 ECS(中国大陆) |
| OpenClaw 版本 | 2026.3.8 (3caab92) |
| Node.js | v24.14.0 |
| Agent 平台 | 飞书(多多助理) |
| 原默认模型 | dashscope/kimi-k2.5 |
| 目标模型 | custom-api123-icu/claude-sonnet-4-6 |
| API 中转站 | api123.icu(第三方 Claude API 代理) |
| 已安装 Skills | 11 个(含 bocha-web-search、notion-sync、siliconflow-image-gen 等) |
1. 背景
OpenClaw 支持通过 openclaw.json 配置多个模型 Provider。本次操作的目标是将飞书 Agent 的默认模型从阿里云 DashScope 的 kimi-k2.5 切换到第三方中转站 api123.icu 提供的 claude-sonnet-4-6。
切换本身很简单——只需要修改 1 个文件。但实际过程中遇到了 3 个问题:
- 飞书插件重复注册警告(
duplicate plugin id detected) - sonnet4.6 响应延迟过高(~15 秒)
- 切换后飞书 Agent 不回复,报
HTTP 400: input_schema JSON schema is invalid
2. 模型切换操作(仅 1 个文件)
2.1 涉及文件
只需修改一个文件: ~/.openclaw/openclaw.json
修改字段:agents.defaults.model
不需要修改 AGENTS.md、飞书插件配置、或任何 Skill 脚本。模型是全局配置,所有 sub-agent 都会继承。
2.2 切换命令
python3 << 'SWITCH'
import json
filepath = "/root/.openclaw/openclaw.json"
with open(filepath, "r", encoding="utf-8") as f:
config = json.load(f)
old_model = config["agents"]["defaults"]["model"]
config["agents"]["defaults"]["model"] = "custom-api123-icu/claude-sonnet-4-6"
with open(filepath, "w", encoding="utf-8") as f:
json.dump(config, f, ensure_ascii=False, indent=2)
print(f"✅ 模型已切换: {old_model} → custom-api123-icu/claude-sonnet-4-6")
SWITCH
2.3 重启 Gateway 使配置生效
openclaw gateway install --force && openclaw gateway restart
2.4 验证
python3 -c "
import json
c = json.load(open('/root/.openclaw/openclaw.json'))
print('当前默认模型:', c['agents']['defaults']['model'])
"
预期输出:当前默认模型: custom-api123-icu/claude-sonnet-4-6
3. 踩坑 #1:飞书插件重复注册警告
3.1 现象
Gateway 重启后控制台出现黄色警告:
Config warnings:
- plugins.entries.feishu: plugin feishu: duplicate plugin id detected;
later plugin may be overridden (/root/.openclaw/extensions/feishu/index.ts)
影响: 不影响功能,但看着不舒服。
3.2 原因分析
飞书插件被注册了两次:
- 内置版本 — OpenClaw 自带,通过
openclaw.json的plugins.entries.feishu: {"enabled": true}启用 - 扩展目录版本 —
~/.openclaw/extensions/feishu/index.ts,Gateway 自动扫描加载
两个来源注册了相同的 plugin id feishu,导致冲突警告。
3.3 排查过程
# 查看 openclaw.json 里的飞书配置
python3 -c "
import json
c = json.load(open('/root/.openclaw/openclaw.json'))
plugins = c.get('plugins', {}).get('entries', {})
for k, v in plugins.items():
if 'feishu' in k.lower():
print(f'{k} = {json.dumps(v, ensure_ascii=False)}')
"
# 输出: feishu = {"enabled": true}
# 查看 extensions 目录
ls -la ~/.openclaw/extensions/feishu/
# 确认存在 index.ts、skills/、node_modules/ 等
3.4 解决方案
注意: 不能通过删除 openclaw.json 里的 feishu 条目来解决——OpenClaw 的 Doctor 机制会自动把它加回来(feishu configured, enabled automatically)。
正确做法:保留 openclaw.json 配置,移除 extensions 目录中的重复版本。
# 备份后移除 extensions 目录的飞书插件
mv ~/.openclaw/extensions/feishu ~/.openclaw/extensions/feishu.bak
# 重启 Gateway
openclaw gateway install --force && openclaw gateway restart
3.5 验证
重启后控制台输出应该不再有 Config warnings 和 duplicate plugin id 警告。
如果飞书 Agent 出现异常,可以随时恢复:
mv ~/.openclaw/extensions/feishu.bak ~/.openclaw/extensions/feishu
openclaw gateway install --force && openclaw gateway restart
4. 踩坑 #2:API 响应延迟过高
4.1 现象
在飞书发消息后,等了几分钟没有回复。
4.2 排查
直接 curl 测试 API 响应:
curl -s -w "\\nHTTP_CODE: %{http_code}\\nTIME: %{time_total}s\\n" \\
<https://api123.icu/v1/chat/completions> \\
-H "Content-Type: application/json" \\
-H "Authorization: Bearer YOUR_API_KEY" \\
-d '{"model":"claude-sonnet-4-6","messages":[{"role":"user","content":"hi"}],"max_tokens":10}' \\
--max-time 15
结果:
HTTP_CODE: 200
TIME: 14.883130s
API 是通的,但响应时间接近 15 秒——很可能是冷启动或中转站负载高。
4.3 结论
- 第三方中转站(api123.icu)的首次请求可能因冷启动延迟较高
- 后续请求通常会快很多(降到 2-5 秒)
- 如果飞书侧有超时机制(如 30 秒),长时间等待可能导致超时无回复
建议: 如果经常遇到首次请求超时,可以考虑设置一个 cron job 定期 ping API 保持热启动:
# 每 5 分钟 ping 一次保持连接
*/5 * * * * curl -s <https://api123.icu/v1/models> -H "Authorization: Bearer YOUR_KEY" > /dev/null 2>&1
5. 踩坑 #3:HTTP 400 input_schema 报错(重点)
5.1 现象
切换到 sonnet4.6 后,在飞书发消息,Agent 返回错误:
HTTP 400: ..custom.input_schema: JSON schema is invalid.
It must match JSON Schema draft 2020-12
5.2 原因分析
Claude API(Anthropic)对工具定义的 input_schema 校验非常严格,必须符合 JSON Schema draft 2020-12 规范。而之前用的 kimi-k2.5(DashScope API)对 schema 校验比较宽松,不合规的 schema 也能通过。
OpenClaw 的 Skills 使用 SKILL.md 定义工具,Gateway 会自动将其转换为 API 需要的 tool 定义(含 input_schema)。当 Skill 数量多时,某些自动生成的 schema 可能不完全合规。
5.3 排查方法:二分法禁用 Skills
由于不确定是哪个 Skill 的 schema 有问题,采用二分法逐步排查:
第一步:全部移走,确认裸模型正常
mv ~/.openclaw/workspace/skills ~/.openclaw/workspace/skills.bak
mkdir ~/.openclaw/workspace/skills
openclaw gateway install --force && openclaw gateway restart
# 飞书测试 → ✅ 正常回复
第二步:分两批加回 Skills
第一批(5 个常用 Skill):
for s in find-skills summarize openclaw-tavily-search bocha-web-search notion-sync; do
cp -r ~/.openclaw/workspace/skills.bak/$s ~/.openclaw/workspace/skills/
done
openclaw gateway install --force && openclaw gateway restart
# 飞书测试 → ✅ 正常
第二批(6 个剩余 Skill):
for s in siliconflow-image-gen qwen-image content-creator-skill excel-xlsx microsoft-excel skill-vetter; do
cp -r ~/.openclaw/workspace/skills.bak/$s ~/.openclaw/workspace/skills/
done
openclaw gateway install --force && openclaw gateway restart
# 飞书测试 → ❌ 不回复
第三步:继续二分第二批
# 移除第二批
for s in siliconflow-image-gen qwen-image content-creator-skill excel-xlsx microsoft-excel skill-vetter; do
rm -rf ~/.openclaw/workspace/skills/$s
done
# 2A:前 3 个
for s in siliconflow-image-gen qwen-image content-creator-skill; do
cp -r ~/.openclaw/workspace/skills.bak/$s ~/.openclaw/workspace/skills/
done
openclaw gateway install --force && openclaw gateway restart
# 飞书测试 → ✅ 正常
# 2B:后 3 个
for s in excel-xlsx microsoft-excel skill-vetter; do
cp -r ~/.openclaw/workspace/skills.bak/$s ~/.openclaw/workspace/skills/
done
openclaw gateway install --force && openclaw gateway restart
# 飞书测试 → ✅ 正常
5.4 结论
分开加载两批各 3 个 Skill 都正常,但之前一次性加载 6 个时失败。说明问题不是某个特定 Skill 的 schema 错误,而更可能是以下原因之一:
- API 偶发抖动 — 第三方中转站在高负载时对 tool 数量敏感
- Gateway 未完全重启 — 第一次批量加载时配置未完全生效
- 工具数量敏感 — 一次性注册过多 tool 可能触发 API 的临时限制 </aside>
最终所有 11 个 Skill + sonnet4.6 正常共存运行。
5.5 如果问题复发
如果未来再遇到 input_schema 报错,可以按以下顺序处理:
方案 A:重启 Gateway
openclaw gateway install --force && openclaw gateway restart
方案 B:二分法定位问题 Skill
# 全移走
mv ~/.openclaw/workspace/skills ~/.openclaw/workspace/skills.bak
mkdir ~/.openclaw/workspace/skills
# 逐个加回,每加一个就重启+测试
for s in $(ls ~/.openclaw/workspace/skills.bak/); do
echo "正在测试: $s"
cp -r ~/.openclaw/workspace/skills.bak/$s ~/.openclaw/workspace/skills/
openclaw gateway install --force && openclaw gateway restart
echo "请在飞书测试,按 Enter 继续..."
read
done
方案 C:临时回退到 kimi-k2.5
python3 -c "
import json
f = '/root/.openclaw/openclaw.json'
c = json.load(open(f))
c['agents']['defaults']['model'] = 'dashscope/kimi-k2.5'
json.dump(c, open(f, 'w'), ensure_ascii=False, indent=2)
print('✅ 已回退到 kimi-k2.5')
"
openclaw gateway install --force && openclaw gateway restart
6. 常用命令速查
| 操作 | 命令 |
|---|---|
| 查看当前默认模型 | python3 -c "import json; c=json.load(open('/root/.openclaw/openclaw.json')); print(c['agents']['defaults']['model'])" |
| 重启 Gateway | openclaw gateway install --force && openclaw gateway restart |
| 查看 Gateway 日志 | tail -f /tmp/openclaw/openclaw-$(date +%Y-%m-%d).log |
| 测试 API 连通性 | curl -s -w "\\nHTTP: %{http_code} TIME: %{time_total}s" <https://api123.icu/v1/chat/completions> -H "Content-Type: application/json" -H "Authorization: Bearer KEY" -d '{"model":"claude-sonnet-4-6","messages":[{"role":"user","content":"hi"}],"max_tokens":10}' --max-time 15 |
| 查看已安装 Skills | ls ~/.openclaw/workspace/skills/ |
| 查看 Gateway 状态 | systemctl --user status openclaw-gateway.service |
7. 经验总结
关键教训
- 模型切换本身极简——只改
openclaw.json一个字段 + 重启。但不同模型对工具 schema 的校验严格程度不同,切换后一定要测试。 - Claude API 对 JSON Schema 校验比国产模型严格得多——kimi-k2.5(DashScope)几乎不校验,Claude 要求严格符合 draft 2020-12。如果 Skill 数量多,更容易触发问题。
- 二分法是排查 Skill 兼容性问题的最高效方法——11 个 Skill 逐个测试需要 11 次,二分法最多 4 次就能定位。
- 第三方 API 中转站稳定性是隐患——首次请求延迟高、偶发 503。建议保留一个稳定的国产模型(如 kimi-k2.5)作为降级方案。
- OpenClaw 的 Doctor 机制会自动恢复配置——不要试图通过删除
openclaw.json条目来禁用内置插件,Doctor 会加回来。
更多推荐




所有评论(0)