自演化 Agent 的边界与正解:CFOE 修复-泛化鸿沟 × Self-HPO 双读 精读
论文 1:Self-Evolving Agents Can Repair Failures but Struggle to Generalize from Them(arXiv:2610.22984) 链接:https://arxiv.org/abs/2610.22984 | 机构:哈尔滨工业大学(本部+深圳)+ 香港中文大学 | 时间:2026-10-16
论文 2:Self-Evolving Coding Agents via Harness-Policy Optimization(arXiv:2610.22791) 链接:https://arxiv.org/abs/2610.22791 | 代码:https://github.com/MSR-Orchard/Self-HPO | 机构:Microsoft Research + University of Virginia + CMU | 时间:2026-10-16
一、论文背景
1.1 自演化 Agent:一个被"经验时代"叙事推着走的方向
要理解这两篇论文,先得明白一个基础概念:自演化 Agent(Self-Evolving Agent)。
打个比方:LLM Agent 像一位"考完试就不再翻书"的从业者——训练结束那一刻,它的知识就定格了。而自演化 Agent 的目标是让它像在职医生一样:每看错一个病人,就多懂一种鉴别诊断;每做对一台手术,就多沉淀一套操作流程。区别在于,人脑的"经验沉淀"是自动发生的,而 Agent 的一切经验都必须显式地写进某个外部载体。
目前的 LLM Agent 有一个根本性痛点:模型权重一旦训练完成就冻结了,它在部署环境中遇到的每一个新任务、犯的每一个错,都不会让它"变聪明"。而 Silver 和 Sutton 在 2025 年提出的"经验时代(Era of Experience)“叙事预言:Agent 应该能像人一样,通过自己的交互经验持续变强——这就是自演化 Agent 的愿景。
自演化的实现路径有一个共同骨架:冻结的 backbone 模型 + 一个可增长的外部状态。外部状态可以是三种形态之一:
- 推理记忆(Memory):把交互中蒸馏出的"经验教训"存成文本条目,遇到新任务时检索注入上下文。类比:医生的个人笔记。
- 技能文档(Skill):维护一份自然语言写的"操作说明书”,不断修订。类比:科室的标准操作规程(SOP),边用边改。
- 运行时脚手架(Harness):控制 Agent 观察什么、动作怎么执行、什么时候终止的外部代码与提示词。类比:手术室里的器械护士与流程卡——不动医生的脑子,但决定医生每一步能看到什么、被提醒什么。
更新器(Updater)读取交互轨迹、修改外部状态,如此循环。听起来很美——但这里面藏着一个几乎没人认真检验过的假设:Agent 真的能从经验(尤其是失败经验)中学到可迁移的能力吗?
这个假设并非杞人忧天。现有自演化研究几乎都默认了某种"正向锚点"的存在:要么有成功轨迹可学(ExpeL 对比成败、SkillOpt 分 minibatch 反思),要么有验证器反馈可用(Reflexion 用任务反馈),要么本来就有预置的有用经验。可在真实的开放环境里,这些信号恰恰在"最需要适应"的时候最稀缺——一个全新领域的 Agent,起点就是反复失败、无人指路。这种极端条件下的自演化,才是对"自主进化"叙事的严格检验。
1.2 两篇论文的互补站位
- 论文 1(CFOE) 是一篇"泼冷水"的实证研究。它问的是:在没有任何成功轨迹、没有验证器反馈、从零开始的"冷启动纯失败"条件下,现有三大自演化范式到底行不行?答案是:能修复旧任务,但难以泛化到新任务。它划定了自演化的能力边界。
- 论文 2(Self-HPO) 是一篇"给方案"的方法研究。它不纠结纯失败冷启动这种极端设定,而是问一个工程问题:harness(脚手架)和 policy(策略权重)明明相互依赖,为什么大家只优化其中一个?它提出交替优化两者,并让策略自己给自己改脚手架。它给出了自演化的工程正解。
两篇论文同年同月发布(2026-10-16),一个诊断、一个开药,合读起来恰好构成对这个方向的完整认知。
二、论文定位和关联工作
2.1 论文 1(CFOE):自演化方向的"体检报告"
论文 1 定位为受控实证研究(empirical study),不是提出新方法。它对标的是 ReasoningBank(记忆演化,ICLR 2026)、SkillOpt(技能演化)、Evo-Harness(harness 演化,EMNLP 2026)三大代表框架,检验它们在一个此前没人系统隔离过的设定下的表现。
相关的失败学习工作很多:Reflexion 用任务反馈做反思、ExpeL 对比成败轨迹提炼规则、ERL 研究无结果反馈的失败启发式提取、Sentry 在无任务级奖励下检验复用。但这些工作要么不区分"修复旧任务"和"泛化到新任务",要么没有把"纯失败冷启动"单独隔离出来。CFOE 的差异化恰恰在于:同时分离学习信号(只有失败)与评测维度(源任务修复 vs held-out 泛化)。
2.2 论文 2(Self-HPO):harness-policy 联合优化的"自驱动版"
论文 2 定位为方法论文,处在 harness 优化与 policy 优化两条研究线的交汇处:
- Harness-only 线:Meta-Harness(外部强模型 Opus 做 harness 优化)、Self-Harness(冻结策略自任提案者)等,只改脚手架不动权重;
- Policy-only 线:RLVR / GRPO 类强化学习,固定 harness 训权重;
- 联合优化线(近期兴起):WHALE、Evo2、HASE 等。
Self-HPO 的差异化有两点(原文 Table 5 的对比轴):第一,P-step 训练出的 solver 自己成为下一轮 H-step 的 harness 提案者——WHALE 用冻结的外部提案者、Evo2 训练一个分离的提案者服务冻结 solver;第二,harness 搜索集随 RL 失败模式演化——WHALE/Evo2/HASE 都在固定任务集上搜索,而 Self-HPO 用上一轮 P-step 中从未被解出的题构成下一轮搜索集。HASE 虽然也训自提案策略,但把 harness 编辑放进 RL 动作空间,而非"搜索+RL 交替"。
两篇论文之间还有一个隐性呼应:CFOE 测的三大范式之一就是 Evo-Harness(harness 演化),而论文 2 的结论恰恰说明——harness 演化单打独斗确实不行(Self-Harness 第二轮 H-step 在 Multilingual 上从 55.0% 反跌到 54.3%),必须与 policy 训练交替耦合。这可以看作从方法侧对论文 1 发现的一种回应。
三、问题定义
3.1 论文 1:CFOE——冷启动纯失败演化
先解释几个关键概念:
- CFOE(Cold-Start Failure-Only Evolution,冷启动纯失败演化):Agent 从空的外部状态出发(没有任何先验记忆/技能/harness),在一个失败密集的在线任务流上顺序执行,只有失败轨迹可以用来更新外部状态,且验证器反馈(成功/失败标签、奖励分数、验证解释、标准答案、专家方案)对 Agent 和更新器全部隐藏。
- 失败密集任务流:对每个 backbone,预先用无经验的 ReAct agent 独立跑 3 次候选任务,只保留 3 次全失败的任务(排除基础设施错误)。这保证演化流里都是"真难"的题,而非碰运气能过的题。
- “Blind"的精确含义:控制器(实验程序)持有验证器判断、负责收集失败轨迹,但 Agent 与更新器都拿不到结果标签、奖励分、验证器解释、标准答案或专家方案;Agent 甚至不知道"只喂失败"这一选择本身的存在。Agent 保留的只有交互观察——动作结果、状态变化、执行报错——这是经验提炼仅有的本地证据。
用一个类比理解 CFOE 的严格性:这相当于把一个学徒扔进全是疑难杂症的诊室,不许看任何治愈病例,没人告诉他每个病人的最终结局(治好了还是没治好),只让他凭"我感觉这次没治好"的自我判断写诊疗笔记,然后看这些笔记能不能让他变成更好的医生。
形式化地,固定 backbone 策略 πθ、演化外部状态 St、更新器 U、验证器 V,对任务流 {xt}:
- St = St−1,若 yt = 1(成功了,状态不变)
- St = U(St−1, τt),若 yt = 0(失败了,才更新)
注意成功轨迹可能出现(用于统计修复率),但绝不能参与反思或更新。这就在"学习材料"维度上做到纯失败。
在此设定下,论文提出三个递进的研究问题:
- RQ1:纯失败演化到底学到了什么?能否泛化到未见任务?(§3)
- RQ2:是什么阻止失败经验变成可迁移能力?(§4)
- RQ3:放宽哪些学习条件能恢复有效迁移?(§5)
3.2 论文 2:自驱动的 harness-policy 交替优化
先解释两个基础概念:
- Harness(脚手架):Agent 的外部执行框架——决定模型观察到什么上下文、动作如何执行、收到什么反馈、何时终止。同样的模型配不同 harness,表现可以天差地别。
- Policy(策略):就是 LLM 本身的权重。policy 优化指通过 RL/SFT 改权重。
问题的核心观察是:harness 与 policy 相互咬合。为旧 checkpoint 调的 harness 不针对新 policy 的失败模式;固定 harness 下的 RL 只能学到该 harness 诱导出的轨迹。单向优化是次优的。
展开说这个"咬合”:harness 决定了 policy 在环境中的行为空间上限——一个会在提交前强制检查 diff 的脚手架,能保证模型"编辑了但没提交"的低级错误不再发生;反过来,policy 的能力决定了 harness 的调整方向——3B 激活的模型容易犯的错(如 API 签名臆造)与更大模型不同,脚手架的守卫应该对准前者的失败模式。两者单独优化都会碰到对方设定的天花板:只改 harness,模型权重没变,学到的行为全部依赖外部规则存在;只训 policy,可学到的轨迹分布被固定 harness 诱导的行为模式锁死。
形式化:给定任务 x、harness H、policy P,轨迹 τ ~ π_{H,P}(·|x),可执行验证器打分 y(x,τ) ∈ {0,1},目标是最大化训练集上的期望解决率 J(H,P)。Self-HPO 要在不依赖外部强模型的前提下交替优化 H 和 P——即"自驱动"。这里"自驱动"的严格含义是:搜索 harness 的提案者、执行任务的求解器、被 RL 更新的策略,三者是同一个(不断更新的)模型。
四、问题解法
4.1 论文 1 的"解法":一套严谨的实证协议
作为实证研究,论文 1 的方法就是实验设计本身:
(1)实验矩阵。3 个自演化框架(ReasoningBank / SkillOpt / Evo-Harness)× 10 个 backbone(Qwen3.5 系 4B/9B/27B/35B-A3B、Gemma-4 系 12B/31B/26B-A4B、DeepSeek-V4-Pro、GLM-5.1、GPT-5.6-Sol)× 4 个质量已验证环境(ALFWorld 家务具身、τ²-Bench-Verified 长程工具对话、WebArena-Verified 四站点网页、WebShop 网购)。
(2)双维度评测。每个 checkpoint 同时测两个东西:
- held-out TSR:在固定未见测试集上的成功率(泛化能力);
- 源任务修复率:每次有效更新后,冻结当时的外部状态,让失败源任务从初始状态重试一次,统计成功率(修复能力)。
(3)RQ2 的人工归因。对每次经验更新,追踪"轨迹解读→失败归因→经验固化"全链路,人工标注四类经验形成错误:M1 虚假成功归因、M2 错误与幻觉归因、M3 经验固化失真、M4 有害行为指导。另设"只保留人工验证正确的经验"的对照实验。
四类错误分别对应经验生产流水线的四个环节(这是理解其体系性的关键):
- M1 虚假成功归因(False Success):把导致失败的中间行为追认为成功实践——例如把"耗尽交互预算的穷举搜索"记录为"成功的搜索策略";
- M2 错误与幻觉归因(Misattribution):真正的失败原因被忽略,归因到无关因素或凭空引入的臆想解释——例如把错误类别页上的过滤器当成"已到达目标类别"的证据;
- M3 经验固化失真(Distortion):观察或推断在转成经验时丢失适用条件、获得不该有的确定性——例如"发新搜索前要返回"变成"在结果页永远必须返回";
- M4 有害行为指导(Harmful Guidance):错误判断变成与环境约束冲突的直接行动指令——例如"三次解释不通就放弃排查转人工",即使可执行的修复仍然存在。
注意四者是流水线上的递进关系:先判断局部行为成败(M1 错),或归因失败原因(M2 错);即便归因对了,固化时还可能失真(M3);失真的规则一旦被下游执行,就变成毒指导(M4)。一次更新可以同时命中多类错误。三名高学历标注员按此协议标注,记录每个实例命中的全部模式。
(4)RQ3 的条件放宽。三条轴:学习材料(Fail / Success / Mix)、验证器反馈(Blind / Feedback)、反思时额外交互(Resume,10 轮交互 + 1 轮总结)。
4.2 论文 2 的解法:Self-HPO 交替优化框架
Self-HPO 的算法结构(原文 Algorithm 1):
H-step(harness 搜索):
- 冻结当前策略 Pt,让 (Ht, Pt) 在搜索集 St 上生成轨迹;
- Pt 身兼两职——既是任务求解器,也是 harness 提案者:它检查失败轨迹,提出对提示词或可执行运行时逻辑的修订(候选 harness 是 Python 子类 + 提示词,可改运行时逻辑/提交流程);
- 每轮搜索 K=6 个候选,每个候选从当前最优 harness 出发修订,利用所有已评估 harness 的累积经验;同一搜索集上择优,得分最高的成为 Ht+1。
P-step(策略训练):
- 冻结 Ht+1,在其上用 RL 训练 Pt → Pt+1:GRPO + BAR(Balanced Adaptive Rollout,自适应抽取额外轨迹构造奖励平衡组,缓解稀疏奖励下零方差组问题);
- 训练中从未被解出的题构成下一轮搜索集 St+1。
循环与停止:更新后的 Pt+1 成为下一轮 H-step 的提案者;当 hard-task 集在轮间稳定时停止。实验中跑了 2 轮。
两个关键设计值得强调:
- 自提案者(self-proposer):不需要外部强模型。训练出的 solver 自己分析自己的失败、改自己的脚手架。
- 演化搜索集:harness 搜索不是对着初始任务集反复优化,而是始终对准"当前策略最搞不定的题"。
演化出的 harness 长什么样(这是最直观的部分)。第二个 H-step 选出的 harness 只 override 了种子 agent 的 step() 方法,加了四个针对性检查:
- 预算阀:步数/时间快耗尽且尚未提交时,注入一次提示"停止探索、基于已知信息做最小修改并立即提交";
- 空 patch 守卫:提交为空时拦下(一次性),提示用
git add -N把新建文件纳入 diff——很多"改了但没提交成"的失败由此消灭; - 首次提交合同 grounding:第一次通过空守卫的提交被暂扣一次,提示对照仓库现有测试检查 API 名/签名/错误形状是否与代码库约定一致(防止"能 apply 但实现了错误契约");
- git diff 兜底:最终提交无法干净 apply 时,改用沙箱自己的
git add -N && git diff作为提交。
每个检查都有可在 Agent 自身状态中检测的触发条件和具体动作,且每任务最多触发一次——这是提案提示词中硬性约束的(“机制必须自己运行时计算信号,禁止注入参考补丁或任务特定事实”)。
五、评估指标与实验证据
5.1 论文 1 的证据链
证据一:修复-泛化鸿沟稳健存在(RQ1)。
- ALFWorld 上,三框架的源任务修复率 6.8%–24.1%(如 ReasoningBank 下 Qwen3.5 系列 6.8–16.8%,Evo-Harness 下 7.3–14.5%;SkillOpt 下最高,Q27 达 24.1%),但对应 held-out TSR 曲线持平甚至下降。τ²-Bench 上修复率 6.9%–33.3%(SkillOpt 下 Q27 高达 33.3%),held-out 依旧无持续提升。
- 800 任务长程实验:结论不变。Q27 + Evo-Harness 的 held-out 随经验积累反而进一步下降;Q4 + SkillOpt 的 held-out 走平。
- WebArena 上 Qwen3.5-4B 从 25.93% 跌到 7.41%(Reddit 站);WebShop 上 GPT-5.6-Sol + Evo-Harness 从 31.06% 跌到 23.79%。
证据二:为什么——两个瓶颈(RQ2)。
- 诊断瓶颈:四类经验形成错误的分布(Qwen3.5-27B,占被审更新比例,可多重计数)——Memory 范式下 ALFWorld:M1 41.3% / M2 46.5% / M3 32.6% / M4 35.5%;τ² 上 M2 高达 53.2%。GPT-5.6-Sol 的 Harness 范式错误率整体更低(19.5%–31.0%),说明更强模型与更结构化的演化载体能缓解但消除不了问题。
- 迁移瓶颈:这是更狠的一刀。即使人工只保留"验证正确"的经验,5 组配置中 4 组的最终 held-out 分数仍 ≤ 无经验基线——源任务修复率确实提高了,但正确经验依然绑死在源轨迹的具体步骤与条件上,换任务就用不上。
这里值得展开 M1–M4 的四个典型案例(论文附录 Tables 3–6),因为它们是全文最有"画面感"的证据:
- M1(虚假成功归因):任务"在台灯下看雕像"。Agent 用 20 步翻遍 10 个抽屉(全空)、在第一个架子上就找到了雕像,却不去做"拿雕像→去台灯下→开灯"的核心动作,耗尽步数失败。反思后生成的记忆竟然是:“按数字顺序穷举所有容器、做完一类再换下一类,是被验证成功的搜索策略”——把浪费预算的行为追认成了成功实践。
- M2(错误归因):任务"打开 Cabinets, Racks & Shelves 分类页"。Agent 进的是 Home & Kitchen > Storage > Racks, Shelves & Drawers(名字相似但父类路径完全不同),还煞有介事地用面包屑与过滤器"确认"了自己到了正确的页。生成的经验是"用面包屑和过滤器核实当前位置"——方法本身没错,但它恰恰把"我在错误的页面上自我感觉良好"这个决定性失误洗白成了证据。
- M3(固化失真):WebShop 环境规则是"发起新搜索前必须先点返回"。Agent 违规吃到 Invalid action! 后正确总结出这条条件规则。但固化成经验时条件被删掉,变成了"只要在结果页,动作就必须是返回"——把"某个动作的前置条件"扩大成"所有动作的普遍限制",从此这个 Agent 在结果页连商品都不点了。
- M4(有害指导):某次失败后固化的规则是"向用户解释三次仍未被理解就转人工"。下游任务中,用户明确请求一步步指导,Agent 本已规划好直接指导路径,却因记起这条规则提前转人工——留下 6 个未完成的必要动作。同一条规则在第二个下游任务中再次触发提前放弃。错误经验不是中性的噪音,而是会主动改写行为的毒药。
证据三:什么才管用(RQ3)。
- **Success(只用成功轨迹学习)**的 held-out 提升显著大于 Fail+Blind;Mix 居中。这是整篇论文最强的对照证据。
- **Feedback(暴露验证器反馈)与 Resume(反思时 10 轮交互诊断)**相对 Fail+Blind 有改善,但幅度有限;Resume 预算从 5 轮加到 10 轮、20 轮,增益递增但 modest(部分配置 5 轮与 10 轮最终分数相同)。
实验设计为何能证明论点:三层递进——第一层用"源任务修复 vs held-out 泛化"的双维度拆分,把"学到了"这个模糊概念分解成可分别测量的两种能力;第二层用人工标注把"学错了"和"学对了但用不上"分开(四类错误 + 只留正确经验的对照),精确定位鸿沟的两个来源;第三层用受控放宽(材料/反馈/交互三轴各自独立变化),把"缺什么"从相关性推断变成归因性证据。特别注意 held-out 评测时冻结外部状态、禁用继续演化,排除了"评测期偷学"的混淆。
5.2 论文 2 的证据链
主结果(SWE-Bench 三件套,avg@3):
| 设定 | 方法 | Verified | Multi | Pro | 平均 |
|---|---|---|---|---|---|
| 基线 | Base | 61.0 | 54.2 | 58.3 | 57.8 |
| 自驱动 | RLVR(policy-only) | 67.5 | 56.3 | 61.8 | 61.9 |
| 自驱动 | Self-Harness(harness-only) | 65.2 | 54.3 | 60.7 | 60.1 |
| 自驱动 | Self-HPO | 69.5 | 59.7 | 65.2 | 64.8 |
| 外部模型 | SFT(Opus 蒸馏) | 65.0 | 49.6 | 49.1 | 54.6 |
| 外部模型 | Meta-Harness | 69.1 | 56.5 | 64.8 | 63.5 |
| 外部模型 | HPO(Opus 提案) | 71.6 | 61.4 | 66.0 | 66.3 |
关键读数:
- 自驱动设定下,Self-HPO 比 RLVR 平均 +2.9、比 Self-Harness 平均 +4.7;Verified 上 69.5 vs 67.5 vs 65.2。
- OOD 泛化:训练只用 Python 项目任务,增益迁移到 9 种非 Python 语言的 Multilingual(+5.5 over Base)与更广的 Pro(+6.9)。Self-Harness 在 Multi 上只比 Base 高 0.1,而 Self-HPO 高 5.5——说明 harness-only 的增益难以出域,联合优化可以。
- 交替的必要性:共享第一个 H-step 后分道扬镳,Self-Harness 第二轮 H-step 在 Multi 上从 55.0 反跌到 54.3%,而 Self-HPO 的第二个 H-step 继续改善更新后的 policy——单向 harness 搜索会失焦。
- 蒸馏对比:Meta-Harness 比 SFT 平均高 8.9 分,且 SFT 在两个 OOD 上低于 Base;用 harness 优化承载外部知识优于轨迹蒸馏。
消融(Verified,以 HPO 71.6 为基准):
- P-step 换 SFT:67.2(−4.4);换 RFT:70.5(−1.1)→ RL 是必要的 policy 更新方式;
- 固定搜索集(不用 hard-task 演化):70.1(−1.5)→ 搜索集随失败演化有价值;
- self-proposer 换 Opus 提案:69.5(−2.1)→ 外部模型有帮助但非必需。
交叉评估与超加性:3×3 交叉矩阵中,H2 配 P0 = 64.5(harness 单独贡献 +3.5),H0 配 P2 = 64.4(policy 单独贡献 +3.4),H2+P2 = 69.5——联合增益 8.5 > 单独增益之和 6.9,超加性 +1.6。两组件各自保留增益、组合有协同。
能力前沿:pass@1 在 Medium/Easy 任务上 +17.2/+12.9(可靠性),Hard 上 +6.1,pass@8 从 80.0 到 84.8(前沿扩张);Resolved 组 pass@1 微降 2.2(非均匀提升)。
训练信号:最终 P-step 的零成功组比例降至 6.5%(RLVR 后 50 轮维持在 11–17%)——优化后的 harness 让 RL 更容易采到有奖励对比的组。
前沿模型坐标:在 SWE-Bench Verified 榜单上,Self-HPO 的 69.5% 让 35B/3B 激活的 Qwen3.5 超过了 DeepSeek-V3.2(70.0% 之下的一位是 69.6% 的 Gemini 3 Pro,紧邻同分)等更大规模的前沿模型(Gemini 3 Flash 75.8% 为榜首区间);HPO 的 71.6% 接近 GPT-5.2(72.8%)。一个 3B 激活参数的模型逼近万亿级模型的同任务表现,这是"脚手架+训练"杠杆的直观展示。
实验设计为何能证明论点:核心是控制变量的完整性——Self-Harness 与 Self-HPO 共享第一个 H-step、同等搜索预算(K=6),唯一差异是是否接着做 P-step;交叉评估矩阵把"增益归谁"从黑盒拆成可加和分解;消融把三个设计点(RL / 演化搜索集 / self-proposer)逐一隔离。OOD 用非 Python 语言基准测,且与 SFT 的 OOD 崩塌形成三角对照,共同支撑"联合优化产生可迁移能力"的结论。
六、效果优势的根源解释
这一部分要求建立"方法差异→机制变化→指标提升"的完整因果链。
6.1 论文 1:鸿沟为什么必然出现
因果链一:失败证据的信息缺陷 → 诊断瓶颈 → held-out 无提升甚至下降。
失败轨迹只告诉 Agent"哪里错了",不包含"怎样可靠地工作"的行为证据。CFOE 下 Agent 没有验证器反馈,只能靠自由反思来推断失败原因——于是产生系统性错误(方法差异:无外部信号 + 纯失败材料)。机制上,四类错误各有成因:M1(把浪费预算的穷举搜索当成"成功策略"记录下来)源于 Agent 无法区分"路径中偶然出现的局部成功"与"导致最终失败的行为";M2(把错误类别页的过滤器当成"已到达目标类别"的证据)源于反思只看表面线索、不做实体级核对;M3(“发新搜索前要返回"被固化成"在结果页永远必须返回”)源于固化时丢失适用条件;M4(“三次解释不通就转人工"这类停止规则)源于单次失败被过度泛化为普适规则。这些貌似合理但无依据的解释一旦固化为经验(机制变化),就会被携带到后续任务上,与环境约束直接冲突——WebArena 上 Q4 从 25.93% 跌到 7.41% 就是毒经验的直接后果(指标体现)。
因果链二:经验的源任务绑定 → 迁移瓶颈 → 即便正确也难泛化。
人工验证正确的经验依然在 4/5 配置上无法提升 held-out。机制解释是:从单一失败轨迹提炼的经验天然绑定该轨迹的具体步骤与条件(“在这个页面要点这个按钮”),缺乏跨任务的抽象层。成功轨迹则不同——它展示的是"动作如何组合成完整流程"的正面模板,天然具有程序性泛化基础。这就是 RQ3 中 Success 条件迁移增益远超 Feedback/Resume 的根本原因:验证器反馈与额外交互都在改善"失败理解”,但都补不上"正确行为的完整示范"这一信息缺口。
一句话总结根源:失败学习需要两次跳跃——先正确诊断(多数模型跳不过去),再把诊断抽象成可迁移知识(连正确诊断都绑死源任务)。成功学习只需要一次模仿匹配。
6.2 论文 2:超加性从哪里来
因果链一:交替优化 vs 单向优化的机制差异 → 失焦 vs 对焦 → 分数分化。
单向 harness 优化的死穴:为旧 checkpoint 调的 harness 不针对新 policy 的失败模式。Self-Harness 第二轮 H-step 还在为 P0 的失败模式调脚手架,而 P0 的失败模式对 P0’(隐含的分布变化)已不再是主要瓶颈,于是在 Multi 上不升反降(55.0→54.3)。单向 policy 优化(RLVR)的死穴:固定 harness 诱导出的轨迹分布限制了 RL 能学到的行为空间。Self-HPO 的交替结构让每轮 H-step 都对准刚训完的 policy 的 hard-task 分布(机制变化),harness 的四个守卫(预算阀/空 patch 守卫/合同 grounding/diff 兜底)直接消灭"编辑了但没提交成 patch"这一整类失败——案例 sphinx-9658 中,同一 policy P2 在种子 harness 下交了一份散文式总结(无代码变更、判负),在演化 harness 下被空 patch 守卫拦下、补交有效 patch 判胜。这类"守卫型"增益是 RL 很难从内部学到的(RL 要学会"提交前先检查 diff"需要海量轨迹试错),而 harness 一行拦截代码就实现了外部强制(指标体现:Verified +2.0 over RLVR)。
因果链二:演化搜索集 → harness 搜索始终对准当前失败模式 → 消融 −1.5 与 OOD +5.5。
固定搜索集的消融掉 1.5 分,机制在于:早期 policy 的失败(如不熟悉沙箱流程)在后期已被 RL 解决,继续对着旧失败调 harness 是浪费搜索预算;演化搜索集让 K=6 个候选的评估都在"当前最难的题"上进行,信噪比更高。OOD 上 Self-Harness 几乎无增益(Multi +0.1)而 Self-HPO +5.5 的机制解释:为特定失败模式调的 harness 细节容易过拟合训练分布,但 P-step 把 harness 诱导出的良好行为内化进权重,权重的泛化能力远强于脚手架规则——harness 负责暴露行为、policy 负责沉淀能力,这就是超加性(8.5 > 3.5+3.4)的来源:H 在 P 的能力边界上开工,P 把 H 的脚手架收益变成肌肉记忆。
因果链三:self-proposer 的可行性根基。
Self-HPO 只比 HPO(Opus 提案)低 2.1 分。为什么自己给自己改 harness 可行?因为 harness 优化的难点不是"想出聪明点子",而是准确诊断自己失败在哪——policy 刚在搜索集上跑完海量轨迹,它对自己的失败分布有第一手证据(proposer 提示词里注入了 coverage gap / precision gap / submission loss 等诊断统计),这比外部模型的先验猜测更接地。同时交叉评估显示 H2 单独就有 +3.5,说明自提案质量足以越过"有用阈值"。
两篇论文的根源在深层的连通:CFOE 说纯失败反思产不出可迁移能力(诊断瓶颈+迁移瓶颈);Self-HPO 的 H-step 本质也是"分析失败轨迹提改进",为什么它行?三个差别:其一,它有可执行验证器在搜索集上做择优门控——六个候选中只有真的提分的 harness 被保留,错误归因的产物会在评估时被过滤(类比 CFOE 中 SkillOpt 的验证门控使其波动最小);其二,它改的是可执行代码而非自然语言经验——守卫逻辑的触发条件是确定性的状态检查,不存在 M3 式"固化失真";其三,失败分析的产物不直接承担泛化职责——泛化由 P-step 的 RL 在成功轨迹(BAR 保证组内 25–75% 成功率)上完成。Self-HPO 把"失败"只用于定位问题、把"学习"交给有正例的 RL、把"择优"交给验证器,恰好绕开了 CFOE 揭示的两个瓶颈。
还可以再加一层量化对照来体会"鸿沟有多大":CFOE 中最有效的放宽(Success 条件)能带来持续可见的 held-out 上扬,而 Feedback/Resume 只是"有限改善";Self-HPO 的 P-step 本质上就是一个工业化的"从(部分)成功轨迹学习"的机器(BAR 主动构造含成功轨迹的奖励平衡组,零成功组被压到 6.5%)。换句话说,Self-HPO 的 RL 管线在机制上就保证了 CFOE 所指出的那个最强学习信号——成功示范——持续存在且浓度可控。这不是巧合,而是两篇论文在"什么信号才能产生可迁移能力"这一命题上的殊途同归。
七、必要知识反推
读透这两篇论文,需要(或可以反向巩固)以下知识模块:
(1)LLM Agent 的解剖学。什么是 harness / scaffold:ReAct 循环、工具调用接口、提交命令、上下文组装规则。SWE-bench 系列的评测协议:issue → patch → 测试通过判胜。为什么"编辑了文件但 patch 为空"会判负(git diff 不含未跟踪新文件)。
(2)自演化的三范式。记忆演化(ReasoningBank:蒸馏推理模式入库、检索注入)、技能演化(SkillOpt:自然语言技能文档迭代修订 + 验证门控)、harness 演化(Evo-Harness:上下文到脚手架的技能编译)。三者都是"冻结权重 + 演化外部状态"。
(3)Agentic RL 基础。GRPO 的组内相对优势:同一任务多条轨迹的奖励归一化,零成功/零失败组无梯度信号(这解释了 BAR 与零成功组指标的意义)。outcome reward 的稀疏性问题。SFT/RFT/RL 三种权重更新方式的差异(消融中 −4.4/−1.1/0 的排序)。
(4)实验方法论。held-out 与源任务修复的区分;流式在线学习 vs 离线 epoch;受控放宽实验的归因逻辑;人工标注协议(多重计数错误类别);交叉评估矩阵与增益分解(超加性分析);配对 bootstrap 置信区间。
(5)评测环境图谱。ALFWorld(TextWorld 接口的具身家务)、τ²-Bench(双控对话工具使用)、WebArena(自托管真实网站)、WebShop(百万商品电商模拟);“Verified"版本为何重要(排除任务本身不可解的混淆——CFOE 选它们正是为了保证失败归因于能力而非任务缺陷)。SWE-Bench 家族:Verified(500 题人工验证)、Multilingual(300 题九种非 Python 语言)、Pro(642 题更广工程任务)、rebench(自动采集的去污染训练任务源)。
(6)失败学习与自反思的经典谱系。Reflexion(Shinn et al., 2023)——语言化强化学习的开创者;ExpeL——成败对比提炼跨任务规则;AutoManual/AutoGuide——从轨迹生成环境手册与上下文指南;Voyager——可执行技能库的开山之作;ACE——增量上下文工程组织策略 playbook。论文 2 一侧的谱系:GRPO(DeepSeekMath)、Meta-Harness、Self-Harness、WHALE、Evo2、HASE——理解 Self-HPO 在"提案者是否演化/搜索集是否演化"二维表中的独特格子,需要这批坐标点。
八、通用性灵感
最后聊聊这两篇研究对更广场景的启发。
(1)“从失败中学习"需要重新审视。 教育与自我改进系统里,“复盘失败"被当成默认美德。CFOE 的数据说:没有正确示范与外部校验的失败复盘,产物的大概率是"貌似合理的错误理论”。这对人类学习同样成立——只复盘失败的人容易形成归因偏差,看过高手完整流程(成功轨迹)的模仿学习才是迁移的主力。设计任何自改进系统(包括个人的复盘流程)时,先问三个问题:诊断有没有校验?经验有没有适用条件?有没有正例可模仿?
(2)外部状态与内部能力的分工哲学。 Self-HPO 的隐喻可以迁移到组织管理:harness 是流程/制度/工具(外部脚手架),policy 是员工能力(内部权重)。为旧团队设计的流程不匹配新人员构成(单向 harness 优化的失焦);只培训人员不改流程,能力被流程锁死(单向 policy 优化的天花板)。交替优化——先按当前人员短板改流程、再在 新流程下培训、再按新短板改流程——且每轮改进都要用硬指标择优(验证器门控),这才是可复制的进步机制。超加性的来源值得记住:外部结构负责暴露行为,内部能力负责沉淀行为。
(3)搜索集演化 = 资源对准当前最大瓶颈。 Self-HPO 的 hard-task 搜索集设计是个通用的资源分配模式:把有限的优化预算(K=6 个候选)全部花在"当前系统最搞不定的问题"上,而不是平均撒网或对着已经解决的问题反复打磨。个人成长同理:刻意练习应始终对准"刚好做不出"的区域,而非舒适区。
(4)冷启动场景的现实主义。 CFOE 的设定(空状态、纯失败、无反馈)恰恰是很多真实系统的初始条件——新 Agent 进新环境、新人入新行、创业公司进新市场。这篇论文的警示是:不要指望纯试错能自发产生可迁移能力;要么想办法获取正例(成功轨迹是最强的学习材料),要么引入外部校验(验证器反馈次之),要么接受"只能修复同类问题"的局部性。Self-HPO 则示范了如何用"可执行验证 + 择优门控"把弱信号(失败分析)变成可靠的改进通道。
(5)评估要测"你想声称的能力”,不是"容易测的数字”。 CFOE 把"学到了"拆成修复与泛化两个维度后,才发现大多数自演化论文报告的源任务提升掩盖了泛化缺失。任何自适应系统的评测都该问:提升是记住了解过的题,还是变强了能解没见过的题?
(6)工程正解的形态:交替而非融合。 HASE 把 harness 编辑塞进 RL 动作空间的融合式设计不如 Self-HPO 的交替式(搜索一次冻结、训练一次冻结)。这个模式在系统设计里很常见:两个耦合子系统联合优化时,“分相位交替 + 每相位内冻结另一侧"往往比"一锅炖"更稳定、更可归因。
合读一句话总结:CFOE 证明了"纯失败冷启动演化"存在修复-泛化鸿沟(诊断瓶颈 + 迁移瓶颈,成功轨迹才是可迁移能力的关键载体);Self-HPO 证明了绕开鸿沟的工程路径(验证器门控的 harness 搜索 × RL 策略内化 × 演化搜索集,三者交替耦合产生超加性)。前者划定边界,后者给出正解——自演化的未来不在于更炫的失败反思,而在于让失败分析、正例学习与外部校验各司其职。