资讯动态

Persistence(持久化)

发布时间:2026/9/29 7:10:09 来源:尧图企业网站定制
先思考下面问题Agent 执行到一半怎么办怎么暂停、恢复、故障恢复不同对话之间又怎么记住用户一、Persistence 到底是什么LangGraph 的Persistence持久化就是让 Agent 的信息能够超越“一次 graph run”继续存在。官方把它分成两个互补的机制LangGraph Persistence │ ┌───────────┴───────────┐ ↓ ↓ Checkpointer Store 检查点 存储 │ │ 当前 Thread 跨 Thread 短期记忆 长期记忆 │ │ 对话连续性 用户偏好 Human-in-loop 用户事实 故障恢复 共享知识 Time Travel官方的核心定义是Checkpointer保存某个 Thread 的 Graph State属于短期、线程级记忆。Store保存 Graph State 之外的应用数据属于长期、跨线程记忆。实际应用中通常二者一起使用。二、Checkpointer给 Agent “存档”这是 Persistence 最重要的概念。可以把它理解成游戏里的Save Point / 存档点Agent 执行START ↓ Node A ↓ Checkpoint ① ↓ Node B ↓ Checkpoint ② ↓ Node C ↓ Checkpoint ③ ↓ END每一个super-step都可以形成一个 checkpoint也就是当时整个 Graph State 的快照。([Docs by LangChain][2]) 因此 Agent 如果执行到 Node BAgent 执行 ↓ A → B → C → D → E ↑ Checkpoint突然用户介入程序崩溃Tool 出错服务重启都可以从保存的状态继续而不是从头开始。三、为什么 Agent 特别需要 Checkpointer官方列出了几个非常关键的能力。① Human-in-the-loopAgent 执行到LLM ↓ 需要人工确认 ↓ interrupt() ↓ 保存 State ↓ 等待人 ↓ 恢复执行人处理完之后Agent 可以从原来的状态继续。所以没有持久化很难真正做好可暂停、可恢复的人机协作。② Memory同一个 Thread 的后续交互可以继续使用之前保存的状态Thread-001 第1轮你好我叫 Bob ↓ State ↓ Checkpoint 第2轮你还记得我的名字吗 ↓ 从 Thread 恢复 ↓ Bob所以这里的 Memory本质上是通过持久化的 State让后续执行能够重新获得之前的信息。③ Time Travel这是 LangGraph 很有意思的能力。因为历史 checkpoint 都保留下来了所以可以Checkpoint 1 ↓ Checkpoint 2 ↓ Checkpoint 3 ↓ Checkpoint 4回到以前的状态检查“Agent 当时到底发生了什么”甚至可以从过去的 checkpointfork 出新的执行轨迹。这对 Agent Debug 非常重要。④ Fault Tolerance假设A ✓ ↓ B ✓ ↓ C ✗ ↓ D如果 B 已经成功并保存Checkpoint A B那么 C 失败后可以从最近成功的状态恢复而不是A → B → C全部重跑。LangGraph 还保存 super-step 中已经成功完成的 node writes因此某个并行节点失败时其他已经成功的节点不必重新执行。四、Thread 是什么理解 Persistence必须理解Thread。可以简单理解为一个持续存在的 Agent 执行上下文。例如thread_id user-001-session-001 ↓ Run 1 ↓ Checkpoint Run 2 ↓ Checkpoint Run 3 ↓ CheckpointLangGraph 用thread_id找到这一系列状态。官方明确指出使用 Checkpointer 时需要通过{configurable:{thread_id:1}}指定 Thread。没有thread_idCheckpointer 就无法正确保存和恢复对应状态。五、Checkpoint ≠ Thread这两个概念容易混。Thread │ ├── Checkpoint 0 │ ├── Checkpoint 1 │ ├── Checkpoint 2 │ └── Checkpoint 3Thread 是一条持续的执行轨迹。Checkpoint 是这条轨迹上的一个状态快照。而且 Checkpoint 对应的是super-step 边界。LangGraph 在 super-step 完成时保存完整 State Snapshot同时还会记录节点级 writes用于故障恢复。六、Store解决“跨对话记忆”这里是 Persistence 中另一个非常重要的概念。假设Thread A 用户我喜欢物理 Thread B 用户给我推荐学习内容Thread B 能不能知道用户喜欢物理如果只使用 Checkpointer不适合。因为 Checkpointer 主要是Thread A ↓ 自己的 State而 Store 是Store │ ┌─────────┼─────────┐ ↓ ↓ ↓ Thread A Thread B Thread C │ │ │ └────共享长期信息───┘Store 保存的是应用定义的 Key-Value 数据可以跨 Thread 使用。官方给出的典型例子包括用户偏好用户事实累积知识共享知识。七、Checkpointer vs Store一定要分清CheckpointerStore保存什么Graph State 快照应用定义的数据范围单个 Thread跨 Thread类型短期记忆长期记忆典型用途对话连续、暂停恢复用户偏好、事实、知识核心标识thread_idnamespace key核心问题“我这次执行到哪了”“关于这个用户我长期知道什么”这张表基本就是整个 Persistence 文档的核心。([Docs by LangChain][1])八、两者组合起来才是真正的 Agent Memory这是我认为最值得记住的架构Agent │ ┌────────┴────────┐ ↓ ↓ Checkpointer Store │ │ 当前 Thread 跨 Thread │ │ ┌─────┴─────┐ ┌────┴─────┐ ↓ ↓ ↓ ↓ 当前状态 历史状态 用户偏好 用户知识 │ │ │ │ └───────────┴──────┴──────────┘ ↓ LLM因此Memory 并不是 LLM 自己拥有的一项神奇能力而是 Agent Runtime 通过 Persistence 为 LLM 提供可持续访问的信息。这与之前讨论的Context vs Memory是直接对应的。九、Persistence 与 LangGraph Agent Loop 的关系把之前面研究的 Tool Calling、Thinking in LangGraph、Workflow/Agent 串起来就非常清楚了START ↓ LLM ↓ Tool Calling ↓ Tool ↓ Tool Result ↓ State ↓ Checkpoint ↓ LLM ↓ 是否继续 ↙ ↘ 否 是 ↓ ↓ END Tool ↓ ...所以LLM决定下一步Tool执行动作Node执行单元State当前工作记忆Checkpoint把执行状态保存下来Thread串起一次持续的执行上下文Store保存跨 Thread 的长期信息Loop让 Agent 持续行动这也是为什么 LangGraph 不只是一个“流程图框架”而是一个面向有状态、长时间运行 Agent 的执行运行时。十、生产环境还要考虑什么官方 Persistence 页面还特别列了几个实际问题。1. InMemory 不适合生产MemorySaver / InMemorySaver数据存在 RAM 中进程重启后 checkpoint 会丢失。生产环境可以使用PostgreSQLSQLite本地开发MongoDB 等持久化实现。([Docs by LangChain][1]) 2. Checkpoint 会不断增长长对话会产生大量 checkpointRun 1 → Run 2 → Run 3 → ... Run 10000 → 会增加存储成本延迟因此需要考虑 pruning / retention。官方也提供了DeltaChannel可以针对适合的场景只保存增量数据以降低 checkpoint 大小。([Docs by LangChain][1]) 3. 持久化的可靠性可以分级Checkpointer 支持三种 durability modeexit ↓ async ↓ sync从低到高性能 ↑ ←→ 持久性/可靠性 ↑exit执行退出时才持久化async异步持久化sync进入下一步前同步完成持久化。十一、最终知识框架如果把这篇文档压缩成一张知识图我建议记住LangGraph Persistence │ ┌──────────┴──────────┐ ↓ ↓ Checkpointer Store │ │ Thread-scoped Cross-thread │ │ 短期记忆 / 状态 长期记忆 │ │ ┌──────┼──────┐ ┌──────┼──────┐ ↓ ↓ ↓ ↓ ↓ ↓ Memory HITL Recovery 偏好 事实 知识 │ ├── Checkpoint ├── Time Travel ├── Replay └── Fault Tolerance一句话总结LangGraph Persistence Checkpointer 管“当前这条执行链的状态”Store 管“跨执行链长期存在的信息”。再往 Agent 工程化的角度提升一层Workflow 解决“怎么执行”Agent 解决“下一步做什么”State 解决“当前知道什么”Persistence 解决“执行中断后还能不能接着做以及跨对话还能记住什么”。这几篇文档连起来已经形成了一个非常完整的 LangGraph 核心认知链Workflows Agents → Thinking in LangGraph → State → Tool Calling → Persistence → Agent Loop。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑