Turning the Tide: Repository-based Code Reflection

📄 arXiv: 2507.09866v1 📥 PDF

作者: Wei Zhang, Jian Yang, Jiaxi Yang, Ya Wang, Zhoujun Li, Zeyu Cui, Binyuan Hui, Junyang Lin

分类: cs.SE, cs.AI

发布日期: 2025-07-14


💡 一句话要点

提出LiveRepoReflection基准与RepoReflection-Instruct数据集,提升代码大模型在代码仓库中的代码反思能力

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

关键词: 代码大语言模型 代码仓库 代码反思 基准测试 指令调优

📋 核心要点

  1. 现有代码大模型在代码仓库级别的代码修改和反思能力不足,缺乏针对性的评测基准。
  2. 提出LiveRepoReflection基准和RepoReflection-Instruct数据集,用于评估和提升模型在多文件仓库中的代码理解和生成能力。
  3. 通过两轮对话过程训练RepoReflectionCoder,涉及代码生成和错误驱动修复,并在LiveRepoReflection基准上进行评估。

📝 摘要(中文)

代码大语言模型(LLMs)通过理解和生成跨语言的代码来增强编程能力,通过反思提供智能反馈、错误检测和代码更新,从而提高开发效率和可访问性。虽然基准测试(如HumanEval/LiveCodeBench)评估了代码生成和实际相关性,但之前的工作忽略了在代码仓库中修改代码的场景。考虑到在提高反思能力和避免动态基准测试中的数据污染方面仍然存在挑战,我们引入了LiveRepoReflection,这是一个具有挑战性的基准,用于评估多文件仓库上下文中的代码理解和生成,包含1,888个经过严格过滤的测试用例,涵盖6种编程语言,以确保多样性、正确性和高难度。此外,我们创建了RepoReflection-Instruct,这是一个大规模、经过质量过滤的指令调优数据集,来源于不同的来源,用于通过涉及代码生成和错误驱动修复的两轮对话过程来训练RepoReflectionCoder。排行榜评估了超过40个LLM,以反映基于仓库的代码反思的模型性能。

🔬 方法详解

问题定义:现有代码大语言模型在代码生成方面取得了显著进展,但它们在真实的代码仓库环境中进行代码修改和反思的能力仍然有限。现有的基准测试主要关注单文件代码生成,忽略了多文件依赖和上下文信息,无法有效评估模型在复杂代码库中的表现。此外,动态基准测试容易受到数据污染的影响,导致评估结果不准确。

核心思路:本文的核心思路是构建一个更具挑战性和代表性的基准测试,即LiveRepoReflection,以及一个大规模的指令调优数据集RepoReflection-Instruct,用于评估和提升代码大模型在代码仓库级别的代码理解和生成能力。通过错误驱动的修复机制,使模型能够更好地反思和改进其生成的代码。

技术框架:整体框架包括两个主要部分:LiveRepoReflection基准测试和RepoReflection-Instruct数据集。LiveRepoReflection基准测试包含1,888个测试用例,涵盖6种编程语言,用于评估模型在多文件仓库环境中的代码理解和生成能力。RepoReflection-Instruct数据集用于训练RepoReflectionCoder模型,该模型通过两轮对话过程进行训练,第一轮生成代码,第二轮根据错误信息修复代码。

关键创新:该论文的关键创新在于提出了LiveRepoReflection基准测试,它更真实地反映了实际软件开发中的代码修改场景,并避免了数据污染问题。此外,RepoReflection-Instruct数据集的构建和两轮对话训练方法也为提升代码大模型的反思能力提供了新的思路。

关键设计:LiveRepoReflection基准测试的测试用例经过严格过滤,确保多样性、正确性和高难度。RepoReflection-Instruct数据集来源于不同的开源项目,并经过质量过滤,以保证数据的质量。两轮对话训练过程采用错误驱动的修复机制,使模型能够根据错误信息改进其生成的代码。具体的参数设置、损失函数和网络结构等细节在论文中未详细描述,属于未知信息。

🖼️ 关键图片

fig_0
fig_1
fig_2

📊 实验亮点

论文构建了包含1,888个测试用例的LiveRepoReflection基准,涵盖6种编程语言,并评估了超过40个LLM。通过RepoReflection-Instruct数据集训练的RepoReflectionCoder模型在LiveRepoReflection基准上取得了显著的性能提升,表明该方法能够有效提升代码大模型在代码仓库中的代码反思能力。具体的性能数据和提升幅度在论文中未详细给出,属于未知信息。

🎯 应用场景

该研究成果可应用于智能代码助手、自动化代码审查、代码自动修复等领域,提高软件开发效率和代码质量。通过提升代码大模型在代码仓库中的代码理解和生成能力,可以更好地支持开发者进行代码维护和演进,降低开发成本。

📄 摘要(原文)

Code large language models (LLMs) enhance programming by understanding and generating code across languages, offering intelligent feedback, bug detection, and code updates through reflection, improving development efficiency and accessibility. While benchmarks (e.g. HumanEval/LiveCodeBench) evaluate code generation and real-world relevance, previous works ignore the scenario of modifying code in repositories. Considering challenges remaining in improving reflection capabilities and avoiding data contamination in dynamic benchmarks, we introduce LiveRepoReflection, a challenging benchmark for evaluating code understanding and generation in multi-file repository contexts, featuring 1,888 rigorously filtered test cases across $6$ programming languages to ensure diversity, correctness, and high difficulty. Further, we create RepoReflection-Instruct, a large-scale, quality-filtered instruction-tuning dataset derived from diverse sources, used to train RepoReflectionCoder through a two-turn dialogue process involving code generation and error-driven repair. The leaderboard evaluates over 40 LLMs to reflect the model performance of repository-based code reflection.