Abstain and Validate: A Dual-LLM Policy for Reducing Noise in Agentic Program Repair
本文引入了一种结合了缺陷弃权与补丁验证的双 LLM 策略框架,通过在人工审查前过滤掉极不可能被修复的缺陷和次优补丁,从而显著降低噪声并提高工业级智能体自动化程序修复的成功率。
原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明
想象一下,你有一个非常有才华但有点过于急躁的机器人助手,名叫“修复机器人(Repair-Bot)”。你的工作是在一个巨大的仓库(公司的代码库)里修理成千上万件损坏的东西。修复机器人很擅长尝试修复事物,但它也容易犯错、浪费时间,并提出一些根本行不通的修复方案。
如果你让修复机器人向你展示它尝试修复的每一件事,你会感到应接不暇。你会整天都在查看错误的建议,感到沮丧,并最终不再信任这个机器人。
这篇论文介绍了一个两步走的“守门员(Gatekeeper)”系统,旨在在噪音到达你的办公桌之前将其拦截。你可以把它想象成夜店的保安和工厂的质检员。
问题所在:过多的噪音
在软件世界中,“漏洞(bugs)”是代码中的错误。自动化系统(称为智能自动程序修复,即 Agentic APR)试图修复这些漏洞。但这些系统经常尝试修复那些对它们来说过于困难的漏洞,或者生成的“补丁(patches)”(代码变更)看起来还可以,但实际上是错误的。
- 结果: 开发人员浪费时间在审查糟糕的修复方案上。
- 目标: 只向开发人员展示那些极有可能奏效的修复方案。
解决方案:双重门禁系统
作者提出了两个作为过滤器(类似于漏斗)的策略。
第一道门: “漏洞弃权”(保安)
- 它做什么: 在机器人甚至尝试修复漏洞之前,这道门会先查看漏洞报告(问题的描述)。
- 类比: 想象你是一个夜店的保安。你看着试图进入的人(漏洞)。如果这个人看起来太困惑、描述太模糊,或者问题看起来用现有的工具无法解决,你会说:“抱歉,你不能进来。”
- 它是如何工作的: 一个 AI 模型阅读漏洞报告并询问:“我们的机器人真的能修复这个吗?”如果答案是“可能不行”,系统就会弃权(拒绝尝试)。它节省了机器人的能量,更重要的是,它节省了人类开发人员去查看失败尝试的时间。
- 论文的说法: 通过扮演保安的角色,这道门过滤掉了那些“不可能”的漏洞。它将通过此门的漏洞成功率从约 11% 提高到了 21%(使用特定的准则)。
第二道门: “补丁验证”(质检员)
- 它做什么: 如果机器人确实尝试修复了一个漏洞并产生了一个补丁,这道门会检查结果。
- 类比: 想象机器人制造了一个新的发动机零件。在安装之前,一名质检员会根据蓝图进行检查。质检员不仅看零件本身;他们首先会根据问题描述写下一份关于“完美零件”应该长什么样的“配方”。然后,他们会将机器人的零件与这份配方进行对比。
- 它是如何工作的:
- AI 根据漏洞报告编写一份“规范(specification)”(一套关于正确修复的规则)。
- 第二个 AI 查看机器人的实际代码变更和该规范。
- 它给出一个评分:“看起来不错”、“看起来很糟”或“我不确定”。
- 如果评分过低,补丁将被拒绝。
- 论文的说法: 这道门捕捉到了机器人的错误。即使机器人尝试修复了一个漏洞,这道门也可以说:“不,那不是正确的修复方式。”这本身就能将展示出的补丁成功率提高到约 29%。
完美的组合:漏斗
当你将两道门结合在一起使用时,它们就像一个高效的漏斗。
- 第一道门阻止了不可能的问题进入系统。
- 第二道门阻止了糟糕的解决方案离开系统。
结果:
- 基准线: 在没有任何门禁的情况下,开发人员每 10 次看到修复方案时,只有 1 次是有效的(11%)。
- 使用两道门: 如果你将门禁设置得非常严格(只展示最优秀的候选方案),开发人员每 2 次看到修复方案时,就有 1 次是有效的(53%)。
- 权衡: 你必须接受展示的漏洞总量会减少的事实。系统会过滤掉许多漏洞,以确保它展示出的那部分内容是高质量的。
关于机器生成的漏洞怎么办?
论文还针对由计算机自动发现的漏洞(例如“空指针异常”或内存错误)进行了测试。这些漏洞通常带有清晰的指令(如堆栈跟踪信息)。
- 对于这些漏洞,他们不需要“保安”(第一道门),因为计算机已经知道这些是可修复的。
- 然而,“质检员”(第二道门)仍然发挥了作用,显著提高了被接受补丁的成功率。
总结
这篇论文并不声称让机器人修复漏洞的能力变得更聪明。相反,它声称让向人类展示修复方案的过程变得更加聪明。通过使用两道 AI “守门员”来过滤噪音,开发人员不再把时间浪费在糟糕的想法上,并开始重新信任自动化系统。
简而言之: 这不是关于修复更多的漏洞,而是关于修复正确的漏洞,这样人类就不会因为盯着错误的东西看而感到疲惫。
您所在领域的论文太多了?
获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。