论文阅读《Survey on AI Memory: Theories, Taxonomies, Evaluations, and Emerging Trends》
AI memory is not merely static storage, but a dynamic cognitive substrate critical for continuous learning and adaptation.
大语言模型(LLMs)已经展现出强大的理解、生成和推理能力,但它们默认仍更像一次性推理引擎:上下文窗口决定了“当前能看到什么”,模型参数承载的是训练阶段沉淀的通用知识,而跨会话、跨任务、跨环境的历史经验并不会自然沉淀下来。对 Agent 系统而言,这意味着它可以完成一次任务,却未必能记住用户偏好、复用过往轨迹、纠正旧信息,或在长期协作中持续成长。
AI 记忆(AI Memory)试图补上这块能力拼图。本文基于综述文章《Survey on AI Memory: Theories, Taxonomies, Evaluations, and Emerging Trends》,围绕几个核心问题展开:首先区分 LLM Memory、Agent Memory 与 AI Memory 三个层次,并澄清 Memory 与 Knowledge、Context、Experience 的边界;随后介绍论文提出的 4W 分类法,从生命周期、内容类型、存储形式和模态维度理解记忆;接着讨论单 Agent 记忆系统的主流架构、基础流程与高阶能力,以及多 Agent 场景下的共享记忆、协作一致性和治理问题;最后整理记忆系统的评估维度与典型基准,说明如何判断一个 Agent 是否真正记得住、找得准、能更新、会遗忘、用得好。
AI 领域三层 Memory 定义
在深入讨论 AI 记忆之前,有必要先厘清三个紧密关联却层级不同的概念:LLM Memory、Agent Memory 与 AI Memory。它们的关系并非简单的同义词替换,而是从底层计算到高层认知的递进抽象。
- LLM Memory:大语言模型的底层记忆机制,包含静态的参数权重和运行时的上下文窗口。它是模型推理的基础,但缺乏跨会话的持续学习能力。
- Agent Memory:围绕“感知-规划-执行”循环组织的功能性记忆系统,支持 Agent 完成复杂任务。它将 LLM 的记忆能力扩展为可操作的认知资源。
- AI Memory:最宏观的记忆视角,强调 Agent 的终身演化、长期持久性和自适应能力。它是连接人类认知心理学与 AI 工程实现的统一框架。
从多维度对 LLM Memory、Agent Memory 和 AI Memory 进行对比如下表所示:
| 维度 | LLM Memory | Agent Memory | AI Memory |
|---|---|---|---|
| 关注点 | 文本生成 | 任务执行 | 长期智能演化 |
| 所在层级 | 模型层 | Agent 层 | AI 系统/认知层 |
| 典型内容 | 模型参数、上下文窗口 | 任务状态、工具结果、用户偏好、执行轨迹 | 长期知识、经验、技能、社会协作记忆 |
| 主要问题 | 如何利用已有知识生成回答 | 如何记住任务过程并行动 | 如何持续学习、适应和演化 |
| 时间跨度 | 当前上下文到模型训练周期 | 一次任务到跨会话 | 长期、跨任务、跨环境 |
| 是否需要外部存储 | 不一定 | 通常需要 | 通常需要复杂系统支持 |
相对于 LLM Memory 和 Agent Memory 而言,AI Memory 是最广义、最抽象的概念。它不局限于 LLM,也不局限于某个 Agent,它讨论的是一个 AI 系统如何像认知系统一样,长期保存、组织、更新、遗忘、迁移和利用经验;它关注持续学习、长期适应、自我进化、多 Agent 协作、人类对齐等更大范畴的问题。
几个容易与 Memory 混淆的概念
Memory 与几个常见概念在实践中极易混用,包括知识(Knowledge)、上下文(Context)和经验(Experience)。准确区分它们,是理解 AI 记忆系统设计前提的关键。Memory 的核心是“曾经发生过、被记录下来、以后可能再用”,通常带有时间、来源、对象和场景等属性。它不一定是完全抽象的知识,也不一定永远正确,更像是“历史记录”或“个人档案”。
Memory vs Knowledge
Knowledge 是从大量信息中沉淀后的稳定事实模式,可通过反复验证的 Memory 转化而来。Memory 通常更具体,且带有历史痕迹,而 Knowledge 更稳定,带有泛化和沉淀。前者偏“某次发生的事”,后者偏“通常成立的事实或规则”。例如:
| 类型 | 内容 |
|---|---|
| Memory | 患者 2026 年 5 月 1 日说自己对青霉素过敏 |
| Knowledge | 青霉素过敏患者应避免使用青霉素类药物 |
Memory 可以沉淀成 Knowledge,Knowledge 也会影响 Memory 的使用。
Memory vs Context
Context 是推理窗口内的临时缓冲,是一次推理时模型眼前能看到的内容,使用后即丢弃,不具持久性;Memory 是系统保存的历史信息,不一定都在当前 Context 中。Context 通常短暂,受上下文窗口限制,而 Memory 可以很大、很久,通常需要被检索后放进 Context,模型才能使用。
例如,用户新开一个对话说:
1 | 帮我规划大阪三日游。 |
系统长期 Memory 中有:
1 | 用户不吃生食。 |
模型当前 Context 可能是:
1 | 系统提示词:你是旅行助手。 |
这里:
| 概念 | 内容 |
|---|---|
| Memory | 长期保存的“用户不吃生食、不喜欢早起、喜欢轻松行程” |
| Context | 这次生成回答时真正放进 prompt 里的系统提示、用户问题、检索到的两条记忆 |
如果“用户喜欢轻松行程”没有被检索进当前 prompt,它仍然是 Memory,但不是当前 Context。
Memory vs Experience
Experience 是从 Memory 中总结出的可复用做事方法。Memory 像是原始素材,而 Experience 更像可复用策略。Memory 回答“发生过什么”,而 Experience 回答“下次遇到类似问题该怎么做”。例如:
| 类型 | 内容 |
|---|---|
| Memory | 上次修 bug 时,登录接口 500 是因为数据库返回 None,代码没有做空值处理 |
| Experience | 遇到接口 500 时,优先检查外部数据为空、异常处理和日志链路 |
4W 记忆分类法
论文提出了标准化的 4W 记忆分类法(即 When、What、How 和 Which),从四个维度统一定义记忆机制,便于对比不同方案和工程取舍。
When:按生命周期分类
按照 Memory 留存时长进行分类:
- 瞬时记忆(Transient):即时处理阶段的输入缓冲,像“眼前一闪而过的感知”,刚看到、刚听到、刚输入,还没真正记住。
- 会话记忆(Session):单次任务/会话中的工作记忆,像“这次谈话期间脑子里一直记着的上下文”,只在当前任务中有效。
- 持久记忆(Persistent):跨会话、跨任务的长期可复用记忆,像“长期记忆本”,跨天、跨任务、跨会话还能被再次调用。
三者的区别如下表所示:
| 类型 | 持续时间 | 主要作用 | 类比人类 | AI 系统示例 |
|---|---|---|---|---|
| 瞬时记忆 | 毫秒到几秒 | 临时接收输入 | 眼睛刚看到的画面、耳朵刚听到的声音 | 图像帧缓存、语音流缓冲、LLM 生成时的 KV Cache |
| 会话记忆 | 一次对话或一次任务期间 | 保持当前任务上下文 | 这场会议中你记得刚才谁说了什么 | 当前聊天上下文、Agent 当前任务状态 |
| 持久记忆 | 跨会话、跨任务、长期保存 | 支持个性化、经验复用、长期学习 | 你记得朋友喜好、工作经验、学过的知识 | 用户画像、长期知识库、向量数据库、技能库 |
瞬时记忆 是 AI 系统最“即时”的记忆,通常只存在于输入刚进入系统、还没被筛选和加工的阶段。它的特点是“来得快、走得也快”,如果系统判断这部分信息没必要继续处理,它很快就会被丢弃。瞬时记忆不是为了长期推理,而是为了让系统能连续感知世界,比如连续处理视频帧、语音片段、传感器数据,它更像“感知缓冲区”,而不是“真正记住”。
例如,扫地机器人摄像头捕捉到一帧画面,系统先临时缓存这一帧,用于判断前面是不是障碍物;如果不是重要信息,马上丢弃。
会话记忆 比瞬时记忆更稳定,但仍然有边界,它通常只在“一次对话、一轮任务、一个工作流”中存在,目的是让 AI 知道“当前正在做什么”“刚才说过什么”“接下来该接着哪里做”。会话记忆的核心作用是维持当前任务的一致性,而不是长期保存用户或环境信息,它常常依赖上下文窗口、临时变量、任务状态、对话历史摘要等实现。
例如,一个 Code Agent 正在修 bug,它会在当前任务中记住“已经读过哪些文件、发现哪个函数有问题、下一步要改哪里”,任务结束后,这些状态可能不会保留。
持久记忆 是最接近“真正长期记住”的记忆,能够跨会话、跨任务、跨时间保存,其价值在于让 AI 不再每次从零开始,而是能复用过去的用户偏好、历史经验、环境知识和成功策略。持久记忆通常需要外部存储,比如数据库、文件、向量库、知识图谱、用户画像系统,或者模型参数中的长期知识,也是最复杂的,因为涉及写入、检索、更新、遗忘、权限、隐私和过期信息处理。
例如,用户长期喜欢“回答简洁、用中文、优先给代码示例”,系统把这些偏好保存下来,下次新会话也能自动适配。
What:按内容类型分类
按照 Memory 内容类型进行分类:
- 程序性记忆(Procedural):记住“怎么做”,包括技能、行动序列、工具调用方式等。
- 陈述性记忆(Declarative):记住“是什么、发生了什么”,包括事实、事件、观察记录等。
- 自认知记忆(Metacognitive):记住“我自己做得怎么样、哪里容易错”,包括反思、自我能力评估、表现跟踪等。
- 个性化记忆(Personalized):记住“这个用户/这个人是谁、喜欢什么、需要什么”,包括用户偏好、关系、用户画像等。
四者的区别如下表所示:
| 记忆类型 | 记住什么 | 回答的问题 | 人类类比 | Agent 示例 |
|---|---|---|---|---|
| Procedural | 动作、流程、技能、工具使用方法 | 怎么做? | 怎么骑车、怎么做饭 | 如何调用 API、如何修某类 bug |
| Declarative | 事实、事件、观察、状态 | 是什么?发生了什么? | 知道知识、记得经历 | 用户说了什么、网页内容是什么 |
| Metacognitive | 自我反思、能力边界、失败原因 | 我做得怎么样? | 知道自己哪里弱 | 上次失败是因为没检查日志 |
| Personalized | 用户偏好、身份、关系、个体特征 | 对谁做?怎么适配这个人? | 记得朋友喜好 | 用户喜欢简洁回答、不吃生食 |
程序性记忆 可以理解为“操作型记忆”或“技能记忆”,保存的是完成任务的方法、步骤、流程、工具调用方式和动作序列。对 Agent 来说它特别重要,因为 Agent 不只是回答问题,还要执行任务。
例如,一个 Code Agent 以前多次修过接口报错,于是形成了这样的程序性记忆:
1 | { |
当用户说“登录接口又报 500 了,帮我看看”时,Agent 不会再从零开始,而是按照这套流程行动:
1 | 1. 读取报错日志 |
陈述性记忆 用于保存事实、事件、观察、知识和状态,回答的是“是什么”、“发生过什么”、“当前环境是什么样”。
例如“北京是中国的首都”、“我昨天晚上 8 点和朋友吃了饭”都是生活中常见的陈述性记忆示例。以 Code Agent 为例,可能会记录类似下面这样的陈述性记忆:
1 | { |
陈述性记忆就像“事实笔记本”,它主要保存“知道什么”和“发生了什么”。
自认知记忆 可以理解为“自我认知记忆”或“反思记忆”,保存的是 Agent 对自己表现的认识,包括哪里做得好、哪里失败、为什么失败、下次应该如何改进等。这类记忆让 Agent 不只是积累信息,而是能从错误中学习,回答的是“我自己是怎么想的?”、“我哪里容易出错?”、“下次该如何调整?”等问题。
例如,一个 Code Agent 修 bug 失败后,形成如下记忆:
1 | { |
自认知记忆是 Agent 自我进化的关键。
个性化记忆 保存的是关于用户、其他人、其他 Agent 的信息,关注的是目标对象有什么偏好、身份、习惯、关系和长期需求等,从而让 Agent 能提供因人而异的个性化服务。
例如,Code Agent 中可能会保存如下记忆:
1 | { |
How:按存储形式分类
按照 Memory 存储形式进行分类:
- 隐式存储(Implicit):参数化记忆、模型权重内的隐状态,通常不容易直接读出来。
- 显式存储(Explicit):原始文本、向量数据库、结构化知识图谱,可以被检索、查看、编辑和删除。
二者的区别如下表所示:
| 维度 | 隐式记忆 | 显式记忆 |
|---|---|---|
| 存储位置 | 模型参数、激活、latent space | 文本、日志、数据库、向量库、知识图谱 |
| 是否可读 | 通常不可直接读 | 通常可读或可解释 |
| 是否易修改 | 修改成本高 | 修改相对容易 |
| 是否易删除 | 难以精确删除 | 可以按记录删除 |
| 使用方式 | 模型自然“体现”出来 | 检索后放入上下文使用 |
| 典型例子 | 预训练知识、LoRA、KV Cache、embedding latent | 用户画像、对话记录、文档知识库、工具调用日志 |
| 优点 | - 调用速度快,不一定需要额外检索 - 与模型生成过程深度融合 - 适合保存通用能力、语言模式、技能倾向、领域知识 - 对模型来说使用自然,不需要显式拼接 Prompt |
- 可解释:能看到系统到底记了什么 - 可编辑:错误记忆可以修改 - 可删除:用户要求遗忘时更容易处理 - 可溯源:可以记录来自哪次对话、哪个文件、哪个网页 - 可更新:用户偏好变化时,可以覆盖旧记录 - 可组合:可以和权限、标签、时间、用户 ID 结合 |
| 缺点 | - 不透明:很难知道到底记住了什么 - 难编辑:想修改一个具体事实,可能需要微调或模型编辑 - 难删除:如果模型记住了敏感信息,很难保证彻底忘掉 - 易过时:参数中的知识可能停留在训练时间点 - 难溯源:模型说出某个信息时,很难知道来源是哪条数据 |
- 需要检索:存了不代表每次都能找到 - 检索可能不准:相关记忆可能没召回,或者召回了无关内容 - 有上下文开销:检索出来后通常要放进 Prompt,占用 Token - 需要维护:要去重、压缩、更新、遗忘、处理冲突 - 可能变脏:如果什么都存,会产生大量低质量记忆 |
隐式记忆 是藏在模型内部或连续表示空间里的记忆(可以简单类比为人类的肌肉记忆),不一定以人类可读的文字存在。模型在使用时,通常不是先查一条记录,而是在生成、推理或预测过程中自然体现出来,更像一种“内化能力”。
例如,对于 LLM 而言,它从训练中知道“中国的首都是北京”,这一知识大多存在模型参数里,但你不能打开模型权重直接看到这一行。
对于 Code Agent 而言,经过微调或 LoRA 学会了某类代码风格:
1 | - 更倾向于写类型注解 |
这些偏好可能并不存在于某个 JSON 文件里,而是体现在模型参数或 Adapter 中。
显式记忆 是“写进去、存起来、能被系统查到的记忆”,通常以文本、结构化数据、向量、图谱、日志、文件等形式存在。它可以被检索、排序、更新、删除、审计,更像是 Agent 的“外部笔记本”或“数据库”。
例如,对于 LLM/Agent 而言,用户说“我以后出差尽量住安静、离地铁近的酒店”,系统可能会把它保存成:
1 | { |
下次用户说“帮我订上海的酒店”,Agent 可以检索这条记忆,并生成:
1 | 我会优先筛选靠近地铁、评价中安静程度较高的酒店。 |
Which:按模态维度分类
按照 Memory 模态进行分类:
- 单模态记忆(Single-modal):只记一种信息形式,比如只记文本。
- 多模态记忆(Multimodal):同时记多种信息形式,并能把它们关联起来,比如文本、图片、语音、视频、位置、动作一起记。
二者的区别如下表所示:
| 维度 | 单模态记忆 | 多模态记忆 |
|---|---|---|
| 常见形式 | 文本、纯语音、纯图像 | 文本 + 图像 + 音频 + 视频 + 传感器 |
| 典型系统 | 文本聊天助手、文档问答系统 | 机器人、视频助手、智能眼镜、会议助手 |
| 主要能力 | 记住说过什么、写过什么 | 记住看到了什么、听到了什么、发生在哪里、谁做了什么 |
| 难点 | 长文本组织和检索 | 跨模态对齐、时间同步、实体绑定、空间定位 |
单模态记忆 指系统只围绕一种信息形式建立记忆。在 LLM Agent 中,最常见的是“文本记忆”,它可以保存对话、文档、摘要、用户偏好、任务记录、网页内容等,优势在于简单、成熟、容易检索、容易展示和编辑。
多模态记忆 指系统能保存、组织和检索多种类型的信息,不仅记录文字,还记录图片、音频、视频、空间位置、时间戳、传感器数据、工具动作等,并把这些模态关联起来。多模态记忆不是简单把文件堆在一起,而是知道“谁在什么时间、什么地点、说了什么、做了什么、画面里有什么”。
单 Agent 记忆系统
单 Agent 记忆系统是 AI 记忆工程化的核心战场。标准 LLM 的两大结构性缺陷“上下文窗口有限”与“天然无状态”促使研究者从人类认知架构中汲取灵感,设计出四类主流记忆架构范式。这些架构不仅解决存储问题,更试图赋予 Agent 持续学习、自我进化的能力。
主流架构
当前单智能体记忆系统的架构设计可归纳为四种典型范式,它们在缓解上下文压力、管理记忆生命周期、支持高级认知能力方面各有侧重:
| 架构类型 | 核心思想 | 关键特点 | 解决的问题 | 代表系统 |
|---|---|---|---|---|
| 分层架构 | 像人类记忆一样,把记忆分层管理,例如短期记忆、中期记忆、长期记忆,或者摘要层、细节层、原始记录层 | 分层存储、分层检索、从粗到细定位信息、避免无关记忆进入上下文 | 1)LLM 上下文窗口有限,不能把所有历史都塞进去;2)记忆太多时,直接按相似性检索容易慢且噪声大 | HMT、H-MEM、MemoryOS |
| 类 OS 架构 | 把 LLM 的上下文窗口看成“内存”,把外部记忆库看成“硬盘”,由系统决定哪些记忆换入当前上下文,哪些暂时留在外部 | 记忆分页、上下文换入换出、冷热数据管理、资源调度、统一读写接口 | LLM 上下文窗口像内存一样有限,需要一个“记忆管理器”来决定当前该加载哪些内容 | MemGPT、MemoryOS、 MemOS |
| 认知演进架构 | 模仿人类认知,把记忆用于反思、学习和自我进化 | 经验蒸馏:将原始交互转化为可复用技能;反思机制:定期评估自身表现并更新策略;预测驱动:基于历史模式预判未来需求 | 如果 Agent 只会存历史,它仍然不会变聪明,需要能够将记忆加工成经验和能力 | Generative Agents、Reflexion、Voyager、AUGUSTUS、Nemori |
| 图与时序架构 | 用图结构和时间线组织记忆,强调关系和演化 | 实体建模:节点表示实体,边表示关系;时序追踪:记录状态演变的时间线;多跳推理:支持跨实体的间接关系推导 | 纯文本或纯向量记忆不擅长表达复杂关系和时序变化 | Zep、Mem0、MemTree、AriGraph |
基本功能
单 Agent 记忆系统的基础能力,可以理解为一个 Agent 的记忆流水线,包括写入、存储、检索、更新和遗忘等环节,具体如下表所示:
| 基础能力 | 核心问题 | 示例 |
|---|---|---|
| 写入 | 什么应该记录? | 从对话中抽取“用户不吃生食” |
| 存储 | 存在哪里、数据怎么组织? | 存入用户偏好库、任务库、技能库 |
| 检索 | 当前该想起什么? | 规划日本旅行时找出用户饮食偏好 |
| 更新 | 记忆变了怎么办? | 用户从“不喝咖啡”变成“偶尔喝拿铁” |
| 遗忘 | 什么该删掉或淡化? | 删除敏感信息、忽略一次性临时约束 |
写入
写入 是记忆系统的入口,解决的问题不是“把所有内容都存下来”,而是“判断什么值得保存”。一个好的 Agent 不应该把每一句话都当成长期记忆,否则记忆库会很快变脏。写入通常包含意图识别、信息抽取、重要性判断、类型分类、来源记录和权限判断等环节。
例如,用户说:
1 | 这次东京行程预算每天 1500 元以内。另外我以后旅行都尽量不吃生食。 |
Agent 不应该简单保存整句话,而应该拆分:
| 信息 | 是否写入 | 记忆类型 |
|---|---|---|
| 这次东京行程预算每天 1500 元以内 | 写入会话记忆 | 当前任务约束 |
| 以后旅行都尽量不吃生食 | 写入长期记忆 | 用户长期偏好 |
| 用户说了“另外”这个词 | 不写入 | 无实际价值 |
关键点
- 写入不是复制粘贴,而是“选择 + 提炼”。
- 用户说“这次”、“今天”、“当前项目”,通常更适合会话记忆。
- 用户说“以后”、“一直”、“通常”、“我偏好”,通常更适合长期记忆。
- 敏感信息、一次性闲聊、无价值细节,不应该随便写入长期记忆。
存储
存储 解决的是“记忆以什么形式保存、保存在哪里、怎么组织”的问题。同一条记忆可以有不同存储方式,例如文本、向量、结构化表、知识图谱、时间线、文件、参数等,而存储不是简单将记忆放进数据库,还应该包括标签、时间、来源、用户 ID、置信度、权限、有效期等元数据。
例如,用户说:
1 | 我喜欢回答先给结论,再给解释。 |
一个粗糙系统可能只会存:
1 | { |
更好的系统会存:
1 | { |
不同存储方式的适合场景
| 存储方式 | 适合内容 | 示例 |
|---|---|---|
| 文本存储 | 可读事实、偏好、摘要 | “用户不吃生食” |
| 向量存储 | 语义检索 | 查找和“旅行饮食偏好”相关的记忆 |
| 结构化数据库 | 用户画像、状态字段 | language=中文,budget=中等 |
| 图数据库 | 实体关系和时间变化 | 用户 -> 曾任职 -> A 公司 |
| 文件存储 | 原始文档、日志、报告 | PDF、会议纪要、代码文件 |
| 参数化存储 | 内化技能或风格 | 微调后模型更擅长某领域任务 |
关键点
- 存储要服务于检索,不是只为了保存。
- 如果没有标签、时间、来源,后续很难判断记忆是否可靠。
- 对长期 Agent 来说,记忆元数据和记忆内容一样重要。
检索
检索 是让 Agent 在当前任务中“想起相关记忆”。记忆虽然被存下来了,但不代表能够被模型用到,只有被检索并放进当前上下文,才能够真正参与推理。因此检索要能够找得全、找得准,找不全会漏掉重要历史,找不准会把无关记忆塞进上下文,干扰模型推理。
例如,用户新开会话:
1 | 帮我规划大阪三日游。 |
Agent 需要从长期记忆里找出:
1 | 用户不吃生食。 |
但不应该检索出:
1 | 用户上次让我帮他写 Python 单测。 |
因为这些和大阪旅行无关。
检索通常从多个维度开展
| 检索维度 | 作用 |
|---|---|
| 语义相似度 | 找语义相关内容 |
| 时间新近性 | 优先近期记忆 |
| 重要性评分 | 优先高价值记忆 |
| 用户/会话范围 | 避免发生串用户、串任务 |
| 记忆类型 | 当前需要偏好、事实,还是技能 |
| 图关系 | 找相关实体和关系 |
| 任务目标 | 找对完成当前任务真正有用的信息 |
关键点
- 好的检索不是“最相似”就够了,而是“对当前任务最有帮助”,例如“大阪三日游”最需要旅行偏好,而不是所有包含“大阪”的历史闲聊。
- 检索结果还需要压缩、排序和去重,避免撑爆上下文窗口。
更新
更新 解决的是“记忆不是静态的,用户和世界都会变化”的问题,涉及覆盖、合并、修正、版本化、升降级、冲突处理等。如果 Agent 只会新增,不会更新,长期记忆会越来越矛盾。
例如,用户第一次说:
1 | 这次别安排太早出门。 |
这只是当前任务约束,放入会话记忆。
如果用户多次说:
1 | 我旅行一直不喜欢早起。 |
这时系统可以把它升级为长期偏好:
1 | { |
关键点
- 更新不是简单“覆盖”,因为旧记忆可能仍有历史价值。
- 有些系统会保留版本:过去喜欢 A,现在喜欢 B。
- 对时间敏感信息,最好记录有效期或更新时间。
- 对冲突记忆,要判断是“长期变化”还是“当前例外”。
遗忘
遗忘 是记忆系统中很容易被低估但非常重要的能力。记忆不是越多越好,无用、过期、错误、重复、敏感、低置信度的信息,都可能降低 Agent 的表现,这些信息需要被遗忘。遗忘可以是彻底删除,也可以是降权、归档、过期、屏蔽或不再召回。
例如,用户说:
1 | 我这周住在上海静安区。 |
这条信息对本周有用,但半年后可能已经无效。系统可以设置有效期:
1 | { |
又例如,用户说:
1 | 请忘记我刚才说的身份证号码。 |
系统应该删除或屏蔽相关记忆,而不是继续用于后续回答。
1 | { |
关键点
- 遗忘不是失败,而是健康记忆系统的一部分。
- 长期 Agent 必须能清理记忆,否则会被噪声拖垮。
- 对隐私和合规场景,遗忘能力尤其关键。
- 遗忘不一定是物理删除,也可以是检索降权或归档,但用户明确要求删除时要更严格。
高阶能力
基础能力解决的是记忆能否正常运转的问题,而高阶能力则是让 Agent 从记忆中学习、总结经验、形成能力、理解多模态世界,并逐渐适应用户和环境。基础能力可以理解为让 Agent “记得住”,高阶能力则是让 Agent “更聪明”。
核心高阶能力如下表所示:
| 高阶能力 | 核心问题 | 通俗理解 | Agent 示例 |
|---|---|---|---|
| 自我进化 | Agent 能不能从过去经验中变得更好? | 不只是写日记,还会复盘和成长 | 修 bug 失败后总结“下次先跑测试” |
| 经验抽象 | 能不能把零散记忆变成可复用经验? | 从一堆经历中总结方法论 | 多次旅行反馈后总结“用户适合低密度行程” |
| 技能沉淀 | 能不能把成功做法保存成技能? | 把做过的流程变成操作手册 | 把一次成功的数据分析流程保存成 playbook |
| 多模态关联 | 能不能记住文字之外的图片、语音、视频、位置、动作? | 不只记“说了什么”,还记“看到什么、发生在哪里” | 机器人记住杯子在厨房桌子左侧 |
| 个性化适应 | 能不能长期适配特定用户? | 越用越懂你 | 知道用户喜欢先结论后细节 |
| 主动记忆管理 | 能不能主动判断该记、该忘、该更新什么? | 像一个会整理笔记的助手 | 主动合并重复偏好、淘汰过期信息 |
自我进化
自我进化 是高阶记忆能力中最重要的一类,指的是 Agent 不只是保存历史,而且能从历史中反思自己的表现,并调整未来行为。基础记忆系统只会记住“发生过什么”,而自我进化系统会进一步问“我做得好不好?下次应该怎么改?”,这类能力通常依赖反思、反馈、错误分析、成功经验总结和策略更新。
例如,一个 Code Agent 第一次修 bug:
1 | 用户:帮我修登录接口 500。 |
基础记忆只会保存:
1 | { |
高阶记忆会进一步总结:
1 | { |
经验抽象
经验抽象 指的是 Agent 能把多条具体记忆提炼成更一般的规律。这一步非常关键,因为长期记忆如果只是堆积原始记录会越来越乱,真正有价值的是从大量历史中抽象出可迁移的经验,解决的是“这些事情背后有什么共性?下次遇到类似情况应该怎么做?”的问题。
例如,针对原始记忆:
1 | 第 1 次京都旅行:用户反馈寺庙安排太密集。 |
Agent 经过经验抽象后会记录:
1 | { |
以后用户说“帮我规划一个福冈 4 天游”,Agent 不需要逐条翻历史,而是直接使用抽象经验:
1 | 我会按轻松节奏安排,每天控制 2 个主要地点,中间加入咖啡馆或休息时间。 |
通俗来说,记忆是“上次京都太累了”,而经验是“这个用户不适合高密度旅行”。
技能沉淀
技能沉淀 指的是 Agent 能把成功完成任务的流程保存下来,变成下次可复用的技能,它比经验更偏操作流程。经验告诉 Agent 应该注意什么,而技能告诉 Agent 具体应该怎么做。
例如,用户让 Code Agent 做一次数据分析,流程为“读取 CSV > 清洗缺失值 > 统计指标 > 画图 > 生成 Markdown 报告”,如果这次流程成功,Agent 可以沉淀成技能:
1 | { |
这样,当用户下次说“帮我分析一下这份销售数据”时,Agent 就可以复用这个技能,而不是重新规划。
多模态关联
多模态关联 指的是 Agent 不只记文本,还能记图片、语音、视频、位置、动作、传感器信息,并把它们关联起来,这对真实世界 Agent 很重要,因为真实世界不只有纯文本。人类记忆一件事时,往往会同时记得画面、声音、地点、动作和情绪,高阶 AI 记忆也需要从“文本笔记”升级到“事件记忆”。
个性化适应
个性化适应 指的是 Agent 能根据长期记忆逐渐适配某个用户,这不只是保存用户偏好,而是能在行动和表达上持续调整。基础个性化只是记住用户喜欢什么,而高阶个性化是自动把这些偏好融入到任务执行过程中。
例如,对于用户偏好记忆:
1 | { |
当用户说“帮我看看这个报错”时,普通 Agent 可能直接给一大段解释,而高阶个性化 Agent 会自动调整:
1 | 结论:这个报错大概率是数据库连接超时导致的。 |
这里 Agent 没有每次都问用户偏好,而是长期适配。
主动记忆管理
主动记忆管理 指的是 Agent 能主动维护自己的记忆质量,它不是等用户明确说“请更新记忆”,而是能判断哪些记忆应该合并、升级、降权、遗忘,这一能力决定长期记忆系统能否健康运行。
例如,对于过期的记忆,系统应该具备主动遗忘的能力,例如用户说“本周住在上海静安区”,一个月后系统可以自动降权或过期:
1 | { |
基础记忆系统像一个仓库,只管放东西;高阶记忆系统则像一个图书管理员,会主动分类、合并、修正和淘汰。
多 Agent 记忆系统
单 Agent 记忆系统主要解决“一个 Agent 如何记住、检索、更新和利用好自己经历”的问题,而多 Agent 记忆系统还要额外解决“多个 Agent 如何共享记忆、协调视角、避免冲突、控制权限、形成集体经验”。
简单来说,单 Agent 是个人记忆管理,多 Agent 是组织记忆管理,核心区别如下表所示:
| 设计问题 | 单 Agent 系统 | 多 Agent 系统 |
|---|---|---|
| 记忆主体 | 一个 Agent 的私有记忆 | 多个 Agent 的私有记忆 + 共享记忆 |
| 主要目标 | 任务连续性和个体成长 | 协作一致性、角色分工、集体学习 |
| 记忆范围 | 当前 Agent 的经历和用户偏好 | 团队经验、跨 Agent 观察、共享任务状态 |
| 检索方式 | 按当前任务检索自己记忆 | 按角色、权限、任务阶段路由记忆 |
| 更新冲突 | 新旧偏好冲突 | 多个 Agent 同时写入、观点不一致 |
| 权限控制 | 用户级/会话级隔离 | Agent 级、角色级、任务级、团队级权限 |
| 治理难点 | 去重、遗忘、更新 | 一致性、溯源、信任、共识、责任归属 |
记忆效果评估
Agent 记忆系统的评估,不只是看回答对不对,还要看它是否能 记得住、找得准、能更新、忘得掉、用得好、跑得快、成本低。可以将评估体系理解为测试一个 Agent 的记忆力、理解力、适应力和使用记忆的效率。具体的评估维度如下表所示:
| 评估维度 | 核心问题 | 通俗理解 |
|---|---|---|
| 记忆检索能力 | 需要用历史信息时,能不能找出来? | 该想起的时候能不能想起来 |
| 记忆更新能力 | 用户偏好、事实、环境变化后,能不能改旧记忆? | 不是死记硬背,而是能跟上变化 |
| 长期推理能力 | 能不能跨很多轮、很多天、多个事件做推理? | 能不能把分散线索串起来 |
| 个性化能力 | 能不能长期适配用户? | 越用越懂你 |
| 抗幻觉能力 | 没有相关记忆时,能不能承认不知道? | 不要编造不存在的历史 |
| 遗忘能力 | 过期、错误、敏感信息能不能删除或失效? | 该忘的要忘掉 |
| 系统效率 | 检索和生成是否足够快、足够省 Token? | 不能为了记忆把成本和延迟拉爆 |
| 安全与隐私 | 记忆是否泄露、串用户、越权使用? | 不该看的不能看,不该说的不能说 |
评估维度
记忆检索能力
记忆检索能力是最基础也最常见的评估,其目标是看系统能不能从大量历史记忆中找到和当前问题相关的信息。如果记忆系统找不到关键历史,即使 LLM 本身很强,也答不对。常见指标如下表所示:
| 指标 | 含义 | 简单例子 |
|---|---|---|
Recall@k |
前 k 条检索结果里是否包含正确记忆 | 取前 5 条,是否包含“用户不吃生食” |
Precision@k |
前 k 条结果中有多少是相关的 | 前 5 条里 4 条相关,Precision@5 = 0.8 |
NDCG@k |
相关记忆是否排在更靠前位置 | 正确记忆排第 1 名比排第 5 名更高 |
MRR |
第一个正确结果出现得越早越好 | 正确记忆第 1 条出现比第 6 条出现好 |
Hit Rate@k |
前 k 条里只要命中正确记忆就算成功 | 类似“有没有想起来” |
生成答案质量
记忆检索出来只是第一步,Agent 还要正确使用记忆生成答案。有时检索是对的,但模型用错了、忽略了、过度推断了,最终答案仍然不好,所以还要评估“基于记忆的回答质量”。常见指标如下表所示:
| 指标 | 含义 | 适合场景 |
|---|---|---|
Accuracy |
答案是否正确 | 问答、事实回忆 |
F1 |
精确率和召回率的综合 | 信息抽取、多答案问题 |
ROUGE |
生成文本和参考答案的重叠度 | 摘要、长文本回答 |
BLEU |
生成文本和参考答案的 n-gram 匹配 | 翻译、固定表达生成 |
LLM-as-a-Judge |
用强模型评估回答质量 | 开放式回答、个性化任务 |
动态更新能力
Agent 记忆不是静态百科,用户和世界都会变化,所以评估时要看系统能不能处理新旧信息冲突、偏好变化、事实更新。这类评估尤其重要,因为长期记忆系统最容易被旧信息污染。典型测试类型如下表所示:
| 测试类型 | 示例 | 期望行为 |
|---|---|---|
| 偏好更新 | 用户以前不喝咖啡,现在偶尔喝拿铁 | 旧偏好失效,新偏好生效 |
| 事实更正 | 用户说“我刚才说错了,不是大阪,是京都” | 更新当前任务目的地 |
| 冲突处理 | 一条记忆说预算 1000,另一条说预算 2000 | 根据时间、范围、用户意图判断 |
| 过期信息 | “我这周住上海”一个月后再问 | 不应当作当前事实 |
| 版本变化 | API v1 支持字段 X,v2 已废弃 | 按版本区分有效性 |
时间感知能力
很多记忆任务不是检索单条信息就能回答,而是需要跨时间、跨会话、跨事件进行推理,这类能力更接近真正的长期记忆。典型问题类型如下表所示:
| 问题类型 | 示例 | 需要能力 |
|---|---|---|
| 单跳记忆 | 我上次说我不吃什么? | 找到一条历史记忆 |
| 多跳推理 | 我上次去东京住哪,为什么这次不推荐那里? | 关联住宿、反馈、当前决策 |
| 时间推理 | 我现在的工作单位是哪家? | 区分过去和当前事实 |
| 事件排序 | 我先去京都还是先去东京? | 理解时间顺序 |
| 跨会话推理 | 根据我过去几次反馈,给我规划这次行程 | 总结多次历史经验 |
个性化能力
个性化评估关注 Agent 是否能利用长期用户记忆,给出更符合个人偏好的结果,这不仅是记住偏好,还包括在任务中自然体现偏好。典型评估点如下表所示:
| 评估点 | 示例 |
|---|---|
| 偏好遵循 | 用户喜欢简洁回答,Agent 是否真的简洁 |
| 风格适配 | 用户偏好先结论后解释,Agent 是否按这个结构 |
| 决策适配 | 用户不吃生食,餐厅推荐是否避开生食 |
| 长期一致性 | 多次会话中是否保持同一用户偏好 |
| 例外处理 | 用户说“这次可以破例”,是否只影响当前任务 |
抗幻觉与记忆忠实性
记忆系统很容易出现一种问题,即模型把看起来合理的内容当成历史记忆,因此评估时要看 Agent 是否严格基于已有记忆回答,而不是编造不存在的历史。典型测试如下表所示:
| 测试 | 示例 | 期望行为 |
|---|---|---|
| 无记忆问题 | 我上次去巴黎住哪?但系统没有记录 | 应回答“不确定/没有记录” |
| 干扰记忆 | 有多个相似用户偏好 | 不应串用户 |
| 错误召回 | 检索到无关内容 | 不应强行使用 |
| 过度推断 | 用户说喜欢咖啡,不代表喜欢所有咖啡店 | 不应扩展过头 |
动态遗忘能力
长期记忆系统必须能忘。遗忘评估是看系统是否能删除、屏蔽、过期或降权不该再使用的记忆,这既是性能问题,也是隐私和合规问题。典型测试如下表所示:
| 类型 | 示例 | 期望行为 |
|---|---|---|
| 用户主动删除 | 请忘记我的手机号 | 后续不再检索或使用 |
| 过期遗忘 | “我本周在北京”过期后 | 不当作当前所在地 |
| 错误记忆删除 | 用户纠正“这条记错了” | 删除或标记无效 |
| 敏感信息屏蔽 | 身份证、银行卡 | 不应长期明文保存或暴露 |
| 检索降权 | 低价值旧闲聊 | 不应频繁进入上下文 |
系统执行效率
记忆系统不能只追求效果,还要考虑成本和延迟。如果每次回答都检索几千条记忆、塞进超长 Prompt,系统会变慢、变贵、还更容易出错。常见评估指标如下表所示:
| 指标 | 含义 |
|---|---|
| 检索延迟 | 从记忆库找相关记忆花多久 |
| 端到端延迟 | 用户提问到最终回答总耗时 |
| Token 开销 | 检索记忆占用了多少上下文 |
| 存储成本 | 长期保存记忆的成本 |
| 写入成本 | 抽取、摘要、embedding、图更新成本 |
| 吞吐量 | 多用户、多 Agent 并发时能承载多少请求 |
| 命中率/缓存率 | 热记忆是否能被快速复用 |
评估基准
| Benchmark | 主要评估内容 | 适合测试什么 | 简单理解 |
|---|---|---|---|
| LongBench | 长上下文理解与问答 | 长文档、长对话中的信息定位和推理 | 模型能不能在很长材料里找到答案 |
| RULER | 长上下文鲁棒性 | Needle-in-a-haystack、多跳、变量追踪等 | 信息藏得很深时还能不能找出来 |
| LoCoMo | 长期对话记忆 | 跨会话、多轮长期用户交互记忆 | 像测试一个聊天助手是否记得长期对话 |
| LongMemEval | 长期记忆问答与更新 | 单会话、多会话、偏好、知识更新、时间推理 | 测 Agent 是否能处理长期记忆变化 |
| MemoryAgentBench | Agent 记忆能力综合评估 | 记忆写入、检索、更新、推理、任务执行 | 更贴近 Agent 工作流的记忆测试 |
| HaluMem | 记忆幻觉检测 | 是否编造不存在的历史记忆 | 测 Agent 会不会“假装记得” |
| WebChoreArena | Web Agent 长程任务记忆 | 网页操作、多步骤任务、历史轨迹复用 | 测 Web Agent 是否能记住操作过程 |
| Video-MME | 视频多模态理解 | 长视频、多模态事件记忆 | 测系统能否记住视频里发生了什么 |
| M3-Bench | 多模态、多记忆能力评估 | 文本、图像、视频等多模态记忆 | 测多模态 Agent 是否能跨模态记忆 |
| MSC/Multi-Session Chat | 多会话对话理解 | 多轮聊天中的个人信息和上下文延续 | 测聊天机器人跨会话记忆 |
| LTM Benchmark | 长期记忆系统评测 | 长期事实、偏好和对话历史管理 | 测长期记忆是否真的有用 |
| BEAM | 超长对话/记忆压力测试 | 大规模会话下的检索、推理、成本 | 测记忆系统在长历史下是否还能稳定 |
几个代表基准怎么理解
- LoCoMo:可以理解为长期陪伴型聊天助手考试,它会看 Agent 是否记得用户之前说过的事实、偏好、时间变化,并能跨多轮对话回答问题。
- LongMemEval:更强调长期记忆中的更新和时间推理。例如用户之前喜欢 A,后来改成 B,系统应该知道当前偏好是 B。
- HaluMem:专门测记忆幻觉,比如系统没有记录用户生日,但模型不能编造一个生日。
- MemoryAgentBench:更贴近 Agent,而不是单纯问答,它会看记忆是否能帮助 Agent 完成任务。
- Video-MME 和 M3-Bench:偏多模态记忆,例如视频里某个人什么时候出现、说了什么、做了什么。
总结
AI Memory 的核心价值,不只是让模型记住更多内容,而是让 AI 系统具备跨会话、跨任务、跨环境持续积累和复用经验的能力。它弥补了 LLM 上下文窗口有限、天然无状态的结构性不足,使 Agent 能从一次性问答走向长期协作、个性化适配和自我进化。
从概念层次看,LLM Memory 更偏模型内部能力,Agent Memory 更偏任务执行过程中的状态管理,而 AI Memory 则进一步上升到长期智能系统的认知基础设施。理解这三层关系,有助于避免把上下文、知识、经验和记忆混为一谈,也能更清楚地判断一个系统到底是在“临时缓存信息”,还是在“长期积累经验”。
从工程实现看,一个可靠的记忆系统至少需要处理写入、存储、检索、更新和遗忘五个环节。真正困难的地方并不只是“把信息存下来”,而是判断什么值得记、什么时候该更新、如何检索最有用的记忆,以及如何避免过期、错误、敏感或无关信息污染后续推理。
从发展趋势看,AI Memory 正在从单 Agent 的长期记忆,走向多 Agent 的共享记忆、图与时序记忆、多模态事件记忆,以及具备反思和技能沉淀能力的认知型记忆系统。未来的关键问题,既包括效果和效率,也包括隐私、安全、可解释性、可控遗忘和长期评估。
因此,AI Memory 可以被视为下一代 Agent 系统的关键基础能力:没有记忆,Agent 很难真正理解用户、复用经验和持续成长;有了高质量、可治理的记忆,Agent 才可能从“会回答问题的模型”演化为“能长期协作的智能伙伴”。