环境信息

项目
服务器 阿里云 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 个问题:

  1. 飞书插件重复注册警告(duplicate plugin id detected
  2. sonnet4.6 响应延迟过高(~15 秒)
  3. 切换后飞书 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 原因分析

飞书插件被注册了两次

  1. 内置版本 — OpenClaw 自带,通过 openclaw.jsonplugins.entries.feishu: {"enabled": true} 启用
  2. 扩展目录版本~/.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 warningsduplicate 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 错误,而更可能是以下原因之一:

  1. API 偶发抖动 — 第三方中转站在高负载时对 tool 数量敏感
  2. Gateway 未完全重启 — 第一次批量加载时配置未完全生效
  3. 工具数量敏感 — 一次性注册过多 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. 经验总结

关键教训

  1. 模型切换本身极简——只改 openclaw.json 一个字段 + 重启。但不同模型对工具 schema 的校验严格程度不同,切换后一定要测试。
  2. Claude API 对 JSON Schema 校验比国产模型严格得多——kimi-k2.5(DashScope)几乎不校验,Claude 要求严格符合 draft 2020-12。如果 Skill 数量多,更容易触发问题。
  3. 二分法是排查 Skill 兼容性问题的最高效方法——11 个 Skill 逐个测试需要 11 次,二分法最多 4 次就能定位。
  4. 第三方 API 中转站稳定性是隐患——首次请求延迟高、偶发 503。建议保留一个稳定的国产模型(如 kimi-k2.5)作为降级方案。
  5. OpenClaw 的 Doctor 机制会自动恢复配置——不要试图通过删除 openclaw.json 条目来禁用内置插件,Doctor 会加回来。 

Logo

小龙虾开发者社区是 CSDN 旗下专注 OpenClaw 生态的官方阵地,聚焦技能开发、插件实践与部署教程,为开发者提供可直接落地的方案、工具与交流平台,助力高效构建与落地 AI 应用

更多推荐