【论文阅读】Agent 记忆机制(47):Nemori——用“预测误差”判断什么经验值得被记住

文章目录

  • 前言
  • 零、论文基本信息
  • 一、背景与问题
    • [1. Agent 记忆系统的三个阶段](#1. Agent 记忆系统的三个阶段)
      • [1.1 记忆蒸馏](#1.1 记忆蒸馏)
      • [1.2 记忆管理](#1.2 记忆管理)
      • [1.3 记忆检索](#1.3 记忆检索)
    • [2. 现有方法在什么时候判断记忆价值](#2. 现有方法在什么时候判断记忆价值)
  • 二、相关工作与理论动机
    • [1. 从启发式记忆到数据驱动记忆](#1. 从启发式记忆到数据驱动记忆)
    • [2. Predictive Coding](#2. Predictive Coding)
    • [3. Complementary Learning Systems](#3. Complementary Learning Systems)
    • [4. 三个设计原则](#4. 三个设计原则)
      • [4.1 保持事件完整性](#4.1 保持事件完整性)
      • [4.2 将原始对话转换为叙事记忆](#4.2 将原始对话转换为叙事记忆)
      • [4.3 可预测的信息通常是冗余信息](#4.3 可预测的信息通常是冗余信息)
  • [三、Nemori 方法总览](#三、Nemori 方法总览)
  • [四、模块一:Episodic Memory Integration](#四、模块一:Episodic Memory Integration)
    • [1. Local Message Partitioning](#1. Local Message Partitioning)
    • [2. Narrative Episode Generation](#2. Narrative Episode Generation)
    • [3. Associative Memory Integration](#3. Associative Memory Integration)
  • [五、模块二:Semantic Knowledge Distillation](#五、模块二:Semantic Knowledge Distillation)
    • [1. Anticipatory Schema Synthesis](#1. Anticipatory Schema Synthesis)
    • [2. Prediction Error Distillation](#2. Prediction Error Distillation)
    • [3. 这是不是严格意义的 prediction error?](#3. 这是不是严格意义的 prediction error?)
    • [4. Agnostic Knowledge Consolidation](#4. Agnostic Knowledge Consolidation)
  • [六、Response Generation:Episodic 与 Semantic 并行检索](#六、Response Generation:Episodic 与 Semantic 并行检索)
  • 七、实验设置
    • [1. 数据集](#1. 数据集)
    • [2. Baselines](#2. Baselines)
    • [3. Metrics](#3. Metrics)
    • [4. 超参数](#4. 超参数)
  • [八、主实验:总体最强,但 Open Domain 是明确反例](#八、主实验:总体最强,但 Open Domain 是明确反例)
    • [Table 2:LoCoMo 主结果](#Table 2:LoCoMo 主结果)
    • [Open Domain 失败案例](#Open Domain 失败案例)
  • [九、效率:Episode-centric pipeline 反而减少了调用](#九、效率:Episode-centric pipeline 反而减少了调用)
    • [Table 3:Memory Construction Cost](#Table 3:Memory Construction Cost)
    • [Table 4:Response Generation Cost](#Table 4:Response Generation Cost)
  • [十、消融:prediction error 确实优于直接蒸馏](#十、消融:prediction error 确实优于直接蒸馏)
    • [Table 5:核心消融](#Table 5:核心消融)
    • [1. Prediction error vs direct distillation](#1. Prediction error vs direct distillation)
    • [2. Native management 贡献很小](#2. Native management 贡献很小)
    • [3. Episodic 与 Semantic 互补](#3. Episodic 与 Semantic 互补)
    • [4. Adaptive partitioning 有贡献](#4. Adaptive partitioning 有贡献)
  • 十一、超参数与表示分析
    • [1. Observation Window 的影响](#1. Observation Window 的影响)
    • [2. Top-K 的影响](#2. Top-K 的影响)
    • [3. Narrative 与 Raw Episode 的选择](#3. Narrative 与 Raw Episode 的选择)
  • 十二、第三方集成与长上下文扩展
    • [Table 7:作为 A-MEM / MemoryOS 的入口层](#Table 7:作为 A-MEM / MemoryOS 的入口层)
    • [Table 8:LongMemEvalS](#Table 8:LongMemEvalS)
  • [十三、与 Agent Memory 系列方法比较](#十三、与 Agent Memory 系列方法比较)
    • [Nemori vs HeLa-Mem](#Nemori vs HeLa-Mem)
    • [Nemori vs A-MEM / MemoryOS](#Nemori vs A-MEM / MemoryOS)
    • [Nemori vs CoM / ReMemR1](#Nemori vs CoM / ReMemR1)
    • [Nemori vs Mem²Evolve](#Nemori vs Mem²Evolve)
  • [十四、对 Coding Agent / Tool Agent / Multi-Agent 的启发](#十四、对 Coding Agent / Tool Agent / Multi-Agent 的启发)
    • [1. Coding Agent:只保存超出现有 repo model 的变化](#1. Coding Agent:只保存超出现有 repo model 的变化)
    • [2. Tool Agent:把异常 tool outcome 当成 memory signal](#2. Tool Agent:把异常 tool outcome 当成 memory signal)
    • [3. Multi-Agent:保存协作预期被打破的地方](#3. Multi-Agent:保存协作预期被打破的地方)
    • [4. 生产级改造](#4. 生产级改造)
  • 十五、局限、反例与未解问题
    • 论文明确承认
    • 进一步分析
      • [1. Prediction error 不等于 future utility](#1. Prediction error 不等于 future utility)
      • [2. 预测者与裁判是同一个 LLM 家族](#2. 预测者与裁判是同一个 LLM 家族)
      • [3. Cue leakage 与 cue quality](#3. Cue leakage 与 cue quality)
      • [4. 形成时推理会固化错误](#4. 形成时推理会固化错误)
      • [5. 单次运行与 LLM judge](#5. 单次运行与 LLM judge)
      • [6. Open Domain 与 Knowledge Update 的不稳定](#6. Open Domain 与 Knowledge Update 的不稳定)
      • [7. "Training-free"不等于低成本](#7. “Training-free”不等于低成本)
      • [8. 缺少删除与隐私语义](#8. 缺少删除与隐私语义)
  • 十六、我的理解与启发
    • [1. Nemori 最重要的贡献是 memory 的"增量编码"视角](#1. Nemori 最重要的贡献是 memory 的“增量编码”视角)
    • [2. Distillation 应该是相对的,而不是绝对的](#2. Distillation 应该是相对的,而不是绝对的)
    • [3. 最值得借鉴的是"先预测再写入"协议](#3. 最值得借鉴的是“先预测再写入”协议)
    • [4. Episodic 与 Semantic 不应互相替代](#4. Episodic 与 Semantic 不应互相替代)
    • [5. Nemori 与 HeLa-Mem 可以形成更完整闭环](#5. Nemori 与 HeLa-Mem 可以形成更完整闭环)
  • 十七、总结
  • 参考资料

前言

随着 Agent 与用户持续交互,系统会不断接收新的对话、任务结果和环境反馈。

一个长期运行的 Agent 可能每天产生几百条消息。如果将所有内容完整保存,记忆库会迅速膨胀,检索时也会出现大量重复信息。

因此,记忆系统首先需要回答一个看似简单、实际上非常关键的问题:

一段新的交互发生后,哪些信息真正值得进入长期记忆?

早期的 Agent 记忆系统通常采用几种比较直接的判断方式:

  • 为每条记忆计算重要性分数;
  • 为带有明显情绪的信息添加标签;
  • 根据事实、偏好、人物关系等固定模板抽取内容;
  • 先保存所有内容,再根据访问频率或时间衰减进行清理。

这些方法实现简单,但它们存在一个共同问题:

什么值得记忆,通常由系统设计者提前规定,而不是由交互数据本身决定。

例如,用户连续几周都说:

text 复制代码
我每周末都会跑步。

如果系统每次都将这句话重新写入记忆,记忆库中会积累大量重复内容。

但是,如果用户后来补充:

text 复制代码
我的膝盖受伤了,医生建议未来三个月暂停跑步。

这条信息虽然只出现一次,却改变了系统对用户行为的原有认识。

传统的重要性评分很难稳定地区分这两种情况。Nemori 提出了一种不同的判断方式:

  1. 先根据系统已有的知识,预测这次交互中可能发生什么;
  2. 再比较预测内容与真实交互;
  3. 将预测不到的新增信息提取出来,作为值得保留的长期记忆。

其核心原则可以概括为:

text 复制代码
能够被已有知识预测的内容
        ↓
大概率是重复信息

无法被已有知识预测的内容
        ↓
可能是值得记住的新经验

因此,Nemori 的关键并不是设计一种新的向量数据库、树结构或者知识图,而是重新定义记忆写入阶段的判断标准:

不再问"这条信息看起来重要吗",而是问"这段经历相对于我已经知道的内容,新增了什么?"

在 Agent Memory 系列中,Mem0 和 MemoryOS 更关注记忆的写入、更新和分层管理;A-MEM、MAGMA 和 HeLa-Mem 更关注记忆之间的关系;CoM 和 ReMemR1 更关注查询时如何组织或回看历史证据。

Nemori 研究的是这些步骤之前的问题:

在记忆刚刚形成时,什么内容应该被蒸馏出来,交给后续系统管理和检索?


零、论文基本信息

  • 论文名称:What Deserves Memory: Adaptive Memory Distillation for LLM Agents
  • 发表平台:ACL 2026 Long Paper,Proceedings of the 64th Annual Meeting of the Association for Computational Linguistics (Volume 1: Long Papers),pp. 34789--34812
  • 代码仓库https://github.com/nemori-ai/nemori
  • 作者:Wenquan Ma, Jiayan Nan, Wenlong Wu

一、背景与问题

1. Agent 记忆系统的三个阶段

论文将一个完整的 Agent 记忆系统拆分为三个阶段。

1.1 记忆蒸馏

记忆蒸馏负责决定:

  • 一段原始交互应该转换成什么形式;
  • 哪些信息需要保留;
  • 哪些重复内容可以舍弃;
  • 是否需要生成事件、摘要、偏好或事实。

例如,一段十轮对话可以被保存为:

  • 十条原始消息;
  • 一个完整事件;
  • 一段叙事摘要;
  • 若干条结构化事实。

不同的入口形式会直接影响后面的管理和检索。

1.2 记忆管理

记忆管理负责处理已经进入系统的记忆,例如:

  • 合并重复内容;
  • 处理新旧事实冲突;
  • 构建层级或者图关系;
  • 根据时间和访问频率调整记忆;
  • 删除过期信息。

1.3 记忆检索

当用户提出问题时,检索阶段负责从已有记忆中找到相关内容,并将其加入模型上下文。

完整流程可以表示为:

text 复制代码
原始交互
  ↓
记忆蒸馏:决定保留什么、以什么形式保留
  ↓
记忆管理:合并、更新、组织和删除
  ↓
记忆检索:根据问题召回相关内容
  ↓
LLM 生成回答

这三个阶段中,蒸馏位于最前面。

如果有价值的信息在蒸馏时已经被删除,后面的知识图、层级管理和重排序都无法重新恢复它。


2. 现有方法在什么时候判断记忆价值

论文 Table 1 根据"系统在什么阶段判断记忆是否有用",对已有方法进行了分类。

判断阶段 代表方法 主要判断方式 可能的问题
检索阶段 RAG、MemGPT 到查询时再根据相似度或工具调用选择 记忆库容易持续膨胀
管理阶段 MemoryOS、A-MEM 访问频率、时间衰减、层级或关系更新 只能处理已经写入的内容
蒸馏阶段 Generative Agents、Mem0 重要性、情绪、事实模板 依赖设计者预定义规则
Nemori Nemori 根据预测误差提取新增信息 依赖预测和差异判断质量

表源:论文 Table 1。该表说明 Nemori 与 Mem0 等方法一样,在记忆进入系统时就进行筛选;区别在于 Nemori 使用预测误差,而不是固定的重要性或事实模板。

Nemori 并不是要替代后续的记忆管理和检索。

它解决的是一个更上游的问题:

先让进入记忆系统的内容更加干净,再交给 A-MEM、MemoryOS 或其他系统进行组织和使用。


二、相关工作与理论动机

1. 从启发式记忆到数据驱动记忆

现有蒸馏方法通常根据人工规则抽取记忆:

  • Generative Agents 使用重要性评分;
  • EmotionalRAG 添加情绪标签;
  • Mem0 提取事实、偏好和关系;
  • 其他方法使用主题、人物画像或固定摘要模板。

这些规则并非完全无效。问题在于,同一条信息对不同 Agent 的价值并不相同。

一个 Agent 已经知道的事实,再次出现时可能只是重复;另一个 Agent 从未见过同一事实,它就可能非常重要。

因此,记忆价值应该与系统当前已有的知识状态有关,而不是内容自身的固定属性。


2. Predictive Coding

Predictive Coding Theory 认为,高层系统会根据已有模型产生预测,底层主要向上传递与预测不一致的残差信息。

已经能够被系统解释的内容,不需要被反复完整保存;真正推动知识更新的,是预测与真实观察之间的差异。

Nemori 将这个直觉迁移到外部 Agent Memory:

Memory-worthy information ≈ Actual episode − Predicted episode \text{Memory-worthy information} \approx \text{Actual episode} - \text{Predicted episode} Memory-worthy information≈Actual episode−Predicted episode

这里需要注意,论文并不是对两个向量做数学减法。

Nemori 的实际做法是:

  1. 让 LLM 根据已有记忆生成一段自然语言预测;
  2. 再让 LLM 比较预测与真实经历;
  3. 提取真实经历中偏离或扩展预测的内容。

3. Complementary Learning Systems

论文还借鉴了 Complementary Learning Systems 的思想。

人类记忆可以粗略区分为:

  • 情景记忆:保存具体发生过的经历;
  • 语义记忆:从多个经历中形成稳定知识。

Nemori 因此没有使用一段摘要完全替代原始经历,而是同时维护:

  • Episodic database:完整 narrative、cue、raw provenance;
  • Semantic database:通过 prediction error 蒸馏出的可复用知识。

4. 三个设计原则

4.1 保持事件完整性

连续消息通常围绕若干完整事件展开。

如果简单地每 20 条消息或者每 4K Token 切分一次,可能会把同一个事件切成两半,也可能把两个无关话题放进同一个记忆块。

4.2 将原始对话转换为叙事记忆

原始对话通常包含省略、指代、重复和口语表达。

未来检索时,系统需要的是逻辑更加清晰、能够独立理解的事件描述。因此,Nemori 会把原始对话转换为叙事形式,同时保留原始消息作为证据。

4.3 可预测的信息通常是冗余信息

如果一段经历能够被已有记忆准确预测,它通常没有带来新的知识。

如果真实经历与预测不同,这个差异才可能值得进入长期语义记忆。

这三个先验分别回答:怎么分、怎么表示、怎么筛。


三、Nemori 方法总览

Nemori 包含两个连续执行的主要模块:

  1. Episodic Memory Integration:将原始交互整理为完整的情景记忆;
  2. Semantic Knowledge Distillation:根据预测误差提取值得长期保存的语义知识。

为了理解两个模块如何连接,可以先看论文 Figure 1。

图源:论文 Figure 1。上半部分负责将消息划分、叙事化并合并为情景记忆;下半部分先生成预测,再从预测误差中提取语义知识。右侧说明 Nemori 可以与自身管理模块、MemoryOS 或 A-MEM 组合。

整体流程如下:

text 复制代码
Interaction sequence
        ↓
Local Message Partitioning
        ↓
Narrative Episode Generation
        ↓
Associative Memory Integration
        ↓
Episodic Database
        ↓ cue + existing knowledge
Anticipatory Schema Synthesis
        ↓ predicted episode
Prediction Error Distillation ← actual raw episode
        ↓ unexpected semantic insights
Agnostic Knowledge Consolidation
        ↓
Native / A-MEM / MemoryOS management

四、模块一:Episodic Memory Integration

1. Local Message Partitioning

动机

固定 chunk 可能把一个 episode 切成两半,也可能把不相关话题塞在一起。Nemori 先维护 message buffer:

B t = { m 1 , m 2 , ... , m z } , m i = ( r i , c i , τ i ) B_t=\{m_1,m_2,\dots,m_z\},\qquad m_i=(r_i,c_i,\tau_i) Bt={m1,m2,...,mz},mi=(ri,ci,τi)

其中 r i r_i ri 是 sender/role, c i c_i ci 是内容, τ i \tau_i τi 是时间戳。当 buffer 长度达到 observation window w w w 时触发 partition:

O ← f L L M ( P p a r ∥ B t ) O\leftarrow f_{\mathrm{LLM}}(P_{par}\Vert B_t) O←fLLM(Ppar∥Bt)

输出 O = { O 1 , ... , O n } O=\{O_1,\dots,O_n\} O={O1,...,On} 是消息索引集合的一个 partition:各组互不相交,合集覆盖当前窗口。映射回消息后得到 raw episodes:

P = { P 1 , ... , P n } \mathcal P=\{P_1,\dots,P_n\} P={P1,...,Pn}

随后清空 buffer,等待下一窗口。

例子

20 条消息可能同时包含旅行计划、Python 调试和工作安排。固定 20-message chunk 会把三件事混在一起;partition prompt 根据 topic change、intent transition、时间间隔和 concluding signal 分成三个 episode,甚至允许非连续索引归为同一主题。

风险

它仍由 LLM prompt 判断边界,不是真正无启发式。prompt 明确包含"topic relevance <30%""通常 2--15 messages"等设计者规则。因此论文所说 data-driven 更准确地适用于蒸馏选择信号,不意味着整个 pipeline 没有 heuristic。

2. Narrative Episode Generation

每个 raw episode P j P_j Pj 被转换成 narrative N j N_j Nj 和用于后续预测的 cue c j c_j cj:

( N j , c j ) ← f L L M ( P n a r ∥ P j ) (N_j,c_j)\leftarrow f_{\mathrm{LLM}}(P_{nar}\Vert P_j) (Nj,cj)←fLLM(Pnar∥Pj)

然后建立 embedding:

v j ← f e m b ( c j ∥ N j ) v_j\leftarrow f_{emb}(c_j\Vert N_j) vj←femb(cj∥Nj)

一个 episodic memory 表示为:

M j = ( c j , N j , P j , v j ) M_j=(c_j,N_j,P_j,v_j) Mj=(cj,Nj,Pj,vj)

  • cue 是简短提示,用于让系统在不泄露真实 episode 的情况下预测;
  • narrative 是便于检索和推理的结构化事件表征;
  • raw episode 保留细节与 provenance;
  • embedding 用于候选搜索。

论文的双模式 retrieval 很实用:普通情况返回 narrative 节省 token;精确性敏感场景可返回 raw。主实验中仅 top-2 episodic memories 额外附带 raw conversation。

3. Associative Memory Integration

仅在 observation window 内 partition 仍会把跨窗口的同一事件切开。为此,每个新 episode 先在 episodic database D e D_e De 中检索 top- K e K_e Ke 候选:

C = { U 1 , ... , U K e } ← Search ⁡ ( D e , v j , K e ) C=\{U_1,\dots,U_{K_e}\}\leftarrow \operatorname{Search}(D_e,v_j,K_e) C={U1,...,UKe}←Search(De,vj,Ke)

再让 LLM 判断哪个候选具有 episodic continuity:

i d x ← f L L M ( P s e l ∥ ( c j , N j ) ∥ { ( c k , N k ) } k = 1 K e ) idx\leftarrow f_{\mathrm{LLM}} (P_{sel}\Vert(c_j,N_j)\Vert\{(c_k,N_k)\}_{k=1}^{K_e}) idx←fLLM(Psel∥(cj,Nj)∥{(ck,Nk)}k=1Ke)

  • 若 i d x = k idx=k idx=k,将新旧 episode 合并、重写 narrative/cue,并拼接 raw provenance;
  • 若 i d x = − 1 idx=-1 idx=−1,作为独立 episode 插入。

这一设计解释了为什么 observation window 从 5 到 40 改变时总体性能稳定:局部切错或切断的 episode,还有一次跨窗口 integration 机会。


五、模块二:Semantic Knowledge Distillation

这是全文唯一核心增量真正落地的地方。

1. Anticipatory Schema Synthesis

给定新形成或合并后的 episodic memory M i n M_{in} Min,系统先向任意下游 management system 请求相关旧知识:

S i n ← Evoke ⁡ ( M i n , M ) S_{in}\leftarrow \operatorname{Evoke}(M_{in},\mathcal M) Sin←Evoke(Min,M)

native implementation 使用带阈值的相似度搜索:

S i n ← Top- ⁡ K s ( S r ∈ D s ∣ sim ⁡ ( v i n , u r ) > τ ) S_{in}\leftarrow \operatorname{Top-}K_s (S_r\in D_s\mid \operatorname{sim}(v_{in},u_r)>\tau) Sin←Top-Ks(Sr∈Ds∣sim(vin,ur)>τ)

关键防泄漏设计是:预测时只提供 incoming episode 的 cue c i n c_{in} cin,不提供真实 raw episode P i n P_{in} Pin。系统基于 cue 与旧知识合成 anticipatory schema:

P ^ i n ← f L L M ( P a n t ∥ c i n ∥ S i n ) \hat P_{in}\leftarrow f_{\mathrm{LLM}}(P_{ant}\Vert c_{in}\Vert S_{in}) P^in←fLLM(Pant∥cin∥Sin)

P ^ i n \hat P_{in} P^in 代表"根据我已经知道的内容,这次大概发生了什么"。

2. Prediction Error Distillation

随后才同时给出真实 episode 和预测,让 LLM 抽取偏差:

K i n = { k 1 , ... , k d } ← f L L M ( P d i s ∥ P i n ∥ P ^ i n ) K_{in}=\{k_1,\dots,k_d\} \leftarrow f_{\mathrm{LLM}}(P_{dis}\Vert P_{in}\Vert \hat P_{in}) Kin={k1,...,kd}←fLLM(Pdis∥Pin∥P^in)

K i n K_{in} Kin 只应包含真实 episode 对预测的 deviation 或 extension。

直观例子

旧知识已知"用户每周末跑步",新 episode 仍然说周末跑步,则预测吻合,不必重复存储。若新 episode 说"由于膝伤,医生要求未来三个月停止跑步",这部分强烈违背预测,应蒸馏为新的 semantic insight。

时间推理案例

LoCoMo 中 query 是 "When did Jon receive mentorship?" 原始对话只说 "yesterday"。Full Context 被相对时间干扰,回答了对话当天 6 月 16 日。Nemori 在 memory formation 时把 episode 与日期上下文整合,prediction error 中固化出 "Jon was mentored on June 15, 2023.",将回答时的复杂时间推理前置成简单事实检索。

这说明 Nemori 不只是压缩,而是 reasoning during memory formation

3. 这是不是严格意义的 prediction error?

不是概率模型的负对数似然,也没有计算可校准的 surprise:

− log ⁡ p ( P i n ∣ S i n ) -\log p(P_{in}\mid S_{in}) −logp(Pin∣Sin)

论文实现是两次 prompt:一次生成自然语言预测,一次让 LLM 比较差异。因此 prediction error 是语义操作而非标量统计量。它更灵活,但受 prompt、LLM hallucination 与表达差异影响;"说法不同"可能被误判为"知识新增"。

4. Agnostic Knowledge Consolidation

Distilled insight k q k_q kq 先嵌入并检索 top- K m K_m Km 相关旧知识:

S ~ q = { ( k h , u h ) } h = 1 K m ← Search ⁡ ( D s , u q , K m ) \tilde S_q=\{(k_h,u_h)\}_{h=1}^{K_m} \leftarrow \operatorname{Search}(D_s,u_q,K_m) S~q={(kh,uh)}h=1Km←Search(Ds,uq,Km)

LLM 生成 consolidation directive:

( δ , i d x s , k μ ) ← f L L M ( P c o n ∥ k q ∥ { k h } h = 1 K m ) (\delta,idxs,k_\mu) \leftarrow f_{\mathrm{LLM}}(P_{con}\Vert k_q\Vert\{k_h\}_{h=1}^{K_m}) (δ,idxs,kμ)←fLLM(Pcon∥kq∥{kh}h=1Km)

其中 δ ∈ { n e w , m e r g e , c o n f l i c t } \delta\in\{new,merge,conflict\} δ∈{new,merge,conflict}:

  • new:没有重叠,新增;
  • merge:互补知识合并为统一 entry;
  • conflict:新知识使旧知识失效,删除旧项后写入新项。

论文称其 management-agnostic,是因为 EvokeConsolidate 是抽象接口;native database、naive RAG、A-MEM、MemoryOS 都可以实现这两个接口。


六、Response Generation:Episodic 与 Semantic 并行检索

对 query Q Q Q 计算 embedding v Q v_Q vQ,分别检索:

R ~ e = Search ⁡ ( D e , v Q , k ) \tilde R_e=\operatorname{Search}(D_e,v_Q,k) R~e=Search(De,vQ,k)

R ~ s = Search ⁡ ( D s , v Q , m ) \tilde R_s=\operatorname{Search}(D_s,v_Q,m) R~s=Search(Ds,vQ,m)

最终上下文由 narrative episodes R e R_e Re、top- r r r raw episodes R p R_p Rp 和 semantic knowledge R s R_s Rs 拼接:

a ← f L L M ( P a n s ∥ Q ∥ R e ∥ R p ∥ R s ) a\leftarrow f_{\mathrm{LLM}} (P_{ans}\Vert Q\Vert R_e\Vert R_p\Vert R_s) a←fLLM(Pans∥Q∥Re∥Rp∥Rs)

主实验取 k = 10 k=10 k=10、 m = 2 k = 20 m=2k=20 m=2k=20、 r = 2 r=2 r=2。这不是复杂 agentic retrieval,而是直接 dense Top-k;论文刻意把贡献限制在 distillation,而不把结果归功于复杂 retrieval。


七、实验设置

1. 数据集

  • LoCoMo:10 段 dialogue,论文此处报告平均 24K tokens、1,540 questions,四类为 Temporal、Open Domain、Multi-Hop、Single-Hop;
  • LongMemEvalS:500 个长对话样本,平均约 105K tokens,用于扩展性验证。

注意:LoCoMo 的数据规模在不同论文/预处理版本中常有不同统计。本文实验设置明确写 24K average tokens,效率表 Full Context 平均输入 23,653 tokens,应以本文预处理为准。

2. Baselines

Full Context、RAG-4096、LangMem、Zep、Mem0、A-MEM、MemoryOS。

Mem0 与 Zep 使用 commercial API 生成 memory context;其他方法用 gpt-4o-mini 或 gpt-4.1-mini 同时承担内部处理和回答。Nemori embedding 使用 text-embedding-3-small

3. Metrics

  • 主要指标:gpt-4o-mini LLM-judge score;
  • 辅助指标:F1、BLEU-1;
  • 所有指标缩放到 0--100;
  • 论文遵循惯例只报告 single-run result,没有方差与显著性检验。

4. 超参数

τ = 0.70 \tau=0.70 τ=0.70, K e = K m = 5 K_e=K_m=5 Ke=Km=5, K s = 10 K_s=10 Ks=10,默认 observation window w = 20 w=20 w=20,默认 episodic retrieval k = 10 k=10 k=10,semantic retrieval m = 20 m=20 m=20。


八、主实验:总体最强,但 Open Domain 是明确反例

Table 2:LoCoMo 主结果

表源:论文 Table 2。表中下划线表示除 Nemori 外最强的记忆系统,Improv. 表示 Nemori 相对该系统的提升比例。

gpt-4.1-mini

方法 Temporal LLM Open LLM Multi-Hop LLM Single-Hop LLM Average LLM
Full Context 74.2 56.6 77.2 86.9 80.6
LangMem 50.8 59.0 71.0 84.5 73.4
MemoryOS 37.7 60.4 62.4 68.9 60.6
Nemori 77.3 56.3 74.8 87.0 80.8

Nemori 平均 80.8,略高于 Full Context 80.6,比最强 memory baseline LangMem 73.4 高 10.1%。Temporal 77.3 比 A-MEM 66.7 高 15.9%。但 Multi-Hop 74.8 低于 Full Context 77.2,Open Domain 56.3 低于 MemoryOS 60.4、LangMem 59.0,也略低于 Full Context 56.6。

gpt-4o-mini

方法 Temporal LLM Open LLM Multi-Hop LLM Single-Hop LLM Average LLM
Full Context 56.2 48.6 66.8 83.0 72.3
Mem0 50.4 40.6 60.3 68.1 61.3
Nemori 67.6 45.8 61.7 81.9 73.0

Nemori 平均 73.0,高于最强 memory baseline Mem0 61.3,相对提升 19.1%,也略高于 Full Context 72.3。但 Full Context 在 Open、Multi-Hop、Single-Hop 三类都更高;Nemori 的平均胜出主要由 Temporal 67.6 对 56.2 的巨大优势拉动。

因此更准确的结论是:Nemori 的突出优势集中在需要 memory formation 阶段进行时间归一化和知识增量提取的任务,并非所有类别都优于完整上下文。

Open Domain 失败案例

问题描述一个"不同颜色卡牌、按颜色或数字匹配"的游戏,但对话从未说出 UNO。Nemori 可以保存完整描述,却不能从 memory 中创造缺失的 lexical label;最终是否回答 UNO 取决于 backbone world knowledge。这说明 memory quality 与 model prior knowledge 在 Open Domain 上不可分离。


九、效率:Episode-centric pipeline 反而减少了调用

Table 3:Memory Construction Cost

表源:论文 Table 3。该表比较 gpt-4o-mini 设置下不同方法构建 LoCoMo 记忆所需的 LLM 调用次数和 Token。

Nemori 使用 373.2 次 LLM calls、总计 322.9K tokens;相对最省的对比项 MemoryOS(1016.1 calls、526.5K tokens),calls 减少 59.5%,tokens 减少 38.7%。

原因不是 pipeline 简单,而是以 episode 为处理单位,避免每条 message 单独抽取、更新和调用 LLM。

Appendix Table 9 给出构建成本分解:

  • Partition:49.3K,15.3%;
  • Narration:123.6K,38.3%;
  • Integration:52.2K,16.2%;
  • Distillation:97.7K,30.3%。

主要成本其实是 narrative generation,其次才是 prediction-error distillation。

Table 4:Response Generation Cost

表源:论文 Table 4。Search 表示检索时间,Total 表示从收到问题到生成答案的端到端延迟。

方法 LLM Tokens Search ms Total ms
Full Context 72.3 23,653 - 5,806
RAG-4096 30.2 3,430 544 2,884
A-MEM 52.5 2,614 947 2,867
MemoryOS 54.5 1,560 9,910 15,220
Nemori 73.0 2,745 787 3,053

Nemori 比 Full Context 少约 88% 回答上下文 token,总延迟低约 47%,且分数略高。但它不是 table 中绝对最低 latency:RAG-4096 与 A-MEM 都略快,只是性能明显更低。


十、消融:prediction error 确实优于直接蒸馏

Table 5:核心消融

表源:论文 Table 5。Nemori-s 表示直接蒸馏语义记忆;w/o ew/o sw/o p 分别表示移除情景检索、语义检索和自适应消息划分;Mgmt 表示是否使用原生管理模块。

配置 gpt-4o-mini LLM gpt-4.1-mini LLM 含义
Nemori-s,无 management 52.0 65.5 每个 episode 直接蒸馏 semantic memory
w/o e,无 management 65.0 74.9 prediction-error semantic memory,但回答时不取 episodic
w/o s 54.7 76.9 只取 episodic,不取 semantic
w/o p 68.0 75.7 固定 20-message chunk
Nemori Full 73.0 80.8 完整框架

1. Prediction error vs direct distillation

为了公平比较语义蒸馏,论文比较 Nemori-s 与 w/o e:两者回答时都不使用 episodic database,区别只在 semantic memory 如何形成。

  • gpt-4o-mini:52.0 → 65.0,提升 25.0%;
  • gpt-4.1-mini:65.5 → 74.9,提升 14.4%。

Appendix Table 10 显示最大收益在 Temporal:gpt-4o-mini 从 33.3 到 57.9(+73.9%);gpt-4.1-mini 从 46.4 到 63.2(+36.2%)。这直接支持论文唯一核心主张:与预测比较后再蒸馏,比对每个 episode 直接抽取事实更有效。

2. Native management 贡献很小

对 w/o e,启用/禁用 native management 几乎不变:64.6 vs 65.0、74.7 vs 74.9。这符合 management-agnostic 声明,也说明 LoCoMo 缺少足够 knowledge update,无法验证 new/merge/conflict 管理逻辑。

3. Episodic 与 Semantic 互补

  • 去 episodic:73.0 → 65.0;80.8 → 74.9;
  • 去 semantic:73.0 → 54.7;80.8 → 76.9。

semantic memory 在 gpt-4o-mini 上尤其关键;但 gpt-4.1-mini 对 narrative episode 的利用能力更强,因此去 semantic 的降幅较小。不同 backbone 对两类 memory 的依赖不相同。

4. Adaptive partitioning 有贡献

固定 20-message chunk 使分数从 73.0 降至 68.0、从 80.8 降至 75.7,说明 episode integrity 不只是美学设计。但由于 full system 同时包含 partition 和跨窗口 integration,论文没有单独消融 integration,无法分离两者贡献。


十一、超参数与表示分析

1. Observation Window 的影响

为了观察局部消息窗口是否会影响事件划分,论文将窗口长度从 5 条消息增加到 40 条消息。

图源:论文 Figure 2。窗口长度为 5、10、20、30 和 40 时,LLM Score 分别为 80.4、80.7、80.8、81.2 和 80.7。

结果整体只在约 1 分范围内波动。

这说明 Local Message Partitioning 与后续 Associative Memory Integration 能够相互补偿:窗口较小时,被分开的连续事件可以在后续重新合并;窗口较大时,分区模型仍可以将不同话题拆开。

不过,默认设置 w = 20 w=20 w=20 并不是最高分点, w = 30 w=30 w=30 的 81.2 略高。论文选择 20 更接近效果和处理成本之间的折中。

2. Top-K 的影响

Nemori 在回答问题时默认检索 10 条情景记忆和 20 条语义记忆。论文进一步观察了不同检索数量的影响。

图源:论文 Figure 3。蓝线表示 Nemori,红色虚线表示 Full Context;标注点是主实验使用的 k = 10 k=10 k=10。

当 k k k 从 2 增加到 10 时,性能快速提高。这说明检索条目太少会遗漏关键证据。

当 k k k 超过 10 后,曲线逐渐进入平台区。Appendix Table 12 仍显示 gpt-4.1-mini 在 k = 20 k=20 k=20 时达到 83.4,高于默认设置的 80.8。

因此,这里所说的"趋于饱和"并不是继续增加 Top-K 完全没有收益,而是单位检索成本带来的收益开始下降。

3. Narrative 与 Raw Episode 的选择

论文 Table 6 比较了两种索引和返回形式:

  • N:结构化的 narrative episode;
  • P:原始 partitioned episode。

Narrative index 在保持 retrieve content 相同时优于 raw index:N→N 76.9 vs P→N 76.4;N→P 77.0 vs P→P 75.3。说明结构化 narrative 更适合作为 embedding index。但 N→P 的 LLM 分数 77.0 略高于默认 N→N 76.9,raw text 对精确细节仍有价值。


十二、第三方集成与长上下文扩展

Table 7:作为 A-MEM / MemoryOS 的入口层

表源:论文 Table 7。P 表示将原始消息交给第三方系统,K 表示改为输入 Nemori 蒸馏后的语义知识;Core 是排除 Temporal 后的加权平均分。

用 Nemori semantic knowledge 代替 raw messages 输入第三方系统:

  • A-MEM storage 减少 64.3% / 51.3%;Core score 均提升 6.1%;
  • MemoryOS storage 减少 53.1% / 45.3%;Core score提升 1.9% / 3.4%。

但 Average score 并非总是保持:A-MEM 分别下降 3.0% 和 3.9%;MemoryOS 在 gpt-4o-mini 下降 1.1%,gpt-4.1-mini 提升 1.2%。下降主要来自 Temporal,而作者用排除 Temporal 的 Core 指标展示 semantic input 的优势。这是合理诊断,但 Core 不是预先定义的标准 benchmark metric,应避免只报 Core。

Table 8:LongMemEvalS

表源:论文 Table 8。该表比较 Nemori 与 Full Context 在 LongMemEvalS 各问题类型上的准确率和上下文用量。

gpt-4o-mini

Nemori 平均 64.2 vs Full Context 55.0;在 Preference、Temporal、Multi-session、User 上领先,但 Knowledge Update 61.5 低于 78.2,Single-session Assistant 83.9 低于 89.3。

gpt-4.1-mini

Nemori 平均 74.6 vs Full Context 65.6;除 Single-session Assistant 92.9 低于 98.2 外,其余多类领先,包括 Knowledge Update 79.5 vs 76.9。

更长 context 上差距扩大,支持 selective distillation 能缓解 attention dilution。但这仍是 Nemori 与 Full Context 的比较,不是与所有 memory baseline 的完整 LongMemEvalS 对照。


十三、与 Agent Memory 系列方法比较

方法 首要问题 Memory utility 信号 发生阶段 核心产物
Mem0 抽取哪些事实/偏好 事实模板、冲突规则 Distillation/management 精炼事实
A-MEM notes 如何链接演化 LLM 生成链接与更新 Management note network
MAGMA 多种关系如何并存 typed relation / multi-graph Construction/retrieval 多关系图
CoM query 时如何组织证据 query relevance + chain coherence Retrieval 动态 memory chain
ReMemR1 顺序压缩如何回看 callback policy Reading/update revisitable state
Mem²Evolve 经验如何变成能力 task outcome / evolution Cross-task experience + assets
HeLa-Mem 使用历史如何塑造关系 retrieval co-activation Management/retrieval Hebbian graph + semantic store
Nemori 新经验什么值得保存 semantic prediction error Distillation narrative episode + unexpected semantic insight

Nemori vs HeLa-Mem

HeLa-Mem 认为"反复共同被检索"的关系值得增强;Nemori 认为"无法被既有知识预测"的内容值得保存。前者学习 memory 之间的 usage relation,后者学习 incoming experience 的 novelty。两者可以组合:Nemori 决定节点内容,HeLa-Mem 决定节点间边权。

Nemori vs A-MEM / MemoryOS

A-MEM、MemoryOS 主要在 entry 已经存在后管理它;Nemori 改善进入这些系统的 input form。Table 7 的价值正在于证明两者不是替代关系,而是 distillation layer 与 management layer 的组合。

Nemori vs CoM / ReMemR1

CoM、ReMemR1 主要解决"需要时如何重新找到或回看";Nemori 解决"最初留下什么"。检索能力不能恢复 distillation 阶段已经丢掉的信息,因此 Nemori 位于更上游。

Nemori vs Mem²Evolve

Mem²Evolve 的 experience distillation 最终服务于 capability expansion;Nemori 可以提供更干净的 experience input:只有超出现有 capability/policy 可预测范围的失败、新约束和新策略才进入 evolution loop。


十四、对 Coding Agent / Tool Agent / Multi-Agent 的启发

1. Coding Agent:只保存超出现有 repo model 的变化

Coding Agent 已经知道大量稳定规律:测试命名、目录结构、常规 lint 修复。继续记录这些重复操作只会增加 retrieval noise。Nemori 式流程可以:

  1. 从 issue + code inspection + patch + test 形成完整 episode;
  2. 根据 repo memory 预测"这个问题通常如何修";
  3. 抽取实际轨迹对预测的偏差;
  4. 只保存新的 hidden dependency、反直觉约束、失败修复原因或新 API contract。

例如系统预测"修改 parser 后只需更新 parser tests",真实结果却发现 snapshot generator 和 serialization schema 同时变化;这个 prediction error 比整段工具日志更值得长期保存。

2. Tool Agent:把异常 tool outcome 当成 memory signal

不要保存每一次成功调用。应保存:

  • 参数正确但 API 返回反常错误;
  • 工具文档承诺与实际行为不同;
  • 某工具组合产生新 side effect;
  • 用户策略或权限与旧预测不一致。

同时,prediction 应基于 tool schema + 历史轨迹,error 应由实际 structured result 验证,而不能只让 LLM凭自然语言主观判断。

3. Multi-Agent:保存协作预期被打破的地方

主 Agent 通常可以预测子 Agent 的产出。真正有价值的是:某类子任务反复需要额外证据、某 agent 擅长领域与声明不符、交接信息不足导致返工。将这些 residual 蒸馏为 orchestration memory,可以直接改进未来 delegation policy。

4. 生产级改造

Nemori 的语义 prediction error 可以进一步结构化为:

U ( x ) = S u r p r i s e ( x ) ⏟ 不可预测 × O u t c o m e I m p a c t ( x ) ⏟ 影响结果 × C o n f i d e n c e ( x ) ⏟ 证据可靠 − S t o r a g e C o s t ( x ) ⏟ 长期成本 U(x)=\underbrace{Surprise(x)}{不可预测} \times\underbrace{OutcomeImpact(x)}{影响结果} \times\underbrace{Confidence(x)}{证据可靠} -\underbrace{StorageCost(x)}{长期成本} U(x)=不可预测 Surprise(x)×影响结果 OutcomeImpact(x)×证据可靠 Confidence(x)−长期成本 StorageCost(x)

论文主要实现 Surprise;Coding/Tool Agent 还需要 outcome 与 verification,否则"意外"可能只是噪声或工具故障。


十五、局限、反例与未解问题

论文明确承认

  1. 重点在 distillation,management 和 retrieval 都较朴素;复杂 memory reasoning 可能受限;
  2. Evoke / Consolidate 接口仍是概念性抽象,没有标准协议,接入第三方系统需逐个实现。

进一步分析

1. Prediction error 不等于 future utility

意外信息可能只是随机噪声、口误或一次性异常;高度可预测的信息也可能非常重要,例如用户反复强调的安全约束。Novelty 与 utility 相关,但不等价。

2. 预测者与裁判是同一个 LLM 家族

LLM 先预测、再比较、再抽取,系统误差可能相关。模型没预测到某事实,可能是 context assembly 失败,而不是事实真正新颖;模型错误预测也会制造虚假 residual。

3. Cue leakage 与 cue quality

若 cue 已经包含关键新信息,anticipatory schema 可能"预测"出真实内容,导致真正 novelty 被误判为 redundant;若 cue 太抽象,任何细节都会显得 unexpected。论文未系统消融 cue granularity。

4. 形成时推理会固化错误

时间归一化是优势,也可能把错误推理固化成长期事实。相比回答时错误,一条错误 semantic memory 会影响未来多个 query,因此需要 evidence link 和可撤销机制。

5. 单次运行与 LLM judge

论文只报 single run,主要指标又是 gpt-4o-mini judge;没有方差、显著性或人工复核。Nemori 相对 Full Context 的 LoCoMo 平均优势只有 0.2/0.7 分,不能据此声称稳定超越。

6. Open Domain 与 Knowledge Update 的不稳定

Open Domain 明确不领先;LongMemEvalS 上 gpt-4o-mini 的 Knowledge Update 也显著低于 Full Context。说明 semantic distillation 会受 backbone 能力和冲突处理质量影响。

7. "Training-free"不等于低成本

无需训练参数,但 memory formation 包含 partition、narration、integration、prediction、distillation、consolidation 多次 LLM 调用。论文证明它比逐 message baseline 省,但不是无成本。

8. 缺少删除与隐私语义

raw episode、narrative、semantic insight 三层存在派生关系。用户要求删除某条原始消息时,需要级联定位并重算相关 narrative/knowledge;论文没有讨论 provenance-based deletion。


十六、我的理解与启发

1. Nemori 最重要的贡献是 memory 的"增量编码"视角

普通 summarization 问"这段话讲了什么";Nemori 问"相对旧知识,这段话新在哪里"。后者更接近数据库 delta、event sourcing 和模型 residual learning,天然适合持续交互。

2. Distillation 应该是相对的,而不是绝对的

同一条消息对不同 Agent 的价值不同。新手 Agent 不知道的 API 规则值得记,已经掌握该规则的 Agent 再存一遍就是冗余。Memory utility 不是内容的固定属性,而是内容相对于当前 memory state 的函数:

U t i l i t y ( x ∣ M t ) Utility(x\mid M_t) Utility(x∣Mt)

这是论文比 importance score 更深的一步。

3. 最值得借鉴的是"先预测再写入"协议

它可以成为所有 memory writer 的前置协议:

text 复制代码
Retrieve old memory
→ predict incoming episode
→ observe actual outcome
→ compute semantic residual
→ verify residual
→ consolidate

真正生产化时还应增加 verify 和 outcome gating。

4. Episodic 与 Semantic 不应互相替代

Semantic memory 提供可复用结论,episodic memory 提供证据、上下文和纠错入口。消融证明仅保留任一侧都会下降。好的 memory 系统应允许 semantic conclusion 回链 raw provenance,而不是用摘要永久覆盖原始证据。

5. Nemori 与 HeLa-Mem 可以形成更完整闭环

Nemori 回答"节点里写什么",HeLa-Mem 回答"节点间关系如何随使用变化",CoM/ReMemR1 回答"query 时沿什么路径回看"。组合后可形成:

text 复制代码
Prediction-error distillation
        ↓
高信息密度 memory nodes
        ↓
usage-conditioned association
        ↓
query-time dynamic traversal / callback

这可能比继续堆叠某一种单一 memory structure 更接近完整生命周期。


十七、总结

Nemori 把 Agent Memory 中最容易被忽略的入口问题提到中心:memory 不应因为"看起来重要"而保存,而应因为它改变了系统对未来交互的预测而保存。

其完整链条是:

text 复制代码
自适应 episode partition
→ narrative representation
→ 跨窗口 episode integration
→ 旧知识预测 incoming episode
→ 从真实 episode 与预测的差异中提取 insight
→ new / merge / conflict consolidation
→ episodic + semantic 双路检索回答

实验证据最有力的部分是 prediction-error distillation 对 direct distillation 的显著提升,尤其在 Temporal Reasoning;最值得克制的部分是总体略超 Full Context 的幅度很小、Open Domain 存在明确落后、主要结果是 single run LLM-judge,且"prediction error"仍由自然语言 prompt 近似。

最后一句话:Nemori 的意义不在于发明一种新的 memory store,而在于把"是否值得记住"从内容的绝对重要性,改写成相对于既有知识的语义增量------Memory 开始保存世界对自身预期的修正,而不只是保存世界本身。


参考资料

  1. Ma, Wenquan, Jiayan Nan, and Wenlong Wu. What Deserves Memory: Adaptive Memory Distillation for LLM Agents. ACL 2026. ACL Anthology正式 PDF
  2. Nemori official repository: https://github.com/nemori-ai/nemori
  3. Rao, R. P. N. and Ballard, D. H. Predictive coding in the visual cortex. Nature Neuroscience, 1999.
  4. Friston, K. The free-energy principle: a unified brain theory? Nature Reviews Neuroscience, 2010.
  5. McClelland, J. L., McNaughton, B. L., and O'Reilly, R. C. Why there are complementary learning systems in the hippocampus and neocortex. Psychological Review, 1995.
相关推荐
约克31 小时前
2024年空调除甲醛技术参数与性能评测解析
学习
源码学社1 小时前
股市复盘Skills全流程资料包:从手工复盘到AI赋能的进阶指南
人工智能·skills·股市复盘·股市复盘skills
hyuk的AI工坊1 小时前
流式对话实战:LangChain4j + SSE 打字机效果全链路指南
人工智能
白色机械键盘1 小时前
领域大模型微调数据集构建实战
大数据·人工智能
kkkkkkkkkk_Z1 小时前
学嵌入式和C语言编程数据结构|学习日记Day21:内核链表与队列学习
c语言·数据结构·学习
极客互动API1 小时前
企业微信 iPad 协议服务搭建与 AI 回调实战
网络·汇编·人工智能·微信·企业微信·ipad
空堂与归2 小时前
token畅享?FreeToken单卡5090跑满血DeepSeek_V4Flash
人工智能·free token
AI码农小姐姐2 小时前
AI漫剧用什么软件制作?知漫剧小说导入成片教程
人工智能
ycjunhua2 小时前
Spring AI 2.0 GA:ToolCallingAdvisor 重构与 Java Agent 新范式
java·人工智能·spring