三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

OPD-Evolver: Cultivating Holistic Agent Evolver via On-Policy Distillation 论文笔记

OPD-Evolver: Cultivating Holistic Agent Evolver via On-Policy Distillation 论文笔记

LV-NUS Lab + 复旦 + 北大 + 字节的工作,目前挂在 Arxiv 26.06 上。当前的自进化 Agent 都把记忆当成自进化的定义,但存下经验 ≠ 学会怎么从经验里进化。本文提出 OPD-Evolver,一个慢-快协同进化框架:快环里 Agent 与四级记忆层级交互做 test-time 进化,慢环里用结果校准的记忆归因+ 特权后见通过 on-policy distillation 把「选、用、写、管」四种能力蒸馏进可部署策略本身

背景

什么定义了一个自进化 Agent?直觉答案是 Memory——保留过去轨迹、检索历史教训、复用积累技能,似乎就构成了 Agent 随时间变强的物质基础。这种直觉让记忆成了现代 Agentic 基座模型和 Agent 系统里不可或缺的组件,尤其在交互环境里:失败暴露隐藏约束、成功 rollout 暴露可复用策略、奖励把行为锚定在环境反馈上

但作者的核心论断很尖锐:记忆只是自进化的基底,而不是它的定义。尽管记忆系统、技能库、反思机制、自我改进流水线遍地开花,自进化这个概念本身仍然是含糊未定义的。很多 Agent 能保留经验、能把经验塞进 prompt,但能把经验真正转化成持续行为改进的却少得多。作者把一个合格的 agent evolver 拆成四种耦合能力:

  • ❶ 经验选择(experience selection):从一个不断增长且带噪的库里识别出有用记忆

  • ❷ 经验接地执行(experience-grounded execution):把选中的经验转化成有效的多轮动作

  • ❸ 经验写入(experience writing):从新轨迹与反馈里提炼可复用知识

  • ❹ 经验管理(experience management):随时间对记忆打分、整合、更新、退休

关键在于这四种能力彼此不是相互独立的,弱选择会放大检索噪声,弱执行让 Agent 永远依赖 prompt-time 指导,弱写入会污染未来记忆,弱管理导致长期退化。作者点出现有方法的两个缺陷:(1)任务奖励只对「执行」提供了相对直接的监督,却没为「记忆选择/写入/管理」提供监督信号(2)如何在一个策略里同时训练这些耦合能力而不让它们互相干扰,仍然没被认真研究。现有工作大多只优化进化流程的某一个小块(检索经验、使用经验、把经验蒸进参数、或者纯做记忆架构工程),所以能在某个特定场景里变强,却始终成不了 holistic evolver

方法

image

问题形式化

考虑一个终身 Agent,面对的是一串交互任务流而非单个孤立 query。第 \(t\) 轮,参数为 \(\theta\) 的 Agent 收到任务 \(x_t \sim D\),通过观察 \(o_{t,i}\) 与动作 \(a_{t,i}\) 与环境交互、拿到反馈 \(r_{t,i}\),得到 episode \(\tau_t = \{(o_{t,i}, a_{t,i}, r_{t,i})\}_{i=1}^{H_t}\),任务回报 \(R_t = \sum_i r_{t,i}\)

与用完就丢 \(\tau_t\) 的标准评测不同,本文的 Agent 维护一个演化中的可复用经验库 \(M_t\),未来行为取决于历史怎么被选、用、写、维护,先从库里检索出带噪候选集 \(C_t\)、再选出紧凑上下文 \(S_t\)

\[C_t = \mathrm{Ret}(x_t, M_t),\quad S_t = \mathrm{Sel}_\theta(x_t, C_t) \]

其中 \(\mathrm{Ret}\)非参数检索器\(\mathrm{Sel}_\theta\) 是 Agent 自己的选择行为,\(S_t \subseteq C_t\)。同一个 \(\pi_\theta\)\(S_t\) 执行,观察结果后再吐出经验更新 \(\Delta_t\)Agent 自己控制更新)。流式目标不仅要最大化任务表现,还要保住库的未来效用:

\[\max_\theta \liminf_{T\to\infty} \frac{1}{T}\sum_{t=1}^T \mathbb{E}[R_t + \lambda\, U(M_{t+1})] \]

\(U(M_{t+1})\) 是更新后库的下游可用性,\(\lambda\) 控制 Agent 对未来可进化性的重视程度。这个 \(\lambda U(M_{t+1})\) 项把攒记忆和攒对未来有用的记忆在目标函数层面就区分开了

快环(Fast Evolution Loop)

快环对每个任务在线跑,不改参数,职责是执行前把 \(M_t\) 压成小而可操作的上下文、执行后把新 episode 变回可复用经验

  • 四级层次记忆:作者把 \(M_t\) 组织成四个互补 tier(\(L = \{\text{traj}, \text{tip}, \text{skill}, \text{tool}\}\)

    • \(M^{traj}\) 保存 episodic 证据(忠实但冗长)

    • \(M^{tip}\) 存局部警告或启发式

    • \(M^{skill}\) 抽象可复用流程

    • \(M^{tool}\) 存可执行命令或代码模板(紧凑但需要足够证据才能蒸出来)

    分层的理由很实在:Agent 经验有不同的复用粒度,完整轨迹忠实但啰嗦,skill/tool 紧凑但必须从足够证据里蒸馏

  • 检索与选择:给定任务 \(x_t\) 和可选环境元数据 \(e_t\),组 query \(z_t = [x_t; e_t]\),按 embedding 相似度从每个 tier 取 top-\(K\)。这里做成高召回就是为了把潜在有用的记忆都捞上来,但也带进陈旧、冗余、任务错配的项。然后 selector(Agent 自己的选择行为)把 \(C_t\) 压成给 Agent 看的记忆上下文。紧凑上下文 \(c_t\)​ 就是外部记忆与执行策略之间的操作接口

  • 经验执行与写入:rollout 时 actor 以 \(c_t\) + 任务 + 交互历史为条件:\(a_{t,i} \sim \pi_\theta(\cdot \mid x_t, o_{t,\le i}, a_{t,<i}, c_t)\)。episode 结束后,同一个 Agent 决定哪些 tier 该更新、每个 tier 写几条:\(\Delta^l_t = \{m^l_{t,j}\}_{j=1}^{n^l_t}\),条数 \(n^l_t\) 由 Agent 自己定,所以快环能写进四个 tier 的任意子集而不必遵循固定 schema

  • 周期性库维护:除了逐任务写入,每 \(Q\) 个任务 Agent 会进入一次多轮交互,用 lookup / merge / delete 对库做维护。同时快环会 log 下检索候选、选中记忆、结果、新建记忆 id、维护动作。这些 log 对即时执行没用,但恰恰是慢环用来估记忆价值、蒸馏 evolver 的后见证据

慢环(Slow Evolution Loop)

快环让 Agent 攒经验,但不保证用得好。一个随手的 Agent 并不知道哪些记忆有帮助、怎么把执行接地在它们上面、什么值得成为记忆、什么时候更新库对未来有益。慢环通过把 Agent 自己的交互流变成监督来训练这四种耦合能力。而每个任务后唯一可信的外部信号只有环境反馈 \(R_t\),所以核心问题就是怎么把这个标量结果反传到选择、执行、写入、维护的决策上

  • 结果校准的记忆归因。对每条记忆 \(m\),只在它确实被检索到的任务上估其价值,这样比较是候选受控而非被无关任务混淆的。设 \(g(t)\) 是第 \(t\) 轮的任务组,定义 \(\Omega_g^-(m) = \{t: g(t)=g,\ m\in C_t\setminus S_t\}\)(被检出但没被选)和 \(\Omega_g^+(m) = \{t: g(t)=g,\ m\in S_t\}\)(被选中)。归因为

    \(\hat{A}(m) = \sum_g \rho_g(m)\big(\mathbb{E}_{t\in\Omega_g^+(m)}[R_t] - \mathbb{E}_{t\in\Omega_g^-(m)}[R_t]\big)\)被选中的 R 均值 - 被检索但没选的 R 均值

    其中 \(\rho_g(m) = |\Omega_g^+(m)|/(|\Omega_g^+(m)| + |\Omega_g^-(m)|)\) 根据数量进行可靠程度的加权,然后再转成记忆分数

    \(V(m) = \alpha_{l(m)}\,\gamma(m)\,\hat{A}(m),\quad \gamma(m) = 1 - \frac{1}{\sqrt{1 + N^+(m)}}\)$

    \(\alpha_{l(m)}\) 是 tier 先验,\(\gamma(m)\)置信因子(被选次数越多越自信)。这个校准把延迟环境反馈变成了稠密后见标签:高 \(V(m)\) 的记忆成为本该被选/用/存的证据,低价值的暴露出 evolver 该学会忽略的噪声

  • 统一的后见自蒸馏。这是全文最核心的设计,用校准后的流在单一 OPD 原则下训练同一个 evolver。设 \(K = \{\text{sel}, \text{act}, \text{write}, \text{maint}\}\),对每个生命周期决策 \(k\)学生只看公开输入 \(z^k\),而教师额外看到特权后见视图 \(h^k\)。二者的输入情况见公式 (1)

    四种能力各自看到不同的特权信息:❶ 选择看到每个检出候选的价值;❷ 执行把有价值的选中记忆内化,是让学生在没有记忆的条件下去解题\(S^+_t\) 是有价值的选中记忆、\(\tau^+_t\) 是同组的成功轨迹作为教师上下文);写入看到哪些产出的记忆后来真的变得有价值;❹ 维护看到校准诊断 \(D^{mem}_q\)(含价值、置信、使用统计 \(\nu(m)\)、冗余分 \(\kappa(m_i,m_j)\))来产 merge/delete 工具调用轨迹

    \[\begin{aligned} (z^{sel}_t, h^{sel}_t) &= \big(x_t, C_t\big),\ \{(m, V(m))\}_{m\in C_t} \\ (z^{act}_t, h^{act}_t) &= x_t,\ (S^+_t, \tau^+_t) \\ (z^{write}_t, h^{write}_t) &= (x_t, \tau_t, R_t, S_t),\ \{(\tilde m, V(\tilde m))\}_{\tilde m\in\Delta_t} \\ (z^{maint}_q, h^{maint}_q) &= (M_{qQ}, H_{qQ}, T),\ D^{mem}_q \end{aligned} \]

    对每个 \((z^k, h^k)\),学生先在部署条件下采一个 on-policy 输出 \(\hat y^k\)​,教师在同样的学生前缀上评估 token 级差异 \(\delta_{k,n} = D_{tok}\big(\mathrm{sg}[p^{\bar T}_{\theta,n}]\,\|\,p^S_{\theta,n}\big)\)(全词表 KL,教师那侧 stop-gradient)。统一的慢环目标就是对学生访问过的前缀求 token 级蒸馏损失:$$L_{slow}(\theta) = \sum_{k\in K} \mathbb{E}\Big[\frac{1}{L_k}\sum_{n=1}^{L_k} \delta_{k,n}\Big]$$

    要点在于 teacher 和 student 是同一个 evolver,只是教师被喂了部署时拿不到的 attribution 增强证据(候选记忆价值、轨迹片段、写入记忆的未来效用、库级诊断)。蒸馏之后只把面向学生的行为部署回快环,所以 Agent 在测试时无需特权反馈就能施展这些 evolver 能力

实验

训练数据:从 7,000 个交互 Agent 任务构造,AWM(Agent World Model,3000)+ nvidia/Nemotron-Terminal-Corpus(2000)+ EnvScaler(2000),全部与评测基准不相交。骨干用 QWEN3-4B-INSTRUCT-2507 和 QWEN3.5-9B**,检索用 QWEN3-EMBEDDING-0.6B,检索 50 个候选,\(Q=30\),特权教师上下文最多保 20 条记忆,监督最低分数 0.01

评测基准LifelongAgentBench(DB/OS)、MemoryArena(Math/Physics)、AMA-Bench(因果推断 CI / 状态更新 SU / 状态抽象 SA)、InterCode(Bash/CTF/SQL)、具身环境 MiniHack(Room/Maze/KeyRoom)

公平性设定:所有 memory-based 方法(含 OPD-Evolver)都从空库开始评测,只从评测流里累积记忆;任务后不给 ground-truth 也不给专家解,只有和所有方法一样的环境反馈;对于 traning-based 方法都使用 MiniHack 的训练集进行训练并在 MiniHack 和 InterCode 的测试集上面去比较

Baseline:memory-augmented(ExpeL、AWM、Cheatsheet、MemP、ReasoningBank、EvolveR、MemEvolve)+ training-based(SFT、GRPO、Skill0、MemRL、Complementary RL)

主要结果

image

  • 对比记忆系统 SOTA:在同骨干下,4B 和 9B 都在全部 10 个子集上超过所有记忆 baseline

  • 小模型挑战巨型模型:OPD-Evolver-9B 在 9/10 子集上超过 STEP-3.5-FLASH(196B),在 6/10 子集上超过 QWEN3.5-397B-A17B。这说明生命周期级进化能让一个紧凑 Agent 与远大于它的模型掰手腕,这条 framing 挺有冲击力

  • 对比 training-based 方法:在 6 个子集里赢 5 个。相比 GRPO,在 Maze、KeyRoom、Bash/CTF/SQL 都更好;相比 Complementary RL,在最难的 MiniHack 子集(Maze、KeyRoom)继续拉开;相比 Skill0 在 SQL 上高约 5.8%。作者的解读是 OPD-Evolver 学到的是超越 task-level reward fitting 的、更可迁移的选/用/写机制

消融实验

在 InterCode(Bash/CTF/SQL)上用 4B 消融五个组件:

  • 去掉 Memory Attribution(换成简单的频率校准分)→ 掉最多(均值 38.67% → 32.13%,三子集分别降 4.96/7.31/7.36),说明结果校准归因是整套的地基

  • 去掉 Slow Evolution(移除 OPD)同样致命(均值降到 33.10%),证明特权后见必须被蒸馏进可部署策略,光有快环没用模型还得学会怎么用经验

  • 去掉 Selection(退化成相似度取 top-5)→ SQL 45.86 → 42.04;去掉 Writing Distillation → CTF 34.00 → 29.00;去掉 Maintenance 也掉。校准归因、学习式选择、记忆写入、库维护必须联合训练

框架分析

  • 选择/写入蒸馏的效果:选中的记忆和写入的记忆的中位分都有所提升,说明它降低了低效检索噪声,而不只是把几个高分离群点往上挪;也说明 evolver 写的记忆不只是格式更好,而是更可靠地对下游有用

  • 经验内化的效果:把训练后的 OPD-Evolver 去掉外部记忆 \(M\)、仅用于执行,和原始骨干比每个箭头都朝「更高成功率 + 更少步数」移动(9B 在 Bash/CTF/SQL 上成功率提升约 3~7 点、轨迹最多缩短 2.5 步)。这直接证明 OPD-Evolver 把高价值记忆真正转化成了更直接高效的行为,而不只是推理时检索到更好的上下文

  • Case Study:LifelongAgentBench-OS 任务里,vanilla 模型选了宽泛的目录/配置记忆,OPD-Evolver 只留下直接支撑「建文件、设权限、按修改时间排序」的 modification-log skill 和 permission tip;MiniHack-Room 失败案例里,vanilla 只写「验证目标、加动作校验器」这类泛泛建议,而 OPD-Evolver 从失败轨迹里写出更因果的可复用 tip「Exploring adjacent is insufficient」,说明它学会了把失败转成面向未来的紧凑记忆

总结

OPD-Evolver 的核心贡献是把自进化 Agent从「能存经验」推进到「能把经验持续转化成自身进化能力」。先给合格 agent evolver 下了个明确定义(选/用/写/管四种耦合能力),再用一套慢-快框架把它落地——快环在线做 test-time 记忆交互,慢环用结果校准归因 + 特权后见做统一的 on-policy self-distillation,把四种能力一次性蒸进同一个策略

快环-慢环的双层设计很有巧思,而且 teacher 与 student 是同一个模型、只差特权上下文。不过有一个问题值得思考一下:慢环对特权后见的质量高度依赖,而这些后见标签本身是估出来的\(V(m)\) 依赖 \(\hat A(m)\) 的组内期望,而组内样本量 \(N^+(m)\) 在流式评测早期往往很小,\(\gamma(m)\) 虽然做了置信降权,但冷启动阶段的归因噪声怎么不污染蒸馏目标,正文没细谈。换句话说,教师的特权到底有多可信,取决于归因估计收没收敛

论文标题:OPD-Evolver: Cultivating Holistic Agent Evolver via On-Policy Distillation

机构:LV-NUS Lab、复旦大学(FDU)、北京大学(PKU)、字节跳动(Bytedance Inc.)

核心贡献者:Guibin Zhang, Xun Xu(共同一作);通讯:Xiaobin Hu, Shuicheng Yan

arXiv:2606.17628v1(2026.06)

关键词:Agent Evolver, Slow-Fast Co-Evolution, On-Policy Distillation (OPD)

← 返回列表