


























很多人在学习 LangChain 或 LangGraph 时,都会看到 Checkpoint(检查点)。
第一次看到,很容易理解成:
"是不是就是保存聊天记录?"
实际上,并不是。
Checkpoint 保存的不是简单的聊天内容,而是:
Agent 在某一时刻的完整运行状态(State)。
可以把它理解成:
游戏存档(Save Game)
而不是聊天记录。
假设一个 AI Agent 正在执行一个复杂任务。
例如:
用户:
帮我分析今年销售数据,
然后生成 PPT,
最后发邮件给老板。
Agent 开始执行:
Step1
读取数据库
√
-----------------
Step2
分析数据
√
-----------------
Step3
生成图表
√
-----------------
Step4
生成PPT
√
-----------------
Step5
发送邮件
×(失败)
如果没有 Checkpoint。
下一次只能:
重新开始
整个流程全部执行。
而有了 Checkpoint。
可以:
恢复到
Step4
继续执行。
这就是 Checkpoint 最大的作用。
很多人误认为:
Checkpoint 就是:
聊天记录
实际上远不止这些。
一般会保存:
State
├── Messages
├── Tool Calls
├── Tool Results
├── Variables
├── Next Node
├── Graph State
├── Context
└── Metadata
例如:
Agent
↓
调用Tool
↓
Tool返回
↓
LLM继续思考
Checkpoint 会记录:
Tool 已经调用过
不用重复调用
更准确来说:
Checkpoint 更像:
CPU
↓
寄存器
+
内存快照
或者:
游戏存档
而不是:
聊天历史
聊天记录只是其中一部分。
假设:
用户:
帮我查询订单123456,
如果未发货就申请退款。
Agent:
Step1
Query Order
↓
返回
未发货
Checkpoint:
可能类似:
{
"messages":[...],
"current_node":"refund",
"tool_calls":[
"query_order"
],
"tool_result":{
"status":"未发货"
}
}
然后继续:
Refund Tool
如果程序崩了。
恢复:
不用重新查订单。
直接:
Refund
LangGraph 本质就是:
Graph
Node
↓
Node
↓
Node
Checkpoint 保存:
Graph 当前执行到哪。
例如:
Node1
↓
Node2
↓
Node3
↓
Node4
Checkpoint:
current_node
Node3
恢复:
直接:
Node3
↓
Node4
LangGraph 官方一直强调:
Checkpoint 保存的是:
State
例如:
State
{
messages,
documents,
summary,
tool_results,
user_profile,
current_step
}
不是:
聊天内容
而是:
整个 Agent 的状态。
答案:
能看,但通常不建议直接阅读。
Checkpoint 本质通常是:
{
"messages":[...],
"tool_calls":[...],
"graph_state":{...},
"next":"agent",
"metadata":{...}
}
虽然是 JSON。
但是:
几百KB
甚至几MB
里面:
Message
Tool
State
Context
全部混在一起。
开发人员可以调试。
普通人基本不会直接阅读。
所以:
Checkpoint 更适合程序恢复,而不是人工查看。
很多人容易混淆:
Memory
Checkpoint
实际上完全不是一个东西。
| Memory | Checkpoint |
|---|---|
| 长期记忆 | 当前状态 |
| 保存用户信息 | 保存 Agent 状态 |
| 可以跨很多天 | 一次任务生命周期 |
| 用户画像 | Graph 执行状态 |
| AI 知识 | AI 运行现场 |
举例:
Memory:
用户:
我喜欢苹果手机。
保存:
Preference
以后还能用。
Checkpoint:
当前执行到了:
Tool3
任务结束。
Checkpoint 可以删除。
适用于:
长流程Agent
Workflow
审批系统
Research Agent
Coding Agent
客服工单
自动化流程
多Agent协作
例如:
AI招聘
↓
读取简历
↓
评分
↓
生成报告
↓
发送邮件
如果:
发送邮件失败
恢复:
不用重新评分。
LangGraph 已经支持多种 Checkpointer。
例如:
MemorySaver
开发环境:
内存
生产环境:
SQLite
Redis
Postgres
MongoDB
都可以。
本质就是:
保存:
State Snapshot
开始任务
│
▼
Checkpoint1
│
▼
Checkpoint2
│
▼
Checkpoint3
│
▼
任务完成
│
▼
删除(可选)
也可以一直保存。
方便:
Replay。
LangChain / LangGraph 中的 Checkpoint,本质上是一种 Agent 状态快照(State Snapshot),而不是聊天记录。
它记录的是 Agent 在某一时刻的执行现场,包括消息、工具调用结果、当前节点、变量、上下文等信息,使 Agent 能够在程序中断、任务暂停或人工介入后,从之前的位置继续执行,而无需重新开始。
| 概念 | 作用 |
|---|---|
| Chat History | 保存聊天内容 |
| Memory | 保存长期记忆、用户画像、历史偏好 |
| Checkpoint | 保存 Agent 当前执行状态 |
| State | Agent 当前所有运行数据 |
| Snapshot | 某一时刻 State 的完整快照 |
可以用一句话概括:
Memory 解决的是"AI 记住了什么",Checkpoint 解决的是"AI 当前执行到了哪里"。
因此,可以把 Checkpoint 理解为 Agent 能读懂的运行状态快照。它主要服务于程序恢复、任务续跑、工作流调试和多 Agent 协作,而不是为了让人阅读或理解。
补充一点容易混淆的概念,也是很多面试会问的:
State(状态):当前内存中的运行状态,是"活的"。
Checkpoint(检查点):某一时刻 State 的持久化快照(Snapshot)。
Memory(记忆):跨多个任务长期保留的信息,如用户画像、偏好、历史摘要等。
三者关系可以理解为:
Agent Running
│
▼
Current State(运行中的状态)
│
├── 写入 Checkpoint(保存现场,可恢复)
│
└── 提炼部分信息写入 Memory(长期记忆,可跨任务)
这个区别是理解 LangGraph 状态管理体系的关键。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。