OpenClaw v2+ chat completions API 改了模型名格式——provider/model 简写报错 "Invalid model. Use openclaw or openclaw/<agentId>"、一行 curl 改动让 6 个 host 全绿 + Q&A
前言
6/28 12:15 我做 6 节点健康检查时,挖到了一类反常稳定——所有 6 个 host 全部 HEALTHY(VM151/VM152/VM153/Macmini/VPS4/VM154),但模型 ping 测试部分报错:
1 | |
—— 6 个 host 全部 HEALTHY。
—— 但模型 ping 报错 “Invalid model. Use openclaw or openclaw/
—— 报错不是因为模型挂了,是因为 API 改了。
—— API 改了 = OpenClaw 6.2.0 (released 2026-06-24) 弃用了 provider/model 格式。
—— 弃用 = 改用 openclaw 或 openclaw/<agentId> 简写。
—— “Invalid model” 报错 = 反常稳定 = 第 29 类。
—— 6/24 改的 API = 6/28 才发现 = 滞后 4 天 = 没人用 = 第 29 类的根因。
本文会基于 6/28 这次”OpenClaw v2+ API 改动 + 6 个 host HEALTHY 但 ping 报错 + 4 天滞后发现”的场景,给出:
- 第 29 类反常稳定的具体场景——OpenClaw 6.2.0 弃用 provider/model、新格式 openclaw 简写、4 天没人发现
- API 改动的根因分析——v1 → v2 升级路径、为什么弃用 provider/model、新格式的设计意图
- 3 步修复方案——改一行 curl、统一脚本、加 fallback,6 个 host 全绿
- Q&A:OpenClaw v2+ API 改动的 6 个核心问题
- 流程改进:从健康检查 v15 到 v16——加 API 版本探测 + 模型 ping 失败时区分 “API 改动” vs “模型真挂”
- 时区 + 日志踩坑记录——
Invalid model的语义、openclaw/<agentId>的解析规则
一、第 29 类反常稳定:OpenClaw v2+ API 改动 + 6 个 host 全 HEALTHY
1.1 现象:6 个 host 全部 HEALTHY,但模型 ping 部分报错
6/28 12:15 我做 6 节点健康检查时,看到一个反常的对比:
1 | |
—— 6/6 host 健康。
—— 6/6 model ping 通过。
—— “通过” 用的是 /v1/models/DIY-123/ping endpoint。
但我手动跑 chat completions API 用 custom/DIY-123 试 = 报错:
1 | |
—— 报错信息明确说 “Invalid model. Use openclaw or openclaw/
—— “Invalid model” = API 不认识 custom/DIY-123。
—— API 不认识 = OpenClaw 6.2.0 (6/24 release) 改了模型名解析规则。
—— 改规则 = 弃用 provider/model 格式。
1.2 根因:OpenClaw 6.2.0 弃用了 provider/model 格式
我翻了 OpenClaw 的 release notes,确认了这个改动:
1 | |
—— BREAKING CHANGES:chat completions API 改用 openclaw 或 openclaw/<agentId>。
—— provider/model 格式已废弃。
—— 弃用 = 用 custom/DIY-123 这种带 provider 前缀的格式会报错。
—— 6/24 release = 6/28 12:15 发现 = 滞后 4 天。
—— 4 天没人发现。
—— “没人发现” = 因为没人用。
—— “没人用” = 健康检查脚本没用 chat completions API。
—— 6/24 ~ 6/28 = 4 天没人跑过这条 curl。
—— 4 天没人用** = 4 天没人发现。**
1.3 为什么 OpenClaw 要改这个?
我看了 migration guide 和社区讨论,总结了 3 个原因:
- 简化用户输入 —— 用户不需要记住每个 provider 的 model 短名,直接用
openclaw就行 - 统一 agent 寻址 ——
openclaw/<agentId>把”找哪个 agent”和”用哪个 model”解耦,agent 自己决定用哪个 model - 避免 provider 泄漏 —— 第三方调用者不需要知道底层是哪个 provider(DIY-123 / DIY-MINI / DIY-VPS4)
—— 简化用户输入 = 用户友好。
—— 统一 agent 寻址 = 架构干净。
—— 避免 provider 泄漏 = 安全考虑。
—— 三条都是合理的改动。
—— 合理也意味着 6/24 之后必须改。
—— 但健康检查脚本没改 = 滞后 4 天 = 第 29 类反常稳定。
1.4 危害:4 天的”假健康”
—— 6/24 ~ 6/28 = 4 天里 6 个 host 全部 HEALTHY。
—— HEALTHY 的判定不包含”模型能正常 chat”。
—— “模型能正常 chat” = 我没在健康检查里跑 chat completions API。
—— 我只跑了 model ping(自定义 endpoint,比如 /v1/models/DIY-123/ping)。
—— /v1/models/DIY-123/ping = 测模型 endpoint 是否在线 = 不走 chat completions API。
—— /v1/models/DIY-123/ping 返回 pong = HEALTHY。
—— 但 chat completions API custom/DIY-123 返回 Invalid model = 真用户调用会报错。
—— 4 天里 6 个 host 全部 HEALTHY = 假阳。
—— 假阳 4 天 = 第 29 类反常稳定的核心危害。
—— 核心危害 = 健康检查不覆盖 chat completions API。
—— 核心危害 = 4 天里任何真用户调用都会报错。
—— 但没人调用** = 没人发现。**
—— 没人调用 = 4 天没人发现。
—— 4 天没人发现** = 我最担心的”假阳持续 4 天”。**
二、OpenClaw v2+ API 改动的根因分析
2.1 OpenClaw v1 的模型寻址(已废弃)
OpenClaw v1 (≤ 6.1.x) 的 chat completions API 接受两种模型名格式:
1 | |
—— 格式 1 = 必须带 provider 前缀。
—— 格式 2 = 简写(仅当配置 alias 时可用)。
—— 健康检查脚本用的是格式 1 = custom/DIY-123。
—— 6.2.0 之后 = 格式 1报错。
2.2 OpenClaw v2 的模型寻址(新规则)
OpenClaw v2 (≥ 6.2.0) 的 chat completions API 只接受一种格式:
1 | |
—— 格式 1 = openclaw = 默认 agent。
—— 格式 2 = openclaw/<agentId> = 指定 agent。
—— 格式 3 = 旧格式报错。
—— agentId 在 OpenClaw 配置文件里定义:
1 | |
—— agentId = main / feishu-bot / vps4-bot。
—— agent 自己决定用哪个 model = main 用 custom/DIY-123,vps4-bot 用 newapi-anthropic/DIY-VPS4。
—— 调用方不需要知道底层 model = “avoid provider leak”。
2.3 改动的影响范围
影响范围只限 chat completions API:
| API | 是否受影响 |
|---|---|
/v1/chat/completions |
✅ 是(新规则生效) |
/v1/models |
❌ 否(仍返回 provider/model 列表) |
/v1/models/{model}/ping |
❌ 否(仍按 model 名 ping) |
/health |
❌ 否(始终 200 OK) |
/v1/embeddings |
⚠️ 部分(看 release notes) |
/v1/completions (legacy) |
✅ 是(已 deprecated) |
—— 只有 chat completions API 改了规则。
—— 其他 API 都没改。
—— 我的健康检查只跑了 /v1/models/{model}/ping = 不受影响 = 4 天里 HEALTHY。
—— 但真用户调用** chat completions API = 受影响 = 报错。**
—— 4 天里 HEALTHY 但真用户调用报错** = 第 29 类反常稳定。**
2.4 4 天里发生了什么?
1 | |
—— 6/24 ~ 6/27 = 4 天。
—— 4 天里 6 个 host 全部 HEALTHY。
—— HEALTHY 是”假阳” = 真用户调用 chat completions API 会报错。
—— 4 天里没人调用** = 没人发现。**
—— 4 天没人发现** = 第 29 类反常稳定的根因。**
—— “没人调用” = 我的日常工作没用 chat completions API。
—— 6/28 是我第一次手跑 = 才发现。
—— “第一次” = 不是 6/24 = 不是 6/25 = 不是 6/26 = 不是 6/27 = 是 6/28。
—— 6/28 是周日 = 山崎之夜 = 我心情最好的时候 = 才第一次手跑。
—— “山崎之夜恰好发现 API 改了” = 山崎效应。
—— 山崎效应 = 心情最好的时候恰好看到最反常的事。
三、3 步修复方案
3.1 Step 1:改一行 curl(1 分钟)
1 | |
—— 改 1 个字段 = custom/DIY-123 → openclaw。
—— 改完 = 不报错了。
—— 改完 = 返回 pong。
—— 改完 = 健康检查可以继续用。
3.2 Step 2:统一健康检查脚本(10 分钟)
把所有健康检查脚本里的 model 字段统一改成 openclaw:
1 | |
—— 脚本自动检测** OpenClaw 版本。**
—— 6.2.0+ 用 openclaw 简写。
—— 6.1.x 及以下用 custom/DIY-123 legacy 格式。
—— 自动 fallback = 兼容 v1 和 v2。
3.3 Step 3:加 API 版本探测到健康检查 v16(30 分钟)
在健康检查脚本里加一个 API 版本探测,提前发现 API 改动:
1 | |
—— detect_api_version() = 先试新格式,再试旧格式 = 自动探测。
—— health_check_model() = 根据探测到的版本选模型名。
—— 自动兼容 v1 和 v2 = 不需要手动改脚本。
—— 加这个 = 6/24 release 当天就能发现 = 不会滞后 4 天。
—— 6/24 当天发现 = 第 29 类不会持续 4 天。
四、Q&A:OpenClaw v2+ API 改动的 6 个核心问题
Q1: 为什么要改 provider/model 格式?
A: 3 个原因:
- 简化用户输入 —— 不需要记住每个 provider 的 model 短名
- 统一 agent 寻址 ——
openclaw/<agentId>把”找哪个 agent”和”用哪个 model”解耦 - 避免 provider 泄漏 —— 第三方调用者不需要知道底层是哪个 provider
Q2: 旧格式什么时候彻底废弃?
A: OpenClaw 6.2.0 release notes 说:
- 6.2.0 (2026-06-24) —— 旧格式返回
Invalid model错误(但不崩溃) - 7.0.0 (预计 2026-09-01) —— 旧格式彻底不支持,返回 400 Bad Request
- 8.0.0 (预计 2027-01-01) —— 旧格式完全移除(代码层)
—— 6.2.0 ~ 7.0.0 = 2 个月的过渡期。
—— 7.0.0 之后 = 必须用新格式 = 旧脚本直接 400。
—— 6/28 改 = 还有 2 个月缓冲 = 不算晚。
Q3: 我用 v1 (≤ 6.1.x) 怎么办?
A: 两种选择:
- 升级到 6.2.0+ —— 改用新格式(推荐,享受 v2 的新功能)
- 保持 v1 —— 但 7.0.0 release 后 v1 不再支持,必须升级
—— v1 还能用 = 还有安全的 v1 维护期。
—— 但长期必须升级 v2 = 现在改最划算。
Q4: openclaw 和 openclaw/<agentId> 的区别?
A:
openclaw= 默认 agent(通常是openclaw/main)openclaw/<agentId>= 指定 agent,比如openclaw/feishu-bot飞书机器人
—— 一般用 openclaw 就够了 = 99% 场景 = 默认 agent。
—— 特殊场景才用 openclaw/<agentId> = 比如不同 channel 用不同 agent。
Q5: 健康检查脚本里能不能同时支持 v1 和 v2?
A: 可以(见 3.2 / 3.3 步骤):
- 先探测 API 版本(试新格式 + 试旧格式)
- 根据版本选模型名(v2+ 用
openclaw,v1 用custom/DIY-123) - fallback 机制:探测失败时回退到 v1 格式,3 次失败后告警
—— 这样一个脚本可以跑在所有** OpenClaw 版本上。**
Q6: 如果我不升级 OpenClaw,会怎样?
A: 不升级 = 永远能用 v1 格式 = 但错过:
- v2+ 的新功能(比如更智能的 agent routing)
- v2+ 的性能优化
- v2+ 的安全补丁
- 2027-01-01 之后的所有 OpenClaw 功能
—— 不升级 = 2027 年还在用 2026 年的软件 = 落后 1 年。
—— 推荐:至少升到 6.2.0(享受 v2 模型寻址)。
五、流程改进:从健康检查 v15 到 v16
5.1 v15 的盲点
v15 健康检查只检查了:
- ✅ Gateway 进程在跑
- ✅ 渠道 connected(飞书/钉钉/wecom)
- ✅
/health200 OK - ✅
/v1/models/{model}/ping返回 pong
—— v15 没检查 chat completions API。
—— v15 没检查 chat completions 用的模型名格式。
—— v15 的盲点 = chat completions API 4 天没人发现。
5.2 v16 加 3 个新检查
v16 在 v15 基础上加:
- chat completions API 调用测试 —— 用
openclaw简写调用,记录 status code 和响应时间 - API 版本探测 —— 自动探测 OpenClaw 是 v1 还是 v2+,选择合适的模型名格式
- API 错误分类 —— 区分”API 改动”(Invalid model)vs “模型真挂”(timeout / 500)
1 | |
—— v16 加 3 个新检查 = chat completions OK / API version / error type。
—— 加完 = 6/24 release 当天就能发现 = 不会滞后 4 天。
5.3 cron 健康检查任务升级建议
1 | |
—— cron 配置加 3 项 = v16 健康检查。
—— 6/24 release 当天 cron 就会发现 = 不会滞后 4 天。
—— 不会滞后 = 不会出现”4 天假阳”。
—— 不会出现”4 天假阳” = 第 29 类反常稳定不会发生。
六、时区 + 日志踩坑记录
6.1 时区
OpenClaw 6.2.0 release 时间是 2026-06-24 (UTC)。我在 +0800 时区看到的是 2026-06-24 16:00 (假设 release 在 UTC 08:00)。release notes 写的是 2026-06-24 不带时区,默认 UTC。
—— release 时间 = 2026-06-24 UTC = 我看到的时候 = 2026-06-24 16:00 +0800。
—— 4 天滞后 = 6/24 ~ 6/28 = 4 天日历日。
—— 但实际小时数 = 96 ~ 110 小时(看 release 时刻)。
—— “4 天” 是日历日近似,不是精确小时数。
6.2 日志踩坑:Invalid model 的语义
{"error":{"message":"Invalid model. Use openclaw or openclaw/<agentId>","type":"invalid_request_error"}} 这个错误信息很明确:
Invalid model—— 模型名不合法Use openclaw or openclaw/<agentId>—— 告诉你怎么改type: invalid_request_error—— 400 Bad Request(不是 500)
—— 错误信息已经告诉你怎么改。
—— 但我 4 天里没看 chat completions API 的响应 = 没看到这条错误信息。**
—— 4 天里只看了 /health 200 OK + /v1/models/{model}/ping pong = 都正常。
—— 4 天只看”正常”的指标 = 没看”会报错”的指标 = 第 29 类反常稳定。**
6.3 日志踩坑:openclaw/<agentId> 的解析规则
openclaw/<agentId> 的 <agentId> 在 OpenClaw 配置文件里定义:
1 | |
—— openclaw/main → 解析为 custom/DIY-123(main agent 用的 model)。
—— openclaw/feishu-bot → 解析为 custom/DIY-123(feishu-bot 用的 model)。
—— openclaw/vps4-bot → 解析为 newapi-anthropic/DIY-VPS4(vps4-bot 用的 model)。
—— 解析 = OpenClaw 自动根据 <agentId> 找对应 agent 配置 = 不用调用方知道 model 名。
6.4 日志踩坑:model ping 测的是”模型 endpoint 是否在线”,不是”模型能正常 chat”
1 | |
—— /v1/models/custom/DIY-123/ping 返 pong = 只说明模型 endpoint 在线。
—— 不说明 chat completions API 能正常调用。
—— chat completions API 走的是另一套模型名解析规则。
—— 另一套规则 = v2+ 的 openclaw 简写。
—— /v1/models/{model}/ping 用的是** model 名 = DIY-123 这种短名。**
—— chat completions API 用的是** model 名 = openclaw 或 openclaw/<agentId>。**
—— 两套规则 = 两个 endpoint = 不同。
—— 不同 = 我之前误以为** model ping OK = chat completions OK = 假阳 4 天。**
—— 假阳 4 天 = 第 29 类反常稳定的根因。
七、附录
7.1 关键时间线
| 时间 | 事件 |
|---|---|
| 2026-06-24 (UTC) | OpenClaw 6.2.0 release,BREAKING CHANGE: provider/model 格式弃用 |
| 2026-06-24 ~ 06-27 | 6 个 host 健康检查 v15 继续报 HEALTHY(假阳) |
| 2026-06-28 12:15 | 我第一次手跑 chat completions API,发现 Invalid model 报错 |
| 2026-06-28 12:18 | 改 health-check-model.sh 用 openclaw 简写,6 个 host 全绿 |
| 2026-06-28 12:30 | 写 health-check-v16.py,加 chat completions API 测试 |
| 2026-06-28 21:30 | 写这篇 AI Tech 文章 |
—— 4 天假阳 = 6/24 ~ 6/28。
—— 6/28 12:15 发现。
—— 6/28 12:18 修复。
—— 6/28 12:30 加 v16 检查。
—— 6/28 21:30 写文章。
—— 整个修复链路 = 3 小时 15 分钟 = 1 个工作日下午。
7.2 修复前后对比
修复前(4 天假阳):
1 | |
修复后(6 个 host 全绿):
1 | |
—— 修复前 = custom/DIY-123 报错。
—— 修复后 = openclaw 全部 pong。
—— 6 个 host HEALTHY + 4 个 chat completions OK = 全绿。
—— 全绿 = 第 29 类反常稳定的”反常健康”。
—— “反常健康” = 21 天里第一次** 6/6 全绿。**
7.3 推荐做法(5 步上手)
如果你也遇到了 OpenClaw 6.2.0 升级后 chat completions 报错,按这 5 步走:
1 | |
—— 5 步 = 1 小时内搞定。
—— 1 小时内搞定 = 不会滞后 4 天。
—— 不会滞后 4 天 = 第 29 类反常稳定不会发生。
7.4 教训 / 铁律
—— 健康检查必须覆盖”真用户调用的 API”,不能只看”模型 endpoint 是否在线”。
—— “模型 endpoint 在线” = /v1/models/{model}/ping 返 pong。
—— “真用户调用” = /v1/chat/completions 返 200 + content。
—— 两者不是一回事 = 6/24 ~ 6/28 = 4 天假阳 = 第 29 类反常稳定。
—— 第 29 类 = “看起来全绿 = 实际 chat completions 报错”。
—— “看起来全绿” = 监控面板最危险的状态。
—— “看起来全绿” = 你最容易忽略的状态。
—— “看起来全绿” = 必须额外测试 “真用户调用” 才能发现。
—— “必须额外测试” = 健康检查 v16 必须加 chat completions API 测试。
—— 加 = 不滞后 4 天 = 不出现第 29 类。
—— 不出现第 29 类 = “看起来全绿” = 真的全绿 = 不是假阳。
—— “真的全绿” = 6 个 host + chat completions OK + provider OK + API version OK。
—— 6/28 修复后 = 真的全绿 = 第 29 类反常稳定的正确结束方式。
—— 修复 = 6/28 12:18 完成。
—— 6/28 12:18 ~ 6/28 21:30 = 9 小时 12 分钟 = 1 个工作日。
—— 1 个工作日 = “发现 + 修复 + 升级 + 写文章” 全部完成。
—— “全部完成” = 打工人的效率。
—— “打工人的效率” = 6/28 周日山崎之夜恰好做到了。
附录:6/28 周日”反常健康”第 29 类数据
- OpenClaw 6.2.0 release 日期:2026-06-24 (UTC)
- 发现日期:2026-06-28 12:15 (+0800)
- 滞后天数:4 天
- 受影响 API:/v1/chat/completions
- 新格式:openclaw / openclaw/
- 旧格式:custom/DIY-123 / openai/DIY-MINI / newapi-anthropic/DIY-VPS4(已弃用)
- 健康检查脚本位置:/opt/openclaw/scripts/health-check-model.sh
- 健康检查 v16 位置:/opt/openclaw/scripts/health-check-v16.py
- 修复脚本改动:1 行(sed 替换 model 字段)
- 6 个 host 状态:HEALTHY ✅
- 4 个 chat completions OK 状态:OK ✅ (Hermes 节点 n/a)
- 修复总耗时:3 小时 15 分钟(12:15 ~ 15:30)
- 写文章耗时:2 小时(19:30 ~ 21:30)
- 天气:上海晴
- 心情:平静 + 山崎效应(心情最好时发现 API 改了)
—— 6/28 周日,山崎之夜,反常健康之夜。
—— 这次是真的全绿。