从「更大上下文≠更好内存管理」出发,提出 Agent 记忆系统的设计框架,用学术研究(Lost in the Middle、RULER)支撑实操建议。
一个更大的上下文窗口扩展了你能存储的内容。但这决定不了你的 Agent 实际应该使用什么。这份清单是为那个需要做决定的部分准备的。
从这个心理模型开始。上下文是工作集,是模型这一轮推理的少数几个东西。内存是一项策略,决定了什么能从一个更大的存储区域进入工作集。一百万 token 的窗口让存储区域更大了。但它既雇不了图书馆员,也告诉不了叉车在电池耗尽前该去取哪个箱子。一个仓库不会因为你一直加货架就变成图书馆。
在这份清单之前,两个证据点说明为什么仅有窗口是不够的。
位置在一个提示词内部很重要。《Lost in the Middle》研究在 2023 年代的模型上发现了一个受控问答和键值检索的 U 形模式:靠近开头或结尾的信息被使用得比中间的信息更可靠。把它看作一个已演示的失效模式,而不是一个固定分数。合成压力测试走得更远。RULER 在 13 个合成任务上评估了 17 个模型,发现约一半声称至少拥有 32K 上下文的模型在 32K 处保持了其满意阈值,其中满意是 RULER 自己定义的 85.6%。NoLiMa 是一个 2025 年的预印本,剥离了字面关键词重叠,所以匹配需要潜在关联;在其 v1 评估中,GPT-4o 从短上下文的 99.3% 下降到 32K 处的 69.7%。长上下文仍在改进:在 RULER 自己的表格中,一些更新的模型在 128K 处保持了强劲性能。要点很窄:可用上下文可能比标称上下文更小。
长历史是一个单独的问题。LongMemEval 在五种长期内存能力上使用了 500 个问题:抽取、多会话推理、时间推理、知识更新和弃权。在大约 115K token 的设置下,测试的长上下文模型下降了 30% 到 60%。窗口保存了历史;保存它还不够。至关重要的是,作者把内存分成索引、检索和阅读,并报告说即使有完美回忆内存,诸如 Chain-of-Note 之类的结构化阅读也在三个测试的 LLM 中改进了高达 10 个绝对百分点的问答。检索正确的记录只是工作的一半。

不同的测试暴露了广告上下文容量和可靠使用之间的不同差距。Lost in the Middle 改变位置,RULER 增加了更难的追踪和聚合任务,LongMemEval 在长交互历史上评估内存。结果是研究特定的,不共享一个尺度。来源:Liu et al. (TACL 2024),Hsieh et al. (COLM 2024),和 Wu et al. (ICLR 2025)。
不要将原始历史、持久内存和工作上下文融合成"只保存记录"。把它们分开:
原始事件历史:一份可审计的存档,受保留和删除规则约束。
精选内存:小型的、有类型的、主体作用域的和受治理的,带有事件源引用,这样整合就可以被解开。
工作上下文:从精选层组装,而不是直接从不受信任的原始事件重放。
这种分离是跨 LongMemEval、MemGPT、Anthropic 的上下文工程指导、LangChain 的内存文档和 OpenAI Agents SDK 会话模型的工程综合,而不是一个单一源规则。

原始事件可以在保留限制内保持可审计,而主体作用域的精选内存决定了模型现在看到什么。准入、检索、修改和遗忘是单独的控制点。
每个事件都要经过一个你可以独立测试和检测的测试场:
准入。这值得记住,还是仅为原始日志的短暂噪音?
检索。给定当前任务,哪些存储的项目是相关的?
整合。相关事件能否在保持事件源指针的同时折叠成一个摘要?
修改。更高信任度的事实是否已取代一个较早的事实,每个版本都有来源?
遗忘。一个项目应该离开活跃内存,因为它过期了、被推翻了或变得不安全了,还是授权的删除必须跨原始和派生存储删除它?
每条记录都带有时间戳、事件源引用、置信度、冲突状态、到期和删除状态。用户可见的内存保持可检查和可更正的。这就是使修改具有来源追溯性和整合可逆的原因。
囤积每个工具输出不是摄影记忆。这是一个带着 token 账单的车库,它会用数千个无关的记录掩埋那几个重要的记录。遗忘依靠分离,而不是无声的破坏:陈旧、被推翻或低关联性应该停用一个精选条目,同时保留保留政策允许的任何原始证据。授权的用户删除和法律要求的删除是不同的操作,必须通过原始记录、索引和整合的内存传播,而不是留下派生的副本。这从 MemoryBank 中的遗忘逻辑汲取灵感,其受艾宾浩斯启发的机制是一个合理的设计选择而非普遍衰减法则,加上来自 Anthropic 的压缩指导。
一旦内存作为可信上下文被读回,它就成为了一个安全边界。AgentPoison 是一个预印本,它在三个受控的 Agent 中毒化了内存和检索存储,所以恶意记录后来作为检索演示出现。MINJA 是一个在受控威胁模型下的预印本,表明一个攻击者仅使用普通查询就可能注入恶意记录。这些是实验性威胁模型,不是部署流行度,但机制成立:如果任何话语都可能变成持久真理,任何用户都可以写入你的模型的未来上下文。OWASP 的数据和模型中毒指导建议来源追踪、版本管理、异常检测、沙箱化不受信任的数据和对可信源的验证。映射到内存:
在信任边界处放一个写入门;将准入分类器保留在内部,因为恶意输入可能夸大其自身重要性。
记录携带来源;更新是可逆的。
来自不受信任的转向的内容不能无声地将自己提升为持久的、高置信度的内存。
按主体分割精选内存和检索,这样一个用户的状态就不会出现在另一个用户的工作上下文中。
评估索引、检索和阅读作为不同的阶段而不是一个答案准确性数字,因为一个系统可以完美检索但仍然读错。为写入路径和检索路径编写显式测试。跟踪陈旧内存、冲突和隔离错误,而不仅仅是正确性。检索和压缩增加了它们自己的失效模式:检索器可能丢弃重要的一个细节,摘要可能过时,一个控制自己分页的 Agent 可能将一个错误决定级联为几个。
《Generative Agents》在一个二十五个 Agent 的沙箱中评估可信行为,对一个内存流按相关性、最近性和重要性评分,然后写回反思和计划。MemGPT 是一个预印本,使用函数调用在上下文内内存和外部存储之间分页。A-MEM 是一个预印本,创建结构化笔记、链接内存并让新内存更新现有的一个,这是修改作为一个一等操作。Mem0 是一个供应商编写的预印本,在 LoCoMo 上进行了基准测试,LLM 作为法官评分,报告相对于 OpenAI 的内存系统有 26% 的相对质量改进,加上 91% 更低的 p95 延迟和超过 90% 的 token 节省与完整上下文基线相比。那些是作者报告的数字,在选定的模型上,不是生产保证,但方向是清楚的:一个小的精选内存击败了一个完整上下文的基线在成本上。LangChain、OpenAI Agents SDK、OpenAI 和 Anthropic 压缩,以及 Letta 都在不同的词汇下编码了相同的存档与工作集分割。
不要在第一天就构建一个内存平台。对于短的、有界的任务,一个更大的上下文窗口加压缩,或根本没有持久内存,通常比一个完整的持久内存堆栈更简单、更安全。这是由 RULER 的证据支持的工程判断,长上下文越来越有效,Anthropic 的最小高信号上下文指导,以及文档化的压缩,可以在没有单独系统的情况下缩小历史。持久性会产生一个有作用域的会话从不产生的来源、删除和中毒义务。从一个保留作用域的原始日志和最近轮的窗口开始。只有当重复的、观察到的失败为每种类型辩护时,才添加有类型的内存。让用户有办法检查、更正和删除系统对他们的看法。
最好的内存系统不是记得最多的。它是那个在正确的时刻把正确的记录放在工作台上、能指出它来自哪里、并知道什么时候停止提起它的系统。一个更大的仓库给你房间。图书馆员仍然是工作。