arXiv cs.AI精选84

先例还是意图?代码代理在演进现有代码时遵循什么

Precedent or Intent? What Coding Agents Follow When Evolving Existing Code

· 1天前

精选理由

揭示编码智能体如何权衡代码惯例与任务意图,助力设计更可靠的协作规则。

AI 摘要

现有代码揭示了过去的实现决策,却很少说明这些决策背后的原因。当代码代理实现新功能或修改现有功能时,过去的决策可能会与新的任务指令相冲突。这引出了智能体驱动的软件演化中的一个基本问题:当多种实现都满足相同的功能需求时,代码代理如何决定是遵循现有代码,还是遵循新的任务指令?我们通过在专门构建的代码仓库中开展双向、受控实验来研究这一问题,随后在真实世界的开源代码仓库中进行验证。我们的方法隔离了三个相互竞争的指导来源:(1)代理的默认偏好;(2)代码仓库中的先例;(3)明确的任务指令。我们在四个代码代理和六组实现对上进行了5,625次试验,并在涵盖三种编程语言的四个开源代码仓库中进行了验证。我们发现,代理具有相同的默认实现选择,但当这些选择与代码仓库中的先例发生冲突时,它们压倒性地遵循代码仓库先例(360次试验中有359次)。关键在于,并非所有先例的影响力都相同:三个支持性的本地文件带来了96%的采用率,而同级资源文件仅带来4%的采用率;在示例数量固定的情况下,仅改变文件位置就能使采用率从0%变为100%。当新的任务意图与现有代码冲突时,书面优先级规则的成功率显著高于仅提供代码示例的情况(对于两个代理和两组实现对,联合成功次数分别为59/60和38/60)。明确规则的有效性同样延伸到了开源代码仓库:在由测试框架加载规则后,联合成功次数从0/120提升至117/120。这些发现促使人们设计可追溯的决策记录,不仅保留实现选择,还保留应当指导未来变更的理由和优先级。

查看原文(arXiv cs.AI)