先给结论
这篇论文真正重要的地方
它把 Skill 从“好像有用的上下文包”变成了可做 paired evaluation 的干预变量。对于每个任务,论文比较无 Skills、curated Skills、self-generated Skills,使我们能讨论 Skill 本身的边际贡献,而不只是讨论模型绝对能力。
不要读成“Skills 总是有用”
论文明确显示 16/84 个任务出现负 delta,且 4+ Skills 和 comprehensive documentation 的收益明显下降。Skill 优化的目标不是把文档越写越长,而是让 agent 在正确时机读取正确程序,并少走弯路。
研究动机:为什么需要 SkillsBench
LLM agent 已经能在 CLI、代码仓库、数据环境里执行多步任务,但基础模型的泛化知识和具体领域 workflow 之间仍有明显缺口。Fine-tuning 昂贵且不灵活;Skills 则把可编辑、可复用、可版本化的程序性知识放在 inference-time。
这篇论文要回答的不是“额外上下文会不会有帮助”这种近似同义反复,而是更难的问题:
- 在同一任务和同一 harness/model 下,curated Skill 的净收益是多少?
- 哪些领域和任务最依赖 Skill?哪些任务会被 Skill 干扰?
- 模型能不能先自己写 Skill,再用自己写的 Skill 完成任务?
- Skill 的数量和复杂度如何影响最终 pass rate?
这正好补上现有 agent benchmarks 的盲区:SWE-bench、Terminal-Bench、OSWorld 等主要评估固定系统完成任务的能力,而 SkillsBench 评估 runtime augmentation 的边际效果。
概念边界:Skill 不等于 Prompt、RAG 或 Tool
论文给 Skill 的操作性定义很重要,因为后面所有实验都依赖这个边界。一个 Skill 至少要满足四点:
程序性内容
包含 how-to workflow、SOP、常见坑、校验步骤,而不是单纯事实检索。
任务类适用
适用于一类问题,而不是泄露某个 benchmark 实例的答案。
结构化组件
有 SKILL.md,并可附带
scripts、templates、examples、references。
可移植
基于文件系统,便于编辑、版本控制、分享,并被兼容 harness 加载。
和几种相邻概念的差别
| 范式 | 核心作用 | 为什么不是 Skill | 和 Skill 的关系 |
|---|---|---|---|
| Prompt | 一次性指令或策略 | 通常缺少模块边界、资源文件和可版本化结构 | Skill 里可以包含 prompt-like guidance,但不止于 prompt |
| RAG | 检索事实或文档片段 | 主要解决 information access,不保证程序性 workflow | Skill 可以引用资料,但重点是 how to execute |
| Tool documentation | 描述工具 API 能做什么 | 描述 capability,不一定给出任务类程序 | Skill 可以把工具文档压缩成可执行 SOP |
| Few-shot examples | 通过例子诱导模式 | 通常是 declarative demonstrations,不一定模块化 | Skill 可以包含 examples,但还要有流程和校验 |
我的读法:Skill optimization 确实很像 prompt optimization,但 Skill 的状态面更多:触发描述、程序正文、资源文件、示例、脚本、文件布局、harness 调用机制、跨任务适用范围。这些都是可 drift 的对象。
算法流程/方法:SkillsBench 如何构造
SkillsBench 建在 Harbor / Terminal-Bench 风格的 containerized evaluation 上。每个任务不是一段静态问答,而是一个可执行模块:
Instruction
人写任务描述,说明目标、输入格式、输出要求。
Environment
Docker 环境,包含任务数据和可选的 skills/ 目录。
Oracle
参考解法证明任务可解,并用于提交前质量控制。
Verifier
确定性测试脚本,输出 pass/fail,避免 LLM-as-judge 噪声。
质量控制为什么关键
如果 Skill 含有 task-specific 文件名、magic number、测试答案或精确命令序列,那么 benchmark 测到的是泄漏,不是程序性知识。论文要求 Skill 面向任务类,而不是面向某个实例;并通过 CI agent、人类 review、oracle execution 和 deterministic verifier 做过滤。
任务与生态规模
从候选到最终评估
- 105 contributors 提交 322 candidate tasks。
- 论文最终列出 86 个任务,其中 84 个进入主实验。
- 任务按人类完成时间分为 Core 17、Extended 43、Extreme 26。
- Skill 生态分析中,去重后得到 47,150 unique Skills。
实验设计:三种 Skills 条件
论文评估三个 commercial agent harness:Claude Code、Codex CLI、Gemini CLI;七个论文报告的模型配置;所有模型 temperature 设为 0。每条 trajectory 是 agent 在某个任务、某个条件下的一次完整尝试,直到完成、失败或超时。
No Skills
只给任务指令,环境中没有 Skills。它是 baseline。
With Skills
提供完整 curated
environment/skills/,包含说明、示例、代码或资源。
Self-Generated Skills
不给 curated Skills,而是要求 agent 先写 1-5 个可复用 skill documents,再用它们解决任务。
指标
主指标是 pass rate。论文还报告 normalized gain,用来衡量从 baseline 到完美表现之间填补了多少比例:
注意:normalized gain 有天花板效应。一个 baseline 已经很高的系统,绝对提升小也可能有较大 g;所以这篇论文同时报告 absolute delta 和 normalized gain。
实验结果:curated Skills 有用,但不是单调魔法
主结果表
| Harness | Model | No Skills | With Skills | Delta | Self-Gen |
|---|---|---|---|---|---|
| Gemini CLI | Gemini 3 Flash | 31.3% | 48.7% | +17.4pp | -- |
| Claude Code | Opus 4.5 | 22.0% | 45.3% | +23.3pp | 21.6% / -0.4pp |
| Codex | GPT-5.2 | 30.6% | 44.7% | +14.1pp | 25.0% / -5.6pp |
| Claude Code | Opus 4.6 | 30.6% | 44.5% | +13.9pp | 32.0% / +1.4pp |
| Gemini CLI | Gemini 3 Pro | 27.6% | 41.2% | +13.6pp | -- |
| Claude Code | Sonnet 4.5 | 17.3% | 31.8% | +14.5pp | 15.2% / -2.1pp |
| Claude Code | Haiku 4.5 | 11.0% | 27.7% | +16.7pp | 11.0% / 0.0pp |
| Mean | 24.3% | 40.6% | +16.2pp | 21.0% / -1.3pp |
最强的结论不是某个模型赢了,而是 curated Skills 在所有 7 个配置上都提高了 pass rate;同时 self-generated Skills 平均没帮助,且在 Codex + GPT-5.2 上显著变差。换句话说,模型可以消费好的程序性知识,但不稳定地生产好的程序性知识。
领域差异很大
| Domain | No Skills | With Skills | Delta | 我的读法 |
|---|---|---|---|---|
| Healthcare | 34.2% | 86.1% | +51.9pp | 专业流程、单位 harmonization、实验数据处理,Skill 很容易变成关键 SOP。 |
| Manufacturing | 1.0% | 42.9% | +41.9pp | 约束优化和排产流程不是通用语言能力能稳定覆盖的。 |
| Cybersecurity | 20.8% | 44.0% | +23.2pp | 工具链和审计流程明确,适合写成 procedure。 |
| Natural Science | 23.1% | 44.9% | +21.9pp | 方法、单位、数据处理 pipeline 对结果影响很大。 |
| Software Engineering | 34.4% | 38.9% | +4.5pp | 模型已有较强预训练覆盖,额外 Skill 的边际收益小,还可能引入噪声。 |
任务级别:最大增益和负增益同时存在
最大正增益
-
mario-coin-counting: 2.9% 到 88.6%,+85.7pp -
sales-pivot-analysis: 0.0% 到 85.7%,+85.7pp -
flood-risk-analysis: 2.9% 到 80.0%,+77.1pp -
sec-financial-report: 0.0% 到 75.0%,+75.0pp -
software-dependency-audit: 8.6% 到 69.4%,+60.9pp
负增益样例
-
taxonomy-tree-merge: -39.3pp -
energy-ac-optimal-power-flow: -14.3pp -
trend-anomaly-causal-inference: -12.9pp -
exoplanet-detection-period: -11.4pp
这些 case 是后续 Drift Monitor 最该盯住的地方:Skill 不是单向增强,更新后可能缩小作用域、引入冲突策略或让 agent 过度执行错误流程。
Skill 数量和复杂度:少而准更好
| Skills Count | With | No | Delta |
|---|---|---|---|
| 1 skill | 42.2% | 24.4% | +17.8pp |
| 2-3 skills | 42.0% | 23.4% | +18.6pp |
| 4+ skills | 32.7% | 26.9% | +5.9pp |
| Complexity | Pass Rate | Delta | N |
|---|---|---|---|
| Detailed | 42.7% | +18.8pp | 1165 |
| Compact | 37.6% | +17.1pp | 845 |
| Standard | 37.1% | +10.1pp | 773 |
| Comprehensive | 39.9% | -2.9pp | 140 |
这两个表对 skill 优化非常关键:优化目标不是“堆更多知识”,而是让知识更可定位、更程序化、更短路径、更少冲突。
成本与失败模式:Skills 改善的主要是质量失败
成本结论要谨慎读
- Codex/Gemini 的 Skills 条件输入 token 增加约 6-13%。
- GPT-5.2 单次成本从 USD 1.85 到 USD 2.07,+12%。
- Gemini 3 Flash 从 USD 0.54 到 USD 0.57,+6%。
- Gemini 3 Pro 反而从 USD 1.13 到 USD 1.06,-6%,论文解释为 Skills 减少探索轮数。
失败分类
| Failure mode | Count | Share | 含义 |
|---|---|---|---|
| Quality Below Threshold | 2577 | 49.8% | 输出结构有了,但数值、质量或阈值不达标。 |
| Agent Timeout | 922 | 17.8% | 策略可能在走,但没有在预算内结束。 |
| Incomplete Solution | 527 | 10.2% | 完成一部分 deliverables,遗漏关键组件。 |
| No Output Produced | 411 | 7.9% | 连 required output file 都没有生成。 |
| Domain Knowledge Gap | 251 | 4.9% | 领域概念、单位、公式或方法理解错。 |
最有价值的分析是:With Skills 把整体 failure rate 从 78.4% 降到 61.1%;Quality Below Threshold 的绝对数量从 1184 降到 819,下降 30.8%。这说明 Skills 不只是让 agent 产生文件,而是让已经进入解题轨道的 agent 更接近 verifier-facing 的正确输出。
我的评论:它是 Skill Optimization 的地基,不是终点
优点
- paired evaluation 设计正确:同一任务下比较有无 Skill,直接测边际贡献。
- deterministic verifier 降低 judge noise,使结果适合后续做 optimizer benchmark。
- 承认负例和 self-gen 失败,没有把 Skills 包装成普适增强。
- 提供任务级、领域级、数量/复杂度、失败模式多个视角。
限制
- Skills 注入也增加 context length,仍需要更强 length-matched controls 来隔离“程序结构”本身的因果作用。
- curated Skills 是乐观场景;真实 Skill 生态质量参差,自动检索/选择会引入更多噪声。
- harness-specific invocation 很强:with Skills 不是一个统一干预,Claude/Codex/Gemini 的读取路径不同。
- 任务集中在 terminal/containerized 设置,GUI、多模态、多 agent 和更长 horizon 还没有覆盖。
和 SkillOpt / SkillEvolver 的关系
SkillOpt 这类工作通常问:能否自动改写、合成或选择 Skill,让任务表现更好?SkillsBench 提供的是评价底座:有 paired task,有 curated baseline,有 deterministic verifier,也有负例。真正难点会变成:
- optimizer 是否只是过拟合当前 verifier?
- 新 Skill 是否牺牲旧任务表现换取单任务收益?
- Skill 变长之后是否提升了可执行性,还是只增加上下文噪声?
- 同一个 Skill update 在 Claude Code、Codex CLI、Gemini CLI 上是否仍然有效?
对 Drift Monitor 的启发
如果 agent skills 是持久化的程序性记忆,那么每次 Skill update 都是在修改 future-self。SkillsBench 给出的信号是:Skill 能显著提升表现,但也能伤害任务;self-generated Skill 平均失败;过多或过长 Skill 有负担。因此 self-evolving agent 不能只有 optimizer,还需要 admission gate。
SkillsBench asks: do skills help?
SkillOpt asks: can we improve skills?
Drift Monitor asks: should this skill update be admitted into persistent agent state?
Drift Monitor 应该盯什么
Semantic Drift
新 Skill 是否改变了原本任务类定义,把广义 procedure 缩成了某个 benchmark trick?
Invocation Drift
frontmatter / description / trigger 是否导致 agent 在错误任务上调用,或在正确任务上不调用?
Verifier Overfit
新 Skill 是否只优化当前 verifier 的表面条件,而不是稳健地完成任务类?
Regression
旧任务、相邻任务、负例任务是否因为 update 退化?尤其要看 SkillsBench 中那些负 delta pattern。
Context Burden
Skill 是否变长、重复、冲突,导致 4+ Skills / comprehensive documentation 那类退化?
Cross-Harness Fragility
同一 Skill 在不同 harness 的发现、注入、执行路径是否仍成立?
我会把这篇论文放在阅读顺序最前面
因为它给后续所有 skill optimization 论文提供了“该怎么测”的参照系。没有 SkillsBench 这一类 paired benchmark,Skill optimizer 很容易沦为 prompt optimizer 的换名版本:只在一个 task/verifier 上迭代文本,看起来更好,但不知道是否真的提升了可复用程序性知识。
Reference / Evidence
论文公开页面,包含版本记录与摘要。
正文、图表、附录和实验细节的公开 PDF。
公开 benchmark 仓库和任务/实验入口。
项目主页。
公开数据集入口。