Persistent Cross-Attempt State Optimization for Repository-Level Code Generation
作者: Ruwei Pan, Jiangshuai Wang, Qisheng Zhang, Yueheng Zhu, Linhao Wu, Zixiong Yang, Yakun Zhang, Lu Zhang, Hongyu Zhang
分类: cs.SE, cs.AI
发布日期: 2026-04-07
💡 一句话要点
LiveCoder:通过跨尝试状态优化提升代码仓库级代码生成效果
🎯 匹配领域: 支柱九:具身大模型 (Embodied Foundation Models)
关键词: 代码生成 大型语言模型 跨尝试优化 知识库 代码仓库
📋 核心要点
- 现有代码仓库级代码生成方法在多次尝试解决同一任务时,无法有效利用先前尝试的状态信息,导致效率低下。
- LiveCoder框架通过维护成功知识、失败知识和历史最佳仓库,实现跨尝试的任务特定状态优化,指导后续代码生成。
- 实验结果表明,LiveCoder显著提升了代码生成的功能得分和仓库重用率,同时降低了成本,且保持了非功能质量。
📝 摘要(中文)
大型语言模型(LLMs)在代码仓库级代码生成方面取得了显著进展。然而,解决同一代码仓库级任务通常需要多次尝试,而现有方法仍然孤立地优化每次尝试,并且不保留或重用跨尝试的任务特定状态。本文提出了LiveCoder,这是一个基于跨尝试知识优化的代码仓库级代码生成新框架。LiveCoder维护来自先前尝试的持久性任务特定状态,以指导后续生成。此状态包括成功知识(捕获来自先前强大代码仓库的可重用信号)、失败知识(记录不成功的输出及其诊断信号)以及历史最佳代码仓库(保留迄今为止发现的最强结果并防止回归)。这些组件共同将重复的代码仓库生成转换为持久的、知识驱动的优化过程。我们在两个代表性的代码仓库级代码生成基准上,使用四个前沿LLM评估了LiveCoder。大量的实验结果证明了LiveCoder的有效性和效率,在RAL-Bench上将功能得分提高了高达22.94个百分点,将代码仓库重用率提高到81.58%,并将成本降低了高达53.63%,同时保持了广泛稳定的非功能质量。
🔬 方法详解
问题定义:现有代码仓库级代码生成方法在解决同一任务时,通常需要多次尝试。然而,这些方法将每次尝试视为独立的,忽略了先前尝试中蕴含的有用信息,例如成功的代码片段、失败的模式以及历史最佳结果。这种孤立的优化方式导致效率低下,浪费计算资源,并且可能无法达到最优的生成效果。
核心思路:LiveCoder的核心思路是利用跨尝试的知识优化来指导代码生成。它维护一个持久的任务特定状态,该状态包含成功知识、失败知识和历史最佳仓库。成功知识用于捕获可重用的代码片段和模式,失败知识用于避免重复犯错,历史最佳仓库用于防止性能回退。通过这种方式,LiveCoder将重复的代码仓库生成过程转化为一个持久的、知识驱动的优化过程。
技术框架:LiveCoder框架主要包含以下几个模块:1) 代码生成器:使用大型语言模型生成代码仓库。2) 成功知识库:存储先前尝试中成功的代码片段和模式。3) 失败知识库:记录先前尝试中失败的输出及其诊断信号。4) 历史最佳仓库:保存迄今为止发现的最强结果。5) 知识融合模块:将成功知识、失败知识和历史最佳仓库的信息融合到代码生成过程中,以指导生成。整个流程是迭代进行的,每次尝试都会更新知识库和历史最佳仓库。
关键创新:LiveCoder的关键创新在于其跨尝试状态优化机制。与现有方法不同,LiveCoder能够有效地利用先前尝试的信息来指导后续生成。这种机制使得LiveCoder能够更有效地探索代码空间,更快地找到最优解,并且能够防止性能回退。此外,LiveCoder的知识融合模块能够将不同类型的知识有效地结合起来,从而提高代码生成的质量。
关键设计:LiveCoder的具体实现细节包括:1) 成功知识的提取方法:例如,可以使用代码相似度度量来识别可重用的代码片段。2) 失败知识的表示方法:例如,可以使用错误信息和代码片段的组合来表示失败的模式。3) 知识融合的方法:例如,可以使用注意力机制来将不同类型的知识融合到代码生成过程中。4) 历史最佳仓库的更新策略:例如,可以使用代码质量评估指标来选择最佳仓库。
🖼️ 关键图片
📊 实验亮点
实验结果表明,LiveCoder在RAL-Bench基准测试中,相比于基线模型,功能得分提升了高达22.94个百分点,代码仓库重用率提高到81.58%,成本降低了高达53.63%。这些结果充分证明了LiveCoder在代码仓库级代码生成方面的有效性和效率。同时,LiveCoder在保持非功能质量方面也表现良好。
🎯 应用场景
LiveCoder可应用于各种代码自动生成场景,例如软件开发、自动化测试和代码修复。它可以帮助开发者更高效地生成高质量的代码,降低开发成本,并提高软件的可靠性。此外,LiveCoder还可以用于教育领域,帮助学生学习编程和理解代码。
📄 摘要(原文)
Large language models (LLMs) have achieved substantial progress in repository-level code generation. However, solving the same repository-level task often requires multiple attempts, while existing methods still optimize each attempt in isolation and do not preserve or reuse task-specific state across attempts. In this paper, we propose LiveCoder, a novel framework for repository-level code generation based on cross-attempt knowledge optimization. LiveCoder maintains persistent task-specific state from prior attempts to guide subsequent generation. This state includes success knowledge, which captures reusable signals from previously strong repositories, failure knowledge, which records unsuccessful outcomes and their diagnostic signals, and a historical-best repository, which preserves the strongest result found so far and prevents regression. These components collectively transform repeated repository generation into a persistent, knowledge-driven optimization process. We evaluate LiveCoder using four frontier LLMs on two representative repository-level code generation benchmarks. Extensive experimental results demonstrate the effectiveness and efficiency of LiveCoder, improving the functional score by up to 22.94 percentage points, increasing repository reuse to 81.58%, and reducing cost by up to 53.63% on RAL-Bench while maintaining broadly stable non-functional quality.