P3:Agent 记忆系统设计
Easy Data x AI 课程 · 道篇 · 第三期
给 Agent 加记忆,难的不是“存”——难的是“忘”。
开场:那个永远记不住你的同事
想象你公司新来了一个助理,聪明、勤快、有问必答。你第一天告诉他:“我负责海外市场,汇报对象是VP,所有文档请用英文写。”他干得很好。
第二天你找他帮忙写一份报告。他问你:“请问你负责什么业务?汇报对象是谁?需要用什么语言?”
你又说了一遍。第三天,同样的问题。第四天,还是一样。
你会怎么想?这个人是不是有什么问题?
不,他没有任何问题——除了一个:他每天早上醒来,都会彻底忘记前一天发生的所有事情。
这就是今天绝大多数 AI 助手的真实状态。
你用了三个月的 ChatGPT、Claude 或者任何 AI 工具。你告诉过它你是做什么的、你喜欢什么样的回答风格、你的项目背景是什么。但每次开一个新对话,一切归零。你不得不重新自我介绍,重新解释上下文,重新设定偏好。
它不是变笨了——它每次都一样聪明。问题是,它根本不记得你。
这不是一个小小的体验瑕疵。这是 AI 从“工具”变成“助手”的根本障碍。一个不记得你的助手,永远只能提供通用的、标准化的服务。而一个记得你的助手,才能真正理解你、适应你、越用越好用。
今天这节课,我们来拆解这个问题:为什么 AI 会“失忆”?记忆系统应该怎么设计?以及——为什么这件事最难的部分,不是让 AI 记住,而是让 AI 学会忘记。
第一部分:为什么 AI 助手会“失忆”
在 F1 中我们讲过,大模型有一个上下文窗口——它一次能处理的信息容量。你可以把它想象成一张工作台:所有对话内容都摊在这张台子上,模型看着台上的内容来回答你的问题。
关键在于:每次新对话开始,这张工作台会被彻底清空。
上一次对话中你说的所有话、提供的所有背景、表达的所有偏好——全部消失。不是模型“忘了”,而是那些信息根本没有被保存到任何地方。工作台清空了,新的对话就是一张白纸。
你可能会说:“那现在不是有些 AI 产品已经有记忆功能了吗?比如 ChatGPT 的 Memory。”没错,但这恰恰证明了一件事——记忆不是大模型自带的能力,而是产品团队在模型之外额外建造的系统。模型本身没有任何地方可以存储跨对话的信息,必须有一个外部的数据系统来承担这个角色。
这意味着什么?意味着 “AI 没有记忆”本质上是一个数据问题——不是模型不够聪明,而是没有地方存用户的数据。
这和 F1 中我们讨论的“个性化盲区”是同一个根因。大模型只有训练数据,没有你的数据。记忆系统要解决的,就是在模型之外,为每个用户建立一个持久的数据层。
那么,这个数据层应该存什么?怎么组织?我们需要一个框架。
第二部分:Agent 记忆的分类框架
业界已经形成了一套被广泛接受的分类方法,来自 CoALA 论文(Cognitive Architectures for Language Agents),LangChain 等主流框架已采用。
不用被名字吓到——逻辑非常直觉。Agent 的记忆分为短期记忆和长期记忆,长期记忆又细分为三种类型。
短期记忆:桌上的便利贴
短期记忆就是当前这一轮对话的上下文。你在对话中说的每一句话、AI 回复的每一段内容,都在短期记忆里。
它的特点是:随用随取,但会话结束就没了。
类比一下:你开会时在桌上贴了一堆便利贴,记录讨论要点。会议期间随时可以瞄一眼。但会议结束你把桌子一收拾,便利贴扔了,这些信息就消失了。
大多数 AI 产品目前只有这一层记忆。这就是为什么每次新对话都要从零开始——它只有便利贴,没有档案柜。
长期记忆:跨越对话的持久存储
长期记忆是存在于会话之外的、可以持久保存的信息。这是让 AI 真正“认识你”的关键。
CoALA 框架把长期记忆分成三种,每种记的东西不一样,用途也不一样:
第一种:语义记忆——百科全书
语义记忆存储的是事实和知识。关于用户的确定性信息,比如:
- “用户是 Python 开发者”
- “用户偏好简洁的回答”
- “用户的公司是做跨境电商的”
- “用户对 Docker 比较熟悉,但对 Kubernetes 了解较少”
就像一本百科全书,记录的是“什么是什么”——确定的、可以查阅的事实。一旦记住,后续对话中用户不需要再说一遍“我是 Python 开发者”,Agent 就会自动用 Python 的例子来解释。
第二种:情景记忆——日记本
情景记忆存储的是过去的经历和交互。不是抽象的事实,而是具体发生过的事情,比如:
- “上次用户问部署问题时,Docker 方案成功解决了”
- “用户之前尝试过 Redis 缓存方案,但因为数据一致性问题放弃了”
- “用户上周讨论过要把系统从 AWS 迁移到阿里云”
就像一本日记,记录的是“发生了什么”——什么时候、在什么情况下、用了什么方法、结果怎么样。
情景记忆在实践中常以 few-shot 示例的形式发挥作用——Agent 从过往成功经验中学习,用来处理当前类似的问题。一个有情景记忆的 Agent,不会在同一个坑里让用户掉两次。
第三种:程序记忆——操作手册
程序记忆存储的是行为规则和工作流程。它规定了“遇到某种情况该怎么做”,比如:
- Agent 的 System Prompt(系统提示词)
- “用户问代码问题时,先给解释再给示例”
- “回答前先确认用户的技术背景”
- “当遇到多步骤任务时,先列出步骤大纲再逐步执行”
就像一本操作手册,规定的不是事实,而是行为方式。
重要特性:程序记忆是三种记忆中唯一一种 Agent 可以自我修改的。如果用户多次表示“回答太长了”,Agent 可以自动加一条“回答要简洁”的规则。这就是“AI 从反馈中学习”的底层机制——不是模型重新训练了,而是它修改了自己的操作手册。
值得预告:程序记忆和下一期要讲的 Skill 天然相连。Skill 本质上就是被外部化、结构化了的程序记忆。P4 再展开。
三种记忆的对比
| 记忆类型 | 存什么 | 类比 | 举例 |
|---|---|---|---|
| 语义记忆 | 事实和知识 | 百科全书 | “用户是 Python 开发者” |
| 情景记忆 | 过去的经历 | 日记本 | “上次用 Docker 方案解决了部署问题” |
| 程序记忆 | 行为规则 | 操作手册 | “回答代码问题时先解释再给示例” |

理解了这个框架,你就有了一个分析工具:当你觉得 AI 助手”不够懂我”的时候,可以问自己——它缺的是哪种记忆?
是不记得关于你的基本事实(语义记忆缺失)?是不记得之前的交互经验(情景记忆缺失)?还是不知道该怎么和你打交道(程序记忆缺失)?
不同的缺失,对应不同的产品设计决策。
第三部分:记忆的读写——什么时候记、怎么想起来
有了分类框架,下一个问题是:记忆的读和写应该怎么设计?这是产品经理需要做出的具体决策。
写入:什么时候记?
记忆写入有两种主要模式:
实时写入——Agent 在对话过程中主动判断“这条信息值得记住”。比如用户说“我下个月要去日本出差”,Agent 当场决定把这条信息存入语义记忆。
好处是透明——用户能感知到 AI 在记住什么。缺点是占用对话中的推理资源。
异步写入——对话结束后,后台任务从对话历史中提炼值得保存的信息。
好处是不干扰对话体验,缺点是写入有延迟。两种方式没有绝对优劣,有些产品会结合使用:对话中轻量实时记录,结束后深度异步提炼。
读取:怎么想起来?
记忆写入了,还得在正确的时候被想起来。这个“想起来”的过程,实际上是一个检索问题。
想象一个优秀的私人助理:你说“帮我订个餐厅”,他会想起你喜欢的菜系和常去的地点,而不会把你三个月前讨论的服务器部署方案也翻出来。他不是按时间顺序翻记忆,而是根据当前话题,自动想起最相关的信息。
Agent 的记忆读取也是同样的逻辑——基于语义搜索召回相关记忆,而不是按时间线浏览历史。
这和 P2 讲过的 RAG 是同一个检索问题。RAG 从知识库检索相关文档,记忆系统从用户历史检索相关记忆——底层机制一模一样。记忆系统又一次验证了“数据的存储与检索是 Agent 一切能力的基础”这个判断。
第四部分:记忆系统真正的设计挑战——“忘”比“存”难
到这里,你可能觉得记忆系统的逻辑已经很清晰了:分好类、存进去、需要时检索出来。听起来不太难?
真正的挑战在后面。
记什么:不是所有对话都值得存
你和 AI 助手的一次对话可能有上千字。其中有闲聊、有试探、有修改、有最终确认。如果把原始对话全部存进记忆,不出一个月,记忆库就会被大量无用信息淹没。
好的记忆系统需要提炼——从对话中萃取关键事实,而不是做对话录音。
比如一段对话中,用户先说“我在考虑用 React 还是 Vue”,后来说“算了,我们团队决定用 Vue 了”。应该记住的是“用户团队使用 Vue”,而不是把整个纠结过程都存下来。
这就像一个好的助理做会议纪要:他记录的是结论和决策,不是每一句发言的逐字稿。
忘什么:这才是最难的部分
让我们用一个具体的场景来说明这个挑战。
三个月前,你和 AI 助手聊天时说:“我特别喜欢意大利菜,尤其是正宗的拿坡里披萨。”AI 把这条偏好记住了。
过去三个月里,每次你说“帮我推荐个餐厅”,它都优先推荐意大利餐厅。体验很好。
然后昨天,你说了一句:“我最近开始吃素了。”
现在问题来了:下次你让 AI 推荐餐厅,它应该推荐什么?
如果 AI 只看最新的信息——推荐素食餐厅。但你“吃素”也许只是最近一段时间的饮食调整,并不意味着你永远不吃意大利菜了。
如果 AI 只看历史偏好——推荐意大利餐厅。但你明确说了最近在吃素,推荐一个满桌肉食的餐厅显然不合适。
最好的回答可能是推荐一家有优质素食选项的意大利餐厅,或者先问一句“你最近在吃素,要不要推荐一些素食友好的餐厅?还是想找一家有素食选项的意大利餐厅?”
一个真正优秀的私人助理会怎么做?他不会因为你说了一句“最近在吃素”就把你过去所有的饮食偏好全部删掉。他也不会无视你最新的变化继续推荐五分熟牛排。他会做的是:把旧的偏好权重降低,把新的偏好权重提高,但保留两者,在合适的时候做出综合判断。
这就是“忘”的精髓——不是删除旧数据,而是对旧信息自然降权。
让我们把这个挑战再推进一步。
你不只有饮食偏好。你的技术栈偏好在变(从 Java 转向了 Go)、你的工作职责在变(从开发转向了技术管理)、你的项目阶段在变(从架构设计进入了上线冲刺)、甚至你的沟通风格偏好在变(之前喜欢详细解释,最近赶时间只要结论)。
人是不断变化的。一个好的记忆系统必须跟得上这种变化。
如果 AI 永远用你三个月前的画像来服务你,时间越长,它反而越“不懂你”——因为它记住的是一个过去的你。这比没有记忆可能更糟:没有记忆时用户有预期(“它不认识我,我需要说清楚”),有了过期记忆后用户会困惑(“它明明记得我,但怎么推荐的都不对?”)。
所以,记忆系统的核心设计挑战不是”怎么存”——存储在技术上并不难。真正难的是设计一套时效性管理机制:什么信息应该长期保持高权重?什么信息应该随时间自然衰减?什么信息被新信息明确覆盖后应该立刻降权?

给谁看:用户信任比功能完善更重要
记忆系统还有一个容易被忽视但极其关键的维度:用户是否知道 AI 记住了什么?
想象一个场景:你和 AI 助手随口聊到“最近工作压力挺大的,考虑过要不要换工作”。两周后,AI 在一次对话中主动提起:“上次你提到在考虑换工作,需要帮你更新简历吗?”
你什么感觉?
有些用户会觉得贴心。有些用户会觉得被监视。差别在于——用户是否知道、是否预期 AI 会记住这些内容,以及用户是否有能力管理这些记忆。
这不只是一个隐私合规的问题(虽然合规确实也很重要)。这是一个产品信任设计的问题。
好的记忆系统应该让用户:
- 知道 AI 记住了什么——提供一个可查看的记忆列表
- 能够修正错误的记忆——“不,我不是 Java 开发者,这条记错了”
- 能够删除不想被记住的内容——“我不希望你记住这个”
- 理解记忆会如何影响 AI 的行为——“因为你说过偏好简洁回答,所以我精简了这段解释”
ChatGPT 的 Memory 功能在这方面做了一个不错的尝试:用户可以查看所有被记住的条目,可以逐条删除。这不是技术炫技,而是产品团队深刻理解了一件事——如果用户不信任你的记忆管理,他们宁可你什么都别记。

多 Agent 的边界:记忆该共享还是隔离?
最后一个设计挑战,是一个目前行业还没有标准答案的问题。
今天的用户越来越多地同时使用多个 AI 助手:工作中用 Cursor 写代码,日常用 ChatGPT 问问题,专业领域用某个垂直 AI 工具。每个 Agent 都在各自积累关于你的记忆。
这些记忆应该共享还是隔离?
共享的好处显而易见——你不需要在每个 AI 工具中重复自我介绍。但风险也同样明显:你在私人聊天中透露的情绪状态,你希望工作场景的 AI 也知道吗?你在一个平台上的搜索历史,你愿意另一个平台也能看到吗?
隔离虽然安全,但用户体验是割裂的:每换一个工具就要重新“教育” AI。
这个问题的本质是数据主权和隐私边界的划定,不仅仅是技术问题,更是产品哲学和商业模式的选择。目前行业还在摸索中。
但有一件事是确定的:无论最终方案是什么,记忆数据的存储和管理架构,必须从设计之初就支持灵活的隔离与共享策略。事后改造的成本会非常高。
我们的思考
在做 PowerMem(基于 seekdb 构建的 Agent 记忆系统)的时候,我们在“忘什么”这个问题上花了最多的时间。
最终,我们从认知科学中找到了一个非常有启发性的模型——艾宾浩斯遗忘曲线。
19 世纪末,德国心理学家赫尔曼·艾宾浩斯通过实验发现了一个规律:人类的记忆不是等权保存的。新学到的信息如果不被反复使用,会随时间快速衰减——一小时后只记得 44%,一天后只记得 33%,一个月后只记得 21%。但如果一条信息被反复回忆和使用,它就会从短期记忆逐渐固化为长期记忆,衰减速度大幅降低。
这其实是生物进化出的一套极其高效的信息管理策略:不是所有信息都值得永久保存。经常被用到的信息要牢牢记住,不再被用到的信息就让它自然淡去。
PowerMem 模拟了这个机制。每条记忆在被存入时都有一个初始权重,随着时间推移自然衰减。但如果这条记忆在后续对话中被再次用到或提及,权重就会回升。这意味着:
- “用户是 Python 开发者”——这条信息被反复使用,权重持续维持在高位
- “用户三个月前喜欢意大利菜”——如果之后再也没提过,权重自然降低
- “用户昨天说在吃素”——新信息,初始权重高,优先被召回
这套机制在 LOCOMO 基准测试(一个评估 Agent 长期记忆能力的标准测试集,由 Shopify 开发和维护)上取得了 78.7% 的准确率,而把所有历史对话直接塞进上下文窗口的“暴力方案”只有 52.9%——差距接近 50%。
这个对比说明了一件事:把所有信息都“记住”,效果反而不如有选择地记忆。就像一个什么都记的人,在关键时刻反而想不起重要的事;而一个善于整理记忆的人,总能在对的时候想起对的信息。
记忆检索不只是“存下来再查出来”这么简单。检索策略的设计质量,直接决定了 AI 的记忆质量。
回到那个失忆的同事
让我们回到开场那个每天忘记一切的助理。
如果有一天,他终于有了记忆能力——不仅记得你是谁、做什么,还记得上次帮你做项目时哪些方法有效、你最近的工作重心发生了什么变化、你更喜欢他用什么方式沟通。
更重要的是,他不会机械地翻出你三年前说过的每一句话。他知道哪些信息现在仍然重要,哪些已经过时了。他不会因为你去年说过“我讨厌开会”就帮你拒绝所有会议邀请——他会注意到你最近当上了部门经理,开会已经成为你工作的一部分。
这样的助理,和一个每天失忆的助理,在产品体验上是天壤之别。
而这个天壤之别的背后,不是更强的 AI 模型,而是一个设计良好的记忆数据系统。
这节课要留下的印象
如果这节课的所有内容你只记住一句话,记住这句:
记忆系统是让 AI 从“工具”变成“助手”的分水岭。难的不是“存”——难的是该忘什么、该想起什么、以及用户是否信任你的记忆管理。
课后行动
盘点你当前负责的产品(或你最常用的 AI 工具),完成以下练习:
列出用户重复提供的信息——哪些内容用户每次都要说一遍?(角色、偏好、项目背景、技术栈……)
按 CoALA 框架分类:
- 哪些属于语义记忆?(关于用户的确定事实)
- 哪些属于情景记忆?(过去的交互经验和成功方案)
- 哪些属于程序记忆?(用户期望 AI 遵循的行为方式)
思考三个设计问题:
- 哪些信息值得 Agent 长期记住?
- 哪些信息应该随时间自然降权?(用户的偏好会变吗?)
- 用户是否需要看到并管理 AI 记住的内容?你的信任设计方案是什么?
把你的分析带到下一期。下一期我们会讲 Skill——Agent 的“操作手册”如何从分散的文件变成可管理、可检索、可复用的结构化知识。你会发现,P3 讲的程序记忆和 P4 讲的 Skill,其实是同一件事的两面。
延伸阅读
如果你对本期提到的概念想做进一步了解,以下是一些推荐资源:
- CoALA 论文原文:[Cognitive Architectures for Language Agents](https://arxiv.org/pdf/2309.02427),系统定义了 Agent 记忆的分类框架,被 LangChain 等主流框架广泛采用
- LOCOMO Benchmark:[github.com/Shopify/locomo](https://github.com/Shopify/locomo),Shopify 开发的 Agent 长期记忆评估基准,用于衡量记忆系统的检索准确率
- ChatGPT Memory 功能:OpenAI 对用户记忆管理的产品实践,可以作为记忆系统信任设计的参考案例
- 艾宾浩斯遗忘曲线:经典认知科学模型,解释了人类记忆随时间衰减的规律,是 PowerMem 时效性管理机制的灵感来源
下一期预告:P4 · Skill 与 Agent 知识管理——今天讲的程序记忆告诉我们 Agent 需要”操作手册”。但当手册越来越多、分散在不同平台和项目中时,一个新的数据问题出现了:经验数据的碎片化。下一期我们来拆解这个问题。
欢迎各位老师在 https://github.com/datawhalechina/easy-data-x-ai 参与课程共建。
也欢迎各位老师加入 Data x AI 交流群~

