Skip to content

Agent 如何实现中断恢复并避免重复执行副作用工具?

题型:深入 · 关键是恢复点、一致性边界和工具幂等。

建议回答

中断时先持久化当前图节点、状态版本和待执行动作,再向前端发送可恢复的中断事件。恢复请求必须携带 runId 和 checkpointVersion,通过乐观锁防止同一运行被并发恢复。纯推理节点可以安全重算,但下单、发消息、写业务数据等副作用工具必须有 operationId 或 idempotencyKey,工具执行记录要区分准备、执行中、成功、失败和结果未知。

如果工具已成功但 Checkpoint 写入失败,恢复时不能直接重放,应先用 operationId 查询工具侧结果;若工具不支持幂等或结果查询,则把它标记为需要人工确认。图版本发生变化时,应按旧版本恢复或执行明确的状态迁移,不能把旧状态直接塞进新图。

一致性选择

  • 重要副作用:优先业务幂等、状态机和结果查询。
  • Checkpoint:节点前后按风险选择保存点,不机械地每个 Token 持久化。
  • 人工审批:审批结果也要作为状态事件持久化并审计。

易错点

  • Exactly-once 通常不能靠 Agent Runtime 单方面保证。
  • 重试模型调用与重试副作用工具的风险完全不同。

知识关系

从当前问题继续深入,或者回到提出这个问题的知识入口。