论文

扩散语言模型应该如何编辑代码?

How Should Diffusion Language Models Edit Code?

模型评测模型行为与机制分析

摘要

代码编辑需要一个模型来决定在哪里进行更改、生成新内容并保留其他所有内容。我们研究掩码扩散语言模型如何将这些职责划分为四个编辑界面:整个文件重写、搜索和替换、定位然后填充和标记级编辑。 CanItEdit 上的实验揭示了一个组合差距:当提供正确的编辑位置时,扩散模型可以生成协调的变化,但当必须预测这些位置时,这种功能大部分会丢失。访问完整的原始代码有助于模型填充多个编辑区域,但不能解决选择这些区域的困难。通过改变可编辑区域,同时保持生成模型和解码过程固定,我们确定了成功编辑的两个不同要求:覆盖每个所需的更改并在其周围放置精确的边界。缺少所需的区域会阻止相应的更改,而扩大区域以确保覆盖范围会要求重新生成未更改的代码,从而大大降低成功率。句子级 Wiki 编辑探针显示,除了代码之外,提供的位置和预测的位置之间也存在相同的定性差距。这些发现表明,为什么仅靠强大的填充功能并不能确保可靠的编辑:界面必须公开所有所需的更改,同时限制未更改代码的重新生成。