创建时间: 2026-03-29最后更新: 2026-09-10作者: yangbo(9e98781e0)
1. 两种记忆
上一篇文章使用 checkpointer + thread_id 让 Agent 记住同一段会话中的消息。这解决的是线程内的短期记忆:只要继续使用同一个 thread_id,下一轮就能恢复前面的消息。
但实际应用还会遇到两个问题:
- 服务重启后,原来的会话能否继续
- 用户开启新会话后,Agent 能否继续使用他的偏好和重要事实
第一个问题与checkpoint 存在哪里有关。把 checkpoint 放在数据库中,服务重启后才能恢复同一段会话。第二个问题与长期记忆如何跨线程共享有关,例如保存“用户偏好简短回答”或“用户正在学习 LangChain”。
LangGraph 为这两类数据提供了两个不同的抽象:
| 数据 | 解决的问题 | 抽象 | 常用标识 |
|---|---|---|---|
| 短期状态 | 当前线程之前发生了什么 | checkpointer | thread_id |
| 长期记忆 | 用户跨线程需要保留什么 | store | namespace + key |
这里有一个容易混淆的地方:长期记忆描述的是数据的使用范围,持久化描述的是数据的存储方式。InMemoryStore 可以保存跨线程数据,但进程结束后会丢失;PostgreSQL Store 可以同时满足跨线程使用和进程重启后恢复。
正在加载图示...
正在验证登录状态
请稍候,验证完成后将继续显示文章内容