在 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步骤。
常见问题
备用模型要用同一套工具定义吗?
要——入鏈前必须对每个供應商实测工具调用。
故障轉移能自动解决 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 探針。