微软研究提出分层内存架构解决 Agent 跨对话上下文丢失问题,分离存储与检索逻辑提升可扩展性。对构建长链 Agent 应用有架构指导意义。
如今的 AI Agent 无法记住过去的交互。人们必须反复向它们提供相关信息,或让它们从外部来源中检索信息;随着任务变得更长、更复杂,这种方式的效率也会越来越低。要扩展 Agent 的能力,我们需要一种更高效的方法,让它们能够长期保留和访问此前的信息。
Memora 是一个可扩展的记忆系统。它将存储的内容(丰富的记忆内容)与检索方式(轻量级抽象和线索锚点)解耦,在抽象性与具体性之间取得平衡,从而显著提升 Agent 执行长周期任务时的生产力。
Memora 在 LoCoMo 和 LongMemEval 上刷新了当前最佳水平,表现优于 Mem0、RAG 和完整上下文推理,同时最多可减少 98% 的上下文 token 使用量。
Memora 论文发表于 ICML 2026。Memora 代码已在 GitHub 上开源。
设想一个职场 AI 助手,帮助你推进一个历时数月的项目。在持续数周的对话中,你会告诉它各种约束条件,与它商定里程碑、调整截止日期,并陆续补充数十位利益相关者的偏好。之后,当你让它为某位同事起草项目进展说明时,它不应该只记得最新的决定,还应该记得你们是如何走到这一步的:尝试过什么、排除过什么,以及哪些人参与了讨论。如今的 AI Agent 很难做到这一点。现代大语言模型(LLM)拥有强大的推理能力,但实际上是无状态的:每次会话都从零开始;每当对话变长,模型都不得不重新阅读全部历史记录;每条新信息要么以原始文本的形式存储,变得零散而嘈杂,要么被压缩成模糊的摘要,丢失精确细节。随着 AI 助手和自主 Agent 开始用于长周期场景——例如连续数月跟踪项目的 copilot,甚至是在长期使用过程中逐步积累领域专业知识的研究 Agent——缺少一套有原则的记忆系统,已经成为制约其发展的关键瓶颈。
越来越多的研究开始填补这一空白。Mem0 等系统会从对话中提取原子事实;检索增强生成(RAG)方法会为原始文本片段建立索引,供之后召回;Zep 和 GraphRAG 等基于图的记忆系统则通过实体关系为信息赋予结构。这些工作都取得了切实进展,但最终都撞上了同一堵墙:现有设计迫使系统在具体性与抽象性之间做出不可避免的取舍。具体性可以保留细粒度细节,抽象性则能在记忆不断增长时高效组织信息。Memora 的目标,是让 Agent 同时拥有二者。
Memora 是一个面向长周期 AI Agent 设计的 Agentic 记忆框架。Memora 的核心洞见,是将存储的内容与检索内容的方式解耦。记忆内容可以保持丰富且富有表达力,例如一条项目时间线,或一段围绕约束条件展开的多轮讨论;与此同时,由一个独立、轻量的结构层负责索引和检索。由此得到的是一个能够扩展的记忆系统:它把相关信息整合成稳定的单元,在细粒度细节真正重要时将其呈现出来,并允许 Agent 浏览自己的历史,而不必重新阅读全部内容。在标准长对话基准测试中,Memora 刷新了当前最佳表现;与将完整历史记录全部塞进上下文相比,它最多可以减少 98% 的 token 使用量。
现有记忆系统主要走向了两个极端。RAG 和 Mem0 等内容碎片化系统,会直接对提取出的事实或文本片段进行 embedding。这种方式能够保留细节,却会产生脆弱、彼此孤立的条目,导致叙事连贯性丧失。粗粒度抽象系统则会把经历压缩为简短摘要。它们效率很高,但摘要会剥离约束条件、边界情况和数值细节,而这些信息恰恰是记忆真正有用的根本。基于图的系统虽然在内容之上增加了结构,但检索时仍然依赖内容本身,而且通常需要一套严格的 ontology,难以跨领域泛化。这些方案都没有解决抽象性与具体性之间的根本矛盾:抽象性让记忆保持高效,具体性则赋予记忆实际价值。
Memora 通过一种和谐式组织方式解决了这种张力。每条记忆包含两个组成部分:一是主抽象,即一个由 6~8 个词组成的短语,用来概括这条记忆最根本的主题;二是记忆值,用于保存丰富的内容本身。关键在于,只有主抽象会被 embedding,用于相似度搜索;记忆值绝不会通过其自身内容被直接检索。这种分离意味着:当一个持续演进的话题产生新信息时,新内容会在同一个主抽象之下合并到已有记忆条目中,而不会碎片化成一连串部分重复的记录。作为主抽象的补充,线索锚点是从每条记忆的值中提取出的简短、具备上下文感知能力的标签,为同一条记忆提供其他访问路径。它们相当于一种灵活、自然生成的 metadata。
来看一个具体例子。假设用户说:“Dave 和 Sarah 同意将原型推迟到 4 月 1 日,将试点推迟到 5 月 2 日,并将 MVP 推迟到 5 月 30 日。”知识图谱系统需要预先定义实体类型和关系 schema:Person → agreed_on → Milestone → has_date → Date;每出现一种新的关系类型,都需要扩展 schema。在 Memora 中,主抽象“Dave 和 Sarah 商定更新 Project Orion 时间线”可以作为规范的访问入口;与此同时,“Dave 的 Project Orion 更新”“Project Orion 原型计划”和“Project Orion 试点时间线”等线索锚点,则会提供其他检索路径——整个过程都不需要绑定某套 ontology。之后,无论查询 Dave 最近做出的贡献、原型计划,还是试点时间,都可以通过不同线索路由到同一条底层记忆,而完整细节依然保存在记忆值中。
在这种表示方式之上,Memora 还引入了一个由策略引导的检索器,将记忆访问视为主动推理过程。策略检索器不会一次性返回语义最相似的 top-k 条目,而是迭代优化查询,通过线索锚点进行扩展,以发现彼此相关但语义并不相似的记忆,并自行判断何时停止。这使 Agent 能够找到纯语义搜索可能遗漏的非局部相关上下文,像人类回忆相互关联的事件一样追踪多跳依赖关系。检索策略既可以通过强大的 LLM 以人工 prompt 的方式实现,也可以借助强化学习蒸馏到小得多的模型中。
我们在两个长上下文基准上评估了 Memora:LoCoMo 中的对话平均包含 600 轮,LongMemEval 的上下文则包含 115,000 个 token。Memora 在两项基准上都取得了新的当前最佳表现:在 LoCoMo 上,LLM judge 准确率达到 86.3%;在 LongMemEval 上达到 87.4%,超过了 RAG、Mem0、Nemori、Zep、LangMem,甚至优于完整上下文推理。在多跳推理任务上,差距最为明显,因为 Memora 遍历线索锚点的能力在这类任务中带来了最大收益。它在效率方面的表现同样引人注目:每段对话中,Memora 存储的记忆条目数量大约只有 Mem0 的一半(344 条对 651 条);与完整上下文推理相比,token 消耗最多可降低 98%。需要阅读的内容更少,需要存储的内容更少,答案却更好。
Memora 的设计意义并不局限于基准测试表现。我们认为,这项工作朝着这样一种 AI Agent 迈出了一步:它们能够与用户保持长期协作,并在数月乃至数年间持续积累组织知识,而不只是记住单次会话中的内容。在此基础上,我们正在推进多个互补方向。MemLoop 探索记忆系统如何从检索失败和任务失败中学习,如何将错误归因到记忆流水线中的特定阶段,以及如何随时间推移实现自我改进。Deferred Memory 研究记忆构建应该在什么时候推迟进行——等待获得足够的上下文、证据或未来效用之后再构建,而不是过早决定应该存储什么。Group Memory 则研究如何在团队和 Agent 之间共享知识,同时保留信息来源、访问边界、所有权和敏感上下文。我们随论文一同发布了代码,并邀请社区在这种表示方式之上继续构建,共同探索:当 AI Agent 不再是无状态的,将会出现哪些新的可能。
我们感谢 Shantanu Dixit(Research Fellow)、Paramaguru Harimurugan(Research Fellow)、Rujia Wang、Victor Rühle 和 Robert Sim 对本项目做出的贡献。