**摘要:**本文围绕 LangGraph 的检查点机制展开,先说明检查点是在超级步中保存的工作流状态快照(StateSnapshot),并逐一解析 config、metadata、values、next、tasks 等关键属性;随后总结检查点在容错恢复、状态追踪与审计、有状态异步或长流程等场景中的作用;最后结合 State 全局状态对象,讲清节点局部状态合并到全局状态后才进行保存、以及工作流中断后如何加载最新检查点恢复执行的完整逻辑,并通过对比示例说明使用检查点后多轮对话内容能够持续保留。
内容参考于:图灵AI大模型全栈
检查点它是在超级步中存储的工作流执行过程中的状态信息(快照),检查点的类型是 StateSnapshot,它有如下的关键属性
config:它存放的是当前检查点中的配置信息,也就是节点执行完时所用的配置信息
metadate:它存放的是当前检查点的元数据,也就是节点执行完时拥有的元数据
values:它是state(状态)的值,也就是工作流执行到当前节点的状态内容(比如 messages、steps、results等字段的值),节点执行完后会保存一次状态到检查点
next:它存放的是下一个节点名称,就是说当前节点执行完后,它肯定要走向下一个节点,这时就会把下一个节点的名称保存到检查点中
tasks:当前任务执行的详细信息,它比next保存的更详细,它有执行了那些节点,接下来会去往那些节点,它是使用PregelTask类型来表示
LangGraph检查点的作用
容错恢复,如果服务挂了、停电了、任务执行中断了失败了,可以利用检查点通过保存的状态信息来恢复整个工作流,不需要从头开始执行工作流,可以利用这个机制单独调试工作流中某一个节点
状态追踪或审计:可以通过检查点的信息查看节点的执行状态,如果某个节点执行的有问题,可以通过检查点查看是什么节点出现了问题,
有状态的异步或长流程图:比如多任务、多轮对话,这就可以让检查点保存每一个任务的持久化,这样可以当再次执行的时候去参考之前做了什么
LangGraph是围绕着State状态对象创建的,状态是一个全局的变量,每个节点在执行的时候都可以读取或修改这个状态里的内容,注意节点返回的是一个局部的状态,当节点返回完后,也就是return完后,才会把局部的状态合并到全局的状态里,然后合并到全局状态完成后,才进行检查点保存,检查保存的只是全局的状态,并不是节点的返回值,如果因为问题导致工作流中断,就可以通过加载最新的检查点里的状态进行恢复工作流
状态的数据结构就是一个字典类型
然后当执行朗次工作流时,检查点里的内容是追加更新的,如下图,执行了两次,第一次给大模型的是 你好呀!我的名字叫计算机王,第二次是 我的名字叫什么?通过下图红框可以看到这两次的内容都存在

如下图红框没有使用检查点,可以看到第一次给大模型的内容它丢失了

