当前位置: 首页 > article >正文

深入解析 LangGraph Checkpoint

一、LangGraph Checkpoint 的核心设计目标LangGraph Checkpoint 解决的并不是简单的“存储状态”问题而是复杂工作流系统中的可恢复执行问题。从架构角度看它承担了四个关键职责1️⃣持久化状态管理保存 Graph 的完整状态使系统可以跨请求恢复执行。2️⃣工作流恢复能力Fault Tolerance当任务执行失败或系统重启时可以从最近状态继续执行。3️⃣时间旅行调试Time Travel Debugging开发者可以回滚到历史状态重新执行。4️⃣Human-in-the-loop 支持允许工作流暂停等待人工输入然后恢复执行。这四个能力构成了 LangGraph Agent 能够进入生产环境的重要基础。二、Checkpoint 在 LangGraph 架构中的位置LangGraph 的运行时架构可以抽象为四层Application Layer │ ▼ Graph Runtime │ ▼ Checkpoint System │ ▼ Storage Backend其中Graph Runtime负责节点执行、调度、并行控制。Checkpoint System负责保存和恢复 Graph State。Storage Backend负责物理存储数据库 / Redis / SQLite 等。Checkpoint 系统是连接运行时与存储层的关键组件。三、Pregel 执行模型与 Super-step理解 Checkpoint 的关键是理解 LangGraph 的执行模型。LangGraph 的执行模型借鉴了Pregel 分布式图计算模型。Pregel 模型核心思想图计算被分为一系列Super-step超级步骤superstep_1 superstep_2 superstep_3 ...每个 super-step 包含节点执行消息传递状态更新在 LangGraph 中Graph State │ ▼ Node Execution │ ▼ Channel Updates │ ▼ Next Node SelectionCheckpoint 就是在 super-step 边界生成的。Super-step 与 Checkpoint 的关系假设一个简单 GraphSTART → A → B → C → END执行过程superstep0 initial state superstep1 node A superstep2 node B superstep3 node CCheckpoint 会自动生成checkpoint0 checkpoint1 checkpoint2 checkpoint3每个 checkpoint 都保存Graph state snapshot因此Checkpoint Super-step 边界的状态快照四、Checkpoint 的核心数据结构LangGraph 使用两个核心对象描述状态快照Checkpoint StateSnapshot4.1 StateSnapshotStateSnapshot 是真正的状态载体。其核心字段包括StateSnapshot ├─ values ├─ next ├─ tasks ├─ metadata ├─ config ├─ created_at └─ parent_config下面逐一解释。valuesvalues: Dict[str, Any]保存Graph channel 的当前值。例如{ messages: [...], tools_result: ..., analysis: ... }这是 Graph 的核心业务数据。nextnext: tuple[str]表示下一步要执行的节点例如(tool_executor,)如果为空()说明Graph execution finishedtaskstasks: List[Task]保存待执行任务信息。可能包含未完成任务中断信息错误信息例如interrupt waiting for human inputmetadatametadata 包含执行信息step source parents例如{ step: 4, source: loop }用于调试tracingobservabilityparent_configCheckpoint 形成一个链式结构checkpoint1 │ ▼ checkpoint2 │ ▼ checkpoint3通过parent_config建立父子关系。这使得系统可以time travel五、ThreadLangGraph 的会话隔离机制Checkpoint 体系的核心概念之一是Thread。Thread 是checkpoint sequence结构如下thread_id ├─ checkpoint1 ├─ checkpoint2 ├─ checkpoint3也就是说Thread 一个工作流会话典型映射场景thread_id聊天user_session_idAgenttask_idWorkflowrun_id因此 thread_id 是LangGraph 中最重要的配置参数之一。示例config{configurable:{thread_id:user_123}}六、Checkpointer持久化接口Checkpoint 的存储由Checkpointer完成。核心抽象类BaseCheckpointSaver定义了统一接口。主要方法包括put() putWrites() getTuple() list()put()put(checkpoint)保存 checkpoint。getTuple()getTuple(thread_id)读取 checkpoint。list()list(thread_id)列出历史 checkpoint。putWrites()LangGraph 的一个高级特性。用于保存pending writes七、Pending Writes 与部分恢复LangGraph 的 checkpoint 系统支持部分恢复Partial Recovery。假设superstep ├─ NodeA success └─ NodeB fail系统会保存NodeA result恢复时NodeA 不重新执行 NodeB 重新执行这样可以避免重复计算这是 LangGraph 相比传统 workflow 引擎的重要优势。八、序列化机制SerdeCheckpoint 数据需要在内存和数据库之间传输。LangGraph 使用SerializerProtocol。默认实现JsonPlusSerializer特点支持 datetime支持 tuple支持 Python object因此 Graph state 不需要强制 JSON 化。九、存储后端架构LangGraph 的 checkpoint 系统支持多个存储后端。常见实现BackendPackageSourceIn-memorylanggraph-checkpointlangchain-ai/langgraphSQLitelanggraph-checkpoint-sqlitelangchain-ai/langgraphPostgreSQLlanggraph-checkpoint-postgreslangchain-ai/langgraphAWS (DynamoDB, Bedrock, Valkey)langgraph-checkpoint-awslangchain-ai/langchain-awsMongoDBlanggraph-checkpoint-mongodblangchain-ai/langchain-mongodbRedislanggraph-checkpoint-redisredis-developer/langgraph-redisCockroach DBlangchain-cockroachdbcockroachdb/langchain-cockroachdb生产环境推荐PostgreSQL原因事务支持稳定性并发能力十、Checkpoint 支持的高级能力Checkpoint 不只是持久化。它直接支持四个高级能力。1 会话记忆Graph state 会跨请求保存。例如聊天 AgentUser → Agent → Tool → Agent所有消息会自动持久化。2 Human-in-the-loopLangGraph 支持interrupt() resume()流程Graph pause human input Graph resumeCheckpoint 保存暂停状态。3 Fault Tolerance系统崩溃时load latest checkpoint resume execution避免任务从头开始。4 Time Travel开发者可以rollback checkpoint重新执行 Graph。适用于debuggingexperiment十一、Checkpoint 生命周期完整生命周期Graph invoke │ ▼ create superstep │ ▼ generate checkpoint │ ▼ serialize snapshot │ ▼ persist storage │ ▼ load on next invocation十二、工程最佳实践1 生产环境使用数据库推荐PostgresSaver2 thread_id 必须稳定不要使用random uuid否则无法恢复会话。3 控制状态大小不要在 state 中存大文件embedding 向量建议store reference4 定期清理 checkpoint长期系统需要TTL archiving十三、总结LangGraph 的 Checkpoint 系统本质上是一套基于 Pregel 执行模型的状态版本化系统。其核心架构Pregel Runtime │ ▼ Super-step │ ▼ StateSnapshot │ ▼ Checkpoint │ ▼ Thread │ ▼ Checkpointer │ ▼ Storage Backend通过这一体系LangGraph 实现了持久化状态管理可恢复工作流执行Human-in-the-loopTime travel debugging这也是为什么 LangGraph 能够构建真正生产级 Agent 系统的关键原因。from dotenv import load_dotenv from typing_extensions import TypedDict from langgraph.graph import StateGraph, START, END from langgraph.checkpoint.memory import InMemorySaver from langgraph.types import interrupt, Command load_dotenv() ############################################################ # 1 定义 Graph State ############################################################ class AgentState(TypedDict): user_input: str analysis: str decision: str result: str ############################################################ # 2 定义节点 ############################################################ def analyze_node(state: AgentState): print(\n--- analyze_node ---) analysis fanalysis of {state[user_input]} return { analysis: analysis } def human_review_node(state: AgentState): print(\n--- human_review_node ---) # interrupt 会创建 checkpoint 并暂停 feedback interrupt( { question: Human approval required, analysis: state[analysis] } ) return { decision: feedback[decision] } def execute_node(state: AgentState): print(\n--- execute_node ---) if state[decision] approve: result fEXECUTED: {state[analysis]} else: result REJECTED BY HUMAN return { result: result } ############################################################ # 3 构建 Graph ############################################################ builder StateGraph(AgentState) builder.add_node(analyze, analyze_node) builder.add_node(review, human_review_node) builder.add_node(execute, execute_node) builder.add_edge(START, analyze) builder.add_edge(analyze, review) builder.add_edge(review, execute) builder.add_edge(execute, END) ############################################################ # 4 创建 Checkpointer ############################################################ checkpointer InMemorySaver() app builder.compile(checkpointercheckpointer) ############################################################ # 5 配置 thread_id ############################################################ config { configurable: { thread_id: demo-session } } ############################################################ # 6 第一次执行会在 review 节点 interrupt ############################################################ print(\n RUN GRAPH ) result app.invoke( { user_input: analyze this data }, configconfig ) print(\nExecution paused.) print(Current state:) state app.get_state(config) print(state.values) ############################################################ # 7 查看 checkpoint 历史 ############################################################ print(\n CHECKPOINT HISTORY ) history list(app.get_state_history(config)) for i, snapshot in enumerate(history): print(f\nCheckpoint {i}) print(step:, snapshot.metadata.get(step)) print(next:, snapshot.next) print(values:, snapshot.values) ############################################################ # 8 Human Resume继续执行 ############################################################ print(\n RESUME GRAPH ) result app.invoke( Command(resume{decision: approve}), configconfig ) print(\nFinal result:) print(result) ############################################################ # 9 Time Travel 示例回滚到旧 checkpoint ############################################################ print(\n TIME TRAVEL ) # 获取历史 checkpoint history list(app.get_state_history(config)) # 选择 checkpoint 2初始状态完全重新执行 checkpoint_id history[2].config[configurable][checkpoint_id] rollback_config { configurable: { thread_id: demo-session, checkpoint_id: checkpoint_id } } state app.get_state(rollback_config) print(\nRollback state:) print(state.values) print(\nRe-run from this checkpoint (without resume - will hit interrupt again)) # Time travel: 回滚后不带 resume 重新执行会重新触发 interrupt result app.invoke( None, configrollback_config ) print(\nNew result after time travel:) print(result)

相关文章:

深入解析 LangGraph Checkpoint

一、LangGraph Checkpoint 的核心设计目标 LangGraph Checkpoint 解决的并不是简单的“存储状态”问题,而是 复杂工作流系统中的可恢复执行问题。 从架构角度看,它承担了四个关键职责: 1️⃣ 持久化状态管理 保存 Graph 的完整状态&#x…...

Harmonyos应用实例128:正方体展开图辨识

应用实例八:正方体展开图辨识 知识点:第四章《几何图形初步》—— 立体图形的展开图。 功能:展示各种平面图形(1-4-1型、2-3-1型等)。学生判断该图形能否围成正方体。点击"折叠"按钮,演示3D折叠动画验证答案,培养空间想象能力。 /*** 正方体平面展开图与折…...

历时100天,亿元Cocos小游戏实战合集顺利完结!!!

引言 哈喽大家好,我是亿元程序员。 还记得100天前,在《100个Cocos实例》合集完成三分之二时,曾暗暗“发誓”:一定要启动一个更聚焦、更实用的新系列。 于是,《亿元Cocos小游戏实战合集》就此诞生。 这个系列&#…...

openclaw 飞书表情包发送器

openclaw 飞书表情包发送器 github地址 功能 1.在回复了用户消息后,自动调用接口发送表情包图片2.支持概率命中,即概率发送(默认60%概率)3.不影响主回复消息 使用教程 1.需要依赖飞书官方的插件(非openclaw原生飞书插件) np…...

VS Code + LaTex + SumatraPDF联合使用指南

🧸 VS Code 与 TexLive SumatraPDF 下载安装 我们就以TexLive为排版系统,用VS Code做编辑器,我本来也是有安装TexStudio的,但因为一直用的VS Code,比较习惯,并且VS Code的界面个人感觉要比TexStudio要好看…...

计算机网络相关知识

1. 计算机网络基础概念计算机网络是指通过通信设备和线路将地理位置不同的、具有独立功能的计算机系统连接起来,在网络软件的支持下实现资源共享和信息传递的系统。按照覆盖范围可分为:局域网(LAN):覆盖范围较小&#…...

从理论到实践:打造坚不可摧的 Redis 缓存体系

在现代高并发应用架构中,Redis 几乎是缓存层的标配。然而,简单地将数据放入 Redis 并不能解决所有问题。如何设计一个既能扛住流量洪峰,又能保证数据一致性,并且易于维护的缓存系统,才是真正的挑战。本文将基于大厂实战…...

GTC 2026落幕:AI 不再是模型,而是AgenticOps

AI 不再是模型 而是AgenticOps GTC 2026 刚刚落幕,Jensen Huang 站在台上说出了一个词:AI Factory。 不是模型,不是算法,是工厂。 这个词的出现,其实在验证一件事:OpenCSG 从一开始就走对了方向。 这个…...

Java EE3(第十章:Spring中的事务管理)

...

Comsol激光打孔(不通)水平集两相流仿真模型的奇妙之旅

comsol激光打孔(不通)水平集两相流仿真模型,涉及温度场流场水平集,一共发两个版本最近在研究激光打孔相关的项目,用到了Comsol来构建水平集两相流仿真模型,这里面涉及到温度场和流场,过程还挺有…...

Java面试实战:从基础到微服务全解析

互联网大厂Java面试:严肃面试官与搞笑程序员谢飞机的较量 第一轮面试 面试官:你好,谢飞机,请问你对Java SE哪个版本最熟悉? 谢飞机:那个...我用过Java 8和11,不过我对Java 17也有点了解。 面试官…...

国产OpenClaw平替选择与前端开发适配方案

工具深度适配方案一、主流国产 “小龙虾” 全景对比(2026 最新)1. 阿里 QoderWork(CoPaw)核心定位:本地沙盒优先、代码能力强、全中文、隐私安全优势✅ 纯本地部署,数据不上传云端,敏感内容绝对…...

Java集合——基础

1. 数组和集合的区别数组是固定长度的数据结构,一旦创建长度就无法改变,而集合是动态长度的数据结构,可以根据需要动态增加或减少元素。(集合的底层本质是数组)数组可以包含基本数据类型和对象,而集合只能包…...

推三返一/排队免单/279拼购/三三复制/团队分红/区域代理/股东分红/平级奖/伯乐奖/奖金池电商系统

私域电商裂变创富系统 盘活私域、顶峰相见 私域团队不能是一潭死水 必须通过极大的诱惑力模式促进裂变 让人员活泛起来 让收益涨起来 让盘子做起来 文末有私域电商7大裂变分销模式的详细介绍资料,可以找客服索取: 为私域而生的裂变系统&#xff0…...

打卡信奥刷题(2975)用C++实现信奥题 P6015 [CSGRound3] 游戏

P6015 [CSGRound3] 游戏 题目背景 小 Y 和小 Z 是一对好朋友,他们在玩一个游戏。游戏只有一个回合。 题目描述 有一个牌堆,一共有 nnn 张牌,第 iii 张牌上有一个数 aia_iai​,其中第一张牌是堆顶。 小 Z 先取牌,他可以…...

【统计检验】T检验

统计检验必学:T检验|三种类型公式推导Python代码机器学习实战 T检验是统计学、数据分析、机器学习中最常用、最基础的均值检验方法,专门用来判断两组数据的均值是否存在显著差异。一、T检验到底是什么?(一句话看懂&…...

python微信小程序的基于Android的医院健康咨询平台 患者健康数据评估系统

目录实现计划概述系统架构设计后端开发(Python)微信小程序开发Android平台集成健康评估算法数据安全与合规测试与部署维护与更新项目技术支持可定制开发之功能创新亮点源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作…...

动力域-BMS电池管理系统半实物仿真测试

分布式架构、高实时仿真的BMS半实物仿真测试系统...

【异常】OpenClaw 启动异常:插件路径丢失plugin: plugin path not found与未知渠道unknown channel id: feishu报错排查指南

在部署或升级 OpenClaw 网关时,由于本地依赖缺失或配置文件未同步更新,经常会遇到插件无法加载的异常。本文将针对典型的“飞书插件丢失”及“记忆组件缺失”报错提供完整的排查与解决思路。 一、报错内容 在启动 OpenClaw 时,控制台或日志输出如下 JSON 格式的异常提示: …...

TikTok引发算法竞赛,Meta与TikTok陷有害内容争议

算法竞赛下,Meta与TikTok有害内容增多举报人向BBC透露,TikTok凭借极具吸引力的短视频推荐算法颠覆社交媒体行业后,引发了算法竞赛。Meta和TikTok在对自家算法进行内部研究后发现,愤怒情绪能推动用户参与度,于是做出了一…...

【2026官方最新】贵州工商职业大学几点熄灯?早操晚自习全解

大学的日常作息直接关系到未来三年的生活幸福感。很多新生在填报志愿前都会好奇:学校管得严不严?作息时间是怎么安排的?为了解答大家的疑惑,本文根据2026年贵州工商职业学院官方最新发布的日常管理与作息制度,为您进行…...

Unity像素游戏精灵导入最佳实践

本文针对 Unity 2D 像素风格游戏,总结了一套从纹理导入到平台优化的完整工作流,帮你解决像素模糊、边缘黑边、碰撞不准、包体过大等常见问题,让你的像素资源在游戏中呈现最佳效果。一、前言在开发像素风格2D游戏时,纹理导入设置直…...

3年总结-构建企业或个人知识库踩的10大致命坑文章内容

说白了,很多人搞企业AI落地,以为花几十万买个大模型或者搞个牛逼的提示词,业务就能直接起飞。如果你有这个想法,那我劝你赶紧刹车,不然钱砸进去连个水花都听不见。AI就像你花重金招来的一个名校博士生,智商…...

三层电梯S7 - 1200 PLC与TP700触摸屏博途V15联机程序开发之旅

3三层电梯西门子S7-1200PLC和TP700触摸屏博途V15联机程序666,带自动升降功能,设计要求,开门等待5S最近搞了个三层电梯的项目,用的是西门子S7 - 1200 PLC搭配TP700触摸屏,在博途V15环境下开发程序,还带自动升…...

字符串对比-进阶题11

字符串对比 题目 问题描述给定两个仅由大写字母或小写字母组成的字符串(长度介于1到10之间),它们之间的关系是以下4种情况之一:1:两个字符串长度不等。比如 Beijing 和 Hebei2:两个字符串不仅长度相等,而且相应位置上的…...

OpenClaw 3.13 正式发布:新增 Chrome DevTools MCP、会话绑定、插件生态全面升级

OpenClaw 是一款强大的 AI 助手框架,支持多平台接入、浏览器自动化、代码执行等功能。近日,OpenClaw 3.13 版本正式发布,带来了多项重要更新。 🚀 重要新特性 1. Chrome DevTools MCP 支持 新增官方 Chrome DevTools MCP 附加模…...

MCGS配方功能学习

MCGS配方使用与一般触摸屏(例如西门子触摸屏)等不太一样,今天通过MCGS系统帮助手册,利用里面的脚本介绍,组态了MCGS配方的使用方法,通过脚本实现,确实比较灵活。...

管理者不做什么比做什么更重要

1. 不做管理上的极端派 “严格”与“宽容”之间找到平衡点:对事要严,对人要宽。 既要有原则、有底线,对错误坚决纠正,对工作严格要求;也要有人情味、有温度,体谅下属的难处,关心下属的成长 2.…...

探索基于龙贝格观测器的 PMSM 无传感器控制

该模型采用龙贝格观测器进行无传感器控制 其利用 PMSM 数学模型构造观测器模型,根据输出的偏差反馈信号来修正状态变量。 当观测的电流实现与实际电流跟随时, 可以从观测的反电势计算得到电机的转子位置信息,形成跟踪闭环估计。 龙伯格观测器…...

Nginx 的性能调优与深度监控

一、Nginx 性能调优(核心优化方向)通过优化配置充分利用硬件资源,减少资源浪费,提升并发处理能力和响应速度,涵盖基础配置、连接管理、缓存与压缩等关键维度。1. 基础环境与进程优化运行用户与组配置:避免使…...