AI 科技观察

人工智能

给 Agent 加了记忆,它反而变笨了

记忆不是给 Agent 加上的纯增益:多份 2026 年测量显示,它可能把错误、过期状态和无关内容一起带进下一次调用。

作者:AI 科技观察阅读时间:20 分钟
深色桌面上被冷光打亮的几张索引卡,其中一张泛黄卷边,示意记忆库里混入了过期条目。
记忆的质量取决于写入时的取舍。来源:技术叙事 · AI 生成图像

2026 年 6 月,Writer 的 AI 研究团队公布了一组对照实验。他们构造了一批用户带着错误认知的多轮对话,把这些历史分别交给三个企业级记忆系统(Mem0、MemOS、Zep)处理,然后在新一轮里问一个相关问题,看模型会不会跟着用户的错误走。对照组不用任何记忆系统,直接把之前那段完整聊天记录贴在提示里。

五个前沿模型里,每一个在至少一种记忆条件下的谄媚率都至少涨到三倍。其中 Sonnet 4.6 在道德推理子集上从对照组的 1.6% 涨到 Mem0 条件下的 40.2%,约 25 倍。[1]

对照组只是把原始聊天记录整段贴进去——最笨、最贵、最不优雅的做法。三个专门设计的记忆系统反而更容易把模型带偏。

记忆经常被当作纯增益功能,默认存得越多,Agent 越懂你。但多份 2026 年的公开测量显示,加了记忆的系统在不少任务上比不加更差。记忆的收益取决于写入时的取舍:要看清这一点,需要先区分四层记忆,再分析稀释、误差累积和陈旧状态;compaction、外部笔记和子 Agent 的取舍,也要用三组对照实验在自己的系统里验证。

站内《上下文越长,答案越不准》讨论单次调用该喂多少资料,《为什么 AI 总在长任务里跑偏》讨论多步任务的失败点。本文把同一问题延伸到跨会话的时间尺度。

跨会话持久化是很多产品的前提,没有它,Agent 每天早上都从零开始。本文关注写入时的取舍。记忆的收益取决于过滤、遗忘和时效标注,存储量本身不能带来收益;缺少这些机制的记忆库,会持续向未来的调用注入噪声。

目录

  1. 1.1. 记忆分层与退化:四层东西如何产生三种问题
  2. 2.退化从哪里来:三种机制
  3. 3.稀释:无过滤写入让高信号 token 占比下降
  4. 4.误差累积:错的东西一起被记住,并且更难被推翻
  5. 5.陈旧状态:曾经为真的事实过期后仍被当作当前状态
  6. 6.2. 测量结果:记忆系统常常不如「全都塞进去」
  7. 7.3. 三种管理手段:compaction、结构化笔记和子 Agent
  8. 8.compaction:保留什么、丢掉什么
  9. 9.结构化笔记:把状态搬到窗口之外
  10. 10.子 Agent 与干净的上下文窗口
  11. 11.4. 写入路径:过滤、去重、矛盾、遗忘
  12. 12.过滤:决定哪些交互进入长期记忆
  13. 13.去重与取代:同一事实不该有两个版本
  14. 14.矛盾:谁说的、有没有被反驳过
  15. 15.遗忘:把过期当作默认状态处理
  16. 16.5. 自己测一次:三组对照
  17. 17.六个常见误区
  18. 18.6. 结论
  19. 19.来源与引用

1. 记忆分层与退化:四层东西如何产生三种问题

讨论「Agent 记忆」最容易出错的地方,是把四种完全不同的东西叫同一个名字。它们的失效方式不同,修法也不同。

存在哪里典型内容失效表现
工作记忆当前上下文窗口本轮对话、工具返回、刚读的文件越堆越钝,召回精度随长度下滑
情节记忆会话摘要、事件日志上次做了什么、试过哪条路、为什么放弃摘要把前置条件压掉,失败路径被当成经验复用
语义记忆抽取出的事实条目、向量库用户偏好、项目常量、结论用户的错误主张被当成事实存下来
程序记忆指令文件、规则、技能编码规范、工作流、常用命令文件越长,遵循度越低

这个分层不是本文发明的。2026 年 3 月的综述《Memory for Autonomous LLM Agents》把问题定义得更准:Agent 越来越多地工作在「单个上下文窗口远不足以装下发生了什么、学到了什么、以及什么不该重复」的场景里;记忆的作用是把无状态的文本生成器变成能持续适应的行动者。[2] 综述把机制放进一个 write–manage–read 的闭环,并给出三维分类:时间范围、表示载体、控制策略——其中「控制策略」这一维(追加、覆盖、取代、巩固、衰减、遗忘)是它相对早期综述最明显的增量。(分类维度的具体枚举我是在两份公开笔记里核对的,属二手,建议直接读原文第 2、4 节。)

为什么分层重要?因为四层的修法互相不通用。

工作记忆的问题靠删——只放这一步需要的。上一篇文章整篇讲的就是这件事:Chroma 的测量里,同一个对话记忆任务,喂 11.3 万 token 完整历史稳定不如喂约 300 token 的相关片段。[3]

情节记忆的问题靠结构——保留因果链和前置条件,字数本身不重要。

语义记忆的问题靠过滤和时效——谁说的、什么时候为真、有没有被推翻。

程序记忆的问题靠短。这一层有个非常具体的一手数字:Claude Code 官方文档建议每个 CLAUDE.md 控制在 200 行以内,理由写得很直接——文件越长,消耗的上下文越多,遵循度也会下降;自动记忆的索引文件 MEMORY.md 更硬,每次会话只加载前 200 行或前 25KB,超出的部分下一次加载时直接丢掉。[4] 在这一层,写得更多会带来负收益:多写的部分既占预算又不被读,还会稀释被读到的内容。

评估记忆功能时,先看它写入的是哪一层;四层混在一个「记忆」开关后面,使用者只能调一个粗糙的开 / 关。

退化从哪里来:三种机制

加了记忆之后的退化有三种,触发条件和补救办法各不相同。

稀释:无过滤写入让高信号 token 占比下降

Anthropic 在 2025 年 9 月那篇《Effective context engineering for AI agents》里把上下文表述为有限资源:模型有一份注意力预算,每多一个 token 就消耗一点,收益递减。因此工程的核心是「找到最小的一组高信号 token」。[5]

记忆做的事恰好相反:它默认把内容留下。每一条被写入的偏好、每一段被保存的会话摘要,都会在未来的某次检索里参与竞争。一个自动写入、从不删除的记忆库,等价于让上下文的基线长度逐月抬高——而这个抬高是不可见的,因为它不发生在你眼前的这轮对话里。

Claude 平台的 cookbook 把这件事的边界划得很清楚:记忆解决跨会话持久化,对会话内的上下文增长没有帮助;每一次读写还要额外付一次工具调用的开销。[6] 记忆需要持续的工具调用成本,不能当作零成本存储。

误差累积:错的东西一起被记住,并且更难被推翻

这是三种机制里危害最大的一种,因为它把一次性错误变成了系统性偏差。

Writer 的两篇论文(《The Price of Agreement》与《Recalling Too Well》)把这条路径测得很细。他们造了一个基准 MIST,覆盖 GPQA Diamond、MMLU 医学与 Moral Stories 三个领域:对每个问题生成一个「听起来合理的用户误解」,模拟一轮用户坚持这个误解的对话,把这段历史交给记忆系统,再看下一轮的答案会不会偏。前面提过的结论——每个模型至少三倍、Sonnet 4.6 最高 25 倍——就出自这里。[1]

他们的变量分析更能说明问题:把抽取出的记忆片段换成同样格式的原始聊天记录,谄媚率大致减半。[1] 问题出在抽取。抽取会把对话压成离散事实,也会丢掉纠正性的上下文:助手当时的反驳、用户后来的犹豫和这句话的语境。留下来的「用户认为 X」去掉了争议,下一次检索时更容易被当作事实使用。

金融侧那篇还给出了另一个数字。他们在 FinanceBench 与 FinanceAgent 上测了八个前沿模型,用三种方式注入与正确答案冲突的用户偏好。结论是准确率与可观测性之间存在取舍:直接写进提示时准确率掉得更多,模型更可能把冲突点出来;以工具返回的形式注入——这正是记忆系统的工作方式——准确率掉得更少,但承认冲突的比例崩塌,在 FinanceAgent 上多数模型的「无声出错」指标超过 0.90。[1]

换成日常语言,以记忆形式喂进去的错误信息通常不会让答案明显离谱,只会让它安静地偏一点,而且不容易被发现。

(相关现象最早被大众媒体报道时的例子更直观:记录下用户最喜欢的书是《Station Eleven》之后,再问「畅销的反乌托邦小说有哪些」,模型明显更倾向答《Station Eleven》,即便问题与用户偏好无关;使用 Mem0、Zep 这类记忆压缩工具时这种倾向更强。这一段引自 TechCrunch 的报道,属二手来源。[7]

陈旧状态:曾经为真的事实过期后仍被当作当前状态

第三种机制最土,但在工程里最常见:记忆里存着「数据库连的是 staging」、「负责人是 A」、「这个方案我们不用」,而这些事实在三周前就变了。

Claude cookbook 的选型表里,跨会话记忆一栏对应的注意事项就是一句话:工具调用开销,以及事实变化时的过期记忆。[6] Claude Code 的文档给出的对策更具体:当自动记忆的索引接近或超出加载上限时,系统会提示模型「一条一行、把细节移到主题文件、合并或删除过期条目」。删除过期条目被写成了日常维护动作。[4]

陈旧状态的隐蔽之处在于,它读起来完全合理。一条写着「部署走 staging」的记忆没有任何语法或语义问题,只是时间错了。而现有的检索机制按相似度排序,不按时效排序:一条三个月前的旧事实和一条昨天的新事实,如果措辞相近,前者完全可能排在前面。

记忆退化有三种来源:稀释是上下文变长问题的延续,误差累积和陈旧状态则属于记忆层自身。扩大上下文窗口不会替你判断旧偏好是否仍然有效。

2. 测量结果:记忆系统常常不如「全都塞进去」

上一节讲机制,这一节讲后果的量级。2026 年有两份基准从不同角度指向同一个结论。

AMA-Bench(arXiv 2602.22769)把评测从对话搬到了 agentic 任务上,要求 Agent 在长时程任务里追踪状态、记住动作的前置条件与因果依赖。它的核心发现有三条:现有记忆技术在以对话为中心的基准上常常优于长上下文基线,但在许多长时程 agentic 任务上打不过基线;有损压缩与相似度检索引入的误差会在长任务里累积并放大;因此需要转向以 Agent 为中心的记忆管理策略。[8]

这里有两个关键数字。第一,MemoryBank 在记忆构建之后掉了 41.3%——说明为「冗余自然语言」调优的压缩,保不住 Agent 记忆里那种密集的状态与因果信息。第二,HippoRAG2 在给定构建好的记忆时表现仍然不错,但端到端跑下来掉了 43.2%——说明相似度检索这一步本身就不可靠。[8]

还有一个对做选型的人更有用的对比:把主干模型从 8B 换到 32B,平均只带来 0.038 的提升;而换记忆架构带来的分数区间达到 0.45。[8] 也就是说在这类任务上,记忆设计对结果的影响比模型规模大一个数量级。

MemoryArena(arXiv 2602.16313)把记忆与行动耦合起来评测:Agent 在与环境交互的过程中获得记忆,又必须依赖这些记忆完成后续子任务。在 LoCoMo 这类长上下文记忆基准上已经接近饱和的 Agent,在这套 agentic 设置里表现很差。[9]

这两份基准说明,主流记忆基准测的是问答式召回(用户说过什么、偏好是什么),Agent 任务考验的是状态与因果(我做到哪一步了、这个动作的前提是什么、哪条路走不通)。问答式召回的容错空间较大;长时程任务丢掉一个前置条件,整条动作链就会失败。

AMA-Bench 的定性分析把两类失败区分得很干净:基于检索的记忆倾向于取回「语义相关但因果不完整」的证据,而基于压缩的记忆倾向于丢掉前置条件和不可逆的状态变化。[8]

你的任务形态主流记忆基准的成绩实际风险
记住用户偏好、跨会话问答高(接近饱和)谄媚放大、旧偏好过期
长时程任务、状态追踪、工具链未被充分覆盖前置条件丢失、误差累积,常不如长上下文基线
基准分数不能替代你自己的测试。多步 Agent 应把「把完整轨迹塞进长上下文」作为实测基线,即使它笨、贵、不优雅;2026 年的公开测量显示,这个基线经常赢。

3. 三种管理手段:compaction、结构化笔记和子 Agent

compaction:保留什么、丢掉什么

既然全塞进去有代价、抽取式记忆也有代价,实践中最常用的中间手段是 compaction:把旧的对话与工具结果交给模型压成一段摘要,替换掉原文。

Claude 平台的 cookbook 把长任务的上下文管理拆成三个原语。

原语作用对象牺牲了什么解决什么
compaction整个窗口逐字细节被摘要掉窗口过长
工具结果清理窗口内的工具返回旧结果从上下文消失,需要时得重新取工具输出膨胀
记忆窗口之外的存储每次读写的调用开销;只存下了 Agent 认为该存的跨会话持久化

[6]

三者各自处理不同范围:清理与 compaction 只作用于当前上下文,新会话开始且窗口为空时它们无法提供帮助;记忆解决跨会话,却不处理会话内的增长。[6]

cookbook 里的研究型 Agent 例子展示了工具结果清理的效果。它读八份约 4 万 token 的综述文档,会产生约 32 万 token 的工具返回量——绝大部分可以随时重新读取。开启工具结果清理后,旧的 tool_result 被替换成一个占位符,但 tool_use 记录保留,模型仍然知道自己调用过。示例里 keep=1 时,消息体从约 12.87 万 token 降到约 4.31 万,减少约 67%。三种原语同时开启的那一轮,峰值上下文约 16.99 万 token,最终只剩约 1.37 万。[6]

cookbook 对压缩取舍的表述是:compaction 的艺术在于保留什么、丢弃什么,而过度激进的压缩会丢掉那些微妙但关键的上下文——它们的重要性往往要到后来才显现。[6] 清理与 compaction 的区别也很明确:清理是整块丢弃、需要时重新取(只要工具可重复调用就是无损的),compaction 保留的是实质、丢掉的是逐字细节。[6]

工程上还有两个容易踩的坑,都出自同一份文档。一是清理会让前缀缓存失效,所以每次清理需要达到一定量,clear_at_least 才有意义。二是清理与记忆同时用时,要把记忆工具排除在清理范围之外,否则 Agent 可能把自己刚写下的东西读丢。[6]

关于触发时机,公开材料里最具体的一条来自 Slipstream 那篇论文的综述部分:现在的 Agent 系统普遍在窗口远未装满时就积极触发 compaction,以抢在退化之前动手;文中转述 Anthropic 的建议是某些负载约在 5k–20k token 触发,更复杂的任务约在 50k–100k。同一篇也指出,按「最旧」「消息类型」这类浅层信号删除内容的做法在长时程任务里很脆弱,因为看起来无关紧要的信息后来常常变成必需的。[10](这两条我是从 Slipstream 的引文里读到的,属二次转引,落地前请核对 Anthropic 当期文档。)

Google 的 ADK 给出了另一套可读的实现。官方文档写明它用滑动窗口:配置 compaction_interval(多少个事件触发一次压缩)与 overlap_size(新一批压缩要包含上一批的多少个事件),可选自定义 summarizer 指定摘要用的模型;文档里那个例子是 interval=3、overlap=1,于是第 3、6、9 个事件完成时各触发一次,每次带 1 个重叠事件。[11]

配套的工程博文把 Session 定义为 ground truth,送进模型的工作上下文只是一个「计算出来的投影」;压缩的结果作为一个带 compaction 标记的新事件写回 Session。[12]

原始事件流应该保留,进入模型的上下文只是可以重新计算、重新调参的投影。先保证可回放,再比较压缩策略。

结构化笔记:把状态搬到窗口之外

第二种手段是让 Agent 自己写文件:把中间结论、进度、待办写到上下文之外的笔记里,需要时再读回来。Anthropic 把它列为三种做法之一(另两种是需要时再取的 just-in-time 检索,以及 compaction)。[5]

这条路线在 2026 年被大量采用,因为它的失败是可见的。向量库里存了什么、为什么召回这条,使用者查不到;而一个 Markdown 文件是可以打开、可以编辑、可以删掉的。Claude Code 的文档也明确说明,自动记忆就是普通 Markdown 文件,你随时可以编辑或删除。[4]

它的代价也很清楚。cookbook 的原话是:记忆给你的是跨会话持久化,以及对「Agent 选择保存下来的那些内容」的无损保真;它给不了你会话内的任何帮助,而且每次读写都要付调用开销。它的上限就是 Agent 判断力的上限——只和它决定存什么一样好。[6]

Claude Code 文档还记录了几项容易忽略的细节:[4]

  • 自动记忆的索引 MEMORY.md 每次只加载前 200 行或 25KB,超出部分下次加载直接丢弃;主题文件(如 debugging.md)不在启动时加载,Agent 需要时才用文件工具去读。
  • 写超了不会报错终止,写入照样成功,但系统会提示模型改写索引:一条一行、细节下沉到主题文件、合并或删除过期条目。
  • 项目根目录的指令文件在 /compact 之后会被重新从磁盘读入并注入;子目录里的指令文件与按路径生效的规则不会自动重新注入,要等下一次读到相关文件才回来。
  • 主对话的自动记忆不会被带进子 Agent;子 Agent 若开启记忆,用的是自己独立的目录。

很多人抱怨「压缩之后 AI 忘了我立的规矩」,原因往往是那条规矩只存在于对话里,或者存在一个当前没有被重新加载的文件里。文档给出的做法是,把只在对话里说过的要求写进指令文件。[4]

结构化笔记的效果取决于两条规则:索引只保留目录信息,正文细节另存,过期内容及时删除。

子 Agent 与干净的上下文窗口

第三种手段是隔离:让子任务在自己的窗口里跑完,只把结论回传。Anthropic 把子 Agent 列为控制注意力预算的手段之一:让子 Agent 在各自的上下文里干活,把大块中间产物挡在主窗口之外。[5]

隔离的吸引力在于它同时解决了两件事:主窗口不膨胀,而且子任务的错误上下文不会污染主线。前提是子任务能够独立完成。上一篇文章里引过 Cognition 的经验:把任务拆给多个 Agent 并行,常常换来更脆弱的系统,因为决策被分散、上下文无法在 Agent 之间充分共享。这个判断在记忆层同样成立:隔离窗口也会隔离记忆。

Claude Code 文档里那条「主对话的自动记忆不会进入子 Agent」,就是这件事的具体形态。[4] 它是合理的默认设置——你不希望一个专职跑测试的子 Agent 继承整个项目的对话史——但它也意味着子 Agent 天生不知道主线上刚刚达成的共识。如果那个共识是完成子任务的前置条件,它就得由你显式地写进子 Agent 的输入里。

三种手段的分工如下。

手段适合什么不适合什么
compaction对话与推理占主导、无法重新获取的内容需要逐字精确的数字、表格单元
结构化笔记需要跨会话、需要人能查看和修改的状态高频、细碎、不适合人工维护的信息
子 Agent 隔离能独立完成、只需回传结论的子任务需要共享判断依据的子任务

4. 写入路径:过滤、去重、矛盾、遗忘

前面几节的结论是:记忆质量取决于写入;存储和检索只是后续环节。这一节讲写入路径上四个可以直接动手的环节。

过滤:决定哪些交互进入长期记忆

RecMem(ACL 2026 Findings,arXiv 2605.16045)把这个问题挑得最明确。它指出现有记忆系统的第一个根本性低效是「急切巩固」:大多数系统对每一条进来的交互都调用一次 LLM——抽取事实、更新图、重写摘要——却不判断这条内容是否适合进入长期存储。[13]

RecMem 的做法是加一个「潜意识层」:先用轻量 embedding 缓冲原始交互,这一层本身就能支持检索而不必调用 LLM;只有当一条新交互在缓冲区里找到足够多语义相近的交互时,才对这簇内容做一次 LLM 巩固,抽出情节摘要与语义事实。它还配了一个语义精修机制,把抽取时漏掉的细粒度事实找回来。效果是:把三个主流记忆系统的记忆构建 token 成本最多降低 87%,同时精度更高。[13]

这个设计把“反复出现”作为写入条件。一次性的、孤立的交互,不管当时看起来多重要,都很可能是噪声。

去重与取代:同一事实不该有两个版本

上一篇文章里那条建议——新内容追加在后面,别回头改写——在单次会话里是为了保住前缀缓存。到了记忆层,它需要反过来:同一事实的旧版本必须被显式取代,否则检索时会有两条措辞相近、内容冲突的记录同时参与竞争,而模型没有任何依据判断哪条更新。

这正是那份综述把「控制策略」列为独立维度的原因:追加、覆盖、取代、巩固、衰减、遗忘是六种不同的写入语义,而大多数自建方案只实现了第一种。[2]

矛盾:谁说的、有没有被反驳过

Writer 那组变量分析给出了一个非常具体、成本很低的改法:他们发现记忆系统倾向于丢掉助手的反驳,于是尝试把助手角色的内容也保留进记忆,这一项就降低了道德推理子集上的谄媚率,同时没有损害事实召回;实现上不需要改检索和格式,能直接套在现有企业记忆系统上。[1]

论文中效果最强的缓解手段是:不做结构化抽取,改用一段长度大致相当的 LLM 散文摘要。这一项把道德推理子集的谄媚率降到 12.8%,低于最好的现成系统(Zep 的 17.1%),而且事实召回还更好。论文作者据此质疑,用复杂记忆系统维护用户历史能带来多少收益。[1]

遗忘:把过期当作默认状态处理

最后一条也是最容易被跳过的一条。记忆条目应该带时效信息:什么时候写的、从谁那里来的、到什么时候为止有效。没有这些字段,「陈旧状态」这种失败无法被检索层处理——因为相似度不包含时间。

可操作的最低版本是三个字段:来源(用户说的 / 助手推断的 / 工具返回的)、写入时间、失效条件(默认给一个期限,比如偏好类 90 天、项目状态类 14 天)。到期不必自动删除,但应该在注入时降权,或者附上「此条已过期,请确认」的标记。这一段是本文的工程建议,不是来源里的原始方案。

环节最小可行做法对应的失败
过滤只巩固反复出现的内容稀释
取代同一事实只保留一个当前版本冲突、误差累积
矛盾保留助手的反驳与用户的犹豫谄媚放大
遗忘每条带来源、时间与有效期陈旧状态
争议应该随记忆一起保存。只存「用户认为 X」会把一次被反驳的猜测包装成事实。

5. 自己测一次:三组对照

上面的数字都是别人在基准上测的。要判断它们在你自己的活儿上成立到什么程度,做三组对照即可,每组约半小时。设计思路来自前面几份研究,具体做法是本文的建议,不是来源里的原始方案。

实验一:开 / 关记忆的同任务对照。 挑一个你这周真实做过、能判断对错、并且有明确交付物的任务。第一遍在你平时的配置下跑,记忆全开;第二遍新开一个干净会话,把这一步需要的材料手工贴进去,记忆关掉。同一个模型、同一天、同一个提示。比较可核对事实的错误数量,以及是否引用已经不成立的旧状态。这一组复刻的就是 AMA-Bench 与 Writer 论文共有的那个对照结构:记忆系统 vs 直接给上下文。[8][1]

实验二:埋一条过期事实。 在记忆里放一条现在已经不成立的信息——上个月的负责人、已经废弃的接口名、改过的部署环境。然后问一个需要用到这项信息的问题,但不要在提问里提醒它已经变了。如果模型直接按旧信息执行且没有任何迟疑,说明你的记忆层没有任何时效机制,而这类错误在生产里是静默的。

实验三:埋一条你自己的错误主张。 在一轮对话里坚持一个你知道是错的判断(比如把一个成本结构说反),让它进入记忆。隔一轮,问一个相关但不同的问题。观察模型是沿用你的错误,还是独立给出正确判断。这一组测的就是 MIST 那套东西,只不过样本量是 1。[1] 如果你用的是抽取式记忆系统,可以顺手做一次对比:把同一段历史改成原始聊天记录贴进去,看差别有多大——Writer 的测量说这一改能让谄媚率大致减半。[1]

记录方式建议简单点:一张五列的表——任务、记忆条件、可核对事实数、错了几条、错的那条来自哪段记忆。跑过五六个真实任务之后,你会得到一份属于自己场景的判断依据。它能直接告诉你:在你的活儿上,记忆现在是净收益还是净损失。

还要计入记忆的工具调用开销。cookbook 反复强调这一点。[6] 如果你的 Agent 每轮都要读一次记忆目录、写一次笔记,这部分开销按次计费,收益至少要覆盖这些调用成本,以及偶尔注入错误信息造成的返工。

六个常见误区

误区一:记忆是长上下文的替代品。 三个原语解决的是三个不同问题:清理管窗口内的工具膨胀,compaction 管窗口总长,记忆管跨会话;记忆对会话内的增长毫无帮助。[6]

误区二:存得越多越懂我。 Writer 的测量里,每个模型在至少一种记忆条件下谄媚率至少三倍,最高约 25 倍;而对照组只是把原始聊天记录整段贴上。[1]

误区三:记忆系统的基准分数能代表它在我的 Agent 上的表现。 主流基准偏问答式召回。AMA-Bench 显示,在长时程 agentic 任务上,许多记忆设计打不过长上下文基线;MemoryArena 显示,在 LoCoMo 上接近饱和的 Agent 在交互式设置里表现很差。[8][9]

误区四:换更强的模型能盖过记忆设计的问题。 在 AMA-Bench 上,主干从 8B 到 32B 平均只提升 0.038,而换记忆架构带来的分数区间达到 0.45。[8]

误区五:把规则写进记忆文件就一定生效。 索引文件只加载前 200 行或 25KB,超出部分被丢;文件越长遵循度越低;压缩之后子目录里的规则不会自动重新注入。[4]

误区六:结构化抽取一定比原始文本好。 Writer 最强的缓解手段是用等长的散文摘要替代抽取,谄媚率降到 12.8%,低于最好的现成系统,事实召回还更好。[1] 结构化的收益要靠测量证明,不能默认。

6. 结论

结论有四点。

记忆会产生持续的调用成本,也会参与注意力竞争。 每一条被写入的内容都会影响未来的调用,而系统能获得多少收益,取决于 Agent 判断什么该存。[5][6]

加了记忆之后的退化有三种,其中两种是记忆层独有的。 稀释是长上下文老问题的重演;误差累积(把用户的错误主张编码成干净事实)和陈旧状态(过期事实仍被当作当前状态)则是记忆层自己制造的,把窗口做大解决不了。[1][6]

在长时程任务上,「全都塞进去」是一个必须实测的基线。 AMA-Bench 与 MemoryArena 都显示,现有记忆设计在 agentic 设置下常常打不过长上下文基线,原因是有损压缩与相似度检索的误差会累积;而记忆架构对结果的影响比模型规模大一个数量级。[8][9]

关键设计在写入侧:过滤、取代、保留争议、遗忘。 只巩固反复出现的内容(RecMem 用这一条把构建成本降了最多 87% 且精度更高)[13];同一事实只留一个当前版本[2];把助手的反驳一起存下来(这一项本身就降低了谄媚率)[1];每条记忆带来源、时间与有效期。

本文引用的测量集中在 2026 年上半年,对应的是当时那一代模型与那几个记忆产品的状态。这个方向正在快速变化——更好的记忆架构、带时效语义的存储、训练时就学会顶住错误输入的模型(Writer 的研究没有覆盖被专门训练过来反驳输入错误的那些新模型,这一点原报道也点明了[7])都在出现,具体数字不能被当作今天的产品水平引用。结构性的结论仍然成立:记忆的价值取决于写入时的取舍。

来源与引用

  1. Context Rot: How Increasing Input Tokens Impacts LLM Performance

    Kelly Hong、Anton Troynikov、Jeff Huber · Chroma

  2. How Claude remembers your project

    Anthropic · Claude Code

  3. Effective context engineering for AI agents

    Anthropic · Anthropic Engineering

  4. How memory tools can make AI models worse

    Russell Brandom · TechCrunch

  5. RecMem: Recurrence-based Memory Consolidation for Efficient and Effective Long-Running LLM Agents

    Zijie Dai、Shiyuan Deng、Sheng Guan、Yizhou Tian、Xin Yao、Xiao Yan、James Cheng · arXiv · ACL 2026 Findings