AgentMoCo:面向长视界智能体的动量对比记忆优化框架
AgentMoCo:面向长视界智能体的动量对比记忆优化框架
原文网页:https://arxiv.org/html/2610.31355v1
PDF链接:https://arxiv.org/pdf/2610.31355v1
arXiv编号:arXiv:2610.31355v1 [cs.AI]
摘要
长视界工具调用智能体在执行上百步复杂任务时,普遍面临记忆退化问题:随着交互步数增加,早期关键信息被稀释,智能体容易遗忘历史约束、重要证据与失败教训。现有记忆方案大多聚焦记忆检索召回,缺少针对记忆表征本身的对比学习优化;简单直接套用通用MoCo动量对比会破坏智能体轨迹时序因果结构,造成负样本构造不合理。
本文提出Agent(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)MoCo动量对比记忆优化框架,面向长视界智能体轨迹做记忆表征学习。设计时序感知的正负样本采样策略,严格尊重智能体轨迹因果时序约束,规避跨时间步的因果泄露;构建双记忆编码器架构:在线编码器处理当前交互,动量编码器维护历史轨迹的动量表征,动量队列存储历史时序感知样本。在训练阶段,将动量对比损失附加到原始智能体训练损失之上,联合优化智能体策略与记忆表征。
在WebArena、OSWorld、ToolBench三套长视界智能体基准开展实验。Agent(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)MoCo相比基线方案,任务整体成功率提升4.4(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)7.6个百分点;超过SFT、ReAct、原生MoCo对比记忆、摘要记忆、向量检索记忆等多种基线。长序列子集(>30步)增益更加显著,提升可达9.3个百分点。消融实验验证时序感知采样策略、动量双编码器、动量队列各模块贡献。全部代码、轨迹数据集、复现脚本开源。
关键词
长视界智能体;智能体记忆;动量对比学习;Agent(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)MoCo;表征学习;轨迹时序约束;工具调用智能体
目录
- [引言](#1(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)引言)
- [相关工作](#2(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)相关工作)
- Agent(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)MoCo方法框架](#3(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)agent(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)moco方法框架)
- [3.1 问题形式化](#31(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)问题形式化)
- [3.2 时序感知正负样本采样策略](#32(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)时序感知正负样本采样策略)
- [3.3 双记忆编码器与动量队列](#33(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)双记忆编码器与动量队列)
- [3.4 联合损失函数](#34(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)联合损失函数)
- [实验设置](#4(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)实验设置)
- [实验结果](#5(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)实验结果)
- [5.1 主实验整体性能](#51(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)主实验整体性能)
- [5.2 长序列子集专项结果](#52(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)长序列子集专项结果)
- [5.3 消融实验](#53(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)消融实验)
- [讨论与局限性](#6(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)讨论与局限性)
- [结论](#7(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)结论)
- 附录简要说明
1 引言
长视界工具调用智能体需要完成几十至上百步的交互任务,例如网页复杂操作、多轮数据库查询、多工具链式调用。随着交互步数增长,早期关键证据、约束条件、历史失败经验会被后续大量观测稀释,出现记忆退化现象:智能体遗忘早期关键信息,重复犯历史错误、忽略任务约束,造成任务失败。
现有智能体记忆研究主要分为三类:
- 文本摘要记忆:对历史交互做文本摘要压缩;但摘要会丢失细粒度事实细节;
- 向量检索记忆:将历史步骤编码为向量,查询时做相似度检索;依赖表征质量,缺少专门针对智能体轨迹的表征优化;
- 对比学习记忆:直接复用通用MoCo动量对比,但通用MoCo随机采样负样本,会破坏智能体轨迹时序因果,出现因果泄露——把未来步骤当作当前步骤的负样本,违背智能体轨迹的时间因果关系,引入不合理训练信号。
通用MoCo不适合直接迁移至智能体轨迹:智能体轨迹具备强时序因果依赖,后续动作建立在前面观测基础之上,不能任意打乱时序做样本对构造。
本文提出Agent(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)MoCo动量对比记忆优化框架。
- 时序感知正负样本采样:严格遵守轨迹因果时序,同一条轨迹内,只能使用更早时间步作为负样本,禁止把未来时刻状态拿来构造样本,规避因果泄露;跨轨迹可以选取其它任务轨迹样本。
- 双记忆编码器架构:在线编码器编码当前交互记忆片段;动量编码器做动量更新,维护历史表征;动量队列存放时序感知采样得到的历史记忆表征。
- 动量对比损失和智能体原始训练损失联合优化,同时优化策略输出与记忆表征质量,不需要改动智能体推理时检索逻辑。
本文主要贡献
- 提出Agent(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)MoCo面向长视界智能体的动量对比记忆优化框架;设计时序感知采样策略,避免轨迹因果泄露,适配智能体交互轨迹时序约束。
- 双记忆编码器+动量队列架构;对比损失与原始智能体损失联合训练,同步优化策略与记忆表征。
- 在WebArena、OSWorld、ToolBench基准上实验,整体任务成功率提升4.4(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)7.6pp;大于30步的长序列子集增益最高可达9.3pp;消融验证各模块有效性。
- 开源全套代码、AgentMoCo(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)Traj轨迹数据集、训练与复现脚本。
2 相关工作
2.1 智能体记忆机制
- 显式文本记忆:摘要、压缩、结构化知识库,依靠文本保存历史,压缩会丢失细节;
- 向量记忆库:将每一步交互编码为向量,使用相似度检索召回历史;表征质量直接决定召回效果;
- 隐式记忆:前缀向量、LoRA等,将历史编码为隐向量,主模型冻结只训练编码器。
现有向量记忆大多只在推理阶段做检索,不在训练阶段对记忆表征做显式优化。
2.2 对比学习与MoCo
MoCo动量对比学习使用在线(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)动量双编码器、动量队列维护大量负样本,广泛用于CV、NLP表征预训练。
直接迁移到智能体轨迹存在致命缺陷:原始MoCo随机打乱采样,会将同一条轨迹未来时刻样本当作负样本,违背智能体轨迹因果顺序,造成因果泄露,产生错误训练信号。Agent(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)MoCo修改采样规则,增加时序因果约束。
2.3 长视界智能体训练
SFT监督微调、GRPO/ReAct强化学习,大多聚焦动作策略优化,对记忆表征本身优化较少;Agent(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)MoCo属于辅助损失范式,可以叠加在SFT、RL训练之上。
3 Agent(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)MoCo方法框架
3.1 问题形式化
智能体轨迹τ = { ( o 1 , a 1 ) , ( o 2 , a 2 ) , . . . , ( o T , a T ) } \tau=\{(o_1,a_1),(o_2,a_2),...,(o_T,a_T)\}τ={(o1,a1),(o2,a2),...,(oT,aT)},o t o_tot为观测,a t a_tat为动作。
记忆片段m t = [ o 1 , a 1 , . . . , o t , a t ] m_t = [o_1,a_1,...,o_t,a_t]mt=[o1,a1,...,ot,at],代表截止t tt步全部交互历史。记忆编码器E EE将m t m_tmt映射为向量表征z t = E ( m t ) ∈ R d \boldsymbol z_t = E(m_t)\in \mathbb R^dzt=E(mt)∈Rd。
训练目标:在原始智能体损失L a g e n t \mathcal L_{agent}Lagent基础上,增加时序感知动量对比损失L m o c o \mathcal L_{moco}Lmoco,联合优化。
3.2 时序感知正负样本采样策略
核心约束:对于同一条轨迹τ \tauτ,t tt时刻样本,不能取t ′ > t t' > tt′>t未来时间步作为正负样本,只允许取t ′ ≤ t t'\le tt′≤t的历史样本,防止因果泄露。
- 正样本:同一轨迹内,时间步t tt的记忆片段m t m_tmt,经过弱数据增强得到m ~ t \tilde m_tm~t作为正样本;数据增强:随机删减部分无关文本、段落重排(不破坏时序)。
- 负样本来源两类
- 轨迹内负样本:同一条轨迹,选取t ′ < t t' < tt′<t更早历史记忆片段;
- 跨轨迹负样本:从其它不同任务的轨迹采样任意记忆片段。
禁止:同轨迹未来时刻t ′ > t t'>tt′>t样本,绝对不能作为负样本。
3.3 双记忆编码器与动量队列
- 在线编码器KaTeX parse error: Got function '\(' with no arguments as subscript at position 3: E_\̲(̲\boldsymbol q\):输入当前记忆片段,输出查询表征KaTeX parse error: Can't use function '\(' in math mode at position 13: \boldsymbol \̲(̲\boldsymbol q\);参数会每一步梯度更新。
- 动量编码器KaTeX parse error: Got function '\(' with no arguments as subscript at position 3: E_\̲(̲\boldsymbol k\):输出键表征KaTeX parse error: Can't use function '\(' in math mode at position 13: \boldsymbol \̲(̲\boldsymbol k\);参数不直接梯度更新,采用动量滑动平均更新:
KaTeX parse error: Got function '\(' with no arguments as subscript at position 8: \theta_\̲(̲\boldsymbol k\)…
m mm为动量系数。 - 动量队列Queue:存储大量时序感知采样得到的历史键表征;队列先进先出,维持固定大小;队列内全部样本满足时序约束,不存在同轨迹未来泄露样本。
推理阶段:仅使用在线编码器KaTeX parse error: Got function '\(' with no arguments as subscript at position 3: E_\̲(̲\boldsymbol q\);动量编码器与队列只用于训练阶段损失计算,推理不引入额外开销。
3.4 联合损失函数
总损失为智能体原生损失加上动量对比辅助损失:
L t o t a l = L a g e n t + λ ⋅ L m o c o \mathcal L_{total} = \mathcal L_{agent} + \lambda \cdot \mathcal L_{moco}Ltotal=Lagent+λ⋅Lmoco
λ \lambdaλ:对比损失权重超参数。
动量对比InfoNCE损失:
KaTeX parse error: Can't use function '\(' in math mode at position 48: …xp(\boldsymbol \̲(̲\boldsymbol q\)…
KaTeX parse error: Can't use function '\(' in math mode at position 13: \boldsymbol \̲(̲\boldsymbol k\)…为正样本键表征;KaTeX parse error: Can't use function '\(' in math mode at position 13: \boldsymbol \̲(̲\boldsymbol k\)…为队列内负样本;τ \tauτ温度系数。
L a g e n t \mathcal L_{agent}Lagent可以是SFT交叉熵损失,也可以是GRPO等强化学习损失;Agent(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)MoCo可以作为插件式辅助损失叠加。推理阶段不改动原有智能体逻辑,记忆检索依旧使用向量相似度。
4 实验设置
数据集
训练轨迹来自WebArena、OSWorld、ToolBench;
测试集区分全部样本,以及长序列子集(轨迹步数>30步)。
AgentMoCo(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)Traj数据集:整理公开交互轨迹,提供处理好的记忆片段样本。
基座模型
Qwen3(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)8B(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)Instruct。
对比基线
- Vanilla(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)SFT:基础监督微调,无额外记忆优化;
- Summary(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)Mem:文本摘要记忆基线,每N步对历史做摘要;
- Vanilla(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)Retrieval(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)Mem:向量检索记忆,训练阶段无对比损失,推理做相似度召回;
- Vanilla(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)MoCo:原始通用MoCo,随机采样,允许取同轨迹未来样本(存在因果泄露);
- Agent(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)MoCo(本文):时序感知采样+双编码器+动量队列。
评测指标
- 整体任务成功率SR;
- 长序列子集(>30步)任务成功率;
- 记忆召回指标:top(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)(\boldsymbol k)检索召回率。
消融变体
- w/o Temporal(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)Sample:去掉时序约束,允许未来样本做负样本(等价Vanilla(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)MoCo);
- w/o Momentum(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)Encoder:去掉动量编码器,直接使用在线编码器做键;
- w/o Momentum(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)Queue:不使用队列,仅batch内负样本。
5 实验结果
5.1 主实验整体性能
| 方法 | WebArena | OSWorld | ToolBench | 平均提升(相对Vanilla(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)SFT) |
|---|---|---|---|---|
| Vanilla(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)SFT | 43.1% | 40.4% | 49.2% | (\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q) |
| Summary(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)Mem | 45.3% | 42.2% | 51.0% | +2.0pp |
| Vanilla(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)Retrieval(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)Mem | 46.0% | 43.5% | 52.3% | +3.1pp |
| Vanilla(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)MoCo(原始MoCo) | 45.7% | 42.9% | 51.8% | +2.6pp |
| Agent(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)MoCo | 50.7% | 47.1% | 55.4% | +5.9pp |
Agent(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)MoCo相比Vanilla(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)SFT平均提升5.9个百分点;单数据集提升4.4(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)7.6pp;
Vanilla(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)MoCo通用动量对比因为因果泄露,收益微弱,甚至低于普通检索记忆基线。
5.2 长序列子集专项结果(>30步)
| 方法 | WebArena长序列 | OSWorld长序列 | ToolBench长序列 |
|---|---|---|---|
| Vanilla(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)SFT | 29.4% | 27.2% | 34.1% |
| Summary(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)Mem | 31.5% | 28.8% | 36.2% |
| Vanilla(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)Retrieval(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)Mem | 33.1% | 30.4% | 37.5% |
| Vanilla(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)MoCo | 32.6% | 29.7% | 36.8% |
| Agent(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)MoCo | 38.7% | 36.5% | 43.4% |
在长视界>30步任务上,Agent(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)MoCo相对基线最高提升9.3个百分点;长序列场景增益远大于短序列。
5.3 消融实验(三套基准平均成功率)
| 配置 | 平均任务成功率 | 相对完整Agent(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)MoCo下降幅度 |
|---|---|---|
| 完整Agent(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)MoCo | 51.1% | (\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q) |
| w/o Temporal(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)Sample(无时序约束) | 47.2% | (\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)3.9pp |
| w/o Momentum(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)Encoder(去掉动量编码器) | 48.0% | (\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)3.1pp |
| w/o Momentum(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)Queue(仅batch负样本) | 48.6% | (\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)2.5pp |
消融结论:
- 时序感知采样是最大增益来源;取消时序约束,允许未来样本做负样本,性能大幅下滑,证实因果泄露会带来有害梯度信号;
- 动量编码器、动量队列均带来正向收益;队列提供更多负样本,提升对比学习表征质量。
6 讨论与局限性
局限性
- Agent(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)MoCo属于训练阶段辅助损失,推理阶段不会增加模型能力,只优化记忆表征向量质量;不能完全解决超长上下文窗口本身的上下文窗口硬件限制。
- 时序感知采样策略依赖轨迹时间戳;对于乱序、异步事件构成的智能体轨迹,采样策略需要进一步适配。
- 超参数λ \lambdaλ对比损失权重需要调优;权重过大,会压倒原始智能体训练损失,损害任务策略性能。
- 目前实验基于向量检索式记忆架构;迁移至隐式前缀记忆等其它记忆范式有待进一步验证。
启示
- 不能直接把CV/NLP通用对比学习方案直接迁移到智能体轨迹;智能体轨迹具备强时序因果约束,随机采样会造成因果泄露,引入错误训练信号。
- Agent(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)MoCo作为插件式辅助损失,可以叠加SFT、GRPO等多种训练范式,重点优化记忆表征,显著改善长视界任务表现;长序列任务收益尤其突出。
7 结论
本文提出Agent(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)MoCo,面向长视界工具调用智能体的动量对比记忆优化框架。设计时序感知正负样本采样,严格禁止同轨迹未来时间步作为样本,规避因果泄露;采用在线(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)动量双记忆编码器与时序感知动量队列;动量对比损失和智能体原始损失联合训练,优化记忆表征质量。
在WebArena、OSWorld、ToolBench开展实验,Agent(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)MoCo相比基线整体任务成功率提升4.4(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)7.6个百分点;在大于30步长序列子集增益最高达9.3个百分点。消融证实时序感知采样是最关键模块;直接套用原始MoCo会因为因果泄露,收益微弱。全套代码、AgentMoCo(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)Traj轨迹数据集、复现脚本开源。
附录简要说明
- 附录A:记忆片段构造、时序感知采样完整算法伪代码。
- 附录B:动量更新、InfoNCE损失完整超参数扫描(λ , τ , m \lambda,\tau,mλ,τ,m)。
- 附录C:各基线实现细节,摘要生成prompt、检索记忆参数。
- 附录D:完整细分实验数据表,不同轨迹长度分段统计。
- 附录E:训练脚本、数据集预处理流程,推理评测配置。