SWE-Serve:揭示本地测试与真实推理服务之间的差距
AI 编码智能体生成的补丁可能通过了测试,却在服务器加载真实模型并处理请求时失败。因此,评估推理服务软件变更时,必须检查完整的服务路径,包括系统能否通过公开接口返回正确结果。
SWE-Serve 在 SGLang 团队的协助下开发,用于评估这一差距。它基于开源大语言模型推理系统 SGLang 的合并变更,衍生出 53 个任务。在 19 个包含实际服务检查的任务中,若排除这些检查,相同补丁的通过率高达 69.4%;但使用完整验证器时,通过率仅为 45.9%。约三分之一的补丁虽然通过了其他检查,却在实际服务测试中失败。
快捷链接: 阅读论文 | 查看排行榜 | 在 GitHub 上运行 SWE-Serve
SWE-Serve 测试内容
现有的仓库级基准测试针对通用软件工程任务评估编码智能体,而推理基准通常侧重于内核生成或性能优化。SWE-Serve 则针对推理服务栈中的仓库级变更进行测试,涵盖模型启用、解码、缓存、调度、服务 API 及运行时性能。
为了评估这项更广泛的工程工作,SWE-Serve 将 83 个合并的 SGLang 拉取请求转化为 53 个可执行任务,分为六大类推理工程领域。
| 工程类别 | 任务数量 |
|---|---|
| 推测解码与高级解码 | 14 |
| 模型与后端启用 | 12 |
| 内核、量化与性能 | 8 |
| 服务 API 与运行时正确性 | 8 |
| 缓存与运行时状态 | 7 |
| 分布式执行与调度 | 4 |
其中 12 个任务在 CPU 上运行,41 个使用单张 NVIDIA H100 GPU。该版本尚未评估其他推理引擎、多 GPU 执行或多节点服务场景。
其中 37 个任务源自同一个上游 Pull Request,另外 16 个则整合了两至六个相关变更。整个基准测试共引用了 83 个已合并的 SGLang Pull Request。SGLang 团队作为 SWE-Serve 的启动合作伙伴,不仅协助识别高难度任务、推荐极具挑战性的 Pull Request,还帮助塑造了我们的正确性验证方案。
每个任务为 Agent 提供一条指令和一个目标变更前的容器化 SGLang 代码库。只要 Agent 的补丁在指定硬件上满足任务的隐藏验证器,即视为通过。验证过程绝不与参考实现进行对比。
这些变更体量相当可观。中位参考解决方案涉及七个文件、共 553 行代码的修改。典型的验证器包含 7 项针对新行为的测试和 10 项回归测试。其中 19 个任务需要启动真实服务器,另外 3 个任务则强制在 H100 上执行经过校准的性能门槛测试。
单个任务示例
其中一个任务要求 Agent 为 Qwen3.5 的稠密(dense)和混合专家(MoE)模型添加推理服务支持。Agent 需从一个不支持 Qwen3.5 的版本出发,确保 0.8B 稠密模型和 35B-A3B MoE 模型均能通过正常的 SGLang 接口在单张 H100 上完成加载与推理。
该任务的验证器会检查模型注册、配置与权重加载、图像与视频输入处理、OpenAI 兼容请求、原生批量生成、对数概率以及 MoE 模型路由专家的执行情况。
实时推理测试能捕获什么问题
某些故障只有启动真实服务器后才暴露出来。SGLang 团队提出了端到端验证的思路,并推荐了特定的模型推理测试用例。SWE-Serve 包含 19 个需要加载指定模型并通过实时推理接口测试 Agent 补丁的任务。
在这些任务中,当使用完整的验证器时,同一组 627 个补丁的通过率为 45.9%;若排除实时推理测试,该比例升至 69.4%。换言之,有 147 个补丁在移除实时推理测试后由失败转为通过。
这 19 个任务共包含 276 项实时推理测试。其中 242 项源自 SGLang 或由其改编,剩余 34 项则覆盖了对应已合并变更引入的行为,用于填补缺乏合适上游测试用例的空白。
Gemma 4 MoE 任务让这个结果变得具体:33 个补丁中有 16 个通过了其他所有检查,却在至少一项线上服务测试中失败。这些测试覆盖模型加载、expert 路由、文本和图像服务,以及带正确顺序和 log 概率的批量生成。
SWE-Serve 的“通过”含义很窄:补丁只需满足基准验证器即可。SWE-Serve 的测试并不等同于 SGLang 上游的审查流程,无法证明 agent 补丁或基准参考方案可以部署、达到合并标准,或得到 SGLang 维护者的认可。
Agent 表现较弱的地方
我们把从请求到输出的链路划分为四个 runtime 领域:请求处理与 I/O、调度与请求生命周期、模型执行,以及 KV-cache 与运行时资源管理。
在 11 个模型各自的最佳设置下,局限于单一 runtime 领域的 26 个任务通过率为 69.0%,而跨越多个 runtime 领域的 27 个任务通过率仅 47.7%,相差 21.3 个百分点。每个模型设置都呈现同样的差异方向。
模型之间性能差异悬殊
各模型的表现差异很大。在各自的最佳测试配置下,平均 pass@1 从 34.6% 到 75.5% 不等。没有任何模型在所有任务类别中都排名第一,而总分接近的配置,其成本和运行时长可能相差极大。
我们使用 mini-swe-agent(一个仅依赖 Bash 的极简软件工程 agent)在闭卷条件下评估了 11 个模型和 31 种模型-算力配置。其中两个 Claude 模型和三个 GPT-5.6 模型在五个算力档位下测试,其余六个模型各跑一种设置。
| 模型 | 推理设置 | pass@1(均值 ± 标准差,3 次运行) | 单任务平均成本 | 平均实际耗时 |
|---|---|---|---|---|
| Claude Opus 5 | max | 75% ± 3% | $17.40 | 57.5 分钟 |
| GPT-5.6 Sol | max | 75% ± 6% | $12.26 | 29.5 分钟 |
| Claude Sonnet 5 | xhigh | 64% ± 3% | $6.61 | 40.6 分钟 |
| Kimi K3 | max | 64% ± 5% | $7.24 | 99.9 分钟 |
| GPT-5.6 Luna | max | 64% ± 4% | $0.95 | 28.9 分钟 |
| GPT-5.6 Terra | max | 64% ± 4% | $5.06 | 25.5 分钟 |
| DeepSeek V4 Flash (0731) | max | 55% ± 4% | $0.69 | 36.4 分钟 |
| GLM-5.2 | max | 48% ± 2% | $2.10 | 34.0 分钟 |
| Gemini 3.6 Flash | high | 48% ± 6% | $4.84 | 37.3 分钟 |
| Laguna S 2.1 | max | 46% ± 5% | $0.33 | 56.9 分钟 |
| Inkling S | xhigh | 35% ± 3% | $0.44 | 17.6 分钟 |
mini-swe-agent 时得分均为 75.5%。
成本与表现之间没有清晰的对应关系。在得分同为 64% 的四个模型中,单任务平均成本介于 0.95 美元到 7.24 美元之间,平均实际耗时则介于 25.5 分钟到 99.9 分钟之间。
没有任何一个模型在所有六个工程类别中均居首位,且总分相同的模型可能具备不同的优势。最高分表明许多 SWE-Serve 任务在当前智能体的能力范围内;而分数差距则显示各模型的表现远非均匀。
基准的验证方式
我们筛选了 786 个潜在任务来源,构建了 156 个可执行候选项,最终收录 53 个。
每个收录任务都在其声明的硬件上进行了测试。未修改的代码仓库必须在新行为测试中失败,同时继续通过回归测试。参考补丁必须通过完整的验证器。我们还用智能体生成的补丁挑战验证器,一旦发现具体问题,就修复、收窄范围或排除相关任务。
报告的评估均采用闭卷模式。我们屏蔽公共网络和上游源码仓库,但允许访问 Hugging Face 以获取模型权重,因为网络试点显示模型会检索任务特定的上游代码。我们审计了榜单背后的所有 1,749 次试验;196 次违规检索尝试被拦截,无一成功。论文详细描述了完整的资格认定和评估完整性流程。
运行 SWE-Serve
SWE-Serve 包含任务环境、验证器和基线配置。它使得通过本地检查与走完完整服务路径之间的差距变得可量化。
探索 SWE-Serve 榜单,然后在 GitHub 上运行 SWE-Serve,对 SGLang 推理工程任务评估你的编码智能体。