引言:
自动化程序修复(APR)技术旨在借助语言模型(LLM)强大的推理生成能力和程序分析工具简化软件开发过程中编码和维护阶段的时间成本。近年来,在大语言模型(LLM)的反复刷屏过程中,研究人员不断追求通过构建更强大的软件工程智能体实现更精确的 APR 性能。然而,随着相关研究的深入,人们发现复杂的软件工程智能体并不是解决问题的唯一途径,人为设计推理框架在软件工程任务同样出色。因此,如何将智能体的自适应性与低智能体的控制流有机结合是当前的一项挑战。
在本文中,作者从智能体决策的视角剖析了现行软件工程智能体的局限,并基于低智能体框架提出了自适应的改进方案。文章主要聚焦于自适应的缺陷定位与多模型辅助生成两个方面的改进。实验表明,所提出的方法在 SWE-Bench 的函数级定位提高了 46.94% (TOP5)-113.32% (TOP1)并在 Issue solving 任务上达到了 35.67% 这一有竞争力的性能。
简介
一直以来,软件工程都是一项极具挑战的任务。开发人员需要综合运用编码、测试、调试等多种技术来进行软件工程活动。在软件开发的过程中,程序修复所需的时间成本约为软件维护的 50%-75%,因此需要自动化程序修复(APR)技术来降低开发成本并提高开发效率。最近,Issue Solving 任务已经引起学术界和工业界的极大关注。大语言模型(LLM)热度的持续走高促使研究人员构建多样化的软件工程智能体来完成自动程序修复的过程。
目前,Issue Solving 方法主要分为两类:基于智能体的方法和基于低智能体的方法。前者通过构建一系列复杂的 Agent-Computer Interface,使得 LLM 具有访问代码仓库,编写测试用例,执行测试脚本,修复程序等行为,通过自主计划与决策实现 Issue 的修复。这种方法容错性高,适应性强,但往往需要高额的推理成本,同时存在陷入无终止循环的风险。后者通过设计一套人工的修复流程,通过静态分析预先提取代码仓库的全部结构,进而基于定位-修复-筛选的基本流程,分阶段向 LLM 提供相关信息以实现程序修复的目的。这种方法极大的节约了推理成本,但受制于 LLM 的上下文窗口大小,有效信息可能无法被检索或存在丢失。
为了

最低0.47元/天 解锁文章
598

被折叠的 条评论
为什么被折叠?



