SkillForge: Self-Distilling Agents for Project-Specific Issue Resolution
SkillForge 是一个自我蒸馏框架,它通过合成并解决源自核心功能的虚拟问题,主动增强大语言模型智能体在特定代码库中解决软件问题的能力,从而在不依赖历史修复数据或高昂的测试时探索的情况下,蒸馏出可重用的、基于实体锚定的项目知识。
原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明
在现代软件那广阔而复杂的景观中,代码是构建我们数字世界的基石。当复杂的程序出现故障时,修复它通常不仅需要对损坏的部分有深刻理解,还需要了解该部分如何与整个机器协同工作。几十年来,人类一直是这项工作的核心机械师,但最近,人工智能已开始拿起工具。大型语言模型——这些经过海量文本和代码训练的强大计算机程序——已经展示出它们能够浏览这些数字仓库、寻找漏洞并编写修复方案的能力。然而,一个显著的障碍仍然存在:当面对特定的、陌生的项目时,这些 AI 智能体往往会感到吃力。它们缺乏局部上下文——即那些不成文的规则、不同代码部分之间相互通信的具体方式,以及该特定软件构建过程中的独特历史。没有了这些内部知识,AI 就像是一位被丢进一个从未见过的车库里的天才机械师,每次遇到新问题时都不得不被迫猜测引擎的工作原理。
上海交通大学的研究人员开发了一种解决这一问题的新方法,他们称之为 SkillForge。该系统并非等待 AI 在现实世界的错误中跌跌撞撞并随着时间的推移从错误中学习,而是主动在 AI 尝试进行实际修复之前,就对其进行特定项目的教学。团队意识到,要理解一个项目,AI 需要先在上面进行练习。因此,他们创建了一个训练场,让 AI 生成自己的虚假问题。通过提取软件项目的核心功能(即那些已经被测试过且已知运行正常的部件),并要求 AI 从头开始重写它们,该系统迫使 AI 犯错。由于 AI 无法访问原始代码,它必须依赖其通用知识,这不可避免地会导致与该项目实际构建方式相关的错误。研究人员将这些错误称为“合成问题”,并将它们作为学习工具。AI 尝试修复这些虚假漏洞,并在此过程中揭示了该软件项目的隐藏模式和特定规则。
随后,系统会将 AI 解决这些虚假问题时所采取的路径提炼成一套“技能”。可以将这些技能想象成针对该特定软件的个性化指南手册。研究人员将这些知识组织为两种类型。第一种类型是高层级地图,帮助 AI 理解项目的整体结构,例如不同代码部分的作用及其通常的交互方式。第二种类型是针对 AI 实际编辑代码时的具体指令,提醒它注意常见的陷阱,并告知它项目独特的特性。当 AI 稍后被要求解决该相同软件中的真实问题时,它会查阅这份指南手册。它首先加载高层级地图以确定方位,然后在深入挖掘代码时,会接收到关于其需遵循的特定规则的即时提醒。这一过程是自动完成的,确保 AI 在需要时能获得正确的上下文。
研究人员在广泛的现实世界软件项目上测试了这种方法,并使用了两种不同的强大 AI 模型来验证其有效性。他们将该系统与其它试图通过学习人类过去的修复记录或通过在解决问题时探索代码来辅助 AI 的方法进行了对比。结果非常明确:SkillForge 方法的表现始终优于其他方法。在一项标准的软件工程任务测试中,与没有任何特定项目知识的基准模型相比,该系统将 AI 的成功率提高了近六个百分点。即使研究人员在另一组更具挑战性的难题上测试该系统时,这一提升依然成立。研究表明,通过在正式工作开始前教授 AI 关于特定项目的知识,该系统能够比那些试图在过程中边学边做或依赖可能无法覆盖当前问题的历史数据的模型,更准确、更高效地解决问题。
研究中最具启发性的观察之一是,观察到 AI 的行为如何随着这种新知识而发生变化。在一个涉及流行 Web 框架中复杂格式错误的特定案例中,没有经过此类训练的 AI 很快就采用了一个看似正确但经测试无法满足完整需求要求的简单且错误的解决方案。它忽略了处理数据所需的细微且具有项目特性的逻辑。相比之下,配备了 SkillForge 指南手册的 AI 则采取了更加谨慎、结构化的方法。它停下来考虑项目的特定规则,避开了未经训练的 AI 会掉入的常见陷阱,并最终找到了通过所有必要测试的解决方案。这表明,该系统不仅仅是在给 AI 提供更多信息,而是在从根本上改变它对代码的推理方式,帮助它避免因将通用规则应用于特定、独特环境而导致的错误。
研究人员还探讨了从一个 AI 模型中获得的知识是否可以转移到另一个模型中。他们发现,由一个模型提炼出的技能在由同一个模型使用时最为有效。这表明,这些知识与特定 AI 如何思考和编写代码深度绑定,而非关于软件的通用事实集。这一发现强调了该系统的价值在于其捕捉特定 AI 与特定项目交互方式的能力。此外,研究表明,当系统专注于同时重写多个相互关联的部分,而非仅仅是孤立的单个函数时,效果最好。这种方法捕捉了不同部分之间的复杂交互,而这正是最关键的项目特定知识隐藏的地方。
最终,这项工作为弥合强大的通用 AI 与现实世界软件工程特定需求之间的差距提供了一种新途径。通过从一种“反应式”方法(即 AI 在错误发生后才从错误中学习)转向一种“主动式”方法(即在比赛开始前学习游戏规则),研究人员展示了一条通往更可靠、更强大的软件智能体的路径。该系统不需要庞大的过去人类修复的历史记录来运作,也不要求 AI 在实际修复过程中浪费时间和资源去盲目探索代码。相反,它构建了一个针对性的、高效的知识库,让 AI 能够迅速进入状态。结果表明,要让 AI 真正成为软件开发的合作伙伴,必须给它机会去学习它所从事项目的特定语言和习俗,而 SkillForge 为实现这一点提供了一种切实有效的方法。
您所在领域的论文太多了?
获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。