Appearance
L03-05 状态机:Agent 跑一半重启了怎么办
全局中心内容:Agent 是长时间运行的进程,必须像对待工作流一样对待它的状态。 全局讲解主线:重启丢状态的场景 → 状态模型 → 检查点 → 上下文压缩 → 恢复策略 → 编码 → 验收。
P1 · 产出页
中心内容:一个带检查点、可断点续跑、重启自愈的 Agent 运行时。
- 讲解技巧
- 开场场景:Agent 跑了 6 分钟,发了 3 次部署请求,然后服务发版重启了。
- 提问:重启后它是从零再来,还是接着跑?——前者意味着重复执行写操作。
- 时长:20s
P2 · 状态模型
中心内容:一次运行 = 一条 agent_run 记录,包含状态、轮次、上下文引用。
页面内容:表结构设计与状态取值
讲解技巧
- 讲清「状态」和「上下文」要分开存:状态是小字段(在表里),上下文是大文本(单独存),否则表会迅速膨胀。
- 提醒要给 runId,所有日志、工具调用、审计都挂在这个 ID 上。
时长:5min
P3 · 检查点
中心内容:每轮结束写一次检查点,而不是只在结束时写。
页面内容:检查点写入时机与内容
讲解技巧
- 讲清代价与收益:写入有成本,但丢一轮的代价远大于写一次的成本。
- 提醒检查点要包含「已经做过的写操作」,这是防止重复执行的关键。
时长:5min
P4 · 断点续跑
中心内容:从最后一个检查点恢复上下文,继续循环。
- 讲解技巧
- 强调恢复时要把「恢复」这件事本身告诉模型,否则它不知道之前发生过什么。
- 提醒:已执行的写操作不能重做,需要在恢复时把结果回填为 Observation。
- 时长:5min
P5 · 上下文压缩
中心内容:轮次多了上下文会爆,需要摘要压缩。
页面内容:压缩策略(保留目标 + 近期原始 + 历史摘要)
讲解技巧
- 强调「保留最初的任务目标」:很多压缩实现把开头丢了,结果 Agent 跑着跑着忘了要干什么。
- 讲清压缩本身也要调用模型,要计入成本。
时长:6min
P6 · 重启自愈
中心内容:启动时扫描未完成的 run,按策略恢复或标记失败。
页面内容:ResumeOnBoot 流程
讲解技巧
- 给出一个保守建议:自动恢复只用于只读场景;涉及写操作的,标记待人工确认更安全。
时长:5min
P7 · 编码:状态持久化
中心内容:CheckpointRepository + 事务边界。
- 讲解技巧
- 提醒事务边界:检查点写入要在工具调用之后、下一轮之前,顺序错了会丢状态。
- 时长:6min
P8 · 验收测试
中心内容:跑一半 kill 进程,重启后验证是否重复执行。
- 讲解技巧
- 给出具体测试方法:用一个计数工具,恢复后断言它只被调用了一次。
- 时长:4min
P9 · 避坑与小结
中心内容:没有持久化的 Agent 只能做演示,不能上生产。
- 讲解技巧
- 引出下一节:写操作不能只靠机器判断——03-06 Human-in-the-loop。
- 时长:2min
讲师备忘
| 项 | 内容 |
|---|---|
| 课前必做 | 准备 agent_run 表结构;准备 kill -9 的现场演示 |
| 最容易超时处 | P5 压缩策略,容易展开 |
| 学员最常问 | 「检查点写多频繁?」答:每轮一次,写操作后立即再写一次 |
| 现场备用 | 无数据库 → 用文件持久化演示 |