ProgramBench(5分钟阅读)

TLDR AI 工具

摘要

ProgramBench 是一项全新的基准测试,用于评估 AI 智能体在无法获取源代码或反编译工具的情况下,仅凭编译后的二进制文件和文档重建完整软件项目的能力。

ProgramBench 要求智能体在没有源代码的条件下重新创建可执行软件,只能依靠文档和反复试验。测试任务涵盖从终端工具到编译器、库等复杂软件,提供超过 248,000 个行为测试,覆盖 200 项任务。智能体必须在安全的沙箱环境中从零开始设计和实现,强调软件架构能力,且不能使用外部辅助工具或反编译手段。
查看原文 导出为 Word 导出为 PDF
查看缓存全文

缓存时间: 2026/05/08 09:21

# ProgramBench 来源:https://programbench.com/ ProgramBench logo语言模型能从零重建程序吗? 仅给定一个编译后的二进制文件及其文档,智能体必须设计并实现一套完整的代码库,以复现原始程序的行为。 ## 关于 ProgramBench 在每个任务中,智能体会收到一个可执行文件及其文档,并必须重新实现该可执行文件。它无法获取该可执行文件的*任何*源代码,不能对可执行文件进行反编译(https://programbench.com/#faq-decompilation),也不能使用互联网(https://programbench.com/#faq-internet)。共有200个任务(https://programbench.com/tasks/),涵盖不同的程序复杂度,从小型终端工具如 jq(https://programbench.com/task/jqlang__jq.b33a763/)和 ripgrep(https://programbench.com/task/burntsushi__ripgrep.3b7fd44/),到大型软件项目如 PHP 编译器(https://programbench.com/task/php__php-src.c891263/)、FFmpeg(https://programbench.com/task/ffmpeg__ffmpeg.360a402/)和 SQLite(https://programbench.com/task/sqlite__sqlite.839433d/)。 智能体必须选择编程语言、设计架构、编写所有源代码并生成构建脚本。每一个设计决策都由模型自主做出。 一旦智能体提交程序,我们的测试套件会将候选程序的行为与原始程序进行比较。只有当某个任务的所有测试都通过时,该候选程序才算通过。 我们的测试套件通过智能体驱动的模糊测试生成,包含超过248,000个行为测试,覆盖200个任务(https://programbench.com/tasks/)。 ProgramBench 中的任务有可能完全解决吗?是的。智能体可以运行给定程序并观察其任意输入下的行为,因此不存在无法通过实验发现的隐藏信息。该基准测试虽然困难,但设计上是可以解决的:所有参考可执行文件都能通过我们的测试套件。更多内容请阅读我们的博客文章(https://programbench.com/blog/is-programbench-impossible/)。 为什么 ProgramBench 的分数这么低?从零构建程序本质上是一项极具挑战性的任务。智能体目前在许多任务上已取得部分进展(详见扩展结果 https://programbench.com/extended/),但完全通过所有测试仍然难以实现。 **智能体真正需要进行架构设计。**这部分是因为与其他整库生成项目不同,我们不给智能体任何提示或结构,意味着智能体必须真正自主设计解决方案(参见"ProgramBench 有何不同?https://programbench.com/#faq-related-work")。 **无需调优测试框架。**其他近期或同期工作针对单个或少数任务进行了大量的框架调优。我们刻意避免这种做法,因为针对少量精选任务调优框架得出的 headline 分数会严重夸大智能体从零构建软件的真实能力。相反,ProgramBench 使用单一的通用测试框架评估所有任务。 **洁净室实现。**我们采取了大量措施防止作弊。智能体在沙箱容器中运行,无互联网访问,因此无法获取原始源代码或获得其他形式的帮助。 **禁止反编译。**参见"任务可以通过反编译解决吗?https://programbench.com/#faq-decompilation" 我们在论文的第6节(https://arxiv.org/abs/2605.03546)回顾了相关工作。我们还在下方的 FAQ(https://programbench.com/#faq-cheating)和论文第4.1节讨论了作弊问题。 你的智能体脚手架足以解决所有任务吗? **广泛采用的基线。**我们使用 mini-SWE-agent(https://github.com/swe-agent/mini-swe-agent/),因为它既被其他基准测试(SWE-bench Verified、SWE-bench Multilingual、Terminal-bench)广泛采用作为基线,又刻意保持脚手架的简洁性,以减少模型能力与框架设计之间的混淆因素。大多数其他智能体(如 Claude Code,据称有数十万行代码)也在不断以非透明的方式变化,而 mini-SWE-agent 可以在可预见的未来实现模型性能的公平比较。 **几乎没有运行时限制。**除极少数例外,模型是主动提交解决方案,而非超出我们宽松的时间或步骤限制,且它们从未耗尽上下文窗口。由于我们不限制总成本,我们的单次运行成本最高可达 $5,000(Sonnet 4.5)。 **不同程度的难度。**ProgramBench 刻意包含从仅几千行代码的极短仓库到极其庞大的各种难度任务。我们认为极低的分数更多反映的是模型能力不足,而非只有多智能体系统才能解决我们的任务。尽管如此,如果 ProgramBench 能成为首批包含只有多智能体系统才能解决任务的系统性基准之一,我们将非常兴奋。 **开启新的脚手架竞赛。**我们相信 mini-SWE-agent(https://github.com/swe-agent/mini-swe-agent/)是正确的基线选择,且它绝对可以解决(部分)任务。然而,如果 ProgramBench 能开启一场新的脚手架竞赛,我们将更加兴奋!我们即将开放提交(https://programbench.com/#faq-submit)。 智能体能作弊吗?智能体在沙箱容器中运行,无互联网访问,对二进制文件仅有执行权限,且无法使用反编译工具。在早期未设限的试验中,模型发现了从 GitHub 克隆源代码仓库或通过包管理器下载代码等捷径。更多内容请阅读我们的博客文章(https://programbench.com/blog/is-programbench-impossible/)和论文第4.1节(https://arxiv.org/abs/2605.03546)。 为什么以及如何阻止反编译?提供给智能体的可执行文件只有执行权限,没有读取权限。这意味着任何非执行操作(如运行反编译器、反汇编器、`objdump`、`strings` 或 `hexdump`)都会失败。 我们这样做是因为希望 ProgramBench 回答的问题是"语言模型从零构建程序的能力如何",而非"语言模型拼凑反编译代码片段的能力如何"。 排行榜如何排序?主要指标是什么?ProgramBench 应报告的主要指标是完全解决的任务数。目前在主要指标分数较低的情况下,我们也报告"接近解决"(超过95%的测试用例通过)作为额外参考。排行榜首先按完全解决数排序,其次按接近解决数排序,最后按平均测试通过率排序。 要详细了解模型性能,我们推荐查看详细排行榜(https://programbench.com/extended/)上的图表。另见:"你们考虑过其他指标吗?https://programbench.com/#faq-metrics" 如何提交到排行榜?公开提交门户即将上线。请关注作者(John https://x.com/jyangballin、Kilian https://x.com/KLieret)获取更新。 为什么不允许使用互联网?我们广泛研究了包括允许互联网在内的不同推理设置。我们发现允许互联网会导致大量作弊,需要语言模型作为评判来标记和取消资格解决方案。这使得基准测试的可靠性降低,尤其是因为在从网络获取源代码的背景下,精确定义作弊并非易事。 然而,除了包含作弊的实例外,我们并未观察到允许互联网时分数有显著提升。 相关消融实验见论文第4.1节(https://arxiv.org/abs/2605.03546)和 John 的解释(https://x.com/jyangballin/status/2051829957199011974)。 你们考虑过其他指标吗?例如,平均通过测试数?是的,经过深思熟虑后我们确定了当前的解决指标。我们的核心问题是"语言模型能从零构建程序吗?",最相关的指标是能完全构建的程序比例。报告平均测试通过率会极具误导性,因为每个实例都包含非常简单的测试(如检查标志是否存在、使用 `--help` 调用可执行文件时的行为等)。 我们也考虑过使用更宽松的指标如"接近解决"。然而,放宽到 ≥95% 甚至 99% 的测试通过也存在问题。首先,对于某些任务,我们有近15,000个测试。即使1%也意味着150个测试。而且即使单个测试失败也可能表明程序存在严重问题。因此"接近解决"仅作为额外参考,直到主要"解决"指标有足够的区分度。 然而,所有辅助指标对于诊断和改进模型及脚手架仍然有用!它们只是不适合作为基准指标。更多信息请查看扩展结果(https://programbench.com/extended/)。另见:"排行榜如何排序?https://programbench.com/#faq-sorting" 那污染/记忆化问题呢?所有任务均来自开源仓库。因此,评估的语言模型在训练期间肯定见过它们。然而,我们目前**并不**担心这一点: **零分。**即使记忆化在起作用(在我们看来并非如此),它也远不足以获得高分。分数似乎与系统性的功能实现努力更为相关。 **不同语言消融。**在论文第4.1节(https://programbench.com/static/paper.pdf)中,我们引入了一种替代推理设置,强制模型使用与原始程序不同的语言实现,有效绕过了记忆化(尤其是因为记忆化极度依赖提示)。分数没有显著变化,得出当前分数与原始源代码的记忆化没有显著相关的结论。 直接记忆化极其容易测量,我们正在积极监控。如果它成为明显问题,我们可能会调整推理设置来防止。目前,更重要的是确保所有任务都是可解决的(https://programbench.com/#faq-solvable)且自然的,因此我们去除了防止作弊(https://programbench.com/#faq-cheating)之外不必要的限制。 🌸 命令行模糊查找器 79,721 go 最佳分数:82%(https://programbench.com/task/junegunn__fzf.b56d614/) git 命令的简单终端 UI 76,901 go 最佳分数:56%(https://programbench.com/task/jesseduffield__lazygit.1d0db51/) ripgrep 递归搜索目录中的正则表达式,同时尊重 gitignore 62,855 rs 最佳分数:80%(https://programbench.com/task/burntsushi__ripgrep.3b7fd44/) https://git.ffmpeg.org/ffmpeg.git 的镜像 59,217 c 最佳分数:5%(https://programbench.com/task/ffmpeg__ffmpeg.360a402/) 带翅膀的 cat(1) 克隆 58,487 rs 最佳分数:33%(https://programbench.com/task/sharkdp__bat.f822bd0/) 强大且易学的标记排版系统 52,957 rs 最佳分数:28%(https://programbench.com/task/typst__typst.88356d0/) 通用标记转换器 43,632 hs 最佳分数:14%(https://programbench.com/task/jgm__pandoc.5caad90/) 'find' 的简单、快速、用户友好替代方案 42,668 rs 最佳分数:78%(https://programbench.com/task/sharkdp__fd.40d8eb3/) PHP 解释器 40,030 c 最佳分数:5%(https://programbench.com/task/php__php-src.c891263/) DuckDB 是一款分析型进程内 SQL 数据库管理系统 37,657 cpp 最佳分数:12%(https://programbench.com/task/duckdb__duckdb.bdb65ec/) 更智能的 cd 命令。支持所有主流 shell 35,994 rs 最佳分数:76%(https://programbench.com/task/ajeetdsouza__zoxide.67ca1bc/) 命令行 JSON 处理器 34,541 c 最佳分数:90%(https://programbench.com/task/jqlang__jq.b33a763/) git、diff、grep、rg --json 和 blame 输出的语法高亮分页器 30,445 rs 最佳分数:37%(https://programbench.com/task/dandavison__delta.acd758f/) 命令行基准测试工具 27,960 rs 最佳分数:54%(https://programbench.com/task/sharkdp__hyperfine.327d5f4/) ggreer/the_silver_searcher 类似 ack 但更快速的代码搜索工具 27,080 c 最佳分数:59%(https://programbench.com/task/ggreer__the_silver_searcher.a61f178/) Zstandard - 快速实时压缩算法 27,013 c 最佳分数:69%(https://programbench.com/task/facebook__zstd.1168da0/) facebookresearch/fastText 快速文本表示与分类库 26,511 cpp 最佳分数:76%(https://programbench.com/task/facebookresearch__fasttext.1142dc4/) robertdavidgraham/masscan TCP 端口扫描器,异步发送 SYN 数据包,5 分钟内扫描整个互联网 25,544 c 最佳分数:57%(https://programbench.com/task/robertdavidgraham__masscan.b99d433/) 编程工具的增量解析系统 24,953 rs 最佳分数:37%(https://programbench.com/task/tree-sitter__tree-sitter.5e23cca/) 简单、现代、安全的加密工具(及 Go 库),具有小巧显式密钥、无配置选项和 UNIX 风格可组合性 22,077 go 最佳分数:63%(https://programbench.com/task/filosottile__age.706dfc1/) 从 markdown 文件创建书籍。类似 Gitbook,但用 Rust 实现 21,541 rs 最佳分数:55%(https://programbench.com/task/rust-lang__mdbook.37273ba/) n3 非正统终端文件管理器 21,506 c 最佳分数:98%(https://programbench.com/task/jarun__nnn.cb2c535/) 终端 JSON 查看器和处理器 20,433 go 最佳分数:76%(https://programbench.com/task/antonmedv__fx.86d0d34/) yq 是一款可移植的命令行 YAML、JSON、XML、CSV、TOML、HCL 和 properties 处理器 15,281 go 最佳分数:39%(https://programbench.com/task/mikefarah__yq.602586d/) ⬛️ 将完整网页保存为单个 HTML 文件的 CLI 工具和库 15,024 rs 最佳分数:51%(https://programbench.com/task/y2z__monolith.8702e66/) 整理你的 .profile 14,998 go 最佳分数:62%(https://programbench.com/task/direnv__direnv.02040c7/) Brotli 压缩格式 14,673 c 最佳分数:91%(https://programbench.com/task/google__brotli.b3dc9cc/) 让 JSON 可 grep!14,424 go 最佳分数:90%(https://programbench.com/task/tomnomnom__gron.88a6234/) 快速统计代码量 14,300 rs 最佳分数:70%(https://programbench.com/task/xampprocky__tokei.505d648/) ⚡ 用 Rust 编写的代码结构化搜索、lint 和重写 CLI 工具 13,541 rs 最佳分数:12%(https://programbench.com/task/ast-grep__ast-grep.dde0fe0/) cheat 允许你在命令行创建和查看交互式速查表。旨在帮助 *nix 系统管理员记住常用但不常记的命令选项 13,278 go 最佳分数:60%(https://programbench.com/task/cheat__cheat.b8098dc/) git 的文本模式界面 13,200 c 最佳分数:84%(https://programbench.com/task/jonas__tig.8334123/) 注重速度的小型构建系统 12,895 cpp 最佳分数:72%(https://programbench.com/task/ninja-build__ninja.cc60300/) 查看和导航目录树的新方式:https://dystroy.org/broot 12,619 rs 最佳分数:67%(https://programbench.com/task/canop__broot.d6c798e/) 带图表的 Ping 12,433 rs 最佳分数:78%(https://programbench.com/task/orf__gping.26eb5b9/) 🌀 无意义活动生成器 11,995 rs 最佳分数:59%(https://programbench.com/task/svenstaro__genact.16f96e3/) 极速压缩算法 11,781 c 最佳分数:83%(https://programbench.com/task/lz4__lz4.1519f46/) 命令行 Git 信息工具 11,745 rs 最佳分数:82%(https://programbench.com/task/o2sh__onefetch.e5958ce/) 更直观的 rust 版 du 11,609 rs 最佳分数:71%(https://progr

相似文章

EVMbench 介绍

OpenAI Blog

OpenAI 和 Paradigm 推出了 EVMbench,这是一个用于评估 AI 代理在检测、修复和利用智能合约漏洞方面能力的基准测试,涵盖来自 40 次审计的 117 个精选漏洞。该基准测试显示 GPT-5.3-Codex 在利用任务上达到了 71% 的成功率,显著优于 GPT-5 的 33.3%,而检测和修复任务仍然更具挑战性。

PaperBench:评估AI复现AI研究的能力

OpenAI Blog

OpenAI推出PaperBench,一个评估AI代理复现最先进AI研究能力的基准。该基准通过复现20篇ICML 2024论文,包含8,316个可评分任务。表现最好的模型(Claude 3.5 Sonnet)仅达到21%的复现分数,低于人类博士级别的表现,凸显了当前自主研究能力的局限性。