← 返回 2026-08-19

揭开 Agent 技能之谜:为何有效,何时失效 Demystifying Agent Skills: Why They Work-Until They Don't

Zhiyuan Jiang, Fangrui Huang, Hanwen Xing, Xander Wu, Yipeng Gao, Rui Cao, Mengdi Wang, Shilong Liu, Yijiang Li 📅 2026-08-14 👍 163 2026-08-24 18:30
Agent Skills LLM Agent 实证评测 检索与调用 程序记忆 轨迹分析

对照实验与配对轨迹分析揭示:技能靠程序锚定而非知识注入起效,检索与调用是失效边界。

前置知识

Agent Skill(技能包)

Anthropic 于 2025 年推广的推理时增强抽象:把过往执行经验蒸馏为一个结构化 SKILL.md 文件,通常包含适用条件(Use This Skill When)、前置条件、操作步骤、常见失败模式与验证方法。技能被放进 agent 的执行环境中作为可复用的程序资源,agent 在任务中按需读取与调用,而不是把全部内容塞进初始上下文。

这是本文的研究对象。理解技能的结构与放置方式,才能明白论文所说的『表征』『检索』『调用』分别发生在哪个环节。

Workflow Memory(工作流记忆)

另一种经验复用方式:把过去的执行轨迹清洗、结构化为动作级流程后直接注入上下文。与技能不同,它尽量保留轨迹层面的执行细节(命令、参数、调试证据),因此更接近原始经验,但也携带更多探索噪声、失败分支与任务特定细节。

它是本文最关键的对照条件。技能与工作流记忆由完全相同的源轨迹构造,二者的差值干净地度量了『蒸馏压缩』本身的贡献。

Agent Harness(代理框架)

封装 LLM 的脚手架系统,定义提示风格、工具调用接口与执行循环,如 Codex CLI、Gemini CLI。同一模型配不同 harness 会表现出不同的行为模式;程序知识可能与此耦合。

RQ3 检验的正是技能是否与产生它的框架耦合:把 Codex 产出的技能和工作流记忆原样搬到 Gemini CLI 中评估,考察可移植性。

检索精确率与召回率

评估『从技能池中找出正确技能』的指标。设任务 $t$ 的真实技能集为 $G_t$,agent 实际选择或调用的集合为 $\hat{G}_i$,则精确率 $P_i = |\hat{G}_i \cap G_t| / |\hat{G}_i|$,召回率 $R_i = |\hat{G}_i \cap G_t| / |G_t|$,$F1 = 2PR/(P+R)$。精确率衡量选出的技能里有多少是对的,召回率衡量该找的有没有漏掉。

RQ4 用这三个指标在三个独立实验臂上量化技能,揭示了本文最反直觉的发现:实际使用精确率崩塌到 3.3% 而任务成功率依然平稳。

配对对比轨迹分析与开放编码

配对分析指同一任务在 Raw、Workflow、Skill 三个臂下执行后,由 LLM 判官逐轨迹比较行为差异,标注哪些失败模式被修复、哪些新失败被引入。开放编码则是质性研究方法:不预设分类框架,而是从抽样数据中自由归纳标签,再合并成规范分类学,本文用 240 条轨迹归纳出 238 个有效标签、12 种模式。

这是论文的方法学核心。所有结论(如程序锚定占 65.7%)都来自这套管线,理解它才能判断证据强度与局限。

研究动机

技能已成为 LLM agent 推理时增强的主流方案:把环境配置序列、工具使用模式、调试例程和验证步骤打包成可复用的结构化知识,避免 agent 每次重复发现同样的程序细节。Anthropic 于 2025 年公开技能仓库后这一抽象迅速流行。然而现有评估几乎只测量聚合任务成功率:SkillsBench 与 SWE-Skills-Bench 等基准只报告『加技能后任务解出更多』这一个数字,技能文献中的技能也大多通过启发式迭代、提示调优和基准试错来编写与修订。这种黑盒评估无法回答三个更根本的问题:技能加载前后 agent 行为到底发生了什么变化?技能究竟稳定了执行的哪个环节?为什么同一个技能能帮一个任务却害另一个任务?由于缺少机制级归因,社区既无法预测新技能在什么上下文中会失效,也无法系统性地区分『技能内容不好』与『技能被用错』这两类需要完全不同补救手段的失败。

本文的目标是本文的目标是把技能评估从『是否有效』推进到『何时有效、为何有效、在哪里失效』的机制层面。作者将其形式化为四个研究问题:RQ1,把同一段先验经验表示为标准化技能与直接注入为程序记忆(Workflow Memory)效果有何不同?RQ2,技能增益来自轨迹中的程序内容本身,还是来自显式的成功/失败结果标注?RQ3,在一个 agent 框架中蒸馏出的程序指导能否迁移到另一个框架?RQ4,技能池变大、干扰技能变混淆时,检索与下游执行如何退化?围绕这四个问题,论文要产出一个可验证的技能效用与失效分类学(三个大类、十二种模式),以及一套让技能效果『可观测』而非黑盒的配对研究方法,为最终自动化生成可靠有用的技能打下原则性基础。

与已有工作不同的是,独特切入角度是『配对对比 + 阶段分解』。与以往只对比『有技能 vs 无技能』的端到端成功率不同,本文让同一段先验经验以两种表征(Workflow Memory 与 SKILL.md)注入,在相同任务、相同 harness、相同预算下重跑,再由 LLM 判官逐轨迹比对 Raw、Workflow、Skill 三臂的行为差异,标注哪些失败模式被修复、哪些新失败被引入,从而把增益与失效归因到表征、检索、调用、适应等具体环节。另一个独特设计是把检索质量与下游成功解耦为三个互相独立的测量——嵌入排序(不执行任务)、显式技能选择(不执行任务)、全池真实执行(解析实际使用)——彼此不传递输出,因此能发现『检索精度崩塌但成功率平稳』这类被流水线式评估掩盖的现象,并据此提出『精确调用 ground-truth 技能既不充分也不必要』这一反直觉结论。

核心方法

技能的价值不该由单一成功率概括,而应沿『表征→蒸馏→迁移→检索→调用→适应』管线逐段检查。其一,RQ1/RQ2 对照实验:在固定 Docker 环境用 Harbor 框架执行任务(每任务 5 次独立试验),为每个选中任务收集成败轨迹,构造 $5s0f$–$0s5f$ 六种配比的经验池;同一池子要么清洗为 Workflow Memory 直接注入,要么蒸馏成标准化 SKILL.md,与 Raw 臂在相同目标任务上比较,用 Codex 与 Gemini CLI 两套 agent-model 配对,覆盖 Terminal-Bench 2.0、Terminal-Bench-Pro 与 SkillsBench 三个基准。其二,对比轨迹分析:把 8,135 条试验记录归一化为 manifest,开放编码 240 条轨迹得到 238 个标签,归纳为 12 种模式、三大类,对 528 个三元组做配对标注。其三,RQ3 跨框架迁移:Codex 工件原样交给 Gemini CLI 评估。其四,RQ4 检索实验:池大小 5→100,干扰分随机/相似/不相似三档,三个独立臂分别测量。

核心创新是把『技能为什么有用』变成受控变量下的可观测行为变化。已有工作比较『加技能 vs 不加』的聚合成功率,无法区分增益来自经验内容、结果信号还是表征形式。本文的关键控制是:Workflow Memory 与 Skill 由完全相同的源轨迹构造,唯一变量是表征方式——前者保留轨迹级执行细节,后者压缩成标准化程序工件。这样,Skill 与 Workflow Memory 的差值就纯粹度量『蒸馏压缩』的贡献。结果显示这一差值(+6.06 个百分点,95% CI [+0.0076, +0.1136])是全文最稳健的配对效应,且机制标签表明技能案例中 65.7% 通过程序锚定起效、仅 4.5% 来自显式知识注入——技能的真正机制是把噪声经验变成程序锚点,而非补足缺失知识。第二个关键思想是把『找对技能』与『用对技能』拆成三个互不传递输出的独立测量,从而首次量化了精确调用真实技能与任务成功之间的脱节。第三个关键思想是 no-hint 消融:隐藏成功/失败标注但保留轨迹内容,分离程序内容与结果信号各自的贡献。

方法步骤详情

第一步,用 Harbor 在固定 Docker 环境跑 Raw 执行,仅保留同时拥有成败轨迹的任务并构建平衡经验池。第二步,双表征构造:Workflow Memory 清洗结构化但保留程序流;SKILL.md 用固定提示词蒸馏,含适用条件、步骤、失败模式;no-hint 变体隐藏成败标注。第三步,六种配比 × 三种臂重跑目标任务,形成 8,135 条记录 manifest,成败由 verifier 奖励决定。第四步,开放编码:Claude Sonnet 4.6 判读 240 条抽样轨迹得 238 个标签。第五步,两轮批式归纳出 12 个规范模式,人类校验 714 项,$\kappa = 0.952$。第六步,配对标注:528 个三元组逐臂赋模式与机制标签,bootstrap 1,000 次算置信区间。第七步,Arm 1 用 Qwen3-Embedding-0.6B 排序,Arm 2/3 做显式选择与全池执行,精确率 $P_i = |\hat{G}_i \cap G_t| / |\hat{G}_i|$,召回率 $R_i = |\hat{G}_i \cap G_t| / |G_t|$。

技术新颖性

技术新颖性有四点。第一,首个技能机制分类学:12 种模式、三大类经开放编码从数据归纳而来,有 714 项人类校验支撑($\kappa = 0.952$),把技能评估从单一指标升级为可审计的行为级标签体系。第二,同源双表征对照:控制经验内容不变、只操纵表征(直接轨迹 vs 蒸馏技能),干净分离出『压缩为程序锚点』机制,并用轻量基线堵住替代解释——26 个 TB2 任务上短计划只有 47.7%、test-first 模板只有 59.2%,远低于 Skill 的 79.2%,说明优势不来自任何紧凑程序文本。第三,检索-执行解耦的三臂独立测量:嵌入排序、显式选择与全池执行互不传递输出,因此能发现池从 5 扩到 100 时使用精度从 29.6% 崩到 3.3% 而成功率反而微升的解耦现象,证明精确调用 ground-truth 技能既不充分也不必要。第四,no-hint 消融把结果信号与程序内容分开,证明失败轨迹只有配上结果标注才真正有用。

Experimental pipelines. Top: skill versus procedural memory. Bottom: skill retrieval.
Figure 1: Experimental pipelines. Top: skill versus procedural memory. Bottom: skill retrieval.
Taxonomy label distribution across trajectory mixtures and experimental arms.
Figure 2: Taxonomy label distribution across trajectory mixtures and experimental arms.

实验结果

(1)最大增益对象是工作流记忆而非 raw:528 个三元组上成功率 Skill 61.9% > Raw 59.1% > WM 55.9%,Skill vs WM 差值 +6.06pp,是唯一显著效应;机制上程序锚定占 65.7%、知识注入仅 4.5%。(2)执行鲁棒性:SC2 失败占比从 Raw 37.3% 降到 Skill 23.5%,环境失败从 5.3% 降到 0.2%;但算法逻辑与静态验证失败三臂几乎不变。(3)新失败面:技能误用/忽视占技能臂 10.0%(Raw 仅 0.8%),WM 因过程噪声超时达 10.6%。(4)跨框架迁移:Codex 工件在 Gemini CLI 上 Skill 超 WM +6.06pp。(5)结果标注:纯成功池时两者接近,混入失败轨迹后差距拉大(0.7462 对 0.4000)。(6)检索解耦:池从 5 到 100,使用精度从 29.6% 崩到 3.3% 而成功率反而微升至约 39%,相似干扰是主要压力源。(7)token 成本:Skill 69.6%/521.5K 优于 Raw 的 64.1%/555.7K,但比最省的 WM 贵 95.3K。

Task success rates for Workflow Memory and Skill injection across trajectory mixtures.
Table 1: Task success rates for Workflow Memory and Skill injection across trajectory mixtures.
Mechanism labels used to characterize how injected prior experience affects execution.
Table 2: Mechanism labels used to characterize how injected prior experience affects execution.
Human validation of the taxonomy construction pipeline.
Table 3: Human validation of the taxonomy construction pipeline.
Effect of pool composition and size on SkillsBench.
Table 4: Effect of pool composition and size on SkillsBench.
Oracle-status success rates across the three execution arms.
Table 9: Oracle-status success rates across the three execution arms.
Paired success-rate deltas between execution arms.
Table 10: Paired success-rate deltas between execution arms.
Contrastive skill-use taxonomy over 528 paired triples.
Table 11: Contrastive skill-use taxonomy over 528 paired triples.
Lightweight compact procedural baselines on selected Terminal-Bench-2 tasks.
Table 12: Lightweight compact procedural baselines on selected Terminal-Bench-2 tasks.
Matched success and token-cost comparison.
Table 13: Matched success and token-cost comparison.
Complete Arm 2 and Arm 3 retrieval results on SkillsBench.
Table 15: Complete Arm 2 and Arm 3 retrieval results on SkillsBench.
Complete numerical results for the outcome-annotation ablation.
Table 16: Complete numerical results for the outcome-annotation ablation.
Skill retrieval and execution-time skill use on SkillsBench.
Figure 3: Skill retrieval and execution-time skill use on SkillsBench.
Cross-framework transfer of procedural experience.
Figure 4: Cross-framework transfer of procedural experience.
Effect of outcome labels during skill creation.
Figure 5: Effect of outcome labels during skill creation.
查看结构化数据
任务指标本文基线提升
技能 vs 工作流记忆(528 配对三元组,TB2/SkillsBench/TB-Pro) 配对成功率差值(百分点) Skill vs WM:+6.06(95% CI [+0.76, +11.36]) WM vs Raw:−3.22;Skill vs Raw:+2.84(CI [−0.0227, +0.0795],不显著) 全文唯一统计显著的配对增益,证明蒸馏表征优于直接轨迹注入
Oracle 成功率(对比轨迹分析样本) 任务成功率 Skill 61.9%(327/528) Raw 59.1%(312/528)、Workflow Memory 55.9%(295/528) 较 WM +6.0pp,较 Raw +2.8pp
执行层与验证失败(SC2 模式占比) 模式占比 Skill 23.5% Raw 37.3%、Workflow Memory 33.3% 较 Raw 下降 13.8pp;环境基础设施失败从 5.3% 降至 0.2%
轻量紧凑程序基线(26 个 TB2 任务 × 5 试验 = 130 trials) 任务成功率 Skill 79.2%(103/130) WM 62.3%、test-first 模板 59.2%、Raw 50.0%、short plan 47.7% 较 WM +16.9pp,排除『任何紧凑提示都有效』的替代解释
技能检索与实际使用(SkillsBench,池大小 5→100) 实际使用精确率 / 下游成功率 精确率 Gemini 16.9%→0.7%、Codex 42.3%→5.9%(两臂平均 29.6%→3.3%);成功率保持 36–45% 嵌入 top-1 精度仅从 88.3% 缓降到 76.9%;成功率平均 36.4%→39.3% 揭示精确调用与任务成功解耦,检索精度不是成功的充分预测因子
Token 成本(83 任务匹配交集,同任务平均) 成功率 / 平均总 tokens Skill 69.6% / 521.5K WM 64.8% / 426.2K;Raw 64.1% / 555.7K 比 Raw +5.5pp 且省 34.2K tokens;比 WM +4.8pp 但多花 95.3K tokens

局限与改进

作者承认的局限:评估集中在终端与工具使用类基准,不覆盖长程网页交互、开放式协作等行为;agent-model 配置有限(两个 harness、三四个模型),未必泛化到其他脚手架或模型版本;机制分类学只来自约 3%(240/8,135)的分层抽样,稀有模式可能被低估;RQ4 因 GPT-5.3-Codex 停止可用改用 GPT-5.4,跨 RQ 绝对数值不可直接比较。我自己的观察:第一,Skill vs Raw 的 +2.84pp 置信区间含 0,『技能有效』严格说主要建立在 Skill vs WM 之上;第二,528 个三元组的逐臂标注仍由 LLM 判官完成,人工校验只覆盖标签归纳阶段,判官偏好可能系统性影响模式占比;第三,0s5f 全失败池下技能经常低于 Raw(Table 1 多处红格),失败经验的蒸馏方向性问题未充分讨论;第四,检索-执行解耦只在提供原生任务-技能标注的 SkillsBench 上验证,其他基准是否同样脱节未知;第五,token 分析仅限 83 个有完整元数据的任务交集,且技能臂部分 token 字段缺失。

独立分析的弱点

(1)调用决策未被建模——10.0% 的技能误用/忽视失败说明瓶颈在『何时该用、用到什么程度』的元判断,改进方向是为技能配备前置适用性自检与调用后验证点,或训练技能路由器动态撤回不适用技能。(2)失败经验处理粗糙——0s5f 全失败池反而拖累成功率,当前提示词对失败轨迹只做浅层『提取失败模式』,应区分可复用的避坑规则与任务特定噪声,只在置信度足够时写入。(3)静态验证与算法逻辑错误不受技能影响——两类合计约两成失败,需要技能捆绑可执行测试或运行时验证器,并内嵌失败升级策略。(4)检索指标与真实效用脱节——使用精度跌到 3.3% 而成功率平稳,top-1 精度不是好目标,应面向程序可用性训练检索器,或让 agent 组合部分相关技能并以执行反馈重排。(5)效率-效果权衡未自动化——Skill 比 WM 贵 95.3K tokens,可按任务类型与预算动态选择表征或分级注入(先摘要后全文)。

未来方向

作者提出扩展到更广的 agentic 行为(长程网页交互、开放式协作)、更多 scaffold 与模型族,以及超出 3% 抽样的更全面标注。可延伸方向:(1)自动技能生命周期管理——把 12 模式分类学用作在线监测信号,当技能持续触发 SC3 失败时自动重写或下架,形成生成→检索→执行→诊断→修订闭环;(2)结果感知蒸馏——no-hint 消融表明失败轨迹价值依赖结果标注,可研究弱监督或用验证器自动推断成败的蒸馏;(3)跨框架技能标准化——蒸馏技能比工作流记忆更可移植,值得制定跨 harness 接口规范并自动检测框架耦合;(4)检索器与执行联合优化——Arm 3 召回在 k=100 仍达 54.3–73.6%,可用执行期技能访问日志微调面向程序可用性的嵌入模型;(5)技能组合与冲突消解——池变大后相关技能可提供部分支持,需研究多技能协同与矛盾指导仲裁;(6)成本自适应注入——按任务难度与预算在三种表征间动态选择。

复现评估

方法学透明度高:附录 A 给出全部实现细节(模型配对、基准分片、轨迹截断预算、采样种子、缓存与确定性聚合),附录 B 公开全部六个提示词(skill-creator、no-hint 变体、轨迹标注、批式归纳、合并、配对比较),使用公开的 Harbor 框架与公开基准分片,正文提到部分检索统计已在 released artifacts 中发布,但未给出正式代码仓库链接,技能构造与标注管线的开源程度需确认。算力门槛较高:主实验需调用 GPT-5.3-Codex、Gemini-3.1-Pro-Preview、GPT-5.4 在 Docker 中大规模执行(仅 TB-Pro 每条件 130 试验),标注还需 Claude Sonnet 4.6 大量判读,总试验数以万计;嵌入检索部分很轻(0.6B 模型单卡可跑)。综合评级中高难度:数据工件与提示词齐全时,分类学与统计流程(固定种子、缓存、无 LLM 的最终聚合)可精确复现,但 LLM 判官随版本漂移,逐轨迹标签无法 bit 级复现;API 成本预计数千美元量级,适合有预算团队复刻核心结论而非全量重跑。