Dockerless: Environment-Free Program Verifier for Coding Agents
arXiv · HuggingFace · ▲105
摘要(原文)
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容器),确保代码在特定依赖和配置下能正确执行。这种需求源于现实场景:企业或开源项目中,代码的正确性必须结合实际运行环境来验证,否则训练出的模型可能无法应对真实世界的复杂情况。
2. 之前的问题与瓶颈
然而,传统方法存在显著缺陷。首先,环境搭建成本高昂:为每个代码仓库配置独立的Docker容器需要解决依赖冲突、编写测试脚本等工程工作,且许多企业或遗留系统无法提供可复现的环境。其次,现有“无环境”验证器(不依赖Docker)仅通过表面文本匹配判断代码正确性,缺乏对代码库上下文的理解。例如,它们无法判断一个修改的函数是否被实际调用,或是否与周围模块兼容。这导致验证结果不可靠,尤其是在处理复杂问题时(如SWE-bench这类需要深度理解代码逻辑的基准测试)。
3. 本文的解决方案
论文提出了Dockerless,一种无需环境的“智能验证器”。它的核心思路是让验证器主动探索代码库上下文,而非简单匹配文本。具体来说,Dockerless会生成几个关键问题(如“修改的函数是否解决了目标问题?”),然后派遣子代理(sub-agents)从代码库中收集证据(如函数调用关系、模块依赖等),最后综合这些信息判断代码正确性。这种方法结合了代码理解与逻辑推理,能够处理更复杂的场景。
4. 与前人工作的关键差异
与依赖Docker的传统方法相比,Dockerless避免了环境搭建成本;与无环境的浅层验证器相比,它通过主动探索代码库上下文提高了准确性。此外,Dockerless还支持完全无环境的训练流程:从数据收集到模型优化,均无需为每个代码仓库配置特定环境。实验表明,其性能优于最强的开源验证器,并使训练出的模型在多个基准测试中达到与环境依赖方法相当的水平。
这种方法的关键创新在于将“环境依赖”从验证环节中移除,同时通过智能探索弥补了浅层方法的不足,为大规模训练编码代理提供了可行的技术方案。




