【论文阅读】Agent 记忆机制(28):MEM1——将记忆压缩融入推理,实现近似恒定上下文的长程智能体

文章目录

  • 前言
  • 零、论文基本信息
  • 一、背景与问题
    • [1. 长程 Agent 为什么需要记忆管理](#1. 长程 Agent 为什么需要记忆管理)
    • [2. 为什么简单截断不够](#2. 为什么简单截断不够)
    • [3. 外部记忆也存在策略割裂](#3. 外部记忆也存在策略割裂)
  • 二、相关工作
    • [1. 多轮环境中的语言智能体](#1. 多轮环境中的语言智能体)
    • [2. 外部记忆管理](#2. 外部记忆管理)
    • [3. MEM1 的定位](#3. MEM1 的定位)
  • 三、方法总览
  • 四、核心模块详解
  • [4.1 记忆作为推理的一部分](#4.1 记忆作为推理的一部分)
    • [1. 设计动机](#1. 设计动机)
    • [2. 状态与动作格式](#2. 状态与动作格式)
    • [3. 内部状态需要保存什么](#3. 内部状态需要保存什么)
    • [4. 为什么能保持近似恒定的上下文](#4. 为什么能保持近似恒定的上下文)
  • [4.2 用强化学习学习记忆整合](#4.2 用强化学习学习记忆整合)
    • [1. 为什么使用强化学习](#1. 为什么使用强化学习)
    • [2. 奖励设计](#2. 奖励设计)
    • [3. 为什么 SFT 不一定足够](#3. 为什么 SFT 不一定足够)
  • [4.3 用于策略优化的掩码轨迹](#4.3 用于策略优化的掩码轨迹)
    • [1. 为什么普通强化学习轨迹不能直接使用](#1. 为什么普通强化学习轨迹不能直接使用)
    • [2. 重建完整训练轨迹](#2. 重建完整训练轨迹)
    • [3. 二维注意力掩码](#3. 二维注意力掩码)
    • [4. 信息掩码](#4. 信息掩码)
  • [4.4 多目标任务设计](#4.4 多目标任务设计)
    • [1. 设计动机](#1. 设计动机)
    • [2. 构造方法](#2. 构造方法)
    • [3. 为什么这种设计能训练记忆能力](#3. 为什么这种设计能训练记忆能力)
  • 五、实验设置
  • 六、实验结果与分析
  • [6.1 多目标、多跳问答](#6.1 多目标、多跳问答)
    • [1. 短任务中,MEM1 不一定全面领先大模型](#1. 短任务中,MEM1 不一定全面领先大模型)
    • [2. 任务越长,MEM1 的优势越明显](#2. 任务越长,MEM1 的优势越明显)
    • [3. 简单截断虽然省 token,但会损失信息](#3. 简单截断虽然省 token,但会损失信息)
    • [4. 外部记忆不一定带来更低延迟](#4. 外部记忆不一定带来更低延迟)
  • [6.2 WebShop 长程网页交互](#6.2 WebShop 长程网页交互)
  • [6.3 单目标 Wiki RAG](#6.3 单目标 Wiki RAG)
  • [6.4 零样本迁移到在线 Web-QA](#6.4 零样本迁移到在线 Web-QA)
  • [6.5 涌现出的 Agent 行为](#6.5 涌现出的 Agent 行为)
    • [1. 分别维护多个目标](#1. 分别维护多个目标)
    • [2. 根据难度切换目标](#2. 根据难度切换目标)
    • [3. 根据缺失信息生成下一步查询](#3. 根据缺失信息生成下一步查询)
    • [4. 选择性更新记忆](#4. 选择性更新记忆)
    • [5. 自我验证](#5. 自我验证)
    • [6. 调整检索范围](#6. 调整检索范围)
  • 七、局限性与未来方向
    • [1. 依赖可验证奖励](#1. 依赖可验证奖励)
    • [2. 内部状态可能产生不可逆的信息丢失](#2. 内部状态可能产生不可逆的信息丢失)
    • [3. "近似恒定"不等于固定大小](#3. “近似恒定”不等于固定大小)
    • [4. 当前实验任务仍以文本交互为主](#4. 当前实验任务仍以文本交互为主)
    • [5. 未来方向](#5. 未来方向)
  • 八、我的理解和启发
    • [1. 记忆可以是一种策略,而不只是一种存储](#1. 记忆可以是一种策略,而不只是一种存储)
    • [2. 推理状态和长期记忆不应该完全混为一谈](#2. 推理状态和长期记忆不应该完全混为一谈)
    • [3. 记忆压缩必须围绕未来行动设计](#3. 记忆压缩必须围绕未来行动设计)
    • [4. 评价记忆系统不能只看召回准确率](#4. 评价记忆系统不能只看召回准确率)
    • [5. 可以如何应用到自己的 Agent](#5. 可以如何应用到自己的 Agent)
    • [6. 与其他记忆方法的联系](#6. 与其他记忆方法的联系)
  • 九、总结
  • 参考资料

前言

现在很多 Agent 已经不再是"一问一答"的聊天机器人,而是需要持续与外部环境交互:

  • 搜索多个网页并整合证据;
  • 连续调用工具完成复杂任务;
  • 在购物网站中多轮浏览、筛选和决策;
  • 依次完成多个相互关联的子目标。

这类任务有一个很直接的问题:交互历史会越来越长。

以搜索 Agent 为例,传统做法通常是将每轮产生的内容全部保留下来:

text 复制代码
用户问题
+ 第一次思考
+ 第一次搜索请求
+ 第一次搜索结果
+ 第二次思考
+ 第二次搜索请求
+ 第二次搜索结果
+ ...

这种方式虽然简单,但会带来三个问题。

第一,推理成本和显存占用会随着上下文不断增长。

第二,当任务长度超过模型训练时见过的范围后,模型可能很难泛化到更长的交互轨迹。

第三,即使重要信息仍然位于上下文中,也可能被大量无关搜索结果和中间推理稀释。换句话说,信息"还在"并不代表模型真的会使用它。

一些记忆系统通过向量数据库、摘要模型或者外部检索模块缓解这个问题,但记忆管理和 Agent 的行动策略通常是分开设计的:

  • 一个模块负责保存和检索;
  • 另一个模型负责推理和行动;
  • 两者并不一定围绕最终任务成功进行联合优化。

本文提出的 MEM1 采用了另一种思路:

不再把记忆看成推理之外的独立模块,而是让 Agent 在每次推理时,同时完成记忆整合。

在每一轮交互后,MEM1 都会生成一个新的内部状态,将上一轮保留的关键信息、新获得的环境反馈和下一步计划合并起来。旧的推理、查询和工具返回结果随后会从上下文中删除。

因此,未来决策不再依赖完整历史,而只依赖一个持续更新的紧凑内部状态。

这篇论文最值得关注的地方,不只是"压缩了上下文",而是通过强化学习让模型自己学会:

  • 哪些信息需要保留;
  • 哪些信息可以丢弃;
  • 当前还缺少什么信息;
  • 下一步应该执行什么动作。

零、论文基本信息


一、背景与问题

1. 长程 Agent 为什么需要记忆管理

在多轮环境中,Agent 每一步通常会经历如下过程:

text 复制代码
分析当前状态
↓
生成工具调用
↓
接收环境反馈
↓
根据反馈调整计划
↓
继续行动

随着交互轮数增加,历史中的信息可以分为三类:

  1. 后续任务仍然需要的事实;
  2. 已经被验证或否定的中间结论;
  3. 不再有用的工具返回结果和推理过程。

传统全历史上下文不会主动区分这三类信息,而是全部保留下来。

设当前上下文长度为 N N N。标准 Transformer 的注意力计算复杂度通常与 N 2 N^2 N2 相关;即使使用 KV Cache,缓存占用也会随着上下文长度近似线性增长。

因此,长程 Agent 的问题不只是模型上下文窗口够不够大,而是:

Agent 是否能够把不断增长的交互历史,转化为一个规模受控、决策相关的状态表示?

2. 为什么简单截断不够

最简单的办法是只保留最近几轮对话。

这种方法能够限制上下文长度,但也可能直接删除早期的重要信息。

例如,用户最开始提出:

text 复制代码
目标商品必须兼容 Linux,并且价格低于 100 美元。

如果 Agent 在多轮搜索后直接截断早期上下文,那么它可能记得当前浏览到的商品,却忘记最初的兼容性和价格约束。

所以,问题不只是"删除旧内容",而是需要在删除前完成信息整合:

text 复制代码
完整历史
↓
提取仍然有效的信息
↓
更新当前任务状态
↓
删除已经被整合的原始内容

3. 外部记忆也存在策略割裂

RAG 或向量数据库能够将信息保存到模型上下文之外,但仍然需要解决:

  • 什么内容值得写入?
  • 当前应该检索什么?
  • 检索结果与当前计划是什么关系?
  • 检索到的记忆是否真的影响了下一步行动?

如果记忆模块和行动策略分别优化,就可能出现"检索到了正确内容,但 Agent 没有使用"的问题。

MEM1 的定位正是在这里:

将记忆整合直接变成 Agent 推理策略的一部分,并使用任务奖励端到端学习这种行为。


二、相关工作

1. 多轮环境中的语言智能体

ReAct 等方法通过交替生成推理和动作,使语言模型能够使用搜索、浏览器和其他外部工具。

典型轨迹如下:

text 复制代码
Thought
↓
Action
↓
Observation
↓
Thought
↓
Action

后续研究进一步使用监督微调或强化学习,让 Agent 学习工具调用、任务分解和错误恢复。

但大多数方法默认保留全部历史轨迹。随着任务变长,Agent 的上下文、显存占用和推理成本也会持续增加。

2. 外部记忆管理

另一类方法通过外部模块管理长期信息,例如:

  • 使用向量数据库保存历史;
  • 根据当前查询检索相关记忆;
  • 定期压缩或总结上下文;
  • 将事件组织为图结构或结构化记录。

这类方法解决的是"如何在上下文之外保存信息",但记忆模块通常独立于 Agent 的行动策略。

MEM1 与这些方法的区别是,它没有把记忆压缩交给一个独立模型,而是让同一个 Agent 同时完成:

text 复制代码
推理
+ 记忆整合
+ 下一步动作选择

3. MEM1 的定位

可以将几类方法简单对比如下:

方法 记忆表示 记忆管理方式 与行动策略的关系
全历史上下文 完整交互轨迹 不主动管理 直接作为模型输入
简单截断 最近若干轮 按长度删除 不判断信息价值
A-MEM 等外部记忆 外部记忆条目 写入、检索和链接 通常作为额外模块
MEM1 持续更新的内部状态 每轮推理时完成整合 与行动策略联合学习

因此,MEM1 的核心问题不是"如何建立更大的记忆库",而是:

能否让 Agent 通过强化学习,学会在受限上下文中保留完成任务所需的信息?


三、方法总览

为了理解 MEM1 与传统推理 Agent 的区别,可以先看论文 Figure 1。

图源:论文 Figure 1。

传统 Agent 会持续累积思考、动作和环境反馈;MEM1 则不断生成新的内部状态,并删除已经被整合的旧内容。

MEM1 的整体流程可以表示为:

text 复制代码
任务描述与初始问题
↓
生成内部状态 <IS_t>
↓
生成查询 <query_t> 或最终答案 <answer_t>
↓
接收环境反馈 <info_t>
↓
将旧内部状态、查询和反馈整合为新的 <IS_(t+1)>
↓
删除上一轮原始内容
↓
继续下一轮交互

这里的内部状态 <IS> 同时承担两项职责:

  1. 推理当前应该做什么;
  2. 保存未来决策仍然需要的信息。

这也是 MEM1 名称中"1-step integrated reasoning and consolidation"的含义:在一次状态更新中,同时完成推理与记忆整合。


四、核心模块详解

4.1 记忆作为推理的一部分

1. 设计动机

传统 Agent 通常将推理轨迹直接当作记忆。

这种设计的问题是,推理过程包含大量临时内容,例如:

  • 已经失败的搜索方向;
  • 冗长的工具输出;
  • 重复事实;
  • 对后续决策没有作用的中间分析。

如果全部保留,历史会持续增长;如果直接截断,又可能丢失任务约束和关键证据。

MEM1 因此引入持续更新的内部状态 <IS>

2. 状态与动作格式

论文使用四种 XML 风格标签区分不同信息:

标签 含义
<IS> 内部状态,包括当前推理和已整合记忆
<query> Agent 向环境发出的查询或动作
<info> 环境返回的信息
<answer> Agent 给出的最终答案

在第 t t t 轮,Agent 首先生成内部状态:

I S t \mathrm{IS}_t ISt

然后生成查询:

q u e r y t \mathrm{query}_t queryt

环境根据查询返回:

i n f o t \mathrm{info}_t infot

下一轮,Agent 将这三部分整合为新的内部状态:

( I S t , q u e r y t , i n f o t ) → I S t + 1 \left(\mathrm{IS}_t,\mathrm{query}_t,\mathrm{info}t\right)\rightarrow \mathrm{IS}{t+1} (ISt,queryt,infot)→ISt+1

新状态生成后,上一轮的 <IS_t><query_t><info_t> 会从推理上下文中删除。

3. 内部状态需要保存什么

内部状态并不是对历史的普通摘要,而是面向未来决策的任务状态。

以多目标搜索任务为例,当前内部状态可能是:

text 复制代码
<IS>
目标 1:寻找论文 A 的作者。
- 已知:论文 A 发表于 2022 年。
- 缺失:第一作者姓名。
- 下一步:搜索论文标题和作者信息。

目标 2:确认作者所在机构。
- 当前尚未开始。
</IS>

执行搜索后,环境返回:

text 复制代码
<info>
论文 A 的第一作者是 Alice Smith,发表时所在机构为 MIT。
</info>

新的内部状态可以更新为:

text 复制代码
<IS>
目标 1 已完成:论文 A 的第一作者是 Alice Smith。
目标 2 已完成:发表时所在机构为 MIT。
当前已具备所有答案,可以结束搜索。
</IS>

原始搜索结果随后可以被删除,因为对最终任务真正有用的信息已经进入新的内部状态。

4. 为什么能保持近似恒定的上下文

在任意交互轮次,MEM1 最多只保留有限数量的状态和交互标签,而不会保留从第一轮开始的完整轨迹。

论文中说明,在状态过渡期间,上下文最多包含:

  • 两个 <IS>
  • 两个 <query>
  • 一个 <info>

当新状态生成后,旧内容就会被移除。

需要注意的是,论文所说的"constant memory"更准确地理解为:

上下文不再随着交互轮数线性增长,而不是每一轮的 token 数绝对完全相同。

内部状态本身的长度仍可能根据任务复杂度发生变化。实验中的峰值 token 也会随着目标数略有增加,只是增长幅度远小于保留完整历史的方法。


4.2 用强化学习学习记忆整合

1. 为什么使用强化学习

如果只通过提示词要求模型"总结重要信息",模型可能生成语言流畅的摘要,但摘要不一定有助于最终任务。

例如,模型可能保留大量背景信息,却删掉后续回答需要的一个实体名称。

MEM1 使用最终任务奖励训练状态整合策略:

text 复制代码
保留了关键事实
↓
后续能够得到正确答案
↓
获得奖励

如果 Agent 丢失了关键事实,最终就无法正确回答,也无法获得任务奖励。

因此,模型需要自己学习什么信息对长期任务有价值。

2. 奖励设计

在问答任务中,论文使用 Exact Match 作为强化学习奖励。

多目标任务中,每个正确的子问题答案获得 1 分。如果输出格式错误,或者答案数量与问题数量不一致,则得分为 0。

论文没有加入额外的中间奖励,也没有加入格式奖励。

这意味着 MEM1 并没有被显式奖励"写出更短的内部状态",而是在受限上下文机制下,为了获得最终任务奖励,自主学习压缩和保留信息。

3. 为什么 SFT 不一定足够

监督微调学习的是专家轨迹中的输出形式,而强化学习优化的是最终任务结果。

记忆整合存在多种可行方式,很难为每一步都提供唯一正确的内部状态。因此,只模仿某一组专家轨迹,可能限制模型探索更适合自己的状态表示。

论文实验也显示,在单目标 Wiki RAG 中:

方法 EM F1 峰值 Token
MEM1-QA(SFT) 0.302 0.358 654
MEM1-QA(RL) 0.405 0.471 563

这说明在论文的设置下,强化学习不仅提高了答案准确性,也学到了更紧凑的状态管理方式。

不过,这并不意味着所有记忆任务都必须使用强化学习。更准确的结论是:

当记忆写入缺少唯一标准答案、但最终任务结果可以验证时,强化学习更适合优化记忆策略。


4.3 用于策略优化的掩码轨迹

1. 为什么普通强化学习轨迹不能直接使用

MEM1 在推理时会删除旧上下文,这会产生一个训练问题。

传统 PPO 等策略优化算法通常假设生成轨迹是连续的:

text 复制代码
token_1 → token_2 → token_3 → ... → token_n

但 MEM1 的实际上下文会不断变化:

text 复制代码
第一轮:任务 + IS_1 + query_1 + info_1

第二轮:任务 + IS_2 + query_2 + info_2

第三轮:任务 + IS_3 + answer

IS_2 生成时可以看到第一轮的一部分内容,但 IS_3 生成时,第一轮内容已经被删除。

如果训练时简单拼接全部 token,那么模型就可能看到推理阶段原本不可见的信息,导致训练和推理不一致。

2. 重建完整训练轨迹

MEM1 会将各轮交互重新拼接为一条完整轨迹。

对于前 T − 1 T-1 T−1 轮:

τ t = ( I S t , q u e r y t , i n f o t ) , t ∈ 1 , T − 1 \tau_t=\left(\mathrm{IS}_t,\mathrm{query}_t,\mathrm{info}_t\right),\quad t\in1,T-1 τt=(ISt,queryt,infot),t∈1,T−1

最后一轮输出答案:

τ T = ( I S T , a n s w e r T ) \tau_T=\left(\mathrm{IS}_T,\mathrm{answer}_T\right) τT=(IST,answerT)

完整轨迹可以写为:

τ = ( τ 1 , τ 2 , ... , τ T ) \tau=\left(\tau_1,\tau_2,\ldots,\tau_T\right) τ=(τ1,τ2,...,τT)

但拼接后的轨迹只用于批量计算,不能让每个 token 看到所有历史内容。

3. 二维注意力掩码

为了保证训练时每个 token 只能看到其生成时真实存在的上下文,MEM1 对完整轨迹应用二维注意力掩码。

对于位置 k k k 的 token,设其实际可见状态为 s k s_k sk,模型生成的 token 为 a k a_k ak。PPO 中的新旧策略概率比为:

ρ k ( θ ) = π θ ( a k ∣ s k ) π θ o l d ( a k ∣ s k ) \rho_k(\theta)=\frac{\pi_\theta(a_k\mid s_k)}{\pi_{\theta_{\mathrm{old}}}(a_k\mid s_k)} ρk(θ)=πθold(ak∣sk)πθ(ak∣sk)

其中:

  • π θ \pi_\theta πθ 表示当前策略;
  • π θ o l d \pi_{\theta_{\mathrm{old}}} πθold 表示生成轨迹时的旧策略;
  • s k s_k sk 是经过注意力掩码处理后的实际上下文;
  • a k a_k ak 是模型在位置 k k k 生成的 token。

二维掩码确保 s k s_k sk 与实际 rollout 时保持一致,因此优势估计、KL 惩罚和价值估计仍然有效。

为了理解完整的训练流程,可以看论文 Figure 3。

图源:论文 Figure 3。

上半部分展示从 rollout、奖励分配、目标计算到策略更新的强化学习流程;左下角展示旧状态如何被新状态替换;右下角展示用于还原真实可见上下文的二维注意力掩码。

4. 信息掩码

除了二维注意力掩码外,MEM1 还使用一维信息掩码。

<info> 中的内容来自搜索引擎、网页或者其他外部环境,并不是 Agent 自己生成的。因此,策略更新时不应该将这些环境 token 当作模型动作计算梯度。

信息掩码会屏蔽外部信息对应的损失,只对 Agent 自己生成的 <IS><query><answer> 等 token 进行策略更新。

可以把两种掩码的职责区分为:

掩码 解决的问题
二维注意力掩码 控制每个 token 能看到哪些历史信息
一维信息掩码 控制哪些 token 参与策略梯度更新

4.4 多目标任务设计

1. 设计动机

HotpotQA、Natural Questions 等数据集虽然包含多跳问答,但单个问题通常只需要有限次数的信息检索。

这不足以训练真正的长程记忆管理能力。

如果任务只需要两次搜索,Agent 即使保留全部上下文,也不会遇到明显的记忆压力。

因此,论文将多个独立问题组合成一个多目标任务。

2. 构造方法

假设原始数据集中有三个问题:

text 复制代码
问题 A:论文 X 的作者是谁?
问题 B:城市 Y 位于哪个国家?
问题 C:电影 Z 的导演是谁?

组合后,Agent 需要在一次任务中同时回答:

text 复制代码
请分别回答问题 A、问题 B 和问题 C。

每个问题本身还可能需要多跳检索,因此组合后的任务同时具有:

  • 多目标;
  • 多跳推理;
  • 多轮环境交互;
  • 跨目标状态管理。

3. 为什么这种设计能训练记忆能力

当目标数量增加时,Agent 需要在内部状态中同时记录:

  • 哪些问题已经解决;
  • 每个问题获得了哪些证据;
  • 哪些信息仍然缺失;
  • 下一步应该搜索哪个目标;
  • 最终答案应该按什么顺序输出。

论文只使用 2-objective 任务训练 MEM1-QA,但测试时将目标数量扩展到 3、4、6、8 和 16,以考察模型能否泛化到训练阶段没有见过的任务长度。


五、实验设置

1. 基础模型与训练方法

所有 MEM1 变体都基于 Qwen2.5-7B Base 训练。

主要设置包括:

  • 强化学习算法:PPO;
  • Actor 学习率: 10 − 6 10^{-6} 10−6;
  • Critic 学习率: 10 − 5 10^{-5} 10−5;
  • Batch Size:64;
  • Mini Batch Size:64;
  • Warmup:50 步;
  • 训练温度:1;
  • 推理温度:0.01;
  • 训练硬件:4 张 H100 或 H200;
  • 评估硬件:单张 H200;
  • 推理框架:vLLM,并开启自动 Prefix Cache。

2. 实验环境

论文使用了两类主要环境。

(1)问答与信息检索

训练数据由 HotpotQA 和 Natural Questions 混合构成,并组合为 2-objective 多目标任务。

检索环境包括:

  • 本地 Wikipedia RAG;
  • 在线 Web Search。

本地 RAG 使用:

  • 2018 年 Wikipedia Dump;
  • E5 Base 检索模型;
  • Faiss-GPU;
  • 每次返回 3 个 passage。

在线搜索使用 Serper API,每次返回前 10 条搜索结果的标题、摘要和 URL,不继续抓取网页正文。

(2)WebShop

WebShop 模拟在线购物环境,Agent 需要根据自然语言要求:

  • 搜索商品;
  • 浏览商品页面;
  • 检查属性;
  • 进行页面导航;
  • 选择满足要求的商品。

该环境使用最终任务奖励评价 Agent 的完成效果。

3. 对比方法

问答任务中的主要对比方法包括:

  • Qwen2.5-7B-Instruct;
  • Qwen2.5-14B-Instruct;
  • Search-R1;
  • DeepResearcher;
  • 简单截断上下文;
  • A-MEM 外部记忆;
  • MEM1-QA(SFT)。

WebShop 中的主要对比方法包括:

  • GPT-4o;
  • Agent-FLAN;
  • Agent-R;
  • AgentLM;
  • Qwen2.5-Instruct;
  • 截断和 A-MEM 变体。

4. 评价指标

准确性指标

问答任务使用:

  • Exact Match;
  • F1 Score。

F1 的计算方式为:

F 1 = 2 × p × r p + r \mathrm{F1}=2\times\frac{p\times r}{p+r} F1=2×p+rp×r

其中, p p p 表示词级精确率, r r r 表示词级召回率。

需要注意,多目标任务中的 EM 和 F1 是各子问题得分之和,所以在 8-objective 和 16-objective 实验中,数值可能大于 1。

WebShop 使用环境提供的最终奖励。

效率指标

论文使用三个效率指标:

  1. Peak Token Usage:单轮序列中的最大 token 数,用于近似反映峰值推理显存;
  2. Dependency Length:所有生成 token 对历史 token 的累计依赖量;
  3. Inference Time:完成整条任务轨迹的推理时间。

Dependency 指标定义为:

D e p e n d e n c y = ∑ i ∈ T ( 2 n o ( i ) + n p ( i ) ) n o ( i ) 2 \mathrm{Dependency}=\sum_{i\inT}\frac{\left(2n_o^{(i)}+n_p^{(i)}\right)n_o^{(i)}}{2} Dependency=i∈T∑2(2no(i)+np(i))no(i)

其中:

  • n p ( i ) n_p^{(i)} np(i) 表示第 i i i 步的前缀 token 数;
  • n o ( i ) n_o^{(i)} no(i) 表示第 i i i 步生成的 token 数;
  • T T T 表示总交互步数。

这个指标不仅考虑最终峰值上下文,也考虑整条轨迹中模型实际承担的累计生成成本。

5. 最大交互轮数

论文设置:

  • 1-objective 到 4-objective:最多 6 轮;
  • 更复杂的任务:最多 20 轮。

由于旧上下文会被删除,Agent 可能难以判断还剩多少交互机会。因此,系统会在 <info> 开头加入剩余轮数提示:

text 复制代码
[HINT: YOU HAVE {turns_left} TURNS LEFT]

这一点也说明,MEM1 的状态压缩并没有自动解决所有时序信息问题,剩余预算仍然由系统显式注入。


六、实验结果与分析

6.1 多目标、多跳问答

为了观察目标数量增加时不同方法的变化,可以先看论文 Figure 4。

图源:论文 Figure 4。

MEM1-QA 只在 2-objective 任务上训练,但测试目标数增加到 16 时,峰值 token 增长仍然较缓;多数完整历史方法的上下文则随任务长度明显增长。

从 Table 1 中选取关键结果如下:

方法 2目标 EM 2目标峰值 Token 8目标 EM 8目标峰值 Token 16目标 EM 16目标峰值 Token
Qwen2.5-14B-Instruct 0.732 1560 1.55 4470 0.567 3840
Qwen2.5-7B-Instruct 0.268 1960 0.87 4950 0.165 4330
Qwen2.5-7B + A-MEM 0.286 1410 1.13 1860 0.730 1880
Qwen2.5-7B + 截断 0.262 828 0.97 1180 0.396 1330
Search-R1 0.452 1300 0.064 2470 0.009 2090
DeepResearcher 0.536 2200 0.73 5180 0.071 4890
MEM1-QA 0.709 640 1.87 801 1.97 1040

这里可以得到几个重要结论。

1. 短任务中,MEM1 不一定全面领先大模型

在 2-objective 任务上,Qwen2.5-14B-Instruct 的 EM 为 0.732,略高于 MEM1 的 0.709。

这说明当任务还不够长时,更大的模型配合完整上下文仍然具有优势。

MEM1 的核心价值并不是在所有短任务上提高准确率,而是让性能和资源消耗在任务长度增加时更加稳定。

2. 任务越长,MEM1 的优势越明显

在 16-objective 任务上:

  • MEM1 的 EM 为 1.97;
  • Qwen2.5-14B-Instruct 的 EM 为 0.567;
  • MEM1 的准确结果数量约为后者的 3.5 倍。

峰值 Token 方面:

  • MEM1:1040;
  • Qwen2.5-14B-Instruct:3840。

也就是说,MEM1 只使用了后者约 27.1% 的峰值 token,或者说峰值 token 降低约 3.7 倍。

推理时间方面:

  • MEM1:8.70 秒;
  • Qwen2.5-14B-Instruct:29.7 秒。

MEM1 只需要约 29.3% 的推理时间。

3. 简单截断虽然省 token,但会损失信息

在 16-objective 任务上,截断方法的峰值 token 为 1330,已经比较接近 MEM1 的 1040,但其 EM 只有 0.396。

这说明控制上下文长度并不困难,困难的是:

在删除历史之前,把未来仍然需要的信息正确整合出来。

4. 外部记忆不一定带来更低延迟

A-MEM 在 16-objective 任务上的峰值 token 为 1880,比完整上下文更低,但推理时间达到 91.2 秒,明显高于 MEM1 的 8.70 秒。

这反映出外部记忆还可能引入:

  • 记忆写入;
  • 向量编码;
  • 相似度检索;
  • 额外模型调用;
  • 记忆结果拼接。

因此,评价 Agent 记忆系统时不能只看最终 prompt 长度,还应该同时考虑端到端延迟和系统复杂度。

6.2 WebShop 长程网页交互

Table 2 的关键结果如下:

方法 平均最终奖励 峰值 Token Dependency 单轨迹推理时间
GPT-4o 25.48 5300 3.99M 未报告
Agent-FLAN-7B 40.35 3370 2.18M 9.95 秒
Agent-R-8B 63.91 未报告 未报告 未报告
AgentLM-7B 63.60 2240 0.28M 3.91 秒
AgentLM-13B 70.80 2360 0.30M 5.23 秒
MEM1-WebShop 70.87 810 0.15M 2.61 秒

MEM1-WebShop 的最终奖励为 70.87,略高于 AgentLM-13B 的 70.80,同时只使用 7B 规模模型。

与 AgentLM-7B 相比:

  • 峰值 token 约降低 2.8 倍;
  • Dependency 约降低 1.9 倍;
  • 推理时间约降低 1.5 倍。

这说明 MEM1 的收益不仅存在于问答检索,也能够迁移到网页导航和连续决策场景。

不过,GPT-4o 在该表中的结果不能简单理解为模型本身能力较弱。它没有针对 WebShop 环境进行相同方式的专门训练,而 MEM1-WebShop 是在该环境上训练的,因此更合理的比较重点应当是同规模 Agent 训练方法及其效率。

6.3 单目标 Wiki RAG

在单目标 Wiki RAG 中,MEM1-QA 并没有针对该任务单独训练,而是直接使用在 2-objective 任务上训练的模型。

关键结果如下:

方法 EM F1 峰值 Token Dependency
Qwen2.5-14B-Instruct 0.422 0.534 889 222000
Search-R1 0.445 0.516 1100 150000
DeepResearcher 0.419 0.503 1330 704000
MEM1-QA 0.405 0.471 563 76000

MEM1 的 EM 和 F1 没有超过 Search-R1,也没有达到 Qwen2.5-14B-Instruct 的 F1。

它的优势主要体现在效率:

  • 峰值 token 最低;
  • Dependency 最低;
  • 保持了有竞争力的回答准确率。

因此,对这组实验更准确的描述是:

MEM1 在单目标任务上用一定的准确率交换了明显更低的上下文和累计计算开销,而不是在全部指标上都取得最优结果。

6.4 零样本迁移到在线 Web-QA

在未参与训练的 Online Web-QA 环境中:

方法 EM F1 峰值 Token Dependency 推理时间
Qwen2.5-7B-Instruct 0.334 0.451 837 139000 2.20 秒
DeepResearcher 0.372 0.492 1027 286000 2.87 秒
MEM1-QA 0.397 0.485 579 44000 1.84 秒

MEM1 获得最高 EM,F1 略低于专门面向在线 Web-QA 训练的 DeepResearcher,同时保持最低的峰值 token、Dependency 和推理时间。

这说明 MEM1 学到的不只是对固定 Wikipedia 检索接口的适配,还包括一定程度的通用搜索和状态整合策略。

6.5 涌现出的 Agent 行为

论文通过 Figure 5 分析了 MEM1 的内部状态。

图源:论文 Figure 5。

图中展示了 MEM1 在多目标管理、记忆更新和搜索策略方面出现的行为模式。

作者观察到以下行为:

1. 分别维护多个目标

Agent 会在内部状态中分别记录不同问题的进度,而不是将所有事实混合在一段摘要中。

2. 根据难度切换目标

如果某个问题暂时搜索不到答案,Agent 会转向另一个更容易推进的目标,而不是持续重复无效搜索。

3. 根据缺失信息生成下一步查询

内部状态不仅保存已经发现的事实,还会记录当前的信息缺口,并据此构造后续搜索请求。

4. 选择性更新记忆

当新信息出现时,Agent 会判断它是否与当前问题相关,再决定是否更新内部状态。

5. 自我验证

Agent 会发现先前结论可能不可靠,并主动发起新的查询进行确认。

6. 调整检索范围

当查询过于具体、没有获得有效结果时,Agent 会扩大或重新表述搜索范围。

这些行为没有通过逐条规则直接编写,而是在多目标任务和最终奖励约束下形成。

不过,论文主要通过轨迹案例展示这些行为,并没有为每类行为提供独立的量化指标。因此,这部分更适合作为机制解释,而不能单独作为性能结论。


七、局限性与未来方向

1. 依赖可验证奖励

这是论文明确指出的主要限制。

MEM1 依赖可以明确判断对错的任务奖励,例如:

  • 问答中的 Exact Match;
  • 数学题的正确答案;
  • WebShop 的环境奖励;
  • 网页导航中的任务完成信号。

但很多真实 Agent 任务没有清晰奖励,例如:

  • 撰写一份高质量研究报告;
  • 提供长期项目建议;
  • 维护用户偏好;
  • 进行开放式软件开发;
  • 与用户进行长期协作。

这类任务的奖励可能延迟、含糊甚至存在主观性,MEM1 的训练方式不能直接套用。

2. 内部状态可能产生不可逆的信息丢失

一旦旧的环境反馈被删除,后续就只能依赖压缩后的 <IS>

如果模型在某一轮错误删除了关键事实,后面没有原始历史可以重新读取,错误可能持续传播。

外部记忆系统通常还能重新检索原始记录,而 MEM1 的纯状态递推方式缺少天然的回溯能力。

3. "近似恒定"不等于固定大小

MEM1 控制的是历史不会随着轮数直接累积,但内部状态长度仍然取决于:

  • 同时存在的目标数量;
  • 每个目标需要保存的事实数量;
  • 模型生成状态时的表达方式。

实验中从 2 个目标扩展到 16 个目标时,峰值 token 仍然从 640 增加到 1040。

因此,超大规模并行目标下仍然可能需要显式状态预算、分层状态或外部存储。

4. 当前实验任务仍以文本交互为主

论文主要评估:

  • RAG 问答;
  • 在线搜索;
  • WebShop 网页导航。

在代码 Agent、桌面操作、多模态环境和跨天运行任务中,状态可能还需要保存:

  • 文件修改;
  • 程序运行结果;
  • 图像状态;
  • 用户偏好;
  • 权限和安全约束;
  • 多个子任务之间的依赖关系。

这些信息是否适合全部压缩进自然语言 <IS>,还需要进一步验证。

5. 未来方向

可以继续探索:

  • 在稀疏或延迟奖励下学习记忆策略;
  • 为内部状态加入显式 token 预算;
  • 将紧凑内部状态与可回溯外部记忆结合;
  • 对不同类型的事实使用结构化状态;
  • 检测错误压缩并恢复原始证据;
  • 将方法扩展到代码、多模态和长期个性化 Agent。

八、我的理解和启发

1. 记忆可以是一种策略,而不只是一种存储

以前提到 Agent 记忆,通常会想到:

text 复制代码
对话
↓
提取记忆
↓
存入数据库
↓
相似度检索

MEM1 提供了另一种视角:

text 复制代码
当前状态 + 新观察
↓
判断什么信息仍然影响未来决策
↓
生成新的决策状态

这里的记忆更接近强化学习中的"状态",而不是数据库中的"历史记录"。

2. 推理状态和长期记忆不应该完全混为一谈

MEM1 将推理和记忆整合到同一个 <IS> 中,这是它实现低成本的重要原因。

但在真实工程中,我认为仍然需要区分两类需求:

面向当前任务的工作记忆

例如:

  • 当前目标;
  • 已完成步骤;
  • 已知事实;
  • 未解决问题;
  • 下一步计划。

这类信息适合使用 MEM1 风格的滚动内部状态。

跨任务长期保存的持久记忆

例如:

  • 用户长期偏好;
  • 历史项目决策;
  • 可复用经验;
  • 重要原始证据;
  • 审计记录。

这类信息不应该随着当前任务状态更新而永久删除,更适合保存在外部记忆系统中。

因此,在实际 Agent 中可以采用混合架构:

text 复制代码
完整工具轨迹
├── 短期保留,用于错误恢复和审计
│
├── 滚动工作状态
│   └── 服务当前任务的下一步决策
│
└── 长期记忆库
    └── 保存跨任务仍有价值的信息

3. 记忆压缩必须围绕未来行动设计

普通摘要关注的是"过去发生了什么"。

Agent 记忆更应该关注:

  • 当前目标是什么;
  • 哪些约束仍然有效;
  • 已经验证了什么;
  • 还缺少什么;
  • 哪些方法已经失败;
  • 下一步应该做什么。

也就是说,好的 Agent 记忆不是历史的缩写,而是未来决策的充分状态。

4. 评价记忆系统不能只看召回准确率

MEM1 的实验提醒我,Agent 记忆至少需要同时评价四个方面:

维度 关注问题
任务性能 最终任务是否完成
峰值上下文 单次推理需要多少 token 和显存
累计依赖 整条轨迹承担了多少历史计算
系统延迟 记忆写入、检索和推理一共需要多长时间

一个外部记忆方法可能减少 prompt 长度,却因为频繁检索增加端到端延迟。

因此,生产环境不能只看"压缩了多少 token",还要看整个 Agent 控制循环。

5. 可以如何应用到自己的 Agent

如果暂时不训练一个完整的 MEM1 模型,也可以借鉴它的状态设计。

例如,每轮工具调用后强制更新一个结构化工作状态:

markdown 复制代码
## 当前目标

## 已确认事实

## 未解决问题

## 已失败尝试

## 当前约束

## 下一步行动

下一轮只向行动模型提供:

text 复制代码
任务描述
+ 最新工作状态
+ 当前工具返回结果

同时将完整轨迹保存在系统后台,用于:

  • 故障恢复;
  • 调试;
  • 审计;
  • 必要时重新提取信息。

这种实现不能完全复现 MEM1 的强化学习能力,但能够先验证滚动状态是否能降低上下文成本。

6. 与其他记忆方法的联系

方法 核心关注点 更适合解决的问题
Mem0 事实记忆的写入、更新和删除 用户长期偏好与跨会话记忆
A-MEM 记忆之间的动态关联 经验演化和关联召回
LightMem 降低长期记忆管理成本 大规模、低成本记忆维护
MEM1 推理过程中持续压缩工作状态 单个长程任务中的上下文增长

我的理解是,MEM1 并不是这些持久记忆系统的直接替代品。

它更接近 Agent 的"工作记忆层":负责在当前任务内部维持一个紧凑、可行动的状态;Mem0、A-MEM 等方法则更接近跨任务的长期记忆层。


九、总结

MEM1 提出了一种将记忆整合融入推理过程的长程 Agent 训练方法。

它的核心流程是:

text 复制代码
读取上一轮内部状态和新环境反馈
↓
生成包含记忆与推理的新内部状态
↓
生成下一步查询或最终答案
↓
删除已经被整合的旧上下文

为了训练这种动态上下文策略,论文进一步提出:

  1. 使用强化学习,根据最终任务奖励学习信息保留;
  2. 将各轮交互重建为完整的掩码轨迹;
  3. 使用二维注意力掩码还原每个 token 生成时的真实上下文;
  4. 使用信息掩码排除外部环境 token 的策略梯度;
  5. 将多个多跳问题组合为长程、多目标训练任务。

实验显示,MEM1-QA 只在 2-objective 任务上训练,却能够泛化到 16-objective 任务。

在 16-objective 多跳问答中,相比 Qwen2.5-14B-Instruct:

  • EM 约提高 3.5 倍;
  • 峰值 token 约降低 3.7 倍;
  • 推理时间降低到约 29.3%。

但 MEM1 仍然依赖可验证奖励,而且压缩后的内部状态可能产生不可逆的信息丢失。

对实际 Agent 开发而言,这篇论文最重要的启发是:

长期任务中的记忆不应该只是完整历史或向量数据库,而应该包含一个持续更新、直接服务于下一步行动的工作状态。

未来更实用的 Agent 记忆架构,可能不是只选择内部状态或外部记忆中的一种,而是同时包含:

  • 用于当前决策的紧凑工作状态;
  • 用于跨任务复用的长期记忆;
  • 用于回溯和恢复的完整原始轨迹。

参考资料

相关推荐
光锥智能1 小时前
荣耀将阿莱电影工作流融入机器人手机
人工智能·智能手机·机器人
云端漫步19871 小时前
HarmonyOS NEXT AI 智能生活助手:创建企业级 AI 工程与目录结构
人工智能·生活·harmonyos
逛逛GitHub1 小时前
盘点 17 个 7 月份 GitHub 上夯夯夯的开源项目。
github
一只小菜鸡..1 小时前
南京大学 操作系统 (JYY) 学习笔记:持久化的黑魔法——从磁铁、刻坑到闪存电荷
服务器·笔记·学习
2501_946736161 小时前
在线考试平台如何选型?从功能、优势与应用场景角度详解
大数据·人工智能·算法
厚皮龙1 小时前
OpenCV 版本导致 AprilTag 检测数量不同
人工智能·opencv·webpack
苦猿的大模型日记1 小时前
Day44|Agent 可观测性与调试:它没报错,但它做错了
人工智能
天辛大师1 小时前
天心大师:不确定中锚定自我,AI生活的哲学命题
人工智能·算法·决策树·机器学习·生活·启发式算法
冬奇Lab2 小时前
开源项目第174期:AirLLM — 4GB 显存跑 70B,8GB 跑 405B,3.7GB 跑 2.8 万亿参数的 Kimi K3
人工智能