Long-form

深度长文:长程 Agent 的记忆,正在从「检索过去」转向「管理状态」

7 min read ·

💡 一句话总结:当 agent 要连续跑几百步,第一代「向量语义检索」式记忆就会暴露根本缺陷——打碎决策轨迹、混入错误痕迹。2026 年 6 月一批 arXiv 论文给出了同一个答案:记忆不该是「检索相似的过去」,而该是「管理结构化的执行状态」。本文串起 RAMPART、MAGE、DeltaMem 拆解这场范式转移。

一、问题:当 agent 要跑几百步,上下文就崩了

短任务的 agent 不太需要操心记忆——几轮对话、几次工具调用,把历史拼进上下文就行。但 2026 年 agent 的主战场已经转向长程任务:自动修一个跨十几个文件的 bug、跑一个要几十步的数据分析、在一个环境里持续探索几百个动作。

任务一长,记忆问题就从「锦上添花」变成「生死攸关」。我们在之前关于 context rot 的讨论里讲过,上下文堆太长本身就会让模型注意力涣散。但长程 agent 的麻烦比单纯的「上下文太长」更深一层——它的记忆是有结构的,而第一代记忆方案恰恰把结构搞丢了

二、第一代记忆的三个病

第一代 agent 记忆方案,本质是把 RAG 那套搬过来:把过去的对话、轨迹、经验向量化存进库,需要时按语义相似度检索召回。这在知识问答里很好用,但放到长程 agent 上,有三个结构性的病。

病一:决策轨迹被打碎。 Agent 的记忆是一连串有因果依赖的步骤——先做了 A 才能做 B,B 的结果又决定了 C。语义检索按「内容像不像」召回,会把这条有先后依赖的链打散成孤立片段,丢掉「谁导致了谁」的因果结构。Agent 拿到一堆碎片,却拼不回完整的来龙去脉。

病二:错误痕迹混进正确记忆。 Agent 探索时必然会走弯路、试错。语义检索不分对错,会把失败的尝试和成功的经验一起召回。结果 agent 在错误的基础上继续推理,一个早期的错误会沿着长任务级联放大

病三:上下文无限膨胀。 不加结构地累积记忆,要么靠长度粗暴截断(丢掉可能重要的早期信息),要么任由上下文涨到触发 context rot。两条路都通向质量下降。

2026 年 6 月,arXiv 上一批论文不约而同地开始攻这三个病。有意思的是,它们给出的答案高度一致。

三、范式转移:记忆是「执行状态」,不是「相似的过去」

这场转移最锋利的表述,来自 MAGE(Memory as Execution State Management,arXiv 2606.06090)。它的标题本身就是宣言:把记忆当成执行状态管理,而不是内容检索。

MAGE 的核心是用分层状态树替代平面的语义检索。Agent 的当前状态,由从根节点到当前节点的那条活跃路径表示,路径上融合了子目标总结、近期轨迹和先前分支的提示。它通过四个耦合的操作维护这棵树:

这套设计直接对症前面三个病:树结构保住了决策的因果依赖(治病一);Revise 让失败的分支被干净隔离、可回退,而不是混进当前推理(治病二);Compress 把完成的子目标压成总结,让上下文可控增长(治病三)。

效果也很实在:相比基于内容相关性检索的 RAG 式记忆,MAGE 的成功率提升 7.8 到 20.4 个百分点,同时 token 消耗降低 55.1%——既更准又更省,因为它不再把无关的、错误的历史塞进上下文。

四、把上下文当成可编程的运行时:RAMPART

如果说 MAGE 重新定义了「记忆是什么」,那 RAMPART(Registry-based Agentic Memory,arXiv 2606.04628) 重新定义了「上下文怎么组装」。

RAMPART 的洞察是:上下文里内容放在什么位置,对任务成功率影响巨大。它做了个很扎实的实验——当任务相关的关键块跟随注册表顺序排在第七块的位置时,性能出现「悬崖式」下跌;而把它优先推送到第十二块附近,成功率显著回升。更关键的是,这个「内容启动效应」在四个不同模型上出现在相同的绝对位置,说明这是个普遍规律,不是某个模型的怪癖。

既然位置这么重要,RAMPART 干脆把上下文组装变成一次可编程的「编译」

这种「编译时」思路带来了构造性保证——这是策略式规则给不了的。比如「模式驱逐」能做到某类内容 0% 被调用,而靠「优先放最近的」这类启发式规则永远给不出这种绝对保证。实测上,门控机制减少了 67.8% 的 prompt 成本,同时恢复了 83% 的「提升条件」成功率。

RAMPART 还有个外溢的好处:在多 agent 协作里,共享一个注册表能把 agent 间的通信成本降到方法调用级别(接近零),而不是反复把上下文序列化来回传。

五、让经验增量生长:DeltaMem

MAGE 和 RAMPART 管的是「单次长任务内」的状态,DeltaMem(arXiv 2606.03083) 则管「跨任务的经验积累」——agent 怎么把一次次任务里学到的东西攒下来、且不会越攒越乱。

DeltaMem 的核心概念是 残差经验(residual experience):新学到的经验,往往只是已有知识的一个增量变体,而不是全新的东西。所以与其把每条经验都当独立单元存(导致大量冗余和检索冲突),不如把它们组织成「基础 + 增量」的结构。

具体用双层残差树

每棵树的根节点存泛化的基础经验,下面的「delta 节点」存后续的变体。检索时用失败惩罚的相似度扫描找到最匹配的节点,再沿「根到节点」的链路重构出完整经验。最妙的是它的自主巩固机制:把高频访问的路径蒸馏成新的根节点,让整棵树自动「从通用启发式组织到专门变体」。

这正好治了第一代记忆「越攒越乱、冗余冲突」的病——经验不再是一堆扁平的孤立条目,而是一棵会自我组织、从一般到特殊层层生长的树。

六、共同的底层信号:从「塞文本」到「上下文工程」

把这三篇放在一起看,一个清晰的共同信号浮现出来:

Agent 的记忆和上下文,正在从「无结构地塞文本」,进化成「有结构、可编程、可预测地工程化管理」。

它们都在拒绝同一个东西——把记忆当成一袋可以随便检索的文本。它们都在拥抱同一个东西——把记忆当成一个有结构、有生命周期、需要被精心管理的系统状态。这就是「上下文工程」(context engineering)正在取代「prompt 工程」成为 agent 工程主战场的具体体现。同期还有像 TokenMizer(图结构会话记忆)这样的工作从图的角度切入,方向虽异,内核一致:结构,而非堆叠

七、对工程的启示

即便这些论文还多是研究原型,它们的思想今天就能指导你的 agent 设计:

  1. 别一股脑塞历史,按子目标做结构化的压缩和总结,让上下文随进展可控增长(学 MAGE 的 Compress)。
  2. 把失败和成功显式分开,检索时隔离错误痕迹,别让 agent 在错误基础上继续推理(学 MAGE 的 Revise)。
  3. 给记忆块加来源标签和优先级,让「保留什么、驱逐什么」有依据,而不是按长度粗暴截断(学 RAMPART 的 provenance + 门控)。
  4. 经验积累要去重,把新经验当成已有知识的增量而非独立条目,避免记忆库越长越乱(学 DeltaMem 的残差思路)。

结语

第一代 agent 记忆把 RAG 那套直接搬了过来,在短任务里够用,但长程 agent 把它的结构性缺陷暴露无遗。2026 年 6 月这批论文的价值,不在于某个具体的数据点,而在于它们共同确认了一个方向:记忆是要被工程化管理的执行状态,不是被随意检索的一袋文本。

谁能在几百步的长任务里保持状态连贯、错误可隔离、上下文可控,谁的 agent 才真正可靠。未来的 agent 框架会把结构化的记忆管理从边角功能提升为一等公民——这场范式转移,才刚刚开始。

Frequently asked questions

长程 Agent 的记忆问题,和普通 RAG 的记忆有什么不一样?
普通 RAG 面对的是「知识检索」——文档是静态的、彼此独立的,按语义相似度召回相关片段就够了。长程 agent 面对的是「过程记忆」——它的记忆是一连串有因果依赖的决策轨迹:先做了 A 才能做 B,B 失败了要回退到某个分支重来。如果还用语义相似度去检索这种记忆,会把有先后依赖的步骤打散成孤立片段,丢掉「谁导致了谁」的结构。更糟的是会把失败的尝试和成功的经验一起召回,让 agent 在错误的基础上继续推理。所以长程记忆的核心不是「找相似」,而是「保结构」。
「执行状态」具体指什么?为什么用树结构?
执行状态是 agent 当前所处的「任务进展」:完成了哪些子目标、当前在哪条决策路径上、哪些分支已经试过且失败了。用树结构是因为长任务天然是分层、分支的——一个大目标拆成子目标,子目标下又有多条可能的执行路径,某条走不通要回退换一条。MAGE 这篇论文就用分层状态树表示:从根到当前节点的活跃路径代表「我现在的状态」,包含子目标总结、近期轨迹和先前分支的提示。这样 agent 既知道自己在哪,也能在失败时干净地回退到某个分支边界重来,而不是在一团混乱的历史里打转。
RAMPART 说的「编译时内存模型」是什么意思?听起来很抽象。
类比编程语言会好懂。传统做法是运行时拿一堆策略规则去拼上下文——「优先放最近的」「相关的往前排」,但这些规则难以保证具体行为。RAMPART 把上下文组装变成一次「编译」:内容存在一个结构化注册表里、是命名可寻址的块,每次要构造上下文时,按显式声明的排序、包含、驱逐策略把块「编译」成最终的上下文,而且这个编译过程零 prompt 代价。好处是确定性——它能给出策略型规则给不出的构造性保证,比如「模式驱逐」能做到某类内容 0% 被调用,而规则式方法做不到这种绝对保证。本质是把「上下文长什么样」从模糊的启发式,变成可编程、可预测的操作。
这些方法落地难吗?我现在用 LangGraph / 普通 agent 框架能用上吗?
论文本身多是研究原型,但思想可以马上借鉴。最容易落地的是三条原则:一,别把所有历史一股脑塞进上下文,按子目标做结构化的压缩和总结(MAGE 的 Compress 思路);二,把失败的轨迹和成功的经验显式分开存、检索时隔离错误痕迹,别让 agent 在错误基础上推理;三,给记忆块加来源标签和优先级,让「该保留什么、该驱逐什么」有依据而不是凭长度截断。这些在现有框架里用自定义的 state 管理和 memory 节点都能实现,不必等论文开源代码。
这场范式转移对 Agent 框架的未来意味着什么?
意味着「上下文管理」正在从框架的边角功能,变成一等公民的核心能力。过去框架比拼的是工具调用、多 agent 编排,记忆往往就是「接个向量库」。但当 agent 要跑长任务、要可靠,记忆架构会成为决定成败的关键——谁能在几百步里保持状态连贯、错误可隔离、上下文可控,谁的 agent 才真正可用。可以预期:未来的 agent 框架会内建结构化的执行状态管理、可编程的上下文组装、增量式的经验记忆,而不是简单地把对话历史或向量检索结果拼起来。这也呼应了「上下文工程」正在取代「prompt 工程」成为 agent 工程主战场的趋势。
// next.txt ›

Some outbound links in this post are affiliate links — see disclosure.