Agent Mentor Learn

状态管理与持久化:让长任务经得起中断

这门课讲 Agent 的 执行状态——不是模型「记得」什么(那是记忆,本系列第 5 门课与第 8 门课的领地),而是 harness 自己攥着的那份运行现场:messages 数组、轮次与用量计数器、还没落账的工具调用。进程一死,磁盘上的文件都还在,这份现场却没了——任务只能从头再来。本课教你把现场变成可以落盘、可以恢复的东西:每一步存检查点、崩溃后从断点把循环拉起来、恢复时分辨哪些工具敢重跑哪些不敢(幂等性)、再把检查点用出第二重价值——回退到早先的现场、分叉出另一条尝试路线,最后动手给你在第 7 门课写的 harness 装上完整的检查点与恢复机制。适合已完成本系列前 8 门课的读者。本课不重教记忆与上下文管理(第 5 门课讲「模型跨会话记得什么」、第 8 门课讲「每一轮让模型看到什么」,本课讲「harness 自己记什么」),不教 Temporal 这类外部工作流引擎的 API,也不涉及多进程并发与分布式一致性;Claude Code 的检查点机制只作产品对照,本课教的是给你自己的 harness 造一个。

课程大纲

  1. 记忆之外还有状态
  2. 检查点:把执行现场落盘
  3. 断点恢复:从检查点拉起循环
  4. 副作用与幂等:恢复时哪些工具敢重跑
  5. 回退与分叉:检查点的第二重价值
  6. 实战:给 harness 装上检查点与恢复

学习目标

完成本课程后,你将能够:

  • 区分 Agent 的记忆(喂给模型的上下文)与执行状态(harness 攥着的运行现场),说清为什么「Agent 是有状态的、错误会复利」使得崩溃对长任务格外致命
  • 为一个 harness 循环设计检查点:哪些字段必须进快照、什么时机落盘、怎么写才不会把检查点文件本身写坏
  • 实现断点恢复:从检查点重建 messages 与计数器、重新进入循环,并正确处理「崩溃发生在工具执行与结果落账之间」留下的悬空调用
  • 用幂等性给恢复兜底:判断哪些工具重跑无害、哪些必须防止重复执行,并给高影响工具装上幂等键
  • 把检查点用在救灾之外:回退到早先的现场重试、分叉出另一条尝试路线,并说清检查点与版本控制的分工
  • 给第 7 门课的 harness 装上「每轮落盘 + --resume 恢复 + 悬空调用对账 + 幂等防重」的完整机制,亲手演示一次中断后续跑到完成的长任务

前置要求

  • 完成本系列前 8 门课,或具备等同基础
  • 能手写以 stop_reason 驱动的 harness 循环,理解 tool_use/tool_result 必须一一配对(第 7 门课)
  • 了解上下文窗口管理与压缩(第 8 门课;本课的检查点会与它的 tokensUsed 计数配合)
  • 能读写基础的 JavaScript / Node.js 代码(第 6 课需要跟着写)

预计学习时间

约 3-4 小时,包括每课的动手练习