跳到正文
SGSteven Guan

原子概念 / Retry Policy

错误分类与重试

根据失败类型、重放安全性和剩余预算决定是否重试。

要解决的问题哪些错误可以重试,怎样控制重放和总预算?

检索别名:错误恢复 · 指数退避

BLUEPRINT局部蓝图

01 输入

  1. 错误分类及provider建议
  2. 操作重放安全性
  3. 剩余deadline和费用
→

02 处理机制

  1. 判定可恢复与可重放
  2. 选择退避或限次修复
  3. 查询未知写效果
  4. 记录Attempt和停止原因
→

03 输出与证据

  1. 重试或停止决定
  2. 可归因错误轨迹
  3. 受控费用和副作用

根据失败类型、重放安全性和剩余预算决定是否重试。

重试策略要回答三个问题:这类错误是否可能自行恢复,重复执行是否安全,剩余时间和费用是否值得。429、短暂断流、无效schema、权限拒绝和数据矛盾,需要不同处理;统一捕获异常再调用一次,往往掩盖根因并放大副作用。

短时服务错误可遵循Retry-After或供应商提示,使用指数退避和jitter,但仍受端到端deadline限制。参数错误可返回结构化反馈让模型限次修正;权限拒绝不能通过改写参数或更换子Agent绕过;数据缺失应保留未知或找合法替代来源。写工具超时先进入unknown并查询回执。

流中断尤其需要判断输出已经到哪一步。OpenCode研发源码区分是否已产生输出以及恢复方式;Agents SDK模型接口也允许provider返回重试建议。已经发生本地工具调用后,完整重放请求可能不再安全。恢复应复用已确认结果,而不是让新请求重新决定是否执行同一动作。

记录每次Attempt、失败类别、等待时间与重试理由,设置单操作上限和任务总预算。测试逐类注入故障,并观察是否出现多层重试相乘:SDK、工具网关和外层workflow都重试三次,可能形成九次甚至更多外部请求。只有一个明确的权威控制业务重放,其余层处理受限传输恢复。

还要区分技术重试与业务重新执行。前者保持原参数和操作身份,后者可能改变范围、来源和验收,需要新合同或版本。模型修正一个无效字段后,如果字段改变了已批准动作,就不能沿用旧批准。把这些情况统一叫retry,会让恢复逻辑绕过本来正确的审批边界。

重试指标应同时报告最终成功率、额外调用和严重重复效果;仅提高HTTP成功率,可能让业务可靠性更差。

实践重点:429退避与jitter;schema限次修复;拒绝授权不绕过;写超时先对账。

验证抓手:逐类注入429、断流、错误参数与权限拒绝。

常见误区:所有异常统一再试一次,放大费用和副作用。

Agents SDK:Model接口和call ID约束;OpenCode:流、工具和取消源码。

RELATIONSHIP MAP

与其他节点的关系

箭头从本节点指向目标;关系是工程分析映射,不代表厂商合作或已披露的内部实现。

哪些节点指向本页 · 2
  • 限流、背压与公平调度 — 依赖 → 错误分类与重试

    本节点的设计需要先明确错误分类与重试。

  • 无进展检测 — 依赖 → 错误分类与重试

    本节点的设计需要先明确错误分类与重试。

PRIMARY SOURCES

来源与阅读边界

来源按研究截止日整理。官方文档说明能力和约束,代码只证明对应版本,论文与讲座不自动证明生产效果。 资料截止:2026-10-15。

  1. Agents SDK:Model接口和call ID约束 ↗公开代码

    观察基线:2026-10-15;固定源码与具体发行版本分别核验。

  2. OpenCode:流、工具和取消源码 ↗公开代码

    观察基线:2026-10-15;固定源码与具体发行版本分别核验。