跳到正文
北京时间
原文
Hacker News 热门(buzzing.cc 中文翻译)· matt_d·· 2026-07-02精选AI 评分71

Senior SWE-Bench:评估AI智能体作为高级工程师的基准测试

Senior SWE-Bench:一款用于评估代理作为高级工程师表现的开源基准测试工具

AI 导读

Senior SWE-Bench是一个开源基准测试,用于评估AI智能体完成高级软件工程师级别任务的能力。任务分功能开发与Bug修复两类:功能任务指令类似自然语言消息,采用验证智能体基于专家配方自动生成行为测试;Bug任务要求根据日志、profiling等运行时信息深入调查。排行榜显示,Claude Opus 4.8搭配Mini-SWE-Agent(max effort)通过率24.0%,Claude Sonnet 5为19.4%,GPT-5.5为16.0%,最强前沿模型在超75%任务中未能达到高级工程师级别的正确性与品味。每个功能任务平均涉及11个文件,最强智能体也需数百步完成;中位指令长度仅为SWE-Bench Pro的31%。任务来源于从库到多服务应用的仓库PR,由拥有数百次提交的工程师编写。

推荐理由

这个新基准把 AI 编程代理的评估拉到了更真实的复杂度,顶尖模型也只有不到四分之一的成功率,做 coding agent 的都该拿它测一测,它会比 SWE-bench 更挑出工程师的“手感”。

正文 · AI 翻译

我们把智能体当作资深工程师来对待,那为什么还要像评估初级工程师那样评估它们?

资深工程师能在需求不过度明确的情况下构建功能

Senior SWE-Bench 的功能任务带有贴近真实的指令,读起来像自然语言消息,而不是过度明确的需求。为了可靠地评估这些任务,我们引入了一个验证智能体,它使用专家设计的配方来编写能够适应所提交解决方案的行为测试。

资深工程师能解决那些需要根据行为报告进行运行时调查的 bug

Senior SWE-Bench 的 bug 任务反映了棘手的用户报告,并聚焦于调查过程,从启动服务到调试微妙的运行时问题。这些任务来源于那些需要大量运行时调查才能解决的 PR(例如日志、性能分析数据、复现步骤)。

资深工程师无需被吩咐就能交付正确的代码

Senior SWE-Bench 通过将运行时正确性测试与若干基于所观察到的代码库实践的质量指标相结合,来为有品味的解决方案评分。此外,验证器和验证流程还可以针对指令中未明说但至关重要的代码库实践进行测试。

关于我们技术贡献的更多内容,包括验证智能体、品味评分和质量控制流程,

请阅读博客文章

过度指定

6,008 字符 · 约 39 个代码符号

swe-bench-pro/instruction.md

### 为 BookWorm 添加 Google Books 作为元数据来源,用于回退/暂存导入

### 问题 / 机会

BookWorm 目前依赖 Amazon 和 ISBNdb 作为其元数据的主要来源。当元数据缺失、格式错误或不完整时——尤其是对于仅有 ISBN-13 的书籍——这就会带来问题。因此,通过 promise items 或

`/api/import`

提交的不完整记录可能无法被丰富,从而在 Open Library 中留下质量较差的条目。这一限制影响了数据质量以及用户导入的成功率,对于较为冷门或国际性的书籍尤其如此。

### 论证:我们为什么应该做这件事,可衡量的影响是什么?

将 Google Books 作为后备元数据源集成,可增强 Open Library 补充和暂存更丰富版本数据的能力。这提升了导入图书的完整性,减少了因元数据稀疏而导致的导入失败,并增强了用户在导入体验中的信任。其影响可通过导入成功率的提升以及诸如“Book 978...”这类占位条目的出现频率降低来衡量。

### 定义成功:我们如何知道问题已解决?

- BookWorm 能够使用 ISBN-13 从 Google Books 获取并暂存元数据。

- 自动化测试确认能够准确解析各种 Google Books 响应,包括:

- 正确映射可用字段(标题、副标题、作者、出版商、页数、描述、出版日期)。

- 妥善处理缺失或不完整的字段(例如,无作者、无 ISBN-13)。

- 当 Google Books 返回零个或多个匹配结果时,返回无结果。

### 提案

在 BookWorm 中引入对 Google Books 作为后备元数据提供者的支持。当 Amazon 查询失败或仅有 ISBN-13 可用时,BookWorm 应尝试从 Google Books API 获取元数据并将其暂存以供导入。这包括更新来源逻辑、元数据解析,并确保来自

`google_books`

被正确处理。

要求:

- 元组

`STAGED_SOURCES`

在

`openlibrary/core/imports.py`

中必须包含

`"google_books"`

作为有效来源,以便来自 Google Books 的暂存元数据能被导入流水线识别和处理。

- 用于暂存 bookworm 元数据的 URL 是 "http://{affiliate_server_url}/isbn/{identifier}?high_priority=true&stage_import=true",其中 affiliate_server_url 来自 openlibrary/core/vendors.py,参数 identifier 可以是 ISBN 10、ISBN 13 或 B*ASIN。

- 当在

`openlibrary/plugins/importapi/code.py`

中使用

`supplement_rec_with_import_item_metadata`

补充记录时,如果

`source_records`

字段已存在,则必须新增(扩展)标识符,而不是替换现有值。

- 在

`scripts/affiliate_server.py`

中,一个名为

`stage_from_google_books`

的函数必须尝试使用 Google Books API 获取并暂存给定 ISBN 的元数据,如果成功,则通过将其添加到对应批次来持久化该元数据,使用

`Batch.add_items`

。

- 在

`scripts/affiliate_server.py`

中的 affiliate server 处理器必须对从 Amazon 返回无结果的 ISBN-13 标识符回退到 Google Books,但仅当请求中同时设置了查询参数

`high_priority=true`

和

`stage_import=true`

时。

- 如果 Google Books 对单个 ISBN 查询返回多个结果,逻辑必须记录一条警告消息,并跳过该元数据的暂存,以避免引入不可靠的数据。

- 从 Google Books 响应中解析并暂存的元数据字段必须至少包括:

`isbn_10`

,

`isbn_13`

,

`title`

,

`subtitle`

,

`authors`

,

`source_records`

,

`publishers`

,

`publish_date`

,

`number_of_pages`

,以及

`description`

,并且必须匹配 Open Library 导入系统所期望的数据结构。

- 在

`scripts/promise_batch_imports.py`

中,必须更新暂存逻辑,以便在补全不完整记录时,

`stage_bookworm_metadata`

会被使用,而不是此前任何仅针对 Amazon 的直接逻辑。

引入的新接口:

以下是新的公开接口,已移除来自无关文件的条目。

函数:fetch_google_book

位置:scripts/affiliate_server.py

输入:isbn (str) — ISBN-13

输出:若 HTTP 200,则返回包含 Google Books API 原始 JSON 响应的 dict,否则返回 None

描述:根据给定的 ISBN 从 Google Books API 获取元数据。

函数:process_google_book

位置:scripts/affiliate_server.py

输入:google_book_data(dict)—— 从 Google Books 返回的 JSON 数据

输出:如果成功,返回包含规范化 Open Library 版本字段的 dict,否则返回 None

描述:将 Google Books API 数据处理为规范化的 Open Library 版本记录。

函数:stage_from_google_books

位置:scripts/affiliate_server.py

输入:isbn(str)—— ISBN-10 或 ISBN-13

输出:bool —— 如果元数据成功暂存则返回 True,否则返回 False

描述:根据给定的 ISBN 从 Google Books 获取并暂存元数据,如果找到则将其添加到导入批次中。

函数:get_current_batch

位置:scripts/affiliate_server.py

输入:name(str)—— 批次名称,例如 "amz" 或 "google"

输出:与所提供名称对应的批处理实例

描述:检索或创建用于暂存导入项的批处理对象。

类:BaseLookupWorker

位置:scripts/affiliate_server.py

描述:用于 API 查询工作线程的基础线程类。使用提供的函数处理来自队列的项。

方法:BaseLookupWorker.run(self)

位置:scripts/affiliate_server.py

描述:公开方法,用于在循环中处理来自队列的项,对每个检索到的项调用 process_item 可调用对象。

类:AmazonLookupWorker

位置:scripts/affiliate_server.py

描述:线程化工作线程,用于批量处理 Amazon API 查询,继承自 BaseLookupWorker。

方法:AmazonLookupWorker.run(self)

位置:scripts/affiliate_server.py

描述:公开方法重写,从队列中批量取出最多 10 个 Amazon 标识符,使用 Amazon 批处理程序一起处理,并根据 API 约束管理时序。

真实感

639 字符 · 0 个代码符号

eng-platform

工程师

上午 10:42

编程智能体

应用

上午 10:43

正在启动沙箱…

排行榜

求解需要

验证器

通过

验证

通过

评分标准

>0.5

臃肿

<2×

练习

>2/5

相对品味

>2/5

  • 1

    Claude Opus 4.8

    Mini-SWE-Agent · max

    24.0%

  • Claude Sonnet 5

    Mini-SWE-Agent · max

    19.4%

  • 2

    GPT-5.5

    Mini-SWE-Agent · xhigh

    16.0%

  • 3

    Claude Opus 4.7

    Mini-SWE-Agent · max

    14.1%

  • 4

    GPT-5.4

    Mini-SWE-Agent · xhigh

    14.0%

  • 5

    GLM-5.2

    Mini-SWE-Agent · max

    12.5%

  • 6

    Kimi K2.6

    Mini-SWE-Agent · default

    8.2%

  • 7

    Claude Sonnet 4.6

    Mini-SWE-Agent · high

    8.2%

  • 8

    Gemini 3.1 Pro

    Mini-SWE-Agent · high

    6.1%

  • 9

    Gemini 3.5 Flash

    Mini-SWE-Agent · medium

    3.0%

#模型投入程度解决率(pass@1)
1Claude Opus 4.8max

24.0%

Claude Sonnet 5max

19.4%

2GPT-5.5xhigh

16.0%

3Claude Opus 4.7max

14.1%

4GPT-5.4xhigh

14.0%

5GLM-5.2max

12.5%

6Kimi K2.6default

8.2%

7Claude Sonnet 4.6high

8.2%

8Gemini 3.1 Prohigh

6.1%

9Gemini 3.5 Flashmedium

3.0%

Tasteful 求解率(pass@1)

平均

/ 任务

表现最好的前沿模型在超过 75% 的情况下,无法以资深级别的正确性和品味完成任务。

任务

Senior SWE-Bench 的任务来源于各类代码仓库中的 PR,涵盖从库到多服务应用,作者均是在各自仓库中拥有数百次提交的工程师。我们重点关注多阶段、多技术栈的功能类 PR,以及需要大量运行时排查的 bug/性能类 PR。关于任务设计的更多内容,请阅读这篇博客文章

任务

50 个公开

50 个私有

仓库

posthog

(8)

electric

(6)

gitea

(6)

better-auth

(4)

harbor

(4)

+7 更多

Python 服务

Elixir

Go

SQL

TS 库

Python 库

Rust

TS 前端

+4 更多

更自然的欠明确指令

Senior SWE-Bench 任务反映了与智能体之间的自然沟通,其指令长度中位数仅为 SWE-Bench Pro 的 31%。

更多样的任务范围

Senior SWE-Bench 功能任务可以跨越多个服务,每个功能任务平均涉及 11 个文件。

更长的任务周期

Senior SWE-Bench 任务被设计为长周期任务,即使是最强的智能体也需要数百个步骤才能完成。

Senior SWE-Bench

功能任务

Senior SWE-Bench

缺陷/性能任务

DeepSWE

SWE-Bench Pro

Senior SWE-Bench

对比

·

更自然、信息更不完整的指令

Senior SWE-Bench 的任务反映了与智能体的自然沟通方式,其指令长度中位数仅为 SWE-Bench Pro 的 31%。

Senior SWE-Bench

功能任务

Senior SWE-Bench

缺陷/性能任务

DeepSWE

SWE-Bench Pro

任务范围更多样

Senior SWE-Bench 的功能任务可以跨越多个服务,每个功能任务平均涉及 11 个文件。

Senior SWE-Bench

功能任务

Senior SWE-Bench

Bug/性能任务

DeepSWE

SWE-Bench Pro

更长的任务跨度

Senior SWE-Bench 的任务被设计为长跨度任务,即使是最强的智能体也需要数百个步骤才能完成。

Senior SWE-Bench

对比

·

参考解决方案的 SLOC 和文件数在三个基准测试中采用相同的测量方式。指令长度不包含测试框架的样板代码。其他基准测试的 Token 和步骤数基于其自行报告的指标。

来源:Hacker News 热门(buzzing.cc 中文翻译) · senior-swe-bench.snorkel.ai