
1. 主模型 429 超时后会话直接中断OpenClaw Fallback 到底怎么配你正在用 OpenClaw 跑一个长任务前面聊了十几轮上下文突然主模型返回429 Too Many Requests或者干脆卡住几十秒后超时。如果没有备用模型机制这一轮会话就直接报错中断之前积累的上下文虽然还在但你得手动切模型、重新发指令体验非常割裂。OpenClaw 的 Fallback备用模型机制就是解决这个问题的它维护一个有序的模型列表当主模型调用失败时按顺序自动尝试下一个直到有一个可用为止。整个过程对使用者基本无感你只会看到回复继续正常生成。这套机制适合谁三类人最需要一是把 OpenClaw 当日常编码助手、希望服务不中断的开发者二是主模型有免费额度限制、想用付费模型打底、免费模型兜底的成本敏感用户三是同时接入多个 provider、想在某家整体抖动时自动切换的稳定性要求高的场景。核心检索词先明确OpenClaw Fallback 配置、agents.defaults.model、openclaw.json 备用模型链。这三个词贯穿全文你跟着配就能跑通。触发 Fallback 的典型场景有四类模型服务超时Timeout、API 返回错误最常见的是 429 限流、服务端 5xx 异常、以及长上下文导致模型处理失败。这四类里429 和超时是日常最高频的也是本文验证步骤重点模拟的。配置文件位置固定在~/.openclaw/openclaw.json这是一个 JSON5 格式文件支持注释和尾逗号OpenClaw Gateway 会自动监听文件变化并热重载改完保存即可不用重启服务。这一点很关键意味着你可以边跑任务边调 Fallback 列表。下面从配置结构、可复制片段、验证步骤到排错一步步来。我会把 endpoint 统一指向 TaoToken 的 API 通道这样主模型和备用模型复用同一套 Key切换时不用改鉴权逻辑。2. TaoToken 前置统一 Key 与 API 通道让 Fallback 链复用同一套鉴权在配 Fallback 之前先把模型接入通道理顺。很多人 Fallback 配了四五个模型结果每个模型对应不同的 provider、不同的 Key、不同的 Base URL切换时鉴权失败Fallback 形同虚设。所以前置工作是把 endpoint 统一到一个通道上。TaoToken 在这里的作用是提供一个统一的 API 通道和 Key 管理。官网地址是 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content API 入口是 https://taotoken.net/api 。你注册后在控制台生成一个 Key后续所有模型调用都走这个 Key 和这个 Base URL。具体操作路径先访问官网进入控制台console在 API Keys 页面创建一个 Key。这个 Key 就是你在 openclaw.json 里填的凭证。模型对话入口可以用来先验证 Key 是否可用不用一上来就配 OpenClaw。为什么要在 Fallback 场景下强调统一通道因为 Fallback 的本质是「主模型失败时无缝切到备用模型」。如果主模型走 A 通道、备用模型走 B 通道切换时不仅要换模型 ID还要换 Base URL 和 Key配置复杂度陡增出错概率也高。统一到 TaoToken 后你只需要在 openclaw.json 里维护模型 ID 列表Base URL 和 Key 全局一份。这里给一个关键认知Fallback 列表里的模型建议同时在agents.defaults.models注册表里声明否则 OpenClaw 可能不认识该模型标识导致切换时报「unknown model」。注册表的作用是告诉 OpenClaw「这些模型 ID 是合法的、可以调用的」。统一通道后你的 openclaw.json 里 provider 配置只需要一份指向 TaoToken 的 API 地址。模型 ID 则按 TaoToken 支持的命名来填。这样主模型和备用模型共享同一套鉴权切换时只换模型标识不换通道。如果你还没创建 Key先去 API Keys 页面生成一个记下来下一步配置要用。文档入口在 doc 页面里面有各模型的 ID 命名规范配之前扫一眼能少踩坑。需要提醒的是Fallback 列表不是越长越好。列表过长会导致失败时逐个重试整体等待时间增加。建议保留 5 到 10 个覆盖不同 provider 和不同价位即可。这个原则在后面的策略部分会展开。3. 可复制配置openclaw.json 里 agents.defaults.model 与 Fallback 链写法这一节是全文核心直接给可复制的配置片段。配置文件路径~/.openclaw/openclaw.jsonJSON5 格式支持注释和尾逗号。先看最简结构。agents.defaults.model下有两个字段primary是主模型fallbacks是有序备用列表。{ agents: { defaults: { model: { primary: qwen/deepseek-v4-flash, fallbacks: [ qwen/qwen3.7-flash-2026-07-15, modelstudio/qwen3.5-plus, qwen/qwen3.6-plus, qwen/qwen3-max-2026-01-23 ] } } } }这段配置的含义主模型是qwen/deepseek-v4-flash当它失败时依次尝试列表里的四个备用模型谁先可用就用谁。接下来是注册表。Fallback 列表里的模型建议在agents.defaults.models里注册{ agents: { defaults: { models: { qwen/deepseek-v4-flash: {}, qwen/qwen3.7-flash-2026-07-15: {}, modelstudio/qwen3.5-plus: {}, qwen/qwen3.6-plus: {}, qwen/qwen3-max-2026-01-23: {} } } } }注册表里每个模型对应一个空对象即可OpenClaw 据此识别模型标识合法性。现在把 provider 通道统一到 TaoToken。在 openclaw.json 里配置 provider 的 Base URL 和 Key{ providers: { taotoken: { baseUrl: https://taotoken.net/api, apiKey: 你的_TaoToken_Key, models: [ qwen/deepseek-v4-flash, qwen/qwen3.7-flash-2026-07-15, modelstudio/qwen3.5-plus, qwen/qwen3.6-plus, qwen/qwen3-max-2026-01-23 ] } } }注意 Base URL 是https://taotoken.net/api不带任何 UTM 参数这是 API 调用的规范地址。Key 从控制台 API Keys 页面获取。把上面三段合并就是一份完整的、可复制的 openclaw.json。合并后结构如下{ providers: { taotoken: { baseUrl: https://taotoken.net/api, apiKey: 你的_TaoToken_Key, models: [ qwen/deepseek-v4-flash, qwen/qwen3.7-flash-2026-07-15, modelstudio/qwen3.5-plus, qwen/qwen3.6-plus, qwen/qwen3-max-2026-01-23 ] } }, agents: { defaults: { model: { primary: qwen/deepseek-v4-flash, fallbacks: [ qwen/qwen3.7-flash-2026-07-15, modelstudio/qwen3.5-plus, qwen/qwen3.6-plus, qwen/qwen3-max-2026-01-23 ] }, models: { qwen/deepseek-v4-flash: {}, qwen/qwen3.7-flash-2026-07-15: {}, modelstudio/qwen3.5-plus: {}, qwen/qwen3.6-plus: {}, qwen/qwen3-max-2026-01-23: {} } } } }三件套齐全Base URLhttps://taotoken.net/api、Key你的 TaoToken Key、Model ID列表里的模型标识。这三样缺一不可尤其是 Model ID 必须和 provider 支持的命名一致。配置策略上给三种思路。省钱策略把有免费额度的模型放 Fallback 列表最前面日常用付费主模型降级时优先走免费额度。质量优先策略把性能相近的高质量模型放前面降级后回答质量不塌方。冗余策略混用不同 provider 的模型避免某家整体不可用时全军覆没。// 省钱策略 fallbacks: [ qwen/qwen3.7-flash-2026-07-15, // 免费额度省钱首选 modelstudio/qwen3.5-plus ] // 质量优先策略 fallbacks: [ qwen/qwen3-max-2026-01-23, // 高质量备用 qwen/qwen3.6-plus, qwen/qwen3.5-plus // 兜底 ] // 冗余策略多 provider fallbacks: [ modelstudio/deepseek-v4-flash, // 不同 provider 的同模型 qwen/qwen3.7-flash-2026-07-15, modelstudio/qwen3.5-plus ]保存文件后Gateway 自动热重载无需重启。下一步验证配置是否生效。4. 验证请求与成功结果触发 Fallback 并确认切换生效配完不验证等于没配。这一节给完整的验证步骤从查看配置到模拟触发 Fallback。第一步查看当前 Fallback 列表openclaw models fallbacks list这条命令列出所有备用模型。如果输出为空或报错说明配置没被识别回到上一节检查 JSON5 语法。第二步查看主模型openclaw config get agents.defaults.model.primary预期输出qwen/deepseek-v4-flash。如果输出 undefined说明agents.defaults.model路径写错了。第三步查看当前会话状态openclaw status输出示例 Model: qwen/deepseek-v4-flash · api-key (taotoken:default) Fallbacks: qwen/qwen3.7-flash-2026-07-15, modelstudio/qwen3.5-plus, ...这里能看到当前运行的模型和 Fallback 列表。taotoken:default表示鉴权走的是 TaoToken 通道。第四步验证配置热重载openclaw config get agents.defaults.model这条命令输出完整的 model 配置对象包含 primary 和 fallbacks 数组。改完文件后立即执行能看到新值说明热重载生效。第五步模拟触发 Fallback。最直接的方式是把主模型设成一个不存在的模型 ID或者临时把主模型的 provider 指向一个错误地址然后发一条请求。观察openclaw status里的 Model 字段如果显示的不是主模型而是 Fallback 列表里的某个模型说明切换成功。更贴近真实场景的验证用一个会返回 429 的模型作为主模型。如果你有办法让主模型触发限流发请求后看日志会看到类似「primary failed, trying fallback」的记录然后回复正常生成。成功结果长这样你发一条消息主模型失败OpenClaw 自动切到第一个备用模型回复正常返回。整个过程你只看到回复没有报错弹窗。openclaw status里 Model 字段变成备用模型 ID。这里有个细节Fallback 触发后当前会话会继续使用备用模型不会自动切回主模型。新会话才会重新从主模型开始尝试。这是设计如此避免频繁切换带来的抖动。验证通过后你的 Fallback 链就生效了。日常使用中主模型正常时走主模型异常时自动降级服务连续性有保障。5. 本篇常见错排查401、local proxy failed、reading choices、OAuth 报错对照配 Fallback 过程中报错集中在几类。这一节按真实报错对照排查。401 Unauthorized。最常见的原因是 Key 没填对或没生效。检查 openclaw.json 里providers.taotoken.apiKey是否是你的真实 Key有没有多余空格。如果 Key 是从控制台复制的确认没有截断。另一个原因是 Base URL 写错比如写成了带 UTM 参数的地址API 调用应该用https://taotoken.net/api不带任何查询参数。local proxy failed。这个报错通常出现在网络层OpenClaw 尝试连接 provider 时失败。检查 Base URL 是否可达可以用 curl 直接测curl -X POST https://taotoken.net/api/v1/chat/completions \ -H Authorization: Bearer 你的_TaoToken_Key \ -H Content-Type: application/json \ -d {model:qwen/deepseek-v4-flash,messages:[{role:user,content:hi}]}如果 curl 也失败说明通道本身有问题检查 Key 和网络。如果 curl 成功但 OpenClaw 报 local proxy failed检查 openclaw.json 里 provider 配置的 baseUrl 是否和 curl 用的一致。reading choices 报错。这个报错说明请求发出去了、也返回了但返回结构里没有choices字段。常见原因是模型 ID 写错provider 返回了一个错误对象而不是正常的 completion 响应。检查 Fallback 列表里的模型 ID 是否和 provider 支持的命名完全一致大小写、连字符、日期后缀都不能错。另一个原因是注册表里没声明该模型OpenClaw 用了错误的请求格式。OAuth 相关报错。如果你之前配过 OAuth 鉴权的 provider切到 TaoToken 的 Key 鉴权后旧的 OAuth 配置可能还在生效导致冲突。检查 openclaw.json 里是否有残留的 OAuth 字段清理掉。TaoToken 走的是 Bearer Key 鉴权不需要 OAuth 流程。Fallback 不触发。主模型失败了但没切备用检查三点一是agents.defaults.model.fallbacks数组是否为空二是 Fallback 列表里的模型是否在agents.defaults.models注册表里声明三是失败类型是否在触发范围内OpenClaw 对超时、429、5xx 会触发 Fallback但某些客户端错误如 400 参数错误可能不触发。切换后回答风格突变。这是正常现象不同模型的回答风格和准确性有差异。如果在意一致性用质量优先策略把性能相近的模型放前面。Fallback 列表过长导致等待久。列表越长失败时逐个重试的时间越长。建议 5 到 10 个覆盖不同 provider 和价位即可。排查时善用openclaw status和日志。日志里会记录每次 Fallback 触发的原因和切换目标是定位问题的最快路径。6. 语义一致 CTA把 Fallback 策略落到日常编码与 Agent 任务配置和验证都跑通后最后一步是把它用起来。Fallback 机制的价值在日常编码和 Agent 长任务里最明显你不需要盯着模型状态主模型抖动时自动降级任务不中断。如果你主要用 OpenClaw 做长期编码或 Agent 任务建议走 Coding Plan把 Fallback 链和套餐结合成本更可控。入口在 coding-plan 页面。如果你还在选模型、想先验证哪个模型适合做主模型、哪个适合做备用用模型对话入口快速试。试好之后再写进 openclaw.json 的 Fallback 列表。Key 管理和通道配置在 console 和 api-keys 页面。文档在 doc 页面里面有各模型 ID 的命名规范和 Fallback 配置的完整说明。Claude Code 用户如果也在用 Anthropic 通道可以参考 ClaudeCodeAnthropic 相关配置把 Fallback 思路迁移过去。实操建议先把主模型和两个备用模型配好跑一周观察 Fallback 触发频率。如果触发频繁说明主模型稳定性不够考虑换主模型或增加备用。如果几乎不触发说明当前配置够用不用再加长列表。最后提醒一句Fallback 列表里的模型 ID 一定要和 provider 支持的命名一致注册表一定要声明这两点是切换成功的前提。配好后用openclaw status确认再发请求验证整个链路就闭环了。