From Completion to Editing: Unlocking Context-Aware Code Infilling via Search-and-Replace Instruction Tuning

📄 arXiv: 2601.13384v1 📥 PDF

作者: Jiajun Zhang, Zeyu Cui, Jiaxi Yang, Lei Zhang, Yuheng Jing, Zeyao Ma, Tianyi Bai, Zilei Wang, Qiang Liu, Liang Wang, Binyuan Hui, Junyang Lin

分类: cs.SE, cs.CL

发布日期: 2026-01-19


💡 一句话要点

提出Search-and-Replace Infilling框架,解决代码补全中上下文错误修正难题。

🎯 匹配领域: 支柱九:具身大模型 (Embodied Foundation Models)

关键词: 代码补全 上下文感知 指令微调 搜索和替换 代码编辑

📋 核心要点

  1. 现有FIM代码补全方法难以修正上下文错误,且依赖不安全的基础模型,限制了其应用。
  2. SRI框架通过搜索和替换,将agentic验证编辑机制融入单次推理,实现上下文感知的动态编辑。
  3. 实验表明,SRI-Coder仅用少量数据即可超越基础模型,同时保持通用编码能力和低延迟。

📝 摘要(中文)

现有的代码补全方法主要依赖于Fill-in-the-Middle (FIM)范式,但其无法修正上下文错误,且依赖于不安全的基础模型。虽然Chat LLMs提供了安全性,Agentic工作流提供了灵活性,但它们分别存在性能下降和高延迟的问题。为了解决这个困境,我们提出了Search-and-Replace Infilling (SRI)框架,将agentic验证和编辑机制整合到统一的单次推理过程中。通过显式搜索阶段结构化地进行编辑,SRI协调了补全任务与Chat LLMs的指令遵循先验,将范式从静态填充扩展到动态的上下文感知编辑。我们合成了高质量的数据集SRI-200K,并微调了SRI-Coder系列。广泛的评估表明,使用最少的数据(20k个样本),SRI-Coder使Chat模型能够超越其基础模型的补全性能。关键的是,与FIM风格的微调不同,SRI保留了一般的编码能力,并保持了与标准FIM相当的推理延迟。我们使用SRI增强了整个Qwen3-Coder系列,鼓励开发者社区利用该框架进行高级自动补全和辅助开发。

🔬 方法详解

问题定义:现有代码补全方法,特别是Fill-in-the-Middle (FIM)范式,主要关注于在给定上下文的情况下填充缺失的代码片段。然而,这种方法的一个主要痛点是它无法有效地修正上下文中已经存在的错误或不一致性。此外,直接使用未经对齐的基础模型可能引入安全风险。

核心思路:SRI的核心思路是将代码补全任务视为一个搜索和替换的过程。它不是简单地填充缺失的代码,而是首先搜索上下文中需要修改的部分,然后用更正后的代码替换它们。这种方法借鉴了agentic工作流中的验证和编辑机制,但将其整合到单个推理步骤中,从而提高了效率。

技术框架:SRI框架包含两个主要阶段:搜索阶段和替换阶段。在搜索阶段,模型分析给定的代码上下文,识别需要修改或更正的部分。这可以通过各种技术实现,例如使用注意力机制来突出显示潜在的错误区域。在替换阶段,模型生成更正后的代码片段,并将其替换到原始代码中。整个过程通过指令微调进行优化,使得模型能够更好地理解和执行搜索和替换操作。

关键创新:SRI最重要的技术创新点在于它将代码补全任务从静态的填充问题转化为动态的上下文感知编辑问题。与传统的FIM方法不同,SRI能够识别和修正上下文中已经存在的错误,从而生成更准确和一致的代码。此外,SRI通过将agentic验证和编辑机制整合到单个推理步骤中,提高了效率并降低了延迟。

关键设计:SRI的关键设计包括:1) SRI-200K数据集,用于指令微调,包含高质量的搜索和替换示例。2) 使用Chat LLMs作为基础模型,并进行微调,以使其能够执行搜索和替换操作。3) 损失函数的设计,旨在优化模型在搜索和替换阶段的性能。具体的网络结构和参数设置可能因所使用的基础模型而异,论文中可能未详细说明(未知)。

🖼️ 关键图片

fig_0
fig_1
fig_2

📊 实验亮点

SRI-Coder在代码补全任务上表现出色,仅使用20k样本进行微调,即可超越其基础模型。与FIM风格的微调不同,SRI在提升补全性能的同时,保留了模型的一般编码能力,并保持了与标准FIM相当的推理延迟。SRI框架已应用于Qwen3-Coder系列,证明了其有效性和实用性。

🎯 应用场景

SRI框架具有广泛的应用前景,可用于智能IDE中的代码自动补全、代码修复和代码重构等任务。它可以帮助开发者更高效地编写代码,减少错误,并提高代码质量。此外,SRI还可以应用于自动化代码审查和代码生成等领域,具有重要的实际价值和未来影响。

📄 摘要(原文)

The dominant Fill-in-the-Middle (FIM) paradigm for code completion is constrained by its rigid inability to correct contextual errors and reliance on unaligned, insecure Base models. While Chat LLMs offer safety and Agentic workflows provide flexibility, they suffer from performance degradation and prohibitive latency, respectively. To resolve this dilemma, we propose Search-and-Replace Infilling (SRI), a framework that internalizes the agentic verification-and-editing mechanism into a unified, single-pass inference process. By structurally grounding edits via an explicit search phase, SRI harmonizes completion tasks with the instruction-following priors of Chat LLMs, extending the paradigm from static infilling to dynamic context-aware editing. We synthesize a high-quality dataset, SRI-200K, and fine-tune the SRI-Coder series. Extensive evaluations demonstrate that with minimal data (20k samples), SRI-Coder enables Chat models to surpass the completion performance of their Base counterparts. Crucially, unlike FIM-style tuning, SRI preserves general coding competencies and maintains inference latency comparable to standard FIM. We empower the entire Qwen3-Coder series with SRI, encouraging the developer community to leverage this framework for advanced auto-completion and assisted development.