Appearance
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 抛异常演示分类与预算 |