作者:Asif Razzaq
在软件开发中使用AI在大型语言模型(LLMS)的出现中获得了吸引力。这些模型能够执行与编码相关的任务。这种转变导致了自主编码代理的设计,这些编码代理有助于人类开发人员传统上执行的任务。这些代理从简单的脚本作者到能够导航代码库和诊断错误的复杂系统。最近,重点已转向使这些代理人应对更复杂的挑战。尤其是与广泛而复杂的软件环境相关的。这包括基础系统软件,精确的更改不仅需要了解直接代码,还需要了解其架构上下文,相互依赖性和历史发展。因此,人们对建筑物的兴趣越来越多,该建筑物可以执行深入的推理并综合人类干预措施的修复或变化。
更新大规模系统代码由于其固有的尺寸,复杂性和历史深度而提出了多方面的挑战。这些系统(例如操作系统和网络堆栈)由数千个相互依存的文件组成。数十年来,众多贡献者将它们改进了。这导致了高度优化的低级实现,即使是微小的改变也会触发级联效应。此外,在这些环境中的传统错误描述通常采用原始崩溃报告和堆栈痕迹的形式,通常没有指导自然语言提示。结果,诊断和修复此类代码中的问题需要深入的上下文理解。这不仅需要对代码当前逻辑的掌握,还需要对其过去修改和全球设计约束的认识。自动化此类诊断和维修仍然难以捉摸,因为它需要广泛的推理,即大多数编码剂都无法执行。
流行的编码代理(例如SWE-Agent和OpenHands)利用大型语言模型(LLMS)进行自动错误修复。但是,它们主要关注较小的应用程序级代码库。这些代理通常依靠人类提供的结构性问题描述来缩小其搜索并提出解决方案。诸如AutoCoderover之类的工具使用基于语法的技术探索代码库。它们通常仅限于python等特定语言,并避免系统级的复杂性。此外,这些方法都不包含“提交历史”中的代码进化见解,这是在处理大规模代码库中的遗留错误时的重要组成部分。虽然有些人将启发式方法用于代码导航或编辑发电,但他们无法深入跨代码库进行推理,并考虑历史上下文限制了它们在解决复杂的系统级别崩溃方面的有效性。
Microsoft Research的研究人员介绍了代码研究员,专门针对系统级代码调试设计的深入研究代理。与先前的工具不同,该代理不依赖于故障文件的预定义知识,而是在完全无助的模式下运行。它在Linux内核崩溃基准和一个多媒体软件项目上进行了测试,以评估其概括性。代码研究人员旨在执行多相策略。首先,它使用各种探索性动作(例如符号定义查找和模式搜索)来分析崩溃上下文。其次,它基于累积证据合成补丁解决方案。最后,它使用自动测试机制验证了这些补丁。该代理利用工具探索代码语义,识别功能流并分析提交历史。这是以前在其他系统中没有的关键创新。通过这个结构化的过程,代理不仅作为错误修复器,而且作为自治研究人员运行。在介入代码库之前,它收集数据并形成假设。
代码研究人员的功能分为三个定义的阶段:分析,合成和验证。在分析阶段,代理首先处理崩溃报告并启动迭代推理步骤。每个步骤都包括搜索符号的工具调用,使用正则表达式扫描代码模式,并探索历史提交消息和差异。例如,代理商可能会在过去的承诺中搜索诸如“内存泄漏”之类的术语,以了解可能引入不稳定的代码更改。它构建的内存是结构化的,记录所有查询及其结果。当它确定已经收集了足够的相关上下文时,它会过渡到合成阶段。在这里,它通过识别一个或多个潜在的故障片段来滤除无关数据并生成补丁程序,即使分布在多个文件中。在最终验证阶段,对原始崩溃方案进行了测试以验证其有效性。仅显示经过验证的解决方案供使用。
从性能方面,代码研究人员对其前任取得了重大改进。当针对Kbenchsyz进行基准测试时,Syzkaller Fuzzer产生的一组Linux内核崩溃了,它使用GPT-4O和5个标题执行预算解决了58%的崩溃。相比之下,SWE-Agent仅管理了37.5%的分辨率。平均而言,Code Researcher探索了每个轨迹的10个文件,明显超过SWE-Agent导航的1.33文件。在两种代理都修改了所有已知错误文件的90个情况下,代码研究人员解决了崩溃的61.1%,而Swe-Agent则解决了37.8%。此外,当仅在贴片生成步骤中使用O1(以推理为中心的模型)时,分辨率保持在58%。这加强了这样一个结论,即强有力的上下文推理极大地增强了调试结果。该方法还在开源多媒体项目FFMPEG上进行了测试。它在10个报告的崩溃中成功生成了碰撞预备的补丁,说明了其超出内核代码的适用性。
总之,这项研究在大规模系统软件的自动调试中提出了引人注目的进步。通过将BUG解决方案视为研究问题,需要探索,分析和假设检验,代码研究人员体现了复杂软件维护中自主代理的未来。它通过自主操作,彻底检查当前代码及其历史演变以及合成经过验证的解决方案来避免以前工具的陷阱。分辨率的显着提高,尤其是在诸如FFMPEG等陌生项目中的显着提高,证明了该方法的鲁棒性和可扩展性。它表明软件代理可以不仅仅是反应式响应者。它们可以充当能够在以前认为过于复杂的环境中做出明智决策的调查助手。
查看一个 纸。这项研究的所有功劳都归该项目的研究人员。另外,请随时关注我们 叽叽喳喳而且不要忘记加入我们的 100K+ ml子雷迪特并订阅 我们的新闻通讯。