Dockerless: Environment-Free Program Verifier for Coding Agents
arXiv · HuggingFace · ▲103
摘要(原文)
Program verifiers play a central role in training coding agents, including selecting trajectories for supervised fine-tuning (SFT) and providing rewards for reinforcement learning (RL). Standard execution-based verification requires running unit tests inside per-repository environments such as Docker images, incurring substantial environment setup costs. We propose Dockerless, an environment-free agentic patch verifier that evaluates generated code patches without executing them. Rather than simply matching candidate patches to references, Dockerless judges patch correctness using evidence gathered through agentic repository exploration. On a verifier evaluation benchmark, Dockerless outperforms the strongest open-source verifier by 14.3 AUC points. Using Dockerless as both the SFT trajectory filter and the RL reward enables a fully environment-free post-training pipeline. The resulting model reaches 62.0%, 50.0%, and 35.2% resolve rate on SWE-bench Verified, Multilingual, and Pro, respectively. It surpasses the Qwen3.5-9B baseline by 2.4, 8.7, and 2.9 points, matching environment-based post-training.
摘要(中译)
程序验证器在训练编码代理中起着核心作用,包括为监督微调(supervised fine - tuning,SFT)选择轨迹以及为强化学习(reinforcement learning,RL)提供奖励。标准的基于执行的验证需要在每个存储库环境(如Docker镜像)中运行单元测试,这会带来大量的环境设置成本。我们提出了Dockerless,一种无环境的代理补丁验证器,它可以在不执行生成代码补丁的情况下评估这些补丁。Dockerless不是简单地将候选补丁与参考进行匹配,而是通过代理存储库探索收集的证据来判断补丁的正确性。在一个验证器评估基准上,Dockerless比最强的开源验证器高出14.3个AUC点。将Dockerless同时作为SFT轨迹过滤器和RL奖励,可以实现一个完全无环境的训练后管道。由此产生的模型在SWE - bench Verified、Multilingual和Pro上的解决率分别达到62.0%、50.0%和35.2%。它比Qwen3.5 - 9B基线高出2.4、8.7和2.9个点,与基于环境的训练后效果相当。
背景剖析
背景剖析
1. 技术背景与真实需求
程序验证器(program verifiers)是训练自动化编码代理(如解决软件工程问题的AI模型)的核心工具。它们的作用是判断代码修改是否正确解决了问题,从而指导模型学习(例如筛选高质量训练数据或提供强化学习奖励)。传统上,验证需要在一个隔离的运行环境中执行测试用例(比如为每个代码仓库单独配置Docker容器),这在实际应用中至关重要——无论是开源项目还是企业内部代码库,都需要确保AI生成的修复方案真正有效。
2. 先前方法的局限性
然而,现有的执行式验证方法存在显著缺陷。首先,环境搭建成本高昂:每个代码仓库可能需要定制化的依赖配置和测试脚本,而许多真实场景(如私有代码库或遗留系统)甚至无法提供可复现的环境。其次,浅层验证方法(如仅比较代码文本差异)无法理解代码库的深层逻辑,导致复杂问题判断错误。即使是先进的共享环境方案(如统一Docker镜像),也因缺乏针对性分析而成为性能瓶颈。这些限制使得训练高效的编码代理变得困难且昂贵。
3. 本文的解决方案
论文提出了Dockerless,一种无需运行环境的程序验证器。其核心思路是让验证器主动“探索”代码库:通过生成验证问题、派遣子代理收集上下文证据(例如函数调用关系或模块依赖),最终综合判断代码修改的正确性。这种方法不依赖执行测试,而是利用代码库本身的信息进行推理,从而解决了环境依赖和浅层分析的问题。
4. 与前人的关键差异
Dockerless的创新在于将验证从“被动匹配文本”转变为“主动探索上下文”。与依赖Docker环境的传统方法不同,它不需要任何运行时环境;与仅比较代码差异的浅层方法相比,它通过多代理协作深入理解代码逻辑。实验表明,这种环境无关的验证不仅效率更高,还能在真实任务中达到与执行式验证相当的性能,为大规模训练编码代理提供了可行的路径。




