AI编码新极限:0%完成率揭示大模型工程智能鸿沟

type
status
date
slug
summary
tags
category
icon
password
网址
人工智能在代码生成领域取得了令人瞩目的进步,从辅助编写函数到修复bug,大模型似乎正以前所未有的速度渗透到软件开发流程中。然而,一个名为 ProgramBench 的全新基准测试,由SWE-Bench的作者团队发布,却给整个AI界泼了一盆冷水。测试结果显示,包括Claude Opus、GPT-4.x系列、Gemini Pro等在内的几乎所有一线顶尖大模型,在从零开始重建真实软件项目时,都取得了令人震惊的0%完成率。这一结果不仅颠覆了我们对AI编码能力的认知,更深刻地揭示了当前大模型在软件工程这一复杂领域所面临的严峻挑战。

ProgramBench:重新定义AI编码评估标准

过往的AI编程基准测试,如SWE-Bench、HumanEval等,大多聚焦于局部代码能力。它们测试模型能否补全函数、修复已知bug、实现特定功能模块,本质上是在一个既有的代码框架内进行修改和优化。这种评估方式,虽然展示了模型在“写代码”上的局部天赋,却未能触及软件工程的核心——全局规划与系统构建能力
ProgramBench则是一次大胆的革新。它首次将评估的触角伸向了真正的软件工程层面。研究团队设定了一个“地狱级”的任务:仅提供目标程序的功能描述使用文档(usage docs)**,要求模型从零开始,自主构建一个完整的、可执行的真实软件系统。例如,像ffmpeg、SQLite、ripgrep这样成熟且复杂的开源项目。
更具挑战性的是,模型被禁止联网,迫使其完全依赖自身的“工程智能”来完成任务。这意味着模型需要独立决定编程语言、软件架构、模块划分、数据结构设计,乃至整个代码仓库(repository)的组织方式。

颠覆性结果:0%完成率背后的深层含义

ProgramBench的评分机制也与众不同。它不再依赖源码相似度,而是采用行为等价性(behavioral equivalence)作为衡量标准。换句话说,模型可以使用完全不同的编程语言、算法或架构,只要最终构建出的程序在功能上能与原始程序实现相同输入输出行为,就算通过。为了确保评分的严谨性,研究团队甚至利用了agent-driven fuzzing技术,自动生成海量端到端行为测试用例。
当结果公布时,整个AI领域为之震动:所有参与测试的模型,完成率均为0%。虽然研究人员也指出,模型并非完全无能,它们往往能完成部分任务,甚至在某些简单任务上表现接近。但“最后一公里”的挑战——即实现100%的行为等价性——成为了所有模型的“滑铁卢”。这恰恰是区分普通代码生成与真正软件工程的关键所在。

模型“单体化”倾向:AI与人类工程思维的鸿沟

论文中一个特别关键的发现是:“模型极度倾向于生成单体化代码(monolithic, single-file implementations)。” 这意味着模型倾向于将大量逻辑塞进单个文件,目录结构扁平化,模块拆分极少,函数体庞大。这种代码风格与优秀人类工程师追求的模块化、关注点分离的原则几乎完全相反。人类工程师会精心将配置、工具函数、数据库操作等模块化管理,通过import机制协同工作,以提高代码的可读性、可维护性和可扩展性。
这种“单体化”倾向,暴露了AI在全局系统规划能力上的短板。模型擅长局部代码生成,但难以进行长期的、跨模块的系统设计。这也是为何模型在LeetCode、SWE-Bench等局部任务上表现优异,一旦面对真实大型工程系统,便会迅速“掉进深水区”。当前AI Coding的瓶颈,已不再是代码生成本身,而是长期的软件系统构建与维护能力

语言与复杂度:影响AI工程表现的关键因素

ProgramBench的结果还揭示了不同编程语言和项目复杂度对模型表现的影响。
  • 语言偏好:模型在C/C++项目上的完成度普遍高于Rust项目,而Rust项目表现最差。这可以理解为,互联网上充斥着海量的C/C++历史代码、工程实践和Stack Overflow问答,模型长期浸泡于这些模式之中。而Rust强调的模块化、所有权、Trait系统和长期可维护性,恰恰是当前模型最不擅长的领域。可以说,Rust项目测试的,不仅是代码能力,更是工程能力
  • 任务复杂度:对于ffmpeg、php-src、typst、ast-grep这类复杂系统,几乎所有模型都难以推进。而nnn、fzf、gron等相对简单的命令行工具,模型则普遍能获得更高的通过率。这表明ProgramBench并非偶然失误,而是复杂软件系统本身对当前模型形成了稳定的压制

关于ProgramBench的争议与AI的未来之路

ProgramBench的发布引发了一些讨论。
  • “模型是否只是背诵了FFmpeg?” 质疑者认为,许多测试项目本身是公开开源软件,模型可能只是记住了答案。对此,硅谷投资人Deedy Das回应,任何基准测试都可能被“过拟合”。SWE-Bench可以记住bug,LeetCode可以背题目。但如果模型试图通过“硬背”程序来通过测试,往往会在其他方面退化。研究人员也可以通过比对生成代码与原始源码的相似度来检测记忆行为。他强调,从底层重建一个真实世界系统,本身就是一种高价值、长跨度的复杂任务,模型若能完成,其能力很可能泛化。
  • “人类平均水平也做不到,这合理吗?” 另一种观点认为,连人类工程师也不可能从零重写FFmpeg,为何要以此测试AI?Deedy Das反驳,AI的目标是推动智能逼近更高层次,而非仅仅模拟人类平均水平。AlphaGo超越人类棋手,并不影响其推动AI发展。一个远超普通工程师能力边界的基准,可能是未来Agent系统必须攻克的难关。
尽管ProgramBench仍存在一些不足,如未测试完整的Agent harness、缺乏更细粒度的进展衡量、限制联网可能导致“在错误指标上爬坡”等,但其核心价值在于:将AI Coding的评估从函数级提升到了系统级。它清晰地暴露了行业的最大断层:真正的软件开发,是构建可维护、可扩展、可协作的工程系统,而非仅仅写几行代码。
当前大模型已擅长局部代码生成,但缺乏长期、稳定维护复杂系统的能力。这促使整个行业开始疯狂研究memory、agents、repo-level reasoning、long-horizon planning、autonomous software engineering等关键词。下一阶段的竞争,将不再是谁能一次性生成更长的代码,而是谁能在长时间、多轮交互、复杂上下文中,持续稳定地维护一个活着的软件系统。ProgramBench正是这场AI工程智能革命的序章。
AI作为一股强大的力量,正在不断刷新我们对技术边界的认知。关注最新的AI资讯、AI新闻,了解大模型(LLM)的最新进展,以及人工智能(AI)在各个领域的应用,对于把握未来趋势至关重要。访问 AI门户 https://aigc.bar ,获取更多关于AI、AGI、提示词(Prompt)优化、AI变现等前沿内容,了解OpenAI、ChatGPT、Claude等最新动态,以及AI日报等深度分析。
Loading...

没有找到文章