AutoMem:把 Agent Memory 变成可训练的记忆管理技能

📅 2026/7/7 19:04:56
AutoMem:把 Agent Memory 变成可训练的记忆管理技能
很多 Agent 该配的都配了RAG、向量库、summary buffer甚至把中间结果写进文件。可任务一长还是会跑偏。问题大概率不出在“有没有地方存东西”而是这些信息根本没被管理好。长任务会不断冒出新线索、新状态、新经验如果只是一股脑往文件里堆用不了多久就会重复记录、旧信息没更新、想查的时候搜不到重点、关键线索被淹没在一堆废话里。所以记忆系统不能只“存储”信息还得有判断力什么时候该记什么时候该去翻旧账旧内容是覆盖还是保留文件该怎么组织——这些共同决定了记忆到底能不能被用起来。Stanford 有篇论文正好在讨论这个叫「AutoMem: Automated Learning of Memory as a Cognitive Skill]」下面简称 AutoMem。论文的核心观点是记忆管理本身就是一项可以学习的技能而不是搭好基础设施就能自动获得的副产品。换句话说Agent 除了要把任务做完还得学会分辨——哪些信息值得留什么时候该回头查写过的东西要不要更新记忆该怎么组织才方便以后接着用。混乱的 Agent 的记忆我们先看论文中给出的一个例子。在 NetHack 这种长流程游戏里Agent 得记住地图、物品、状态、策略、探索路径这些东西。项目早期只要看到新位置Agent 就往同一个dungeon_map.txt文件追加位置信息。这看起来很合理但很快问题就出现了。Agent 在地图里来回走动是常事同一个坐标很可能来回被访问。如果每次访问都往文件末尾加一条记录文件只会越写越长重复内容也越堆越多。到后面 Agent 想查看这个文件时真正有用的信息反而被埋在一堆过时记录里翻不出来。针对这些问题AutoMem 把这种 append-only 的写法改成按坐标做 upsert——同一个位置有了新观察就直接覆盖掉旧记录文件里始终只留这个坐标的最新状态。图注NetHack 里的记忆文件演化。早期版本会不断追加地图坐标导致产生大量重复记录优化后改成基于坐标的 upsert 格式同一位置的新记录会覆盖旧记录。同时系统还把物品、状态和策略参考等信息拆成更清晰的文件方便 Agent 后续读取和更新。这个例子体现了 AutoMem 的工程意义。记忆系统的关键不只是能不能写文件还在于这些文件会不会越写越乱。地图、库存、状态、策略这些信息要是混在一起Agent 读取时会越来越混乱反过来只要把文件和 schema 组织清楚后续 Agent 的决策就会稳不少。NetHack 的地图文件从 append-only 改成按坐标去重之后每一步新增的记忆内容从 138 个字符降到了 6 个字符减少了 95%。这看起来只是个很小的 schema 调整但对长任务来说会很有用。毕竟长任务一般要跑很多步早期写入的一点点冗余会滚雪球式地积累下去后面就变成越来越重的上下文噪声。Agent 表面上看有记忆实际上只是在一堆脏数据里大海捞针。AutoMem 的核心两层外部循环AutoMem 的框架可以拆成两层来理解。图注AutoMem 的整体框架。上图中间米黄色的部分是 Agent 本体。它左边是当前的游戏观察地图、HP、背包中间是 game LLM 在做的三件事LOG记录/更新记忆、PLAN查阅记忆、做决策、GAMEPLAY真正落子行动右边就是那个memory/文件夹里面是各种.txt文件。这一块是两层外循环共同作用的对象两层外循环都会去改它、影响它。上方青绿色的部分是 OUTER-LOOP 1负责优化结构。这里的 meta-LLM 扮演的是结果审查员的角色它会看完整 episode 的轨迹哪怕它动辄一万到十万步。然后它会去分析 Agent 在记忆管理上哪里出了问题再回过头去改 Agent 的 scaffold——包括 prompt、代码逻辑也包括记忆的 schema。前面提到的地图文件从 append 改成 upsert就是这一层干的事。meta-LLM 改完之后会再重新部署、再观察、再迭代这是一个循环。下方红色的部分是 OUTER-LOOP 2负责优化能力。这里的 meta-LLM 干的是另一件事从海量轨迹里挑出值得学习的记忆操作定好训练数据的标准和构成选 LoRA 配置最后训练出一个专门的 memory specialist。这里提一下米黄色部分下面的两块小方框task model负责游戏动作是冻结的权重完全不动真正被训练、被替换的是 memory specialist负责记忆操作它是由 LoRA 微调出来的。AutoMem 没去优化模型执行任务的能力优化的始终只是“怎么记、怎么查”这一部分内容。第一层青绿先把 Agent 的记忆结构和规则改对第二层红色再让模型在这套结构里把记忆操作做得更熟练两层轮流作用在中间这个 Agent 身上就是 AutoMem 的整体框架。实验结果论文在三个长任务游戏环境里做了实验Crafter、MiniHack 和 NetHack。这三者有个共同点任务周期长、世界会持续变化、历史信息很关键。Crafter 涉及探索、采集、制作和战斗NetHack 则是极其复杂的 roguelike 环境一个 episode 能长到 10⁴ 到 10⁵ 步。论文实验用的基础模型是 Qwen2.5-32B-Instruct。结果数据显示只优化记忆不动任务模型的权重AutoMem 在三个环境里都带来了大约 2× 到 4× 的提升。图注AutoMem 在三个长任务环境中的效果。曲线展示 scaffold 优化带来的逐步提升右侧红色点表示再经过记忆训练后的结果。图注BALROG 长周期游戏任务表现上图显示memory-as-file-system 的初始版本在 Crafter / MiniHack / NetHack 上分别是 25.00、7.50、0.42经过 scaffold 优化loop 1后提升到 47.27、27.5、1.57再加上记忆训练loop 2进一步涨到 51.36、30.00、1.85。这组结果说明一件事长任务能力不完全取决于模型参数规模。论文提到优化后的这个 32B open-weight 模型在这些任务上已经接近部分闭源前沿系统的水平。行为层面的变化主要是 scaffold 优化之后Agent 的低效动作明显地减少了。这里的低效动作是 stuck动作没带来任何环境变化和 oscillation来回折返、原地绕圈。经过优化后三类长任务环境的无效动作比例下降了 32% 到 65%。记忆本身的操作也变干净了重复写下降 68% 到 83%空搜索下降 13% 到 50%每一步塞进上下文的 token 量也降了 3% 到 30%。图注scaffold 优化后Agent 的任务动作和记忆动作都变得更高效。这组行为数据其实比最终分数更能说明问题AutoMem 带来的提升本质上是把 Agent 在长任务里几种常见的浪费给消掉了——原地卡住、来回绕路、写重复信息、搜索扑空。一个真正会用记忆的 Agent不会把所有东西不假思索地堆进文件它会先查已有记录再决定要不要更新会用更结构化的方式记地图、库存、状态也会主动减少重复内容让自己后面更容易查到有用的东西。这也作证了外部记忆真正的价值不在于能存多少东西而在于能不能把信息压缩、组织好让模型下一步决策时更容易定位到真正相关的内容。当然我们也要看清楚边界。这些实验都是在游戏环境里做的不能直接等同于真实工程任务。但它给了我们一定的启发在长流程 Agent 里记忆管理很可能是一个投入产出比极高的优化方向。工程价值我觉得 AutoMem 最值得拿出来讲的一点是它把 Agent Memory 从“存储组件”往前推了一步推到了“能力训练”这个层面。过去聊 memory讨论往往会落在具体实现上向量库怎么选召回怎么做summary 怎么写长上下文怎么裁剪。AutoMem 提醒我们的是真正决定 Agent 长任务表现的可能还有一层更底层的东西——Agent 会不会管理自己的记忆。它知不知道什么值得记下来写之前会不会先查一下有没有记过能不能避免重复记录能不能把记忆组织成后面真派得上用场的结构…这些工程细节放在长任务中会不断地累积最后直接决定 Agent 能不能把事情做完。这和真实开发工作很像。一个人写项目文档、维护日志、整理 TODO、记录踩过的坑这些从来不只是简单地多写几个文件。写乱了后面根本找不到写太细噪声就会盖过重点写太少关键状态又会丢。Agent 在跑长流程任务时碰到的其实是同一类问题。所以这篇论文的价值不只是提出了 AutoMem 这一个框架更重要的是它指了个方向未来的 Agent 系统里记忆能力也许会像规划、调用工具、执行代码一样变成一个可以单独优化、单独训练、单独评估的独立模块。Agent Memory 接下来要卷的可能不只是“存在哪里”还会开始卷“来整理、怎么整理、整理得好不好”。局限性AutoMem 目前的实验仍然有几个边界。首先论文里的记忆是 episodic 记忆也就是每个 episode 开始时文件系统重新初始化并没有跨 episode 保留长期经验。未来如果要用于真实工作流实验持久化记忆会是一个重要方向。其次实验主要发生在游戏环境中。游戏任务适合研究长周期记忆因为它有地图、库存、路径、目标和反馈但真实工程任务会涉及更多复杂约束比如代码库演化、权限、安全、多人协作、工具调用失败等。论文也提到把方法扩展到真实 memory-intensive tasks 是后续方向。还有一点是论文中三个环境分别优化了不同 scaffold 和 memory specialist。因此它还没有证明一个通用 memory scaffold 可以跨任务泛化。这些限制不会削弱这篇论文的价值但会提醒我们AutoMem 更像是一个方向样本展示“记忆管理可以被优化和训练”距离通用 Agent 记忆系统还有一段路要走。小结AutoMem 这篇论文可以用一句话概括Agent 的记忆管理是一种可以被观察、评估、优化和训练的技能。它把文件系统作为外部记忆把读、写、查、追加这些操作放进 Agent 的 action space再用两个外层循环分别优化记忆结构和记忆熟练度。实验结果显示在长任务环境里只优化记忆管理就能显著提升 Agent 表现。这对 Agent 系统设计很有启发。当我们讨论 Agent 为什么做不长、为什么容易重复、为什么上下文越跑越乱时问题可能不只在模型聪不聪明也在于它有没有一套成熟的记忆管理习惯。未来的 Agent可能不仅要会调用工具、写代码、做计划还要真正学会什么该记什么时候查怎么整理以及怎么让过去的信息在未来继续发挥作用。论文文献AutoMem: Automated Learning of Memory as a Cognitive Skill arxiv.org/pdf/2607.01224