论文

AgentSZZ:教 LLM 代理通过引发错误的提交来扮演侦探

AgentSZZ: Teaching the LLM Agent to Play Detective with Bug-Inducing Commits

摘要

SZZ 算法是识别引起错误的提交的主要技术,并支持许多软件工程任务,例如缺陷预测和漏洞分析。尽管存在多种变体,包括最近基于 LLM 的方法,但在开发人员注释的数据集上性能仍然有限(例如,Linux 内核上的 0.552 的召回)。一个关键的限制是对 gitblame 的依赖,它跟踪同一文件内的行级更改,在常见情况下失败,例如幽灵和跨文件情况,使得近四分之一的错误引发提交本质上无法跟踪。此外,当前的方法遵循固定的管道,限制了迭代推理和探索,这与通过交互式多工具流程调查错误的开发人员不同。为了应对这些挑战,我们提出了 AgentSZZ,这是一个基于代理的框架,它利用 LLM 驱动的代理来探索存储库并识别引起错误的提交。与之前的方法不同,AgentSZZ 集成了特定于任务的工具、领域知识和 ReAct 式循环,以实现错误的自适应和因果跟踪。结构化压缩模块通过减少冗余上下文同时保留关键证据来进一步提高效率。对三个广泛使用的数据集进行的大量实验表明,AgentSZZ 在所有设置中始终优于最先进的 SZZ 算法,与之前基于 LLM 的方法相比,F1 分数增益高达 27.2%。这些改进在跨文件和幽灵提交等具有挑战性的场景中尤其明显,召回率分别提高了 300% 和 60%。消融研究表明,特定于任务的工具和领域知识至关重要,而压缩工具的输出可将词元消耗减少 30% 以上,而影响可以忽略不计。复制包可用。