文章目录
- 前言
- 零、论文基本信息
- [一、背景:为什么 Memory RAG 不等于人类式记忆](#一、背景:为什么 Memory RAG 不等于人类式记忆)
-
- [1. Full Context 的成本问题](#1. Full Context 的成本问题)
- [2. Fragment-based Memory 的结构损失](#2. Fragment-based Memory 的结构损失)
- [3. Graph Memory 也可能过度结构化](#3. Graph Memory 也可能过度结构化)
- [4. 在线 Agentic Retrieval 的延迟问题](#4. 在线 Agentic Retrieval 的延迟问题)
- [二、认知启发:Episodic、Semantic 与 Narrative](#二、认知启发:Episodic、Semantic 与 Narrative)
-
- [1. Episodic Memory](#1. Episodic Memory)
- [2. Semantic Memory](#2. Semantic Memory)
- [3. Semanticization](#3. Semanticization)
- [4. Narrative Cognition](#4. Narrative Cognition)
- [三、Amory 方法总览](#三、Amory 方法总览)
-
- [1. Online Path](#1. Online Path)
- [2. Offline Path](#2. Offline Path)
- [3. 两类 Memory Bank](#3. 两类 Memory Bank)
- [四、Memory Initialization:从完整历史生成第一批故事](#四、Memory Initialization:从完整历史生成第一批故事)
-
- [1. 何时初始化](#1. 何时初始化)
- [2. 初始化得到什么](#2. 初始化得到什么)
- [3. 为什么不是按固定长度切块](#3. 为什么不是按固定长度切块)
- [4. 初始化风险](#4. 初始化风险)
- [五、Memory Binding:新对话应该进入哪个故事](#五、Memory Binding:新对话应该进入哪个故事)
-
- [1. 输入](#1. 输入)
- [2. 片段抽取](#2. 片段抽取)
- [3. 路由决策](#3. 路由决策)
- [4. Coherence 比相似度多了什么](#4. Coherence 比相似度多了什么)
- [5. 一个例子](#5. 一个例子)
- [六、Momentum-aware Consolidation:什么时候应该总结故事](#六、Momentum-aware Consolidation:什么时候应该总结故事)
-
- [1. 为什么需要 Consolidation](#1. 为什么需要 Consolidation)
- [2. Rapid Consolidation 的问题](#2. Rapid Consolidation 的问题)
- [3. Conversation Momentum](#3. Conversation Momentum)
- [4. Inactive Consolidation](#4. Inactive Consolidation)
- [5. Subplot 动态分支](#5. Subplot 动态分支)
- [6. 风险](#6. 风险)
- 七、Semanticization:哪些内容不应该硬塞进故事主线
-
- [1. Peripheral Facts](#1. Peripheral Facts)
- [2. 三元组表示](#2. 三元组表示)
- [3. 为什么不把所有内容都图谱化](#3. 为什么不把所有内容都图谱化)
- [4. Semanticization 的边界](#4. Semanticization 的边界)
- [八、Coherence-driven Retrieval:按故事推理,而不是按词面相似](#八、Coherence-driven Retrieval:按故事推理,而不是按词面相似)
-
- [1. Episodic Retrieval](#1. Episodic Retrieval)
- [2. Semantic Retrieval](#2. Semantic Retrieval)
- [3. 合并上下文](#3. 合并上下文)
- [4. 为什么 Coherence 可能击败 Embedding](#4. 为什么 Coherence 可能击败 Embedding)
- [5. 代价](#5. 代价)
- 九、完整算法
-
- [1. Buffer Context 变体](#1. Buffer Context 变体)
- 十、实验设置
-
- [1. LOCOMO](#1. LOCOMO)
- [2. Baselines](#2. Baselines)
-
- [Working Memory Systems](#Working Memory Systems)
- [Retrieval / Context Baselines](#Retrieval / Context Baselines)
- [3. Backbone](#3. Backbone)
- [4. 评价指标](#4. 评价指标)
-
- J-score
- [Online Latency](#Online Latency)
- [Coverage Rate](#Coverage Rate)
- [Context Compression Rate](#Context Compression Rate)
- 十一、主实验:回答质量
-
- [1. 相比 Working Memory Baseline](#1. 相比 Working Memory Baseline)
- [2. 与 Full Context 相当但并非所有类别都领先](#2. 与 Full Context 相当但并非所有类别都领先)
- [3. Single-hop 是主要退化项](#3. Single-hop 是主要退化项)
- [4. Semantic Memory 的贡献并不全面](#4. Semantic Memory 的贡献并不全面)
- [十二、在线延迟:Amory 是否真的适合实时对话](#十二、在线延迟:Amory 是否真的适合实时对话)
-
- [1. 相比 Full Context](#1. 相比 Full Context)
- [2. 相比低延迟 Memory](#2. 相比低延迟 Memory)
- [3. Agentic Retriever 是主要成本](#3. Agentic Retriever 是主要成本)
- 十三、离线处理成本
- [十四、Consolidation 消融:什么时候总结最重要](#十四、Consolidation 消融:什么时候总结最重要)
-
- [1. Consolidation 整体有效](#1. Consolidation 整体有效)
- [2. Rapid 更适合 Multi-hop](#2. Rapid 更适合 Multi-hop)
- [3. Inactive 更适合 Temporal 与 Commonsense](#3. Inactive 更适合 Temporal 与 Commonsense)
- [4. Table 1 与 Table 2 存在数值不一致](#4. Table 1 与 Table 2 存在数值不一致)
- [十五、Episodic Memory 如何演化](#十五、Episodic Memory 如何演化)
- [十六、Coverage 与 Compression:检索到了答案所需证据吗](#十六、Coverage 与 Compression:检索到了答案所需证据吗)
-
- [1. Coverage Rate](#1. Coverage Rate)
- [2. Coherence 与 Embedding Retriever](#2. Coherence 与 Embedding Retriever)
- [3. Compression Rate](#3. Compression Rate)
- [十七、Retriever 定性案例](#十七、Retriever 定性案例)
- [十八、Agentic Scenario:35 万 Token 中找回分散约束](#十八、Agentic Scenario:35 万 Token 中找回分散约束)
-
- [1. 为什么需要额外实验](#1. 为什么需要额外实验)
- [2. 数据构造](#2. 数据构造)
- [3. 结果](#3. 结果)
- [4. 结果也暴露明显边界](#4. 结果也暴露明显边界)
- [十九、附录中的 Prompt 与实现细节](#十九、附录中的 Prompt 与实现细节)
-
- [1. Story Initialization Prompt](#1. Story Initialization Prompt)
- [2. Memory Binding Prompt](#2. Memory Binding Prompt)
- [3. Consolidation Prompt](#3. Consolidation Prompt)
- [4. Semanticization Prompt](#4. Semanticization Prompt)
- [5. Coherence Retrieval Prompt](#5. Coherence Retrieval Prompt)
- [二十、与 Agent Memory 系列方法横向比较](#二十、与 Agent Memory 系列方法横向比较)
-
- [1. 与 A-MEM](#1. 与 A-MEM)
- [2. 与 CoM](#2. 与 CoM)
- [3. 与 MAGMA](#3. 与 MAGMA)
- [4. 与 SteeM](#4. 与 SteeM)
- [二十一、对 Coding Agent 的启发](#二十一、对 Coding Agent 的启发)
-
- [1. 将一个 Bugfix 组织为 Episodic Narrative](#1. 将一个 Bugfix 组织为 Episodic Narrative)
- [2. Momentum 可以判断何时总结调查](#2. Momentum 可以判断何时总结调查)
- [3. Semantic Memory 保存外围事实](#3. Semantic Memory 保存外围事实)
- [4. 召回可靠性仍需加强](#4. 召回可靠性仍需加强)
- [二十二、对 Tool Agent 与 Multi-Agent 的启发](#二十二、对 Tool Agent 与 Multi-Agent 的启发)
-
- [1. Tool Agent](#1. Tool Agent)
- [2. Multi-Agent](#2. Multi-Agent)
- [3. Narrative 与 Workflow 的区别](#3. Narrative 与 Workflow 的区别)
- 二十三、局限性
-
- [1. 主要基准规模有限](#1. 主要基准规模有限)
- [2. AgentIF 实验仍是合成的](#2. AgentIF 实验仍是合成的)
- [3. 依赖单一强 Backbone](#3. 依赖单一强 Backbone)
- [4. Agentic Reasoning 成本高](#4. Agentic Reasoning 成本高)
- [5. 异步一致性问题](#5. 异步一致性问题)
- [6. Narrative Boundary 由 LLM 主观判断](#6. Narrative Boundary 由 LLM 主观判断)
- [7. Semanticization 研究不足](#7. Semanticization 研究不足)
- [8. LLM-as-a-Judge](#8. LLM-as-a-Judge)
- [9. Table 内部数据不一致](#9. Table 内部数据不一致)
- [10. 缺少完整组件消融](#10. 缺少完整组件消融)
- [11. "Comparable to Full Context"需要分类理解](#11. “Comparable to Full Context”需要分类理解)
- 二十四、我的理解与启发
-
- [1. Amory 的核心不是双 Memory,而是 Narrative-first](#1. Amory 的核心不是双 Memory,而是 Narrative-first)
- [2. Memory Formation 应该发生在"安静时刻"](#2. Memory Formation 应该发生在“安静时刻”)
- [3. 记忆关系不一定需要显式成边](#3. 记忆关系不一定需要显式成边)
- [4. Consolidation 的时机与内容同样重要](#4. Consolidation 的时机与内容同样重要)
- [5. Coverage 应与 Answer Accuracy 分开](#5. Coverage 应与 Answer Accuracy 分开)
- [6. Narrative Memory 需要置信度和可修订机制](#6. Narrative Memory 需要置信度和可修订机制)
- [7. 更完整的架构应是多形态 Memory](#7. 更完整的架构应是多形态 Memory)
- 二十五、总结
- 参考资料
前言
当一个 Agent 与用户只交流几轮时,最简单的记忆方案就是把完整对话继续塞进上下文。
但如果交互持续几周、几个月,完整历史会迅速膨胀。每次回答都重新读取数万甚至数十万 Token,不仅成本高,延迟也很难满足实时对话要求。
于是,大多数长期记忆系统采用了一条熟悉的路线:
- 将历史对话切成若干片段;
- 为每个片段计算 Embedding 或抽取实体关系;
- 用户提出新问题时,按向量相似度或图关系取回相关片段;
- 把取回内容交给 LLM 生成答案。
这个方案高效,却把一段持续发展的经历拆成了彼此孤立的"事实卡片"。
例如,用户在半年中断断续续谈到自己的收养计划:最初调研机构,后来通过面试,再到为孩子布置房间。单看任何一句都只是一个事实;放在一起,它们却构成了一个有角色、有时间、有阶段演进的完整故事。
如果系统只按当前问题与某条记忆的表面相似度检索,它可能找到措辞相近但并不真正相关的片段,也可能漏掉那些词汇不相似、却在因果或时间上属于同一经历的内容。
Amory 正是从这里出发。它认为 Agent Memory 不应该只是"写入后等待检索的碎片集合",而应该在离线阶段主动形成结构。
它借鉴认知科学对两类记忆的区分:
- Episodic Memory:保留人物、时间和上下文的具体经历;
- Semantic Memory:脱离具体情景、可以独立调用的事实与概念。
Amory 把连续对话绑定成多个 Episodic Narratives。每条 Narrative 包含角色、主情节、子情节以及带时间戳的 Memory Fragments。随着对话推进,系统不是按固定频率机械总结,而是在某条叙事失去"对话动量"、进入不活跃状态时才进行 Consolidation,把近期片段归纳为 Subplot,并在必要时更新 Main Plot。
那些与主情节只有松散联系、但未来可能单独有用的外围事实,则被 Semanticization 成 ( s u b j e c t , p r e d i c a t e , o b j e c t ) (subject,predicate,object) (subject,predicate,object) 三元组,进入 Semantic Memory。
在线回答时,Amory 也不把 Query 与每段 Memory 简单做向量近邻,而是让 LLM 根据人物、主情节和子情节之间的叙事连贯性判断哪些故事最可能包含答案。
在此前的 Agent Memory 系列中,A-MEM 让记忆动态产生链接,MAGMA 通过多图表达不同关系,CoM 强调记忆形成与巩固,ReMemR1 让 Agent 在写入时回访历史,Mem²Evolve 讨论记忆和元记忆共同演化,MemSearch-o1 则把搜索历史重组为短推理路径。
Amory 与这些工作的交汇点在"记忆形成",但它给出了一个更具体的判断:
对长期对话来说,最重要的结构不一定是相似度边或实体关系,而可能是人类天然用来理解经历的叙事结构。
因此,本文的唯一核心增量可以概括为:
Amory 将 Agent Memory 从"对话片段的被动存储与相似度召回",改造成"异步 Agent 主动构建并巩固的叙事记忆":先把相关互动绑定成角色驱动、具有主情节和子情节的 Episodic Memory,再把外围事实语义化,并在查询时按叙事连贯性推理召回。
Memory Binding、Momentum-aware Consolidation、Semanticization 与 Coherence-driven Retrieval 都不是彼此平行的贡献,而是在共同支撑这一核心变化:记忆首先要被组织成故事,之后才谈得上可靠回忆。
零、论文基本信息
- 论文名称:Amory: Building Coherent Narrative-Driven Agent Memory through Agentic Reasoning
- 发表平台:EACL 2026,Volume 1: Long Papers
- 代码仓库:论文与官方页面未提供公开代码仓库
- 作者:Yue Zhou、Xiaobo Guo、Belhassen Bayar、Srinivasan H. Sengamedu
一、背景:为什么 Memory RAG 不等于人类式记忆
1. Full Context 的成本问题
如果对话历史为:
H = { h 1 , h 2 , ... , h n } \mathcal{H}=\{h_1,h_2,\ldots,h_n\} H={h1,h2,...,hn}
最直接的做法是每次都将 H \mathcal{H} H 全部交给 LLM。优点是原始信息完整,缺点是输入长度随交互线性增长,每轮推理成本和延迟不断增加。
当历史达到数万 Token,模型不仅更慢,还可能因为上下文过长而忽视中间信息。
2. Fragment-based Memory 的结构损失
Embedding Memory 把每条对话或摘要看成独立向量。它擅长找"措辞相近"的片段,却难以表达:
- 两件事是否属于同一段经历;
- 某个偏好如何在多个时间点逐步变化;
- 一个结果由哪些先前事件造成;
- 两个不同话题为什么共享同一个人物和目标。
一旦对话被切碎,系统便需要在查询时临时重建这些关系。
3. Graph Memory 也可能过度结构化
知识图谱适合保存清晰事实,但自然对话常包含省略、情绪、隐喻、闲聊和未明确说出的关系。若对每个实体对都做 OpenIE,容易得到稠密而嘈杂的图。
更重要的是,很多记忆并不能被几个三元组完整表达。一次求职失败、一次旅行计划或一个研究项目的演进,需要保留情景与顺序。
4. 在线 Agentic Retrieval 的延迟问题
可以在查询时让 Agent 多步规划、反复搜索记忆,但这会把复杂推理放在用户等待的路径上。
Amory 的关键工程选择是:
- 复杂 Memory Formation 在离线、异步阶段完成;
- 在线阶段只对已经形成的叙事结构做有限推理。
它试图用更多后台计算换取更好的记忆结构,同时避免让全部开销进入响应延迟。
二、认知启发:Episodic、Semantic 与 Narrative
1. Episodic Memory
Episodic Memory 保存具体经历,包括:
- 谁参与;
- 发生了什么;
- 何时发生;
- 前后事件如何连接;
- 当时的上下文是什么。
它不是一组独立事实,而是一条能够被"重现"的情景链。
2. Semantic Memory
Semantic Memory 保存已经脱离具体经历的知识,例如:
( Caroline , saw , a rainbow bridge ) (\text{Caroline},\text{saw},\text{a rainbow bridge}) (Caroline,saw,a rainbow bridge)
这类事实可以独立回答查询,不一定需要恢复完整故事。
3. Semanticization
Semanticization 描述情景记忆中的某些信息逐渐脱离原始上下文,成为更一般的事实知识。
Amory 并没有把所有 Episodic Memory 都转成图,而只抽取那些与主情节松散相关、若只看 Story Headline 将来难以找到的 Peripheral Facts。
4. Narrative Cognition
人类倾向于用故事理解经历。故事包含:
- Characters:推动情节的人物或关键实体;
- Plot:按时间或因果展开的事件;
- Subplots:同一主题内部更具体的阶段或分支。
Amory 将这套结构用作对话记忆的组织原则。
三、Amory 方法总览
Amory 分为 Online 与 Offline 两条路径。
1. Online Path
用户查询到来时:
- 若历史仍短,直接使用 Full Context;
- 若超过阈值,从 Episodic Memory 与 Semantic Memory 中取回相关内容;
- 将 Retrieved Memory 与当前 Query 交给 Agent 生成响应。
2. Offline Path
新一轮用户与 Agent 的交互结束后,异步执行:
- Memory Initialization;
- Memory Binding;
- Momentum-aware Consolidation;
- Semanticization。
3. 两类 Memory Bank
M = M E ∪ M S \mathcal{M}=\mathcal{M}_E\cup\mathcal{M}_S M=ME∪MS
其中:
- M E \mathcal{M}_E ME 是 Narrative-driven Episodic Memory;
- M S \mathcal{M}_S MS 是图结构 Semantic Memory。

Figure 1:Amory 框架总览。 展示对话初始化、Memory Binding、Momentum Consolidation、Semanticization,以及在线检索 Episodic/Semantic Memory 的完整流程。
四、Memory Initialization:从完整历史生成第一批故事
1. 何时初始化
系统从对话开始持续维护历史 H \mathcal{H} H。当历史不超过阈值 T T T 时,直接使用 Full Context。
实验设置:
T = 20 turns T=20\text{ turns} T=20 turns
超过阈值后,系统调用:
M E ← MemInit ( H 1.. T ) \mathcal{M}E\leftarrow\operatorname{MemInit}(\mathcal{H}{1..T}) ME←MemInit(H1..T)
2. 初始化得到什么
Worker LLM 将前 T T T 轮对话拆成若干逻辑和时间上相连的 Narrative。每条 Narrative 包含:
- Owner / Characters;
- Main Plot Headline;
- Content;
- 带时间戳的 Facts 或 Events。
3. 为什么不是按固定长度切块
固定窗口可能把同一故事切开,也可能把两个无关话题塞进同一 Chunk。MemInit 根据角色、主题、时间和逻辑连续性决定边界。
例如"电影偏好"和"参加游戏比赛"即便出现在相邻轮次,也可以被拆成不同 Narrative;几个月后再次谈到同一电影收藏,则可以归回早期故事。
4. 初始化风险
初次 Narrative 边界完全由 LLM 判断。一旦把两个相关经历错误拆开,后续 Binding 可能继续沿错误 Headline 路由;若过度合并,故事又会变得宽泛而难检索。
五、Memory Binding:新对话应该进入哪个故事
1. 输入
每次新交互由用户查询 q q q 与 Agent 响应 r r r 组成。MemBinding 同时查看:
- 当前 q , r q,r q,r;
- Recent Dialogue Context;
- 已有 Narrative Headlines 与 Owner。
2. 片段抽取
Worker LLM 从新交互中提取有实质内容的 Memory Fragments。
- 一句话包含多个意图时拆成多个片段;
- 寒暄和无内容 Filler 被丢弃;
- 每个片段保留时间戳和说话者。
3. 路由决策
如果片段在逻辑和主题上延续已有 Narrative:
m n e w → M E ( i ) m_{new}\rightarrow\mathcal{M}_E^{(i)} mnew→ME(i)
系统将它加入第 i i i 条故事。
如果属于新领域,则创建新 Narrative,并由 LLM生成新的 Topic 与 Owner。
4. Coherence 比相似度多了什么
Binding 不是问"哪个 Headline 与句子最像",而是问:
- 是否是同一人物经历的后续;
- 是否在时间上自然延续;
- 是否因果上属于同一个 Plot;
- 新事件是否推进了原故事。
因此,措辞不同的事件仍可能被绑定在一起。
5. 一个例子
用户先谈"调研收养机构",几周后说"我通过了机构面试"。两条消息词汇重叠有限,但后者显然推进了 Adoption Journey。Amory 将其绑定到同一 Narrative,而不是建立孤立 Memory。
六、Momentum-aware Consolidation:什么时候应该总结故事
1. 为什么需要 Consolidation
随着新 Fragment 不断加入,最初的 Main Plot Headline 可能不再涵盖全部内容。平铺的 Fragment 列表也会越来越长。
Consolidation 对最近 N N N 条 Fragment 做两件事:
- 判断能否形成一个或多个 Subplot;
- 检查 Main Plot 是否仍覆盖所有 Subplot,必要时生成更宽泛的新标题。
实验中:
N = 10 N=10 N=10
2. Rapid Consolidation 的问题
如果每积累固定数量片段就立即总结,可能在故事仍持续发展时过早压缩。
早期标题会锁定后续解释,时间信息也可能被挤进不恰当的 Subplot。
3. Conversation Momentum
论文观察到连续对话通常围绕一个焦点展开。Narrative 会经历:
- Active:持续收到相关新 Fragment;
- Inactive:一段时间没有相关内容;
- Reactivated:后来又出现相关信息。
Topic Shift 或 Inactivity 是一个天然边界,说明当前阶段可能暂告一段落。
4. Inactive Consolidation
Amory 只在某条 Episodic Memory 上一轮没有绑定新片段时,将它视为 Inactive,并触发 Consolidation。
这种策略的直觉是:
先让故事自然讲完一段,再总结,而不是边讲边强行归纳。
5. Subplot 动态分支
Consolidation 把近期连续 Fragment 聚合成 Subplot:
Main Plot → { Subplot 1 , Subplot 2 , ... } \text{Main Plot}\rightarrow\{\text{Subplot}_1,\text{Subplot}_2,\ldots\} Main Plot→{Subplot1,Subplot2,...}
随着新阶段出现,树会动态生长。Main Plot 也能在子情节扩展后被重新命名。
6. 风险
Inactivity 只是对话结构的启发式信号,不总等于语义阶段结束。用户可能因网络中断、转移话题或几天后继续讨论同一阶段。
虽然 Narrative 可重新激活,但已经形成的 Subplot 可能影响后续 Binding。
七、Semanticization:哪些内容不应该硬塞进故事主线
1. Peripheral Facts
某条对话可能包含重要事实,却不推进 Main Plot。例如在讨论旅行计划时,用户顺带提到家附近有一座彩虹桥。
若只按 Story Headline 检索,这条 Trivia 将来很难被找到;若为了它修改 Main Plot,又会污染叙事结构。
2. 三元组表示
Semanticization 把这类信息转换成:
( s u b j e c t , p r e d i c a t e , o b j e c t ) (subject,predicate,object) (subject,predicate,object)
并存入 Neo4j 图数据库 M S \mathcal{M}_S MS。
3. 为什么不把所有内容都图谱化
论文明确限制 Graph 的范围:
- 与主情节因果或逻辑纠缠的信息继续留在 Episodic Memory;
- 只有可脱离情境调用的外围事实进入 Semantic Memory。
这样可以避免从非正式对话中抽取大量噪声关系。
4. Semanticization 的边界
论文也承认这一过程没有被充分展开。外围与核心的边界由 LLM 判断,容易出现:
- 把重要情节错误移出 Narrative;
- 把依赖上下文的事实误当成独立三元组;
- 生成不准确 Predicate;
- 同一事实在两种 Memory 中重复。
八、Coherence-driven Retrieval:按故事推理,而不是按词面相似
1. Episodic Retrieval
给定 Query q q q,LLM 查看 Narrative 的:
- Owner / Characters;
- Main Plot;
- Subplot Headlines。
然后选择最多 k k k 个最可能包含答案的 Leaf Nodes。
实验中:
k = 2 k=2 k=2
2. Semantic Retrieval
同时,LLM 将自然语言 Query 转成 Cypher Query,在 Neo4j 中检索外围事实。
3. 合并上下文
M r e l = Retrieve ( M E , q , k ) ∪ Retrieve ( M S , q , k ) \mathcal{M}_{rel}=\operatorname{Retrieve}(\mathcal{M}_E,q,k)\cup\operatorname{Retrieve}(\mathcal{M}_S,q,k) Mrel=Retrieve(ME,q,k)∪Retrieve(MS,q,k)
最终响应:
r ← AgentSystem ( M r e l , q ) r\leftarrow\operatorname{AgentSystem}(\mathcal{M}_{rel},q) r←AgentSystem(Mrel,q)
4. 为什么 Coherence 可能击败 Embedding
Query"John 喜欢 LeBron James 的什么?"与"Meeting LeBron James"词面高度相似;但真正答案可能藏在 John 自己的 Professional Basketball Journey,因为他的欣赏与职业理想存在逻辑联系。
Embedding 选择前者,Coherence Retriever 则可能选择后者。
5. 代价
LLM 推理式 Retriever 比向量 Top-k 慢。Amory 的在线延迟主要来自这里。因此它不是"免费提高质量",而是在质量与实时性之间选择中间点。
九、完整算法
Algorithm 1 可以概括为:
- 接收 Query,加入对话历史;
- 若历史长度不超过 T T T,使用 Full Context;
- 否则从 M E \mathcal{M}_E ME 和 M S \mathcal{M}_S MS 检索最多 k k k 条 Memory;
- 生成响应并写回历史;
- 异步初始化或 Binding;
- 对 Inactive Episodic Memory 执行 Consolidation 与 Semanticization。
Algorithm 1:Amory Dynamic Working Memory。 展示短历史 Full Context、长历史双记忆检索,以及异步 Binding、Consolidation 和 Semanticization 流程。
1. Buffer Context 变体
Appendix Algorithm 2 在 Memory Retrieval 之外保留最近 B B B 轮原始对话:
H b u f = Last B turns of H \mathcal{H}_{buf}=\text{Last }B\text{ turns of }\mathcal{H} Hbuf=Last B turns of H
在线输入变成:
( M r e l , H b u f , q ) (\mathcal{M}{rel},\mathcal{H}{buf},q) (Mrel,Hbuf,q)
其作用有两个:
- 避免异步 Memory Processing 尚未完成时丢失最新上下文;
- 为后台处理争取额外时间。
Algorithm 2:带 Buffer Context 的 Dynamic Working Memory。 展示将最近 B B B 轮原始上下文与 Retrieved Memory 共同用于在线回答的工程变体。
十、实验设置
1. LOCOMO
主实验使用 LOCOMO 长期对话记忆基准:
- 10 个 Scenario;
- 每段对话约 20K Token;
- 每个 Scenario 约 200 个问题;
- 问题分为 Multi-hop、Temporal、Commonsense、Single-hop。
2. Baselines
Working Memory Systems
- Mem0;
- A-MEM;
- Zep;
- ReadAgent。
Retrieval / Context Baselines
- Naive RAG;
- HippoRAG;
- Full Context(FC)。
3. Backbone
论文为 Amory 与所有 Baseline 统一使用 Claude 3.5 Sonnet V2。
4. 评价指标
J-score
LLM-as-a-Judge 判断生成答案与 Ground Truth 是否语义相同,报告 Accuracy。
论文没有使用 BLEU/ROUGE,因为短答案的表面形式差异会产生较大噪声。
Online Latency
报告:
- p50;
- p90;
- p95;
- p99。
Coverage Rate
Top-k Retrieved Memory 是否包含全部标注 Ground-truth Evidence。
Context Compression Rate
完整对话中未在查询时使用的比例:
Compression = 1 − ∣ Retrieved Context ∣ ∣ Full Conversation ∣ \operatorname{Compression}=1-\frac{|\text{Retrieved Context}|}{|\text{Full Conversation}|} Compression=1−∣Full Conversation∣∣Retrieved Context∣
十一、主实验:回答质量
Method Multi-hop Temporal Commonsense Single-hop Overall Mem0 53.1 51.4 69.2 65.7 59.9 A-MEM 15.6 37.8 53.8 44.3 37.5 Zep 31.2 5.4 76.9 32.9 29.6 RAG 34.4 29.7 69.2 70.0 52.6 HippoRAG 21.9 72.9 77.1 55.7 54.5 ReadAgent 68.8 75.4 75.0 85.7 79.8 Full Context 82.6 76.6 75.0 92.2 86.1 Episodic Memory 85.6 87.7 78.1 86.8 86.3 Episodic + Semantic 84.5 90.4 76.1 89.0 87.7 \begin{array}{l|ccccc} \hline \textbf{Method} & \textbf{Multi\text{-}hop} & \textbf{Temporal} & \textbf{Commonsense} & \textbf{Single\text{-}hop} & \textbf{Overall} \\ \hline \text{Mem0} & 53.1 & 51.4 & 69.2 & 65.7 & 59.9 \\ \text{A\text{-}MEM} & 15.6 & 37.8 & 53.8 & 44.3 & 37.5 \\ \text{Zep} & 31.2 & 5.4 & 76.9 & 32.9 & 29.6 \\ \text{RAG} & 34.4 & 29.7 & 69.2 & 70.0 & 52.6 \\ \text{HippoRAG} & 21.9 & 72.9 & 77.1 & 55.7 & 54.5 \\ \text{ReadAgent} & 68.8 & 75.4 & 75.0 & 85.7 & 79.8 \\ \text{Full Context} & 82.6 & 76.6 & 75.0 & \mathbf{92.2} & 86.1 \\ \text{Episodic Memory} & \mathbf{85.6} & 87.7 & \mathbf{78.1} & 86.8 & 86.3 \\ \mathbf{\text{Episodic + Semantic}} & 84.5 & \mathbf{90.4} & 76.1 & 89.0 & \mathbf{87.7} \\ \hline \end{array} MethodMem0A-MEMZepRAGHippoRAGReadAgentFull ContextEpisodic MemoryEpisodic + SemanticMulti-hop53.115.631.234.421.968.882.685.684.5Temporal51.437.85.429.772.975.476.687.790.4Commonsense69.253.876.969.277.175.075.078.176.1Single-hop65.744.332.970.055.785.792.286.889.0Overall59.937.529.652.654.579.886.186.387.7
Table 1:LOCOMO 回答质量。 展示各 Memory Framework 在 Multi-hop、Temporal、Commonsense 与 Single-hop 四类任务上的 J-score。
1. 相比 Working Memory Baseline
EM+SM 总体 87.7,Mem0 为 59.9,绝对提升 27.8 个百分点。这是论文摘要所说的"up to +27.8%"的来源,准确说法是百分点而非相对百分比。
2. 与 Full Context 相当但并非所有类别都领先
EM+SM 总体高于 FC 1.6 个百分点:
87.7 − 86.1 = 1.6 87.7-86.1=1.6 87.7−86.1=1.6
在 Temporal 上,EM+SM 为 90.4,FC 为 76.6,提高 13.8 个百分点。论文正文写"+11.0%",该数字与 Table 1 的直接差值不一致;即使使用 EM 的 87.7,相对 FC 也为 11.1 个百分点。正文很可能把 EM 的提升与 EM+SM 混用了。
在 Multi-hop 上,EM 为 85.6,高于 FC 82.6 的 3.0 个百分点,符合正文表述。
3. Single-hop 是主要退化项
EM+SM 在 Single-hop 上为 89.0,低于 FC 的 92.2,差 3.2 个百分点。论文认为 Full Context 直接访问原始完整对话,更容易找到明确单点事实。
这说明 Narrative Compression 有可能遗漏或概括掉一个只出现一次的细节;Semantic Memory 缩小了差距,但没有完全追上 FC。
4. Semantic Memory 的贡献并不全面
从 EM 到 EM+SM:
- Temporal:87.7 → 90.4;
- Single-hop:86.8 → 89.0;
- Multi-hop:85.6 → 84.5;
- Commonsense:78.1 → 76.1。
Semantic Memory 主要帮助外围事实和时间信息,却在 Multi-hop、Commonsense 上略降。这可能来自图检索噪声或额外上下文干扰。
因此,实验支持"双记忆总体更好",但不支持 Semantic Memory 对所有问题都有效。
十二、在线延迟:Amory 是否真的适合实时对话
Method p 50 p 90 p 95 p 99 Mem0 1.04 1.63 1.81 2.07 A-MEM 0.77 1.06 1.25 2.09 Zep 1.25 1.65 1.74 2.27 RAG 1.50 2.15 2.40 3.17 HippoRAG 3.51 6.01 7.00 9.72 ReadAgent 10.59 15.33 18.00 25.50 Full Context 4.18 6.08 6.92 9.35 EM 2.19 2.94 3.23 3.84 EM+SM 2.28 3.21 3.68 4.18 \begin{array}{l|cccc} \hline \textbf{Method} & \mathbf{p50} & \mathbf{p90} & \mathbf{p95} & \mathbf{p99} \\ \hline \text{Mem0} & 1.04 & 1.63 & 1.81 & 2.07 \\ \text{A\text{-}MEM} & 0.77 & 1.06 & 1.25 & 2.09 \\ \text{Zep} & 1.25 & 1.65 & 1.74 & 2.27 \\ \text{RAG} & 1.50 & 2.15 & 2.40 & 3.17 \\ \text{HippoRAG} & 3.51 & 6.01 & 7.00 & 9.72 \\ \text{ReadAgent} & 10.59 & 15.33 & 18.00 & 25.50 \\ \text{Full Context} & 4.18 & 6.08 & 6.92 & 9.35 \\ \text{EM} & 2.19 & 2.94 & 3.23 & 3.84 \\ \text{EM+SM} & 2.28 & 3.21 & 3.68 & 4.18 \\ \hline \end{array} MethodMem0A-MEMZepRAGHippoRAGReadAgentFull ContextEMEM+SMp501.040.771.251.503.5110.594.182.192.28p901.631.061.652.156.0115.336.082.943.21p951.811.251.742.407.0018.006.923.233.68p992.072.092.273.179.7225.509.353.844.18
Table 1(续):LOCOMO 在线延迟。 展示各 Memory Framework 的 p50、p90、p95 与 p99 响应时间。
1. 相比 Full Context
EM+SM 的 p50 从 FC 的 4.18 秒降到 2.28 秒,减少约 45.5%;p99 从 9.35 秒降到 4.18 秒,减少约 55.3%。因此论文概括为响应时间降低约 50%。
2. 相比低延迟 Memory
Mem0、A-MEM 与 Zep 的 p90 都低于 2 秒,明显快于 Amory。但它们的回答质量也低很多。
Amory 不是最低延迟方案,而是质量---延迟折中:接近 FC 质量,同时避免每次读取完整历史。
3. Agentic Retriever 是主要成本
EM 的 p90 为 2.94,EM+SM 为 3.21。LLM Coherence Reasoning 和 Semantic Graph Query 都比单纯向量搜索更慢。
十三、离线处理成本

Figure 2 展示累计 Token 从 5K 到 20K 时的后台处理时间。
所有方法总体近似线性增长,因为它们只增量处理新对话,而不是每次重建全部 Memory。
- RAG 最快,只需生成 Embedding;
- Amory + Consolidation 比无 Consolidation 更慢;
- 但仍快于 Mem0、A-MEM 等部分 Baseline;
- 离线阶段异步执行,不直接计入用户响应延迟。
需要注意,异步并不等于没有成本。它仍消耗 LLM 调用,且高频对话时后台可能积压。Algorithm 2 的 Buffer 正是在缓解这一问题。
Figure 2:离线 Memory Processing Complexity。 展示累计处理 Token 增长时,各 Memory Framework 的后台处理时间。
十四、Consolidation 消融:什么时候总结最重要
Setting Multi-hop Temporal Commonsense Single-hop Overall No Consolidation 74.8 83.1 65.6 85.2 81.7 Rapid Consolidation 87.4 82.3 71.9 87.1 85.3 Inactive Consolidation 85.6 87.7 78.1 86.8 87.7 \begin{array}{l|ccccc} \hline \textbf{Setting} & \textbf{Multi\text{-}hop} & \textbf{Temporal} & \textbf{Commonsense} & \textbf{Single\text{-}hop} & \textbf{Overall} \\ \hline \text{No Consolidation} & 74.8 & 83.1 & 65.6 & 85.2 & 81.7 \\ \text{Rapid Consolidation} & \mathbf{87.4} & 82.3 & 71.9 & \mathbf{87.1} & 85.3 \\ \text{Inactive Consolidation} & 85.6 & \mathbf{87.7} & \mathbf{78.1} & 86.8 & \mathbf{87.7} \\ \hline \end{array} SettingNo ConsolidationRapid ConsolidationInactive ConsolidationMulti-hop74.887.485.6Temporal83.182.387.7Commonsense65.671.978.1Single-hop85.287.186.8Overall81.785.387.7
Table 2:Consolidation 时机消融。 比较不巩固、固定频率快速巩固与 Narrative 进入 Inactive 后巩固的 J-score。
1. Consolidation 整体有效
No Consolidation 总体 81.7,Rapid 为 85.3,Inactive 为 87.7。把 Fragment 组织成 Subplot 和更新 Main Plot 明显优于持续平铺。
2. Rapid 更适合 Multi-hop
Rapid 在 Multi-hop 达到 87.4,高于 Inactive 的 85.6。更频繁总结可能较早形成可跨片段调用的结构。
3. Inactive 更适合 Temporal 与 Commonsense
Inactive 在 Temporal 达到 87.7,而 Rapid 为 82.3,甚至低于 No Consolidation 的 83.1。
过早 Consolidation 可能破坏时间边界;等待故事动量结束再总结,更容易把一个阶段保留为连续片段。
Commonsense 也从 Rapid 的 71.9 提升到 78.1,说明更自然的故事结构有助于隐含推理。
4. Table 1 与 Table 2 存在数值不一致
Table 1 中 EM 的四分类数字与 Inactive Consolidation 完全相同,但 Overall 写为 86.3;Table 2 写为 87.7。
由于同一分类成绩对应两个 Overall,论文存在内部不一致。文章应分别按原表呈现,不能自行选择一个数字当作唯一真值。EM+SM 的 Table 1 Overall 也是 87.7,进一步增加了混淆可能。
十五、Episodic Memory 如何演化

Figure 3 从一个 Scenario 中选择五条 Episodic Memory:
- 横轴是 Offline Iteration;
- 每行是一条故事;
- 灰色条表示新 Fragment 被绑定;
- 颜色越深,累积 Fragment 越多;
- 红色条表示 Consolidation 后产生 Substory Branch。
图中可以看到:
- 不同故事在不同时间段活跃;
- 同一故事的相关 Fragment 分散在整个长对话中;
- Substory 通常在一个连续活跃块结束时产生;
- 只出现于开头或结尾的短故事可能不需要分支。
这张图直观展示了 Amory 与固定窗口摘要的区别:故事边界由内容动量形成,而不是由 Token 数决定。
Figure 3:Episodic Memory Evolvement。 展示五条 Narrative 随离线迭代积累 Fragment、进入 Inactive 并分支出 Substory 的过程。
十六、Coverage 与 Compression:检索到了答案所需证据吗
1. Coverage Rate
定义为 Top-k Retrieved Memory 包含全部 Ground-truth Evidence 的问题比例。
Coherence Retriever 的 Coverage 随 k k k 增长,并在:
k ≈ 4 k\approx4 k≈4
时趋于饱和。
Temporal 与 Single-hop 的 Coverage 略高于 Answer Accuracy,说明即使证据齐全,LLM 仍可能推理错误。
Multi-hop 中 Coverage 有时略低于 Accuracy。人工检查发现,LOCOMO 的标注 Span 并不覆盖对话中全部等价证据,Amory 可能找到未被标注但足以回答的信息。
2. Coherence 与 Embedding Retriever
Embedding Retriever 在 Multi-hop 上 Coverage 明显下降。它偏向选词面接近的 Narrative,而忽略人物动机、因果与故事连续性。
3. Compression Rate
在默认 k = 2 k=2 k=2 时,中位 Context Compression 超过 96.3%。即查询时通常只使用完整历史的不到 3.7%。
随着 k k k 增大,Coverage 提高,但 Compression 下降。这是典型的证据覆盖与上下文成本权衡。

Figure 4:Memory Coverage 与 Context Compression。 左、中图比较 Coherence/Embedding Retriever 的 Top-k Coverage,右图展示不同 Top-k 下的 Context Compression Rate。
十七、Retriever 定性案例

Table 3:Coherence 与 Embedding Retriever 案例。 对比三个 Query 的 Top-1 Narrative 选择及其 Embedding Similarity。
三个案例中,Embedding 选择的 Memory 相似度都更高,却不是正确故事。
这表明:
高相似度衡量的是词汇和语义表面接近,不等于这条记忆能够在叙事逻辑上回答问题。
不过 Table 3 只展示三个成功案例,不能单独证明总体优势。真正的定量证据来自 Figure 4 Coverage。
十八、Agentic Scenario:35 万 Token 中找回分散约束
1. 为什么需要额外实验
LOCOMO 主要测试人物长期对话。论文进一步验证 Narrative Memory 能否用于真实 Agent 任务,例如代码生成、数据分析和文档处理。
2. 数据构造
从 AgentIF 选取 200 条 Instruction,每条包含多个编号约束。
构造过程:
- 将约束拆成多个对话轮次;
- 每轮以 p = 0.5 p=0.5 p=0.5 概率切换到另一个任务;
- 使用 GPT-4-mini 生成 Agent 响应;
- 得到约 350,000 Token 的多任务交错对话。
测试目标是:给定某条 Instruction,Memory Framework 能否找回散落在历史中的全部约束。
3. 结果
Framework Constraint Recall (%) Zep 21.3 HippoRAG 23.9 A-Mem 27.8 Mem0 25.1 ReadAgent 36.8 EM+SM 47.4 \begin{array}{l|c} \hline \textbf{Framework} & \textbf{Constraint\ Recall\ (\%)} \\ \hline \text{Zep} & 21.3 \\ \text{HippoRAG} & 23.9 \\ \text{A\text{-}Mem} & 27.8 \\ \text{Mem0} & 25.1 \\ \text{ReadAgent} & 36.8 \\ \mathbf{\text{EM+SM}} & \mathbf{47.4} \\ \hline \end{array} FrameworkZepHippoRAGA-MemMem0ReadAgentEM+SMConstraint Recall (%)21.323.927.825.136.847.4
Table 4:长周期 Agentic Conversation 约束召回。 展示不同 Memory Framework 在 35 万 Token AgentIF 合成对话中的 Constraint Recall。
Amory 超过最强 Baseline ReadAgent 10.6 个百分点。
原因是很多 AgentIF Instruction 都以"You are a..."开头,Embedding 容易混淆不同任务。Amory 根据用户约束与 Agent 回应之间的连续关系,把同一任务的分散轮次聚为 Narrative。
4. 结果也暴露明显边界
即使最优的 Amory Recall 也只有 47.4%,仍漏掉一半以上约束。对于需要严格遵守全部要求的 Coding/Tool Agent,这一水平远不足以直接用于高可靠执行。
而且 35 万 Token 对话是人工合成的,Topic Switching 概率固定为 0.5,不能代表真实项目全部复杂性。
十九、附录中的 Prompt 与实现细节
1. Story Initialization Prompt
要求 LLM 将多轮、多日期对话组织成 Stories,每条包含 Owner、Topic 与原始 Content,并强调逻辑和时间连续性。
2. Memory Binding Prompt
只用 Recent Context 理解当前 Turn,再判断 Extend Existing Story 或 Create New Story。输出严格路由结构。
3. Consolidation Prompt
根据 New Memory Items 形成一个或多个 Substory,并判断 Main Topic 是否仍覆盖全部 Substory。
4. Semanticization Prompt
抽取无法从 Main/Substory Topic 推断,却具有独立价值的事实及时间戳。
5. Coherence Retrieval Prompt
给定 Question 与 Story Titles,选择最多 k k k 条最可能包含答案的故事。
值得注意的是,论文所谓"Agentic Reasoning"主要由若干单步 LLM Prompt 实现,并没有复杂的多 Agent 规划或工具循环。它的 Agentic 性体现在 LLM 主动判断、路由和重组 Memory,而不是固定规则处理。
二十、与 Agent Memory 系列方法横向比较
以下比较是根据各方法公开机制进行的系列化归纳,不代表 Amory 论文完成了全部直接实验。
| 方法 | 核心记忆结构 | 形成机制 | 检索机制 | 与 Amory 的主要区别 |
|---|---|---|---|---|
| A-MEM | Memory Note + 动态链接 | 新记忆生成属性和关联 | 语义检索与链接扩展 | Amory 用 Narrative/Plot 代替通用关联网络 |
| MAGMA | 多类关系图 | 多视角写入与更新 | 多图检索 | Amory 结构类型更少,但强调故事连贯性 |
| CoM | 经历与巩固后记忆 | 形成、整合与巩固 | 按认知过程调用 | Amory 将 Consolidation 具体化为 Momentum-triggered Subplot |
| ReMemR1 | 可回访记忆 | Callback 补回历史证据 | 历史检索 | Amory 在离线阶段整理现有片段,不主动回访遗漏原文 |
| Mem²Evolve | Memory + Meta-memory | 共同演化 | 动态策略 | Amory 的 Prompt 和阈值固定,没有学习 Consolidation 策略 |
| MemSearch-o1 | Seed--Fragment--Path | 查询驱动证据生长 | 路径回溯 | Amory 处理跨月对话经历,而非单次 Search Working Memory |
| SteeM | 可调依赖行为 | SFT + GRPO | Memory 已检索后控制使用强度 | Amory 优化记忆内容与召回,SteeM 优化模型依赖程度 |
| Amory | Episodic Narrative + Semantic Graph | Binding + Momentum Consolidation + Semanticization | Coherence-driven Reasoning | 把人物、情节与子情节作为长期对话的第一组织原则 |
1. 与 A-MEM
论文主表中 A-MEM 表现异常低,Overall 只有 37.5。这个结果来自统一 Claude 3.5 Sonnet V2 设置,但论文没有深入分析为什么 A-MEM 远低于其原始报告。
两者本质差异是:A-MEM 让每条 Note 形成开放式关联;Amory 从一开始就要求相关 Fragment 属于一个 Narrative,并通过 Plot 层级组织。
2. 与 CoM
两者都强调 Consolidation,但 Amory 给出了明确触发信号:Narrative Inactivity。它把抽象认知概念变成可以运行的工程策略。
3. 与 MAGMA
MAGMA 适合显式表达时间、语义、因果等多种边;Amory 不为每种关系单独建图,而让 LLM 用 Narrative Coherence 隐式综合这些线索。前者更可查询,后者更自然但可解释性较弱。
4. 与 SteeM
Amory 解决"怎样形成和召回更连贯的 Memory";SteeM 解决"召回后当前回答应该依赖多少"。二者组合后,用户可以在高质量 Narrative Memory 上选择 Insider 或 Fresh-eye 模式。
二十一、对 Coding Agent 的启发
以下内容是从 Amory 机制延伸的工程推演,不是论文原实验。
1. 将一个 Bugfix 组织为 Episodic Narrative
一条 Coding Narrative 可以包含:
- Characters:模块、服务、开发者、测试;
- Main Plot:登录状态失效问题;
- Subplot 1:复现与日志调查;
- Subplot 2:Token Refresh 修复;
- Subplot 3:回归测试与上线反馈;
- Fragments:具体 Commit、错误栈、测试结果。
这比把每次搜索、修改和测试做成独立 Embedding 更能保留修复过程。
2. Momentum 可以判断何时总结调查
当 Agent 持续围绕同一报错查文件时,不要每一步都总结;当它切换到另一个假设或开始写补丁时,再将前一阶段巩固成 Subplot。
3. Semantic Memory 保存外围事实
例如"该项目使用 Node 22""CI 只在 Linux 运行"可以成为独立事实;某次复杂故障的因果链仍应留在 Episodic Narrative。
4. 召回可靠性仍需加强
AgentIF 实验只有 47.4% Constraint Recall。Coding Agent 不能仅依赖 Narrative Retriever,还应把接口契约、测试要求和安全规则放入确定性 Constraint Store。
二十二、对 Tool Agent 与 Multi-Agent 的启发
1. Tool Agent
工具执行往往是一段有情节的 Episode:
用户目标 → 权限检查 → 工具调用 → 结果 → 修正 \text{用户目标}\rightarrow\text{权限检查}\rightarrow\text{工具调用}\rightarrow\text{结果}\rightarrow\text{修正} 用户目标→权限检查→工具调用→结果→修正
下一次相似任务需要回忆完整过程,而不仅是某一次 API 返回。
2. Multi-Agent
不同 Agent 的消息可以按共同 Goal 绑定为 Narrative,而不是按 Agent 身份分别存储。Characters 字段天然适合记录谁提出计划、谁执行、谁验证。
3. Narrative 与 Workflow 的区别
Workflow 描述理想步骤,Narrative 保存实际发生的过程,包括失败、转折和修正。长期 Agent 需要两者:Workflow 用于行动,Narrative 用于解释过去为什么形成当前状态。
二十三、局限性
1. 主要基准规模有限
LOCOMO 只有 10 个 Scenario。虽然每段对话很长,但主题和表达风格有限,难以证明对真实用户长期使用的泛化。
2. AgentIF 实验仍是合成的
约束由固定规则拆分,Topic Switch 概率为 0.5,响应由 GPT-4-mini 生成。真实 Coding/Tool Session 中的噪声、回退、权限错误和多人协作更复杂。
3. 依赖单一强 Backbone
所有方法使用 Claude 3.5 Sonnet V2。论文没有测试较小开源模型能否可靠执行 Story Binding、Consolidation 和 Coherence Retrieval。
4. Agentic Reasoning 成本高
后台需要多次 LLM 调用,在线 Retrieval 也依赖 LLM。虽然响应比 Full Context 快,但仍慢于 Mem0、A-MEM 和 Zep。
5. 异步一致性问题
如果新 Query 到达时后台尚未完成 Binding 或 Consolidation,Memory 可能落后于真实对话。Buffer 能缓解,却没有从根本上解决并发更新、失败重试和版本一致性。
6. Narrative Boundary 由 LLM 主观判断
系统没有可验证的 Ground Truth 来判断哪些 Fragment 应属于同一故事。错误 Binding 会逐步累积,并影响 Consolidation 与 Retrieval。
7. Semanticization 研究不足
论文承认没有完整探索 Episodic → Semantic 转换。EM+SM 在 Multi-hop 与 Commonsense 还低于纯 EM,说明 Semantic Memory 可能引入噪声。
8. LLM-as-a-Judge
J-score 使用修改后的 Mem0 Judge Prompt,论文认为原 Rubric 过于宽松。但没有报告人类复核、Judge 一致性或统计显著性,指标可能受 Prompt 与 Judge 模型偏差影响。
9. Table 内部数据不一致
Table 1 的 EM Overall 为 86.3,Table 2 同分类成绩对应的 Inactive Consolidation Overall 为 87.7。正文也把部分 EM 和 EM+SM 提升混用。读者复现时需要优先核对代码或作者说明。
10. 缺少完整组件消融
论文没有单独报告:
- 去掉 Characters;
- 只用 Main Plot、不用 Subplot;
- 去掉 Semanticization;
- EM+SM 改用 Embedding Retrieval 后的完整 Answer Score;
- 不同 T , N , k T,N,k T,N,k 的敏感性。
Figure 4 比较了 Retriever Coverage,却不能完全替代端到端消融。
11. "Comparable to Full Context"需要分类理解
Overall 略高于 FC,但 Single-hop 明显低于 FC;Amory 的主要优势集中在 Multi-hop 与 Temporal。不能把总体平均扩展成所有问题类型都等价。
二十四、我的理解与启发
1. Amory 的核心不是双 Memory,而是 Narrative-first
Episodic + Semantic 双系统并非全新概念。真正改变方法行为的是:
系统先判断一段话属于哪个正在发展的故事,再决定如何总结和召回。
如果没有 Narrative Binding,后面的 Consolidation 只是普通摘要,Semanticization 也只是普通知识图谱抽取。
2. Memory Formation 应该发生在"安静时刻"
Amory 将复杂整理放在 Offline,并在 Narrative Inactive 时巩固。这与人类在经历之后回顾和总结很相似。
对工程系统而言,"安静时刻"可以是:
- 用户切换项目;
- Session 结束;
- 工具链完成;
- 测试通过;
- 一段时间无新事件。
3. 记忆关系不一定需要显式成边
有些联系适合图边,例如"出生于""依赖于";另一些联系更像"这是同一个故事的一部分"。强行把后者变成实体关系会损失整体语境。
Narrative 是一种介于原始文本和知识图谱之间的结构:比文本更有组织,比三元组保留更多情景。
4. Consolidation 的时机与内容同样重要
Table 2 最有价值的结论不是"总结有效",而是"什么时候总结会改变记忆质量"。Rapid Consolidation 提升 Multi-hop,却损害 Temporal;Inactivity 作为自然边界更均衡。
未来记忆系统应该把 Consolidation Trigger 当成可学习策略,而不是固定 Cron Job。
5. Coverage 应与 Answer Accuracy 分开
检索系统可能已经找到全部证据,但生成模型仍答错;也可能靠常识猜对。Amory 单独报告 Coverage,是比只看最终准确率更清晰的诊断方式。
Agent Memory 评测至少应该拆成:
- Formation Quality;
- Retrieval Coverage;
- Context Compression;
- Generation Accuracy;
- Latency;
- Update Cost。
6. Narrative Memory 需要置信度和可修订机制
一旦 Main Plot 或 Subplot 标错,后续检索会被错误结构放大。未来可以为每次 Binding 记录:
- 置信度;
- 支撑 Fragment;
- 替代 Narrative;
- 最近验证时间;
- 是否允许 Merge / Split。
7. 更完整的架构应是多形态 Memory
我认为 Amory 最适合作为其中一层:
- Narrative Memory 保存经历;
- Semantic Memory 保存独立事实;
- Constraint Memory 保存不可违反要求;
- Procedural Memory 保存可执行 Workflow;
- Meta-memory 决定何时绑定、巩固、遗忘和回访。
Amory 证明 Narrative 层有价值,但 Agent 的全部长期知识不能只靠故事表达。
二十五、总结
Amory 面向长期对话中"Full Context 太慢、Fragment Retrieval 又太碎"的矛盾,提出 Narrative-driven Agent Memory。
系统在对话较短时使用 Full Context;超过 20 轮后,将历史初始化为多条 Episodic Narratives。新交互由 LLM 根据人物、主题和逻辑连续性绑定到已有故事或创建新故事。当一条 Narrative 暂时不再接收新片段时,系统执行 Momentum-aware Consolidation,将最近 10 个片段组织成 Subplot,并在必要时更新 Main Plot。与主线松散关联的外围事实则被 Semanticization 为图三元组。
在线阶段,Amory 让 LLM 根据 Narrative Headline、Characters 和 Subplot 做 Coherence-driven Retrieval,再结合 Semantic Graph 事实回答问题。
在 LOCOMO 上,EM+SM Overall J-score 为 87.7,Mem0 为 59.9,Full Context 为 86.1;同时 p50/p99 延迟相对 Full Context 分别下降约 45.5% 和 55.3%。在 35 万 Token AgentIF 合成场景中,Constraint Recall 达到 47.4%,高于 ReadAgent 的 36.8,但绝对召回率仍不足一半。
实验最有启发的发现包括:Inactivity-triggered Consolidation 对 Temporal 与 Commonsense 更有效;Coherence Retriever 的 Coverage 明显高于 Embedding Retriever;默认 k = 2 k=2 k=2 时中位 Context Compression 超过 96.3%。
同时,论文也存在明显证据边界:数据主要是合成或小规模基准,依赖单一强模型和 LLM Judge,Semanticization 消融不足,在线 Agentic Retrieval 仍有延迟,Table 1/2 还存在 Overall 数值不一致。
一句话总结:
Amory 的核心贡献,是让长期 Agent 不再把过去保存成一堆等待相似度检索的碎片,而是在异步阶段主动把经历写成会生长、会分支、会巩固的故事,并在需要时按叙事连贯性进行回忆。