E-mem: Multi-Agent Based Episodic Context Reconstruction for LLM Agent Memory
论文阅读:E-mem:把长期记忆从“召回给主模型”改成“局部情景重构”
论文标题:E-mem: Multi-Agent Based Episodic Context Reconstruction for LLM Agent Memory
作者:Kaixiang Wang, Yidan Lin, Jiong Lou, Zihan Wang, Bunyod Suvonov, Zhaojiacheng Zhou, Yuxiang Zheng, Jiaxi Cao, Zhiheng Dong, Chentao Wu, Jie Li
发表位置:Proceedings of the 43rd International Conference on Machine Learning, Seoul, South Korea, PMLR 306, 2026
arXiv 编号:2601.21714v4
原文链接:https://arxiv.org/abs/2601.21714
PDF:https://arxiv.org/pdf/2601.21714
代码:https://github.com/dog-last/E-mem
主题:LLM Agent Memory、Episodic Memory、Multi-Agent System、Long-Context Reasoning、Memory Routing
核心问题:长期记忆系统如果只把历史压缩成 embedding、摘要、图或层级索引,可能破坏原始时间顺序和上下文依赖;E-mem 试图保留原始情景块,并在查询到来时让被激活的子代理在各自块内先做局部推理,再把证据交给主代理聚合。
1. 这篇论文真正关注的问题
这篇论文讨论的是 LLM Agent 的长期记忆。随着 Agent 从简单问答系统变成能够规划、调用工具、执行任务的系统,它们需要在更长时间跨度内保持状态、事件、因果链和人物关系的一致性。
论文认为,困难不只是上下文窗口有限。即使模型窗口变长,LLM 也可能出现 “lost-in-the-middle” 问题:关键信息虽然在上下文里,但模型不能稳定利用。于是很多系统使用外部记忆:先把历史切块,再把块转换成 embedding、摘要、知识图谱或层级索引,用户提问时再检索相关记忆。
论文认为这种传统路线有一个核心风险:destructive de-contextualization,也就是破坏性的去上下文化。原始历史中的时间顺序、状态变化、指代关系和多跳线索,被压缩进固定结构之后,可能不再以原本的顺序和上下文形态存在。对于简单事实查询,这种压缩可能足够;但对于复杂长期推理,它可能导致错误。

【论文 Figure 1。该图上半部分展示传统 memory preprocessing:原始记忆被预处理成 embedding、graph、hierarchy 等结构后再用于问答,可能导致信息损失;下半部分展示 E-mem:先把原始记忆切成 episodic contexts 并归档,查询时通过路由重构相关上下文。】
因此,E-mem 的目标不是再提出一种更复杂的摘要结构,而是改变长期记忆的使用方式:
传统方式:
query → retrieve raw chunks / processed memories → 塞给主 LLM → 主 LLM 回答
E-mem:
query → route to relevant memory units
→ 每个子代理在自己的原始 chunk 内局部推理
→ 子代理返回 evidence
→ 主代理只聚合 evidence 并生成最终答案
这里的关键变化在于:召回之后,不是把完整 chunk 交给主代理,而是让 chunk 对应的 assistant agent 先在局部原文中完成一次 evidence extraction / local reasoning。
2. 方法定位:不是“怎么存 chunk”最特殊,而是“召回后怎么用 chunk”最特殊
从工程角度看,E-mem 的存储阶段并不神秘。它仍然会做长期历史切块、摘要、索引、归档。与许多 RAG 或 memory system 相似,它也需要为每个 chunk 准备可检索的表示。
但 E-mem 的特殊点在于:每个 chunk 不只是资料库中的一段文本,而是一个可以被激活的 episodic context holder。被召回后,它不会直接把原文返回给主代理,而是由对应 assistant 在这个原始上下文中读取、筛选、推理,再返回更短、更有结构的证据。
可以把 E-mem 的记忆单元理解为下面这个结构:
MemoryUnit_i = {
raw_context: E_i, # 原始未压缩 chunk
summary: s_i, # 给路由用的简短摘要
dense_embedding: v_i, # 给向量语义召回用
keyword_index: k_i, # 给关键词 / 实体 / BM25 类召回用
assistant_agent: A_i # 负责读取 E_i 的局部子代理
}
论文中的主代理和子代理分工如下:
| 组件 | 保存或接收的信息 | 主要职责 |
|---|---|---|
Router R |
query、chunk summaries、embeddings、keyword indexes | 决定激活哪些 memory units |
Assistant Agent A_asst^i |
自己的原始上下文 E_i、用户问题 q |
在局部原文中找证据、做初步推理、返回 evidence |
Master Agent A_master |
用户问题 q、多个 assistant 返回的 evidence |
去噪、时间冲突解决、多跳合成、生成最终答案 |
所以,E-mem 不是简单说“多智能体更强”,而是把长期记忆任务拆成了两层:
- 局部证据抽取:由多个小模型 assistant 在各自 chunk 中完成;
- 全局逻辑综合:由 master agent 只处理短证据集合。
这就是论文所谓从 Memory Preprocessing 转向 Episodic Context Reconstruction 的主要含义。
3. 整体架构:Master 不读完整历史,Assistant 才读原始 chunk
论文把 E-mem 定义为一个异构层级式多智能体系统:
F = <A_master, {A_asst^i}_{i=1}^N, R>
其中:
A_master是主代理,负责全局规划与最终综合;{A_asst^i}是多个 assistant agents,每个 assistant 对应一个记忆块;R是 multi-pathway routing mechanism,用于选择哪些 assistant 被激活。

【论文 Figure 2。该图展示 E-mem 的三个阶段:Memory Building and Storing、Memory Activation via Multi-Pathway Routing、Synergistic Reasoning and Response Generation。重点观察中间路由模块如何连接左侧 archived memory 和右侧 assistant/master 推理模块。】
这里最重要的设计是:master agent 被从 raw memory retention 中解耦出来。 它不直接读取所有原始历史,也不直接把多个长 chunks 拼在自己上下文里。它只接收被激活 assistants 返回的局部证据。
论文中 master 的操作可以抽象为:
R_final = A_master(q, {e_i | i ∈ A*})
其中 q 是用户问题,A* 是被路由机制激活的 assistant 集合,e_i 是第 i 个 assistant 返回的局部证据。
对应地,每个 assistant 保存两个表示:
S_i = <E_i, s_i>
E_i:完整原始 token 序列,用于局部细粒度推理;s_i:轻量摘要,用于全局路由。
也就是说,摘要用于找 chunk,原文用于在 chunk 内推理。 论文反对的不是“用摘要或 embedding 辅助检索”,而是反对只依赖这些压缩表示来完成最终推理。
4. 记忆构建:如何把历史变成 archived memory units
E-mem 把输入历史看成一个无限输入流:
X = (x_1, x_2, ...)
然后用滑动窗口切成多个 episodic contexts:
E = {E_1, E_2, ..., E_N}
窗口长度是 L,步长是 S,且 S < L。因此相邻 chunk 之间存在 overlap:
δ = L - S
第 i 个 chunk 被定义为:
E_i = {x_t | (i - 1)S < t ≤ (i - 1)S + L}
overlap 的作用是减少边界切断问题。比如一个事件在 chunk 末尾开始、在下一个 chunk 开头延续,如果完全不重叠,就可能破坏局部语义连续性。
每个 chunk 进入归档前,会经过以下处理:
| 步骤 | 产物 | 作用 |
|---|---|---|
ENCAPSULATE(c_i) |
E_i |
保存原始 episodic context |
SUMMARIZE(E_i) |
s_i |
生成高层摘要,用于 global alignment |
INDEX(E_i) |
v_i, k_i |
生成向量索引与关键词/符号索引 |
ARCHIVE(E_i, s_i, v_i, k_i) |
persistent memory unit | 作为 dormant archived memory 存储 |
可以写成论文 Algorithm 1 的简化版:
Phase 1: Memory Building
C = SlidingWindow(X, L, S)
for each chunk c_i in C:
E_i = Encapsulate(c_i)
s_i = Summarize(E_i)
v_i, k_i = Index(E_i)
Archive(E_i, s_i, v_i, k_i)
这里需要注意:归档状态下的 memory unit 默认是 dormant,不参与推理。只有当用户问题到来,并且路由机制认为它相关时,它才会被切换到 active inference path。
论文还讨论了流式更新。新的 token Δx 会追加到当前 active episodic context:
E'_active ← E_active ∪ {Δx}
当当前上下文达到窗口容量 L 后,它会被固化为一个完整 memory unit;系统再从上一个 chunk 中抽取 overlap 区域,初始化下一个 agent 的上下文:
E_init_{N+1} = Extract(E_N, overlap = δ)
因此,E-mem 的长期记忆不是一次性离线建库,而是可以随着输入流持续增长。
5. 路由机制:谁决定用哪些 chunks?
用户问题到来后,第一步不是直接让 master 读所有 chunk,而是由路由机制 R 进行 coarse-grained localization,选择需要激活的 memory units。
换句话说:
用户问题 q
↓
Router R 根据三类索引信号打分
↓
得到 activated assistant set A*
↓
只有 A* 中的 assistants 会读取各自原始 E_i
论文把路由称为 Memory Activation via Multi-Pathway Routing。它不是单一路径的向量召回,而是三条路径并行:
| 路由路径 | 使用对象 | 解决的问题 |
|---|---|---|
Global Alignment P_global |
query q 与 chunk 摘要 s_i |
捕捉宏观叙事、主题和事件阶段 |
Semantic Association P_vec |
query embedding 与 raw chunk embedding v_i |
捕捉摘要可能漏掉的隐式语义相关性 |
Symbolic Trigger P_kw |
query 与关键词/实体/稀疏索引 k_i |
捕捉名称、ID、地点、对象等精确锚点 |
5.1 Global Alignment:先找“叙事上相关”的片段
P_global 不是直接看完整原文,而是看 query 和每个 chunk 的摘要 s_i。论文说这一通道同时利用 dense vector similarity 和 sparse lexical alignment。它的功能类似一个宏观过滤器:先判断哪个 chunk 在主题、事件阶段或时间叙事上可能相关。
例如用户问“某人四年前从哪里搬来”,含有 “四年前”“搬来” 的 chunk 摘要可能会被激活,即使里面还没有最终答案的具体国家。
5.2 Semantic Association:补偿摘要的信息损失
P_vec 看 query 与原始 chunk embedding v_i 的语义相似度。它的作用是补偿摘要可能造成的遗漏。因为摘要 s_i 是压缩表示,某些隐含关系可能没有被写进去;原始 chunk 的 embedding 有机会捕捉到这些语义联系。
这一路径接近传统 dense retrieval,但区别在于:E-mem 用它来决定激活哪个 assistant,而不是直接把 top-k 文本拼给 master。
5.3 Symbolic Trigger:精确实体触发
P_kw 做显式词面匹配,论文举例可以使用 BM25。它适合找具体人名、地点、物品名、ID 等“稀有但关键”的锚点。
这一路径很重要,因为长期记忆问题中,经常有一些线索和 query 的语义距离不近,但共享某个关键实体。没有这一路径,系统可能只找到语义相似的片段,却漏掉真正补全答案的精确事实。
6. 三路路由结果如何合并?
主文中给出的合并方式是 activation union:只要某个 assistant 被任一路径命中,就可以进入激活集合。
A* = P_global ∪ P_vec ∪ P_kw
这表示 E-mem 宁愿保留多种可能相关的 chunk,再交给 assistant 和 master 做后续过滤,也不完全依赖单一路由信号。
附录进一步给出更工程化的 two-stage cascaded routing algorithm:
for each chunk i:
计算 S_global_i, S_vec_i, S_kw_i
Stage 1: Threshold Override
如果任一分数超过预设阈值:
立即激活 chunk i
Stage 2: Weighted Top-k Fill
对剩余 chunks 的三个分数做 Min-Max normalization
score_i = w1 * S_global_i + w2 * S_vec_i + w3 * S_kw_i
按 score_i 排序,补足剩余 activation budget,直到达到 k 个 chunks
这个设计回答了一个实现问题:如果某个 chunk 在某一路径上特别强,就不应该被综合平均分压下去。 比如一个 chunk 有非常明确的人名匹配,即使摘要相似度不高,也可以通过 threshold override 被立即激活。剩下的候选再用加权综合分填满预算。
论文没有给出统一固定的阈值、w1/w2/w3 或 k 默认值,只说 k 可以根据任务需求调整。因此,在复现或工程实现时,这些是需要调参的部分。
7. 被激活的 assistant 到底收到什么输入?
当 router 得到 A* 后,系统会为每个被激活的 assistant 构造局部任务。第 i 个 assistant 接收的核心输入是:
AssistantInput_i = {
system_prompt_for_assistant,
memory_context: E_i,
user_query: q
}
也就是说,assistant 不是只拿摘要 s_i,也不是只拿 embedding 命中的句子,而是读取自己保存的原始 chunk E_i。这正是 “episodic context reconstruction” 的关键。
论文把 assistant 的局部推理形式化为:
e_i = <c_i, τ_i> = Φ_asst(q | E_i)
其中:
| 字段 | 含义 |
|---|---|
c_i |
从原始 chunk 中推出的语义证据 |
τ_i |
对应事件或状态变化的时间锚点 |
时间锚点很重要。因为长期记忆中的事实可能互相覆盖:钥匙先在抽屉,后来被移到厨房桌上;主代理必须知道哪条证据更晚,才能给出当前状态。
8. Assistant prompt:不是直接回答用户,而是抽取原文证据并给局部推理
论文附录给出了 assistant agent 的系统 prompt。它把 assistant 定义为 memory retrieval and analysis agent,并区分两种模式:
| 模式 | 触发条件 | 输出目标 |
|---|---|---|
| Retrieval Mode | 用户提出具体问题 | 找出相关原始记忆片段,给出初步答案和理由 |
| Summary Mode | 用户要求 summary、recap、overview | 总结记忆中的人物、时间、事件和关键物品 |
在 Retrieval Mode 下,assistant 的重点不是自由生成答案,而是:
- 扫描给定 memory segments;
- 找出和问题直接相关的原始片段;
- 在 evidence 区域保留原文,不先改写或合并;
- 只基于这些片段给出 preliminary answer;
- 用结构化 XML 输出。
可以把它的输出结构概括为:
<response_type>retrieval</response_type>
<relevant_memories>
<memory_segment>...</memory_segment>
<memory_segment>...</memory_segment>
</relevant_memories>
<model_reasoning>
...局部推理与初步答案...
</model_reasoning>
这个 prompt 设计体现了一个很实际的工程意图:assistant 返回给 master 的不只是“我认为答案是什么”,还包括原始证据片段。这样 master 后续可以检查 local inference 是否真的由文本支持。
这也说明,E-mem 中的 assistant 不是完整意义上的独立对话代理,而更像是 带局部上下文阅读能力的 memory worker:它负责在自己的 chunk 内做高保真 evidence extraction。
9. Master prompt:聚合证据、解决冲突、做跨块合成
assistant 处理完各自 chunk 后,master 收到的是:
MasterInput = {
query: q,
raw_memory_results: assistant_outputs
}
论文附录中的 master prompt 把它定义为 Memory Fact Aggregator & Logic Solver。master 的职责包括:
| 任务 | 说明 |
|---|---|
| Noise Elimination | 忽略与问题无关的 evidence block |
| Missing Evidence Handling | 如果证据中没有答案,要明确表示缺失 |
| Latest State Rule | 如果状态冲突,较晚时间戳覆盖较早时间戳 |
| Multi-Hop Synthesis | 把不同块里的线索连接成完整答案 |
| Original Phrasing Rule | 保留原文中的具体名词和专有表达 |
| Pronoun Resolution | 把 “I / me / we” 等指代转成具体说话人或用户 |
| Implicit to Explicit | 把动作隐含的状态显式化,例如“放到桌上”转成“现在在桌上” |
master 输出也是结构化的,核心包括三部分:
<aggregator_output>
<evidence_quotes>...</evidence_quotes>
<logic_trace>...</logic_trace>
<answer_core>...</answer_core>
</aggregator_output>
这里要注意,master prompt 里把 assistant 的 local inference 视为 hints,而不是无条件相信的最终结论。master 需要根据 raw memory content 验证它们。这一点让 E-mem 的多智能体结构更像一个分层证据处理系统:assistant 做局部阅读,master 做全局裁判。
10. Direct Inference 与 Iterative Reasoning
论文把协同推理分成两类。
10.1 Direct Inference
Direct Inference 适用于直接事实查询。流程是:
q → router 激活 A* → assistants 生成 {e_i} → master 聚合 → final response
master 聚合时会比较 evidence 中的时间戳,解决状态变化或冲突。比如两个 chunk 都提到了钥匙位置,较晚时间戳对应的状态应该覆盖较早状态。
10.2 Iterative Reasoning
Iterative Reasoning 用于更复杂的多步任务。master 维护一个动态 reasoning trace:
S^(t)
如果当前证据不足,master 会生成子查询:
q^(t) = π_plan(q_init, S^(t-1))
然后继续 probe relevant assistant agents。assistant 根据子查询在自己的 E_i 中局部推理,返回新的 evidence:
e_i^(t) = Φ_asst(q^(t) | E_i)
master 再把这些新证据合并进全局 trace:
S^(t) ← Agg(S^(t-1), {e_i^(t)})
这个过程直到推理收敛或达到预设迭代上限。论文没有把迭代模式展开成大量实验细节,但它说明 E-mem 不只是一次性检索系统,也可以被扩展为多轮“计划—探测—更新”的深度记忆推理框架。
11. 一个关键案例:为什么不是普通向量检索就够了?
论文附录给了一个 LoCoMo case study:
Question: Where did Caroline move from 4 years ago?
Answer: Sweden
这个问题的难点在于:
- “moved from home country 4 years ago” 这条线索出现在一个 session;
- “home country = Sweden” 的线索出现在另一个 session,且上下文主题可能是 necklace / grandma,而不是 moving;
- 普通向量检索容易找回语义上直接相关的 moving 片段,却漏掉具体国家 Sweden 所在的片段。
E-mem 的处理方式是:
| 步骤 | 作用 |
|---|---|
| Global Alignment | 根据 moving / 4 years ago 这类叙事线索激活相关 session |
| Symbolic Trigger | 根据 country / location 等实体线索激活另一个 session |
| Assistant Local Reasoning | 一个 assistant 找到时间锚点,另一个 assistant 找到具体国家 |
| Master Aggregation | 把“4 年前从 home country 搬来”和“home country 是 Sweden”合并 |
这个例子说明,长期记忆问题有时不是“找一个最相似片段”,而是“找几个语义路径不同但逻辑上互补的片段”。E-mem 的三路路由和子代理局部推理,正是为这种跨块互补证据设计的。
12. 实验设置
论文主要在三个方向评估 E-mem:性能、鲁棒性和成本。
主要数据集包括:
| 数据集 | 任务特点 |
|---|---|
| LoCoMo | 多会话长期对话记忆,包含 single-hop、multi-hop、temporal、open-ended、adversarial 等子任务 |
| HotpotQA | Wikipedia 多跳问答;论文改造成 streaming 设置,用 400、800、1600 documents 测试超长上下文证据召回 |
| AMA benchmark | 附录中用于验证 System 2 reasoning,覆盖动态环境中的多步状态跟踪和规划 |
主要对比方法包括:
| 类别 | 方法 |
|---|---|
| Memory-free baselines | Long-Context Windowing、Standard RAG |
| Memory-based systems | A-Mem、Mem0、MemoryOS、LightMem、GAM |
| 附录补充 | AriGraph、HippoRAG、强长上下文模型等 |
实现上,论文使用 GPT-4o-mini 和 Qwen2.5-14B 作为 master agents,使用 Qwen3-4B 作为 assistant agents。实验在四张 NVIDIA RTX 4090 GPU 上进行。论文还说明,为了公平比较,E-mem 和 baselines 使用相同 master backbone,并限制相同数量的 token budget。
13. LoCoMo 结果:multi-hop 和 temporal 提升明显
LoCoMo 是论文最重要的长期记忆 benchmark。下表摘录 GPT-4o-mini 和 Qwen2.5-14B backbone 下的关键 F1:
| Backbone | 方法 | Overall F1 | Single-Hop F1 | Multi-Hop F1 | Temporal F1 | Open Domain F1 |
|---|---|---|---|---|---|---|
| GPT-4o-mini | Long-Context | 37.31 | 46.68 | 29.23 | 25.97 | 16.87 |
| GPT-4o-mini | RAG | 44.73 | 52.45 | 27.50 | 46.07 | 23.23 |
| GPT-4o-mini | GAM | 45.31 | 47.74 | 34.84 | 53.91 | 26.03 |
| GPT-4o-mini | E-mem | 54.17 | 59.23 | 42.64 | 59.82 | 24.89 |
| Qwen2.5-14B | RAG | 38.27 | 47.87 | 26.38 | 30.78 | 14.16 |
| Qwen2.5-14B | GAM | 50.41 | 56.35 | 38.94 | 53.76 | 20.84 |
| Qwen2.5-14B | E-mem | 57.04 | 61.14 | 49.15 | 63.59 | 22.38 |
从结果看,E-mem 的优势主要出现在 multi-hop 和 temporal 子任务上。这和方法设计一致:它并不是为了简单匹配一个事实,而是为了恢复多个记忆块之间的顺序、状态和逻辑依赖。
也要注意,E-mem 并非所有子项都绝对第一。例如在 GPT-4o-mini 的 Open Domain 子任务上,E-mem 的 F1 为 24.89,低于 Mem0 的 28.64,也低于 GAM 的 26.03。这说明论文的优势更集中在复杂上下文推理,而不是所有生成式开放问题。
14. HotpotQA 结果:大规模文档流中的多跳证据
论文把 HotpotQA 改造成 streaming 设置,测试 400、800、1600 documents 三种规模。
| 方法 | GPT-4o-mini 400 | GPT-4o-mini 800 | GPT-4o-mini 1600 | Qwen2.5-14B 400 | Qwen2.5-14B 800 | Qwen2.5-14B 1600 |
|---|---|---|---|---|---|---|
| Long-Context | 56.56 | 49.71 | 53.92 | 49.75 | 46.82 | 43.17 |
| RAG | 52.71 | 51.84 | 54.01 | 51.81 | 46.72 | 48.36 |
| GAM | 54.75 | 52.86 | 53.71 | 48.40 | 41.10 | 44.32 |
| E-mem | 61.46 | 55.46 | 55.76 | 61.13 | 47.91 | 54.87 |
论文指出,HotpotQA 与 LoCoMo 的信息结构不同。HotpotQA 的证据段落相对更清晰、干扰更低,因此 RAG 在 HotpotQA 上表现比在 LoCoMo 上更好。但在 1600-doc 设置下,E-mem 仍高于 RAG,说明当文档规模变大且需要多跳组合时,情景重构仍然有帮助。
附录还做了 document ordering robustness:HotpotQA 在 normal 和 random document shuffling 下的结果接近,论文据此说明收益来自跨段路由和结构,而不是偶然局部共现。
15. 消融一:assistant 规模和 master backbone
论文在 LoCoMo conversation 1 上测试 assistant scale 和 master backbone。
| 设置 | Overall F1 | Single-Hop F1 | Multi-Hop F1 | Temporal F1 | Open Domain F1 |
|---|---|---|---|---|---|
| Assistant Qwen3-0.6B | 28.89 | 26.40 | 17.32 | 46.44 | 20.77 |
| Assistant Qwen3-1.7B | 44.78 | 40.82 | 35.64 | 65.03 | 31.02 |
| Assistant Qwen3-4B | 50.70 | 49.46 | 42.66 | 66.91 | 31.08 |
| Assistant Qwen3-8B | 49.80 | 45.98 | 52.11 | 62.28 | 29.11 |
| Assistant Qwen3-14B | 50.02 | 49.96 | 46.38 | 64.53 | 30.32 |
论文的解释是:基础 episodic context reconstruction 在 4B 左右已经能达到较好水平;更大的 assistant 对 multi-hop 有明显帮助,但在 single-hop 上可能因为过度推理带来轻微下降。
master backbone 的变化带来的总体波动相对较小,但 master 仍然重要,因为最终的冲突解决和多跳聚合都依赖它。
16. 消融二:chunk size 为什么不能太小也不能太大?
在总记忆预算约 32K tokens 的条件下,论文测试了不同 chunk size:
| Chunk Size | Overall F1 | Single-Hop F1 | Multi-Hop F1 | Temporal F1 | Open Domain F1 |
|---|---|---|---|---|---|
| 4K | 45.89 | 47.05 | 34.67 | 59.37 | 28.93 |
| 8K | 50.70 | 49.46 | 42.66 | 66.91 | 31.08 |
| 12K | 47.97 | 47.63 | 38.04 | 65.44 | 24.51 |
| 16K | 47.08 | 44.81 | 37.18 | 66.24 | 29.11 |
| 32K | 43.00 | 44.50 | 33.79 | 55.30 | 22.64 |
论文给出的解释是倒 U 型:
- chunk 太小:需要召回更多碎片来覆盖同样预算,噪声和无关片段增多;
- chunk 太大:assistant 要处理过长连续序列,容易 attention dilution 或 lost-in-the-middle;
- 8K 在局部上下文完整性和证据多样性之间取得较好平衡。
这部分结果对实现很有参考价值:E-mem 的效果不只是来自“保留原文”,还依赖 chunk 粒度是否合适。
17. 消融三:路由路径到底有没有用?
论文在 HotpotQA-1600 上做了路由消融。完整模型 F1 为 55.76。去掉不同路径后的结果如下:
| 路由设置 | F1 | 解释 |
|---|---|---|
No P_global |
45.30 | 下降最大,说明宏观叙事对齐对避免上下文碎片化很重要 |
No P_vec |
47.90 | 向量语义对捕捉隐式意图仍然关键 |
No P_kw |
52.42 | 下降较小但仍有影响,说明精确实体触发有补充价值 |
| Full | 55.76 | 三路信号互补 |
论文还分析了 activated chunks 数量 k 的影响:较小的激活集合,例如 k = 8,已经足以超过强基线;继续把 k 从 8 增加到 20,只带来有限提升。这说明路由的作用不是尽可能多召回,而是把关键情景依赖压缩到一个较小的候选集合中。

【Figure 3。该图左侧展示 activated chunks 数量对 F1 的影响,右侧展示去掉不同 routing pathway 后的性能下降。】
18. 消融四:为什么不能直接把召回 chunks 塞给 master?
这是理解 E-mem 创新的关键实验。论文比较了完整 MAS 架构和一个更简单的 direct-read pipeline。direct-read pipeline 去掉 assistant agents,把检索到的 raw episodic contexts 直接拼给 master LLM。
| Architecture | Overall F1 | Single-Hop | Multi-Hop | Temporal | Open Domain |
|---|---|---|---|---|---|
| Simpler Pipeline Direct Read | 38.27 | 48.83 | 30.62 | 31.87 | 18.55 |
| E-mem MAS | 54.17 | 59.23 | 42.64 | 59.82 | 24.89 |
结果显示,直接拼 chunks 给 master 会明显下降。论文给出三个原因:
- Cognitive Decoupling:单个 LLM 同时做低层细节抽取和高层逻辑综合,会造成注意力稀释;
- Overcoming Lost-in-the-Middle:多个 raw chunks 拼接后可能超过模型有效推理窗口;assistant 隔离处理自己的 chunk,可以减少原文噪声对 master 的干扰;
- Cost Efficiency:原始文本阅读由小模型承担,强/贵 master 只处理短 evidence,降低 token 成本。
这组实验支撑了前面的核心判断:E-mem 的新意不是“有 chunk archive”,而是“召回后由局部 assistant 先读原文并推理,再交给 master”。
19. 成本、延迟与存储
论文把计算成本分成:
| 记号 | 含义 |
|---|---|
T_S |
Small Model Tokens,例如 Qwen3-4B |
T_L |
Large Model Tokens,例如 GPT-4o |
论文采用保守归一化假设:1 个大模型 token 等价于 10 个小模型 token。
| 方法 | F1 | BLEU-1 | T_S |
T_L |
Total Cost |
|---|---|---|---|---|---|
| Long-Context | 37.31 | 29.57 | none | 16910 | 169100 |
| RAG | 44.73 | 39.40 | none | 643 | 6430 |
| A-mem | 39.65 | 32.31 | none | 2520 | 25200 |
| Mem0 | 45.10 | 34.92 | none | 973 | 9730 |
| MEMORYOS | 42.84 | 35.54 | none | 3874 | 38740 |
| LIGHTMEM | 38.44 | 34.37 | none | 612 | 6120 |
| GAM | 45.31 | 37.78 | none | 1254 | 12540 |
| E-mem | 54.17 | 44.34 | 2271 | 135 | 3621 |
E-mem 的大模型 token 很少,因为 master 不读大段原文。大量原始上下文处理被转移到 assistant 侧的小模型上。
但这不是没有代价。附录中的 latency 对比如下:
| 方法 | F1 | Total Cost | Latency (s) |
|---|---|---|---|
| RAG | 44.73 | 4590 | 2.60 |
| LightMem | 38.44 | 6120 | 2.30 |
| Mem0 | 45.10 | 9730 | 2.17 |
| GAM | 45.31 | 12540 | 14.71 |
| E-mem | 54.17 | 3621 | 11.25 |
所以 E-mem 不是一个低延迟默认方案。它牺牲了一定响应时间,用来换取更高的上下文保真度和复杂推理可靠性。
存储方面,论文区分 dormant memory 和 active computation。Dormant agents 存在磁盘上,每个约 30KB,包含 raw text、summary 和 embedding。系统不长期保存所有 agent 的 KV cache,而是在被路由激活时按需加载。如果使用可选 KV-caching,每个 active agent 约增加 2GB 开销。在显存受限环境中,也可以让单个 LLM 实例顺序处理被激活 agents,以延迟换取峰值显存可控。
20. 连续多会话记忆与鲁棒性
论文附录把 LoCoMo 扩展到五个连续 conversations,不重置记忆,用来测试 lifelong memory accumulation。
| 设置 | Overall F1 | Single-Hop | Multi-Hop | Temporal | Open Domain |
|---|---|---|---|---|---|
| Memory Reset | 54.17 | 59.23 | 42.64 | 59.82 | 24.89 |
| No Reset Continuous | 51.75 | 55.81 | 41.55 | 58.75 | 22.56 |
连续不重置会带来小幅下降,但总体保持稳定。论文还提到,在同样 no-reset 设置下,RAG 和 Mem0 的下降更明显。这个实验说明,E-mem 不是单 session 专用;只要历史被持续归档,路由机制可以跨 session 激活相关 memory units。
不过,它的 session 建模不是显式的“session 层级数据库”。它主要还是把历史作为连续输入流切成 episodic chunks,再通过 routing 跨 chunk 召回。也就是说,它支持跨 session,但核心抽象是 chunk / episodic context,而不是 session schema。
21. 论文指出的局限性与未来方向
论文明确承认 E-mem 存在 latency-fidelity trade-off。传统 RAG 更适合简单 factoid queries 和实时交互;E-mem 更适合复杂、多跳、长程状态跟踪和高精度推理。
论文给出的适用场景包括:
| 场景 | 为什么适合 E-mem |
|---|---|
| 法律与金融取证 | 长时间跨度证据链中漏掉依赖会造成严重后果 |
| 医疗诊断 | 需要综合患者历史中的多个时间点和状态变化 |
| 科学综述 | 需要跨文献连接潜在线索,降低幻觉风险 |
未来方向是一个 Adaptive Dual-Mode Framework:
| 模式 | 适用任务 | 机制 |
|---|---|---|
| Fast Mode | 简单事实查询、日常对话 | 使用标准 RAG,保证实时响应 |
| Deep Research Mode | 复杂规划、多跳推理、长期状态追踪 | 启用 E-mem,进行深度情景上下文重构 |
这相当于把传统检索看成更快的 System 1,把 E-mem 看成更慢但更可靠的 System 2 memory reasoning。
此外,Impact Statement 中还提到长期情景记忆带来的隐私风险、数据治理和访问控制需求,以及更强 System 2 reasoning agent 的对齐问题和虚假记忆风险。
22. 总结
E-mem 的核心贡献可以压缩成一句话:把长期记忆从“召回文本给主代理读”,改成“召回对应的局部记忆代理,让它先在原始 chunk 内重构证据,再交给主代理聚合”。
它的流程可以概括为:
离线 / 流式阶段:
历史 → sliding window chunks → 保存 E_i + 生成 s_i / v_i / k_i → archived memory units
查询阶段:
q → 三路 routing → activation union / two-stage cascaded routing → A*
局部推理阶段:
A_i 读取自己的 E_i → 抽取原文证据 → 生成局部推理 e_i = <c_i, τ_i>
全局聚合阶段:
master 读取 q + {e_i} → 去噪、时间覆盖、多跳合成 → 最终答案
从实验看,E-mem 在 LoCoMo 和 HotpotQA 上取得了较强结果,尤其在 multi-hop 和 temporal reasoning 中优势明显。消融实验说明,三路路由、合适 chunk 粒度、assistant 局部推理和 master 全局聚合都是关键。成本分析则说明,它不是靠把更多长上下文塞给大模型,而是把原文阅读转移给小模型 assistant,让大模型 master 只处理短证据。
同时,E-mem 不是所有查询的默认最优解。对于当前上下文能直接回答的问题,或普通 RAG 能快速解决的简单事实问题,E-mem 的多代理重构会带来不必要延迟。它更适合作为一种深度记忆推理模式,在跨 chunk、多跳、时间顺序、状态覆盖和高可靠场景中启用。
参考
- E-mem: Multi-Agent Based Episodic Context Reconstruction for LLM Agent Memory
- arXiv: https://arxiv.org/abs/2601.21714
- PDF: https://arxiv.org/pdf/2601.21714
- Code: https://github.com/dog-last/E-mem

浙公网安备 33010602011771号