Meta测试用于长任务AI代理的记忆教练

The Decoder··作者 Jonathan Kemper

关键信息

Meta将这个问题称为“行为状态衰减”,即有用的执行状态被不断增长的任务历史淹没,或者即使仍在上下文中也不再有效影响决策。该方案把私有状态、稳定知识和过程历史分开存放,记忆代理只能通过预定义工具调用更新记忆库,然后决定是否向执行代理发出简短提醒。

资讯摘要

Meta AI研究人员提出了一种面向长任务AI代理的记忆模块,因为他们在延长任务中反复观察到一种失败模式。举例来说,代理可能在早期学会一条约束,后来却在修复无关问题时违反它;也可能重复尝试一个已经失败的命令,或者把已经诊断过的错误模式当成新问题重新分析。作者把这类现象称为“行为状态衰减”,认为与任务相关的状态会随着历史不断增长而被分散,最终不再稳定地影响代理的下一步行动。他们还指出,仅仅给代理更长的历史,并不能真正解决这个问题。

论文将这一问题与传统记忆系统区分开来。传统记忆系统主要负责存储和检索信息,适合个性化和跨会话回忆,但在任务执行场景里,更难的是判断某条记忆是否应当在此刻被重新引入。提醒太少会让代理重复犯错,提醒太多则会增加token消耗、带来额外延迟,还会干扰代理当前工作。

为此,Meta提出把一个不改动的“动作代理”和一个单独的“记忆代理”配对使用。记忆代理会在固定间隔查看最近步骤的滑动窗口,更新一个结构化记忆库,然后决定是否在动作代理的下一次调用中插入一条简短提醒,或者保持沉默。作者把它描述为一种可插拔组件,可以与现有代理和执行框架一起工作,而且它只负责基于记忆的提醒,不提供更广泛的策略建议。

这个记忆库分为三部分。私有状态字段跟踪进度和未解决风险,但不会展示给动作代理;知识记忆保存需求、文件路径、配置等稳定事实;过程记忆记录代理尝试过什么以及结果如何,包括失败命令、成功修复和被拒绝的假设。在每次记忆更新时,代理只能通过预定义工具调用来修改这些内容,而不能随意覆盖记忆库。

Meta在Terminal-Bench 2.0和tau2-Bench上测试了这个方法。Terminal-Bench 2.0用于评估真实命令行环境中的自主代理,tau2-Bench则测试航空、零售和电信等场景中的对话式工具使用。记忆代理使用Claude Opus 4.6,动作代理使用Claude Sonnet 4.5。在Terminal-Bench上,该系统首次尝试就解决了46%的任务,而基线为38%。在tau2-Bench上,任务加权平均从55%提升到62%。

不过,不同领域的提升并不均匀。航空和零售任务都大约提升了10个百分点,而电信只提升了3个百分点。研究人员认为,这种不均衡说明记忆代理会根据任务不同而以不同频率介入,而不是执行一种固定的摘要规则。总体来看,这一结果表明,选择性记忆干预可能比不断重复所有历史信息更有效。

Meta测试用于长任务AI代理的记忆教练

资讯正文

Meta AI 使用第二个 AI 代理作为“记忆教练”,帮助长任务保持在正轨上

在执行长任务时,AI 代理常常会忘记约束条件、重复已经失败的命令,并重新发现它们此前已经诊断过的错误。Meta AI 提出的记忆模块会追踪这些信息,并决定何时提醒它们。

在一篇新论文中,Meta AI 研究人员描述了这些失败是如何发生的。一个代理可能在早期就识别出某项约束,但后来在修复一个无关的 bug 时却违反了它。它看到某条命令失败了,随后不久又尝试了一个几乎相同的版本。它诊断出了某种错误模式,但之后又把同样的模式当作新问题来处理。

作者将这种现象称为“behavioral state decay”(行为状态衰减)。指导代理决策的状态会分散在不断增长的任务历史中。它可能被埋得很深,藏在上下文窗口里,甚至完全超出上下文窗口。即便这些信息仍然留在转录内容或上下文窗口中,它们也可能不再可靠地影响代理的行为。Meta AI 说,单纯让代理访问更长的历史记录并不能解决这个问题。

何时需要记忆

现有的记忆系统侧重于信息的存储、更新和检索。论文指出,这种方式在个性化以及跨会话回忆方面效果不错。但正在推进某项任务的代理面临另一个问题:系统必须判断某条记忆何时足够有用,值得把它重新带回。提醒太少会导致错误反复发生,提醒太多则会增加延迟、消耗 token,并分散代理对当前工作的注意力。

这已经超出了摘要的范畴:摘要器只是在决定把哪些信息保留在什么地方,而 Meta 的系统则是在判断一段已存储的执行状态是否应该影响代理的下一步动作。由于不同任务的失败模式差异很大,固定的摘要规则无法可靠地做出这种判断。

第二个代理决定何时发声

所提出的系统将一个不加修改的“action agent”(行动代理)与一个单独的“memory agent”(记忆代理)配对。每隔固定间隔,记忆代理会回顾最近步骤的滑动窗口,并更新一个结构化记忆库。随后,它会决定是向行动代理的下一次调用添加一条简短提醒,还是保持沉默。

作者表示,这个模块可以作为即插即用组件与现有代理和执行框架配合使用。与通用顾问模型不同,它只提供基于记忆的提醒,不会给出更广泛的战略建议。

记忆库分为三个部分。私有状态字段跟踪进度和未解决的风险,且永远不会展示给 Action Agent。Knowledge Memory 存储稳定事实,例如需求、文件路径和配置。Procedural Memory 记录代理尝试过什么以及结果如何,包括失败的命令、成功的修复和被否定的假设。

在每个记忆步骤中,代理只能通过预定义的工具调用来更新记忆库,而不能自由覆盖其内容。随后,它决定是否重新激活某个已存储状态,并在需要时写入一条有针对性的提醒。选择不干预本身也是策略的一部分。

选择性提醒在两个基准测试上提高了分数

研究人员在 Terminal-Bench 2.0 上测试了该系统,这是一个在真实命令行环境中评估自主代理的基准。他们还使用了 tau2-Bench,该基准用于测试航空、零售和电信行业中的对话式工具使用。Claude Opus 4.6 充当记忆代理,不过该模型此后已收到多次更新。

在较旧的 Claude Sonnet 4.5 作为行动代理的情况下,该系统在 Terminal-Bench 任务上首次尝试就解决了 46% 的问题。基线系统解决了 38%。在 tau2-Bench 上,按任务加权的平均分从 55% 升至 62%。

结果因领域而异。航空和零售任务的得分都上升了约 10 个百分点,而电信任务仅提高了 3 个百分点。研究人员表示,这种不均衡的提升表明,记忆代理会根据任务以不同频率介入,而不是应用固定的聚合规则。

选择性介入比持续回忆更有效

团队一次移除一个能力,以确定系统的哪些部分推动了这些提升。当行动代理在每一步都接收完整的记忆库时,性能低于完整系统。一个没有“静默”选项、会在每一步都返回记忆的版本仍然具有竞争力,但在不同领域带来的提升不够一致。

一种没有持久记忆库、类似顾问的版本在某些方面有所帮助,但也在其他方面拖累了性能。将维护中的记忆库与选择性提醒结合起来的完整设计表现最好。

这种方法的表现也优于 Mem0,这是一种通过搜索检索记录的生产级记忆层。差异不只是系统检索到了哪些记录。记忆代理还会决定,某个已存储状态是否以及如何以有针对性的提醒形式进入循环。

tau2-Bench 中“Airline”领域的一个例子展示了其工作方式。某位用户声称自己拥有 Gold status,但工具识别出他只是普通客户。基线系统根据用户的说法给予了补偿。记忆代理则发出提醒,要求依赖经过验证的工具数据。

剩余的大多数错误与校准有关,而非记忆本身。例如,在某些情况下,记忆代理对一个推测性的推断赋予了过高的置信度。

更小的开源模型需要训练才能更好地管理记忆

主版本不需要专门训练的模型,而是作为一个提示式代理运行。团队还测试了它是否可以将这种干预策略教给一个开源模型。他们将较小的 Qwen3.5-27B 训练为记忆代理,同时保持一个大得多的行动模型冻结不变。

在没有训练的情况下,这个较小的记忆代理会降低性能。监督微调恢复了这部分损失,随后强化学习进一步改进了它决定何时回忆某个已存储状态的能力。

Meta AI 列出了一些悬而未决的问题,包括联合训练记忆代理和行动代理、教会系统在需要时调用记忆而不是遵循固定时间表,以及确定何时字面记忆比面向任务的抽象更有效。

Meta AI 已将该项目的代码发布在 GitHub 上。

Meta 并不是唯一遇到这个问题的公司,而业内至今也没有标准做法。开源的 Mastra 框架使用两个后台代理来监控并压缩对话内容,而不是把完整历史保留在上下文窗口中。GAM 系统旨在防止长对话中的“context rot”,并且与 Meta 的方法类似,它会将自身结果与 Mem0 记忆层进行比较。其他研究人员正在设计可伴随一生的 AI 记忆系统,这类系统能够主动添加、修订和遗忘知识。

来源与参考

  1. 原始链接
  2. Meta AI uses a second AI agent as a memory coach to keep long tasks on track

收录于 2026-08-03