Skip to content

L03-08 重试陷阱:Agent 里的重试会指数烧钱 ​

全局中心内容:Agent 场景下「重试」会被循环放大,必须区分错误类型并设重试预算。 全局讲解主线:账单故事 → 放大效应 → 错误分类 → 重试预算 → 幂等键 → 编码 → 铁律。


P1 · 产出页 ​

中心内容:一个带重试预算与幂等键的调用层。

  • 讲解技巧
    • 开场数字:一个 Agent 跑了 200 轮,每轮 3 次重试,实际调用 600 次——成本是预期的 3 倍。
  • 时长:20s

P2 · 放大效应 ​

中心内容:重试 × 轮次 × 上下文长度 = 三重放大。

  • 页面内容:放大计算示意

  • 讲解技巧

    • 讲清第三个因子最隐蔽:重试时会把完整上下文再发一遍,第 10 轮重试一次的代价远高于第 1 轮。
    • 结论:Agent 里的重试比普通服务危险得多。
  • 时长:5min


P3 · 错误分类 ​

中心内容:可重试(限流/超时/5xx)vs 不可重试(参数错/权限不足)。

  • 页面内容:ErrorClassifier 判定表

  • 讲解技巧

    • 强调不可重试的错误必须立刻失败:重试 3 次只会浪费 3 倍的钱。
    • 提醒 HTTP 400 里也可能藏着可重试的(如「请求过大」要拆分),要按 message 细分。
  • 时长:6min


P4 · 写操作不重试 ​

中心内容:看不到结果 ≠ 没有执行,写操作盲目重试会造成重复。

  • 讲解技巧
    • 用经典场景:「下单超时了,到底成没成?」——这正是幂等键存在的意义。
    • 给出规则:没有幂等保证的写操作,宁可失败也不重试。
  • 时长:5min

P5 · 幂等键 ​

中心内容:同一逻辑操作带同一个 key,服务端保证只执行一次。

  • 页面内容:幂等键生成规则(runId + 工具名 + 参数哈希)

  • 讲解技巧

    • 强调 key 要包含参数哈希,否则同一工具的不同参数会被误判为重复。
    • 提醒幂等记录要有 TTL,别永久占用存储。
  • 时长:5min


P6 · 重试预算 ​

中心内容:整个任务共享一个重试额度,用完就不再重试。

  • 页面内容:RetryBudget 实现

  • 讲解技巧

    • 这是本节最有价值的机制:单条重试次数限制挡不住「每轮都重试一点点」的累积。
    • 给经验值:单次调用最多 2 次重试,整个任务最多 5 次。
  • 时长:5min


P7 · 编码:重试层 ​

中心内容:指数退避 + 抖动 + 预算检查。

  • 页面内容:Backoff 与抖动实现

  • 讲解技巧

    • 讲清为什么要有抖动:多个请求同时退避会同时重试,形成新的尖峰。
  • 时长:6min


P8 · 避坑与小结(铁律) ​

中心内容:三条铁律——分类后重试、写操作要幂等、有预算上限。

  • 讲解技巧
    • 引出下一节:重试救不了持续故障,需要熔断——03-09。
  • 时长:2min

讲师备忘 ​

项内容
课前必做准备放大成本计算表;准备 429 错误样例
最容易超时处P5 幂等键,容易展开到分布式事务
学员最常问「抖动幅度多少?」答:±30% 足够,太大拉长总耗时
现场备用无网络 → 用 Mock 抛异常演示分类与预算