扫描过关率 94.5% 也不等于能用,NVIDIA 用 Skill Lift 测出平均增益 0.21

Evaluating Skills, Not Just Agents: Agentic Continuous Evaluation of Skills

Christopher Kevin, Narendran Raghavan, Jean-Francois Puget, Roshni Malani, Meghana Puvvadi, Moshe Abramovitch, Mohit Gupta, Rama Akkiraju, Subodh Prabhu, Yogesh Dangi, Wei Luo, Seong Hee Lee

KDD 2026 Workshop on Enterp

cs.AI

2026-08-21

NVIDIA 提出 ACES,对技能做有/无配对 live 评测。947 次试验、四套 harness 上复合 Skill Lift 均值 0.2134,正提升占 72.8%;文档扫描分与真实增益相关接近零。

这篇在解决什么

Agent skill 已经成了 Claude Code、Codex、Cursor 这类 harness 的标准扩展层:一份 SKILL.md,加上可选脚本和参考文档,推理时按需加载。社区仓库里已经堆了成千上万个技能包。企业要上线时真正要回答的问题很具体:这个技能在真实 agent、同一模型、同一沙箱、同一打分规则下,到底有没有帮任务做成。文档写得像不像规范,只能当前置检查。

现有闸门分四类:结构检查、LLM-as-Judge 文档打分、脚本 lint、安全扫描。四类都在扫文档,没有一类会把技能跑起来。NVIDIA 把扫描比成编译器的 -Wall -Werror:没有 warning 不代表程序做对了。技能可能扫得很干净,但 agent 发现不了它、调错脚本、读完结果却转述错、和同工作区其他技能打架,或者模型一升级就悄悄退化。这些失败从 SKILL.md 里看不见。

方法

ACES(Agentic Continuous Evaluation of Skills)把技能当可执行的 agent 产物来评。核心是配对试验:同一道题、同一 harness、同一模型、同一套支撑技能、同一打分器,只改目标技能在不在。差就是 Skill Lift,技能在这套固定条件下的边际贡献。

评测资产跟着技能走,常见形态是 evals.json:用户问题、期望技能、参考答案,以及一段段自然语言的 expectedbehavior,比如「执行前先读 SKILL.md」或「破坏性操作先问用户」。作者可以另写 EVAL.md,里面的意图压过 LLM 生成的用例;产品有自己的任务和打分器时,走 BYOT / BYOG,ACES 只负责配对协议和汇总。

跑完的轨迹归一成 ATIF(Agent Trajectory Interchange Format),同一套打分器跨 harness 复用。默认六项:

复合 Skill Lift 默认六项等权。outcome-only 只平均 accuracy 和 goalaccuracy。基线工作区故意不是空的:decoy 或前置技能两边都放着,避免把「工作区里有任何技能」算进目标技能的功劳。隔离模式只放目标技能,测内容贡献;group 模式旁边再放 decoy,两个 lift 的差叫 routing premium,看名字和描述能不能从邻居里被挑出来。开源实现是 NVIDIA SkillEvaluator。

结果

145 个真实技能(内部企业仓加公开目录)先扫一遍。结构分均值 79.2,中位 79.8,σ=4.9。默认 70 分闸门通过率 94.5%,过 80 分的只有 48.9%。LLM 文档打分通过率 86.2%。两套扫描 Spearman ρ=0.14,Pearson r=0.08,几乎不相关。最常踩的规则是 frontmatter:99.3% 没声明 tools,97.9% 没写 Limitations,97.2% 没写 author。扫描能抓写作问题,但两套分数对不齐,更看不到运行时。

真正有用的是 live 层。生产技能主分析留下 64 个技能、4 个主 harness(OpenCode、Claude Code、Codex、Terminus-2),其中 58 个技能产出了 947 条可打分配对 case。

指标带技能基线Skill Lift正 lift 占比
复合分0.74600.53260.213472.8%
accuracy0.77600.63290.143137%
goalaccuracy0.68870.47200.21757%
skillexecution--0.326364%
behaviorcheck--0.298356%
skillefficiency--0.275841.7%
security--0.0206%

947 条里 689 条为正、171 条为零、87 条为负。过程指标抬得比最终答对更多:扫描看不见的发现、路由、工作流和工具使用,才是技能真正在改的东西。skillefficiency 均值第三高,但只有 41.7% 的 case 为正,有些 run 拿效率换正确率或流程完整性。

四个 harness 的平均 lift 不一样:OpenCode 0.3611,Claude Code 0.2904,Codex 0.1264,Terminus-2 0.0896。这是各自对自家基线的差,不是模型排行榜。覆盖也不均:Claude Code 56 个 cell / 251 条 case,OpenCode 34 / 211。Codex 固定 harness 换模型时,更强后端把无技能基线抬上去,Skill Lift 从 GPT-5.2 的约 +0.09 缩到 GPT-5.5 的约 +0.05,绝对分还很高。技能的边际价值会随模型变强而变小。

扫描分和 live lift 的相关更接近零:结构分 Spearman ρ=-0.0181,LLM-judge ρ=-0.0266。扫过关不能当运行时证据。

25 组路由压力试验把可见技能从 1 加到 50。1 到 20 个时总体 lift 还在 0.133-0.149,墙钟从 258 秒涨到 451 秒;到 50 个,带技能通过率掉到 0.55,墙钟 1290 秒。最挤的工作区适合当发布压力测试,不适合每次改都跑。

为什么重要

给正在把 skill 当产品交付的团队:PR 上不能只看 SKILL.md 写得整不整齐。ACES 把 evals/ 做成技能的 tests/,结构扫描每次改都跑,live 配对留给候选发布、高风险技能或 reviewer 点名。Skill Lift 为负时,轨迹能分出两类:跑挂了,或技能把 agent 带偏了。后者才是该改文档和触发词的信号。

这不是又一个 agent benchmark。Terminal-Bench、SWE-bench 评的是固定任务上的 agent;ACES 评的是任意一个技能,在它自己的任务上,加上去有没有用。SkillsBench 证明技能整体有用,但不给单个技能打分,也不进 CI。对已经在 Claude Code / Codex 上堆技能包的人,这篇给的是可落地的审查协议。

这是工程方法论论文。Skill Lift 0.21 不是新算法的增益,是「有技能 vs 没技能」在这批企业技能上的平均差。扫描闸门不够,配对 live 评测补得上那块看不见的面。

局限与存疑

语料偏 System Access、Deployment、Platform、Data Infra,Troubleshooting 和创意类技能几乎没有,lift 分布不能外推。四个 harness 覆盖不均。headline 的 95% CI 是配对 case 上的正态区间,不是 947 个独立技能;按技能 bootstrap 是 [0.1898, 0.2350],仍然为正。201 个 cell 里 88 个有两次试验,cell 内 lift 标准差中位 0.0319。

配对设计固定了任务、harness、模型、打分器和支撑技能,比单条件 live 分强,但识别不出与环境无关的技能贡献。加一个技能会改路由压力和上下文分配。Skill Lift 只能读成在声明的工作区和基线策略下的边际贡献。

Live 轨迹打分的跨 judge 一致性、人工校准、不确定度都没测。文档 rubric 上三个 judge 差约 1.5 分(0–10 分制),live 层没有对应数字。部分企业技能要打 VPN 后面的内部接口,容器过不去,那些技能的 goalaccuracy 绝对值是下界。安全扫描是外部集成,不是这篇的贡献。超时和其他无分原因混在一起,没有单独超时率。

任务是作者自带的。这让评测贴近真实意图,也让技能在自己出的题上得分带着自产自销的风险。论文用 decoy、负例、隔离和 group 两种模式来压这个风险,但没给出作者出题偏置的量化。

术语

原文与代码

社区讨论

相关论文

全部论文解读