Skip to content

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 压缩策略,容易展开
学员最常问「检查点写多频繁?」答:每轮一次,写操作后立即再写一次
现场备用无数据库 → 用文件持久化演示