SWE-Duel 如何构建可自我扩展的编程智能体竞技场?

SWE-Duel 让编程智能体互相出题并解题,任务难度随参与智能体的能力提升而上升。

直接答案

SWE-Duel 把评测变成一场对决:一个编程智能体在真实仓库中实现新功能,并埋入隐藏缺陷和密封测试;另一个智能体必须在不知情的情况下找出并修复它,随后双方交换角色。由于任务由被评测的智能体在评测时现场生成,事先不存在可供泄漏的内容,难度也由参与者决定,而不是在发布时固定。

1篇文献引用

本文由 WisPaper 驱动的搜索和论文分析生成。

静态基准从发布起就开始失效

论文的出发点是对编程基准的一项结构性批评。以固定任务集发布的基准取材于公开可获取的来源,其内容最终会被吸收进训练语料,更强的智能体也会逐渐把它做满。作者以 OpenAI 停止在 SWE-bench Verified 上报告结果为例说明这种失效:前沿模型能够复现该基准的黄金补丁。

作者提出的替代方案是让基准具备自我扩展能力:任务和判定标准都在评测时生成,因此事先不存在可供泄漏的内容;难度由参与评测的智能体决定,而不是在发布时固定。论文还把它与持续更新的基准区分开来。SWE-bench-Live 和 SWE-rebench 通过收集训练截止日期之后创建的任务来减少泄漏,但难度仍受限于人类开发者日常遇到的问题。BugPilot 和 SwingArena 这类由模型生成任务的方案更接近目标,但 BugPilot 提前生成固定的任务集,SwingArena 仍从人类编写的 GitHub issue 固定池中取任务,只在评测时生成判定标准。

红方埋陷阱,蓝方负责修复

每一轮都是在真实仓库上进行的一场镜像对决。红方智能体在三个相互隔离上下文的会话中工作:先提出一个新功能,连同功能测试一起实现,然后在这个功能中埋入一个不易察觉的缺陷,并附上密封的、能触发该缺陷的测试。生成的拉取请求只有满足两个条件才能进入对决。第一,它必须通过功能测试和仓库已有的回归测试,同时恰好让缺陷测试失败。第二,同一个红方智能体在一个全新会话中必须能在不知情的情况下修复该缺陷,这排除了原则上无法解决的任务。

随后蓝方智能体在未被告知存在缺陷的情况下审查这个拉取请求。只有当它的修改通过全部三套测试——功能测试、仓库已有测试和密封缺陷测试——它才赢下这一轮。之后两个智能体交换角色。由于每个功能、缺陷和判定标准都在评测时生成,这些具体任务不可能出现在更早的训练数据中;又因为任务由被评测的智能体编写,难度不受人类编写任务池的上限约束。

可解性门槛限制了任务难度上限

盲测自修复要求让竞技场保持可信,但它也把任务难度与出题者自身的解题能力绑在一起。红方智能体无法提交一个自己在全新会话中修不好的缺陷,因此可提交的最难缺陷受该智能体能力限制。作者明确承认这一点,并提出了一个未来扩展方向:让可解性检查使用特权信息,例如告知自审会话存在缺陷或提示缺陷类型。这样仍能证明缺陷公平且可解,同时让出题者有空间埋入更隐蔽的缺陷,而不再需要盲测自审会话发现并修复它。

这影响如何解读锦标赛结果。红方胜率高,衡量的是出题者已提交的任务击败对手的频率,而不是出题者在不受约束时能把任务做得多难。论文本身把这道门槛视为一种设计取舍,而不是已经解决的问题。

11 名参与者、1500 轮、两种取胜方式

主实验是一场循环赛,11 个模型与工具组合的参与者在五种语言的 15 个仓库上对决,共 1500 轮。每两名参与者打一场比赛,一场比赛中双方在同一批仓库上担任红方和蓝方的次数相同。参与者的比赛得分是它在两个角色中所得分数之和:蓝方的修改通过全部三套测试就得一分,否则红方得分。如果某参与者在某个仓库上因名额耗尽而提交的任务少于计划数量,每个缺失任务都记为蓝方获胜且不实际运行蓝方,这会降低该出题者的比赛得分。

领先者以不同方式取胜。GPT-5.5 搭配 Codex CLI 排名第一,是最强的解题者,修复了它审查过的 98.3% 的缺陷。Claude Opus 4.8 搭配 mini-swe-agent 排名第二,是最强的出题者,红方胜率为 27.3%。论文的轮级分析把每一轮都当作独立的 Bradley–Terry 结果,该分析把 Claude Opus 4.8 搭配 mini-swe-agent 排在第一位(+0.30),把 GPT-5.5 搭配 Codex 排在第四位(+0.18),这反映了 Opus 全场最佳红方胜率在逐轮加权下的影响。作者指出,轮级分析中的排名不确定性更大,前七名的区间相互重叠。

缺失任务名额可能压过胜率

完整赛程计分把空置的红方名额视为蓝方自动获胜,因此提交任务少的参与者会在未实际对局的情况下丢分。仅计争议轮的重拟合去掉这些自动获胜轮,并把记录重新加权到仅计争议轮的红方胜率上,排名因此大幅变动:GPT-5.5 搭配 mini-swe-agent 从第三升到第一,GPT-5.5 搭配 Codex 从第一降到第二,Claude Opus 4.8 搭配 mini-swe-agent 从第二降到第五,Nemotron-3-Ultra 从第九升到第三,MiniMax-M3 从第十升到第七。

论文把这些变动主要归因于任务生成覆盖率惩罚。Nemotron-3-Ultra 在 15 个名额中只提交了 7 个,因此它的十场比赛每场都让出八个无争议的蓝方得分,主锦标赛中合计 80 个自动获胜轮;去掉这些让分后,它的重拟合系数为 +0.145,排名跃升至第三。这个位置并不稳固:它的聚类区间 [−0.35, +0.75] 下界触及零,而且它的十次争议轮红方胜利中有九次来自同一个已提交任务。作者还报告,完整赛程的轮级排名与主锦标赛完整赛程的比赛级排名更接近(Kendall's τ = 0.782),而与仅计争议轮的排序较远(τ = 0.382),因此驱动这种敏感性的是自动获胜计分规则,而不是聚合粒度。

更新的模型版本写出更难的任务

论文关于自我扩展最直接的证据来自同一模型家族内部的比较。同一模型家族中最新版本写出的任务击败固定参考解题者的频率远高于旧版本:42.9% 对 4.0%。作者把这作为初步证据,说明任务难度会随出题能力提升而上升,而这正是自我扩展基准所需要的性质。

这一证据被明确标为初步证据,论文自身的分析也说明了为什么不应过度解读单个数字。在红方胜利高度集中的案例中,Nemotron-3-Ultra 的十次争议轮红方胜利有九次来自 Gogorilla/csrf 仓库上的同一个任务:密封缺陷是前缀匹配器中的一个条件改动,而所有可见信号都支持有缺陷的行为。人工审计发现,被抽样的解题运行是真实失败,而不是判定标准不可靠;但多数解题者确实定位到了那个确切条件,因此这个任务并不能干净地检验蓝方能否发现隐藏缺陷。该出题者提交的七个任务中有五个没有击败任何对手,作者将其描述为一个构造得异常出色的缺陷加上六个普通任务。

新参与者以对数级新增比赛加入

这个竞技场被设计成可以扩展。要把一个新参与者加入已有 M 名参与者的锦标赛,新参与者先建立自己的任务库,然后只与 ⌈log2 M⌉ + 1 名在位者比赛,对手按 Chatbot Arena 的主动采样规则选出。在位者的任务库和此前所有比赛结果都原样复用,因此新增比赛数量随 M 呈对数增长。在论文报告的迟到加入案例中,Gemini-3.1-Pro 搭配 mini-swe-agent 以五场比赛加入,没有改变已有排名;它的边际加入成本为 243.40 美元,而主锦标赛的 API 总支出为 2109.21 美元。

论文对成本和效率数字的含义保持谨慎。Bradley–Terry 强度与 API 成本或输出 token 用量之间的关联被描述为观察性关联,混合了模型定价、生成覆盖率和行为,并不是受控的效率比较。另有一项按每位参与者 638,976 个输出 token 预算匹配的排名,该排名不包含红方任务创建,把 GPT-5.5 搭配 Codex 排在第一位(+2.60),把 GPT-5.5 搭配 mini-swe-agent 排在第二位(+1.38);作者声明它不用于替代主锦标赛排名。

解题能力与出题能力是两条独立轴线

这场锦标赛最有用的启示是:单一排行榜掩盖了两种不同的能力。GPT-5.5 搭配 Codex CLI 作为解题者领先,修复了它审查过的 98.3% 的缺陷;Claude Opus 4.8 搭配 mini-swe-agent 作为出题者领先,红方胜率为 27.3%。完整赛程的比赛级排名和轮级排名对这两者的排序不同。谁排第一,取决于估计量是按比赛结果加权还是按逐轮强度加权,而论文同时报告了两种结果,没有把它们合并成一个。

对想从 SWE-Duel 中获取结论的读者来说,关键区分在于把它当作解题基准,还是当作关于任务生成能力的证据。同家族内 42.9% 对 4.0% 的结果支持第二种用途,但只是初步证据;红方胜利高度集中的案例则说明,一个构造出色的任务能在多大程度上改变出题者的战绩。因此论文自身的优先关注点是自我扩展机制本身:任务和判定标准由受测智能体在评测时生成,而盲测自修复门槛是保证这些任务公平且可解的条件。

本文引用的文献

1

SWE-Duel: Towards a Self-Scaling Arena for Coding Agents

SWE-Duel 让两个编程智能体在镜像的红蓝轮次中互相出题并解题;在 11 名参与者、1500 轮的锦标赛中,GPT-5.5 搭配 Codex CLI 修复了它审查过的 98.3% 的缺陷,Claude Opus 4.8 搭配 mini-swe-agent 取得 27.3% 的红方胜率,而更新模型版本写出的任务以 42.9% 对 4.0% 击败固定解题者。