Specification-first convergence with an AI coding agent: a case study of dismantling a core architectural invariant across 189 files in a 717k-line codebase with no test oracle and no human code review
本文通过一个案例研究表明,一个在遵循“规范优先”协议、且无需人工代码审查或预设测试预言机的情况下运行的 AI 编程智能体,通过迭代优化规范并并在部署前修正了 201 个缺陷,在三天内成功拆解了一个涉及 189 个文件、规模达 71.7 万行 TypeScript 生产级代码库的核心架构不变性。
原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明
想象一下,你正在试图教一个超级聪明的机器人如何盖房子。通常情况下,这个机器人在铺设单块砖头或粉刷一面墙时表现得很出色,但如果你要求它在房子已经有人居住的情况下重新设计整个地基,它就会变得手足无措。它可能会不小心推倒一堵承重墙,或者忘记厨房需要与餐厅保持连接。在计算机科学领域,这被称为对大规模代码库进行“重构”(refactoring)。现在的研究人员正在探讨的一个大问题是:一个 AI 智能体能否独立完成这项巨大且危险的工作,而不需要人类主管去检查每一行代码?
为了理解这个挑战,请把计算机程序想象成一个巨大的、精密复杂的发条机械装置。在这个装置内部存在着“不变性”(invariants)——这些是不容破坏的规则,它们维持着齿轮的运转,比如“主发条必须始终处于上弦状态”或“指针绝不能向后跳跃”。大多数 AI 编程工具就像是学徒,它们擅长修理松动的螺丝,却不擅长在不破坏计时功能的前提下重新布线整个时钟。它们通常需要人类在一旁盯着,并说:“等等,你不能那样做!”但人类会疲劳,而且无法同时在大脑中记住一个巨大时钟的完整地图。这篇论文探索了一种新的工作方式:我们不再是在机器人完成工作之后去检查它,而是强制要求机器人在触碰任何一个齿轮之前,先写出一份完美且详尽的说明书。然后,我们让机器人根据这份说明书反复检查自己的工作,直到说明书与机器完全吻合。
“幽灵”面板的故事
这篇论文讲述了一个关于特定高风险实验的故事,其中一个 AI 智能体被要求对一个庞大的软件程序进行一次“魔术表演”。该程序是一个拥有 717,725 行代码的应用(想象一下一个拥有近 72 万页指令的图书馆),它扮演着 AI 编程助手的角色。任务是要打破该软件自诞生以来一直遵循的一项基本规则:即“如果你关闭显示 AI 工作内容的窗口,AI 必须停止思考”。
目标是将这一规则修改为:即使你关闭了窗口,AI 也会在后台继续工作,就像一个幽灵一样。当你再次打开窗口时,AI 会立即“重新连接”到对话中,能够精准地从中断处接续,不会丢失任何一个字,也不会重复内容。该论文的作者(一名人类开发者)认为,这项任务极其复杂且风险极高,以至于最安全的方法是抛弃旧代码,从头开始重写整个程序。
“规范先行”协议
作者并没有选择重写一切,而是使用了一种被称为“规范先行收敛”(Specification-First Convergence)的方法。这就像是在玩一场由一位非常严格的裁判监督的“传声筒”游戏,只不过这个裁判是 AI 本身。
- 计划: 人类向 AI 提出了一个简单的纯英文请求:“让 AI 在窗口关闭时也能继续工作。”
- 蓝图: AI 并没有立即开始编码。相反,它编写了一份长达 55 页的正规“规范”——一份关于变化将如何运作的详细蓝图,精确到了最小的细节。
- 审计(精炼): 这是见证奇迹的地方。AI 被要求将其自身的蓝图与现有的真实代码进行 14 次对比。在每一轮中,它都会发现自己计划中的错误。“噢,我忘了后台进程需要一个新的停止按钮,”或者“我没有考虑到如果窗口在 AI 思考时关闭会发生什么。”它对蓝图进行了 14 次重写,在写下第一行新代码之前,就在计划中修正了大约 85 处错误。
- 构建: 一旦蓝图被“冻结”(意味着它已经完美且不再更改),AI 就开始编码。它不仅仅是在编写文件,它还创建了针对 189 个不同文件的补丁(小规模更新)。
- 双重检查(验证): 这是最关键的部分。AI 被要求阅读它自己编写的新代码,并将其与冻结的蓝图进行 17 次对比。它又发现了 116 个错误——微小的架构缺陷或逻辑漏洞——并对其进行了修复。它不断重复这一过程,直到连续两轮都未发现任何错误。
结果:一个不会闹鬼的“幽灵”
整个过程耗时三天,产生了 2,430 美元的计算处理费用。结果如何?AI 成功地在 189 个文件中拆解了一个核心规则,且整个过程中从未有任何人类查看过生成的代码。
当人类最终运行程序时,它运行得非常完美。你可以关闭窗口,观察 AI 在后台继续工作,然后重新打开窗口,看到对话瞬间恢复,没有任何文字丢失或重复。软件的表现完全符合蓝图的承诺。作者指出,代码非常整洁,以至于后来在需要进行微小的界面调整时,仅需修改单个文件,这表明 AI 在保持结构组织方面做得很好。
这意味着什么(以及不意味着什么)
这篇论文表明,对于难度极高、风险极大的软件变更,我们可能不需要依赖人类审查员来捕捉每一个错误。相反,我们可以利用 AI,通过让它反复严谨地检查其计划和代码是否符合一个冻结的标准,直到它收敛至完美。
然而,论文对其声明非常谨慎。它承认这仅仅是针对一个特定任务和一个特定代码库的实验。它并未证明这种方法适用于所有的 AI 或所有类型的软件问题。它还指出,由于代码是私有的,其他人无法运行完全相同的实验来验证结果是否一致。但作为一种概念验证,它展示了当被要求进行细致规划并反复自我审计时,AI 可以对一个人类通常认为在没有全面重写的情况下无法触碰的巨型软件系统进行“外科手术式”的操作。
您所在领域的论文太多了?
获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。