一文读懂 Memory:让 AI 记住你
AI 的记忆(Memory)到底是什么?为什么它不等于"更大的上下文窗口"?这篇讲透记忆的四种类型、一个记忆系统真正在做的四件事,拆解五套经典架构(Generative Agents 的记忆流、MemGPT 的"LLM 操作系统",以及 Voyager、MemoryBank、HippoRAG),对比 ChatGPT / Claude / Mem0 的真实实现,最后回答最难的两个问题:记什么、忘什么。附自查清单。
大模型有个容易被忽略的事实:它天生没有记忆。 每次调用,模型都从一张白纸开始,你这次说的话、上次聊的内容,它一概不记得——除非你把这些内容再一次塞进上下文窗口。你在 ChatGPT 里感受到的"它记得我",不是模型的能力,而是外面套了一层记忆系统在替它记、替它取。
这篇讲的就是这层系统:它由什么构成、怎么工作、业界到底怎么做的。面向工程师和技术决策者,从概念到架构到实战,附照抄清单。它可以看作《上下文工程》那篇的续集——如果说上下文工程管的是"这一步窗口里放什么",那记忆管的就是"跨越时间,什么值得被记住、又该在何时被想起"。
一、先厘清:记忆 ≠ 更大的上下文窗口
这是最常见的误解。很多人以为"上下文窗口从 8K 涨到 1M,记忆问题就解决了"。不对。
上下文窗口是工作台,记忆是仓库。区别有三:
- 持久性:上下文窗口是易失的,一次对话结束就清空;记忆要跨会话、跨天、跨月存在。
- 容量:窗口再大也有上限,而且越塞越满、信噪比越低效果越差(context rot,见《上下文工程》);仓库理论上无限。
- 成本:窗口里的每个 token 每一步都要重新计算、重新收费;仓库里的信息静静躺着,只在需要时取一小部分进窗口。
所以记忆系统的核心任务,不是"把所有历史都留在窗口里",而恰恰相反:把信息挪到窗口之外存起来,只在恰当的时机取回恰当的一小块。 一句话——
记忆的本质,是"用窗口外的存储,换窗口内的稀缺注意力"。
这也解释了为什么"无限长上下文"永远替代不了记忆:就算窗口能装下你一年的对话,模型也读不好那么长,成本更是天文数字。仓库和工作台,是两种东西。
二、人脑给的地图:记忆的几种类型
AI 记忆的分类,几乎照搬了认知科学对人类记忆的划分。记住这张图,后面所有架构都能对号入座。
短期记忆(Short-term / Working Memory):当下任务用的"工作内存",相当于电脑的 RAM。在 LLM 里,它基本就等于当前上下文窗口——正在进行的这轮对话、刚拿到的工具返回。易失、容量有限、速度快。
长期记忆(Long-term Memory):跨会话保留的信息,相当于硬盘。它又细分为三种,这个区分很重要:
| 类型 | 存什么 | 例子 | 类比 |
|---|---|---|---|
| 情景记忆(Episodic) | 具体发生过的事件、经历 | "上周你帮我订了去伦敦开会的机票" | 个人日记 |
| 语义记忆(Semantic) | 抽象的事实、概念、偏好 | "用户是软件工程师,偏好简洁回答" | 知识库 |
| 程序记忆(Procedural) | 学会的技能、固定流程 | "处理退款要先查订单再走审批" | 肌肉记忆 / SOP |
一个好用的判断法:情景记忆回答"发生过什么",语义记忆回答"什么是真的",程序记忆回答"该怎么做"。 大多数产品今天做得最扎实的是语义记忆(记住你的偏好和事实),情景记忆次之,程序记忆最难、也最前沿——它意味着 Agent 能从经验里"学会一套做法"并固化下来。
三、一个记忆系统真正在做的四件事
抛开花哨的名词,任何记忆系统都在循环做四件事。这四个动词,是你评估任何方案的骨架:
1)写入 / 编码(Encode)——从这次交互里,判断"哪些值得记",并把它整理成一条可存储的记忆。难点是取舍:全记会污染未来,漏记会失忆。
2)存储(Store)——把记忆放进窗口外的载体:数据库、向量库、知识图谱或纯文件。这一步决定了后面怎么检索。
3)检索(Retrieve)——下次交互时,判断"这一次该想起哪几条",把它们取进上下文窗口。取多了是噪声,取少了不够用。
4)更新 / 遗忘(Update / Forget)——记忆会过时、会冲突("他去年住上海,今年搬北京了")。系统要能修正旧记忆、淘汰无用记忆,而不是无脑堆积。
如果你读过《上下文工程》那篇会发现,这正是其中"写出(Write)"和"选取(Select)"两个操作在时间维度上的展开——写入=Write,检索=Select。记忆不是一个新东西,而是上下文工程沿着"时间轴"长出来的一条分支。
判断一个记忆系统好不好,别看它"能存多少",看它这四步做得准不准——尤其是写入的取舍和遗忘的更新,这两步最难,也最能拉开差距。
四、几套必须知道的经典架构
记忆的经典设计不止一种。下面五个是理解一切记忆系统的骨架,每一个都钉死了一个不同的关键能力,看完你就有了一张完整的"能力地图"。
1. Generative Agents:记忆流 + 反思
2023 年斯坦福那篇著名的《Generative Agents》(让 25 个 AI 小人在虚拟小镇里自主生活)第一次把记忆架构讲得清清楚楚,至今仍是入门必读。它由三部分组成:
- 记忆流(Memory Stream):一个不断追加的、用自然语言记录的经历清单。小人看到的、听到的、说过的、做过的,全都按时间顺序记下来。
- 检索(Retrieval):不可能把整条流都塞进窗口,所以每次按当前情境打分挑选——分数是三个维度的加权和:相关性(与当前处境的语义相似度)、新近性(越久没想起分越低,按时间指数衰减)、重要性(写入时打的分,"吃了顿早饭"低、"和恋人分手"高)。
- 反思(Reflection):最点睛的一步。Agent 定期回看最近的记忆,综合出更高层的结论(从零散互动里总结出"我好像挺喜欢隔壁的 Klaus"),再作为新记忆写回流里。反思让记忆从"流水账"升级为"洞察"。
记住这三个词——记忆流、按相关性/新近性/重要性检索、反思。后来几乎所有记忆系统,都是在这个骨架上做加减法。
2. MemGPT:把 LLM 当操作系统(分层 + 自编辑)
如果说 Generative Agents 给了"检索"的范式,那 2023 年的 MemGPT(论文副标题就叫 Towards LLMs as Operating Systems,现已并入开源框架 Letta)给了"分层管理"的范式。它的洞察很妙:上下文窗口就像操作系统的物理内存(RAM),窗口外的存储就像磁盘;操作系统靠"分页"换入换出制造"内存无限大"的错觉——LLM 也可以。
| 层级 | 位置 | 类比 | 说明 |
|---|---|---|---|
| 核心记忆(Core) | 窗口内 | RAM | 最关键、必须随时可见的信息(用户身份、当前任务、关键偏好)。常驻上下文,容量小、最金贵,模型可自己改写增删——相当于它"始终记在脑子里"的东西 |
| 回溯记忆(Recall) | 窗口外 | 磁盘缓存 | 系统自动记录的完整对话历史,存在窗口外、可按语义或关键词搜索。平时不占实时上下文,需要时才把相关片段调回来——回答"我们之前聊过什么" |
| 归档记忆(Archival) | 窗口外 | 冷存储 | Agent 主动写入的任意长期知识(提炼出的事实、外部文档、笔记,不限于对话),容量近乎无限,靠工具调用检索——回答"关于这个用户/项目,我沉淀了哪些知识" |
最关键的设计是:模型拥有"编辑自己记忆"的工具——核心记忆快满时,它自己决定把哪条挪去归档、把哪条调回核心。这就把"记忆管理"从人写死的规则,变成了模型自己的能力。这套"分层 + 自编辑"思路直接影响了产品级实现:比如 Anthropic 在 2025 年 9 月给 Claude 加的"记忆工具(memory tool)"——给模型一个专属文件目录,让它自己增删改查、跨会话沉淀知识;配合"上下文编辑(自动清理窗口里过期的工具调用)",官方数据显示 100 轮网页搜索评测里削减 84% 的 token、比基线提升 39%。同一个骨架,产品化的样子。
3. 另外三个各钉一个关键点:Voyager、MemoryBank、HippoRAG
- Voyager——技能库就是"程序记忆"。 2023 年这个在《我的世界》里自主探索的智能体,让模型为每个新任务生成可执行代码,把跑通的程序按自然语言描述存进不断增长的"技能库";下次遇到相似任务直接检索、组合旧技能,而不从头再想。这正是第二节说的程序记忆——存的不是"事实",而是"会做的本事"。
- MemoryBank——给记忆装上"遗忘曲线"。 它把心理学的艾宾浩斯遗忘曲线搬进 AI:每条记忆有"强度",被想起就加强、长期不碰就衰减,检索时综合语义相似度和这个"留存分"。它给第七节"忘什么"提供了优雅的机器答案——不是一刀切删除,而是像人一样自然淡忘、又能被唤醒。
- HippoRAG——照着海马体来建图。 它借用神经科学的"海马体索引理论":把 LLM 当"新皮层",另建一张知识图谱当"海马体索引",检索时用类似 PageRank 的算法在图上联想。它是图记忆这条路线里最有理论野心的一支——擅长把散落的线索串联起来回答问题。
把五个放一起,就是一张记忆设计的"能力地图":Generative Agents 管检索与反思、MemGPT 管分层调度、Voyager 管技能积累、MemoryBank 管遗忘、HippoRAG 管联想。 你缺哪块能力,就去看押注那块的设计。
五、产品里的记忆,长什么样
把架构落到你天天在用的产品上:
ChatGPT:两层记忆。一层是保存的记忆(Saved Memories)——一份你能查看、能删的显式事实清单("我是素食主义者"),模型自动往里写;另一层是 2025 年 4 月上线的引用聊天历史(Reference Chat History)——不列清单,而是隐式地从你过往所有对话里抓取模式,让回答更贴合你。两层都能在设置里单独关掉,临时对话则不读也不写记忆。2026 年 OpenAI 又给它加了后台自动整理记忆的机制,让记忆随时间越来越准。
Claude:走的是上一节说的"文件式记忆工具 + 上下文编辑"路线,更偏开发者可控——记忆存在你自己的基础设施里,你完全掌握数据。
Gemini:Google 也给 Gemini 加了记忆——既能记住你在设置里保存的个人信息,也能选择性地参考你过往的对话来个性化回答,同样支持查看、编辑与关闭。
共同的产品哲学:记忆不是黑箱。让用户看得见、改得动、关得掉,正在成为标配——因为记忆一旦记错、记了不该记的,体验和信任的崩塌是双倍的。
六、工程落地:三条主流技术路线
真要自己做一套记忆系统,存储和检索这块,业界基本是三条路线(常常混用):
路线一:全量 / 摘要(Full-context / Summary) 最朴素:把历史全部或摘要后塞回窗口。简单,但长了就撞上 context rot,又慢又贵。适合短周期、轻量场景。
路线二:向量检索(Vector / RAG-style) 把每条记忆转成向量存进向量库,用时按语义相似度检索最相关的几条。这是目前最主流的做法。开源框架 Mem0 是代表:它不存原始对话,而是用 LLM 从对话里抽取关键事实再存,检索时只取相关记忆。在业界常用的长程对话记忆基准 LOCOMO 上,Mem0 官方报告称其准确率比 OpenAI 的记忆方案高约 26%、延迟低约 91%、token 成本省约 90%——核心就赢在"只喂相关的一小撮,而不是全量历史"。
路线三:知识图谱(Graph) 把记忆存成"实体—关系"的图(张三—就职于—某公司)。擅长处理多跳推理和关系随时间变化("他跳槽了"只需改一条边)。表达力强,但构建和维护成本高。
| 路线 | 优势 | 软肋 | 适合 |
|---|---|---|---|
| 全量/摘要 | 简单、无信息损失 | 长了就崩、贵 | 短会话 |
| 向量检索 | 主流、平衡、易上手 | 弱于关系/时序推理 | 大多数产品 |
| 知识图谱 | 关系与时序推理强 | 构建维护重 | 复杂领域、强关系场景 |
实务上没有银弹,成熟系统往往向量为主、图谱为辅、摘要兜底。
七、最难的两件事:记什么,忘什么
存储和检索是工程,真正的难点是两个判断题:
难题一:写什么? 不是每句话都值得记。乱记会带来两种灾难:一是噪声——把无关琐事都记下来,未来检索时全是干扰;二是记忆污染(memory poisoning)——一个早期的错误结论被写进长期记忆,之后每次都被取回、一路将错就错,甚至成为被攻击的入口(有人专门研究往记忆里"投毒")。所以写入必须有取舍、去重、和冲突检测。
难题二:忘什么? 记忆会过时、会矛盾。用户去年说"我在读研",今年毕业了;上个月喜欢的东西这个月厌了。一个只增不减的记忆库,迟早自相矛盾。好的系统需要更新(用新记忆覆盖旧的)、衰减(长期不用的自然淡出)、乃至主动遗忘(用户要求删除,这也是合规刚需)。
做记忆系统,"存"是入门,"取"是及格,"忘"才是高手。会遗忘的记忆才是活的记忆——否则你得到的不是一个越来越懂你的助手,而是一个背着一身过期偏见、越来越固执的包袱。
八、开发者想加记忆:别自己造轮子,先看这几个方案
好消息是,到 2026 年,"给 Agent 加记忆"已经不用从零写起——一批成熟的开源框架把上面的路线都封装好了。想动手的开发者,主流选择大致是这几个(都可自托管):
| 方案 | 一句话定位 | 底层路线 | 适合 |
|---|---|---|---|
| Mem0 | 最快上手、最流行 | 向量 + 图 + KV 混合 | 通用个性化、想快速见效 |
| Zep / Graphiti | 时序推理最强 | 时序知识图谱 | 事实随时间变化的场景 |
| Letta(原 MemGPT) | 有状态 Agent 运行时 | 分层(core/recall/archival) | 需要"会自管记忆"的 Agent |
| Cognee | 检索模式最丰富、可自改进 | 图 + 向量 + 关系混合 | 复杂领域、企业知识抽取 |
| LangMem | LangGraph 原生 | 依托 LangGraph 存储 | 已在用 LangGraph 的项目 |
| 各平台内置(如 Claude memory tool) | 不想自己搭 | 文件式 / 托管 | 只想开箱即用 |
选型别记参数,记这条主线:你最缺的是什么能力,就选押注那个能力的框架——要快就 Mem0,要处理"张三跳槽了"这种时序变化就 Zep/Graphiti,要一个能自己管理记忆的有状态 Agent 就 Letta。
而 2026 年最出圈的一个新项目,恰恰是对第七节"记什么、忘什么"给出了一个反向的答案——MemPalace。它由《生化危机》女主角 米拉·乔沃维奇(Milla Jovovich) 和工程师 Ben Sigman 合作、用 Claude Code 开发,MIT 开源,2026 年 4 月发布后两天就冲上 2 万多星。它的出发点是一句抱怨:"我受够了 AI 替我决定该记住什么、然后把我真正需要的上下文丢掉。"
于是 MemPalace 反其道而行,借用古老的"记忆宫殿"记忆术:把对话逐字、不做摘要地存下来,再用空间隐喻组织成厅(wings,按人和项目)→ 房间(rooms,按主题)→ 抽屉(drawers,放原文),检索时能"分区"精确查找,而不是在一大团向量里瞎捞。它用混合检索(关键词加权 + 时间邻近),在 LongMemEval 基准上纯检索就拿到 96.6% 的 recall@5。存储后端可插拔(默认 ChromaDB,也支持 SQLite/Qdrant/pgvector),能对接 Claude Code、Cursor 等。
MemPalace 的价值不只在于"一个女明星写了个爆款开源项目",而在于它把第七节那个哲学分歧摆上了台面:记忆到底该由 AI 替你自动裁剪,还是由你自己保留全部、掌控结构? 前者省心,后者可控——这没有标准答案,但它提醒你:"让 AI 决定记什么"本身,就是一个需要你亲自拍板的设计决策。
九、照抄即用:记忆系统自查清单
- 我分清了**短期记忆(窗口内)和长期记忆(窗口外)**吗?没把"更大的窗口"当成记忆的答案吧?
- 长期记忆里,语义 / 情景 / 程序三类,我需要哪几种?各用什么存?
- 写入有取舍吗?还是把所有对话无脑全存?有没有去重和冲突检测?
- 检索是按相关性/新近性/重要性打分挑选,还是全量塞回窗口?
- 有没有更新和遗忘机制?旧的、错的、过期的记忆会被修正或淘汰吗?
- 用户能看见、修改、删除、关闭自己的记忆吗(体验 + 合规)?
- 存储选型对了吗——向量够不够,需不需要图谱处理关系与时序?
- 有没有防记忆污染?错误结论被写进长期记忆后会不会一路带偏?
- 有没有像 MemGPT 那样考虑分层,或像 Generative Agents 那样加反思,让记忆从流水账升级为洞察?
模型会越来越聪明,窗口会越来越大。但只要"注意力有限、信息会过时"这两条还成立,能不能记住你、并且在对的时候想起对的事,就永远是一套需要认真设计的系统,而不是模型白送的能力。
参考
- Packer et al.,MemGPT: Towards LLMs as Operating Systems(2023;现为开源框架 Letta)
- Park et al.,Generative Agents: Interactive Simulacra of Human Behavior(2023,记忆流 / 检索 / 反思)
- Wang et al.,Voyager: An Open-Ended Embodied Agent with Large Language Models(2023,技能库 / 程序记忆)
- Zhong et al.,MemoryBank: Enhancing LLMs with Long-Term Memory(2023,艾宾浩斯遗忘曲线)
- Gutiérrez et al.,HippoRAG: Neurobiologically Inspired Long-Term Memory for LLMs(2024,海马体索引 / 图记忆)
- Mem0,Building Production-Ready AI Agents with Scalable Long-Term Memory(2025,LOCOMO 基准);开源仓库 mem0ai/mem0
- 开源记忆框架:Zep / Graphiti、Letta、Cognee、LangMem
- MemPalace,GitHub 仓库(2026,米拉·乔沃维奇 + Ben Sigman,"记忆宫殿"式);Forbes 报道
- Anthropic / Claude,Managing context on the Claude Developer Platform(2025,memory tool + context editing)
- OpenAI,Memory and new controls for ChatGPT 与 Reference chat history(2025)
- Memory in the Age of AI Agents: A Survey(2025,综述与论文清单)