数据库Checkpoint、事件溯源、工作流引擎与任务队列怎么选?Agent持久化架构完整指南

📅 2026/8/19 13:23:50
数据库Checkpoint、事件溯源、工作流引擎与任务队列怎么选?Agent持久化架构完整指南
文章摘要Agent持久化经常被简化为“把State JSON存进数据库”。这种做法可以解决进程重启后恢复变量,却无法独立解决历史审计、人工审批、长时间等待、定时器、副作用幂等、事件重放和跨服务编排。数据库Checkpoint适合保存某个Thread在某一时刻的完整状态;事件溯源保存每一次不可变状态变化,适合审计和历史重建;工作流引擎负责可靠调度、定时器、重试、等待和恢复;任务队列负责把可执行工作分发给Worker,但通常不负责完整业务状态。Spring Batch的JobRepository擅长批处理Job与Step重启,Spring StateMachine支持运行时状态持久化,LangGraph Checkpointer则围绕Thread保存图快照并支持Interrupt和Replay。这些组件并不是简单替代关系。生产Agent最常见的组合是:关系数据库保存Run、Step和审批事实;Checkpoint保存图状态;Outbox事件提供可靠通知;任务队列分发执行;高时长、高风险和大量定时器场景由工作流引擎承载。本文从恢复粒度、等待时间、并发、定时器、事件量、审计、副作用、成本和运维等维度,对五类持久化方案进行系统比较,并给出FAQ Agent、研究Agent、审批Agent、批量文档处理和跨系统业务Agent的推荐组合。一、先区分四个问题1. 当前状态在哪里? 2. 历史发生了什么? 3. 下一步由谁可靠调度? 4. 外部副作用是否已发生?对应:Checkpoint Event Log Workflow/Scheduler Business Ledger一个组件通常不能完美解决全部问题。二、方案一:数据库状态快照表:createtableagent_run_state(run_idvarchar(128)primarykey,state_versionbigintnotnull,state_json jsonbnotnull,next_nodevarchar(128),statusvarchar(32)notnull,updated_at timestamptznotnull);优点:简单;-易查询;-事务成熟;-适合中小规模;-可直接集成Spring Boot。缺点:历史需要额外表;-JSON Schema演进;-大State写放大;-并发合并复杂;-定时器与任务调度需另做。三、Checkpoint的语义Checkpoint通常是:某一执行步骤之后 图状态的不可变快照它可能包含:values;-next nodes;-config;-metadata;-pending tasks;-interrupt信息。恢复时读取最新或指定Checkpoint。四、Checkpoint的优势快速恢复;-人工中断;-时间旅行;-故障调试;-分支;-对话Thread Memory。五、Checkpoint的局限不等于完整审计;-不自动调度长定时器;-不自动保证工具幂等;-大State成本高;-历史清理复杂;-不同图版本兼容问题。六、方案二:事件溯源不保存“当前State是X”,而是保存:RunCreated PlanFrozen StepStarted ToolIntentRecorded ToolSucceeded ApprovalRequested ApprovalGranted ReviewCompleted RunFinished当前状态由事件投影得到。七、事件表createtableagent_event(run_idvarchar(128)notnull,sequencebigintnotnull,event_idvarchar(128)notnull,event_typevarchar(64)notnull