← 最新论文
💻 computer science

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 代码库的核心架构不变性,而总成本仅为 2,430 美元。

原作者: Joël Abenhaïm

发布于 2026-08-25
📖 1 分钟阅读☕ 轻松阅读

原作者: Joël Abenhaïm

原始论文采用 CC BY 4.0 许可(https://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明

在软件的世界里,程序就像是宏大而复杂的城市。它们由数百万行指令组成,这些指令告诉计算机如何表现、如何记忆以及如何在用户点击按钮时做出反应。几十年来,改变这些城市的标准方法是派遣一名人类建筑师,去检查人工智能可能铺下的每一块新砖。这种人工审查被认为是必不可少的,因为程序不同部分之间的连接如此深邃且错综复杂,以至于一个角落的小错误可能会导致另一处的坍塌。当一次变更规模大到同时触及数百个文件时,检查工作的任务就会变成一个瓶颈;没有任何一个单独的人类能同时在脑海中掌握整个变更的地图。这种局限性导致许多人认为,对于最复杂的架构转变,唯一安全的路径是拆除旧结构并从头开始构建一个全新的结构,而这是一个缓慢、昂贵且充满风险的过程。

最近的一项案例研究挑战了“人工审查是确保此类大规模变更安全性的唯一途径”这一观点。它探讨了一种方法,其核心是将关注点从检查最终产品转向完善施工蓝图——即在铺下第一块砖之前就完成它。这种方法不再是要求人工智能编写代码,然后寄希望于人类能发现其中的错误,而是要求机器首先编写一份关于其意图执行细节的详细、正式的描述。随后,这份描述会接受严格的检查,以验证其是否符合现有代码,其目的不是看代码是否有效,而是看计划本身是否合理。计划会被不断精炼、修正并冻结,直到不再产生任何发现。只有在那之后,机器才开始建造,并且即便在建造过程中,它也会不断根据那份冻结的计划进行审计。结果证明,只要定义和验证意图的过程足够稳健,即使是极其庞大且复杂的架构变革,也可以在没有任何人类阅读过生成的代码的情况下完成。

这项实验是在一个用于人工智能编程辅助的大型私有软件应用中进行的。该系统使用一种名为 TypeScript 的语言编写,包含超过 71.7 万行代码,分布在近 3,650 个文件中。这是一个每天都在运行的、鲜活的软件,而非理论模型。分配给人工智能代理的任务是拆除一个自系统创建以来一直支配其核心规则。这个被称为“不变性”(invariant)的规则保证了:每当用户开始与 AI 对话时,显示该对话的窗口将在整个请求期间保持开启状态。如果用户关闭窗口,对话就会终止。目标是打破这条规则:用户应该能够关闭窗口,而对话仍能在后台继续运行,并能随时重新打开并准确地从上次中断的地方恢复,且不丢失任何数据或重复任何文字。

这项特定的变更被认为通过标准的重构几乎无法实现。在作者看来,代码的相互依赖性如此紧密,以至于在不破坏整个系统的前提下修改对话的生命周期,通常需要对受影响的组件进行彻底重写。这项任务涉及管理复杂的计时问题,例如当数据仍在流入时窗口关闭了该怎么办,以及如何将用户重新连接到一个在没有用户参与的情况下仍在运行的实时流中。为了解决这个问题,作者采用了一个分为五个阶段的协议,旨在让人工智能严格遵循既定轨道。过程始于代理分析请求并生成一份形式化规范,即一份详细描述变更应如何运作的文件。

过程中最关键的部分是精炼阶段。代理被要求将其自身的规范与真实源代码进行对比检查,寻找任何矛盾或缺失的细节。这并非一次性的检查。代理进行了十四轮这样的审计循环。在每一轮循环中,它都会发现自己计划中的错误——也许是它忘记更新的文件,或者是它误解的依赖关系——并重写规范以修复这些错误。经过这十四轮迭代,计划被修正了约 85 次,随着隐藏连接的被发现,变更的范围从 110 个文件扩展到了 160 个文件。到第十四轮循环结束时,规范被冻结了。它是一份固定的蓝图,在经过针对代码库现实情况的审计后,直到最后一轮不再产生任何发现为止,该蓝图被锁定为后续所有阶段的参考基准。

在计划锁定后,代理进入实施阶段。它被指示生成实现该冻结规范所需的代码变更。代理拒绝进行部分修改,因为它正确地识别出,半途而废的迁移会破坏系统。相反,它分三个明确且经过确认的步骤执行了工作。一旦代码编写完成,验证阶段便开始了。正如计划曾针对代码进行过检查一样,现在的代码也要针对冻结的规范进行检查。代理运行了十七轮审计循环,将实际的代码与规范中的书面规则进行对比。在每一轮循环中,它都会发现并纠正偏差,修复那些人类可能会忽略的细微架构缺陷。在整十七轮迭代中,代理纠正了 116 个代码本身的缺陷。只有当连续两次审计返回零错误时,过程才会停止,这证实了代码在定义的收敛标准内与计划完全一致。

整个操作触及了 189 个文件,如果算上旧代码的提取,总计涉及 288 个文件。这些变更涉及超过 34,000 行新增代码以及超过 16,000 行的删除。值得注意的是,这次大规模重构在三天内便完成了。完成此项任务所需的 AI 处理成本为 2,430 美元。在整个三天的过程中,该程序从未被人类运行过一次。软件第一次实际执行是在第十七次验证循环之后,当时作者终于测试了新的行为。

结果非常成功。当程序启动时,新行为完全符合规范的描述。用户可以开始对话,关闭窗口,然后对话会在后台继续运行。当用户重新打开窗口时,对话会立即恢复,既没有数据丢失,也没有文字重复。侧边栏出现了一个新的停止按钮,允许用户在需要时终止后台进程。现有的自动化测试(多年来一直在该软件上运行)没有出现任何失败,表明新系统并未破坏原有的任何功能。该软件作为版本 2.3.0 发布,在随后的约三十次使用过程中,未观察到任何 Bug。

本案例研究并不声称人工智能现在可以取代所有场景下的工程师,也不暗示这种方法适用于所有类型的问题。作者谨慎地指出,这只是针对单一特定案例在单一代码库上的实例,其结果不能自动推广到其他系统或任务。研究明确排除了“预设的一套测试集可以解决此问题”的可能性,因为所需的目标行为在变更前并不存在。在旧代码中不存在可供检查的“正确答案”;正确性必须从零开始定义。研究还承认,该过程依赖于特定的、强大的 AI 模型,且结果可能会因模型能力的强弱而有所不同。

这项工作的意义在于它展示了一种管理复杂性的新方式。通过将质量控制的重心从检查最终产品转向严谨地定义和验证计划,研究人员展示了机器如何能够在无需人工干预的情况下,穿梭于相互依赖的代码“雷区”。关键不在于机器是完美的,而在于该流程允许它在错误变为永久性之前,通过反复自我纠正来捕捉自己的失误。规范被挑战了十四次,代码被检查了十七次,这种自我纠正的循环驱动着系统向着“意图”与“现实”相匹配的目标靠拢,并基于一个经验性的停止规则。记录这一完整过程的超过 1,500 页日志已向公众发布,为人们提供了一个透明的视角,去观察机器是如何在无需人类时刻监督的情况下,拆解一个核心架构规则并逐砖逐瓦地重建它的。

您所在领域的论文太多了?

获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。

试用 Digest →