在 macOS 上运行 OpenClaw 网关的团队,2026 年常见做法是只配一个高端模型——直到 Anthropic 返回 HTTP 429、OpenAI 报 503,或区域故障让唯一 API Key 失效,生产对话直接停摆。模型故障转移与明确的供应商路由把这些硬中断变成可预期的降级:文档化的备用模型链、兼容的工具 Schema,以及尊重 Retry-After 的重试预算。本文说明如何在 ~/.openclaw/openclaw.json 中表达该链路、如何把密钥挡在 git 之外,并在改动 LaunchAgent 生产 plist 之前用 openclaw doctor 验证。延伸阅读 429 重试策略、JSON 与环境配置、上游断路器 与 doctor 诊断,让路由、限流与可观测性保持一致。
你将得到故障转移决策表、可复制配置骨架与数字护栏(热路径最多 3 家供应商、单次尝试上限 30 秒、整轮预算 120 秒),以及可在租用 Apple Silicon Mac mini 上执行的预发清单——MacHTML 公开价约 16.9 美元/天。
需要故障转移的症状
频道里一直显示“思考中…”,日志却反复刷供应商错误;工具调用在半轮对话卡住,因为网关把重试预算耗在单一厂商上;财务在凌晨两点看到运维手工换 Key,而不是走已演练的备用路由——这些都说明瓶颈在路由逻辑,不在模型智商。
故障转移不是“永远用最便宜模型”,而是可控降级:面向客户的轮次用高端模型,内部 HTML/CSS 审计用中端,云端 API 全挂时本地 Ollama 只做非破坏性摘要——每一层都要文档化并探针验证。
故障转移链设计原则
热路径要短:最多 三家供应商,每周用与 HTML/CSS Agent 相同的工具 Schema 各测一次。生产流程若必须改文件,就不要降级到无法调用 write 的模型——改为只读摘要。每轮记录 correlation id 与供应商标签,方便财务归因账单尖峰。
即使共用一台机器,也要拆分 staging 与 production 链路;预发 JSON 的笔误不应把生产流量打到实验性本地模型。
openclaw.json 路由骨架
路由配置应放在 git 跟踪的 HTML 之外。实用做法是:供应商名称写在 openclaw.json,API Key 放在 ~/.openclaw/.env 并 chmod 600。文档化主模型 ID、有序 fallback 列表、各供应商超时与可选成本上限。
{
"agents": {
"default": {
"model": {
"primary": "anthropic/claude-sonnet-4-20250514",
"fallbacks": [
"openai/gpt-4.1",
"google/gemini-2.5-pro"
]
},
"providers": {
"anthropic": { "timeoutMs": 30000 },
"openai": { "timeoutMs": 30000 },
"google": { "timeoutMs": 45000 }
}
}
}
}
片段仅作结构参考——OpenClaw 版本迭代会改字段名,粘贴部署前请对照发行说明 diff。改完后执行 openclaw doctor,并对每个供应商跑一句合成对话探针。
供应商选型矩阵
| 层级 | 适用场景 | 风险 |
|---|---|---|
| 主模型(高端) | Slack/Telegram 面向客户轮次 | 发布期配额耗尽 |
| 备模型(中端) | 内部审计、非紧急修复 | 与主模型工具 Schema 漂移 |
| 本地(Ollama) | 云端 API 全挂时的只读摘要 | 推理深度不及云端 |
| 禁用 | 故障期禁止破坏性工具 | 运维压力要求“先放开” |
429、503 与 Retry-After 协同
故障转移不能替代尊重限流。主模型返回 429 时,在文档化上限内(聊天场景常见 30 秒)遵守 Retry-After,再切到备用供应商。503 风暴应配合网关断路器,避免锤击已降级端点。退避表见 429 专文。
整轮时间建议封顶 120 秒,避免 Slack 线程“假死”;不要连环试五家供应商,应返回可读的降级提示。
跨模型工具 Schema 兼容
链上每个模型必须接受网关发布的同一套 JSON 工具定义。备模型若拒绝 browser 工具,HTML/CSS 流水线会在半空中断。预发脚本应对每个供应商跑三条固定工具调用:读文件、写补丁、列目录,通过后再加入生产 fallback。
备模型无视觉能力而主模型带图时,故障转移前应剥离图像部分,或仅把图像任务路由到支持视觉的备模型。
doctor 探针与合成对话
路由变更后,把 openclaw doctor --json 输出附在变更单。在预发暂时吊销主 Key,确认备模型 10 秒内应答,恢复 Key 后无需重启即可回到主路由。检查网关日志里每轮的供应商标签。
探针应与 staging/生产工作区 对齐,避免在笔记本上用生产密钥练 fallback。
预发上线清单
- 导出当前
openclaw.json与.env指纹(不含密钥值)到 git 忽略目录。 - 为备用供应商单独配置账单告警。
- 在预发网关端口对每个供应商做工具冒烟。
- 模拟主 Key 失效,确认 fallback 在 SLA 内完成。
- 预发指标干净 24 小时 后再提升 LaunchAgent plist。
- 文档化回滚:还原 JSON +
launchctl kickstart步骤。
若将智谱 GLM作为成本友好的备用模型,请参阅GLM(Z.AI)供应商配置指南中的 zai/* 模型引用与 Coding Plan 端点说明。
常见问题
备用模型要用同一套工具定义吗?
要——入链前必须对每个供应商实测工具调用。
故障转移能自动解决 429 吗?
仅当备用配额独立;否则仍需退避。
多久跑一次 doctor?
每次改路由或密钥后,以及生产环境每周 cron。
通过 MacHTML 租用 Apple Silicon Mac mini,可在与高管相同的 WebKit/Node 构建上练路由——不是用 Linux 容器假装 macOS。节点提供 SSH 跑合成对话,Keychain 弹窗时用 VNC。空闲功耗常见 6–12 瓦,一周故障转移演练的成本往往低于一夜“供应商错误”停摆。
公开价约 16.9 美元/天,比为闲置硬件背三年折旧更划算;演练结束关机即可,路由表仍留在 git。
在真机 macOS 上演练 OpenClaw 模型故障转移
租用云 Mac mini,在生产 LaunchAgent 提升前验证供应商链、429 fallback 与 doctor 探针。