← 返回 2026-01-29

软验证高效仓库智能体:SERA SERA: Soft-Verified Efficient Repository Agents

Ethan Shen, Danny Tormoen, Saurabh Shah, Ali Farhadi, Tim Dettmers 📅 2026-01-28 👍 13 2026-07-13 08:35
SWE-bench 代码仓库专门化 合成数据生成 监督微调 编程智能体

通过软验证生成合成轨迹,以极低成本训练出可专门化于私有代码库的开源编程智能体。

前置知识

编程智能体(Coding Agent)

一种能够自主执行软件工程任务的人工智能系统,通常通过工具调用(如查看文件、编辑代码、执行命令)与代码库交互,并在循环中生成动作和观察,直到提交解决方案。其核心能力包括理解自然语言指令、导航代码库、定位问题并生成代码补丁。这类系统通常基于大型语言模型(LLM)构建,并借助“脚手架”(scaffold)定义可用的工具和交互流程。

SERA 的目标就是训练一个高效的编程智能体,理解其基本工作原理是理解本文贡献的基础。

合成数据生成(Synthetic Data Generation)

在编程智能体训练中,指通过程序化方式构造任务(如注入 bug),让强大的教师模型(Teacher Model)解决这些任务,从而生成轨迹(trajectory)和补丁(patch)作为训练数据的过程。这种方法避免了依赖真实用户报告的问题,可以大规模生成数据。传统方法如 SWE-smith 需要测试基础设施和有效的 bug 生成。

SERA 提出了一种全新的合成数据生成方法(SVG),摒弃了传统的 bug 注入和单元测试验证,这是其核心创新之一。

监督微调(Supervised Fine-Tuning, SFT)

一种模型训练方法,使用带标签的数据(在本文中是“轨迹-补丁”对)来微调预训练语言模型的参数,使其适应特定任务。与强化学习(RL)不同,SFT 不需要在线交互或奖励信号,训练过程更简单、稳定且成本更低。它通过最小化预测输出与真实标签之间的差异(如交叉熵损失)来更新模型权重。

SERA 仅使用 SFT 就达到了与复杂 RL 方法相媲美的性能,显著降低了训练门槛和成本,这是其重要优势。

SWE-bench Verified

一个用于评估编程智能体在真实世界软件工程任务上性能的标准基准测试。它包含从 12 个流行 Python 仓库(如 Django、Sympy、Sphinx)的 GitHub issue 和 pull request 中提取的 500 个经人工验证的任务。每个任务要求智能体根据问题描述生成一个补丁,该补丁必须通过仓库的测试套件(即之前失败的测试现在通过,且之前通过的测试没有失败)。

SERA 的所有主要性能指标都在 SWE-bench Verified 上进行评估和比较,这是衡量其有效性的关键标准。

软验证(Soft Verification)

SERA 提出的一种数据质量验证方法。与传统的“硬验证”(要求生成的补丁必须通过单元测试)不同,软验证通过比较生成的补丁(P2)与参考补丁(P1)的行级重叠(line-level recall)来评估质量。如果 $r = |P2 \cap P1| / |P1|$ 超过某个阈值(如 0.5),则认为该轨迹是“软验证”的。这完全不需要测试基础设施,使得从任何代码库生成数据成为可能。

软验证是 SERA 方法的核心,它消除了对单元测试的依赖,极大地扩展了可生成数据的代码库范围,并降低了数据生成的复杂性和成本。

研究动机

当前训练强大的编程智能体主要依赖两种方法,但都存在显著障碍。第一种是强化学习(RL),它需要沙箱化的代码执行环境、复杂的分布式训练基础设施来协调在线轨迹生成与梯度更新,以及精细的奖励塑造。这种复杂性导致团队规模庞大(平均超过 12 名作者),且训练过程极不稳定,对超参数敏感,使得小型学术团队难以实施。第二种是合成数据生成(如 SWE-smith),它通过向代码库注入 bug 并让教师模型修复来生成数据。然而,这同样需要完整的测试基础设施来生成有效的 bug 并验证修复的正确性,成本高昂(每条轨迹约 0.52 美元),且数据生成受限于仓库的测试覆盖率和质量。这些障碍将编程智能体的开发集中在了资源雄厚的工业实验室和大型学术机构手中,阻碍了该领域的广泛研究和创新。

本文的目标是本文旨在打破上述资源壁垒,使编程智能体的训练变得高效、廉价且易于普及。具体目标是:1) 设计一种无需单元测试和复杂 bug 注入流程即可生成高质量训练数据的方法;2) 仅使用简单的监督微调(SFT),而非复杂的强化学习,来训练模型;3) 实现对任意代码库(包括没有测试的私有仓库)的快速专门化;4) 在 SWE-bench Verified 等标准基准上达到最先进或具有竞争力的性能,同时将训练总成本(数据生成+微调)降低一到两个数量级,目标是控制在数千美元以内。

与已有工作不同的是,本文的独特切入点在于对“有效训练数据”本质的重新审视。作者观察到,现实世界中的代码变更(Pull Request)远不止是修复明确的 bug,还包括大量的重构、代码风格优化、文档改进等“模糊”任务。传统方法强制要求数据必须“正确”(通过测试),这其实是一种不必要的限制。SERA 抓住了这个被忽视的点:训练的价值更多地在于学习“如何将意图转化为代码编辑”的技能,而非仅仅记忆正确的修复。基于此洞察,SERA 提出用“软验证”(行级相似度)替代“硬验证”(单元测试),并用“模糊指令”生成多样化的非 bug 修复数据。这一视角的转变,从根本上简化了数据生成流程,移除了对测试基础设施的依赖,从而将编程智能体的专门化从理论上的优势,转变为任何团队都能负担得起的实践。

核心方法

SERA 的方法论可以概括为:通过一种名为“软验证生成”(Soft Verified Generation, SVG)的简化流程,从任意代码库中高效生成高质量的合成训练数据,然后使用这些数据对开源基础模型进行监督微调,从而得到能够专门化于特定代码库的编程智能体。其核心直觉是,传统合成数据流程中的许多复杂组件(如注入 bug、执行单元测试验证)并非必需。SVG 的流程分为两步:第一步,教师模型根据一个随机函数和一个模糊的“bug 类型”描述,尝试对代码库进行修改,生成轨迹 T1 和补丁 P1;第二步,基于 T1 生成一个合成的 Pull Request (PR) 描述,教师模型仅根据这个 PR 描述尝试重现修改,生成轨迹 T2 和补丁 P2。最后,通过比较 P1 和 P2 的行级重叠度(软验证)来筛选数据。整个流程无需执行代码或测试,成本极低。

SERA 最本质的创新在于对“有效训练数据”的定义进行了根本性的重构。传统方法(如 SWE-smith)认为,只有通过单元测试验证的、正确的代码修复轨迹才具有训练价值。SERA 则提出,轨迹的训练价值主要在于它所展示的“技能”——例如如何解读指令、导航代码库、将意图转化为代码编辑——而不仅仅是补丁的完全正确性。基于此,SVG 用“软验证”(行级相似度)替代了“硬验证”(单元测试)。实验表明,甚至完全不验证(使用未经验证的 T1 或 T2 轨迹)也能达到与硬验证相当的性能。这一发现彻底打破了训练数据生成对测试基础设施的依赖,使得从任何代码库(包括没有测试的私有仓库)生成数据成为可能,从而将编程智能体的专门化从理论优势变为现实。

方法步骤详情

SVG 的具体步骤如下:1. **第一次 Rollout**:对于代码库 C 中的每一个函数 $func_i$,从包含 51 种 bug 类型的集合 B 中随机采样一个 bug 描述 $bug_j$。教师模型 M 被提示“There is a $bug_j$ related to function $func_i$”,然后执行最多 115 步的编辑操作,生成轨迹 T1 和最终的代码补丁 P1。如果模型未能做出有意义的修改,会进行自我评估并可能重新尝试(最多 3 次)。2. **合成 PR 生成**:将轨迹 T1(包含执行脚本、跟踪记录和最终补丁)以及一个从 SWE-bench Verified 中采样的示范 PR $PR_{demo}$ 提供给教师模型 M,要求它按照示范 PR 的格式,为 T1 中所做的修改编写一个合成的 PR 描述 $synth_{PR}$。3. **第二次 Rollout**:教师模型 M 仅接收 $synth_{PR}$ 作为输入,尝试在代码库 C 上重现该修改,生成轨迹 T2 和补丁 P2。4. **软验证**:计算第二次生成的补丁 P2 相对于第一次的补丁 P1 的行级召回率 $r = |P2 \cap P1| / |P1|$。根据 r 的值(如 r ≥ 0.5)来筛选用于训练的轨迹。整个流程使用 GLM-4.5-Air 作为教师模型,在 121 个代码库上运行,最终生成了超过 20 万条轨迹。

技术新颖性

SERA 的技术新颖性主要体现在三个方面:第一,**验证范式的转变**:首次提出并验证了“软验证”在编程智能体训练中的有效性,证明行级召回率可以作为代码正确性的连续代理指标,且与单元测试通过率高度相关(图6)。这彻底摒弃了传统方法对测试套件和执行环境的依赖。第二,**数据多样性的新来源**:利用模糊指令(vague instructions)引导模型进行非 bug 修复类的修改(如重构、代码清晰度改进),这些任务更贴近真实世界的开发实践,并且被证明对提升 SWE-bench 性能同样有效。第三,**极致的成本效率**:通过上述简化,SVG 的数据生成成本比强化学习方法低 26 倍,比之前的合成数据方法(如 SWE-smith)低 57 倍。同时,通过详尽的缩放定律(scaling laws)和消融实验,系统性地分析了数据量、验证阈值、截断策略等因素的影响,为领域提供了宝贵的实践指导。

SVG(软验证生成)流程概览
Figure 2: SVG(软验证生成)流程概览
验证阈值消融实验
Figure 5: 验证阈值消融实验
行级召回率与问题解决率的相关性
Figure 6: 行级召回率与问题解决率的相关性
截断比例与性能的关系
Figure 7: 截断比例与性能的关系

实验结果

SERA 在 SWE-bench Verified 基准上取得了突破性的结果。其最终模型 SERA-32B(基于 Qwen 3-32B 微调,使用 GLM-4.6 作为教师模型生成的数据)在 32K 上下文长度下达到 49.5% ± 1.9% 的解决率,在 64K 上下文下达到 54.2% ± 1.4%。这一成绩在完全开源(代码、模型、数据均开源)的 32B 参数模型中达到了最先进水平,并且与强大的开放权重模型(如 Devstral-Small-2 的 50.0%)性能相当,处于其一个标准差的误差范围内。更令人瞩目的是其极高的成本效益:整个 SERA 模型的训练(包括数据生成)总成本仅为 2000 美元(40 GPU 天),而达到相似性能的强化学习方法(如 SkyRL)成本高达约 5 万美元,合成数据方法(如 SWE-smith)成本也超过 11 万美元。在仓库专门化实验中,仅使用 8000 条从目标仓库(如 Django)生成的轨迹(成本约 1300 美元)训练出的学生模型,就能匹配甚至超越其教师模型(GLM-4.5-Air)在该仓库上的性能(例如在 Django 上,学生模型 52.23% vs 教师 51.20%)。缩放定律分析表明,性能随着数据量的增加呈可预测的幂律增长($R^2 > 0.95$),为资源规划和实验设计提供了可靠依据。消融实验进一步证实,软验证与硬验证效果相当,甚至未经验证的数据也表现出色,这颠覆了“必须使用正确代码进行训练”的传统观念。

SWE-bench Verified 性能全面比较
Table 1: SWE-bench Verified 性能全面比较
控制变量下的方法对比
Table 2: 控制变量下的方法对比
仓库专门化结果
Table 3: 仓库专门化结果
截断策略对比
Table 4: 截断策略对比
数据过滤对专门化的影响
Table 5: 数据过滤对专门化的影响
多仓库专门化结果
Table 7: 多仓库专门化结果
推理轨迹的影响
Table 8: 推理轨迹的影响
达到足够信噪比所需的随机种子数量
Table 10: 达到足够信噪比所需的随机种子数量
成本缩放与仓库专门化缩放定律
Figure 1: 成本缩放与仓库专门化缩放定律
不同推理成本模式下的缩放与成本比较
Figure 3: 不同推理成本模式下的缩放与成本比较
Django 仓库专门化缩放定律
Figure 4: Django 仓库专门化缩放定律
查看结构化数据
任务指标本文基线提升
SWE-bench Verified (32K context) Resolve Rate SERA-32B: 49.5% ± 1.9% Devstral-Small-2: 50.0% ± 1.3%, GLM-4.5-Air: 50.5% ± 1.3% 在完全开源模型中SOTA,与顶尖开放权重模型性能持平。
SWE-bench Verified (64K context) Resolve Rate SERA-32B: 54.2% ± 1.4% Devstral-Small-2: 59.1% ± 1.1%, GLM-4.5-Air: 57.4% ± 0.5% 在完全开源模型中SOTA,但落后于在更长上下文上训练的开放权重模型。
仓库专门化 (Django, 32K) Resolve Rate SERA-32B-Django: 52.23% ± 1.64% GLM-4.5-Air (Teacher): 51.20% ± 1.80% 学生模型超越教师模型 +1.03%。
成本效率 (vs SkyRL) Training Cost (vLLM) ~$2,000 (SERA-32B) ~$52,000 (SkyRL-Agent) 成本降低约 26 倍。

局限与改进

尽管 SERA 取得了显著成果,但仍存在若干局限性。首先,**验证的潜在局限**:论文发现软验证甚至无验证数据与硬验证效果相当,但这可能仅在模型尚未饱和于基础技能(如代码编辑、导航)的阶段成立。一旦模型需要学习更复杂的、需要绝对正确性的逻辑时,硬验证可能变得必要,但作者受限于计算资源未能在更大规模上验证此假设。其次,**评估的单一性**:所有实验仅在 SWE-bench Verified 上进行评估,这是一个已知存在数据污染风险的基准。模型在更广泛的编程任务或其他基准上的表现未知,作者也观察到模型存在一些训练遗留的不良行为(如在 Claude Code 中尝试调用不存在的 submit 工具)。第三,**专门化的泛化性存疑**:仓库专门化实验使用的是公开仓库(Django, Sympy, Sphinx),这些仓库的数据很可能已包含在基础模型的预训练数据中,因此实验结果可能无法完全代表在真正未见过的私有代码库上的效果。第四,**统计效力不足**:许多对比实验仅使用 3 个随机种子,导致一些报告的较小改进(<3%)的信噪比(SNR)较低,可能只是噪声而非真实效果。最后,**模型家族的依赖性**:所有实验均基于 Qwen 3 和 GLM 系列模型,其结论是否适用于其他模型家族(如 Llama, Mistral)尚不明确。

独立分析的弱点

SERA 的主要弱点在于其方法论的泛化边界尚不清晰。第一,**软验证的极限**:论文假设轨迹的技能价值高于其正确性,但在需要高度逻辑正确性或复杂算法的任务中(如实现一个新的加密算法或优化关键性能路径),不正确的轨迹可能会引入错误模式。改进方向可以是设计一个轻量级的、基于规则的或模型驱动的“正确性检查器”,在软验证基础上增加一层过滤。第二,**教师模型的瓶颈**:SERA 的性能上限受制于教师模型(GLM-4.5-Air/GLM-4.6)的能力。虽然学生模型在特定仓库上可以略超教师,但幅度有限。要突破此限制,可以探索将 SERA 与强化学习相结合,用 SFT 模型作为 RL 的起点进行自我提升。第三,**对特定工具格式的强依赖**:SERA 模型在训练和推理时必须使用完全相同的 SWE-agent 工具格式,稍有偏差就会导致性能显著下降或陷入无效循环。这限制了其在不同开发环境(如 VS Code, JetBrains IDE)中的即插即用能力。未来的工作需要研究对工具格式更鲁棒的训练方法,或提供更灵活的中间件适配层。第四,**数据生成中的长尾问题**:虽然 SVG 流程自动化程度高,但仍有约 2% 的第一次 Rollout 会被拒绝,且对于某些复杂函数,模型可能难以生成有意义的修改。可以探索更智能的函数采样策略或指令生成策略,以提高数据生成的效率和质量。

未来方向

基于 SERA 的成果,未来的研究方向广阔。首先,**多语言和跨仓库泛化**:当前工作仅针对 Python 仓库,将 SVG 推广到其他编程语言(如 JavaScript, Java, Go)是一个自然且重要的延伸。此外,研究如何在一个模型中同时专门化于多个不相关的仓库(企业级通用智能体)也极具价值。其次,**与强化学习的融合**:SERA 提供了一个强大的、经过 SFT 的起点,可以作为强化学习的“热启动”,从而降低 RL 的探索成本并提升其稳定性。这有望在 SWE-bench 等基准上突破当前的性能天花板。第三,**私有仓库的深度集成**:开发一个端到端的工具链,允许企业用户方便地从其私有 Git 仓库中自动提取函数、生成数据、训练并部署专用智能体,并集成到 CI/CD 流程中。第四,**更精细的数据质量控制**:虽然软验证有效,但研究更细粒度的轨迹质量评估方法(如基于模型置信度、编辑影响的复杂度分析)可能进一步提升数据效率。最后,**在真实开发流程中的评估**:设计更贴近实际软件开发工作流的评估任务(如代码审查、功能迭代、技术债偿还),以验证 SERA 模型在实验室环境之外的实际效用。

复现评估

SERA 在可复现性方面做出了极好的示范,是“完全开源”研究的典范。作者公开了所有关键组件:1. **代码**:完整的数据生成(SVG)和训练代码托管在 GitHub (`allenai/SERA`)。2. **数据**:超过 20 万条合成轨迹已发布在 HuggingFace (`allenai/open-coding-agents`),这是目前最大的开源编程智能体训练数据集。3. **模型**:训练好的 SERA-32B 等模型权重同样在 HuggingFace 开源。4. **评估**:提供了详细的评估脚本和统计方法说明。5. **成本透明**:论文详细列出了使用 vLLM 自托管和使用 z.ai API 两种情况下的成本分解(附录 D),使得其他研究团队可以准确预估复现成本。复现的主要门槛在于算力:训练 SERA-32B 需要至少 4-8 块 H100 GPU 运行约 40 天(成本约 2000 美元)。数据生成阶段也需要类似的 GPU 资源来运行教师模型。然而,由于数据已开源,研究者可以直接下载数据集进行微调实验,从而将复现成本降低到仅训练部分。总体而言,SERA 的可复现性非常高,其开源的数据、代码和模型将极大地促进后续研究。