协同进化把两个原本分离的循环接起来
自我进化智能体无需人工干预就能改进语言模型系统,论文把已有做法分成两条路线。权重更新路线让模型生成解答,借助任务反馈保留有用的输出,再用这些输出训练模型。框架路线则改写那段可执行程序,它决定智能体如何使用提示、工具、上下文和执行反馈。论文的主张是:分开走这两条路线会漏掉一种双向依赖——模型能力决定它提出哪些框架修改、如何解读执行反馈,而每一次被评估的修改又揭示哪些改动有用、某次修改为何失败、不同改进之间如何相互影响。
Evo 2 把这种依赖本身变成机制。更好的进化者能造出更好的框架,而这些框架产生的修改与结果又训练出更好的进化者。任务执行器,也就是真正在每个候选框架内运行的模型,在协同进化过程中保持固定,因此候选框架测得的性能反映的是框架改动,而不是执行器变化。正是这一设计让作者能把分数差异归因于框架修改。
同一策略既写修改也做诊断
框架一侧以树搜索的方式在框架变体上进行。每个节点保存一个框架及其任务评估记录,每条边记录对其父节点所做的修改。每一轮中,系统采样一个父框架,应用一次 Proposer 修改,并评估候选框架。随后 Reflector 读取候选框架源码、相对父框架的差异、任务性能变化,以及相关成功与失败案例的执行轨迹,然后在三种动作中选择一种:给出具体指令进行 revise,通过 crossover 引入另一分支的策略,或 keep 候选框架不再改动。
Proposer 有两种模式,训练的是不同能力。在 Type A 中,它接收父框架及其测得的性能,自行决定如何修改,从而培养独立发现改进的能力。在 Type B 中,它接收 Reflector 给出的明确指令,必须把该反馈转化为可运行的代码。两个角色由同一套模型参数在不同角色提示下实现,因此提出修改和评判修改由同一个策略学习,而不是两个独立智能体。
crossover 搜索针对的是不同分支可能发现互补改进这一情况。系统维护一个策略库,其中的策略从已评估的框架中提取,每条策略描述一个机制、其观察到的效果,以及它是否已存在于当前候选框架中。Reflector 可以挑选一条针对执行中暴露的弱点的供体策略,由 Type B Proposer 把它适配到接收方的源码中。合并后的框架随后会被评估,因此只有整合确实有效时,引入的策略才会被保留。
EvoTIDE 把失败的轨迹回收为训练数据
EvoTIDE 把搜索过程转化为共享策略的训练数据。每个“提出—评估—反思—修改”循环会产生一条自主 Proposer 轨迹、一条 Reflector 轨迹,以及在请求修改时的一条受指令 Proposer 轨迹。该流程先收集初始数据集并做监督微调,然后一边从不断演化的树中继续收集经验,一边用 group relative policy optimization(GRPO)训练两个角色。GRPO 是一种强化学习方法,它把针对同一提示的一组回答与组内平均奖励作比较。
两种回收流程之所以重要,是因为一次 rollout 可能有用,却没能产出可执行的修改。edit extraction 处理的是 rollout 结束时没有显式编辑动作的情况:它在记录的推理和对话消息中搜索具体的文件修改,并转换成要求的动作格式。prefix continuation 处理的是多次修改中后续某次无效的情况:在最后一次成功应用的修改之后截断 rollout,恢复对应的中间框架,再从该前缀继续生成。回收得到的提案仍要通过与其他候选相同的应用、启动和任务评估检查,才能进入训练数据。
训练在两个角色之间交替进行。每个优化步骤使用一个 Proposer 组和一个 Reflector 组,优势按各自提示分别计算;两次更新都改动当前参数,而对侧调用由一份冻结快照提供。一轮结束后刷新快照并收集新案例。作者还平衡了模式:Type A 与 Type B 的 Proposer 提示交替出现,并且一半的 Reflector 输入在采样时使用空策略集,使模型在缺少供体信息时仍能保留有用的诊断。
三个编程基准上均取得提升
主实验使用以 FP8 部署、采用贪心解码的 Qwen3.8-27B 作为固定任务执行器,并用同一模型作为进化者:基线使用未训练的基础模型,Evo 2 使用经 EvoTIDE 训练的模型。基线是四个自我进化框架 SICA、DGM、HGM 和 GEA,各自用未训练模型作为进化者并遵循自己的选择规则。报告的数字是各方法在该基准上进化出的最佳框架的留出集性能。
在 Polyglot 上,Evo 2 在三次评估运行中达到 82.1% pass@1,最强基线 GEA 为 62.6%。在 SWE-bench Verified 上,它解决 48.3% 的留出实例,HGM 为 41.0%。在 LiveCodeBench 上,它达到 58.0% pass@1,四个基线在 39.0% 至 56.0% 之间。这是三个不同任务集上的三种不同指标,因此有意义的比较是在每一列内部,而不是一个平均后的整体提升。
进化出的框架无需再进化即可迁移
迁移测试取每种方法在一个编程基准上进化出的最佳框架,在另外两个基准上评估,不再做进一步进化,共得到六个“来源—目标”方向。Evo 2 在其中五个方向上取得最佳迁移表现。这把协同进化的两种产出区分开来:一种是编码了“如何改进框架”的权重,另一种是已经包含搜索中所发现改进的框架。
这一区分对决定复用哪种产出的人很重要。训练好的进化者只要给定任务评估器,就能对新的初始框架运行同样的搜索流程;而进化出的框架可以在模型与工具接口兼容的新任务上直接部署。迁移结果说明的是第二条路径,而且只在编程基准上测量,因此本身并不能证明可迁移到无关的任务类别。
固定权重的闭源模型也能受益于双角色搜索
双角色框架方法并不限于进化者权重可更新的场景。在闭源模型实验中,GPT-5-mini 和 Claude Haiku 4.5 各自同时担任执行器和进化者,权重在整个进化过程中固定,评估使用 SWE-bench Verified 的 60 个任务子集。在这一设置下,该框架把 GPT-5-mini 智能体的性能从 24.4% 提升到 48.3%。
这一结果应按其自身条件理解。它表明 Evo 2 中负责改进框架的那一半可以在无法进行权重进化时运作,但并未检验 EvoTIDE 的训练流程,因为这些权重从未改变。这里的 48.3% 来自 60 个任务的子集,而非主编程实验所用的完整 SWE-bench Verified 评估,因此两个 48.3% 并不是同一种测量。
协同进化主张最有分量的地方
论文自身的分析报告称,权重进化提升了搜索的可靠性,crossover 搜索减少了达到强性能所需的评估预算。这两项发现说明,Evo 2 的实际价值更多在于搜索如何高效地转化为可用的框架和更好的进化者,而不在某个单一基准分数。记忆领域的实验——在 LoCoMo 上以三次留出对话的平均 F1 衡量,在 LongMemEval-S 上以 GPT 评判、三次运行、500 个实例的准确率衡量——把适用性主张扩展到编程之外。
这些证据支持的优先判断,是按读者想复用什么来划分。如果目标是为固定的模型与工具接口获得一个框架,那么六个编程方向中五个方向的迁移结果就是相关证据,且其范围限于编程基准。如果目标是得到一个能在新任务上持续改进框架的进化者,相关证据是权重进化和 crossover 分析,论文将其报告为提升搜索可靠性、降低评估成本,而不是某个固定分数阈值。闭源模型的结果不属于这两者,因为它只检验了框架那一半。
本文引用的文献
Evo 2 : Evolving the Evolver through Weight-Harness Co-Evolution
同一个共享策略同时担任 Proposer 和 Reflector,经 EvoTIDE 流程在框架修改及其执行结果上训练后,产出的框架在 Polyglot 上达到 82.1% pass@1,在 SWE-bench Verified 上解决 48.3% 的实例,最强基线分别为 62.6% 和 41.0%;其进化出的框架在六个跨基准方向中的五个上迁移表现最佳。
