SHERLOC:无需训练的代码修复智能体,以结构化诊断突破定位瓶颈
大型语言模型智能体在解决仓库级编程任务时,常将过半算力浪费于故障定位,且现有方法多简化为文件检索,缺乏诊断上下文。本文提出SHERLOC,一种无需训练、微调或多智能体编排的结构化诊断定位框架。该框架结合推理型LLM与紧凑仓库工具及自我恢复机制,在SWE-Bench Lite上达到84.33%准确率,在Verified集上达到81.27%召回率。将其定位结果注入修复智能体后,解决率提升5.95个百分点,同时定位与总Token消耗分别降低36.7%和23.1%,显著提升了代码修复的效率与准确性。
在大型语言模型智能体处理仓库级编程任务的复杂场景中,故障定位往往成为制约效率的关键瓶颈。尽管智能体能够通过多轮工具调用逐步深入代码库,但研究表明,它们常常将超过半数的计算预算消耗在定位故障点之前,而非直接进行代码编辑。这一现象揭示了当前工作流中资源分配的严重失衡。更严峻的是,虽然已有不少专门的定位框架出现,但它们大多被评估为简单的文件检索任务,生成的定位结果缺乏修复智能体真正需要的诊断上下文信息。这种"有位置无解释"的定位方式,导致后续修复阶段需要重新消耗大量资源去理解上下文。针对这一痛点,本研究提出了 SHERLOC(Structured Hypothesis-driven Exploration and Reasoning for Localization),这是一种旨在通过结构化假设驱动探索与推理来实现精准定位的新框架。其核心贡献在于,它不依赖于昂贵的模型微调或多智能体复杂编排,而是通过设计紧凑的仓库工具接口和内置的自我恢复机制,让推理型 LLM 能够以极低的成本获取高质量的诊断信息,从而从根本上优化代码修复的智能体工作流,将资源从盲目的搜索转向精准的修复。
SHERLOC 的技术架构设计体现了极简主义与高效推理的结合。与以往依赖复杂多智能体协作或大规模微调的方法不同,SHERLOC 采用了一种无训练(training-free)的策略。其核心组件包括一个强大的推理型 LLM 作为大脑,以及一组经过精心设计的紧凑仓库工具。这些工具允许智能体以结构化的方式探索代码库,而非进行盲目的遍历。框架的关键创新在于其"自我恢复"机制,当智能体在探索过程中遇到死胡同或定位偏差时,能够基于当前的诊断线索自动调整搜索策略,重新构建假设。这种机制避免了传统方法中因错误定位而导致的无限循环或资源浪费。此外,SHERLOC 强调"结构化诊断",即不仅指出故障所在的代码行,还通过推理过程生成必要的上下文解释,使修复智能体能够直接理解"为什么这里出错"以及"如何修复"。
这种设计使得 SHERLOC 能够在不增加模型参数规模的前提下,显著提升定位的准确性和可解释性,为后续的代码编辑提供了坚实的信息基础。为了验证 SHERLOC 的有效性,研究团队在多个权威基准上进行了广泛的实验,主要包括 SWE-Bench Lite 和 SWE-Bench Verified。实验结果显示,SHERLOC 在不同规模的模型上均达到了最先进的定位性能。具体而言,在 SWE-Bench Lite 上,其 accuracy@1 达到了 84.33%,而在更具挑战性的 SWE-Bench Verified 上,recall@1 达到了 81.27%。值得注意的是,即使在约 30B 参数的模型规模下,SHERLOC 的表现也能匹配甚至超越其他依赖更复杂架构或更大参数的智能体方法。消融实验进一步揭示了其组件的有效性,特别是自我恢复机制和结构化诊断工具对最终定位精度的显著贡献。更重要的是,当将 SHERLOC 生成的定位结果和诊断发现注入到下游的修复智能体中时,SWE-Bench Verified 上的代码解决率平均提升了 5.95 个百分点。
这一提升不仅证明了定位质量的改进,更体现了诊断上下文对修复策略的指导作用。同时,由于定位阶段的效率提升,整个流程的定位 Token 消耗降低了 36.7%,总 Token 消耗降低了 23.1%,实现了性能与效率的双重优化。SHERLOC 的提出对开源社区和工业落地具有深远的意义。首先,它证明了无需微调即可通过优化推理策略和工具设计来提升智能体性能,这降低了高性能代码修复系统的部署门槛。对于工业界而言,Token 消耗的显著降低意味着直接的经济效益,使得在大规模代码库上运行智能体修复任务变得更加可行。其次,SHERLOC 强调的诊断上下文生成,为后续研究提供了新的方向,即如何将"定位"与"修复"更紧密地耦合,而非作为两个独立的阶段。这种结构化诊断的思路可以推广到其他需要复杂推理的软件工程任务中。最后,作为一个无需训练且开源友好的框架,SHERLOC 为社区提供了一个可复现、可扩展的基础设施,鼓励研究者在此基础上探索更高效的智能体协作模式,推动代码自动化修复技术向更实用、更经济的方向发展。