Tools/MCP 讲完了(Agent 的「手」)。这一篇转到 Agent 的「脑」——记忆。这一篇先讲清楚:LangChain 的记忆到底是什么。
很多人觉得「记忆」是个高级、神秘的功能。其实拆开看,它就是前面学过的两个东西的组合:state(存什么)+ middleware(怎么用)。没有什么新机制。
记忆要解决什么
先明确记忆要解决的问题。模型本身是无状态的(第 10 篇讲过)——它不记得上一轮说了什么,每次调用只看传入的 messages。
所以「Agent 的记忆」,本质上就是维护并使用那些模型自己记不住的信息。具体两类:
- 短期记忆:当前这次对话的上下文(前面聊了什么)
- 长期记忆:跨对话的持久信息(用户的长期偏好、历史结论)
记忆 = State + Middleware
LangChain 实现记忆,靠的是两个前面学过的东西:
State(第 10 篇)——「存什么」。记忆的内容存在 state 里。短期记忆就是 state 里的 messages(当前对话历史);长期记忆存在外部 store(下一篇讲)。
Middleware(第 19、20 篇)——「怎么用」。光存了不够,还要在「模型调用前」把它注入进去,模型才能「记得」。这个注入,就是 beforeModel middleware 干的事(第 20 篇讲过)。
把这两个一组合,记忆就实现了:
- 存:对话历史、用户偏好等存进 state(或长期 store)
- 注入:beforeModel middleware 在模型调用前,把要记的内容塞进 messages
- 模型看到:模型这次调用就能「记得」之前的事
没有什么神秘机制——就是「存」+「调模型前塞进去」。
短期记忆:messages 的维护
短期记忆最直接的实现:维护 state 里的 messages 列表。
每轮对话,把用户的话、模型的话加进 messages(用追加 reducer,第 13 篇)。下次调模型,beforeModel 把整个 messages 传给模型——模型就「记得」了这次对话的历史。
第 10 篇说「模型无状态,记忆靠维护 messages」——现在加上 middleware 视角就完整了:维护是 state 的活,注入是 middleware 的活。
上下文长了怎么办:Context Engineering
短期记忆有个问题:对话越久,messages 越长,最终超窗口。怎么处理?
答案是第 22 篇讲的 Context Engineering——它其实就是「记忆管理」的一部分。压缩、裁剪、筛选 messages,让模型始终在一个可控的 context 上工作,本质就是管理短期记忆。
所以第 22 篇的 Context Engineering,和这里的记忆,是同一件事的两面:Context Engineering 讲「怎么管」,记忆讲「为什么管」(因为模型无状态,要靠维护 messages)。
长期记忆:下一篇讲
短期记忆管「这次对话」,长期记忆管「跨对话」。长期记忆的实现和短期不同——它存在外部 store(不是 state 里的 messages),下一篇(37)专门讲。
这一篇先把「记忆 = state + middleware」的框架立住,短期记忆讲透,长期记忆下一篇展开。
收束:记忆不神秘,是组合
这一篇讲了记忆的本质:
- 记忆要解决「模型无状态」的问题
- 两类:短期(当前对话)、长期(跨对话)
- 实现 = State(存什么)+ Middleware(怎么注入)
- 短期记忆就是维护 messages,用 beforeModel 注入
- Context Engineering 是短期记忆管理的一部分
- 没有神秘机制,全是前面学的东西的组合
下一篇讲短期记忆的细节——checkpointer 怎么管一次会话。
关于十三Tech
我是十三,All in AI Agent 方向的架构师,专注 AI 工程实践。我相信 AI 是程序员的最佳搭档。
如果你想跟完这套「图解 LangChain」,欢迎关注公众号 「十三Tech」。全系列 42 篇,会按认识基础、LangGraph 状态机、Agent 与 middleware、RAG 检索、Tools/MCP/记忆、生产化收束这条线更新。

