复刻AlphaZero神话,AI甩开人类自修成神新智元

12/28/2025

当模型学会「左右互搏」的那一刻,平庸的模仿时代结束了,真正的硅基编程奇迹刚刚开始。

编程界的AlphaZero时刻,终于来了?

当年,AlphaZero抛弃人类棋谱,仅凭「左右互搏」便参透了超越千年的棋道。

而今天,AI程序员的致命伤,恰恰就在于它们太像「人」了——

靠学习人类代码长大的AI,注定无法突破人类的平庸。

就在最近,来自Meta、UIUC和CMU的研究团队,凭借最新成果Self-play SWE-RL(SSR),正在试图复刻AlphaZero的神话——

抛弃人类教师,拒绝模仿。

论文地址:https://arxiv.org/pdf/2512.18552

只要给AI一个代码库,让它分饰「破坏者」与「修复者」进行死斗。

在这场无需人类插手的自我博弈中,一种真正的、超越人类经验的编程奇迹,正在诞生。

被「喂养」的AI与人类数据的天花板

从Devin到OpenDevin,再到各大厂内部的代码助手,它们确实能帮程序员干不少脏活累活。

但这里有一个隐形的瓶颈。

目前主流的训练方法,无论是SWE-RL还是DeepSWE,本质上都是在教AI「模仿」。

这种依赖人类知识的模式有三个致命伤:

数据不够用:高质量的、带测试用例、带详细描述的Bug修复数据,其实非常稀缺。

质量不可靠:人类写的issue经常含糊不清,测试用例也不一定完美,这导致训练信号充满了噪声。

天花板太低:如果AI只是模仿人类,它顶多变成一个平庸的初级程序员。

这也是为什么论文把它称作通向超级智能的一道根本性障碍:

一旦训练信号必须由人类提供,你就很难想象它能无限扩展到「开放式、自我进化」的层级。

代码沙盒里的「搏击俱乐部」

SSR的核心理念非常简单,却又极其精妙:自博弈(Self-Play)。

在这个系统中,同一个LLM被赋予了两个截然不同、相互对抗的角色。

破坏者(Bug注入智能体)

它的任务不是写代码,而是搞破坏。

给它一个正常的开源项目(比如一个Python库),它需要潜入进去,研究代码逻辑,然后制造一个Bug。

但这个破坏者不能随便乱来(比如删掉所有文件),它需要生成一套完整的「作案工具包」(Artifacts):

bug_inject.diff :这是真正的破坏补丁,把代码改坏。

test_script.sh :一个能运行测试的脚本,证明Bug确实存在。

test_files.txt :指定哪些测试文件是用来验证这个Bug的。

test_parser.py :一个解析器,用来把测试结果翻译成机器能读懂的JSON格式。

test_weaken.diff :它会修改或删除现有的测试用例,让Bug在当前的测试套件下不报错。

在SSR中,缺陷生成是一项由破坏者智能体执行的任务,该智能体利用工具与执行环境交互以生成缺陷工件,并进一步验证其一致性后提供给修复者智能体。

一个优秀的破坏者智能体的关键特性在于其能够生成多样化的缺陷,以捕捉真实软件开发中的复杂性,从而在广泛的软件调试与工程场景中训练修复者智能体。

修复者(Bug解决智能体)

当破坏者完成工作后,轮到修复者登场了。

修复者面对的是一个被注入了Bug,且测试被「弱化」了的代码库。

修复者拿到的任务非常具有挑战性,它看不到那个原始的Bug是怎么注入的,它必须像一个侦探一样,通过阅读代码、运行测试、分析报错,最终写出一个修复补丁(Fix Patch)。

通过破坏者和修复者两种模型角色的对抗,可以让模型实现闭环进化。

让魔法打败魔法

如何保证AI不「瞎编」?

如果你让AI随便生成Bug,它大概率会产生幻觉,为此SSR设计了一套如同安检般严格的一致性验证(Consistency Verification)流程。

一个合格的Bug工件,必须通过以下所有关卡:

存在性检查:引用的测试文件,原仓库要有;

解析器检查:Python解析器要能读懂测试输出;

脚本有效性:在没改坏代码之前,测试脚本要跑得通;

Bug范围控制:改动的文件数量要适当,符合设定的难度。

Bug有效性(关键):注入Bug后,原本通过的测试必须变失败。如果注入了Bug测试还通过,说明Bug根本没生效。

掩盖有效性:应用了「掩盖补丁」后,原本失败的测试必须变通过,证明成功欺骗了测试套件。

最精彩的一招

逆向变异测试

逆向变异测试(Inverse Mutation Testing),是一个为了验证Bug质量而发明的新概念。

传统的变异测试是改乱代码看测试能不能发现。

而逆向变异测试刚好反过来,把Bug涉及的文件逐个恢复成原样。

如果恢复某个文件后,失败的测试变通过了,说明这个文件确实是Bug的起因。

如果恢复了文件测试还是有问题,说明这个文件跟Bug没关系。

这一步确保了AI生成的每一个改动都是必要的。

如何制造一个「完美」的Bug?

如果「破坏者」只是简单地把x=1改成x=0,那「修复者」学不到任何东西。

为了让AI变得更聪明,研究团队探索了几种极具创意的Bug注入策略。

Scroll for more