← 最新论文
🤖 AI

Improved Bug Localization with AI Agents Leveraging Hypothesis and Dynamic Cognition

本文提出了名为 CogniGent 的新型智能体技术,通过融合因果推理、调用图根因分析及假设测试来模拟开发者调试思维,显著提升了软件缺陷定位的准确率,在多项指标上均优于现有传统及大模型方法。

原作者: Asif Mohammed Samir, Mohammad Masudur Rahman

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

原作者: Asif Mohammed Samir, Mohammad Masudur Rahman

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

这篇论文介绍了一种名为 CogniGent 的新工具,它利用人工智能(AI)代理来帮程序员更快地找到并修复软件中的“坏蛋”(Bug)。

为了让你更容易理解,我们可以把找 Bug想象成在巨大的图书馆里找一本被涂改过的书,或者侦探破案的过程。

1. 以前的方法:像“盲人摸象”

传统的找 Bug 方法主要有两种,但都有点笨:

  • 关键词匹配(IR 方法): 就像你拿着 Bug 报告里的几个词(比如“崩溃”、“红色”),去图书馆里找包含这些词的书。但这有个大问题:Bug 报告里写的是“系统崩溃了”,而代码里写的是“内存溢出”,词不一样,传统的搜索就找不到,就像鸡同鸭讲
  • 孤立分析: 以前的 AI 只看单行代码或单个文件,就像只盯着拼图的一小块,却忽略了这块拼图和旁边拼图的连接关系。很多 Bug 是因为 A 文件调用了 B 文件,B 文件出错导致 A 文件也跟着错,只看局部是发现不了的。

2. 以前的 AI 助手:像“只会背书的实习生”

最近的大语言模型(LLM)很聪明,但它们也有缺点:

  • 缺乏推理能力: 它们像是一个只会背书的实习生,看到 Bug 报告就瞎猜,不知道为什么要去查某段代码。
  • 记性不好(上下文限制): 如果代码太长,它们就记不住前因后果,容易把无关的信息混进来,导致“脑子乱套”。
  • 盲目探索: 它们不知道从哪里开始查,可能会在无关紧要的地方浪费时间。

3. CogniGent 是什么?像“经验丰富的老侦探”

CogniGent 不一样,它模仿了人类资深程序员调试代码时的思考过程,我们称之为“动态认知调试”。它不是一个人,而是一个由 6 个 AI 特工组成的侦探小队

  • 🕵️‍♂️ 重构特工(整理线索): 先把乱七八糟的 Bug 报告(比如用户抱怨“系统卡死了”)整理成清晰的案情描述,去掉废话。
  • 📚 检索特工(初步排查): 去图书馆(代码库)里根据整理好的线索,先找出几本最可疑的书(代码片段)。
  • 🚫 过滤特工(去伪存真): 把那些看起来像嫌疑犯但其实无辜的人(不相关的代码)先剔除掉,只留下最可疑的 10 个。
  • 💡 假设特工(提出猜想): 这是核心!它像侦探一样问:“如果这里是错的,会发生什么?”它会提出几个假设(Hypothesis),比如:“是不是因为那个‘删除’函数没执行?”
  • 🔍 调查特工(顺藤摸瓜): 这是最厉害的一步。它不会只看表面,而是像侦探顺着线索往下查
    • 它发明了一个叫 Click2Cause 的算法。想象一下,你在代码里看到 deleteSnapshot() 这个函数,你会按 Ctrl+Click 跳进去看它干了什么。这个 AI 也会这样做!它会深度优先地顺着函数调用链(Call Graph)一直查下去,看看是谁调用了谁,谁又调用了谁,直到找到真正的“罪魁祸首”。
    • 它还会用草稿纸(Scratchpad) 来记笔记,防止在查太深的时候把自己搞晕,只保留有用的信息。
  • 👁️ 观察特工(最终裁决): 最后,它像一个独立的法官,审查所有调查特工找到的证据,确认哪个假设最靠谱,然后给出一个嫌疑排名

4. 它的超能力:为什么它这么强?

  • 因果推理(Causal Reasoning): 它不只是找“长得像”的词,而是找“因果关系”。比如,它知道因为“回滚操作”失败了,所以“清理快照”的逻辑被跳过了。这种逻辑推理是以前工具做不到的。
  • 动态上下文管理: 它知道什么时候该查深一点,什么时候该停下来,不会在无关的代码里浪费精力。
  • 模拟人类思维: 它不是死板地执行命令,而是像人一样:提出假设 -> 寻找证据 -> 验证假设 -> 推翻或确认

5. 效果如何?

研究人员在 591 个真实的 Bug 报告上测试了它:

  • 排名飙升: 以前传统方法可能要把 Bug 排在第 87 位才能找到,而 CogniGent 直接把它排到了第 1 位
  • 准确率大增: 在文档级别和方法级别的定位上,它的准确率比现有的最好技术提高了 23% 到 53%
  • 多组件 Bug 也能搞定: 即使一个 Bug 涉及好几个文件互相牵连,它也能理清关系,找到源头。

总结

简单来说,CogniGent 就是一个拥有“侦探思维”的 AI 团队。它不再只是机械地搜索关键词,而是像人类专家一样,通过提出假设、顺着逻辑链条深入调查、并在草稿纸上理清思路,从而精准地揪出软件中隐藏最深的 Bug。这不仅能帮程序员省下大量时间,还能让软件更安全、更稳定。

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

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

试用 Digest →