文章目录
- 前言
- 零、论文基本信息
- 一、背景与问题
-
- [1. 两种长期历史处理范式](#1. 两种长期历史处理范式)
-
- [1.1 设计型记忆:先写后读](#1.1 设计型记忆:先写后读)
- [1.2 Agent 自主搜索:问题到来后再决定读什么](#1.2 Agent 自主搜索:问题到来后再决定读什么)
- [2. 为什么预构建记忆可能成为税](#2. 为什么预构建记忆可能成为税)
- [3. "苦涩教训"如何映射到 Agent Memory](#3. “苦涩教训”如何映射到 Agent Memory)
- 二、相关工作与本文位置
-
- [1. 事实抽取型记忆](#1. 事实抽取型记忆)
- [2. 图结构记忆](#2. 图结构记忆)
- [3. 简单检索与 Full Context](#3. 简单检索与 Full Context)
- [4. Coding Agent 与 Recursive Language Model](#4. Coding Agent 与 Recursive Language Model)
- 三、实验设计
-
- [1. 数据:LoCoMo conv-26](#1. 数据:LoCoMo conv-26)
- [2. 七种方法看到什么](#2. 七种方法看到什么)
- [3. 三档模型](#3. 三档模型)
- [4. 系统版本与协议](#4. 系统版本与协议)
- [5. 评价方式](#5. 评价方式)
- [6. 图片 Caption 带来的输入不等价](#6. 图片 Caption 带来的输入不等价)
- [四、方法总览:MemoryTax 如何测量"记忆税"](#四、方法总览:MemoryTax 如何测量“记忆税”)
- [五、主结果:Agent Memory 只在弱模型上充当补丁](#五、主结果:Agent Memory 只在弱模型上充当补丁)
-
- [1. 完整结果](#1. 完整结果)
- [2. GPT-4o-mini:Mem0 确实有帮助](#2. GPT-4o-mini:Mem0 确实有帮助)
- [3. GPT-6 Luna:Full Context 反超复杂记忆](#3. GPT-6 Luna:Full Context 反超复杂记忆)
- [4. Claude Opus 5.5:Agent 自主搜索登顶](#4. Claude Opus 5.5:Agent 自主搜索登顶)
- [六、成本分析:Mem0 的构建何时才能回本](#六、成本分析:Mem0 的构建何时才能回本)
-
- [1. 构建成本高于 Full Context 的完整 Rollout](#1. 构建成本高于 Full Context 的完整 Rollout)
- [2. 累积曲线比总点更能看出"税"](#2. 累积曲线比总点更能看出“税”)
- [七、Writer--Reader 交叉实验:记忆上限由谁决定](#七、Writer–Reader 交叉实验:记忆上限由谁决定)
-
- [1. 为什么要拆分 Writer 和 Reader](#1. 为什么要拆分 Writer 和 Reader)
- [2. 交叉结果](#2. 交叉结果)
- [3. 信息瓶颈的形式化理解](#3. 信息瓶颈的形式化理解)
- [八、Pi 为什么位于成本---正确率前沿](#八、Pi 为什么位于成本—正确率前沿)
-
- [1. Pi 的总成本与正确率](#1. Pi 的总成本与正确率)
- [2. Pi 唯一的"错误"其实是数据答案错误](#2. Pi 唯一的“错误”其实是数据答案错误)
- [3. 图片 Caption 解释了大部分表面领先](#3. 图片 Caption 解释了大部分表面领先)
- [九、Token 与 Turn 效率](#九、Token 与 Turn 效率)
- 十、消融、敏感性与失败案例
-
- [1. 本文没有传统模块消融](#1. 本文没有传统模块消融)
- [2. 弱 Agent 不主动读文件](#2. 弱 Agent 不主动读文件)
- [3. Zep 的弱 Writer 构图过少](#3. Zep 的弱 Writer 构图过少)
- [4. 错误 Gold Answer](#4. 错误 Gold Answer)
- [5. Photo Caption 混杂变量](#5. Photo Caption 混杂变量)
- 十一、论文真正证明了什么,没有证明什么
-
- [1. 得到数据直接支持的结论](#1. 得到数据直接支持的结论)
- [2. 本文没有证明的结论](#2. 本文没有证明的结论)
- [十二、与 Agent Memory 系列方法的横向比较](#十二、与 Agent Memory 系列方法的横向比较)
- [十三、对 Coding Agent、Tool Agent 与 Multi-Agent 的启发](#十三、对 Coding Agent、Tool Agent 与 Multi-Agent 的启发)
-
- [1. Coding Agent:原始轨迹应是最终事实来源](#1. Coding Agent:原始轨迹应是最终事实来源)
- [2. Tool Agent:让记忆可追溯,而不是不可逆压缩](#2. Tool Agent:让记忆可追溯,而不是不可逆压缩)
- [3. Multi-Agent:Writer 与 Reader 应独立评测](#3. Multi-Agent:Writer 与 Reader 应独立评测)
- [4. 混合架构可能比二选一更合理](#4. 混合架构可能比二选一更合理)
- 十四、局限性
-
- [1. 只有一段对话](#1. 只有一段对话)
- [2. 每个 Cell 只运行一次](#2. 每个 Cell 只运行一次)
- [3. 自动 Judge 与错误答案键](#3. 自动 Judge 与错误答案键)
- [4. Agent 与记忆方法输入不一致](#4. Agent 与记忆方法输入不一致)
- [5. 历史完全放得进上下文](#5. 历史完全放得进上下文)
- [6. 只测试默认 Mem0/Zep 配置](#6. 只测试默认 Mem0/Zep 配置)
- [7. 价格具有时间与供应商依赖](#7. 价格具有时间与供应商依赖)
- [8. 没有报告延迟与生产稳定性](#8. 没有报告延迟与生产稳定性)
- [9. 任务只测试问答利用,不测试完整记忆生命周期](#9. 任务只测试问答利用,不测试完整记忆生命周期)
- 十五、我的理解与启发
-
- [1. MemoryTax 真正批评的是"不可逆的提前抽象"](#1. MemoryTax 真正批评的是“不可逆的提前抽象”)
- [2. 原始记录与记忆不应是替代关系](#2. 原始记录与记忆不应是替代关系)
- [3. 记忆系统必须报告"摊销曲线"](#3. 记忆系统必须报告“摊销曲线”)
- [4. Writer--Reader Matrix 应成为标准实验](#4. Writer–Reader Matrix 应成为标准实验)
- [5. "通用搜索工具"也需要被系统研究](#5. “通用搜索工具”也需要被系统研究)
- [6. 这篇论文对 AMM 框架形成了很好的实证补充](#6. 这篇论文对 AMM 框架形成了很好的实证补充)
- 十六、总结
- 参考资料
前言
Agent Memory 领域长期默认一个前提:历史对话太长、上下文窗口太贵,因此系统应该在问题到来之前,先把历史压缩成更小、更"有用"的记忆。
Mem0 会从对话中抽取事实,Zep 会把历史组织成时序知识图谱,A-MEM、MAGMA 等工作则进一步设计关联结构。它们虽然机制不同,却共享一种 write-before-read 思路:先由系统决定什么值得留下,等用户未来提问时再从整理后的记忆中检索。
但 Coding Agent 走出了另一条路线。Pi、Codex、Claude Code 并不会预先把整个代码仓库压缩成一套"代码记忆"。它们通常保留原始文件,然后让模型根据当前任务调用 grep、rg、文件读取器等工具,自主决定搜索什么、读哪一段以及是否继续搜索。
这就产生了一个很关键的问题:
当模型已经足够强,能够根据当前问题自主搜索原始历史时,我们是否还需要在问题出现之前,花钱构建一套设计好的 Agent Memory?
《MemoryTax: The Bitter Lesson of Agent Memory》围绕这个问题做了一项规模不大、但对照思路很尖锐的实证研究。作者在同一段 LoCoMo 长对话上,将四种传统记忆/检索方案------Full Context、BM25、Mem0、Zep------与三种通用 Coding Agent------Pi、Codex、Claude Code------放在一起,并让它们分别搭配 GPT-4o-mini、GPT-6 Luna 和 Claude Opus 5.5。
论文关注的不是单一正确率,而是完整 Rollout 的成本---正确率前沿:预构建记忆花了多少钱?回答每个问题又花多少钱?如果换成更强的模型,预先压缩是否仍然值得?
作者得到的核心判断是:设计型 Agent Memory 可能是一种 Memory Tax。
它包含两层含义:
- 经济税:Mem0、Zep 在问题到来前就要支付记忆构建成本,而在当前实验的 152 个问题内,这笔成本未必能够收回;
- 信息税:Writer 在写入阶段删除的信息会形成永久上限,即使后来换成更强 Reader,也无法回答已被弱 Writer 丢失的内容。
论文借用了 Sutton 的 "Bitter Lesson":人工注入的领域结构可能在早期有效,但随着通用计算与模型能力扩展,能够随算力伸缩的通用方法往往最终胜出。对应到 Agent Memory,作者提出的候选方向不是设计更复杂的压缩器,而是:保留原始记录,让强模型在问题到来后使用通用工具搜索。
一句话核心增量:MemoryTax 首次把预构建记忆与 Agent 自主搜索原始历史放进统一的成本---正确率评测中,并通过 Writer--Reader 交叉实验揭示:设计型记忆既要缴纳昂贵的构建成本,也会因写入阶段的信息丢失形成强 Reader 无法突破的性能上限。
需要提前强调:本文是一项 short empirical study,只有一段对话、每个设置一次运行。它提供的是一个值得重视的反例和研究假设,而不是已经证明"所有 Agent Memory 都无用"。
零、论文基本信息
- 论文名称: MemoryTax: The Bitter Lesson of Agent Memory
- 发表平台: arXiv:2610.29823(v1)
- 代码仓库: https://github.com/zedong-peng/memorytax
- 作者: Zedong Peng(上海交通大学)
一、背景与问题
1. 两种长期历史处理范式
面对一段很长的交互历史,当前系统大致采用两种范式。
1.1 设计型记忆:先写后读
Mem0、Zep 等系统在任何具体问题出现之前,就对原始对话做处理:
H → Writer M H \xrightarrow{\text{Writer}} M HWriter M
其中, H H H 是完整历史, M M M 是抽取后的事实、图谱或其他记忆结构。
未来问题 q q q 到来时,系统只检索 M M M:
q → Retrieve ( M ) R q → Reader a q \xrightarrow{\text{Retrieve}(M)} R_q \xrightarrow{\text{Reader}} a qRetrieve(M) RqReader a
它的优势是每次回答看到的上下文更短;风险是 Writer 在不知道未来问题的情况下,提前决定了什么重要、什么不重要。
1.2 Agent 自主搜索:问题到来后再决定读什么
Coding Agent 保留原始历史:
M = H M=H M=H
问题出现后,Agent 根据当前需求反复使用文件读取、关键词搜索和其他工具:
( q , H ) → Agent Loop { s 1 , r 1 , s 2 , r 2 , ... } → a (q,H) \xrightarrow{\text{Agent Loop}} \{s_1,r_1,s_2,r_2,\dots\} \rightarrow a (q,H)Agent Loop {s1,r1,s2,r2,...}→a
这里 s i s_i si 是第 i i i 次搜索或读取动作, r i r_i ri 是工具返回结果。搜索策略不是预先固定,而是由当前问题和中间结果共同决定。
2. 为什么预构建记忆可能成为税
预构建记忆并不是免费的缓存。它至少包含三类代价:
C r o l l o u t = C b u i l d + N ⋅ C q u e s t i o n C_{rollout}=C_{build}+N\cdot C_{question} Crollout=Cbuild+N⋅Cquestion
- C b u i l d C_{build} Cbuild:把历史抽取为事实或图谱的成本;
- C q u e s t i o n C_{question} Cquestion:每个问题的检索与回答成本;
- N N N:共享同一段历史的问题数量。
设计型记忆通常希望用较高的 C b u i l d C_{build} Cbuild 换取较低的 C q u e s t i o n C_{question} Cquestion。它是否划算,取决于:
- 构建成本有多高;
- 后续有多少问题可以摊薄这笔成本;
- 压缩后是否损失了回答问题所需的信息;
- 强模型直接阅读或搜索原始记录是否已经足够好。
因此,论文没有只比较 Accuracy,而是把整个记忆生命周期纳入成本。
3. "苦涩教训"如何映射到 Agent Memory
Sutton 的 Bitter Lesson 指出:依赖人为知识的专门方法常在短期内领先,但能够利用更多计算的通用方法通常会长期胜出。
在本文中:
- 人为设计的记忆写入、抽取与图结构,对应"把知识写进系统";
- 强模型搭配通用搜索工具,对应"随计算与模型能力扩展的通用方法"。
作者要检验的是:随着模型从 GPT-4o-mini 增强到 GPT-6 Luna、Claude Opus 5.5,Mem0、Zep 的结构性优势是否继续存在。
二、相关工作与本文位置
1. 事实抽取型记忆
Mem0 从原始交互中抽取事实,并在回答时返回相关事实。它将长历史压缩为较小的事实集合,适合频繁查询,但抽取阶段可能丢失上下文、关系和未被认为重要的细节。
在本文框架下,Mem0 是典型的"预付构建成本、降低单次读取成本"方案。
2. 图结构记忆
Zep/Graphiti 把对话构建为时序图谱,通过边检索提供上下文。相比扁平事实,它试图显式保存实体与时间关系,但构图质量取决于 Writer 的抽取能力。
论文发现这种依赖尤其明显:弱模型写出的图很稀疏,强 Reader 无法从不存在的边中恢复信息。
3. 简单检索与 Full Context
BM25 不进行语义抽象,直接保存原始 Turn,用词项匹配检索局部窗口。Full Context 则把完整对话一次性送给模型。
这两个 Baseline 很重要:
- BM25 检验复杂记忆结构是否真的胜过廉价、保真的关键词检索;
- Full Context 检验记忆压缩是否真的比直接读取全部历史更有效。
4. Coding Agent 与 Recursive Language Model
Pi、Codex、Claude Code 并不是为 LoCoMo 记忆问答设计的系统。它们被选中,是因为它们代表通用 Agent Harness:给模型文件和工具,让模型自己决定是否打开文件、搜索关键词、继续推理。
本文将 Agent Harness 当作一种"动态记忆读取器",把问题从"如何提前压缩历史"改写为"如何让模型在需要时检索原始记录"。
三、实验设计
1. 数据:LoCoMo conv-26
作者只使用 LoCoMo 中的一段对话 conv-26:
- 419 个 Turn;
- 19 个 Session;
- 152 个问题;
- 问题覆盖 Single-hop、Multi-hop、Temporal 和 Open-domain;
- 按 Mem0 的评测习惯,排除 Adversarial Questions。
作者说明,在 LoCoMo 的十段对话中,conv-26 上各方法的准确率走势与全数据集较接近。但"走势相近"不能替代完整复现,这一点仍是证据范围的重要限制。
2. 七种方法看到什么
| 方法 | 存储内容 | 回答时模型看到的内容 |
|---|---|---|
| Full Context | 原始历史 | 全部历史 |
| BM25 | 原始 Turn | Top-8 Turn,并带每条前后各 2 个 Turn |
| Mem0 | 抽取事实 | Top-200 Facts |
| Zep | 时序图谱 | Top-20 Edges |
| Pi | 单个 JSON 文件中的原始历史 | Agent 使用工具主动读取的内容 |
| Codex | 单个 JSON 文件中的原始历史 | Agent 使用工具主动读取的内容 |
| Claude Code | 单个 JSON 文件中的原始历史 | Agent 使用工具主动读取的内容 |
Table 1:各方法的存储与读取方式。 前四种方法采用固定上下文构造,三种 Coding Agent 保留原始文件并自主决定读什么。
这里的比较实际包含三种变量:
- 是否压缩原始历史;
- 检索策略是固定还是由 Agent 动态决定;
- 回答过程是单次模型调用还是多步 Agent Loop。
因此,它不是只隔离"Memory Structure"的严格单变量实验,而是比较两套完整范式。
3. 三档模型
每种方法分别搭配:
- GPT-4o-mini;
- GPT-6 Luna,Reasoning Effort = high;
- Claude Opus 5.5,Reasoning Effort = high。
Mem0 和 Zep 默认由同一个模型负责写 Store 和回答问题。随后作者通过 Writer--Reader 交叉实验,将不同 Reader 接到已经构建好的 Store 上,用于判断上限来自 Writer 还是 Reader。
4. 系统版本与协议
- Mem0 OSS 2.1.0:按时间顺序逐 Turn 写入,检索 k = 200 k=200 k=200,不重排,并把日期添加到文本前;
- Zep:Graphiti OSS 0.30.2 + Kuzu,每个 Session 作为一个 Episode,Hybrid Edge Search Top-20;
- Pi 1.1.0;
- Codex 0.159.2;
- Claude Code 2.1.295;
- Agent 的每道题都在全新容器和全新 Session 中运行;
- 容器只有官方对话文件,不包含问题答案;
- Agent 运行期间只能访问模型 Endpoint,关闭 Web Search。
每个 Agent Question 最长可运行 20 分钟;Pi 和 Claude Code 最多 100 个 Turn。失败或没有最终答案的 Trial 会重新运行,最终只统计被接受的 Trial。
这一重试规则保证得到可评分答案,但也意味着报告成本不是"首次尝试的期望成本",而是被接受运行的成本。
5. 评价方式
GPT-4o-mini 使用 Mem0 2025 Judge Prompt 对答案判定 Correct/Wrong。评分比较宽松,只要生成答案覆盖 Gold Answer 的同一主题即可。空答案算错。
成本包括:
- 所有 LLM 调用的公开 List Price;
text-embedding-3-small的 Embedding 成本;- Cached Input 也计入;
- Judge 成本不计入。
Token 统计不包括 Embedding。一个 Turn 定义为一次 LLM Call:记忆方法每个问题一次;Agent Loop 每一步一次;Mem0/Zep 的 Store 构建调用也计入。
每个 Method × Model Cell 只运行一次。
6. 图片 Caption 带来的输入不等价
LoCoMo 中 419 个 Turn 里有 116 个分享了照片,152 个问题中有 64 个问题的证据位于包含照片的 Turn。
三种 Agent 得到官方 JSON 文件,其中包含照片 Caption;而 Full Context、BM25、Mem0、Zep 只获得 Turn Text,没有 Caption。
这意味着 Agent 与记忆方法在 64 道题上并非读取完全相同的信息。作者没有隐藏这个问题,而是进一步做了 Photo / Other Split,但它仍然限制了"Agent 准确率更高"这一结论。
四、方法总览:MemoryTax 如何测量"记忆税"
论文没有提出一个新模型,核心方法是构造统一评测账本。
对每个 Cell,完整 Rollout 由两部分组成:
C ( m , b ) = C b u i l d ( m , b ) + ∑ i = 1 152 C a n s w e r ( m , b , q i ) C(m,b)=C_{build}(m,b)+\sum_{i=1}^{152}C_{answer}(m,b,q_i) C(m,b)=Cbuild(m,b)+i=1∑152Canswer(m,b,qi)
其中:
- m m m 是方法;
- b b b 是 Backbone;
- C b u i l d C_{build} Cbuild 是一次性记忆构建成本;
- C a n s w e r C_{answer} Canswer 是问题 q i q_i qi 的实际回答成本。
正确率为:
A ( m , b ) = 1 152 ∑ i = 1 152 I ( a ^ i = a i ) A(m,b)=\frac{1}{152}\sum_{i=1}^{152}\mathbb{I}(\hat a_i=a_i) A(m,b)=1521i=1∑152I(a^i=ai)
论文真正关心的是 Pareto Frontier:如果另一个 Cell 成本更低且正确率更高,那么当前 Cell 就被支配,不值得选择。
( C 1 , A 1 ) ≻ ( C 2 , A 2 ) if C 1 ≤ C 2 , A 1 ≥ A 2 (C_1,A_1)\succ(C_2,A_2) \quad \text{if}\quad C_1\le C_2,\ A_1\ge A_2 (C1,A1)≻(C2,A2)ifC1≤C2, A1≥A2
并且至少一个不等式严格成立。
在看 Figure 1 之前,需要先理解:每个点不是单个问题的调用,而是"构建 Store + 回答全部 152 道题"的完整 Cell。

Figure 1:完整 Rollout 的成本---正确率前沿。 横轴为回答 152 道题的总成本(对数刻度),纵轴为正确率;阶梯线表示在不超过给定成本时达到的最高正确率。
图中的前沿依次经过 GPT-6 Luna + BM25、GPT-6 Luna + Full Context,以及 Claude Opus 5.5 + Pi。Mem0 与 Zep 的点全部位于前沿之下。
五、主结果:Agent Memory 只在弱模型上充当补丁
1. 完整结果
| 方法 | 模型 | Build / 美元 | 每题成本 / 美元 | Single | Multi | Temporal | Open | All |
|---|---|---|---|---|---|---|---|---|
| Full Context | GPT-4o-mini | --- | 0.0028 | 89 | 75 | 51 | 62 | 74 |
| Full Context | GPT-6 Luna | --- | 0.0019 | 90 | 97 | 95 | 85 | 92 |
| Full Context | Claude Opus 5.5 | --- | 0.117 | 93 | 94 | 97 | 100 | 95 |
| BM25 | GPT-4o-mini | --- | 0.00028 | 86 | 50 | 73 | 69 | 74 |
| BM25 | GPT-6 Luna | --- | 0.00021 | 89 | 63 | 89 | 69 | 82 |
| BM25 | Claude Opus 5.5 | --- | 0.013 | 93 | 81 | 92 | 92 | 90 |
| Mem0 | GPT-4o-mini | 0.559 | 0.0013 | 87 | 75 | 65 | 77 | 78 |
| Mem0 | GPT-6 Luna | 0.449 | 0.0011 | 89 | 88 | 57 | 85 | 80 |
| Mem0 | Claude Opus 5.5 | 25.876 | 0.074 | 93 | 97 | 97 | 100 | 95 |
| Zep | GPT-4o-mini | 0.092 | 0.00012 | 51 | 34 | 30 | 54 | 43 |
| Zep | GPT-6 Luna | 0.103 | 0.00012 | 54 | 50 | 49 | 46 | 51 |
| Zep | Claude Opus 5.5 | 6.224 | 0.0077 | 83 | 94 | 89 | 85 | 87 |
| Pi | GPT-4o-mini | --- | 0.016 | 74 | 59 | 35 | 85 | 63 |
| Pi | GPT-6 Luna | --- | 0.0032 | 96 | 81 | 92 | 92 | 91 |
| Pi | Claude Opus 5.5 | --- | 0.046 | 99 | 100 | 100 | 100 | 99 |
| Codex | GPT-4o-mini | --- | 0.0031 | 30 | 22 | 24 | 46 | 28 |
| Codex | GPT-6 Luna | --- | 0.0050 | 90 | 84 | 89 | 85 | 88 |
| Codex | Claude Opus 5.5 | --- | 0.167 | 99 | 100 | 95 | 100 | 98 |
| Claude Code | GPT-4o-mini | --- | 0.0020 | 34 | 22 | 8 | 77 | 29 |
| Claude Code | GPT-6 Luna | --- | 0.0082 | 96 | 78 | 95 | 92 | 91 |
| Claude Code | Claude Opus 5.5 | --- | 0.187 | 99 | 94 | 97 | 100 | 97 |
Table 2:各方法与模型的完整成本和正确率。 四类问题数量分别为 Single-hop 70、Multi-hop 32、Temporal 37、Open-domain 13;正确率单位为百分比。
2. GPT-4o-mini:Mem0 确实有帮助
在最弱模型上:
- Mem0:78%;
- Full Context:74%;
- BM25:74%;
- Zep:43%;
- Pi:63%;
- Codex:28%;
- Claude Code:29%。
Mem0 比 Full Context 高 4 个百分点,主要改善 Temporal 与 Open-domain。这说明当 Reader 能力较弱、难以直接从长上下文中定位信息时,预先抽取的事实可以减少搜索负担。
而弱模型驱动的 Coding Agent 表现很差。Codex 只有约四分之三问题会打开对话文件,Claude Code 几乎不打开;它们经常直接依据问题猜答案。这里失败的不是"原始历史不存在",而是弱模型不会可靠地使用工具读取历史。
因此,设计型记忆在弱模型上像一种 Capability Patch:用系统预先做好的信息选择,补偿模型不会搜索的缺陷。
3. GPT-6 Luna:Full Context 反超复杂记忆
换成 GPT-6 Luna 后:
- Full Context:92%;
- Pi / Claude Code:91%;
- Codex:88%;
- BM25:82%;
- Mem0:80%;
- Zep:51%。
Mem0 不仅没有继续领先,反而比 Full Context 低 12 个百分点。特别是在 Temporal Questions 上,Mem0 只有 57%,Full Context 达到 95%。
这说明更强 Reader 已经能够利用原始历史中的时间与上下文关系,而事实抽取可能把这些关系压扁或遗漏。
4. Claude Opus 5.5:Agent 自主搜索登顶
在最强模型上:
- Pi:99%;
- Codex:98%;
- Claude Code:97%;
- Full Context / Mem0:95%;
- BM25:90%;
- Zep:87%。
不过,这个领先不能直接全部归因于 Agent Search,因为 Agent 独享图片 Caption。排除图片相关题后,Pi 与 Full Context 实际只差 1 道题。
因此,更稳妥的结论是:当输入信息相同时,强 Agent 搜索原始记录可以用明显更低成本匹配 Full Context;它是否普遍比 Full Context 更准确,本文没有证明。
六、成本分析:Mem0 的构建何时才能回本
1. 构建成本高于 Full Context 的完整 Rollout
Mem0 的 Build Cost 与同模型 Full Context 回答全部 152 道题的总成本如下:
| 模型 | Mem0 Build | Full Context 完整 Rollout | Mem0 仅构建 / Full Context 总成本 |
|---|---|---|---|
| GPT-4o-mini | $0.559 | $0.43 | 更高 |
| GPT-6 Luna | $0.449 | $0.29 | 更高 |
| Claude Opus 5.5 | $25.876 | $17.84 | 更高 |
成本对照:Mem0 的一次性构建成本。 三档模型上,Mem0 尚未回答任何问题,花费就已经超过 Full Context 回答全部 152 道题的总成本。
Mem0 每道题确实比 Full Context 便宜,但必须回答足够多问题才能摊薄构建成本。论文计算出的 Break-even Point 分别是:
- GPT-4o-mini:372 道题;
- GPT-6 Luna:545 道题;
- Claude Opus 5.5:596 道题。
LoCoMo 当前只有 152 道题,因此三种设置都没有回本。
2. 累积曲线比总点更能看出"税"
在看 Figure 2 之前,需要注意曲线从构建阶段开始:Mem0/Zep 会先在横轴上产生一段成本,却还没有答对任何问题;Full Context、BM25 与 Agent 没有预构建阶段。

Figure 2:累积成本---正确率曲线。 每条曲线从构建开始,再按单题成本由低到高累积 152 道题;粗线表示在成本与正确数量上未被其他 Cell 同时击败的设置。
这张图支撑两个结论:
- 对问题数量较少的历史,预构建记忆的固定成本非常显眼;
- Memory 是否划算不能脱离复用次数讨论。若同一段历史将被查询上千次,Mem0 的低 Per-question Cost 可能重新具有价值。
所以"Memory Tax"不是说缓存永远不值得,而是说很多论文只报告回答阶段的准确率,却没有把构建成本与查询规模一起计算。
七、Writer--Reader 交叉实验:记忆上限由谁决定
1. 为什么要拆分 Writer 和 Reader
通常 Mem0/Zep 用同一个模型构建 Store 并回答问题。如果弱模型设置表现差,我们无法判断:
- 是 Writer 没把关键信息写进去;
- 还是 Reader 不会使用已经写入的信息。
为此,作者固定 Store,只更换 Reader。由于检索阶段不调用 LLM,这个交换可以直接完成。
2. 交叉结果
| Store Writer | Mem0:4o-mini Reader | Mem0:Luna Reader | Mem0:Opus Reader | Zep:4o-mini Reader | Zep:Luna Reader | Zep:Opus Reader |
|---|---|---|---|---|---|---|
| GPT-4o-mini | 78 | 83 | 84 | 43 | 43 | 45 |
| GPT-6 Luna | 74 | 80 | 81 | 52 | 51 | 55 |
| Claude Opus 5.5 | 89 | 91 | 95 | 66 | 71 | 87 |
Table 3:Writer--Reader 交叉正确率。 行表示构建 Store 的模型,列表示读取 Store 并回答问题的模型;粗体为同一模型写入并读取。
在 Zep 的 GPT-4o-mini Store 上,Reader 从 GPT-4o-mini 换成 Claude Opus 5.5,正确率只从 43% 提升到 45%。而 Claude Opus 5.5 写出的 Store,即使交给 GPT-4o-mini 读取,也能达到 66%。
Mem0 的差距较小,但趋势相同:
- 读取 GPT-4o-mini Store:78% / 83% / 84%;
- 读取 Claude Opus 5.5 Store:89% / 91% / 95%。
这说明 Writer 质量比 Reader 升级更重要。Reader 只能对现有记忆推理,不能恢复 Writer 已经丢弃的事实。
在看 Figure 3 时,箭头表示同一个 Store 被换成不同 Reader;同色点属于同一 Writer。

Figure 3:Writer 与 Reader 的交叉实验。 每种颜色代表一个固定 Writer 生成的 Store;实心点是 Writer 自己读取,箭头连接更换 Reader 后的结果。
3. 信息瓶颈的形式化理解
如果 Store 是历史的压缩:
M = W ( H ) M=W(H) M=W(H)
回答为:
a ^ = R ( q , M ) \hat a=R(q,M) a^=R(q,M)
当 Writer 删除了与问题相关的信息 e e e:
e ∉ M e\notin M e∈/M
再强的 Reader 也只能基于不完整的 M M M 推理。它可能依靠常识猜对,却不能从 Store 中恢复 e e e。
因此,设计型记忆有一个由 Writer 决定的 Information Ceiling。这正是本文比普通"模型越强、分数越高"对比更有价值的地方。
八、Pi 为什么位于成本---正确率前沿
1. Pi 的总成本与正确率
Claude Opus 5.5 + Pi:
- 正确率 99%;
- 完整 Rollout 约 $6.95;
- 平均每题约读取 10,000 Input Tokens,其中约 7,900 为 Cached Tokens。
Claude Opus 5.5 + Full Context:
- 正确率 95%;
- 完整 Rollout $17.84;
- 平均每题约 28,900 Input Tokens。
Pi 用不到 Full Context 一半的成本达到更高表面分数。与同模型的 Codex(25.41)和 Claude Code(28.41)相比,Pi 也明显更便宜。这说明 Harness 的工具协议、系统提示、缓存与行动循环会显著影响同一模型的成本。
2. Pi 唯一的"错误"其实是数据答案错误
题目询问 Caroline 在 2023 年 10 月 13 日分享了什么类型的画。Gold Answer 说是带蓝色条纹的抽象画,但原对话中那幅画由 Melanie 分享;Caroline 分享的是一张 Drawing。
Pi 指出了这个矛盾,却被 Judge 按 Gold Answer 判错。Full Context、Codex、Claude Code 搭配 Claude Opus 5.5 时也识别出相同问题,同样被判错。
因此,在其余 151 道 Gold Answer 可靠的问题上,Pi 全部正确。
这个案例同时提醒我们:99% 不是无条件的模型性能结论,也暴露出 Benchmark Gold 与自动 Judge 会共同限制评测上限。
3. 图片 Caption 解释了大部分表面领先
| 方法 | 4o-mini Photo / Other | Luna Photo / Other | Opus 5.5 Photo / Other |
|---|---|---|---|
| Full Context | 66 / 81 | 91 / 93 | 89 / 99 |
| BM25 | 61 / 83 | 78 / 84 | 84 / 94 |
| Mem0 | 70 / 84 | 72 / 86 | 91 / 99 |
| Zep | 33 / 50 | 53 / 50 | 77 / 94 |
| Pi | 53 / 69 | 88 / 94 | 98 / 100 |
| Codex | 22 / 33 | 84 / 91 | 97 / 99 |
| Claude Code | 17 / 38 | 91 / 92 | 95 / 99 |
Table 4:图片相关问题与其他问题的正确率。 Photo 包含 64 道证据位于照片 Turn 的题,Agent 可读 Caption;Other 为其余 88 道题。
Claude Opus 5.5 下,Pi 比 Full Context 多答对 7 道题,其中 6 道属于 Photo Questions。对没有图片证据的 88 道题:
- Pi:100%;
- Full Context:99%;
- Mem0:99%;
- Codex:99%;
- Claude Code:99%。
换句话说,在信息输入一致的部分,Pi 与 Full Context 只差 1 道题。本文有力证明的是 Pi 更省成本且不损失准确率,而不是已经证明 Agent Search 必然比 Full Context 更准确。
九、Token 与 Turn 效率
仅看美元成本会受到供应商定价和缓存政策影响。附录 Figure 4 进一步以 LLM Calls 和 Tokens 重画累积曲线。

Figure 4:按 Turn 与 Token 统计的累积正确率。 上图横轴是 LLM 调用次数,下图横轴是 Token 数;粗线表示在相应资源与正确数量上未被其他 Cell 支配的设置。
它提醒我们,Agent Search 的"更省"不是没有代价:Agent 会进行多步调用,只是每次读取更小片段;Full Context 调用次数少,却反复输入整段历史。
工程上需要同时看:
Efficiency = f ( Money , Tokens , Turns , Latency , Cache Hit ) \text{Efficiency}=f(\text{Money},\text{Tokens},\text{Turns},\text{Latency},\text{Cache Hit}) Efficiency=f(Money,Tokens,Turns,Latency,Cache Hit)
本文没有报告端到端时延,因此不能从美元成本直接推断 Pi 的用户等待时间一定更短。
十、消融、敏感性与失败案例
1. 本文没有传统模块消融
MemoryTax 不是新模型,因此没有"移除某个模块"的常规 Ablation。最接近消融的分析是:
- 更换模型强度;
- 固定 Writer Store、更换 Reader;
- 将 Photo Questions 与 Other Questions 分开;
- 用美元、Turn、Token 三种资源衡量前沿。
这些分析分别隔离了 Backbone、写入质量、输入不等价和成本口径的影响。
2. 弱 Agent 不主动读文件
GPT-4o-mini 驱动 Codex 和 Claude Code 时,正确率只有 28% 和 29%。作者观察到,Codex 约四题中有三题打开文件,Claude Code 几乎不打开。
这说明"给模型搜索工具"不等于"模型会搜索"。Agent Search 的收益依赖 Tool-use Policy。对于弱模型,固定检索或预构建记忆仍然可能更可靠。
3. Zep 的弱 Writer 构图过少
Zep 使用 GPT-6 Luna 构建的图只有 128 个事实,而 Claude Opus 5.5 构建的图有 195 个事实。GPT-6 Luna + Zep 只有 51%,Opus + Zep 达到 87%。
数量并不等于质量,但这个差异与 Writer Ceiling 一致:弱 Writer 构建的结构本身就缺少信息。
4. 错误 Gold Answer
Pi 唯一的失分来自问题与答案键错误。自动 Judge 只能忠于 Gold,不能自动修复 Benchmark。对接近满分的系统,单个标注错误会明显影响排名。
5. Photo Caption 混杂变量
Agent 比其他方法多看到照片描述,直接导致大部分准确率优势。作者通过 Split Analysis 诚实展示了这一点,但实验设计本可从一开始让所有方法读取相同字段。
十一、论文真正证明了什么,没有证明什么
1. 得到数据直接支持的结论
在 LoCoMo conv-26、当前默认配置与价格下:
- Mem0 只在 GPT-4o-mini 上超过 Full Context;
- Mem0 的构建成本超过同模型 Full Context 回答 152 题的完整成本;
- Mem0/Zep 的 Store 质量强烈受 Writer 影响;
- 强 Reader 无法完全修复弱 Writer 的信息丢失;
- Claude Opus 5.5 + Pi 位于实验中的成本---正确率前沿;
- 在不涉及照片证据的 88 题上,Pi 与 Full Context 仅相差 1 题。
2. 本文没有证明的结论
本文不能证明:
- 所有 Agent Memory 都不如原始历史搜索;
- 在超出上下文窗口的历史上,Full Context 仍然可行;
- Pi 在其他对话、其他任务或多次运行中仍保持 99%;
- 所有 Memory System 的默认配置都已达到最佳;
- Agent Search 的实际时延、稳定性与生产成本一定更优;
- 结构化记忆在用户偏好更新、删除、隐私和跨会话持续学习上没有价值。
论文标题中的 "Bitter Lesson" 是一个方向性判断,不是由当前小样本完成的普遍性证明。
十二、与 Agent Memory 系列方法的横向比较
| 方法 | 历史在问题前如何处理 | 核心优势 | MemoryTax 指出的风险 |
|---|---|---|---|
| Mem0 | 预先抽取事实 | 查询上下文短、适合高频复用 | Build 昂贵;Writer 遗漏成为永久上限 |
| Zep | 预先构建时序图谱 | 显式关系与时间结构 | 构图高度依赖 Writer;弱 Writer 图谱稀疏 |
| A-MEM | 预先形成可演化关联记忆 | 动态组织记忆关系 | 若写入前已丢失细节,后续演化仍受输入上限限制 |
| MAGMA | 多图、多视角组织长期记忆 | 支持不同关系视角的检索 | 复杂结构需要额外构建成本,必须进入成本账本 |
| CoM | 组合多条记忆支持推理 | 强调记忆间组合 | 组合只能使用已保存信息,不能恢复被 Writer 删除的证据 |
| ReMemR1 | 写入时回访历史记忆 | 减少边读边记的信息损失 | 仍需验证回访成本能否被后续问题摊薄 |
| Mem²Evolve | 根据经验优化记忆系统 | 可持续调整内容/策略 | 搜索到的结构仍可能在问题到来前固化 |
| Pi / Codex / Claude Code | 保留原始记录,问题到来后自主搜索 | 忠实、动态、随模型能力扩展 | 弱模型可能不搜索;多步调用和延迟可能较高 |
| MemoryTax | 不提出新存储结构 | 统一核算成本,并拆分 Writer / Reader 上限 | 证据仅来自单段对话与单次运行 |
这篇论文并没有直接实验 A-MEM、MAGMA、CoM、ReMemR1 或 Mem²Evolve,因此上表后两列中涉及这些方法的内容是框架层面的比较,不能当作它们在 LoCoMo 上已经被 MemoryTax 击败。
MemoryTax 对系列工作的真正提醒是:以后评价新记忆机制时,不能只问"比 Full Context 高了几分",还要问:
- 写 Store 花了多少 Token 和美元?
- 需要多少次查询才能回本?
- 写入模型与读取模型分别是谁?
- 原始历史是否仍可访问?
- Writer 丢失的信息能否被追溯和恢复?
- 如果给强 Agent 通用搜索工具,复杂记忆是否仍在 Pareto Frontier 上?
十三、对 Coding Agent、Tool Agent 与 Multi-Agent 的启发
1. Coding Agent:原始轨迹应是最终事实来源
代码、日志、测试输出和 Git History 本身就有明确结构与成熟搜索工具。与其提前让 LLM 把一切总结成"代码记忆",更稳妥的架构是:
- 原始仓库与执行轨迹长期保留;
- 索引、摘要与经验作为可丢弃的加速层;
- 当前任务由 Agent 使用
rg、AST Search、Symbol Index、Vector Search 等工具动态读取; - 任何摘要都保留 Provenance,可回到原文件验证。
这相当于把 Memory 从"唯一知识载体"降级为"Search Cache"。
2. Tool Agent:让记忆可追溯,而不是不可逆压缩
Tool Agent 的失败经验可以抽象成技能,但不能只保存结论。建议一条技能记忆同时保存:
- 原始轨迹 ID;
- 适用环境与前置条件;
- 成功/失败验证信号;
- 生成该技能的 Writer 版本;
- 冲突时回查原始记录的工具入口。
这样,当更强 Reader 到来时,它可以重新解释原始证据,而不是被旧 Writer 的摘要永久限制。
3. Multi-Agent:Writer 与 Reader 应独立评测
在多 Agent 系统中,一个 Agent 写共享记忆,另一个 Agent 读取。MemoryTax 的交叉实验可直接扩展为:
Writer i × Reader j × Memory Policy k \text{Writer}_i \times \text{Reader}_j \times \text{Memory Policy}_k Writeri×Readerj×Memory Policyk
如果只报告"同一个模型写、同一个模型读"的结果,就无法知道瓶颈来自哪一端。共享记忆系统应单独测:
- 写入覆盖率;
- 读取利用率;
- 原始证据可恢复性;
- 跨模型迁移;
- 更新和删除的一致性。
4. 混合架构可能比二选一更合理
MemoryTax 把"设计型记忆"和"原始历史搜索"形成鲜明对照,但工程上可以组合:
Raw Log + Cheap Index + Optional Summary Cache + Agentic Search \text{Raw Log} +\text{Cheap Index} +\text{Optional Summary Cache} +\text{Agentic Search} Raw Log+Cheap Index+Optional Summary Cache+Agentic Search
常见问题先走廉价 BM25 或缓存;高风险、低置信或复杂问题再让 Agent 回查原始记录。这样既避免每次 Full Context,也减少不可逆压缩。
十四、局限性
1. 只有一段对话
实验只用 LoCoMo 十段对话中的 conv-26。即使作者说明该对话的相对趋势与全量接近,也无法覆盖不同长度、主题、时间跨度和信息密度。
2. 每个 Cell 只运行一次
Agent 行为和 LLM 输出具有随机性。相差一两道题的方法,可能在第二次运行中交换排名。论文没有均值、方差、置信区间或显著性检验。
3. 自动 Judge 与错误答案键
GPT-4o-mini Judge 采用宽松规则,可能误判长答案、冲突答案或带解释答案。已发现至少一个 Gold Answer 错误,说明 99% 附近的差异尤其脆弱。
4. Agent 与记忆方法输入不一致
Agent 可读照片 Caption,其他方法不可读。虽然作者单独分析了 Photo Questions,但原始总分仍混合了方法能力与信息可见性差异。
5. 历史完全放得进上下文
conv-26 能放进所有模型上下文,因此 Full Context 始终可用。真正超长、持续增长的生产历史可能无法直接输入,原始记录搜索的优势与失败模式也可能变化。
6. 只测试默认 Mem0/Zep 配置
Mem0 的 Top-200、Zep 的 Top-20 Edge 以及默认 Extraction/Retrieval 未做参数搜索。不同配置、重新排序、混合检索或更便宜 Writer 可能得到不同成本前沿。
7. 价格具有时间与供应商依赖
成本使用实验时的 List Price,并依赖 Provider Cache。模型价格和缓存策略变化后,Break-even Point 会随之变化。
8. 没有报告延迟与生产稳定性
Agent 可执行多步搜索,每题最长允许 20 分钟。美元成本较低并不等于时延更低,也不代表失败重试、并发和运维成本更低。
9. 任务只测试问答利用,不测试完整记忆生命周期
LoCoMo 主要测历史问答。用户偏好更新、长期一致性、主动遗忘、隐私删除、技能积累等场景仍可能需要设计型记忆,本文没有覆盖。
十五、我的理解与启发
1. MemoryTax 真正批评的是"不可逆的提前抽象"
论文表面上比较 Memory 与 Agent Search,但更深层的问题是决策发生的时间。
在未来问题未知时抽取信息,相当于优化:
M ∗ = arg max M E q ∼ P ( q ) U ( M , q ) M^*=\arg\max_M \mathbb{E}_{q\sim P(q)}U(M,q) M∗=argMmaxEq∼P(q)U(M,q)
但真实未来问题分布 P ( q ) P(q) P(q) 并不知道。Writer 只能猜什么重要。一旦压缩不可逆,任何意外问题都可能落在被删除的信息上。
Agent Search 把信息选择推迟到问题出现之后,获得了 Query-conditioned Selection。这种推迟本身就是优势。
2. 原始记录与记忆不应是替代关系
一套更稳健的长期记忆系统应该满足:
Memory = Lossless Source of Truth + Lossy Acceleration Layers \text{Memory}=\text{Lossless Source of Truth}+\text{Lossy Acceleration Layers} Memory=Lossless Source of Truth+Lossy Acceleration Layers
原始记录负责可恢复性;事实、图谱、摘要和技能负责加速。强 Reader 到来时,可以绕过旧缓存重新搜索和重建,而不是被历史 Writer 锁死。
3. 记忆系统必须报告"摊销曲线"
只报告单题成本或单次 Build Cost 都不完整。至少应报告:
C ˉ ( N ) = C b u i l d N + C q u e s t i o n \bar C(N)=\frac{C_{build}}{N}+C_{question} Cˉ(N)=NCbuild+Cquestion
并画出不同 N N N 下的平均成本。个人助手可能每天查询同一历史,企业 Agent 可能只使用一次;相同系统在两种场景中的经济性完全不同。
4. Writer--Reader Matrix 应成为标准实验
很多论文换更强 Backbone 后声称记忆系统更强,但没有区分 Store 变好还是 Reader 变好。MemoryTax 的交叉矩阵很简单,却能直接暴露瓶颈。
未来还应增加第三维:Retriever。完整实验应拆成:
Writer × Retriever × Reader \text{Writer}\times\text{Retriever}\times\text{Reader} Writer×Retriever×Reader
这样才能知道信息是在写入、召回还是使用阶段丢失。
5. "通用搜索工具"也需要被系统研究
论文将 Pi 的优势解释为强模型 + 工具,但 Pi、Codex、Claude Code 成本差异巨大。这意味着 Harness 本身已经是一种 Memory Policy。
搜索工具的接口、返回格式、默认预算、缓存、错误处理和系统提示,都会决定 Agent 是否读文件、读多少以及何时停止。下一步不一定是取消 Memory Research,而可能是把重点转向 Agentic Information Seeking。
6. 这篇论文对 AMM 框架形成了很好的实证补充
上一篇 AMM 观点论文强调,记忆评价必须同时看 State Quality、Utilization、Outcome 与 Cost。MemoryTax 正好给出一个具体例子:
- Writer 决定 State Quality;
- Coding Agent 决定 Utilization Policy;
- LoCoMo Judge 测 Outcome;
- Build + Per-question 测 Cost。
它也证明了为什么只比较最终准确率不够:Mem0 在 Opus 上与 Full Context 同为 95%,但总成本大约是后者两倍,且 Store 还形成信息上限。
十六、总结
《MemoryTax: The Bitter Lesson of Agent Memory》用一个规模很小但结构清晰的实验,挑战了 Agent Memory 领域的默认范式:在问题出现前,由专门系统先决定什么值得记住。
论文的主要发现是:
- Mem0 在 GPT-4o-mini 上能作为弱模型补丁,但在更强模型上不再超过 Full Context;
- 预构建 Store 的成本很高,在当前 152 道题内无法摊销;
- Store 的质量由 Writer 决定,强 Reader 无法恢复写入阶段已经删除的信息;
- Claude Opus 5.5 + Pi 以约 $6.95 达到 99%,处于实验成本---正确率前沿;
- Pi 相对 Full Context 的大部分表面准确率优势来自独享图片 Caption,而在相同文本证据上,两者只差一道题;
- 论文支持"强模型 + 原始记录 + 通用搜索工具"这一方向,但不足以证明所有设计型记忆都应被淘汰。
这篇论文最重要的价值不是宣布 Memory 已死,而是要求整个领域重新记账:
不仅要统计模型答题时用了多少 Token,还要统计记忆在问题出现前花了多少成本、删掉了多少未来可能需要的信息,以及更强模型到来后能否绕过旧 Writer 的上限。
最后用一句话概括:MemoryTax 告诉我们,长期记忆不应成为强 Agent 无法逃离的压缩瓶颈;更可靠的方向,是保留可追溯的原始历史,把记忆作为可重建的加速层,再让模型根据当前问题自主搜索。
参考资料
- Zedong Peng. MemoryTax: The Bitter Lesson of Agent Memory. arXiv:2610.29823, 2026.
- Richard S. Sutton. The Bitter Lesson. 2019.
- Prateek Chhikara et al. Mem0: Building Production-Ready AI Agents with Scalable Long-Term Memory. 2025.
- Zep / Graphiti: Temporal Knowledge Graph Architecture for Agent Memory.
- Adyasha Maharana et al. LoCoMo: Evaluating Very Long-Term Conversational Memory of LLM Agents. 2024.
- Stephen Robertson and Hugo Zaragoza. The Probabilistic Relevance Framework: BM25 and Beyond. 2009.
- Zhang et al. Recursive Language Models. 2025.
- MemoryTax 项目页:https://zedongpeng.com/memorytax/
- MemoryTax 代码仓库:https://github.com/zedong-peng/memorytax
- arXiv 页面:https://arxiv.org/abs/2610.29823