news 2026/6/14 22:13:47

模型降级、重试和错误处理策略

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
模型降级、重试和错误处理策略

真实系统里,模型调用一定会失败。

可能是:

429 rate limit 认证过期 provider 超时 模型临时不可用 上下文太大 网络波动 工具结果过长

OpenClaw 要解决的不是“永不失败”,而是“失败后知道该不该重试、换 key、换模型,还是直接告诉用户”。

先说结论:Retry 和 Failover 不是一回事

可以这样区分:

Retry 同一个请求,短暂失败后再试一次 Auth profile rotation 同一个 provider,换另一个 key / OAuth profile Model failover 当前模型或 provider 不可用时,换 fallback model User-visible error 不应该自动绕过时,把结构化失败告诉用户

不要把所有失败都暴力重试。

Retry:按请求重试,不按整条流程重跑

官方 retry policy 的目标包括:

按 HTTP request 重试 保持顺序 避免重复非幂等操作

默认配置包括:

attempts: 3 maxDelayMs: 30000 jitter: 0.1

这意味着 OpenClaw 不会随便重放已经完成的复合流程。否则可能出现重复发消息、重复上传、重复执行命令。

Provider SDK 和长 Retry-After

对 OpenAI、Anthropic 这类 SDK,OpenClaw 允许 SDK 处理普通短重试。

但如果 retry-after 很长,OpenClaw 会让 SDK 快速暴露错误,这样 model failover 可以接管,换 auth profile 或 fallback model。

这避免了用户等几分钟却没有任何进展。

Auth profile rotation:先换同 provider 的身份

OpenClaw 使用 auth profiles 管理 API key 和 OAuth token。

当某个 profile 遇到 rate limit、auth 或类似 cooldown 错误时,可以尝试同 provider 下的下一个 profile。

例如:

openai-codex:user@example.com ↓ 使用量限制 openai:api-key-backup

这仍然可能保持同一个模型或 runtime,只是换了认证来源。

Model failover:再换模型候选

官方 model failover 文档说明,OpenClaw 先在当前 provider 内进行 auth profile rotation,再根据agents.defaults.model.fallbacks尝试下一个模型候选。

运行时会:

解析 session 当前模型状态 构建 candidate chain 尝试当前 provider 和 auth profiles 遇到可 failover 错误时进入下一个模型 把 auto fallback override 写入 session 失败时窄范围回滚 全部失败时抛出 FallbackSummaryError

用户还会看到 fallback notice,例如从 primary 切到 fallback,或 primary 恢复后清除 fallback。

哪些选择不应该自动 fallback

如果用户显式/model选择了某个模型,这通常是 user session override。

官方文档说明,用户显式选择是严格选择。如果失败,OpenClaw 应报告失败,而不是悄悄用另一个模型回答。

原因很简单:

用户明确要求用 A 系统不应该无声换成 B

常见误解

误解一:失败就应该一直重试

不对。非幂等流程不能随便重放。

误解二:Fallback 等于换更差模型

不一定。Fallback 只是下一个候选,可以是更快、更便宜、更稳,也可以是备用强模型。

误解三:用户指定模型也应该自动降级

不一定。显式用户选择通常应该严格执行。

最后总结

可靠性来自分层处理失败。

一句话总结:

短暂错误用 retry,身份问题用 profile rotation,模型不可用用 fallback,不该绕过的错误要透明报告。

本节作业

  1. 设计一个 primary + two fallbacks 的模型链。
  2. 解释 retry 和 model failover 的区别。
  3. 思考哪些工具调用不能自动重试。
  4. 找一次 429 或 timeout,判断它应该 retry、rotate 还是 fallback。

下一节预告

下一节进入工具系统、Browser、Shell 与 Canvas:我们会把 OpenClaw 如何真正“动手做事”讲透。

参考资料

  • OpenClaw Docs:Model failover
  • OpenClaw Docs:Retry policy
  • OpenClaw Docs:Model providers
  • OpenClaw Docs:Models CLI
  • OpenClaw Docs:FAQ: models and auth

原文链接:模型降级、重试和错误处理策略 | Harries Blog™

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/14 22:09:02

从平面到立体:10分钟掌握ImageToSTL图片转3D模型技巧

从平面到立体:10分钟掌握ImageToSTL图片转3D模型技巧 【免费下载链接】ImageToSTL This tool allows you to easily convert any image into a 3D print-ready STL model. The surface of the model will display the image when illuminated from the left side. …

作者头像 李华
网站建设 2026/6/14 22:07:00

好客搜整体介绍——一家真正为企业营销赋能的AI技术公司

在数字化营销日益复杂的今天,企业如何高效获客、低成本运营、持续增长,已成为每一个经营者面临的核心挑战。好客搜(江苏好客搜信息技术有限公司)应运而生,成为国内领先的AI智能营销解决方案提供商。 好客搜成立于2016…

作者头像 李华
网站建设 2026/6/14 22:04:20

Java毕设选题推荐:数字化社区垃圾分类运维平台的设计与实现 基于前后端分离的社区环保垃圾管理系统【附源码、mysql、文档、调试+代码讲解+全bao等】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/6/14 21:59:55

MPC8245 DUART串口通信:从协议原理到驱动实战

1. 项目概述:从UART到DUART的演进与MPC8245的角色在嵌入式系统开发的世界里,串行通信就像设备之间的“通用语言”。无论是调试信息输出、传感器数据采集,还是模块间的指令交互,都离不开它。而UART(Universal Asynchron…

作者头像 李华
网站建设 2026/6/14 21:59:53

MPC8260 ADS开发板BCSR寄存器详解与驱动开发实战

1. 项目概述与核心价值如果你正在基于Freescale(现NXP)的MPC8260 PowerQUICC II处理器进行嵌入式系统开发,尤其是网络通信或工业控制相关的项目,那么你大概率会接触到其官方评估板——ADS(Advanced Development System…

作者头像 李华