Agent 的记忆:是什么、为什么、怎么做
原文:Memory in Agents: What, Why and How · mem0.ai 作者:Taranjeet Singh 发表:2025-04-15 译注:本文为忠实中译,保留原文结构与表格。这是 mem0 记忆系列的开篇,立场偏 mem0 自家产品,阅读时请把「Mem0 怎么做」一节当作厂商视角参考。对照本目录的 开源记忆项目深度拆解 与 三家商用方案对比 一起看,判断会更平衡。
引子:当今 AI 中「记忆」的错觉
想象你在和一个忘掉你说过的一切的朋友聊天。每次对话都从零开始:没有记忆、没有上下文、没有进展。那会让人觉得别扭、累人、毫无温度。不幸的是,今天大多数 AI 系统正是这样工作的。它们很聪明,没错,但缺了一样关键的东西:记忆。
ChatGPT 或编程 copilot 这类工具,用着用着你就会发现自己在一遍又一遍地重复指令和偏好,原本的「好用」也就打了折扣。要构建能够学习、进化、协作的 Agent,真正的记忆不只是「锦上添花」——它是必需品。
这种由上下文窗口和巧妙的提示工程营造出来的「记忆错觉」,让很多人误以为 Agent 已经会「记住」了。但实际上,今天的大多数 Agent 是**无状态(stateless)**的:无法从过往交互中学习,也无法随时间适应。
要从无状态的工具,走向真正智能、自主的**(有状态)Agent,我们需要给它们记忆**——而不只是更大的提示词或更好的检索。
AI Agent 的「记忆」到底指什么
AI 记忆,或者说 AI Agent 记忆,是指 Agent 跨越时间、任务和多次用户交互,保留并回忆相关信息的能力。 记忆让 AI Agent 能记住过去发生了什么,并用这些信息改进未来的行为。
记忆不是只存聊天记录,也不是往提示词里塞更多 token。它是要构建一个持续演化的内部状态,这个状态会影响 Agent 的每一次交互——哪怕两次交互相隔数周甚至数月。
定义 Agent 记忆的三大支柱:
- 状态(State):知道此刻正在发生什么
- 持久化(Persistence):跨会话保留知识
- 取舍(Selection):决定什么值得记住
三者合在一起,带来了我们过去从未拥有过的东西:连续性(continuity)。
记忆如何嵌入 Agent 技术栈
无状态 Agent(无记忆) vs 有状态 Agent(有记忆)
我们把记忆放进现代 Agent 的架构里看。典型组件有:
- 用于推理和生成答案的 LLM
- 一个策略 / 规划器(如 ReAct、AutoGPT 风格)
- 对工具 / API 的访问能力
- 一个检索器(retriever),用来拉取文档或历史数据
问题在于:这些组件没有一个记得昨天发生了什么。 没有内部状态,没有不断深化的理解,没有记忆。
把记忆加进循环后:
Agent 就从一次性的助手,变成了不断进化的协作者。
上下文窗口 ≠ 记忆
一个常见的误解是:上下文窗口足够大,就不再需要记忆了。
但这条路走不通,因为有几个固有的局限。其中最主要的一个是:给 LLM 喂更多上下文很贵——更多 token = 更高的成本和延迟。
| 特性 | 上下文窗口 | 记忆 |
|---|---|---|
| 保留时长 | 临时——每次会话都重置 | 持久——跨会话保留 |
| 作用范围 | 扁平、线性——对所有 token 一视同仁,没有优先级概念 | 分层、结构化——优先处理重要细节 |
| 扩展成本 | 高——随输入规模增长 | 低——只存储相关信息 |
| 延迟 | 更慢——更大的提示带来更多延迟 | 更快——经过优化且稳定 |
| 召回方式 | 基于「就近」——离得远的就忘了 | 基于意图或相关性 |
| 行为 | 被动反应——缺乏连续性 | 自适应——随每次交互而演化 |
| 个性化 | 没有——每次会话都是无状态的 | 深度——记住偏好与历史 |
上下文窗口帮助 Agent 在一次会话内保持一致。AI 记忆则让 Agent 能跨会话保持智能。即便上下文长度达到 10 万 token,缺少持久化、优先级和「显著性(salience)」,依然不足以支撑真正的智能。
为什么 RAG 不等于记忆
虽然 RAG(检索增强生成)和 AI Agent 记忆系统都通过检索信息来辅助 LLM,但它们解决的是非常不同的问题。
- RAG 在推理时把外部知识引入提示词。它擅长用文档中的事实为回答提供依据(grounding)。
- 但 RAG 本质上是无状态的——它对之前的交互、用户身份、当前问题与过往对话的关系,都毫无感知。
记忆则带来了连续性。它捕捉用户偏好、历史提问、决策与失败,并让这些信息在未来的交互中可用。
可以这样理解:
「RAG 让 Agent 答得更好。记忆让 Agent 行为更聪明。」
系统层面的关键差异
| 维度 | RAG:检索增强生成 | Agent 中的记忆 |
|---|---|---|
| 时间感知 | 没有时间或先后顺序的概念 | 跟踪交互的顺序、时序与演化 |
| 状态性 | 无状态;每次查询相互独立 | 有状态;上下文跨会话累积 |
| 用户建模 | 绑定任务;与用户身份无关 | 随用户学习并演化 |
| 适应性 | 无法从过往交互中学习 | 基于「什么有效、什么失败」来适应 |
你需要的是两者兼备——RAG 为 LLM 提供信息,记忆塑造它的行为。
Agent 记忆的类型:一个高层分类
在最基础的层面上,Agent 的记忆有两种形态:
- 短期记忆:保存单次交互内的即时上下文。
- 长期记忆:跨会话、跨任务、跨时间持久化知识。
就像人类一样,这两类记忆服务于不同的认知功能。短期记忆帮助 Agent 在当下保持连贯;长期记忆帮助它学习、个性化和适应。
进一步拆开看:
| 类型 | 作用 | 示例 |
|---|---|---|
| 工作记忆(短期) | 维持短时的对话连贯 | 「刚才那个问题是什么来着?」 |
| 事实记忆(长期) | 保留用户偏好、沟通风格、领域上下文 | 「你偏好 markdown 输出和简短回答。」 |
| 情景记忆(长期) | 记住具体的过往交互或结果 | 「上次我们部署这个模型时,延迟上升了。」 |
| 语义记忆(长期) | 存储随时间积累的、概括化的抽象知识 | 「涉及 JSON 解析的任务通常让你头疼,要不要给个快速模板?」 |
记忆的优势:Mem0 有何不同
译注:以下为厂商自述,可作为「一种记忆架构的设计取向」参考。
在 Mem0,AI 记忆是我们工作的核心。当其它 AI 系统把记忆当作事后补丁时,我们围绕「构建真正类人的记忆能力」搭建了整套架构:
- 智能过滤(Intelligent Filtering):不是所有信息都值得记。Mem0 用优先级打分和上下文标签来决定什么被存下来。这避免了「记忆膨胀」,让 Agent 专注在重要的东西上——就像人类会下意识地过滤掉噪音。
- 动态遗忘(Dynamic Forgetting):好的记忆系统需要有效地遗忘。Mem0 不把记忆当成一个静态的垃圾堆,而是让低相关度的条目随时间衰减,腾出空间和注意力。遗忘不是缺陷——它是智能记忆的一个特性。
- 记忆巩固(Memory Consolidation):我们根据使用模式、近因和重要性,在短期和长期存储之间搬运信息,同时优化召回速度和存储效率。这模仿了我们内化知识的方式。
- 跨会话连续性(Cross-Session Continuity):大多数 Agent 在会话结束时就重置了。Mem0 不会。我们的记忆架构跨会话、跨设备、跨时间段维护相关上下文。
AI 记忆的实战表现
看看记忆如何在真实场景中改变 Agent 的行为:
- 客服 Agent:不再把每个投诉都当成全新问题,而是记住过去的问题和解决方案——带来更顺滑、更个性化的支持。
- 个人助理:随时间适应你的习惯——比如根据你的作息(而不只是日历)来安排会议。
- 编程 Copilot:学习你的代码风格、偏好的工具,甚至主动避开你不喜欢的写法。
记忆是 AI Agent 的地基
当每个 Agent 都能用上相同的模型和工具时,记忆将成为最显而易见的差异化要素。胜出的,不会只是那个「会回应」的 Agent,而是那个会记住、会学习、会与你一同成长的 Agent。
记忆成为 AI Agent 的地基,让它们从一次性工具变成长久的队友——尤其是当它建立在可互操作(interoperable)的分层之上时。
下一篇预告:本文打了个基础。接下来的文章会更深入:
- 记忆在底层是怎么工作的——从架构、数据流,到实际集成。
- 记忆在 Agent 系统中的应用,配可上手的示例。
- 记忆的评估指标(召回率、显著性、老化)。
在那之前,记住这一句:
「如果你在思考人机交互的未来,记忆不是可选项。」