Dockerless:不跑测试、不搭环境,也能给 Coding Agent 的修复打分?
做 Coding Agent 训练和研发的团队大概都绕不开一个又脏又累的环节搭环境。不管是给 SFT 筛选高质量轨迹还是给 RL 提供奖励信号都需要一个 verifier验证器来判断 Agent 生成的 patch 是否真正解决了 issue。现阶段最可靠的验证方式仍然是跑测试。为每个仓库构建专属 Docker 镜像、安装依赖定位相关测试编写测试流程和结果解析逻辑最后在隔离环境中运行单元测试。测试通过便判断这个 patch 有效。这套流程准是准但它有一个问题就是贵。每个仓库都要单独搭建环境即使接入自动化流水线这个过程也很难保证成功率。不仅如此很多实际生产中的代码库——私有仓库、企业遗留系统——根本没有可复现的环境甚至连完整测试套件都没有。对于这些仓库上面这套基于执行的验证方式不只有成本问题更重要的是缺少实现条件。今天这篇来自上海交通大学和抖音团队的论文【Dockerless: Environment-Free Program Verifier for Coding Agents】提供了一个可行方案即verifier 不执行代码也可以判断修复对不对——只要让它像人类 reviewer 一样自己去仓库里翻代码找证据。现有 verifier 的两难论文开头先分析了现有 verifier 的两类主流方案。第一种是基于 Docker 的测试执行。这种方式的优点是准确性较高缺点是要为每个仓库搭建独立环境成本高也难以大规模扩展。第二种是 LLM scorer。它的优点是会直接让模型根据 issue、reference patch 和 candidate patch 进行判断不用搭建运行环境因此扩展成本更低。但它的缺点也很明显一般模型只能看到输入文本和 patch diff缺少对真实代码库上下文的理解。比如要判断两个 patch 是否等价系统得知道问题路径是否真的会调用被修改的函数不同实现方式的 patch 是否都能和周围模块正确协作。这些信息仅依靠 diff 文本很难准确判断。图 1三类 verifier 的对比正如上图所示基于 Docker 的测试执行准确但依赖昂贵的仓库级环境LLM scorer 不依赖环境但缺少代码库上下文Dockerless 通过主动探索代码库在无需环境的同时让验证过程建立在真实代码库证据之上。Dockerless 的工作原理Dockerless 的输入包括三部分issue 描述、reference patch已知正确的修复版本以及 candidate patchAgent 生成的待验证 patch。整个验证过程分为两个阶段。图 2Dockerless 的整体架构第一阶段生成验证问题与**并行**探索。verifier 会先根据 issue 和 reference patch 生成 24 个验证问题。这些问题主要覆盖四类信息修复应该位于仓库中的哪个位置Location、修改后代码应该表现出什么行为Behavior、哪些测试或断言可以验证修复正确性Test Evidence以及这个改动可能影响哪些边缘场景Edge Cases。接着分配一个独立的子 Agent 给每个验证问题并由子 Agent 并行探索代码库。子 Agent 只拥有只读 shell 工具例如 find、grep、rg 等会按照 ReAct 流程反复执行命令、查看输出、继续搜索最终返回一份简短的探索结果并标注找到的关键证据包括对应的文件路径和代码行号。第二阶段汇总裁决。judge 模型接收 issue、两个 patch以及所有子 Agent 收集到的证据输出一个二值裁决 token0 表示 patch 未解决问题1 表示 patch 已解决问题。在计算评分时Dockerless 并不直接使用这个二值结果而是提取两个 token 对应的 logits再通过 softmax 转换成 01 之间的连续分数。这样这个分数既可以用作 SFT 阶段的筛选和排序训练轨迹也能作为 RL 阶段的稠密奖励信号。如何训练Dockerless verifier 本身是基于 Qwen3.5-9B通过 rejection sampling 方法训练得到的。图 3Dockerless 的训练流水线、具体的训练过程是从 SWE-Gym 和 Multi-SWE-RL 中选取 3.7K 个带执行标签的 issue。这样就保证了每个 candidate patch 都是经过真实测试验证并拥有对应的真实结果。接着用更强的教师模型Teacher ModelGLM-5按照 Dockerless 的完整验证流程生成训练轨迹先生成验证问题再由探索 Agent 收集代码库证据最后进行裁决形成 question-answer-judge 三部分轨迹。当中的筛选规则是只有教师模型的最终裁决与真实测试结果一致时这条轨迹才会被保留下来用于训练如果结果不一致该条轨迹会被直接丢弃。通过这种方式模型不只学习到了 patch 文本之间的表面关联还学习到一套基于代码库证据进行分析和判断的验证过程。同时为缓解数据类别不平衡的问题论文将负样本与正样本的比例控制在了 4:1 以内。在训练阶段问题生成、子 Agent 探索和最终裁决三个环节会共享同一个 backbone并使用标准的 next-token cross-entropy 目标进行联合训练。实验数据先看 Dockerless 作为独立 verifier 的验证能力。论文构建了一个平衡的 verifier 评测基准共包含 776 个样本其中正负样本各占一半并使用 AUC 作为评价指标。对比对象有两类一类是直接进行 zero-shot 判断的前沿模型包括 DeepSeek-V3.2、Kimi-K2.5、GLM-5 和 GPT-5.4另一类是经过训练的开源 verifier包括 SWE-Gym Verifier、R2E-Gym Verifier、OpenHands Critic 和 DeepSWE Verifier。图 4各 verifier 在 trajectory-level 评测基准上的 AUC实验结果显示Dockerless 在 SWE-bench Verified 分组取得 81.0 AUC在 Multi-SWE-bench Flash 分组取得 72.1 AUC两个分组均排名第一。相比表现最好的开源训练 verifier66.7 和 62.9分别提升 14.3 和 9.2 个百分点相比表现最好的前沿模型裁判 GPT-5.475.9 AUC也提升了 5.1 个百分点。这说明在 patch 验证任务中模型能否获取并利用真实代码库上下文可能比单纯依赖模型规模带来更大的收益。无需环境的后训练流水线verifier 只是整个方案中的一环论文真正想解决的是后训练流程的扩展性问题。有了 DockerlessSFT 和 RL 两个阶段都可以摆脱针对每个仓库单独构建环境的依赖。图 5无需环境的后训练流水线SFT 阶段env-free RFTAgent 的 rollout 在一个最小化 Ubuntu 镜像中完成环境准备阶段只需要 checkout 仓库代码不安装项目依赖也不配置测试环境。通过这种方式论文以低成本收集了 16K 条轨迹再用 Dockerless 对这些轨迹最终生成的 patch 进行评分并按照分数排序后选取 top 4K 轨迹用于 SFT。RL 阶段rollout 仍然在同一个最小化环境中进行Dockerless 输出的连续分数直接作为 reward并用于 GRPO 算法的组内归一化优化。为了提高 reward 稳定性每个 patch 会独立评估两次并取平均值。整个流程中我们不用再为每个仓库单独构建 Docker 环境了。实验结果Dockerless-RL-9B 在 env-based 标准评测中的表现为SWE-bench Verified 62.0%、Multilingual 50.0%、Pro 35.2%。相比 Qwen3.5-9B 基线三个 benchmark 分别提升 2.4、8.7 和 2.9 个百分点同时也超过了多个同规模的开源 SWE 专用模型。图 6SWE-bench Verified、Multilingual 和 Pro 上的 resolve rate 主结果。加粗行为本文主模型灰色行为用于隔离 SFT 数据来源和 RL reward 来源影响的控制实验。不过更能说明 Dockerless 价值的是论文设计的两组控制实验。图 7不同 SFT 数据过滤方式对下游 resolve rate 的影响。模型骨干和训练流程保持一致仅调整训练数据的筛选方式。第一组实验只调整 SFT 阶段的数据来源。论文比较了两种训练方式一种是使用 Docker 环境收集并筛选轨迹得到的 Env-SFT-9B另一种是使用 env-free 轨迹再通过 Dockerless 进行过滤得到的 Dockerless-SFT-9B。两者在 SWE-bench Verified、Multilingual 和 Pro 上的结果分别为 60.6 vs 60.0、47.7 vs 48.3、35.3 vs 33.9整体表现基本接近并没有出现明显差距。第二组实验只调整 RL 阶段的 reward 来源数据参考图 6。使用真实测试执行结果作为 reward 的版本oracle test-execution 信号取得 62.4 / 51.3 / 35.7使用 Dockerless reward 的版本取得 62.0 / 50.0 / 35.2两者差距控制在 1.3 个百分点以内。而使用另一个不探索代码库的训练 verifierDeepSWE Verifier作为 reward 时性能进一步下降 1.12.7 个百分点。此外论文还给出了一个反向实验如果不经过任何过滤直接使用全部 16K 条 env-free 轨迹进行 SFT最终成绩只有 58.8 / 41.3 / 31.9甚至低于基线。这个结果说明env-free rollout 本身并不是主要问题关键在于是否有可靠的 verifier 对生成轨迹进行筛选。Dockerless 证明了一个基于代码库证据的 verifier可以成为支撑 env-free 后训练流程的重要组成部分。几个工程细节验证问题数量与 verifier 性能的关系当验证问题数量 K 从 0 增加到 4 时verifier 的 AUC 从 78.3 提升到 81.0。但后面增加到 6 个和 8 个问题后AUC 反而下降到 79.6 和 80.3。论文认为过多的问题会带来重复探索和噪声证据。因此推理阶段默认生成 24 个验证问题在验证效果和探索成本之间取得平衡。图 8验证问题数量 K 与 verifier AUC 的关系验证成本Dockerless 每次评分都需要执行多轮代码库探索看起来可能会引入较高延迟。但论文对 RL 训练中的 rollout 时间进行了拆解Agent 本身完成一次 rollout 平均需要 2,308 秒而 Dockerless reward 评估额外增加约 180 秒占整体时间的 7.2%。因此训练过程中的主要耗时仍然来自 Agent 自身的任务执行而不是 verifier。图 9RL 训练中单次 rollout 的耗时拆解典型案例论文展示了一个 matplotlib 的 offsetText 颜色修复案例。candidate patch 实际能够通过测试但它与 reference patch 的实现方式存在明显差异一种方案使用内联条件表达式另一种方案则提取了辅助变量。由于表面文本差异较大两者的文本相似度只有 0.468DeepSWE Verifier 也只给出了 0.035 的分数。Dockerless 则通过子 Agent 探索代码库确认该修改同时覆盖了 XAxis 和 YAxis 的初始化路径并保持了 inherit 语义的一致性最终给出 0.996 的评分与真实测试结果一致。这个案例说明仅比较 patch 表面形式并不足以判断修复质量不同实现方式同样可能达到正确结果。图 10matplotlib offsetText 案例方法边界Dockerless 也有自己的适用范围。首先它依赖 reference patch 作为验证依据因此更适合用于训练阶段的数据筛选和批量评估而不是没有标准答案的线上代码审查场景。其次env-free 路线在部分编译型语言上仍存在差距。由于缺少真实编译环境提供的类型检查、链接错误等反馈Rust、C 等语言上的效果仍弱于基于环境执行的方案。如何在不搭建完整环境的情况下引入类似编译器反馈是后续需要解决的问题。不过论文也验证了 Agent rollout 本身对环境依赖并不强去掉执行环境后多个前沿模型的任务完成率下降有限。因此Dockerless 认为当前 env-free 路线的主要挑战并不在任务执行而在于如何提供可靠的验证信号小结这篇论文可以用一句话概括把 verifier 从“打分函数”升级成“会查证的 Agent”就能把 Coding Agent 的整条后训练流水线从 Docker 环境里解放出来。它的核心设计其实很朴素——提问、分头找证据、基于证据裁决跟一个负责任的人类 reviewer 审 PR 的流程差不多。工程上的启发有两点一是对需要深上下文的判断任务让模型主动探索比塞更多静态上下文更有效二是 env-free 路线的瓶颈从来不在 rollout 采集而在正确性信号verifier 做好了那些搭不起环境、没有测试的长尾仓库就都能进训练池了。对于在做 Coding Agent 训练、又被环境搭建成本卡住的团队来说这是一个值得认真参考的方案。

相关新闻

Boop游戏文件传输工具:Switch和3DS玩家的终极安装指南

Boop游戏文件传输工具:Switch和3DS玩家的终极安装指南

Boop游戏文件传输工具:Switch和3DS玩家的终极安装指南 【免费下载链接】Boop GUI for network install for switch and 3ds 项目地址: https://gitcode.com/gh_mirrors/boo/Boop Boop是一款专为任天堂Switch和3DS玩家设计的图形化网络安装工具,让…

2026/10/14 15:50:34 阅读更多 →
腾讯EdgeOne产品测评体验—金字塔般的网络安全守护神

腾讯EdgeOne产品测评体验—金字塔般的网络安全守护神

作为一名对网络安全和性能优化充满热情的用户,我决定体验腾讯云下一代 CDN 服务 - EdgeOne。这款引以为傲的全方位服务如数来到,从域名解析、动静态智能加速到四层加速及DDoS/CC/Web/Bot 防护,一应俱全。随着时代风云变幻,日均数千…

2026/10/15 6:17:42 阅读更多 →
DiffusionLight:一笔画球,点亮你的数字世界

DiffusionLight:一笔画球,点亮你的数字世界

DiffusionLight:一笔画球,点亮你的数字世界 【免费下载链接】DiffusionLight [CVPR 2024] code release for "DiffusionLight: Light Probes for Free by Painting a Chrome Ball" 项目地址: https://gitcode.com/gh_mirrors/di/DiffusionLi…

2026/10/8 17:12:46 阅读更多 →

最新新闻

王道操作系统课后选填题刷题法:错题滚动+答案隔离+三轮复盘

王道操作系统课后选填题刷题法:错题滚动+答案隔离+三轮复盘

简介:这份王道操作系统课后题选填文档是一份针对考研操作系统复习的选择题与填空题专项资料。内容以王道教材课后题为蓝本,按知识点整理出数十道填空与选择,覆盖进程管理、处理机调度、死锁、内存与虚拟存储、文件系统、设备管理及磁盘调度等…

2026/10/15 6:18:43 阅读更多 →
context-mode上下文感知模式:让命令行工具在多变环境中稳定运行

context-mode上下文感知模式:让命令行工具在多变环境中稳定运行

做了这么多年命令行工具和自动化脚本,我最怕听到这样一句话:“你在你机器上跑得好好的,怎么到我这儿就崩了?”大多数时候不是代码逻辑有问题,而是脚本压根没有感知环境上下文的能力。后来我给自己常用的几个脚本工具加…

2026/10/15 6:18:43 阅读更多 →
基于Matlab Simulink的单相光伏储能系统建模与仿真

基于Matlab Simulink的单相光伏储能系统建模与仿真

1. 单相光伏储能系统架构设计1.1 系统整体拓扑与能量流先交代一下背景。这套模型面向的是典型家用或小型工商业场景:屋顶光伏给本地负荷供电,多余的电存到蓄电池里,蓄电池再不够的话才从电网取;反过来,光伏发得多、蓄电…

2026/10/15 6:18:43 阅读更多 →
固件升级避坑指南:设备识别、校验与恢复全流程

固件升级避坑指南:设备识别、校验与恢复全流程

简介:面向系统维护与硬件调试人员的 NOVATEK 升级指导 V1.0 文档,专门解决 NOVATEK 系统在 XP/WIN7 32 位环境下的固件升级问题,并注明可支持整机不拆机直接升级,适合需要维护老平台的运维人员。文档覆盖完整升级链路,…

2026/10/15 6:18:43 阅读更多 →
粤语会议记录总转错?实测6款支持粤语的录音转文字工具,附场景选型清单

粤语会议记录总转错?实测6款支持粤语的录音转文字工具,附场景选型清单

一、为什么"支持粤语"这四个字,成了选型最大的坑先说个真实感受。上个月帮朋友的传媒公司整理一段40分钟的粤语访谈,我前后换了三款工具,出来的文稿依然需要逐句核对。粤语有九声六调,同一个字不同声调代表完全不同的意…

2026/10/15 6:18:43 阅读更多 →
从碎片需求到系统设计:REA框架实战解析

从碎片需求到系统设计:REA框架实战解析

1. 从“rea”这个碎片标题聊起:一个容易被忽略的高频词我平时泡社区的时候,经常看到有人只甩一个词就问“怎么做”,最近遇到的项目标题只有三个字母:“rea”。说实话,第一眼确实懵。没有上下文、没有细节、没有任何配套…

2026/10/15 6:17:43 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/14 16:30:29 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 7:53:34 阅读更多 →