智测 OpenQA

行业与实践研究与基准测试

公开测试过了,科学结论未必保住:SWE-bench Science

智测团队 · OpenQA(openqa.cn)阅读约 17 分钟

科学代码出错,损坏的不只是程序,还有结论所依赖的证据。SWE-bench Science 有 119 个任务、98 个仓库、20 个领域。最好的配置 pass@1 是 47.90%,同一配置的公开分却有 96.64%。补上科学说明,强模型的精确通过率反而下降。

本文目录

本文是 arXiv 论文 SWE-bench Science: Can Coding Agents Resolve Engineering Tasks in Science?(arXiv:2608.19799)正文第 1 节至第 8 节及附录领域分布的中文译文,由智测团队翻译。参考文献未逐条展开。正文保留了主实验表、失败机制计数和科学信息消融里的数字。

摘要

软件越来越像科学仪器本身的一部分。科学代码一旦出错,损坏的不只是程序行为,还有科学结论所依赖的证据。现有编码智能体评测大多强调任务是否整体成功,很少说明智能体在修复科学软件时为什么失败。本文提出 SWE-bench Science,一个仓库级科学软件工程基准:98 个 GitHub 仓库、20 个科学领域、119 个任务。每个任务属于三种范式之一:Issue 驱动、专家探索、工程集成。表现最好的配置是 Claude Code 配 Opus-5(max),pass@1 仍低于 50%。作者归纳出四种反复出现的失败机制:科学知识或抽象不足,探索走偏或只修表面,修复覆盖或系统集成不完整,以及科学知识不能推广到已观察情形之外。他们还做了成对消融:去掉显式的科学指导,但保留仓库和可执行的工程上下文。结果表明科学知识并非一律有益。落点准的信息能约束修复,提高平均成绩和词元效率;对不齐的指导会诱发锚定,并不必然提高精确修复的成功率。

代码:https://github.com/OpenMOSS/SWE-bench-Science 。数据:https://huggingface.co/datasets/OpenMOSS-Team/SWE-bench-Science 。榜单:https://swescience.github.io 。

1 引言

软件不再只是科学的辅助。研究组靠代码跑模拟、处理仪器输出、训练代理模型、搜索化学或生物候选、管理高通量实验、复现已发表结果。一个有缺陷的补丁因此可能破坏的不只是程序输出,还有科学结论背后的证据。

理解编码智能体为什么在科学软件上失败,和测量补丁能否通过测试一样重要。一次失败的修复可能反映错误的科学抽象、对可见症状的表面探索、跨软件系统的集成不完整,或者无法把科学原理推广到可见情形之外。汇总的测试分数区分不了这些来源,因此对改进科学编码智能体的指导有限。已有基准测量函数合成和仓库级软件修复(Chen 等,2021;Austin 等,2021;Jimenez 等,2024)。科学编码基准覆盖策展过的研究问题、以论文为根据的实现、科学工作流、仓库执行和生产科学代码库。但跨科学领域的仓库级覆盖,以及对失败机制的分析,仍然有限。宽口径的跨领域科学软件工程还没有被充分研究。

SWE-bench Science 含 119 个任务,来自 98 个互不重复的 GitHub 仓库,跨 20 个科学领域。每个任务都经人工检查,核对科学契约、可复现性和评测有效性。三种范式互补:Issue 驱动、专家探索、工程集成。除了测任务成功,作者还人工分析不成功的尝试,归成四种反复出现的科学失败机制:科学知识或抽象缺陷,探索走偏或表面修复,修复覆盖或系统集成不完整,科学知识推广失败。运行时或评测路径失败另行记录。他们还构造了成对比较:去掉显式的科学辅助信息,同时保留仓库和可执行的工程上下文。分析表明科学知识并非一律有益。效果取决于知识如何组织、如何落到可执行证据上。对准的信息能约束修复;对不齐的信息会诱发锚定,或替代独立验证。

贡献有三条。第一,给出覆盖面较宽的科学软件工程基准,并在其上评测有代表性的前沿编码智能体。第二,分析不成功的科学软件修复,指出改进科学抽象、有纪律的探索、全系统修复和科学知识推广的具体方向。第三,提供成对的科学知识消融。额外信息可以提高平均分数和词元效率,但不会自动提高精确修复的成功率。

2 相关工作

2.1 代码与软件工程基准

早期代码生成基准评的是模型能否从自然语言提示合成短函数。HumanEval 和 MBPP 是代表,关注自包含编程题的单元测试正确性。后来的基准提高真实度,要求仓库级修改和 Issue 解决。SWE-bench 评语言模型能否针对项目测试套件生成补丁,解决真实 GitHub Issue。更新的基准把场景推向更长程的智能体工程:SWE-Bench Pro 对准复杂的企业级仓库任务;DeepSWE 用原创任务和手写验证器,以减少污染和预言歧义;Terminal-Bench 在命令行环境里评困难、真实的任务。这些基准测量越来越真实的软件工程能力,包括仓库检查、故障定位、多文件修改、工具使用和经测试验证的修复。

2.2 用于科学工作流的大模型

科学代码基准主要有两种设置。SciCode 和 MMSciCode 分别评自包含的科学编程,以及以论文为根据的函数实现,更接近非智能体的编程评测,而不是仓库级软件工程。第二条线在更宽的研究工作流里评编码:ResearchCodeBench 和 LMR-BENCH 研究论文代码实现和研究代码复现;ScienceAgentBench、SUPER 和 CSR-Bench 强调数据驱动的科学发现、研究仓库执行和研究系统部署;RExBench、AutoMat 和 AstaBench 评研究代码扩展、科学工作流恢复和多阶段科学任务。AInsteinBench 最接近本文,因为它通过生产仓库里由 Issue 导出和合成的功能任务来对准科学计算。SWE-Bench 5G 研究依赖规格的电信修复。SWE-bench Science 则把科学软件工程当作应用工程问题:编码智能体必须检查生产仓库、修改相互作用的组件,并在三种任务范式上保住科学有效性。这既不同于解独立的科学编程题,也不同于完成更宽的研究工作流。它评的是科学上有效的软件系统的维护和扩展。

表 1 比较面向科学的编码智能体基准。列是任务数、科学领域数、GitHub 仓库数、科学焦点和任务来源。

基准任务数领域数仓库数科学焦点任务来源
SciCode8016—函数编程专家
MMSciCode6246—函数编程专家
ResearchCodeBench212120研究代码专家
LMR-BENCH28123研究代码专家
ScienceAgentBench102430研究代码专家
SUPER801—694研究代码专家
CSR-Bench1005100研究代码—
RExBench12——研究代码专家
AutoMat851—研究代码专家
AstaBench超过 2,400——研究代码专家
AInsteinBench24466科学计算Issue 或专家
SWE-Bench 5G21013科学软件工程Issue
SWE-bench Science1192098科学软件工程Issue、专家或工程师

3 SWE-bench Science

基准覆盖 98 个互不重复的 GitHub 仓库,在 20 个科学领域上构造 119 个任务。五个最大的领域含 76 个任务(63.9%),六个领域各只有 1 个任务。任务集里有 52 个 Issue 驱动(43.7%)、49 个专家探索(41.2%)、18 个工程集成(15.1%)。完整领域计数在附录表 4。仓库上下文和修复规模的差异也很大。非空输入代码平均 80,600.12 行,范围从 174 行到 2,029,051 行。参考补丁平均增加 117.81 行(范围 1–1,035),平均删除 44.53 行(范围 0–458)。输入规模按任务代码里的非空物理行计;补丁加减行按标准参考 diff 计。

附录表 4 的领域分布:化学 24,材料科学与工程 16,生物学 13,生物医学工程 12,物理学 11,数学 7,天文学 7,大气科学 5,土木工程 5,测绘科学与技术 3,地球物理学 3,力学 3,电气工程 2,海洋科学 2,地理学、航空宇航科学与技术、核科学与技术、计算机科学与技术、统计学、信息与通信工程各 1。合计 119。化学是最大领域。

3.1 任务模式

标准条件下智能体看得见的字段有四项。

仓库快照:任务前的确切状态,依赖锁定,入口可运行。去掉 Git 历史、远程、未来的变更日志、构建缓存,以及与解答相连的产物。

问题陈述:规格在测试作者和参考补丁作者互相查看对方产物之前就冻结。

必需的科学上下文 c_i^req:使任务良定义所需的、本地的、带版本的定义和约束。它在每一种条件下都保持固定。

公开测试:可见的软件断言和科学断言,用来支持交互式调试。

只给评测器的字段包括:私有测试、契约标签、参考补丁和另一种有效补丁、科学理由和定位支持块、预期文件、来源与难度元数据、污染层级,以及事后标注。私有测试只在补丁提交之后,挂到单独的评测容器里。这些字段不能通过智能体工作区、环境变量、日志或任务元数据得到。

3.2 例子

图 3 是一条任务的评测流水线。任务要求智能体调和同一晶体的两种周期表示,同时保住它们的物理能量。智能体看得见的输入是冻结的问题陈述、科学上下文和工作区快照,然后进入智能体驱动的编码循环和干净的评测阶段。公开检查支持调试;私有科学用例决定提交的补丁有没有完成预定修复。

4 基准构建

为了在真实科学软件的开发与维护里,按不同能力维度评智能体,作者建立统一的证据链协议(Chain-of-Evidence Protocol),并导出三种评测目标明确不同的任务范式。Issue 驱动强调局部修复和避免回归。专家探索要求自主调查科学差异。工程集成评测跨模块、端到端科学工作流的完成。

所有原始任务先按统一、可审计的四阶段流程生成,用来控制环境干扰和防止信息泄漏。

第一,来源抽样与筛选。从候选的开源科学计算仓库收集真实 Issue、拉取请求、提交记录和相关文献。再用预定标准去掉过于简单的修复、环境依赖不稳定的任务、解答泄漏严重的任务,以及与已有样本高度重叠的项目。

第二,快照冻结与复现。把源代码快照冻结在目标缺陷或缺失能力发生之前,记为 S_bug。在隔离容器里执行,验证目标异常或能力缺口能可靠复现。这一步保证观察到的失败来自核心算法或逻辑语义,而不是环境噪声。

第三,公开材料抽象与信息隔离。按预定的行为契约,抽出每个任务所评的科学不变量和数据流约束。公开评测包包含公开仓库、对观察到的现象的粗粒度描述、复现脚本,以及必要的领域背景文档。公开材料不揭示补丁位置或隐藏断言。

第四,隐藏预言与反向校准。基于语义等价和边界条件构造隐藏验证套件。验证器不只看正常输入下的执行结果,还包括对硬编码解、启发式伪修复和不完整修复的反向检查。

原始任务再按与三种范式的契合程度重新设计。图 4 概括四阶段构造和分类型的再设计。

4.1 分类型的任务再设计

Issue 驱动任务聚焦修复已知缺陷。专家探索任务聚焦在科学场景里自主推理未知根因。工程集成任务聚焦跨文件理解架构,并接上完整的多模块能力链。这个分类避免把不同的智能体能力混在一起。

4.1.1 Issue 驱动任务

定义。评智能体在低失真条件下修复真实缺陷的能力。直接起点是一个已确认的历史缺陷。中心设计原则是收窄可观察现象,同时隔离补丁信息。

构造分三步。降级与隔离:分析历史 Issue 和拉取请求讨论,把源码回退到问题提交之前,构造最小可复现示例。现象收窄:把上游错误收成粗粒度、可审计的现象,例如不同计算路径结果不一致,或某种格式下数据丢失。公开材料去掉关于解答补丁的具体提示。抗过拟合验证:隐藏验证器覆盖不同数据规模、边界参数和输入顺序变换,检验修复后的代码是真正恢复了科学语义,还是只拟合了公开脚本。

4.1.2 专家探索任务

定义。不像 Issue 驱动那样直接复现已知缺陷,这类任务模拟真实的科学探索。定义起点是一个含科学场景的探索空间。有些任务可能受历史 Issue 或拉取请求启发,但那些记录不是定义起点。评的是:复杂现象的根因未知时,智能体如何用领域知识做自主的黑盒或灰盒推理。

构造分四步。科学场景设计:先定义高层科学用例,例如分子表示一致性校准、测量链偏差分析、医学图像坐标对齐,或实验工作流核验。探索点提取:从理论材料、方法论文献、实验现象或结果差异里,找出一个值得主动探索的核心差异。上游 Issue 或拉取请求可以是可选的背景证据,但不定义任务。现象与根因分离:构造可运行的公开工作流,保留相关领域背景和可观察异常,例如收敛异常或结果有偏,同时藏起缺陷源码的精确位置。智能体必须通过自主观察、受控比较和科学推理找出根因。机制推广验证:隐藏验证器改变参数规模、物理拓扑、坐标顺序或边界条件,判断智能体是否真正推出了现象背后的科学机制。

4.1.3 工程集成任务

定义。超出单点缺陷修复。评智能体在真实、复杂代码库里理解系统架构、连接不同模块、完成完整能力链的能力。

构造分三步。流水线分析与缺口选择:分析仓库的端到端调用链,包括数据加载、参数解释、中间表示构造、算子装配和数值求解,再选一个范围合适的功能缺口。保留工程上下文:公开源码保留完整的真实包结构和相邻模块。公开复现脚本展示多个阶段的状态比较,并指出功能链在哪里没接上。这要求智能体跨文件导航,并形成系统级理解。端到端契约验证:隐藏验证器包括替代执行路径、状态重置测试和模块间行为契约测试,确保修复达到整个模块能力链上的架构级集成,而不是只让一个公开测试通过。

4.2 科学辅助信息的分离

科学信息这个因素,测量外部提供的领域知识的贡献,实例化为科学理由支持。119 个任务里有 91 个允许把这种信息从所提供的材料里分离出来。对每个合格任务,成对条件只在辅助科学信息上不同。源代码快照、执行环境、公开复现入口、隐藏验证器,以及必需科学上下文 c_i^req,都保持固定。科学辅助信息指与科学有效性相关、但不能直接从源码或可观察运行时行为得到的证据,包括科学理由、上游修复、审计发现、论文摘录和专家指导。

扣掉这些信息,并不去掉仓库内在的工程线索,例如代码结构、接口、追踪、测试和不完整实现。去掉那些会改变软件任务本身。消融保留可执行上下文、任务目标、可观察症状、输入数据和最少的接口文档,同时去掉科学原理、方程或假设、期望性质、领域专门诊断,以及由科学动机驱动的修复策略。因此它估计的是:在同一份仓库证据给定时,科学辅助信息的边际贡献,而不是在毫无线索的设置下的表现。结果在第 6.2 节分析。

5 实验

编码智能体。评测八种配置:GPT-5.6-sol 配 Codex,推理深度 max;Claude-Opus-5 配 Claude Code,max;Kimi-K3 配 Kimi Code,max;GLM-5.2 配 Codex,max;Nex N2 配 Codex;DeepSeek-V4-flash-0731 配 Claude Code,max;Qwen3.5-397B 配 Codex;DeepSeek-V4-Pro-0813 配 Claude Code,max。表 2 用的是简写。

评测。每个提交的补丁同时用公开测试和私有测试。私有测试和只给评测器的元数据不在智能体工作区里。对每次任务尝试,PublicScore 是全部适用公开测试用例的平均分,PrivateScore 是私有测试用例的对应平均分。Fail2Pass 是原先失败的私有测试里,修复后转为通过的比例。Pass2Pass 是原先通过的私有测试里仍然通过的比例;若原先通过的集合为空,Pass2Pass 记为 1。Pass@1 是二值的精确私有成功:只有每一个适用的私有测试都通过才为 1。表 2 报告任务级均值。

5.1 成绩与词元消耗

表 2 是 119 个共同任务上的任务级均值。列依次为公开分、私有分、Fail2Pass、Pass2Pass、总体 pass@1,以及 Issue、专家探索、工程集成三类的 pass@1。

模型框架公开分私有分Fail2PassPass2Pass总体Issue专家工程
GPT-5.6-sol (max)Codex98.32%75.57%69.98%96.30%40.34%34.62%46.94%38.89%
Claude-Opus-5 (max)Claude Code96.64%75.11%68.60%97.37%47.90%38.46%65.31%27.78%
DeepSeek-V4-Pro (max)Claude Code100.00%73.16%65.77%96.58%42.02%26.92%57.14%44.44%
Kimi-K3 (max)Kimi Code98.32%66.34%57.55%94.94%35.29%25.00%44.90%38.89%
GLM-5.2 (max)Codex94.12%63.61%53.81%97.53%31.93%17.31%46.94%33.33%
Nex N2Codex93.28%61.89%51.09%94.92%24.37%11.54%36.73%27.78%
DeepSeek-V4-flash (max)Claude Code98.32%61.41%52.34%95.74%23.53%19.23%26.53%27.78%
Qwen3.5-397BCodex96.64%51.79%38.33%95.16%14.29%5.77%24.49%11.11%

没有一个模型在每一列都领先。DeepSeek-V4-Pro 的公开分最好,工程集成也最好。GPT-5.6-sol 领先私有分和 Fail2Pass,说明它最擅长把失败的私有测试修好。GLM-5.2 的 Pass2Pass 最好,最能保住已经通过的测试。Claude-Opus-5 的总体 pass@1 最好,并在 Issue 驱动和专家探索上都领先。即便前沿模型,pass@1 也低于 50%。

图 5 是 pass@1 相对每任务平均词元消耗。Claude-Opus-5 以中等词元预算取得最高 pass@1。GPT-5.6-sol 成绩更低,但输出短得多。DeepSeek-V4-Pro 用更多输入词元,成绩介于二者之间。Kimi-K3 和 GLM-5.2 成绩更低,但输入词元更少。在 400B 以下的较小模型里,Nex-N2 的成绩与词元平衡最好,好于 DeepSeek-V4-flash 和 Qwen3.5-397B。主要差别因此在于每种模型–框架配置多么有效地使用上下文和生成预算,而不只是词元体积。

6 分析

6.1 观察到的失败机制

表 3 是 119 个共同任务上的错误计数。四类互斥。Claude-Opus-5 括号里的 +4 是额外的运行时或评测路径失败,不计入四类之和。四类计数之和等于该行的主合计。

模型框架合计知识或抽象探索或表面修复覆盖或系统集成科学推广
GPT-5.6-sol (max)Codex7118132119
Claude-Opus-5 (max)Claude Code58(+4)2422111
DeepSeek-V4-Pro (max)Claude Code6915121923
Kimi-K3 (max)Kimi Code7720142221
GLM-5.2 (max)Codex8120142423
Nex N2Codex9031142322
DeepSeek-V4-flash (max)Claude Code912314486
Qwen3.5-397BCodex10226153328

四类的定义如下。科学知识或抽象缺陷:修复建立在不正确或不完整的科学对象、数学定义或领域抽象上。探索走偏或表面修复:补丁处理了可见症状或公开指标,但没有把失败追溯到独立预言或底层科学契约。修复覆盖或系统集成不完整:局部看起来说得通,却不满足整个软件系统的要求。例如一个模块改对了,它与其他模块的交互、数据流、共享不变量或兼容性没有保住。科学知识推广失败:能处理已观察到的科学情形,但不能把同一科学原理延伸到未见条件、等价表示、边界区间或其他需要科学推广的变体。Claude-Opus-5 另有四次运行时或评测路径失败:尝试没有走完预定的执行或评测路径,因此不能归入四种科学机制。

Claude-Opus-5 的已归类科学错误最少(58,另加 4 次运行时或评测路径失败),探索走偏或表面修复也最少(2)。DeepSeek-V4-flash 的科学知识推广错误最少(6)。DeepSeek-V4-Pro 的科学知识或抽象错误最少(15),修复覆盖或系统集成错误也最少(19)。

6.2 科学信息如何影响成绩

在 91 个可分离任务上,比较 GPT-5.6-sol(xhigh)和 DeepSeek-V4-flash(high),各自有、无科学信息。图 6 概括平均分数和词元用量。主表用的是 max,这一节的力度标记是 xhigh 和 high,按原文照录。

对 GPT-5.6-sol,科学信息把平均公开分和私有分从 96.70%、73.23% 略升到 97.80%、74.06%,但把 pass@1 从 36.26% 降到 31.87%。平均输入和输出词元也从 386 万和 4.375 万降到 370 万和 4.025 万。对 DeepSeek-V4-flash,同一干预把公开分、私有分和 pass@1 从 98.90%、61.21%、16.48% 升到 100.00%、62.53%、23.08%,同时把输入和输出词元从 484 万和 12.843 万升到 740 万和 15.926 万。这些成对的描述性差异显示模型特定的分数–成本反应,但没有建立统计显著性或因果效应。

图 7 是 91 个任务上 pass@1 成功的任务级重叠。GPT-5.6-sol 在有科学信息时通过 29 个任务,没有时通过 33 个;21 个两种条件都通过,8 个只在有信息时通过,12 个只在没有信息时通过。DeepSeek-V4-flash 有信息时通过 21 个,没有时通过 15 个;12 个两种都通过,9 个只在有信息时通过,3 个只在没有时通过。

这些汇总变化来自任务级的翻转。检查 GPT-5.6-sol 的案例后,作者认为科学信息可以提供局部代码症状里没有的语义约束,例如极限情形、坐标一致性、独立可观测量和权威接口。但它也可以诱发锚定、范围外溢,或过早依赖所提供的解释。因此仍需要可执行证据和独立验证。

在这两个模型的比较里,科学信息给基线更低的 DeepSeek-V4-flash 带来更大的 pass@1 增益。这个模式提示:表现较弱的模型可能更受益于外部科学指导,更强的模型对它的依赖更少。

7 局限

每个科学领域的任务数仍然相对有限,可能降低跨领域比较的可靠性。另外,科学知识在 SWE 任务里所起作用的分析仍然比较初步,对领域专门知识实际如何被使用、以及如何让它促成任务成功,探索还不够。

8 结论

SWE-bench Science 是一个仓库级基准,评编码智能体能不能在保住科学契约的同时修复科学软件。它含 119 个任务,来自 98 个 GitHub 仓库、20 个科学领域,并组织成 Issue 驱动、专家探索和工程集成。证据链协议把分开的公开测试和私有测试,与修复进展、精确成功和回归保持的指标合在一起,从而把「看得见的测试表现」和「完整的私有测试正确性」区分开。

八种编码智能体配置里,最强结果是 47.90% 的 pass@1,同一配置的公开分是 96.64%。这个缺口,加上不成功修复里四种反复出现的科学失败机制,说明仓库级科学软件工程需要科学抽象、有纪律的探索、全系统集成,以及超出可见情形的推广。91 个任务的科学信息子集上,成对比较进一步揭示依赖模型的效应:辅助科学信息把 GPT-5.6-sol 的 pass@1 从 36.26% 降到 31.87%,却把 DeepSeek-V4-flash 从 16.48% 升到 23.08%,词元用量的变化方向也相反。这些发现表明,只提供科学信息并不能保证更好的修复。它的价值取决于智能体多么有效地把该信息连到仓库证据上,并通过执行去验证。SWE-bench Science 为测量这种能力提供了基础;要理解科学信息如何影响智能体在科学软件工程任务上的表现,还需要更宽的模型覆盖。

觉得有用,转给同事

微信扫码

用微信扫一扫,在手机上打开后即可转发。

用 RSS 订阅

提交勘误