← 返回 2026-07-23

ICAE-Bench:将编码智能体作为交互式项目构建者进行评测 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 📅 2026-07-23 👍 6 2026-07-28 18:30
Vibe Coding 交互式需求澄清 仓库级代码生成 基准评测 编码智能体

从模糊需求出发、可向用户代理追问的480任务基准,测智能体从零构建可运行仓库的真本事

前置知识

Vibe Coding(氛围编程)

一种新兴开发范式:用户只给出高层次、往往模糊的产品意图(如"做一个能报告无效条目的配置解析器"),由 AI 编码智能体自行完成澄清需求、规划、写码、装依赖、跑命令、调试迭代,最终交付可运行的完整项目。人类角色从逐行写代码退到表达意图与对话纠偏。

这篇论文的整个出发点就是 vibe coding 改变了智能体应被评测的能力——理解它才能明白为何作者认为现有静态基准不够用。

编码智能体(Coding Agent)

以 LLM 为核心、被赋予工具的自主软件工程系统:能编辑文件、执行 shell 命令、运行测试、观察报错并循环修复。本文用 Claude Code 和 OpenHands 两个成熟框架承载被测模型,在隔离 Docker 容器内完成从空目录到可运行仓库的构建。

被评测对象就是编码智能体;框架差异本身还是论文的重要实验变量(换框架可差 21.8 分)。

PRD 与模糊需求分级

PRD(Product Requirement Document)是描述产品应做什么的需求文档。本文先由真实仓库行为合成完整的 GroundPRD,再系统隐藏部分约束得到模糊版本,形成 L1(最少信息,约276词PM风格短文)→ L2(恢复部分歧义点)→ L3(接近完整、少量删除)的信息暴露层级。

模糊 PRD 是每个任务的起点,L1–L3 分级让"检索需求的能力"与"实现需求的能力"可以被分离测量,是 RQ2 全部实验的基础。

黑盒测试与用例分层

黑盒测试只看程序外部输入输出(stdin→stdout),不看内部实现。本文用例按来源分 Native(原仓库测试改写)与 Enhanced(合成补充边界/压力),按可见性分 Public(可经提问恢复)与 Hidden(仅评测者持有)。Overall 通过率 =(Native+Enhanced 通过数)/(两者总数)。

这是唯一权威评分依据;Public/Enhanced 的稳定差距是论文"复现可见样例≠鲁棒行为"这一核心发现的数据来源。

Ultimate 镜像与防泄题

每个任务打包成 Docker 镜像:在官方语言基础镜像(如 python:3.11、golang:1.22)中装好原仓库依赖后,删除 golden 代码、原始测试和构建期产物,只保留可运行的依赖环境。智能体在其中白手起家,评测则在全新容器中重放其交付物。

它保证交互和执行不会变成泄题渠道(无源码可抄),同时运行时环境真实可用;执行环境丰富度还是消融实验的一个维度。

Grounded User Agent(有据可依的用户模拟)

模拟真实用户的 LLM 路由器,但被严格限制:只能基于基准预置的 oracle_data(每条含 constraint_id、至少3个等义触发词、固定 oracle 回复、上下文指针和统一 fallback)作答,每次回复至多覆盖3个技术点,未命中一律返回 fallback,绝不自由发挥或泄露源码。

它让多轮澄清交互可复现、可控且不泄题,是本基准区别于自由对话式评测的关键设计。

LLM-as-Judge(评审模型主观评测)

用强模型作为静态代码评审员,对生成仓库与 golden 仓库做源码级对比打分。本文设三项独立0–1分:语义相似度(行为与抽象是否对齐)、API 相似度(可导入的公开类型/函数名与签名是否吻合)、设计质量(架构、关注点分离、是否把多模块项目塌缩成单体)。

功能测试无法区分硬编码凑答案和可维护仓库,主观评测补足这一维;论文还用200仓库人工标注检验了这些分数的可靠性。

研究动机

现有代码评测基准与 vibe coding 的真实工作方式严重脱节。函数级基准(HumanEval、MBPP)只测自包含函数补全;仓库编辑类基准(SWE-bench、Multi-SWE-bench、SWE-Bench Pro)假设目标仓库已存在,任务是打补丁修 issue;即便最接近的从零生成基准也自带"完整答案卷":Commit0 保留类定义和函数签名,智能体只需填空;NL2RepoBench、PRDBench、ProjectEval、RealBench 提供完整规格或固定脚手架;ProgramBench 虽强调黑盒行为保真,但目标行为仍通过可执行文件与文档静态完整暴露。这些设置共同默认"决定性需求一开始就在手上",而真实 vibe coding 恰恰相反:用户给的是含糊意图,缺失的需求会波及架构、公共接口、依赖、测试协议和边界行为,智能体必须先澄清再构建。没有现有基准能评测这种"提问—恢复需求—长程构建"的耦合能力。

本文的目标是本文要确立并落实"交互式项目构建"这一评测 setting:每个任务从刻意含糊的模糊 PRD 出发,被测编码智能体在隔离容器中开发、运行、调试,可在固定预算(默认16问)内向自动化的 User Agent 追问以恢复被隐藏的需求,最终交付的仓库用权威黑盒用例加多维诊断打分。为此作者构建了 ICAE-Bench:480 个任务覆盖 C#、C++、Dart、Go、Java、JavaScript、Kotlin、PHP、Python、Ruby、Rust、TypeScript 共 12 种语言(每语言40题),另附按 golden 代码量精选的 50 题 ICAE-Bench-Lite 用于快速消融。设计必须同时满足三个约束:模糊性真实但任务不失控、用户模拟可复现且不泄题、对开放式实现公平可评。

与已有工作不同的是,本文的独特切入是"从精确导出模糊"(ambiguity from precision)。直接从零编写模糊需求会让任务欠定义——失败可能归咎于含糊或不可行的提示,而非智能体能力。ICAE-Bench 反其道而行:先从真实开源仓库已验证的可执行行为合成完整 GroundPRD 与黑盒行为用例,再系统性隐藏选定的约束(API 承诺、边界行为、架构要求),把隐藏内容存为 User Agent Data,使模糊受控、可恢复,而行为靶标固定不变。第二个人无我有的设计是 grounded User Agent:只逐字返回预置需求记录或统一 fallback,杜绝自由发挥式用户模拟的噪声与泄题。Table I 的对比显示,在"模糊需求分级、交互恢复、多语言黑盒评测"这组维度上,同时具备的仅此一家——它把评测焦点从"实现给定规格"搬到"发现并实现部分 specified 的产品目标"。

核心方法

直觉上,ICAE-Bench 把"含糊但不失控"的工程问题拆成三层信息:初始可见的、可通过提问恢复的、评测者持有的。形式化地,一个任务实例是五元组 $T = (D_f, E, P, U, B)$:$D_f$ 为模糊 PRD,$E$ 为删除了解题产物的 ultimate 镜像执行环境,$P$ 为可恢复的 Public 示例集,$U$ 为 User Agent Data(交互 oracle),$B$ 为权威 Native+Enhanced 黑盒用例。被测智能体只能观察 $(D_f, E)$,在预算内向由 $U$ 支撑的 User Agent 提问,产出仓库 $R$ 后用 $B$ 评分。构建流水线分五阶段(Fig. 2、Table III):仓库过滤 → GroundPRD 合成与测试重构 → PRD 模糊化 → ultimate 镜像打包 → 产物验证;在线评测则是三段式:预算化交互生成、新鲜容器重放评分、四族指标(功能、主观、结构、交互)综合诊断。全程强制 GroundPRD、模糊 PRD、User Agent Data 与全部用例描述同一个底层任务。

核心创新有三点,本质都是"把模糊性与可评测性同时锁死"。第一,模糊化不改变任务语义:GroundPRD 先由 Claude-Opus-4.8 在 ultimate 镜像中迭代重建验证,再用 GPT-5.5 按固定 rubric 联合审查模糊 PRD 与 User Agent Data 的语义等价性——Lite 上 L1/L3 与 GroundPRD 的平均相似度达 0.952/0.942,50 个仓库全部判定等价且无可能挂掉同一批测试的高风险执行契约。第二,User Agent 是基于记录的路由器而非自由 LLM:每个被隐藏的歧义点都有 constraint_id、至少3个语义等价触发词、固定 oracle 回复和上下文指针;每次回复至多覆盖3个技术点;未命中一律返回 fallback;它拿不到 golden 源码、原始测试、仓库名和隐藏用例,结构化内部日志单独记录命中与 fallback。第三,评测用语言无关的黑盒 JSON 用例(stdin 输入、stdout 期望输出,错误归一化为语言中立类别),把"考什么行为"与"怎么实现"彻底解耦,任意内部设计、模块结构、依赖选择都不扣分。

方法步骤详情

阶段一,仓库筛选:只保留原始测试能在 Docker 全部通过的仓库,记录语言、star、文件数、golden LOC 等。阶段二,GroundPRD 合成与测试重构:原始测试改写为统一黑盒 JSON 用例,逐条经 dispatcher 对 golden 实际执行验证;每个叶子特征挑约 1–2 个代表用例嵌入 GroundPRD 并镜像为 Public 集,其余成隐藏 Native 集;再合成不相交的 Enhanced 用例补边界与压力场景。阶段三,模糊化:L1 改写成 150–250 词非技术 PM 请求,隐藏约束连同完整示例转入 User Agent Data(每条歧义点配 constraint_id、≥3 个触发词与固定回复);L2 恢复部分歧义点;L3 只做有限删除与轻度改写,至多藏 3 个最难猜字面量。阶段四,镜像打包:官方基础镜像装好 golden 仓库依赖后,删除代码、测试与构建产物。阶段五,产物验证:golden 须通过全部 Native 用例,GPT-5.5 审查语义等价,Opus-4.8 迭代重建修正不一致。评测时新容器只暴露任务材料,智能体自建执行适配器与 test.sh,最终在全新容器重放评分。

技术新颖性

与最近邻工作的本质区别:Commit0 保留仓库骨架只考填空,本项目从空目录白手起家;NL2RepoBench、PRDBench、ProjectEval、RealBench 给完整规格,本项目初始只给平均约 276 token 的模糊 PRD(GroundPRD 平均 6,764 token,信息量相差约 24 倍);ProgramBench 同样信奉黑盒行为保真,但其目标行为经静态接口直接暴露,而 ICAE-Bench 把部分需求藏在交互之后。与 HumanEvalComm、Orchid、When Benchmarks Talk 等澄清研究相比,本文把澄清从函数级/issue 级提升到仓库级——缺失需求会影响架构、公共接口、依赖、测试协议与边界行为。L1–L3 是"操作型信息暴露层级"而非模糊度心理量表:歧义点与其检索记录同步生成,隐藏信息总可通过足够精准的提问恢复,行为靶标在各层保持不变,使"检索能力"与"实现能力"可被分离测量。480 题横跨 12 语言共用同一协议,在同类基准中独一份。

ICAE-Bench framework. A task begins with a fuzzy PRD and an ultimate image rather than a complete implementation contract.
Fig. 2: ICAE-Bench framework. A task begins with a fuzzy PRD and an ultimate image rather than a complete implementation contract.
Initial-requirement hierarchy. Information available before interaction increases from Fuzzy L1 to GroundPRD, while the behavioral target remains fixed.
Fig. 3: Initial-requirement hierarchy. Information available before interaction increases from Fuzzy L1 to GroundPRD, while the behavioral target remains fixed.
Task category distribution in ICAE-Bench (total=480).
Fig. 4: Task category distribution in ICAE-Bench (total=480).
Task golden-code LOC distribution in ICAE-Bench (total=480).
Fig. 5: Task golden-code LOC distribution in ICAE-Bench (total=480).

实验结果

主实验(完整集、Claude Code、Fuzzy L1+交互,Table VI):Opus-4.8 Overall 38.2% 居首,GPT-5.5 37.2%、Gemini 27.0%、GLM 26.6%、Sonnet 21.8%、MiniMax 仅 0.8%;Public 一致高于 Enhanced(Opus 48.5% 对 35.5%),复现可见样例不保证鲁棒行为;主观分不同序(Sonnet 语义 22.9 最高但 Overall 第五),结构悬殊(Opus LOC 比率 981.1% 对 GLM 15.9%)。Lite 上 GPT-5.5 53.3% 居首,与全集排序 $\rho=0.71$。RQ2:GroundPRD 在 4/6 模型最佳,拼全部 L1 问答的 RecoveredPRD 仍低于它——检索只是缺口一部分。失败定位(Fig. 9):Opus/GPT-5.5 mismatch 387/443,Gemini 执行失败 170 次,MiniMax No-Test/Exec 189/209,Clean 仓库每模型仅 1–13 个。消融:现成 Public 用例文件使 GLM 37.4%→61.8%;OpenHands 使所有模型降 5.5–21.8 分;覆盖最高的 User Agent(75.2%)Overall 反最低(27.4%);预算 8/16/24 对应 22.9%/37.4%/34.4%;开思考使 Gemini 26.7%→36.6%;ultimate 镜像反降至 28.4% 且膨胀至 674.1% LOC;Python 重实现 +3.3 分但 PHP −14.6、C++ +17.3。主观指标人评 Pearson 仅 0.372–0.471。

Overall pass rate across PRD ambiguity settings on ICAE-Bench-Lite. Fuzzy L2 restores a subset of the ambiguity points hidden in L1; Fuzzy L3 preserves more of GroundPRD.
Fig. 6: Overall pass rate across PRD ambiguity settings on ICAE-Bench-Lite. Fuzzy L2 restores a subset of the ambiguity points hidden in L1; Fuzzy L3 preserves more of GroundPRD.
Requirement-token comparison on ICAE-Bench-Lite. User Agent Data is accessible only through interaction.
Fig. 7: Requirement-token comparison on ICAE-Bench-Lite. User Agent Data is accessible only through interaction.
Distribution of ambiguity categories across Fuzzy L1–L3 in ICAE-Bench.
Fig. 8: Distribution of ambiguity categories across Fuzzy L1–L3 in ICAE-Bench.
Evaluator-visible outcomes on full ICAE-Bench main runs. Failure modes are not mutually exclusive.
Fig. 9: Evaluator-visible outcomes on full ICAE-Bench main runs. Failure modes are not mutually exclusive.
Interaction-budget ablation on ICAE-Bench-Lite with GLM-5.1 think-8k.
Fig. 10: Interaction-budget ablation on ICAE-Bench-Lite with GLM-5.1 think-8k.
Runtime and token usage for main Claude Code runs on ICAE-Bench and ICAE-Bench-Lite.
Fig. 11: Runtime and token usage for main Claude Code runs on ICAE-Bench and ICAE-Bench-Lite.
查看结构化数据
任务指标本文基线提升
模糊需求仓库生成(完整 ICAE-Bench,Fuzzy L1 + 交互,Claude Code) Overall 黑盒用例通过率 Claude-Opus-4.8:38.2% GPT-5.5:37.2%(次优);Gemini-3.1-Pro 27.0%、GLM-5.1 26.6%、Sonnet-4.6 21.8%、MiniMax-M2.5 0.8% 较次优 +1.0 个百分点;最强模型也远未解决该任务
模糊需求仓库生成(ICAE-Bench-Lite,50题) Overall 通过率 GPT-5.5:53.3% Claude-Opus-4.8:48.2%(完整集上排名相反,两集排序相关性 Spearman ρ=0.71) +5.1 个百分点(仅限 Lite 子集)
可见样例复现 vs 鲁棒行为(完整集,GPT-5.5) Public vs Enhanced 用例通过率 Public:50.3% Enhanced:32.8%(Opus-4.8 为 48.5% vs 35.5%,趋势一致) 可见样例高出 17.5 个百分点,暴露边界与鲁棒性缺口
可执行验证脚手架干预(Lite,GLM-5.1 think-8k,Table IX) Overall 通过率 提供现成 Public 用例文件:61.8% 默认需经交互自行恢复同样内容:37.4% +24.4 个百分点,且约束覆盖基本不变(63.8%→61.2%)
智能体框架敏感性(Lite,GPT-5.5,Table X) Overall 通过率 Claude Code:53.3% OpenHands:31.5%(全部模型下降 5.5–21.8 分,Opus-4.8 仅降5.5分后反超第一) 框架切换造成 −21.8 个百分点,排名可被框架逆转

局限与改进

作者承认的局限:主观 critic 指标可靠性中等——200 仓库、3 名研究生的独立评分与模型分数 Pearson 相关仅 0.372/0.381/0.471,ICC(C,1) 只有 0.240–0.367,只能作诊断性参考;文件数/LOC 比率和 token、时长是弱代理;L1–L3 是操作性层级而非通用模糊度量表;默认 User Agent 仅 DeepSeek-V3.2 一种骨干。我的补充观察:其一,GroundPRD 与黑盒用例均由 LLM 合成再迭代校验,规格偏差与用例噪声可能残留,评分依赖 stdout 精确匹配,对输出格式细节可能过敏;其二,trigger_keywords 路由僵硬,各模型 fallback 率 20.4%–28.5%,未命中即拒绝,可能低估智能体真实澄清能力;其三,16 问预算与"每回复至多 3 点"是人为约束,真实用户交互未必如此;其四,任务全是 CLI/库类仓库,无前端、GUI 与多模态场景;其五,每仓库仅一题,语言内多样性受限,Lite 与全集只在头部梯队一致(ρ=0.71),语言级结论不可从 Lite 外推。

独立分析的弱点

其一,"信息到执行"断层是最大短板:即便给到完整 GroundPRD,多数模型仍显著低于上界,Clean 仓库仅 1–13/480,说明智能体缺乏把澄清所得约束固化为实现决策的机制——可引入显式"约束清单"工具,编码中强制核对每条已恢复约束并在提交前逐条自检。其二,验证脚手架缺失:现成 Public 用例文件带来 +24.4 分,而让智能体自己把问答片段组装成可执行自测恰是弱项——应强制"先建可运行测试适配器、再写功能代码"的工作流。其三,框架脆弱性:GPT-5.5 换 OpenHands 掉 21.8 分,能力评估被工程脚手架强烈耦合,需要框架无关的技能抽象与更可靠的编辑-执行-状态跟踪-终止循环。其四,交互策略粗糙:预算 16→24 反而降分且 fallback 升至 31.9%,说明不会提出高信息量问题,可研究主动提问策略与问题去冗余。其五,丰富环境诱发过度扩张(674.1% LOC)却不涨分,缺规模控制与增量验证机制;其六,stdout 精确匹配可能惩罚无伤大雅的格式差异,可引入输出规范化或语义等价判定。

未来方向

作者提出的方向:把 ICAE-Bench 扩展为端到端、多模态的真实场景,结合 OpenClaw 等新兴框架引入前端开发任务与复杂视觉输入,实现更丰富的人机协同评测。基于本文成果还可延伸:其一,需求记忆与约束管理——把已澄清约束持久化为结构化状态并在长程开发中持续引用,直接攻 information-to-execution gap;其二,澄清策略优化——以约束覆盖与最终通过率为奖励,学习"何时问、问什么"的策略;其三,多利益相关者模拟——把单一严格 Tech Lead 人格扩展为产品经理、QA、运维等多角色用户,考察需求冲突下的协商能力;其四,跨语言迁移的系统研究——Python 重实现平均 +3.3 分但语言间方差巨大(PHP −14.6 到 C++ +17.3),值得探究任务语义与语言生态的匹配规律;其五,成本-正确性帕累托分析——Fig. 11 显示 token 与时长只是正确性的弱代理,如何在预算内最大化可用软件是部署侧核心问题;其六,把 Enhanced 用例的合成方法推广为自动鲁棒性增强流水线。

复现评估

复现评估:基准、数据与评测代码开源于 github.com/ALEX-nlp/ICAE-EVAL,480 完整任务加 50 题 Lite 子集,各阶段提示模板(附录 A–I)全部给出,透明度高。每题含 GroundPRD、三级模糊 PRD、User Agent Data、Public/Native/Enhanced 用例和 12 种语言 Docker 镜像(python:3.11、golang:1.22、gcc:12 等)。算力成本在推理与编排:完整集单仓库平均生成时间数百到约两千秒、token 达数千 k 量级(Fig. 11),6 模型 × 480 题 × 2 框架的完整评测需要可观 API 预算与容器调度能力;复现单张表(Lite 跑一两个模型)门槛低得多。难度中等偏上:管线涉及多阶段 LLM 合成(Opus-4.8 重建验证、GPT-5.5 语义审查)、DeepSeek-V3.2 User Agent 服务与多容器新鲜重放评分,工程细节多,但协议与提示齐备,认真复现 Lite 级别结果可行。