Appearance
L03-07 三层超时:一个都不能少
全局中心内容:单层超时兜不住 Agent——工具、单轮、整体三层各有职责。 全局讲解主线:挂死的场景 → 三层模型 → 每层怎么设 → 超时的处理动作 → 审批超时的例外 → 编码。
P1 · 产出页
中心内容:工具级 / 单轮级 / 任务级三层超时配置与兜底动作。
- 讲解技巧
- 开场场景:一个工具调用卡住了,用户等了 10 分钟,线程一直占着。
- 提问:你设了超时吗?设的是哪一层?
- 时长:20s
P2 · 三层模型
中心内容:工具超时(秒级)→ 单轮超时(十秒级)→ 任务超时(分钟级)。
页面内容:三层结构图与量级建议
讲解技巧
- 给明确的量级:工具 10~30s,单轮 60s,任务 5~10min。
- 讲清为什么都要有:只有任务超时的话,卡死的工具会把线程池耗尽,整个服务不可用。
时长:6min
P3 · 工具层超时
中心内容:每个工具单独设,慢工具(如代码分析)可以长一些。
- 讲解技巧
- 强调按工具特性设,不要一刀切:查库 5s 够,调外部 API 可能要 30s。
- 提醒 HTTP 客户端的 connect/read 超时都要设。
- 时长:5min
P4 · 单轮超时
中心内容:包含模型调用 + 工具执行的总时间。
- 讲解技巧
- 讲清与工具超时的关系:单轮超时必须大于该轮可能的最长工具耗时,否则会误杀。
- 时长:4min
P5 · 任务超时
中心内容:用户视角的总等待上限。
- 讲解技巧
- 强调这是产品承诺,要和业务方确认,而不是工程师自己定。
- 提醒:异步任务可以没有任务超时,但要有告警。
- 时长:4min
P6 · 超时后的动作
中心内容:不是简单报错,要给出已完成的部分。
页面内容:超时处理流程(记录状态 → 生成部分结论 → 通知)
讲解技巧
- 重点讲「生成部分结论」:用户拿到「已完成 3/5 步,卡在第 4 步」比拿到一个错误有用得多。
- 提醒:超时后要确保后台线程真的被中断,否则资源仍被占用。
时长:5min
P7 · 审批等待的例外
中心内容:等待人审批的时间不能算进任务超时。
- 讲解技巧
- 呼应 03-06:任务要能区分「运行中」和「等待中」两种状态,超时只对前者计时。
- 时长:4min
P8 · 编码:超时编排
中心内容:CompletableFuture.orTimeout + 独立线程池。
- 讲解技巧
- 提醒:
orTimeout只抛异常,不会中断真正的 IO,工具内部还要自己设超时。
- 提醒:
- 时长:5min
讲师备忘
| 项 | 内容 |
|---|---|
| 课前必做 | 准备三层超时结构图;准备一个会卡住的工具 |
| 最容易超时处 | P2 三层模型,容易反复讨论量级 |
| 学员最常问 | 「任务超时设多少?」答:同步问答 2 分钟,异步任务 10 分钟 |
| 现场备用 | 无法演示挂死 → 用 Thread.sleep 模拟 |