Meta 做了个实验:让 AI 从零重建软件,结果全军覆没

AI Coding软件工程ProgramBenchBenchmark系统重建Meta
2026-05-08 周五

Meta 最新论文 ProgramBench 提出了一个极具挑战性的 AI Coding Benchmark:
不给源码,只给程序和文档,让模型从零重建完整软件系统。

结果是:
200 个真实项目、9 个顶级模型、完整解决率 0%。AI Coding 的问题,开始从“代码生成”进入“系统重建”。

最近关于 AI Coding 的讨论,越来越乐观。

Anthropic 在讲 Claude Code 如何重构研发流程;
OpenAI 在讲 Agent 如何接管软件工程;
各种“90% 出码率”“端到端自动化”“AI 自主开发”的故事,也越来越多。

需要说明的是:
ProgramBench 测的并不是 Claude Code、Codex、Cursor 这些具体产品本身,
而是在统一 SWE-agent 执行框架下,不同顶级模型作为“Agent 大脑”时,是否具备从零重建软件系统的能力。

但就在这个时间点,Meta 放出了一个很“泼冷水”的 Benchmark。

他们让模型做一件听起来很合理的事:
给你一个软件、给你文档,不给源码。
你能不能把它重新做出来?

结果是:
200 个真实开源项目。
9 个顶级模型。
完整解决率:0%。

来自 Meta FAIR、Stanford、Harvard 等机构。

它测试的已经不是:

  • “会不会补代码”
  • “会不会修 bug”
  • “会不会通过 unit test”

而是:
AI 是否已经具备“完整软件工程重建能力”。

而结果,其实非常值得行业重新冷静一下。

不是“写代码”,而是“重建软件”#

图 1:ProgramBench 要求 SWE-agent 根据程序和文档重建源码,并通过行为等价测试进行评估

ProgramBench 的任务设定很简单,但非常狠。

研究者给模型的,不是源码仓库。

而是:

  • 一个可运行程序(reference executable)
  • 使用文档
  • help 信息
  • 必要运行环境

然后让 Agent:

  • 自己理解行为
  • 自己设计架构
  • 自己决定语言
  • 自己组织模块
  • 自己生成构建脚本
  • 最终实现一个“行为等价”的新程序

也就是说:
它不是 repo patching。
不是 issue fixing。
不是 code completion。

而是:
从黑盒行为,重新构建一个完整软件系统。

这里最重要的一点是:
ProgramBench 并不要求模型复刻原始源码。

你可以:

  • 用不同语言
  • 用不同架构
  • 用不同算法

只要最终行为一致即可。

所以它真正测的,其实是:

  • 行为理解能力
  • 系统拆解能力
  • 软件架构能力
  • 长链路工程组织能力

而不仅仅是:
“会不会生成代码”。

它和 SWE-bench,不是一回事#

过去大家熟悉的代码评测,比如 SWE-bench,本质上还是:

  • 给已有代码仓库
  • 给 issue
  • 在既有结构上修 bug 或补功能

模型很多时候是在:
“继续编辑一个已经存在的软件系统”。

但 ProgramBench 更进一步。

它不给源码。
不给已有架构。
不给模块边界。

模型需要自己:

  • 理解行为
  • 推断规格
  • 设计系统
  • 重建工程结构

也就是说:

SWE-bench 更像:
“在已有软件上继续开发”。

而 ProgramBench 开始变成:
“从黑盒行为重新构建软件系统”。

这其实已经是完全不同的问题层级。

为什么这件事突然变重要了?#

因为 AI Coding 正在发生一个变化:

过去很多任务,其实都还是:

  • 局部生成
  • IDE Copilot
  • 函数补全
  • repo 内修改
  • 在既有结构中继续实现

但现在行业开始越来越多讨论:

  • autonomous agent
  • self-improving coding system
  • end-to-end automation
  • AI software engineer

也就是大家正在讨论的:自主 Agent、自我改进系统、端到端自动化、AI 软件工程师。

问题已经变成:
如果没有一个人类提前组织好的系统,
模型自己还能不能把软件真正做出来?

ProgramBench 本质上,就是第一次把这个问题系统化了。

200 个真实项目,难度不低#

这不是玩具 Benchmark。

论文选的都是真实项目,包括:

  • SQLite
  • DuckDB
  • FFmpeg
  • ripgrep
  • jq
  • Lua
  • PHP interpreter
  • fzf
  • zstd
  • xz

等等。

覆盖:

  • 数据库
  • 编译器
  • CLI 工具
  • 文本处理
  • 媒体处理
  • 系统工具

项目规模也不小:

  • 代码行数中位数:8635 行
  • 最大:270 万行
  • 测试函数总数:248,853

评测方式也不是“看代码像不像”。

而是:
看行为是否一致。

测试会比较:

  • stdout
  • stderr
  • exit code
  • 文件输出
  • CLI 行为
  • 副作用

等等。

本质上:
这是一个“黑盒行为复现”任务。

结果:没有任何模型真正完成任务#

图 2:ProgramBench 验证结果及测试通过率累积分布

论文评测了 9 个模型:

  • Claude Opus 4.7
  • Claude Sonnet 4.6
  • GPT 5.4
  • Gemini 3.1 Pro
  • GPT 5 mini
  • Claude Haiku
  • Gemini Flash
    ……

主指标叫 % Resolved

定义是:
所有测试全部通过,
且没有作弊绕过评测。

结果是:
全部为 0%。

没有任何模型完整解决任何任务。

即便最好的 Claude Opus 4.7:
也只有 3% 的任务通过了 95% 以上测试。

这其实是一个很重要的信号。

因为它说明:

“能写出一些功能”

“能真正交付完整软件”
之间,
还隔着非常远的距离。

ProgramBench 真正打到的,不是代码生成#

我觉得这篇论文真正重要的地方,其实不是排行榜。

而是它第一次把 AI Coding 里的一个核心问题,彻底暴露出来:
“会写功能”,不等于“会重建系统”。

当前很多 Coding Agent 的成功,本质上仍然建立在人类已经提前完成:

  • 架构设计
  • 模块边界
  • 工程约束
  • 接口定义
  • 验证体系

之后。

模型很多时候是在:
“继续填充”。

但 ProgramBench 做了一件很狠的事:
它把这些“人类提前组织好的结构”拿掉了。

结果模型很快就开始暴露问题:

  • 一次性生成大量代码
  • 缺少稳定模块边界
  • 长链路行为容易崩
  • 架构逐渐失控
  • 难以持续重构
  • 边界条件大量遗漏

论文甚至专门分析了模型生成代码的形态。

一个很典型的现象是:
模型特别喜欢“一次性大生成”。

图 3:单次最大编辑在最终代码库中的占比。模型常常不是持续重构,而是一次性写出大量代码

很多最终代码,90% 以上来自一次超大编辑。

也就是说:

模型更像是在:
“直接堆一个大实现”。

而不是像真实工程团队那样:

  • 持续拆分
  • 小步验证
  • 模块重构
  • 长期维护

这其实也是当前 AI Coding 的真实边界#

今天很多 AI Coding 的“惊艳效果”,其实都发生在:

  • 已有 repo
  • 已有架构
  • 已有组件库
  • 已有规范
  • 已有测试
  • 已有接口

的前提下。

也就是说:

真正复杂的东西,
很多时候已经被人类提前组织好了。

模型接手的是:
“局部执行”。

所以:
Claude Code、Codex、Cursor、Copilot 很强。

这件事本身并没有错。

但:
这不等于模型已经具备完整软件系统的自主构建能力。

ProgramBench 最大的价值,就是把这两个阶段明确分开了。

这篇论文为什么很重要?#

因为它开始把 AI Coding 的问题:
从“代码生成”,推进到“系统重建”。

而这背后真正缺少的东西,已经不只是模型能力。

而是:

  • 如何理解系统
  • 如何表达结构
  • 如何组织任务
  • 如何持续执行
  • 如何建立验证闭环
  • 如何进行长期维护

也就是说:
AI 软件工程真正困难的部分,
正在从:“生成代码”,转向:“组织软件系统”。

对工程团队,其实是个提醒#

如果你正在把 Coding Agent 接入真实研发流程,这篇论文其实很有参考价值。

第一,不要把 benchmark 高分直接等同于“能够独立完成项目”。
修 bug、补功能、通过单测,和从零构建完整系统,是完全不同的能力层级。

第二,任务边界需要更小、更明确、更可验证。
当前模型更适合:

  • 明确输入
  • 明确接口
  • 明确约束
  • 明确验收

之后的执行。

第三,验证会越来越重要。
ProgramBench 本质上就在说明:
AI Coding 的核心问题,

最终会变成:
“行为是否真的成立”。

而不是:
“代码看起来像不像”。

最后#

ProgramBench 很像一次提醒。

AI Coding 的下一阶段,可能已经不是:
“生成更多代码”。

而是:

  • 如何理解系统
  • 如何表达结构
  • 如何组织执行
  • 如何建立验证闭环

当任务从“补一个函数”,变成“重建一个软件”时,
真正缺失的,
已经不只是模型能力。
而是软件工程本身。

加载中...
加载评论中...