← 最新论文
💻 computer science

Project Prometheus: Bridging the Intent Gap in Agentic Program Repair via Reverse-Engineered Executable Specifications

本文提出了名为 Prometheus 的新框架,通过多智能体架构从运行时失败报告中逆向推导可执行的 Gherkin 规范,并利用需求质量保证(RQA)循环验证意图,从而在 Defects4J 基准测试中实现了 93.97% 的修复率,有效解决了现有自动程序修复中生成的补丁与开发者原始意图不匹配的“意图差距”问题。

原作者: Yongchao Wang, Zhiqiu Huang

发布于 2026-04-21
📖 1 分钟阅读☕ 轻松阅读

原作者: Yongchao Wang, Zhiqiu Huang

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

这篇文章介绍了一个名为 Prometheus(普罗米修斯) 的新系统,它旨在解决人工智能(AI)在自动修复软件代码时的一个核心痛点:“意图鸿沟”

为了让你更容易理解,我们可以把修复代码的过程想象成**“修房子”,而 AI 就是“装修工人”**。

1. 核心问题:装修工人太“有主见”了(意图鸿沟)

现在的 AI 修代码工具(就像现在的装修工人)非常聪明,能看懂复杂的图纸,也能写出很漂亮的代码。但是,它们经常犯一个错误:它们不知道房主真正想要什么。

  • 现状:房主(开发者)说:“这面墙有点歪,修一下。”
  • AI 的反应:AI 可能会想:“哦,墙歪了?那我把整栋楼都拆了重建吧,顺便把窗户也换了,这样更完美!”
  • 结果:虽然墙确实直了,但房子结构被破坏了,甚至可能塌了。这就是论文里说的**“意图鸿沟”**——AI 生成的补丁虽然能跑通,但完全偏离了开发者的本意。以前的方法只是给 AI 看一些模糊的“自然语言描述”(比如“修好这个 bug"),这就像给装修工人一张模糊的素描,AI 只能靠猜,结果往往是“过度设计”或者“乱改一气”。

2. 普罗米修斯的解决方案:先定规矩,再干活

Prometheus 认为,在让 AI 写代码之前,必须先让它把“需求”写清楚。 它不再直接问 AI“怎么修”,而是先让 AI 扮演一个**“侦探”,去反向推导出一个“可执行的合同”**。

这个系统由三个角色组成,就像一支精干的施工队:

角色一:建筑师(The Architect)—— 逆向工程侦探

  • 任务:当代码报错时,建筑师不急着修,而是先分析错误报告。
  • 做法:它利用一种叫 BDD(行为驱动开发) 的语言(一种像写故事一样的格式:“假如(Given)... 当(When)... 那么(Then)..."),把“代码哪里坏了”翻译成“正确的行为应该是什么样”。
  • 比喻:就像装修工人在动工前,先画出一张精确的施工图,并写下:“如果我不放承重墙,那么房子就不能塌。”这张图不是模糊的“修好点”,而是机器能读懂、能执行的合同

角色二:工程师(The Engineer)—— 严格的质检员

  • 任务:验证建筑师画的图对不对。
  • 做法:它会进行**“三明治验证”**:
    1. 用这张图去测坏掉的代码(必须报错,证明图抓到了问题)。
    2. 用这张图去测修好的代码(必须通过,证明图符合最终目标)。
  • 比喻:在正式动工前,质检员拿着图纸去模拟施工。如果图纸说“墙不能塌”,但模拟中墙塌了,说明图纸画错了,必须重画。这确保了 AI 不会在错误的方向上努力。

角色三:修理工(The Fixer)—— 手术刀式的工匠

  • 任务:拿着验证过的图纸去修代码。
  • 做法:因为前面有了精确的“合同”,修理工不再需要瞎猜。它只需要像外科医生一样,精准地切除病灶,而不会乱动其他健康的器官。
  • 比喻:以前的装修工人是“大锤乱砸”,现在的修理工拿着图纸,知道“只要把这块砖换掉,墙就直了”,于是只换这一块砖,精准、微创

3. 惊人的效果:从“乱拳打死老师傅”到“精准手术”

论文在 680 个真实的软件缺陷上测试了这个系统,结果非常震撼:

  • 成功率:修复成功率达到了 93.97%(几乎全部修好)。
  • 救援能力:对于那些连最厉害的 AI 都修不好的“疑难杂症”,Prometheus 成功救回了 74.4% 的病例。
  • 对比:以前的 AI 遇到难题喜欢“大改特改”(像狂战士 Berserker),而 Prometheus 指导下的 AI 变成了“手术刀”(Surgical),只做最小、最必要的修改。

一个有趣的例子
有一个数学库的 bug,以前的 AI 可能会把整个计算逻辑重写。但 Prometheus 生成的“合同”要求极高的数学精度,于是 AI 像数学家一样,推导出了一个新的数学公式(贝塔函数)来替换旧的近似算法,完美解决了问题。

4. 核心启示:不是模型不够大,是问题没问对

这篇论文告诉我们一个深刻的道理:
未来的 AI 编程,关键不在于训练一个更聪明的“大脑”(更大的模型),而在于学会如何提出一个更清晰的“问题”(精确的规格说明)。

  • 旧模式:给 AI 一个模糊的问题 -> AI 靠猜 -> 结果往往很糟糕。
  • 新模式(Prometheus):先让 AI 把问题定义清楚(写成可执行的合同) -> 验证合同 -> 再让 AI 去解决 -> 结果精准完美。

总结

Prometheus 就像给 AI 装上了一个**“逻辑刹车”“导航仪”。它不再让 AI 盲目地尝试修复代码,而是强迫 AI 先理解“到底要修什么”,并把这个理解变成一份机器能执行的合同**。

这就好比,以前我们让 AI 修车,它可能把发动机拆了换轮胎;现在,我们先让 AI 写一份“维修说明书”,确认了是“轮胎漏气”后,它才去换轮胎。这种**“先定规矩,后干活”**的思路,让 AI 从“乱改代码的狂人”变成了“精准修复的专家”。

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

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

试用 Digest →