← 最新论文
💻 computer science

HAFix: History-Augmented Large Language Models for Bug Fixing

本文提出了 HAFix,一种通过聚合七种历史启发式信息来增强大语言模型(LLM)修复能力的新方法,实验表明该方法在 BugsInPy 和 Defects4J 数据集上显著提升了修复率,并确定了指令式提示风格为最优方案。

原作者: Yu Shi, Abdul Ali Bangash, Emad Fallahzadeh, Bram Adams, Ahmed E. Hassan

发布于 2026-02-20
📖 1 分钟阅读☕ 轻松阅读

原作者: Yu Shi, Abdul Ali Bangash, Emad Fallahzadeh, Bram Adams, Ahmed E. Hassan

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

这是一篇关于如何利用**“历史经验”来让人工智能(AI)更擅长“修 Bug(代码错误)”**的研究报告。

为了让你轻松理解,我们可以把写代码想象成盖房子,把AI 模型想象成一位天才但有点“健忘”的建筑师

1. 核心问题:天才建筑师为什么也会修错房子?

现在的 AI(大语言模型)非常聪明,能写代码、能改错。但是,它们通常有一个毛病:只看眼前,不看历史

  • 现状:当你要 AI 修一个 Bug 时,你通常只给它看**“现在的图纸”**(当前版本的代码)。
  • 比喻:这就像你指着房子墙上的一个裂缝问建筑师:“这里裂了,怎么修?”建筑师只看裂缝,却完全不知道这面墙以前是谁砌的、为什么砌成那样、之前有没有人动过这里
  • 后果:因为缺乏背景知识,建筑师可能会用一种“看起来能补上,但以后还会裂”的方法去修,或者根本修不对。

2. 解决方案:HAFix(给建筑师一本“历史日记”)

这篇论文提出了一种叫 HAFix 的新方法。它的核心思想是:别只给 AI 看现在的图纸,把房子的“历史日记”也给它看!

  • 什么是“历史日记”?
    在软件开发中,每一次代码的修改都会被记录下来(就像 Git 提交记录)。这篇论文利用了一个叫**“ blame commit(责任提交)”**的概念。

    • 比喻:想象一下,这面墙上的裂缝,是张三去年某天改的。HAFix 会去翻出张三那天为什么改墙当时还改了哪些地方他用了什么材料
    • 具体做法:研究者从历史记录中提取了7 种线索(比如:当时改了哪些文件?哪些函数一起变了?代码具体哪里动了?)。
  • HAFix 怎么工作?
    它把这 7 种历史线索整理好,像讲故事一样讲给 AI 听:“嘿,这个 Bug 是因为张三去年改这里时,不小心把隔壁的窗户也带歪了。你看,这是当时的情况……"
    有了这些背景,AI 就能更精准地找到病根,开出正确的“药方”。

3. 实验结果:历史经验真的有用吗?

研究者找了两个大数据库(一个是 Python 项目,一个是 Java 项目),里面有几百个真实的 Bug。他们让 AI 在**“只看眼前”“看了历史日记”**两种情况下修 Bug。

  • 结果惊人
    • 单独看:有些历史线索(比如“当时改了哪些函数”)特别管用,修好的 Bug 数量比只看眼前多了40%~50%
    • 组合拳(HAFix-Agg):如果把 7 种线索都结合起来,让 AI 从不同角度去分析,效果更是爆炸式增长
    • 比喻:就像医生看病,以前只给 AI 看“发烧”这个症状;现在 HAFix 把“病人昨天吃了什么、家族病史、最近去过哪里”都告诉 AI。结果 AI 确诊率大幅提升,甚至能治好以前治不好的疑难杂症。

4. 两个关键发现:怎么问很重要,怎么省钱也很重要

除了“看历史”,论文还发现了两个有趣的点:

A. 提问的方式(Prompt)很重要

研究者尝试了三种问法:

  1. 直接指令:“这是代码,这里有个错,帮我修。”(效果最好
  2. 标记指令:在代码里把错的地方标红,说“修这里”。
  3. 填空指令:把错的地方挖空,让 AI 填空。

结论:对于这种需要结合历史背景的任务,**直接、清晰的指令(Instruction)**效果最好。就像你给助手下命令,直接说“把墙修好,参考张三去年的做法”,比让他猜谜或者填空更有效。

B. 别“死磕”,学会“见好就收”(成本分析)

给 AI 看历史日记,虽然效果好,但代价大(需要更多的计算时间,消耗更多的“算力币”)。

  • 全量模式(Exhaustive):不管修没修好,把 7 种历史线索全跑一遍。这就像为了修一个裂缝,把整栋房子的历史档案全翻一遍,太慢了。
  • 早停模式(Early Stop):一旦 AI 用某一种线索修好了 Bug,立刻停止,不再尝试其他线索。
  • 结论:使用“早停”策略,可以在保持修好率几乎不变的情况下,节省 69% 的时间和 73% 的算力成本!这就像:你问第一个专家,他修好了,你就别问第二个、第三个专家了,既省钱又省时。

5. 总结:这对我们意味着什么?

这篇论文告诉我们,在让 AI 做软件开发工作时:

  1. 不要只给 AI 看“现在”:把**“过去”**(代码的历史演变)告诉它,它能变得更聪明、更靠谱。
  2. 要会“讲故事”:用清晰的方式把历史背景讲给 AI 听,效果最好。
  3. 要懂得“性价比”:不需要每次都把所有历史都翻一遍,学会在修好 Bug 后及时止损,能大大降低成本。

一句话总结
HAFix 就是给 AI 修 Bug 配了一本“历史回忆录”,让它不再是个“健忘”的修理工,而是一个懂行情的“老法师”,既修得快,又修得准,还懂得怎么省钱。

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

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

试用 Digest →