ACE 框架:用准确、难度、多样性三把尺子衡量智能体数据,自己却不产数据

为什么"多生成数据"对智能体不再管用?

2024 年的合成数据研究信奉一条朴素真理:让大模型自己造训练数据,造得越多越好。可当人们把几份主流函数调用数据集摊开逐条检查时,一个尴尬的事实浮出水面:它们绝大多数是"浅动作"。一份 2026 年的统计显示,几个代表性数据集里只读型工具(看一眼信息就返回结果,不改变任何状态)的样本占比高得离谱:ToolLLM 约 76.7%,ToolACE 约 84.9%,Nemotron 约 91.7%。换句话说,十万条"高质量样本"里约有九成在教模型做同一件事:查一下,然后报告。GAIS

为什么这在 agent 身上比在语言模型身上更致命?因为两者学的东西不是一回事。大模型读静态文本,语料本身就是全部世界;agent 学的是与环境交互得到的经验,环境会拒绝、会报错、会中途变化,经验的价值恰恰藏在那些反馈里。打个比方,把静态指令数据比作菜谱,把智能体数据比作厨师的实操记录:菜谱只写"应该怎么做",实操记录才写"真的动手后发生了什么、哪一步糊了、锅里的反应是什么"。背一万本菜谱不会做饭,抄一万条"看起来合理"的轨迹,也不会有 agent 能力。

ACE 论文在引言里给这个困境下了判词:智能体数据真正该满足的不是"丰富",而是"一致、可用、非冗余"。样本互相重复、交互浅、结果不可信,规模再大也只是噪音。论文同时点名两个让问题恶化的病灶。其一是领域割裂:tool use、GUI、具身、科学发现各写各的论文,评价口径各异,研究者看不清背后的共同机制。其二是流程短路:很多管线把"生成候选"和"验证筛选"混为一谈,生成了就当数,没人问这条数据是不是真的被环境认可过。ACE 论文

这个问题在过去一年里变得尤其尖锐。agent 的训练体制正在从"堆静态样本"转向 RLVR 与在线交互,数据的供给方式从后勤问题变成了瓶颈问题;几乎每个实验室都跑着自己的合成数据管线,却连"好不好"都无法跨论文比较。ACE 论文想给这个局面装上的,正是一套共同语言。

把占比放进一张表,"数据多但浅"就变成一眼可见的差异:

数据集只读型占比备注
ToolLLM76.7%现有合成数据集的典型构成
ToolACE84.9%只读占比同样过半
Nemotron91.7%只读占比超过九成
GAIS 重构后57.5%写入型 29.8%,流程型 12.7%

这引出一个比"造多少"更基本的问题:什么样的数据才算"好"?如果各说各话,这篇论文讲丰富、那篇讲均衡,整个领域就无法积累。要回答它,先得有一件东西:一个能让千奇百怪的数据都写得进去的共同坐标。这恰是 2026 年 8 月 27 日挂上 arXiv 的 ACE 论文给出的第一块拼图。注意它的出现顺序:它写在这批工作之后,是一份收束性的综合,不是开创性的新方法,它的野心是把已经跑通的实践统一成一套语言。

千奇百怪的数据,能不能写进同一个坐标?

ACE 论文给出的统一坐标是一个四元组 $(E, q, \tau, v)$。拆开说:E 是环境规格,q 是任务信号,τ 是实际发生的交互轨迹,v 是一个可选的验证器。先用大白话过一遍:一段训练数据可以被追问成四个问题,在什么环境里、要完成什么任务、实际怎么做的、凭什么说做对了。以 GUI agent 为例:E 是手机模拟器,q 是"把闹钟设在早上七点"这条用户指令,τ 是屏幕上一串点击序列,v 是检查闹钟是否真的被设置的终态函数。前三个分量都好理解,v 特意标成可选,为的是不把数据对象绑死在某一种训练范式上,SFT 数据集、可执行环境、在线任务生成都能写进同一套记号。ACE 论文

这套分解不是论文自说自话。同一份四元组在六个领域里都能找到对应物,下图就是论文给出的跨领域实例化。

图注:同一份 (E,q,τ,v) 在 tool use、软件工程、GUI、具身、社交、科学六个领域的实例化。具体表示和验证信号各不相同,四个分量的概念角色始终不变。ACE 论文

有了共同坐标,论文进一步指出:今天五花八门的生成方法,本质差别不在属于哪个领域,而在"先写四元组里的哪个分量"。按主锚点可以分成三类。Forward 范式按自然顺序走,先锚定 E,再生成 q,最后补 τ,典型如 APIGen,先固定一个 API 库,再围着它生成任务和调用轨迹。APIGen Reverse 范式反着来,典型如 OS-Genesis,先在真实 GUI 环境里收集交互,再反推任务描述。OS-Genesis Structure-first 范式先生成中间骨架再补全其余分量,典型如 EnvScaler,先写环境骨架,再补场景和验证函数。EnvScaler一句话概括:范式差异,就是四元组里的书写顺序差异。

论文并不认为这三类之间是非此即彼:同一篇工作完全可以先用 Reverse 思路从交互里反推出任务,再用 Forward 流程把轨迹补全,论文明确允许 hybrid 与自适应闭环的组合。分类的价值在于它给你一张地图,而不是一道单选题。

分类依据是"哪个分量先锚定",而不是论文出自哪个应用领域。下图把 Forward 与 Reverse 的依赖方向与主锚点并置对比。

图注:生成范式对比图。Forward 按 E 到 q 到 τ 的自然顺序生成,Reverse 从任务或轨迹反推,图中并置两种范式的依赖方向与主锚点。ACE 论文

这张图解决的是"数据长什么样"的语法问题。下一个问题是语义问题:"好"这个字,能不能也被拆成可度量的东西?论文给出的回答,就是 ACE 这把三轴尺子。

「好」数据能不能被度量?ACE 的三把尺子

先把 ACE 想成一次招聘。HR 筛人从来不是一步到位的:先看硬性资格,学历、证书这类能验证的硬条件,不合格直接出局;过了这关,再看候选人的能力梯度跟岗位难度匹不匹配,太轻松的人留不住,完全干不了的人招进来也没用;最后才看团队背景搭不搭配,全是一个学校一个方向的人,团队会畸形。三步的顺序不能乱,尤其第一步是闸口。

ACE 把这三步搬到了数据上,把数据生成形式化为一个带约束的分布设计问题:Accuracy 先划定可行的支撑集,数据要有真实依据、内部自洽;Complexity 与 divErsity 再在支撑集内部塑造分布,难度贴着学习者、覆盖撑开行为空间。形式化地写,就是最大化难度效用与多样性效用的加权和,同时要求数据通过 Accuracy 闸的概率不低于某个阈值。ACE 论文

$$ \max_\phi \mathbb{E}{\mathcal{B} \sim p\phi}\left[\lambda_C \bar{g}_z(C_z) + \lambda_D D(\mathcal{B}_A)\right] \quad \text{s.t.} \quad \Pr[A(d)=1] \ge \alpha $$

这个约束里藏着全文最重要的杠杆点,论文称之为闸口不对称:如果没有任何候选通过 Accuracy 闸,整体效用直接归零。难度和多样性永远补偿不了无效数据;反过来,所有数据都有效但都太简单、太雷同,学习价值同样有限。另有一点值得先点明:这里的 Accuracy 不是熟悉的"模型答对的准确率",而是"这条数据本身够不够靠谱、有没有真实依据、内部是否自洽"。两个英文是同一个词,含义完全不同。等价的工程判断是三个问题:数据可信吗,难到点了吗,重复吗?后两个问题,只能在前一个通过之后回答。整把尺子的全貌,论文用下面一张总图概括。

图注:ACE 镜头把智能体数据生成看成带约束的分布设计:Accuracy 定义有效支撑集,相对学习者的 Complexity 与 Diversity 在支撑集内塑形出有用、不冗余的经验。图中只有概念关系,没有数字。ACE 论文

ACE 论文对自己的定位说得很清楚:它是一把分析透镜,不是三种方法的家族,也不是新的 benchmark,更不是穷尽式清单。同一条已经跑通的管线,可能同时改善三条轴。所以现在问题落到最硬的那一关:Accuracy 这道闸,实际工程里到底怎么守?

怎么证明一条数据是真的:执行接地验证

Accuracy 闸口的第一种守法是"看起来对",也就是让 LLM 自己判断这条数据顺不顺眼。这种检查便宜,但幻觉一个不存在的函数名、编一个漂亮但错误的参数组合,看起来也是顺眼的。更硬的守法是"跑起来对":把候选数据真的放进环境里执行一遍,用执行结果说话。论文把这组机制叫做执行接地验证(execution-grounded verification),用大白话说,就是先跑一遍再说话,而不是看着像就放行。

把它拆到最细的工程实例是 APIGen,一个 2024 年就上线、把三层验证固化成完整流水线的函数调用数据管线。生成的候选先过格式检查,格式不对、函数名不在 API 库里的直接丢;剩下的真正执行,Python 函数在独立进程里跑,REST API 发真实请求看返回;执行成功的还要再过语义检查,由另一个 LLM 判断"执行成功"是不是真的等于"完成了任务",函数选错了但碰巧不报错的情况在这一层被拦下。三关全过的样本回流种子集,成为下一批生成的参考,下图就是这条流水线的全貌。

图注:APIGen 的验证流水线:生成的候选先过格式检查,再真实执行 API,最后由语义检查把关,三关全过的样本回流种子集,作为后续生成的 few-shot 参考。APIGen

这套流水线最终发布了约 60,000 条样本,基于它训练的 xLAM-7B 在论文报告时点(2024 年中)于 BFCL 排行榜排到第 6,反超多个 GPT-4 系列模型。APIGen 验证本身的门槛也直接反映模型差距。同一套路,用强生成模型跑出 84.15% 的通过率,用弱模型只剩 34.42%。这个差距想说的是:生成端越弱,验证闸越不可省,执行验证不是装饰,而是补生成器短板的主件。还有一层值得注意:被拒样本并不只是噪音,APIGen 给每条失败都附上了细粒度错误原因,参数类型错、运行超时、缺参数,这些类别本身就是"生成器哪里不行"的一手情报。论文把四种验证分量写成一个合取式:$A(d) = V_E \wedge V_q \wedge V_\tau \wedge V_v$。翻译过来是:环境、任务、轨迹、验证器四个环节,任何一个造假,整条数据作废,轨迹再漂亮也补不上一个不可行的任务。ACE 论文

过去的两年里,这条链上每一环都在变硬。EnvScaler 把环境编译成带状态机的可执行 Python 类,验证从"调一下看返回"升级成"检查环境最终状态"。EnvScaler LOGIGEN 把自然语言的业务政策编译成 SQL 触发器,数据库从物理上拒绝违规写入,再用两张数据库快照的差异当答案,验证变成一次机械的 diff,在 τ²-Bench 上把 32B 基座从 40.7% 拉到 79.5%。LOGIGEN LLM4Cov 在硬件验证领域把仿真器的覆盖率直接当准确率信号,"对不对"不由 LLM 说了算,靠工业级仿真器,效果是 4B 的小模型反超 30B 的 teacher。LLM4Cov 更极端的形态是根本没有真实环境:ESAT 用 LLM 充当一个按需生成的数字世界模型,模拟 API 的每一步响应,再配合程序化的 schema 检查,生成端完全不需要真实 API。ESAT 但要注意,ESAT 是单次 teacher 到 student 的蒸馏,不是自反馈的闭环;它的对齐实验显示,模拟执行确实接近真实执行,但并没有等同。

这条升级链给读者一个清晰的判断工具:验证是可以分级加码的,格式检查最便宜,真执行更硬,状态差异再上一档,没有环境还能用模拟器顶替。经济原则也随之而来:便宜的检查先跑,贵的放后面兜底;论文还特别指出,一小撮被严格验证过的环境,可能比一大批验证不严的环境更有用。任何一档都强于"看起来对",但没有任何一档等于绝对正确,论文自己也承认,验证器通过不等于审计过的正确。数据都可信了,下一个问题该谁回答?"难不难、重不重"由谁说了算?

难度和多样性,该由谁说了算?

直觉上,难度是数据自带的一个绝对属性:这道题比那道题难。ACE 论文坚持相反的看法:难度是相对量,标尺是"特定学习者"。同一个问题,对基础模型难,对带工具和 scaffold 的 agent 简单,换一套采样配置结果又不一样。难度必须对着明确声明的学习者与执行配置来校准,论文把这组配置记作 z。这套校准还是双向的:数据太容易,就给任务加负担;太难,就简化或者加 scaffold,直到它正好落进贴着能力边界移动的带子里。ToolACE 是生成期最早显式实现这条原则的工作之一:它让待训练的模型用自己的 token 级 loss 当难度标尺,把生成过程引导到"刚好落在难度区间 [l_π, h_π]"的方向上,用目标模型自己的手感校准,而不是用一张与学习者无关的全局难度表。这套自评难度加上双层验证产出的数据,让 8B 模型在 BFCL-v3 排到第 3。ToolACE

更完整的实现出现在 RL 训练期。RLVE 为每一个可验证环境维护一个随策略表现滑动的难度窗口 [l_π, h_π]:模型在当前难度上准确率达到 90%,就把上界上调一档,下界用窗口长度收住。规则只有一行,效果却很反常。同样一个已经对原有题库饱和的模型,用自适应难度续训,平均提升 3.37%,耗了约 1,100 个 H100 GPU 小时;继续用原方法静态难度练,用三倍多的算力,约 3,600 个小时,只挤出 0.49%,提升只有前者的约七分之一。反常在哪里?数量已经不再决定上限,难度落在哪里才决定。RLVE

图注:RLVE 在排序环境上的自适应难度。准确率超过 90% 阈值,难度等级 h_π 就阶梯式上调一档,模型始终暴露在"上一档已掌握、本档尚未掌握"的问题上,准确率在阈值附近往复振荡。RLVE

另一边,divErsity 轴要回答"多样性从哪个维度来"。换掉工具名、改写 prompt 措辞,表面上是新样本,但 agent 的行为轨迹几乎没有变化,论文管这叫表面变体,它撑不开行为空间。真正有价值的是行为级覆盖:数据在状态、任务、轨迹结构上的差异,能让模型学会不同的行为模式。OS-Genesis 的 reverse task synthesis 是这条思路最直观的代表:它不做"想任务再执行"的顺向流程,而是在真实的安卓模拟器和浏览器里先无模型探索,收集"动作加前后屏幕截图"的三元组,再从中反推低级指令,把相关的低级指令合并成高级任务。任务分布不是 LLM 想象出来的,而是从真实交互里长出来的,Qwen2-VL-7B 在 AndroidWorld 上从 9.82% 涨到 17.41%。OS-Genesis

图注:OS-Genesis 的反向任务合成:先无模型探索真实环境,收集动作与前、后截图组成的三元组,再反推低级指令,最后合并成高级任务,全程没有预定义任务集和人工标注。OS-Genesis

GAIS 用另一条路回答同一个问题。它把环境锚定在真实 MCP 协议仓库上,把工具的源代码转换成可执行的 Python 函数,再用工具依赖图引导任务生成,并把对抗性政策约束注入任务。量化的结果同样刺眼:从 12,490 个生成样本出发,双层过滤后只保留 6,718 个(保留率约 53.8%),近半候选因状态不一致或轨迹不匹配被剔除。GAIS 回看第一章那张占比表:GAIS 重构后只读、写入、流程型工具分别占 57.5%、29.8%、12.7%,行为空间明显宽于普遍七到九成只读的老数据集。把两处数字摆在一起,结论很清楚:多样性衡量的不是样本数量,而是行为覆盖,换掉工具名只是换皮,行为空间没变就仍是重复。

难度要对着学习者校准,多样性要对着行为空间检查;但两种分布目前仍多由系统设计者预设。RLVE 的难度窗口、ToolACE 的难度区间,都是系统设计者事先定下的规则,课程还是人设计的。如果连环境的生成本身都参与学习,数据供给会怎样演化?

ACE 之后:数据生成会自己进化吗?尺子的边界与用法

这正是 2026 年几项工作已经把手伸进去的方向。SPADE 让"环境设计者"和"推理者"共享同一份参数一起训练:设计者每轮从外部语料和环境记忆里生成一个可执行环境,推理者在这个环境里带着提示和不带提示各玩一遍,两者的回报差就是难度信号。回报差大,说明环境刚好够到学习者的能力边界;差很小而推理者成功了,说明环境已被掌握;差很小而推理者也失败,说明环境根本不可解。课程不再是静态池,而是跟着学习者移动的。在游戏设置里,30B 骨干在 8 个推理基准上平均比最强的固定环境基线高 5.3 分,工具使用场景在 BFCL v4 上高 5.7 分、ACEBench-Agent 上高 13.9 分。值得注意的是,SPADE 目前还是 arXiv 上的 work in progress。SPADE

图注:SPADE 的双角色框架。上方的环境设计者从环境记忆 M 和预训练语料 C 出发生成可执行环境 e 与特权提示 h,下方的推理者分别带提示和不带提示游玩,两个回报的差就是设计者的难度信号,两路奖励经 GRPO 共同更新共享的策略参数。SPADE

与之并行的另一条路是"对手自适应"。SPIRAL 让同一份策略在零和博弈里同时扮演两个角色,对手就是自己上一刻的快照,对手的难度因此天然贴着学习者自己的能力曲线,不需要任何外部课程表。为了防止自我对弈把训练方差炸掉,它给每个"游戏加角色"的组合单独维护一个 advantage 基线。效果是 Qwen3-4B 在推理基准上平均提升 10.5 分,Qwen3-8B 提升 10.1 分。SPIRAL 注意它和 SPADE 的区别:SPIRAL 的博弈环境是现成静态提供的,它进化的是对手,不是环境;SPADE 进化的是环境本身。两条路合在一起,就是论文所说的自演进训练的两个方向。

图注:SPIRAL 的 actor-learner 架构。多个 actor 从一组零和博弈中采样轨迹,同一份策略同时扮演两个角色,集中式 learner 用角色条件优势估计分别计算双方的 advantage,再做 on-policy 更新。SPIRAL

在这两条路的尽头,ACE 论文把 2024 到 2026 年的几条趋势收束成判断。scaling 的关键变量不是数据集的原始规模,而是有效支撑集的大小:规模增长应该让有效经验变多、把难度质量推向学习者的有用前沿、让环境状态和任务结构的覆盖变广,三个条件同时维持才成立。数据来源会走真实与合成混合,真实数据的强项是接地气、可审计,合成数据的强项是可控、监督显式。训练体制则在向前移,agent 式监督开始进入预训练和中训练阶段,训练单元不再非得是一整条完整的四元组记录。ACE 论文 对自演进训练,论文还写下三道刹车:Accuracy 闸防止错误反馈被当成经验强化,Complexity 让期望难度跟着移动前沿走,divErsity 防止循环只盯着最近的失败反复练。换句话讲,当数据生成的轮子越转越快,ACE 三轴就从测量工具变成了安全带。

最后必须把这把尺子的边界讲清楚。ACE 是一篇定位论文:它自己不跑实验、不发布新数据集,所以没有任何"ACE 效果更好"的自证,它的价值是给整个领域一张共同的地图。它也不假装自己是穷尽式清单,论文明确说 ACE 捕捉的是"生成时最直接决定经验是否可学的三个性质",而不是把所有影响因素一网打尽。形式化里的权重 λ_C、λ_D 和阈值 α 都没有默认值,论文没有给出推荐配置。它也承认,验证器通过不等于审计过的正确。它不产数据,这恰恰是它最重要的定位:诊断工具不下场,下场的是每个使用它的人。

给读者留一张能直接带走的自查清单,下一次生成数据之前,先过这三问:

ACE 三问检查点
我的数据过 Accuracy 闸了吗数据是否 grounded 且内部自洽;验证是看着像,还是真的跑过
难度对着谁校准有没有明确声明的学习者与执行配置;样本是刚够不到,还是闭眼也能做
多样性是行为覆盖还是换皮换掉工具名、改写 prompt 之后,行为空间真的变宽了吗

ACE 不产数据,也不给公式配默认值;它给的是地图和三个问题。智能体训练的下一阶段,关键不再是生成更多数据,而是持续分配有效、可学、不冗余的经验。你的下一份数据,值得先过一遍这三问。

想深入可以读原文:What Makes Good Agentic Data? An ACE Lens on Data Generation for LLM Agents,arXiv:2608.27260

参考文献

  1. What Makes Good Agentic Data? An ACE Lens on Data Generation for LLM Agents(ACE 论文,arXiv:2608.27260,2026 年 8 月)。https://arxiv.org/abs/2608.27260
  2. APIGen: Automated Pipeline for Generating Verifiable and Diverse Function-Calling Datasets(arXiv:2406.18518)。https://arxiv.org/abs/2406.18518
  3. OS-Genesis: Automating GUI Agent Trajectory Construction via Reverse Task Synthesis(arXiv:2412.19723)。https://arxiv.org/abs/2412.19723
  4. ToolACE: Winning the Points of LLM Function Calling(arXiv:2409.00920)。https://arxiv.org/abs/2409.00920
  5. EnvScaler: Scaling Tool-Interactive Environments for LLM Agent via Programmatic Synthesis(arXiv:2601.05808)。https://arxiv.org/abs/2601.05808
  6. LLM4Cov: Execution-Aware Agentic Learning for High-coverage Testbench Generation(arXiv:2602.16953)。https://arxiv.org/abs/2602.16953
  7. LOGIGEN: Logic-Driven Generation of Verifiable Agentic Tasks(arXiv:2603.00540)。https://arxiv.org/abs/2603.00540
  8. Grounded Agentic Interaction Synthesis (GAIS)(arXiv:2606.02001)。https://arxiv.org/abs/2606.02001
  9. Environment-free Synthetic Data Generation for API-Calling Agents (ESAT)(arXiv:2607.16900)。https://arxiv.org/abs/2607.16900
  10. RLVE: Scaling Up Reinforcement Learning for Language Models with Adaptive Verifiable Environments(arXiv:2511.07317)。https://arxiv.org/abs/2511.07317
  11. SPADE: Self-Play in Adaptive Synthetic Executable Environments(arXiv:2608.19197)。https://arxiv.org/abs/2608.19197
  12. SPIRAL: Self-Play on Zero-Sum Games Incentivizes Reasoning via Multi-Agent Multi-Turn Reinforcement Learning(arXiv:2506.24119)。https://arxiv.org/abs/2506.24119
ACE 框架:用准确、难度、多样性三把尺子衡量智能体数据,自己却不产数据