Skip to content

LangGraph 的状态、Checkpoint 与人工介入怎么实现?

3 分钟速学卡

30 秒口述: LangGraph 中状态是节点共享、按定义合并的任务数据,Checkpoint 是在稳定线程标识下保存状态快照和执行位置,人工介入则是在高风险节点前中断,把待审内容和版本暴露给人,再携带审批结果恢复。Checkpoint 解决流程恢复,不自动解决外部副作用恰好一次;节点必须幂等,并记录业务键、尝试次数和执行回执。实现时我会区分任务状态与大对象引用,设计中断前后状态契约、并发审批版本校验、超时取消和审计 Trace。

  • 本质: Checkpoint 保存“从哪继续”,幂等保证“继续时不重复伤害”,人工介入决定“是否允许继续”。
  • 核心机制: 状态字段必须定义合并语义;中断优先放在高风险副作用之前。
  • 关键判断: 恢复携带线程、版本和权限;外部执行仍需幂等键与业务回执。
  • 项目落地: 故障演练:两名审批人同时操作旧页面,第二个批准覆盖第一个拒绝。通过乐观版本检查使后到请求失败并刷新,审计保留双方动作。
  • 边界与坑: “Checkpoint 等于数据库事务。” 它不覆盖外部系统副作用;“恢复就是重新跑节点。” 非幂等节点可能重复执行。

目录

面试官为什么问

考察 durable execution、状态合并、恢复语义和人机协作边界。

小白先看懂

登山队每到营地就记录位置和物资,这是 Checkpoint;遇到危险路段先停下等指挥部批准,这是人工介入;恢复时从营地继续,但若补给订单已下过,就不能无脑再下单。

专业上状态快照与外部系统副作用是两个事实源。类比忽略了并发分支合并和存储事务。

主题教学图片

图:教学图片|LangGraph 的状态、Checkpoint 与人工介入怎么实现?

替代文本: 围绕“LangGraph 的状态、Checkpoint 与人工介入怎么实现?”组织的中文教学图,通过分区、箭头和标签解释核心机制。

LangGraph 的状态、Checkpoint 与人工介入怎么实现?教学图片

读图结论: 快照决定从哪继续;幂等保证不会重复执行。

这张图片用于建立主题机制的直觉。精确公式、参数、失败分支和事实边界仍以正文与 Mermaid 为准。

图片生成记录: model=gpt-image-2generated=2026-07-15prompt_version=v1reviewed=2026-07-16review_basis=user-confirmed查看生成 Prompt

图:技术调用流程|暂停、审批与幂等恢复

替代文本: 图状态执行到高风险节点前写入 Checkpoint 并暂停,审批人基于版本决策,恢复时校验版本和幂等键,再执行副作用并写回结果。

图表加载中…

读图结论: 可恢复流程需要状态快照、审批版本和副作用幂等三者配合。

中断应发生在不可逆副作用之前;若中断发生在调用后,必须先查询外部执行状态再决定是否重试。

核心原理

状态字段要有清晰 reducer/合并语义,避免并行节点覆盖。Checkpoint key 应包含线程/任务范围,恢复请求要校验租户和版本。大文件保存对象存储引用,不直接塞入状态。

项目和生产视角

故障演练: 两名审批人同时操作旧页面,第二个批准覆盖第一个拒绝。通过乐观版本检查使后到请求失败并刷新,审计保留双方动作;这是演练建议。

常见错误回答

  • “Checkpoint 等于数据库事务。” 它不覆盖外部系统副作用。
  • “恢复就是重新跑节点。” 非幂等节点可能重复执行。
  • “人工介入就是发通知。” 还需暂停、版本化决策与受控恢复。

递进追问

  1. 并行节点如何合并状态?
  2. Checkpoint 应在副作用前还是后写?
  3. 审批超时和撤回怎样建模?
  4. 外部调用超时未知时如何恢复?

关联阅读

总结

一句话记忆: Checkpoint 保存“从哪继续”,幂等保证“继续时不重复伤害”,人工介入决定“是否允许继续”。

  • 状态字段必须定义合并语义;
  • 中断优先放在高风险副作用之前;
  • 恢复携带线程、版本和权限;
  • 外部执行仍需幂等键与业务回执。