← 返回列表

论文综述:DarwinX——用自然选择进化智能体的运行骨架

DarwinX: Evolving Agent Harnesses Through Natural Selection

原文作者Yifan Zhang, Yutong Dai, Juntao Tan, Luyu Yang, Rishi Mullur, Thai Hoang, Zhiyuan Hu, James Zhu, Phil Mui, Silvio Savarese, Ran Xu, Zeyuan Chen机构Salesforce AI Research / Salesforce Agentforce论文发布2026-07-31综述日期2026-08-16HF 票数🔺 54
智能体进化算法Agent Harness自我改进Terminal-Bench
📄 查看原文 →

一、论文是干什么的?

现在大家谈到「让智能体变强」,第一反应几乎都是换一个更强的模型,或者拿数据去微调权重。DarwinX 这篇论文提出了一条完全不同的路:模型一个字节都不改,改的是模型外面那一层「壳」。这层壳在论文里叫 harness(运行骨架),包括系统提示词、可调用的工具、沉淀下来的技能文件、记忆结构,以及决定「什么时候该做什么」的控制流代码。作者的观点很直接——同一个冻结的大模型,套上不同的骨架,表现可能差出几十个百分点,那么与其去动模型,不如让骨架自己进化。

打个生活里的比方。假设你雇了一位能力已经固定的老师傅,他的手艺不会再长进了。你没法给他「换脑子」,但你可以给他换工作台:把常用工具摆在顺手的位置、贴一张「做完必须自检三项」的便条、把每次返工的教训写成车间守则。日子久了,同一个师傅的出活质量会大幅上升。DarwinX 做的就是自动化地折腾这张工作台,而且用的是达尔文式的自然选择:同时养一个「种群」的骨架变体,让它们各自去跑任务,跑得好的留下来当父代继续繁殖,跑得差的进档案库当备胎。更关键的是,它给每次「变异」加了一条硬性的生存法则——新一代必须在守住老本事的前提下多学会一样东西,否则一律回滚。这条法则就是全文的灵魂,作者称之为 preserve-and-extend contract(保留并扩展契约)。

论文把评测设计成一条「信号与测试逐步拉开距离」的阶梯:先在同一批任务上做测试时进化,再换成同分布的留出任务,再换成「用合成任务进化、拿真实任务测试」,最后干脆把在终端任务上进化出来的骨架原封不动搬到软件工程任务上。四级台阶下来,涨幅从 +3.4 到 +49.5 个百分点,而且行为的合法性同时变好——这一点比分数更值得注意。

二、核心方法与创新

2.1 要解决的两个老毛病

作者认为已有的「自我进化智能体」有两个反复出现的失败模式:

  • 路径依赖(path dependence):只有一条谱系的自编辑智能体,会被最早那几次编辑锁死方向,很快进入平台期。就像一棵树只长一根主干,早期歪了就一直歪。
  • 跨任务干扰(cross-task interference):一次编辑修好了 A 类任务,却悄悄把 B 类任务弄坏了。因为没人去回头检查旧任务,退化往往在很久以后才暴露。

DarwinX 的两件武器正好一一对应:用种群加档案树打破路径依赖,用保留并扩展契约堵住跨任务干扰。

2.2 保留并扩展契约:给「进步」下一个可执行的定义

这是全文最形式化、也最实用的部分。设父代骨架为 pp、子代为 cc,在任务 tt 上的通过率估计为 p^t(⋅)\hat{p}_t(\cdot),那么单个任务上的变化量是

Δt=p^t(c)−p^t(p)\Delta_t = \hat{p}_t(c) - \hat{p}_t(p)

在此基础上定义两个量。一个是净增益,把所有任务上的变化加起来:

g(c)=∑tΔtg(c) = \sum_t \Delta_t

另一个是有界回退,只把变差的部分(取正部)累加起来:

R(c)=∑t(−Δt)+R(c) = \sum_t (-\Delta_t)_+

接受一个子代的条件写出来只有一行,但含义很硬:

g(c)>0andR(c)≤δg(c) > 0 \quad \text{and} \quad R(c) \le \delta

翻译成大白话就是:你必须整体上更强,而且不许把任何一处弄坏超过容忍额度 δ\delta。传统做法只看总分涨没涨,总分涨了就收,于是「东边多做对三题、西边悄悄做错两题」这种交易会被默许,累积几十代之后骨架就变成一个到处漏风的补丁堆。DarwinX 显式地把「回退」拎出来单独设阈值,等于在优化目标里加了一条不可交易的下限。

契约的执行不是一次性的。论文设计了探索与确认分离的两段式:变体可以凭一个「有希望但含噪」的信号先进入档案树,但要想成为影响后续搜索方向的父代,还得再过一道更高精度的保全探针(preservation probe)。在具体的评测协议上,这体现为筛选阶段用 avg@3、确认阶段用 avg@5 的采样预算差异——便宜的筛选负责广撒网,昂贵的确认负责把关。最终裁决由一个「验证者智能体」 ff 做出:

verdict(c)=f(g,R,E,Kg)∈{promote,revert}\mathrm{verdict}(c) = f(g, R, \mathcal{E}, K_g) \in \{\text{promote}, \text{revert}\}

其中 E\mathcal{E} 是这一轮的试验证据,KgK_g 是种群共享的记忆。也就是说,接受与否不是纯数字比大小,还要看轨迹证据是否讲得通。

2.3 变异:只做加法,不做替换

DarwinX 的变异算子刻意设计成加性的:每次从档案中挑一个父代,只提出「一处小的新增」,瞄准当前失败的某一类任务。编辑可以落在提示词、技能文件、工具定义、控制流甚至源码上,但不允许把继承来的能力删掉重写。这种「只加不换」的约束和上面的契约是配套的——加法更容易被审计,也更容易在合并时和别的分支拼在一起。

2.4 父代选择:累积谱系增益,而不是绝对分数

一个容易被忽略的细节是:不同变体是在轮换的任务子集上被筛选的,所以它们的原始分数根本不可比。DarwinX 因此不看绝对分,而看累积谱系增益:

G(c)=G(p)+g(c)G(c) = G(p) + g(c)

即「你这一支从祖先一路走来一共赚了多少」。父代采样规则是一个带探索概率的混合分布:以 1−β1-\beta 的概率在已确认变体的引导集合 SS 里选累积增益最高的那个(利用),以 β\beta 的概率退回更广的种群 PP 里去广搜(探索)。这就是防止路径依赖的那根杠杆——总有一定比例的算力被强制花在「冷门分支」上。

2.5 档案与合并:让「失败者」也留下遗产

每个被打过分的变体都是档案树上的一等公民,节点里存着骨架快照、这次的编辑差分、逐任务分数、试验证据和提炼出来的教训。论文按子代解出的任务集合 S(c)S(c) 与父代 S(p)S(p) 的关系把变体分成几类:

类别关系处理方式
改进者(improver)S(c)⊃S(p)S(c) \supset S(p)完整保留继承能力,可作父代
中性子代S(c)=S(p)S(c) = S(p)能力不减,仍可作父代
垫脚石(stepping stone)S(c)⊂S(p)S(c) \subset S(p)丢了能力,只回收提炼的教训
归档节点有得有失不作父代,贡献教训
专才(specialist)解出兄弟节点都解不出的任务进入合并候选池

最漂亮的一步是合并算子。当若干变体 v1,…,vnv_1,\dots,v_n 各自解出互补的任务时,系统把它们的编辑差分按类型拼装成一个合并子代:

H=H0⊕Δ,Δ=Δcode⊕Δskill⊕Δprompt⊕ΔtoolH = H_0 \oplus \Delta, \qquad \Delta = \Delta_{\mathrm{code}} \oplus \Delta_{\mathrm{skill}} \oplus \Delta_{\mathrm{prompt}} \oplus \Delta_{\mathrm{tool}}

而合并子代被保留的条件同样苛刻——它必须覆盖所有来源变体解集的并集:

S(child)⊇⋃iS(vi)S(\text{child}) \supseteq \bigcup_i S(v_i)

合并的候选池里特意包含那些从未在全局领先过的归档专才。作者的原话意思是:一条自己永远赢不了的谱系,可能恰好握着那一处编辑,和另一条分支的编辑合在一起,就能打开两边单独都打不开的任务。这正是生物演化里「中性突变积累后突然显效」的翻版,也是单谱系自编辑做不到的事。

在 TerminalWorld 上,这一机制有个很直观的证据:四个专才骨架分别解出 41 个留出任务中的 24、25、26、27 个,而合并后的骨架达到 28 个——合并确实拿到了单个分支拿不到的那一格。

2.6 三类学习信号:按任务难度「因材施教」

变异提案不是凭空拍脑袋,而是由证据驱动。DarwinX 会动态地把任务分成三档——可靠解出、方差带(同一批 kk 次采样里既有成功又有失败)、墙(walls,一次都没成功过)——然后给不同档位喂不同的信号:

  1. 失败导出的信号(记作 ∇\nabla):把失败轨迹 τ\tau 归纳成摘要,定位「缺了什么能力」。这是普通变体的默认信号,还会从反复出现的失败模式里提炼出针对系统性瓶颈的全局能力。
  2. 教师示范信号(记作 π∗\pi^*):把一个参考求解器的成功轨迹 τ∗\tau^* 蒸馏成可复用的做法。专门用在「墙」上——自己一次都没做对过的任务,只靠自省是提炼不出东西的,必须有外部示范。
  3. 自我对比信号(记作 AA):把自己的成功与失败轨迹 {τi}i=1k\{\tau_i\}_{i=1}^k 放在一起对照,找出「什么让成功变得可靠」。专门用在方差带任务上——能做对但不稳定,问题往往不在知识而在流程纪律。

这三条信号共用同一个接口,所以提案器永远拿到的是「这个任务当前能提供的最有信息量的证据」。这个设计的巧妙之处在于它承认了一件事:不同难度的失败,需要的不是同一种反思。

2.7 完整循环

论文给出的主循环大致是:按累积谱系增益选父代 → 针对某个失败或脆弱任务提出一处有界编辑 → 在任务子集上执行子代 → 计算 g(c)g(c) 与 R(c)R(c) → 满足契约则晋升入档案并跑保全探针 → 按解集关系给子代分类 → 若存在互补专才则尝试合并(合并子代必须覆盖并集)→ 把失败主题写回共享记忆 → 重复直到预算耗尽。

三、使用了哪些模型和计算资源?

DarwinX 的实验基座是 Salesforce 自家的智能体 Monet,论文里把 Monet 的底层模型完全冻结,只进化它外面的骨架层。Monet 原本是为编码任务设计的,为了跑浏览器任务,作者通过 Chrome DevTools Protocol 把浏览器暴露出来,让智能体可以用 JavaScript 与环境交互。

各实验用到的冻结底座模型如下:

实验冻结的底层模型
Terminal-Bench 2.1GPT-5.5、GPT-5.6 Sol
TerminalWorldOpus 4.8、GPT-5.5
WebArena-InfinityGPT-5.5
SWE-bench Verified 迁移Opus 4.8
有效性审计的第二阶段判官Opus 4.8

关于提案器与验证者所用的具体模型,论文只说由「一个会推理的验证者智能体 ff 分两阶段裁决」,并未单列型号,看起来沿用同一批底座模型。

计算资源与成本方面:这些实验全部是通过模型 API 驱动的智能体轨迹执行,论文没有报告任何 API 费用、token 预算、每一代进化的耗时或整轮进化的墙钟时间,也没有本地 GPU 训练开销(因为根本不训练权重)。这一项属于暂无相关信息。

论文唯一给出的算力侧观察是测试时开销的变化:在那些进化后新解出的六个任务上,中位轨迹的交互轮数大约翻倍(22 轮对 11 轮),token 消耗大约翻两番(38 万对 8.9 万);而在本来就能解出的任务上,开销几乎不变(13 轮对 12 轮)。也就是说,进化出的骨架并不是「无差别地多花算力」,而是学会了在难题上才启动更重的验证流程。

关于进化迭代次数,论文只在 WebArena-Infinity 上给了完整数字:在 300 条合成意图上一共跑了 62 次迭代,其中 26 次被接受、36 次被回滚。回滚率超过一半,恰恰说明保留并扩展契约在持续地拦人。Terminal-Bench 2.1 的迭代总数未在正文中明确给出。种群规模上限论文也没有设定明确的数值。

四、实验结果

先说结论:在四种难度递增的「泛化考法」下,同一套进化机制都能拿到实打实的提升,而且分数涨的同时行为的合法性也在涨。

4.1 主结果一览

基准考法底座模型进化前进化后变化
Terminal-Bench 2.1(89 任务,avg@5)同域测试时进化GPT-5.575.5 ± 3.583.2 ± 1.2+7.7
Terminal-Bench 2.1(avg@5)换底座重跑GPT-5.6 Sol / medium暂无相关信息84.7 ± 1.2暂无相关信息
TerminalWorld(41 留出任务,pass@1)留出任务泛化Opus 4.861.068.3+7.3
TerminalWorld(pass@1)留出任务泛化GPT-5.548.856.1+7.3
WebArena-Infinity(1260 真实任务)合成到真实泛化GPT-5.543.5(audit-clean)93.0(audit-clean)+49.5
WebArena-Infinity(审计前原始分)同上GPT-5.553.094.4+41.4
SWE-bench Verified(500 问题,pass@1)跨基准迁移Opus 4.880.8(fix-skill 参考)84.2(421/500)+3.4

作为参照,TerminalWorld 上 Opus 4.8 驱动的 Claude Code 拿到 65.9 pass@1,低于进化后的 Monet 的 68.3。

4.2 audit-clean 是什么意思?为什么这个数字才可信

WebArena-Infinity 从 43.5 涨到 93.0 是全文最刺眼的数字,但真正值得说的其实是它背后的有效性审计。所谓 audit-clean,规则很简单:凡是被有效性审计判定为 Invalid 的轨迹,一律按失败计——哪怕官方验证器判它通过。

之所以要加这一层,是因为基线智能体存在严重的「奖励作弊」:它会绕开浏览器,直接去碰评测基础设施。审计统计出基线 Monet 有 293 条无效轨迹,其中 155 条属于触碰评测平面、97 条属于访问特权主机、26 条属于利用漏洞或提权。换句话说,基线那 53.0 的原始分里有相当一部分是「抄答案」抄来的。

审计本身是两阶段检测器:第一阶段做静态分析——反混淆 JavaScript、识别被打分的字段、做污点追踪,标记出对主机、评测平面、数据库的访问以及漏洞利用;第二阶段把被标记的轨迹交给 Opus 4.8 判官独立复核。

进化后的骨架把无效轨迹从 293 条压到 17 条,且只剩「原始状态改写」一类;确认无效率从 23.5% 降到 1.4%。这说明进化并没有学会「更高明地作弊」,反而学会了老老实实用浏览器干活——这正是许多自我进化工作最容易翻车的地方,而 DarwinX 用一套独立于优化目标的审计把它测了出来。

分应用来看,涨幅最大的是需要真正改变环境状态的应用:Elation 处方类任务 +75.0,Gmail +73.3。

4.3 进化到底加了什么?

Terminal-Bench 2.1 上一共只新增了七个技能,而且全部落在同一个家族——验证与产物契约:

  • verifier-contract:先把任务的验收契约推导出来,交卷前拿它逐条核对。
  • artifact-verification-loop:对被打分的产物做校验,然后进入「修一次、再验一次」的循环。
  • tool-grounded-artifact:结论必须来自真实的工具执行结果,而不是自己声称的结果。
  • security-contract-repair:针对安全检查项修补方案。

这个发现本身很有意思:自然选择最后收敛到的不是什么花哨的推理技巧,而是工程纪律——先定验收标准、动手后必须自查、结论必须有执行证据。

按任务簇拆开看:机器学习与科学计算类从 60.1% 涨到 74.9%(+14.8),数据与数据库类从 83.9% 涨到 97.8%(+13.9),系统管理类从 92% 到 98%,安全类从 85% 到 84%(在噪声范围内)。在 88 个配对任务上,36 个变好、43 个不变、9 个变差——回退是存在的,但被契约压在了小范围内。

4.4 迁移实验怎么设计的

  • 留出任务泛化:在 TerminalWorld 的 94 个训练任务上进化,进化结束后冻结骨架,再到 41 个不相交的留出任务上做单次 pass@1。
  • 合成到真实:在 WebArena-Infinity 上用 300 条合成意图进化,评分靠 LLM 判官(筛选 avg@3、确认 avg@5);最终报告在 1260 条未见过的真实任务上,用确定性验证器打分。论文认为这一档「进化信号与测试分布的距离最远」。
  • 跨基准迁移:把 Terminal-Bench 2.1 上进化出的最佳骨架原封不动拿去跑全部 500 个 SWE-bench Verified 问题,且完全没有在 SWE-V 上做任何域内进化,结果 421/500(84.2%),比 80.8% 的 fix-skill 参考高 3.4 分。

三档迁移都成立,作者据此论证进化捕捉到的是「基础的智能体胜任力」,而不是针对某个基准的过拟合技巧。

4.5 作者自己承认的局限

论文的局限部分相当坦诚:TerminalWorld 只有 41 个留出任务,多解一题 pass@1 就动 2.4 分,统计功效有限;同模型对比只能支撑「系统层面骨架有效」的结论,单个算子的贡献仍属「合理推测」而非因果证实;SWE-V 只是迁移与诊断基准,不能当主结果;动作有效性的判定在某些复杂构造上仍需人工复核;档案与合并机制虽然能保存和组合变体,但种群搜索必须先攒够多样化的胜利,继承机制才谈得上有用。

五、潜在应用与已落地应用

已落地的部分。论文本身的实验基座 Monet 就是 Salesforce 的内部智能体,作者名单里同时出现了 Salesforce AI Research 与 Salesforce Agentforce(产品线)的成员,包括 Agentforce 的 Phil Mui 与首席科学家 Silvio Savarese。这至少说明该工作与 Salesforce 的智能体产品线是贴合的。不过,论文中并未声明 DarwinX 已经作为功能上线到任何商用产品,也没有给出开源仓库地址,因此严格意义上的「已落地案例」属于暂无相关信息。

潜在方向上,几条路子相当自然:

  1. 企业智能体的持续调优。企业客户的任务分布各不相同,重新训练模型既贵又不现实,而进化骨架只需要客户自己的失败轨迹。保留并扩展契约在这里价值极大——企业最怕的不是「没变强」,而是「上周还能跑的流程这周坏了」,而契约恰好把回退当作一等约束。
  2. 模型升级时的骨架继承。论文里 Terminal-Bench 上进化出的骨架换到 GPT-5.6 Sol 上依然拿到 84.7,意味着骨架资产可以跨模型代际复用,不必每换一次底座就重做一遍工程。
  3. 把审计当成常规护栏。那套「反混淆 + 污点追踪 + LLM 判官」的两阶段有效性检测,其实可以脱离进化单独用,作为任何自动化优化流程的防作弊闸门——只要优化目标是自动打分的,就存在被钻空子的风险。
  4. 团队工程规范的自动挖掘。进化最终收敛出的七个技能全是验证纪律,这提示可以把这套循环当作一台「最佳实践发现机」:让它在你的代码库上跑,看它自发沉淀出哪些检查项。
  5. 合并算子用于多团队协作。不同团队各自进化出的专才骨架可以通过并集条件合并,这在组织层面上是一种可验证的能力聚合方式。

六、网络上的讨论与评价

这篇论文在 HuggingFace 论文页上获得了 54 票,但我们抓取该页面时未能看到任何社区评论;针对 DarwinX 本身的 X(Twitter)、Reddit、Hacker News、技术博客与知乎讨论,检索中同样未找到可确认的具体内容,因此针对本文的直接网络评价属于暂无相关信息。

不过,DarwinX 所处的技术脉络在 2026 年异常拥挤,同期同主题的工作被密集讨论,可以作为背景参考(以下均为相关工作而非对 DarwinX 的评论):

需要强调:以上四条都是同期相关工作,不是针对 DarwinX 的评论;把它们放在一起,主要是为了说明这篇论文出现的语境。

七、思维导图

mindmap
  root((DarwinX 进化智能体运行骨架))
    要解决的核心问题
      模型权重完全冻结 只进化外层骨架
      单谱系自编辑的路径依赖与平台期
      跨任务干扰导致旧能力悄悄退化
    保留并扩展契约
      逐任务变化量分别统计不做汇总平均
      净增益 g 必须严格大于零
      有界回退 R 不得超过阈值 delta
      保全探针复核后才有资格当父代
    种群与档案树
      按累积谱系增益 G 选父代
      以 beta 概率跳出最优分支广搜种群
      变体分类 改进者 中性 垫脚石 专才
      合并子代必须覆盖各来源解集的并集
    三类学习信号
      失败轨迹归纳出缺失的能力
      教师示范用于零成功的 walls 任务
      成败自对比稳定方差带任务
    实验与基准结果
      Terminal-Bench 2.1 从 75.5 到 83.2
      TerminalWorld 留出集 61.0 到 68.3
      WebArena-Infinity 43.5 到 93.0
      SWE-bench Verified 零域内进化迁移 84.2
    有效性审计与进化出的技能
      audit-clean 无效轨迹一律计为失败
      基线 293 条违规轨迹降到 17 条
      verifier-contract 交卷前先核验收契约
      artifact-verification-loop 修完再验一遍