Command Palette
Search for a command to run...
SWE-bench Science:编程智能体能否解决科学领域的工程任务?
SWE-bench Science:编程智能体能否解决科学领域的工程任务?
Zhipeng Xu Jiahao Lu Yining Zheng Yuxin Wang Xipeng Qiu
摘要
软件日益成为科学仪器本身的组成部分,这使得科学代码中的故障不仅可能损害程序行为,还可能动摇支撑科学结论的证据。然而,现有的编程智能体评估大多侧重于聚合任务成功率,对于智能体在修复科学软件时为何失败提供的洞察有限。我们引入了 SWE-bench Science,这是一个面向科学软件工程的仓库级基准,包含来自 20 个科学领域、98 个 GitHub 仓库的 119 项任务。每项任务被归入三种范式之一:问题驱动型、专家探索型和工程集成型。即便是表现最佳的智能体——使用 Opus-5(max)的 Claude Code,其 pass@1 也低于 50%,凸显了科学软件工程带来的巨大挑战。我们在分析中识别出四种反复出现的失败机制:科学知识或抽象能力的不足、误导性的探索或表面化修复、修复覆盖或系统集成不完整,以及未能将科学知识泛化到已观察案例之外。我们进一步进行了一项配对消融实验,在保留仓库和可执行工程上下文的同时,移除了显式的科学指导。结果表明,科学知识并非总是有益的:有充分依据的信息可以约束修复行为,提升平均性能和令牌效率;而匹配不佳的指导则可能引发锚定效应,且未必能提高精确修复的成功率。综上,SWE-bench Science 为研究编程智能体在科学软件工程中的能力与失败机制提供了一个广泛的测试平台。
一句话总结
上海创新研究院和复旦大学的研究人员推出了SWE-bench Science,一个仓库级别的基准,包含来自98个GitHub仓库的119个任务,覆盖20个科学领域,涵盖问题驱动、专家探索和工程集成三种范式。即使表现最好的agent——使用Opus-5(max)的Claude Code,其pass@1也不到50%,分析揭示了四种失败机制,以及显式科学指导对平均修复性能和token效率的混合效应。
核心贡献
- 本文介绍了SWE-bench Science,一个仓库级基准,包含来自98个GitHub仓库的119个任务,覆盖20个科学领域,并组织为问题驱动、专家探索和工程集成三种范式。
- 该基准提供了一个证据链协议,将公开测试与私有测试分离,并报告修复进度、精确成功率和回归保持情况,从而区分可见测试性能与完整的私有测试正确性。
- 在八种编码agent配置中,最佳Pass@1为47.90%,而公开得分为96.64%,并识别出四种反复出现的科学失败机制。配对消融实验表明,科学指导并非统一有益:有据可依的信息能提高平均性能和token效率,而匹配不当的指导会引发锚定效应,并不一定能提高精确修复成功率。
引言
科学软件如今已成为产生科学论断的仪器的核心组成部分,因此一个有缺陷的补丁不仅可能破坏程序输出,还可能破坏结论背后的证据。现有基准在函数合成、仓库级修复或精选的科学编程问题上评估编码agent,但它们对跨科学领域的仓库级覆盖有限,且很少考察修复在科学环境中失败的原因。作者推出了SWE-bench Science,一个仓库级基准,包含来自98个GitHub仓库的119个经过人工验证的任务,涵盖20个科学领域。他们将任务组织为三种范式(问题驱动、专家探索和工程集成),并通过四种反复出现的失败机制分析不成功的修复,包括科学抽象缺陷和不完整的系统集成。配对消融实验进一步表明,提供科学知识并不会自动提高修复成功率;其益处取决于知识如何组织以及是否基于可执行的证据。
数据集
作者推出了SWE-bench Science,一个包含119个软件工程任务的基准,这些任务来自98个开源GitHub仓库,覆盖20个科学领域。这些任务旨在评估编码agent处理真实科学软件挑战的能力,涵盖三个能力维度。
-
数据集组成与规模
- 52个问题驱动任务:在低失真设置下修复已知的历史缺陷。
- 49个专家探索任务:在根本原因未知时自主调查科学差异。
- 18个工程集成任务:理解多模块架构并完成端到端能力链。
- 仓库中包含非空输入代码,平均80,600行(范围174到超过200万行)。参考补丁平均增加118行,删除45行,方差较大(增加1–1,035行,删除0–458行)。
- 五个最大的领域提供了76个任务(63.9%),而六个领域各贡献一个任务。
-
数据来源与筛选
- 来自候选科学计算仓库的真实问题、拉取请求、提交历史和相关科学文献。
- 预定义的筛选去除了过于简单的修复、环境不稳定的任务、严重解决方案泄露或与现有样本显著重叠的任务。
-
原始任务的处理流程 所有任务首先通过统一的四阶段构建协议:
- 来源采样与筛选 – 收集并过滤仓库。
- 快照冻结与复现 – 冻结缺陷前的源代码,在隔离容器中验证可复现性。
- 公开材料抽象与信息隔离 – 提取可运行的公开材料(仓库、现象描述、复现脚本、领域背景),同时保持补丁位置和隐藏断言保密。
- 隐藏预言机与反校准 – 构建隐藏验证套件,检查语义正确性,并对硬编码或启发式伪修复进行反向检查。
-
范式特定的任务重设计 原始任务构建完成后,会适配到三种范式之一:
- 问题驱动:降级并隔离缺陷,缩小公开症状,应用抗过拟合的隐藏验证器,这些验证器会改变数据规模、边界和输入顺序。
- 专家探索:设计一个科学场景,从理论或差异中提取探索点,将可观察现象与根本原因分离,并通过机制泛化测试(改变参数规模、拓扑等)进行验证。
- 工程集成:分析流水线链,保留完整的包结构和相邻模块,并通过替代路径、状态重置和模块间行为契约进行端到端验证。
-
在基准中的使用
- 任务用于评估agent在真实科学代码库中的调试、科学推理和系统集成能力。
- 对于91个符合条件的任务,作者提供了配对消融实验:一种条件保留完整任务,另一种条件则移除科学辅助信息(原理、上游修复、专家指导、论文摘录),同时保留所有仓库线索。这隔离了与代码一起提供的领域知识的边际贡献。
方法
基准方法将严格的任务模式与统一的构建协议相结合。在标准条件下,agent会看到一个在目标更改前冻结的仓库快照,其依赖项已锁定,入口点可运行,但没有Git历史、远程仓库、未来的变更日志、构建缓存或与解决方案相关的工件。agent还会收到问题陈述、所需的科学上下文cireq(包含适定任务所需的本地版本化定义和约束),以及支持交互式调试的公开测试。仅评估器使用的字段包括私有测试、契约标签、参考和替代有效补丁、科学原理和定位支持块、预期文件以及元数据。这些字段仅在补丁提交后,在一个单独的评估器容器中挂载,并且无法通过agent工作区、环境变量、日志或任务元数据获取。
任务通过统一的证据链协议生成,该协议包含四阶段原始任务构建过程。第一阶段,来源采样与筛选从候选的开源科学计算仓库中收集真实问题、拉取请求、提交记录和相关文献。筛选去除了过于简单的修复、环境依赖不稳定、严重解决方案泄露以及与现有样本重叠的项目。第二阶段,快照冻结与复现冻结了目标缺陷或缺失能力之前的源代码快照Sbug。该快照在隔离容器中执行,以验证异常或能力缺口能否可靠复现,确保观察到的失败源于核心算法或逻辑语义,而非环境噪声。第三阶段,公开材料抽象与信息隔离提取每个任务评估的科学不变量和数据流约束。公开评估包包括仓库、观察现象的粗粒度描述、复现脚本和必要的领域背景文档,同时隐藏补丁位置和隐藏断言。第四阶段,隐藏预言机与反校准使用语义等价和边界条件构建隐藏验证套件。这些验证器检查正常输入下的执行结果,并包含对硬编码解决方案、启发式伪修复和不完整修复的反向检查。
然后,原始任务被重新设计为三种任务范式,具有不同的评估目标。问题驱动任务在低失真条件下修复已知缺陷。构建过程将源代码回滚到问题提交之前的状态,构建最小可复现示例,并将上游错误缩小为粗粒度的可审计现象,而不透露解决方案补丁的提示。隐藏验证器通过改变数据规模、边界参数和输入顺序转换,来测试修复是否恢复了科学语义,而不仅仅是拟合公开脚本。
专家探索任务模拟根本原因未知时的真实科学调查。作者首先定义一个高层次的科学场景,例如分子表示一致性校准或测量链偏差分析。然后,他们从理论材料、方法论文献、实验现象或结果差异中提取核心差异。可运行的公开工作流保留了相关领域背景和可观察的异常,同时隐藏了确切的缺陷源代码位置。隐藏验证器改变参数规模、物理拓扑、坐标排序或边界条件,以确定agent是否推断出了底层的科学机制。
工程集成任务评估端到端科学工作流中的跨模块完成情况。构建过程分析仓库的端到端调用链,包括数据加载、参数解释、中间表示构建、算子组装和数值求解,并选择一个适当范围的功能缺口。公开源代码保留了完整的包结构和相邻模块,公开复现脚本显示多个阶段的状态比较。隐藏验证器包括替代执行路径、状态重置测试和模块间行为契约测试,以确保架构层面的集成,而不仅仅是单个通过的公开测试。
该方法还分离了科学辅助信息,以估计外部提供的领域知识的贡献。对于每个符合条件的任务,配对条件仅在科学辅助信息上有所不同,而源代码快照、执行环境、公开复现入口点、隐藏验证器和所需的科学上下文cireq保持不变。科学辅助信息包括科学原理、上游修复、审计发现、论文摘录和专家指导。移除这些信息会去除科学原理、方程或假设、预期属性、领域特定诊断以及基于科学的修复策略,同时保留仓库内在的工程线索,如代码结构、接口、跟踪、测试和不完整的实现。这种设计旨在估计在相同仓库证据下科学辅助信息的边际贡献,而不是在无任何线索环境下的性能。
实验
该基准包含119个任务,通过四阶段协议构建,并重新设计为问题驱动修复、专家探索根因推理和工程集成多模块工作流,并对91个任务进行了隔离科学辅助信息的配对消融实验。使用公开和私有测试评估了八种编码agent,结果表明没有单一模型在所有指标上领先:Claude-Opus-5取得了最佳的整体Pass@1,并在问题驱动和专家探索任务上领先;GPT-5.6-sol在私有修复指标上领先;DeepSeek-V4-Pro在公开和工程集成得分上领先,尽管前沿模型的通过率仍低于50%。失败分析识别出科学抽象缺陷、表面级修复、不完整集成和泛化失败,其中Claude-Opus-5产生的分类错误数最低。科学辅助信息对DeepSeek-V4-flash的提升大于对GPT-5.6-sol的提升,表明较弱的模型可能从外部科学指导中获益更多。
科学编码agent基准在规模和范围上差异很大,现有基准覆盖一到十六个科学领域,任务数量从几十到几百不等,而SWE-bench Science覆盖了20个领域。错误分布显示了模型在科学错误类别上的互补优势。科学信息具有模型特定的效应,DeepSeek-V4-flash在Pass@1上提升更大,而GPT-5.6-sol尽管在公开和私有得分上有小幅提升,但Pass@1略有下降。现有基准从一到十六个科学领域不等,而SWE-bench Science覆盖20个领域。任务数量从几十到几百,大多数基准使用专家来源的研究代码或函数编程任务。Claude-Opus-5的分类科学错误数最低,误导性探索或表面级修复错误也最少,尽管它也存在运行时或评估路径失败。DeepSeek-V4-flash的科学知识泛化错误最少,DeepSeek-V4-Pro的科学知识或抽象错误以及不完整修复或系统集成错误最少。添加科学信息对DeepSeek-V4-flash的Pass@1提升大于对GPT-5.6-sol的提升,后者的Pass@1尽管平均得分略有提高,但有所下降。
在评估的模型中,GPT-5.6-sol在私有得分和Pass@1上领先,而Claude-Opus-5取得了最高的整体和专家得分,DeepSeek-V4-Pro则获得了完美的公开得分,并在问题和工程得分上领先。错误分析显示,Claude-Opus-5产生的科学错误最少,而关于科学信息的实验表明,较弱的模型从外部科学指导中获益更多,而最强的模型则出现了轻微的Pass@1下降。GPT-5.6-sol的私有得分和Pass@1最高,但Claude-Opus-5在整体得分和专家指标上超越了它。DeepSeek-V4-Pro是唯一达到完美公开得分的模型,并在问题和工程得分上领先。Claude-Opus-5的分类科学错误最少,误导性探索或表面级修复错误也最少。提供科学信息提高了DeepSeek-V4-flash的所有指标,同时增加了token使用量,但降低了GPT-5.6-sol的Pass@1,这表明较弱的模型从外部科学指导中获益更多。
在119个任务的比较中,编码agent显示出不同的错误分布。Claude-Opus-5的分类错误总数最低,探索或表面修复错误也最少;而DeepSeek-V4-Pro在知识或抽象错误以及修复覆盖或系统集成错误上最少。DeepSeek-V4-flash的分类错误总数最高,但科学泛化错误最少。Claude-Opus-5的主要错误总数最低,尽管它也存在额外的运行时或评估路径失败。DeepSeek-V4-Pro在知识或抽象错误以及修复覆盖或系统集成错误上最少,处于领先地位。DeepSeek-V4-flash则呈现出相反的模式,系统集成错误多,但科学泛化错误最少。
实验在SWE-bench Science上评估了几种编码agent,该基准涵盖20个科学领域和119个任务,并与覆盖一到十六个领域的现有科学编码基准进行了比较。错误分析显示了模型的互补优势:Claude-Opus-5的分类科学错误和探索或表面级修复错误最少,DeepSeek-V4-Pro的知识/抽象错误和不完整修复或系统集成错误最少,而DeepSeek-V4-flash的科学知识泛化错误最少,但系统集成失败较多。当提供外部科学信息时,DeepSeek-V4-flash在所有指标和Pass@1上都有提升,而GPT-5.6-sol仅在公开和私有得分上略有提高,Pass@1略有下降,这表明较弱的模型从科学指导中获益更多。