文章目录
- 前言
- 零、论文基本信息
- 一、背景与问题
-
- 1. Agent 记忆系统的三个阶段
-
- 1.1 记忆蒸馏
- 1.2 记忆管理
- 1.3 记忆检索
- 2. 现有方法在什么时候判断记忆价值
- 二、相关工作与理论动机
-
- 1. 从启发式记忆到数据驱动记忆
- 2. Predictive Coding
- 3. Complementary Learning Systems
- 4. 三个设计原则
-
- 4.1 保持事件完整性
- 4.2 将原始对话转换为叙事记忆
- 4.3 可预测的信息通常是冗余信息
- 三、Nemori 方法总览
- 四、模块一:Episodic Memory Integration
-
- 1. Local Message Partitioning
-
- 动机
- 例子
- 风险
- 2. Narrative Episode Generation
- 3. Associative Memory Integration
- 五、模块二:Semantic Knowledge Distillation
-
- 1. Anticipatory Schema Synthesis
- 2. Prediction Error Distillation
-
- 直观例子
- 时间推理案例
- 3. 这是不是严格意义的 prediction error?
- 4. Agnostic Knowledge Consolidation
- 六、Response Generation:Episodic 与 Semantic 并行检索
- 七、实验设置
-
- 1. 数据集
- 2. Baselines
- 3. Metrics
- 4. 超参数
- 八、主实验:总体最强,但 Open Domain 是明确反例
-
- Table 2:LoCoMo 主结果
-
- gpt-4.1-mini
- gpt-4o-mini
- Open Domain 失败案例
- 九、效率:Episode-centric pipeline 反而减少了调用
-
- Table 3:Memory Construction Cost
- Table 4:Response Generation Cost
- 十、消融:prediction error 确实优于直接蒸馏
-
- Table 5:核心消融
- 1. Prediction error vs direct distillation
- 2. Native management 贡献很小
- 3. Episodic 与 Semantic 互补
- 4. Adaptive partitioning 有贡献
- 十一、超参数与表示分析
-
- 1. Observation Window 的影响
- 2. Top-K 的影响
- 3. Narrative 与 Raw Episode 的选择
- 十二、第三方集成与长上下文扩展
-
- Table 7:作为 A-MEM / MemoryOS 的入口层
- Table 8:LongMemEvalS
-
- gpt-4o-mini
- gpt-4.1-mini
- 十三、与 Agent Memory 系列方法比较
-
- Nemori vs HeLa-Mem
- Nemori vs A-MEM / MemoryOS
- Nemori vs CoM / ReMemR1
- Nemori vs Mem²Evolve
- 十四、对 Coding Agent / Tool Agent / Multi-Agent 的启发
-
- 1. Coding Agent:只保存超出现有 repo model 的变化
- 2. Tool Agent:把异常 tool outcome 当成 memory signal
- 3. Multi-Agent:保存协作预期被打破的地方
- 4. 生产级改造
- 十五、局限、反例与未解问题
-
- 论文明确承认
- 进一步分析
-
- 1. Prediction error 不等于 future utility
- 2. 预测者与裁判是同一个 LLM 家族
- 3. Cue leakage 与 cue quality
- 4. 形成时推理会固化错误
- 5. 单次运行与 LLM judge
- 6. Open Domain 与 Knowledge Update 的不稳定
- 7. “Training-free”不等于低成本
- 8. 缺少删除与隐私语义
- 十六、我的理解与启发
-
- 1. Nemori 最重要的贡献是 memory 的“增量编码”视角
- 2. Distillation 应该是相对的,而不是绝对的
- 3. 最值得借鉴的是“先预测再写入”协议
- 4. Episodic 与 Semantic 不应互相替代
- 5. Nemori 与 HeLa-Mem 可以形成更完整闭环
- 十七、总结
- 参考资料
前言
随着 Agent 与用户持续交互,系统会不断接收新的对话、任务结果和环境反馈。
一个长期运行的 Agent 可能每天产生几百条消息。如果将所有内容完整保存,记忆库会迅速膨胀,检索时也会出现大量重复信息。
因此,记忆系统首先需要回答一个看似简单、实际上非常关键的问题:
一段新的交互发生后,哪些信息真正值得进入长期记忆?
早期的 Agent 记忆系统通常采用几种比较直接的判断方式:
- 为每条记忆计算重要性分数;
- 为带有明显情绪的信息添加标签;
- 根据事实、偏好、人物关系等固定模板抽取内容;
- 先保存所有内容,再根据访问频率或时间衰减进行清理。
这些方法实现简单,但它们存在一个共同问题:
什么值得记忆,通常由系统设计者提前规定,而不是由交互数据本身决定。
例如,用户连续几周都说:
我每周末都会跑步。
如果系统每次都将这句话重新写入记忆,记忆库中会积累大量重复内容。
但是,如果用户后来补充:
我的膝盖受伤了,医生建议未来三个月暂停跑步。
这条信息虽然只出现一次,却改变了系统对用户行为的原有认识。
传统的重要性评分很难稳定地区分这两种情况。Nemori 提出了一种不同的判断方式:
其核心原则可以概括为:
能够被已有知识预测的内容
↓
大概率是重复信息
无法被已有知识预测的内容
↓
可能是值得记住的新经验
因此,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 记忆检索
当用户提出问题时,检索阶段负责从已有记忆中找到相关内容,并将其加入模型上下文。
完整流程可以表示为:
原始交互
↓
记忆蒸馏:决定保留什么、以什么形式保留
↓
记忆管理:合并、更新、组织和删除
↓
记忆检索:根据问题召回相关内容
↓
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 的实际做法是:
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 包含两个连续执行的主要模块:
为了理解两个模块如何连接,可以先看论文 Figure 1。

图源:论文 Figure 1。上半部分负责将消息划分、叙事化并合并为情景记忆;下半部分先生成预测,再从预测误差中提取语义知识。右侧说明 Nemori 可以与自身管理模块、MemoryOS 或 A-MEM 组合。
整体流程如下:
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,是因为 Evoke 和 Consolidate 是抽象接口;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
| 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
| 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 表示从收到问题到生成答案的端到端延迟。
| 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 e、w/o s 和 w/o p 分别表示移除情景检索、语义检索和自适应消息划分;Mgmt 表示是否使用原生管理模块。
| 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 系列方法比较
| 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 式流程可以:
例如系统预测“修改 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. 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 的前置协议:
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 时沿什么路径回看”。组合后可形成:
Prediction-error distillation
↓
高信息密度 memory nodes
↓
usage-conditioned association
↓
query-time dynamic traversal / callback
这可能比继续堆叠某一种单一 memory structure 更接近完整生命周期。
十七、总结
Nemori 把 Agent Memory 中最容易被忽略的入口问题提到中心:memory 不应因为“看起来重要”而保存,而应因为它改变了系统对未来交互的预测而保存。
其完整链条是:
自适应 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 开始保存世界对自身预期的修正,而不只是保存世界本身。




