当"做一个类似 xxx 的小工具"真的被丢给 AI,它会怎么收场

你有没有这种感觉:跟 AI 协作写代码,刚开始是"我给需求,它写代码",但用着用着就变成"我丢一句模糊的话,它自己脑补补全"。这两年 Vibe Coding(氛围式编程)这种工作流火得一塌糊涂——Cursor、Claude Code、各种 Agent IDE 都想让你"用自然语言描述意图,剩下交给 AI"。

听起来很美好对吧?但落到工程上,"用自然语言描述意图"这件事本身就有大问题。你给 AI 写"做个配置文件解析器,输出不合法的条目",它到底该: - 解析什么格式?INI、YAML、JSON、还是任意分隔符? - 不合法怎么算?缺字段、类型错、空值、超长行? - 输出格式?JSON、行号、还是人话? - 错误聚合?流式?还是逐行? - 等等

你脑子里有一堆隐含约束,默认 AI 都懂。但 AI 真懂吗?

这就是这篇论文 ICAE-BenchInteractive Coding Agents Evaluation Bench)想较真的问题——把"模糊需求 + 互动澄清 + 端到端工程交付"塞进一个可复现的评测框架里,然后用 480 个真实任务、6 个顶尖模型、12 种编程语言,正面硬刚。

我读完的感受是:这篇文章最大的贡献不是哪个具体的 SOTA 数字,而是它把"评测"这件事本身往"现实工程"的方向狠狠拉了一步。以前 SWE-bench 那种"我给你一个 GitHub issue,你修个 PR"的任务已经够工程了,但 Vibe Coding 场景下连"任务定义"本身都是模糊的——这才接近真实工作流。


核心摘要

痛点:现有代码基准(HumanEval、SWE-bench、Commit0、NL2RepoBench 等)几乎都假设任务需求是"明确、完整、可直接执行"的,最多给个函数签名或 GitHub issue。但 Vibe Coding 场景里,用户给的就是一句话,剩下靠 AI 反复追问补全。

方案:ICAE-Bench 从真实开源项目里抽取出 480 个任务(覆盖 12 种编程语言),每个任务都"从下往上"反向构建: 1. 先选一个能在 Docker 里跑通测试的真实仓库 2. 把原始测试 refactor 成标准化的 black-box JSON 用例 3. 合成一份完整的产品需求文档 GroundPRD(这是 benchmark 的"满分答案") 4. 把 GroundPRD 逐步模糊化成 Fuzzy L1(信息最少)、Fuzzy L2(部分恢复)、Fuzzy L3(接近完整)三个层级 5. 把被隐藏的约束连同触发关键词、grounded 回复一起存进 User Agent Data——一个"只读 oracle" 6. 准备一个终极 Docker 镜像,里面只保留运行时依赖,把 golden code 和原始测试都删掉

关键评测机制:被测智能体拿到的是一份模糊 PRD 和一个空仓库 + 终极镜像,它可以在 16 次内通过 User Agent 追问需求。User Agent 不会自由发挥,只能从预存的需求记录里挑匹配的回复。任务交付后,benchmark 会在全新的容器里重新运行生成出的代码,用 Native + Enhanced 两套测试打分。

主要发现: - 最好的模型(Claude-Opus-4.8)在完整 480 任务上 Overall 通过率只有 38.2%——这个数字相当扎心 - 即便把 GroundPRD 完整给到模型,4 个模型依然达不到 RecoveredPRD(=问完所有可问问题的结果)的水平——说明瓶颈不在"问不问得到",而在"问到后能不能用上" - 给模型提供可执行的 Public 测试脚手架,pass rate 从 37.4% 直接跳到 61.8%——可执行的反馈比清晰的需求更稀缺 - OpenHands 框架让所有模型掉 5.5-21.8 个点,连 Claude Code 里的 SOTA(GPT-5.5)都不例外——框架本身的工程性比模型能力更影响落地质量

我的判断:这是一篇工程上很扎实的基准论文。它没有发明新算法,但把"评测 Vibe Coding 智能体"这件事从"打分"推到了"诊断"的层次。多维度的指标(功能、语义、API、设计、交互质量)配合 controlled ablation,把"为什么这个 AI 在 Vibe Coding 场景下这么笨"这件事拆得相当清楚。对做 Agent 框架、做评测、做 AI 编程工具的人来说,必读


论文信息

  • 论文:ICAE-Bench: Evaluating Coding Agents as Interactive Project Builders
  • 作者:Zhongyuan Peng, Dan Huang, Chuyu Zhang, Caijun Xu, Changyi Xiao, Shibo Hong, David Lo, Lin Qiu, Xuezhi Cao, Jiyuan He†, Yixin Cao† (* 共同一作;† 通讯作者)
  • 机构(基于通讯邮箱推断):复旦大学(Yixin Cao, yxcao@fudan.edu.cn)、美团(Jiyuan He, hejiyuan@meituan.com)、David Lo 来自新加坡管理大学(SMU)
  • 日期:2026/07/23
  • 链接:https://arxiv.org/abs/2607.21217
  • 代码与数据:https://github.com/ALEX-nlp/ICAE-EVAL

现有基准到底卡在哪

先快速过一下论文 Table I 整理的横向对比。看完你就懂为什么需要 ICAE-Bench 了:

基准 任务数 编程语言 需求形式 可见信息 互动 多语言 关注点
Commit0 54 1 固定实现 实现 + 测试 × × 仓库级生成
NL2RepoBench 104 1 固定实现 实现 × × 长链路
PRDBench 50 1 固定测试 测试 × × LLM 智能体
PRDBench(free) 50 1 固定 × × 同上
ProgramBench 200 6 固定程序 可执行程序 × × 程序合成
RealBench 61 ? 固定实现 实现 × × 真实工程
ICAE-Bench-Lite 50 10 Fuzzy L1-L3 Public 用例
ICAE-Bench 480 12 Fuzzy L1-L3 Public 用例

所有前置工作都把"任务"假设成一个静态、明确的合同。但你做 Vibe Coding 的时候,你给 AI 的就是一个合同草案。这种"任务定义本身的模糊性"才是真实工程最稀缺的东西。ICAE-Bench 把"需求形式"这一列从 Fixed 改成了 Fuzzy L1-L3,这才是它最值的差异化。


ICAE-Bench 到底在测什么

一个任务实例是什么

论文里给的形式化定义是:

\[\mathcal{T} = (D_f, E, P, U, B)\]
组件 角色 谁能看到
\(D_f\)(Fuzzy PRD) 初始需求 智能体
\(E\)(Ultimate Image) 运行环境 智能体
\(P\)(Public cases) 可见/可恢复的示例 智能体(通过互动)
\(U\)(User Agent Data) 互动 oracle User Agent 内部
\(B\)(Native + Enhanced cases) 评测目标 仅 benchmark 评分时

关键的工程细节:\(U\) 不会泄漏 golden code、原始测试、仓库身份、隐藏用例。User Agent 只能从预存的"约束-触发词-grounded 回复"三元组里挑匹配的输出——这避免了"用户 LLM 自己瞎编"这种常见 baseline 漏洞。

从真实仓库到 fuzzy PRD 的构造流程

这个流程的设计相当考究,我把它串起来:

ICAE-Bench 框架

图 2:ICAE-Bench 三阶段框架。Phase I 是离线的数据获取和流水线标准化(仓库筛选 → GroundPRD + 用例 → 模糊化 → 终极镜像 → 验证);Phase II 是带预算的在线互动生成(被测智能体 ↔ User Agent);Phase III 是多维度评估(测试通过率、结构评估、Agentic 评估、交互质量)。最下面是"准确率、澄清效率、代码质量、语义一致性"的综合评分卡。

具体到每一阶段,论文都给出了 prompt 模板(在 Appendix A-I),但核心思路是这样的:

  1. 仓库筛选:只保留"原始测试在 Docker 里能全过"的项目——这从根上避免任务本身不可执行
  2. GroundPRD 合成 + 测试 refactor:用 LLM 看着跑通的行为合成产品需求,同时把原始测试拆成 JSON 输入/输出 + 调度器(dispatcher)的形式
  3. PRD 模糊化:把 GroundPRD 改写成 PM 风格的一句话需求,把 API 承诺、边界行为、架构要求等约束藏到 User Agent Data 里。三个 fuzzy level 控制"藏多少"
  4. 终极镜像:基于官方语言镜像(gcc:12、python:3.11、rust:1.81 等),装上 golden 仓库的依赖,然后把 golden code、原始测试、构建产物全删掉
  5. Artifact Verification:用 Claude-Opus-4.8 反复从 GroundPRD 实现仓库,发现失败就修用例或修需求——直到 GroundPRD、Public examples、Native 用例互相一致

我读到第五步时其实挺震惊的:他们真的在用 GroundPRD 自我重写 repo 来做一致性校验,这相当于用最强的模型去"挑战" benchmark 本身。如果你最强的模型都重写不出 100% 通过,那 benchmark 可能就是太难了——这个反向压力设计相当老实。

三个模糊层级到底藏了多少

这是整个 benchmark 最核心的设计。我用论文 Figure 7 的数据来直观展示:

需求 token 对比

图 7:Fuzzy L1/L2/L3 与 GroundPRD 的 token 分布对比。GroundPRD 平均 6,171 tokens,PRD 完整可见;Fuzzy L1 的 PRD 只有约 270 tokens,但 User Agent Data 平均 6,951 tokens——总信息量其实是 7,221 tokens(超过 GroundPRD),只是形式上被打散。Fuzzy L2/L3 逐步把信息从 User Agent Data 挪回 PRD。

这个图有个反直觉的点:模糊化的总信息量其实没减少,反而增加了一点点。这跟"少给点信息"的直觉相悖。原因在于:模糊化要保留 ground truth 的一致性,必须把被删除的细节完整存在 User Agent Data 里——所以总 token 数反而略高。这其实是个诚实的设计,避免"模糊化偷偷降低了任务难度"。

Fuzzy 三个层级的信息暴露图谱是这样的(论文 Figure 3):

层级 PRD 可见信息 User Agent Data 可恢复 设计意图
L1(默认) 最少(270 token) 几乎全部 模拟"用户最懒"场景
L2 L1 中被隐藏的若干点 其余 "用户补充了部分"
L3(Easy) 接近 GroundPRD(部分删除+轻量改写) 少量 "用户基本写清楚了"
GroundPRD 完整 不需要 "用户给完整 PRD"(理论上界)

这种"信息暴露梯度"的设计让我眼前一亮——它把"模糊度"从一个抽象概念变成可操作、可控制的实验变量。同样的任务语义,不同的信息暴露,这就让"对模糊度的鲁棒性"和"对完整需求的能力"分离开来

评测不是单一指标

ICAE-Bench 用四组指标同时打分,这点很工程师:

指标族 维度 用途
Functional Correctness Public / Native / Enhanced 通过率 行为是否对
Agentic Evaluation Semantic / API / Design 相似度 是不是"hard-code 一个能过的实现"
Structural Assessment File / LOC / Class / Method 比对 仓库规模、结构保真度
Interaction Quality Constraint Coverage / Fallback Rate / Budget Usage 问问题的效率

这四组一起看,就避免了"单一指标作弊"。比如 Claude-Sonnet-4.6 在 Lite 上 Semantic 相似度排第一(34.2%)但 Overall 排第四(40.2%)——它"代码风格像",但"功能不对"。


实验结果:6 个模型 + 2 个框架的硬刚

主结果

论文在完整 480 任务和 50 任务 Lite 上各跑了一遍 Claude Code 框架。完整结果(Table VI,full split):

模型 Overall Public Native Enhanced Sem. API Design File % LOC % Constr. Fallback
Claude-Opus-4.8 38.2 48.5 41.4 35.5 22.6 12.1 44.4 337.6 981.1 69.6 21.6
GPT-5.5 37.2 50.3 42.0 32.8 21.5 9.3 36.5 44.0 154.9 73.7 20.4
Gemini-3.1-Pro 27.0 37.0 30.7 23.5 18.9 8.9 28.6 46.2 221.9 56.3 28.1
GLM-5.1 26.6 36.8 30.0 23.7 21.1 10.0 37.1 12.1 15.9 63.9 28.1
Claude-Sonnet-4.6 21.8 29.0 24.1 19.4 22.9 10.1 37.5 15.5 15.9 57.7 24.2
MiniMax-M2.5 0.8 1.5 1.2 0.6 11.8 5.5 23.1 41.2 117.0 44.3 28.5

📌 注:File % 和 LOC % 是"生成仓库 / golden 仓库"的比值,可能 > 100%。Claude-Opus-4.8 生成出 9.8 倍于 golden 的代码量——它的策略是"使劲堆实现",而 GPT-5.5 只写 1.5 倍左右。

Lite(Table VII,50 任务)的趋势类似但 GPT-5.5 排第一(53.3% Overall),Opus-4.8 排第二(48.2%)。两个 split 的 Spearman 相关是 0.71——Lite 能保住顶端,但中下游排名会动。

一句话点评主结果

我读完主表的第一反应是:38.2% 这个数字非常低。Opus-4.8 是 6 个模型里最强的,480 个真实项目里只有 38.2% 能跑通所有测试。这还是在 16 次 User Agent 追问的"作弊空间"下做到的。

另一个让我皱眉的数据:Opus-4.8 写出来的代码量是 golden 的 9.8 倍——也就是说它靠堆代码量换正确性。GPT-5.5 在 Constraint Coverage(73.7%)和 Public Pass(50.3%)上都是第一,但 Overall 反而低 1 个点。问得到 ≠ 用得上,这是后面分析章节的伏笔。

模糊层级的影响

论文 Figure 6 把 5 种需求暴露(L1/L2/L3/RecoveredPRD/GroundPRD)画到一张图上:

需求暴露对通过率的影响

图 6:5 种需求暴露下 6 个模型的 Overall Pass Rate。GroundPRD 是理论上限(虚线),RecoveredPRD 是把所有 L1 问答记录拼回 PRD 后的效果(橙色实线)。

注意几个细节: - GroundPRD 在 4/6 模型上表现最好(Opus-4.8: 76.3%, GPT-5.5: 75.8%) - RecoveredPRD 反而比 GroundPRD 低——把"问完所有问题后拼起来的 PRD"扔给模型,比"直接给完整 PRD"还差。碎片化的信息反而更难用,这跟人类工程的直觉一致 - L2 经常是三者里最差的(Opus-4.8: 52.1%, Sonnet-4.6: 31.4%)——不是越多越好,也不是越少越好,"中间档"最尴尬 - Gemini-3.1-Pro 和 MiniMax-M2.5 是反例——它们的模糊层级趋势不平滑

这暴露了一个关键洞察:模型对"需求形式"有偏好。它要么擅长从清晰 PRD 直接干,要么擅长从碎片化问答里拼凑,没有"在两者之间"的稳定能力。

失败模式分类

光看通过率看不出问题在哪。论文 Figure 9 做了个失败模式 heatmap:

失败模式分布

图 9:完整 ICAE-Bench 上 6 个模型的失败计数(480 任务)。Mismatch = 输出与预期不符;Missing = 某些用例没输出;No Test = 智能体没生成要求的 test.sh 入口;Exec. = 构建/运行时错误。失败模式可重叠。

几个有意思的点: - Claude-Opus-4.8 主要是 Mismatch(387 次)——它能跑起来,但逻辑不对 - MiniMax-M2.5 主要是 Exec.(209 次)和 No Test(189 次)——连仓库都跑不起来 - GPT-5.5 几乎从不 No Test(0 次),但 Mismatch 最多(443 次)——它的"基础设施"做得最好 - Gemini-3.1-Pro 在 Exec. 上 170 次——经常跑不起来

Mismatch 和 Exec. 是两种完全不同的失败,前者是"逻辑错",后者是"工程错"。把这个分开,论文就能给出有针对性的诊断。

Test Scaffolding 的惊人作用

这是论文里我最喜欢的实验(Table IX):

设置 Pass Overall Agentic Constr. Fallback
w/o 文件(默认) 37.4 43.2 63.8 27.7
w/ Public 用例文件 61.8 38.5 61.2 29.7

实验对象:GLM-5.1 think-8k,ICAE-Bench-Lite。

同样一份可访问的 Public 用例信息,仅仅是"以可执行文件形式"塞进 workspace,pass rate 从 37.4% 跳到 61.8%(+24.4 个点)。 Constraint coverage 几乎没变(63.8% vs 61.2%),说明信息语义没变;变的是信息的可执行性

我读到这的时候拍了一下大腿。"可立即验证的反馈循环"比"清晰的需求文档"更稀缺。这也是为什么 Claude Code 这种带 shell + 测试执行能力的工具链能比"纯 LLM 提示词"跑得更好——它给了模型一个可信的执行 oracle,让模型能自我纠错。

框架的影响:OpenHands 跌得很惨

模型 Claude Code Pass OpenHands Pass 掉点
GPT-5.5 53.3 31.5 -21.8
Claude-Opus-4.8 48.2 42.7 -5.5
Claude-Sonnet-4.6 40.2 23.6 -16.6
GLM-5.1 37.4 28.4 -9.0
Gemini-3.1-Pro 36.6 28.6 -8.0
MiniMax-M2.5 2.8 1.1 -1.7

GPT-5.5 在 Claude Code 上是 SOTA,跑到 OpenHands 上掉了 21.8 个点,直接掉到 Opus-4.8 后面框架选择会改变绝对表现和排名——这意味着在 OpenHands 上评估模型 SOTA 排名和在 Claude Code 上排的,结果可能完全不一样。

更关键的是:GPT-5.5 在 OpenHands 上 Constraint Coverage 反而更高(76.8% vs 73.2%),但 Pass 反而低——问得更多 ≠ 干得更好。这进一步验证了"瓶颈在执行不在交互"的判断。

互动预算的反直觉结果

直觉上:给 AI 越多问问题的机会,它应该干得越好。但论文 Figure 10 推翻了这点。

GLM-5.1 think-8k 在三个 query 预算下的表现(Lite 上):

预算 Pass Constraint Coverage Fallback Rate
8 22.9 57.9 18.8
16(默认) 37.4 63.8 27.7
24 34.4 71.4 31.9

互动预算消融

图 10:GLM-5.1 think-8k 在 ICAE-Bench-Lite 上的 query 预算消融。预算从 8 → 16 → 24,Pass 22.9% → 37.4% → 34.4%,Constraint Coverage 57.9% → 63.8% → 71.4%,Fallback 18.8% → 27.7% → 31.9%。

预算到 24 时 Constraint Coverage 涨了 13.5 个点,Fallback 也跟着涨了——多问的轮次更多是"问不到点上"。而 Pass 反而从 37.4% 跌到 34.4%。论文解释是"额外的回合增加整合负担而不是正确性"。

我自己的工程经验也验证过这点:让 LLM 拿到一堆琐碎信息后,它整合这些信息的成本高于信息本身的价值。所以"约束 + 整合成本"才是真实瓶颈,不是"问得够不够多"。

任务类型分布

为了让 benchmark 不偏科,作者还分析了任务类型分布(Figure 4)和代码量分布(Figure 5):

任务类型分布

图 4:480 个任务的类型分布。Developer & Build Tools(17.5%)、Web & HTTP Services(15.2%)、Utility Libraries(12.9%)、DevOps & Cloud(10.0%)、Database & Storage(9.8%)、UI/Frontend/Mobile(9.4%)、Authentication & Security(7.9%)、Data Serialization & Parsing(7.9%)、Testing & QA(5.2%)、Machine Learning(4.2%)。

注意 ML 任务只占 4.2%——这跟"AI 写 AI 代码"的趋势有点反直觉。作者大概是觉得 ML 任务难以标准化评估(训练脚本的"对错"很难用 black-box 测试定),所以保守地少放。

跨语言泛化

最后还有个 Table XV 的实验:把非 Python 任务用 Python 重新实现,看 GLM-5.1 的表现。

原语言 原 Overall Python 重新实现 变化
C# 23.2 26.4 +3.2
C++ 26.3 43.6 +17.3
Dart 33.4 39.6 +6.2
Go 21.9 25.8 +3.9
Java 20.8 30.3 +9.5
JavaScript 27.6 29.3 +1.7
Kotlin 29.9 27.5 -2.4
PHP 38.4 23.8 -14.6
Ruby 19.4 27.2 +7.8
Rust 23.9 26.6 +2.7
TypeScript 27.3 35.6 +8.3
Overall 26.6 29.9 +3.3

C++ 转 Python 涨 17.3 个点(合理——C++ 的内存模型 API 难搞),PHP 转 Python 反而掉了 14.6 个点(这有点反直觉)。论文没深挖原因,我猜可能跟 PHP 任务本身的"动态特性"实现习惯有关,Python reimplement 时反而被"Pythonic" 的写法坑了。


我的判断:几个值得讨论的点

1. 38.2% 这个数字该不该让你慌

第一直觉:"这么低?AI 编程这么拉?"

但仔细想想——38.2% 是从零到一构建仓库。这跟 SWE-bench 那种"在已有 repo 上改几行"完全不是一个量级。ICAE-Bench 测的是"产品意图 → 完整项目"的端到端能力,这是 AI 编程目前公认最难的任务之一。

所以更合理的解读是:38.2% 是上界估算。真实 Vibe Coding 场景下,用户的"模糊度"可能比 Fuzzy L1 还高、用户可能没耐心让 AI 问 16 次、AI 的工具链可能不如 Claude Code 那么完善。真实场景可能 20%-30% 已经算优秀。

2. 论文最被低估的贡献:分级模糊化

我觉得 ICAE-Bench 最聪明的设计是把"模糊度"从模糊概念变成可调旋钮。Fuzzy L1/L2/L3 + RecoveredPRD + GroundPRD 五档,对应"用户最懒 → 用户给完整 PRD"五种场景。

这个设计让 "agent 对模糊度的鲁棒性" 和 "agent 在完整需求下的能力" 变成可分离的两个变量。以前你测一个 benchmark,得到的只是"这个模型在 X benchmark 上 Y% pass",现在你能分清楚 "Y% 里有多少是需求不清晰拖累的"。

这个思路可以推广到其他任务设计里。比如 SWE-bench 也可以加一层"模糊 issue"——把 GitHub issue 里关键信息藏起来,让 agent 必须自己去 PR 评论里挖。

3. 对"智能体框架"的杀伤

Table X 那一段我读得最扎心:GPT-5.5 在 Claude Code 上是 SOTA(53.3%),到 OpenHands 上掉到 31.5%,连 Opus-4.8 都不如

这个对比最大的信号是:做 AI 编程产品的公司,光选对模型远远不够,框架工程本身就是护城河的一半。Claude Code 的执行环境、shell 集成、状态管理,让 GPT-5.5 这种"指令跟随强"的模型如虎添翼;换到 OpenHands 上这个优势直接没了。

这也给"模型 = 能力"这种简化叙事泼了盆冷水。真正决定 AI 编程落地的,是模型 × 框架的乘积,而不是单纯模型的排名。

4. 失败模式分类的工程价值

Figure 9 那个 Mismatch / Missing / No Test / Exec. 四分类,价值远超一般基准的"pass/fail"二分。

为什么?它给 Agent 框架优化指明了方向: - Exec. 高 → 改 Docker 镜像、改依赖解析、改构建工具 - No Test 高 → 改 harness 指令的清晰度 - Mismatch 高 → 改模型、改长上下文管理、改 planning - Missing 高 → 改 feature coverage prompting

这种"可诊断"的设计才是真做工程的玩家需要的。把问题定位到组件层,比单纯一个数字强 10 倍。

5. 关于 MiniMax-M2.5 的解释

论文里 MiniMax-M2.5 几乎全是 Exec. 和 No Test 失败(209 + 189 次),Overall 只有 0.8%。我第一反应是"这个模型是不是有 bug"。

但仔细看,它 11.8% 的 Semantic 相似度不算离谱(GPT-5.5 也就 21.5%),说明它生成的代码逻辑是有相关性的,只是没在正确位置生成 test.sh 入口。它可能是个"代码模型"而不是"智能体模型"——没工具用能力,只能纯 LLM 输出。

Reference [6] 显示它来自 arXiv:2605.26494(一个 mini activation 路线的工作),定位就是"小激活、强基础能力"。放到智能体 benchmark 上被打爆是合理的,但 0.8% 这个数字也说明 ICAE-Bench 对"纯生成"的模型非常不友好——这反而是它的优点(避免被纯 LLM 跑分刷高)。

6. Spearman 0.71 这个数字的含义

论文里 Lite 和完整 benchmark 的 Overall 排名 Spearman 相关是 0.71。论文自己也承认"ICAE-Bench-Lite 能保住顶端,但中下游排名会动"。

我的解读:Lite 适合做 controlled ablation(消融实验),不适合做最终模型排名。所以正文说"GLM-5.1 在 Lite 上 X% Pass"这种数字,要记得它跟"GLM-5.1 在完整 480 任务上 Y% Pass"是可能不一致的。0.71 的相关不算弱,但也说不上"足够强"。


工程上能直接抄的几个点

抛开学术贡献,这篇论文有几个设计细节,做 Vibe Coding 工具的人可以直接抄

  1. GroundPRD → Fuzzy PRD → User Agent Data 三件套。如果你的产品要给用户一个"AI 引导澄清"功能,可以学这种结构:先准备一份完整规格,再分层模糊化,预设好每个隐藏约束的触发词和 grounded 回复。比"让 LLM 当用户"靠谱得多。

  2. Ultimate Image 的"删干净"思路。给 agent 准备运行时但删掉 solution artifact 的做法,让 agent 必须"自力更生"。如果你做 IDE 的 AI agent 评测,应该考虑这种隔离。

  3. 黑盒测试用 JSON 输入/输出 + dispatcher。比"跑原仓库的测试"更可控,避免泄漏源仓库结构。

  4. 多维指标:功能 + 语义 + 结构 + 交互。避免单一指标作弊,特别是"代码风格像不像"和"功能对不对"是两种能力。

  5. 用最强模型反向校验 benchmark 一致性。在 GroundPRD 之后跑一遍最强模型自实现,对比失败来修 benchmark——这个反向验证流程值得所有 benchmark 作者学。


还没解决的问题

读完之后,还有几个我特别想看到后续工作的问题:

  1. 交互式修复的扩展:现在 User Agent 是"一次性问答",能不能支持"agent 跑完测试发现失败,再回来追问"?这更接近真实工程流。
  2. 多模态输入:论文 future work 里提到了 OpenClaw 框架做前端任务。这是 Vibe Coding 的下一个高地——"给我画个登录页"这种任务怎么评?
  3. 更长链路:当前 480 任务是单任务,没有跨任务依赖。真实工程里 60% 的工作是"在这个已有项目里加个功能",ICAE-Bench 没覆盖到。
  4. 多用户轮次:现在 16 轮是一次性 budget,真实 Vibe Coding 是"上午写一半,下午继续"——这种跨 session 的上下文恢复没测。

收尾

ICAE-Bench 不是那种"刷爆 SOTA"的论文,但它做了一件更重要的事:把 AI 编程评测从"能不能修 bug"推到了"能不能从一句话干出一个能跑的仓库"

38.2% 这个数字可能让一部分人觉得 AI 编程还"很笨",但反过来想——这也是市场空间。Opus-4.8 在 16 轮对话、终极镜像、可执行 Public 用例的"豪华条件"下才能干到 38.2%,真实产品环境下 20-30% 可能就够拿去卖了。

最后提个题外话:论文里跑的 6 个模型,包括 MiniMax-M2.5(一个真实工程级模型),能在这套 benchmark 上被同时打爆。这个事本身说明 Vibe Coding 还有大量没被填上的能力空白。对做 Agent 框架、做编程工具的人来说,这是机会;对做模型的人来说,这是 roadmap。


觉得有启发的话,欢迎点赞、在看、转发。跟进最新 AI 前沿,关注我。