上一篇讲了短期记忆(一次会话内的)。这一篇讲长期记忆——跨会话的记忆,也是 Phase 5 的收尾。

短期记忆会话结束就没了。但有些信息该跨会话持久:用户的长期偏好、历史交互的结论、积累的知识。换个会话、换个时间,Agent 还应该记得。这就是长期记忆。

长期记忆要解决什么

短期记忆的边界是「会话结束即过期」。但有些场景需要跨会话:

  • 用户偏好:用户上次说过「我喜欢简洁回答」,这次新会话也该记得
  • 历史结论:上周会话里得出的方案结论,这次该能引用
  • 积累的知识:Agent 跨多次交互学到的经验

长期记忆:跨会话持久

这些信息放在短期记忆(thread 内)不合适——会话结束就丢了。它们需要一个跨 thread 的、持久的存储。这就是 LangGraph Store。

LangGraph Store:跨会话的存储

LangGraph Store 是一个跨 thread 的持久存储。和 checkpointer(管 thread 内的短期记忆)不同,Store 管的是跨 thread 的长期信息

Store vs Checkpointer

Checkpointer Store
范围 thread 内(会话内) 跨 thread(跨会话)
存什么 完整 state 快照 按需提取的长期信息
生命周期 会话结束可清 长期持久

Store 不是把整个会话存下来(那是 checkpointer 的活),而是有选择地存「值得长期记的信息」——比如「这个用户偏好简洁回答」。

长期记忆怎么用

长期记忆的使用也是「存 + 注入」的模式(和短期记忆一样的框架,第 35 篇):

:Agent 在交互中,判断哪些信息值得长期记,写进 Store。比如用户表达了偏好,Agent 把「用户偏好简洁」存进 Store(按用户 ID 索引)。

注入:新会话开始时,beforeModel middleware 从 Store 取出这个用户的长期记忆,注入到 context。于是 Agent「记得」这个用户的偏好。

长期记忆的存与注入

注意:长期记忆的注入是有选择的——不是把整个 Store 倒进 context(那会爆),而是取「和当前相关」的部分。这又回到第 22 篇的 Context Engineering——精准投放,不多塞。

长期记忆vs RAG:像不像

你可能觉得长期记忆听起来像 RAG——都是「按需取相关信息」。确实有相似:都是「从大量信息里取相关的塞进 context」。

区别在于信息来源和更新方式

  • RAG:从静态知识库取(文档加载进来的,相对固定)
  • 长期记忆:从动态交互历史取(Agent 在交互中不断写入,持续演进)

长期记忆 vs RAG

有些实现甚至把长期记忆做成「向量化后存进 Store,用时语义检索」——本质上是用 RAG 的技术管理长期记忆。两者技术相通,但定位不同。

一个判断:不是所有 Agent 都需要长期记忆

长期记忆有成本:要维护 Store、要决定存什么、要管理注入。不是所有 Agent 都需要。

Agent 类型 需要长期记忆吗
一次性问答(无用户体系) 不需要
单会话助手(不需跨会话) 不需要
个性化助手(记住用户偏好) 需要
长期协作 Agent(积累经验) 需要

什么时候需要长期记忆

判断标准:这个 Agent 要不要「跨会话地记住特定用户/特定上下文」。要,才上长期记忆;不要,短期记忆(checkpointer)就够。

收束:Phase 5 完成

这一篇讲完,Phase 5(Tools/MCP/记忆)就完成了。回顾这 6 篇:

  • 32 工具调用:@tool 与 bind_tools
  • 33 MCP 协议:跨应用共享
  • 34 MCP 三能力:Tools/Resources/Prompts
  • 35 记忆是什么:state + middleware
  • 36 短期记忆:checkpointer 管会话
  • 37 长期记忆:Store 跨会话

到这里,Agent 的「手」(工具)和「脑」(记忆)都讲完了。下一篇开始最后的 Phase 6——生产化收束:可观测、评估、部署,以及全系列总结。


关于十三Tech

我是十三,All in AI Agent 方向的架构师,专注 AI 工程实践。我相信 AI 是程序员的最佳搭档。

如果你想跟完这套「图解 LangChain」,欢迎关注公众号 「十三Tech」。全系列 42 篇,会按认识基础、LangGraph 状态机、Agent 与 middleware、RAG 检索、Tools/MCP/记忆、生产化收束这条线更新。

十三Tech公众号二维码