模型故障转移
OpenClaw 分两个阶段处理故障:- 在当前提供商内进行认证配置文件轮换。
- 模型回退到
agents.defaults.model.fallbacks中的下一个模型。
认证存储(密钥 + OAuth)
OpenClaw 对 API 密钥和 OAuth 令牌都使用认证配置文件。- 密钥存储在
~/.openclaw/agents/<agentId>/agent/auth-profiles.json(旧版路径:~/.openclaw/agent/auth-profiles.json)。 - 配置项
auth.profiles/auth.order仅包含元数据和路由信息(不含密钥)。 - 旧版仅导入的 OAuth 文件:
~/.openclaw/credentials/oauth.json(首次使用时导入到auth-profiles.json)。
type: "api_key"→{ provider, key }type: "oauth"→{ provider, access, refresh, expires, email? }(部分提供商还包含projectId/enterpriseUrl)
配置文件 ID
OAuth 登录会创建不同的配置文件,以便多个账户共存。- 默认值:当没有可用邮箱时为
provider:default。 - 带邮箱的 OAuth:
provider:<email>(例如google-antigravity:[email protected])。
~/.openclaw/agents/<agentId>/agent/auth-profiles.json 的 profiles 下。
轮换顺序
当一个提供商有多个配置文件时,OpenClaw 按如下方式选择顺序:- 显式配置:
auth.order[provider](如果已设置)。 - 已配置的配置文件:按提供商过滤的
auth.profiles。 - 已存储的配置文件:
auth-profiles.json中该提供商的条目。
- 主排序键: 配置文件类型(OAuth 优先于 API 密钥)。
- 次排序键:
usageStats.lastUsed(同类型内最旧的优先)。 - 冷却中/已禁用的配置文件被移到末尾,按最早到期时间排序。
会话粘性(缓存友好)
OpenClaw 会在每个会话中固定选定的认证配置文件,以保持提供商缓存活跃。 它不会在每次请求时轮换。固定的配置文件会持续使用,直到:- 会话被重置(
/new//reset) - 压缩完成(压缩计数递增)
- 配置文件处于冷却中/已禁用状态
/model …@<profileId> 手动选择会为该会话设置一个用户覆盖,
在新会话开始前不会自动轮换。
自动固定的配置文件(由会话路由器选择)被视为一种偏好:
它们会优先尝试,但 OpenClaw 可能在遇到速率限制/超时时轮换到其他配置文件。
用户固定的配置文件会锁定在该配置文件上;如果它失败且配置了模型回退,
OpenClaw 会转移到下一个模型,而不是切换配置文件。
为什么 OAuth 可能”看起来丢失了”
如果你对同一个提供商同时拥有 OAuth 配置文件和 API 密钥配置文件,轮询可能在消息之间切换它们(除非已固定)。要强制使用单个配置文件:- 通过
auth.order[provider] = ["provider:profileId"]固定,或 - 通过
/model …使用按会话覆盖并指定配置文件(当你的 UI/聊天界面支持时)。
冷却期
当配置文件因认证/速率限制错误(或看起来像速率限制的超时)而失败时, OpenClaw 会将其标记为冷却状态并移至下一个配置文件。 格式/无效请求错误(例如 Cloud Code Assist 工具调用 ID 验证失败)也被视为可故障转移的,并使用相同的冷却机制。 冷却期使用指数退避:- 1 分钟
- 5 分钟
- 25 分钟
- 1 小时(上限)
auth-profiles.json 的 usageStats 下:
计费禁用
计费/额度失败(例如”额度不足”/“信用余额过低”)被视为可故障转移的,但通常不是临时性的。OpenClaw 不会使用短冷却期,而是将配置文件标记为已禁用(使用更长的退避时间)并轮换到下一个配置文件/提供商。 状态存储在auth-profiles.json 中:
- 计费退避从 5 小时开始,每次计费失败加倍,上限为 24 小时。
- 如果配置文件在 24 小时内未失败,退避计数器将重置(可配置)。
模型回退
如果某个提供商的所有配置文件都失败,OpenClaw 会移至agents.defaults.model.fallbacks 中的下一个模型。这适用于认证失败、速率限制和
耗尽配置文件轮换的超时情况(其他错误不会触发回退)。
当运行以模型覆盖(钩子或 CLI)启动时,回退仍会在尝试所有已配置的回退后
止于 agents.defaults.model.primary。
相关配置
参阅 Gateway网关配置 了解:auth.profiles/auth.orderauth.cooldowns.billingBackoffHours/auth.cooldowns.billingBackoffHoursByProviderauth.cooldowns.billingMaxHours/auth.cooldowns.failureWindowHoursagents.defaults.model.primary/agents.defaults.model.fallbacksagents.defaults.imageModel路由