
书名:《Agent Runtime 工程化:从工具调用循环到可恢复执行系统》
作者:陈堂会
平台:极客日志(https://zeeklog.com)
X:@Megick_com
联系邮箱:[email protected]
章节:第八章 Checkpoint、Resume、Rollback
第八章 Checkpoint、Resume、Rollback
长任务一定会中断。问题是:失败后怎么继续,而不是重来?
Agent Runtime 一旦进入真实工程任务,就会遇到长运行:改多个文件、跑多轮测试、安装依赖、查文档、等待用户确认。浏览器刷新、进程崩溃、网络超时、模型失败、用户临时离开,都可能打断 run。如果没有 checkpoint,Agent 只能从头再来;从头再来又可能重复执行副作用。
可恢复执行系统要做的事很朴素:把'运行到哪里了'保存下来,而且能验证、能恢复、能回滚。难点也在这里。保存聊天记录不等于保存运行状态,保存文件 diff 也不等于知道哪些工具已经执行。

图 8-1:可恢复执行不是简单保存聊天记录。它必须同时保存对话状态、工具执行状态、文件变更和审批记录。
8.1 checkpoint 保存的是一致性
一个 checkpoint 不只是'某个时刻的数据包'。它保存的是几个系统状态之间的一致性:消息历史、run state、工具账本、文件变更、审批记录、trace 位置。恢复时,这几样必须对得上。
一个 checkpoint 至少包含:
- session id、run id、step id;
- message history 或其可重建引用;
- 当前计划和 stop condition 状态;
- tool call 计划、执行结果、是否有副作用;
- 审批记录;
- 文件系统变更摘要;
- token/cost/step 预算;
- provider response id 或 continuation metadata;
- trace 位置。
示例:
type Checkpoint = {
id: string;
runId: string;
stepId: ;
: ;
: ;
: ;
: [];
: ;
: ;
: ;
: ;
};

