论文一:Trajectory-Guided Fault Localization for Agent Skill Evolution(SkillMorph) 发表时间:2026年10月8日 机构:南京大学(主导,一作 Yu Ge、通讯 Zhong Li 与 Tian Zhang);香港理工大学(Yu Pei,软件工程方向)。纯高校合作,无企业参与 领域标签:软件工程 / 代码 Agent / 技能进化
论文二:Skill-V: Verifiable Self-Evolving Skill Library for Interactive Agents 发表时间:2026年10月8日 机构:厦门大学(一作 Jie Ma 为厦大学生,实习期间完成;通讯 Xiaoshuai Sun);快手技术(工作在快手实习期间完成,多数作者来自快手,负责工程实施);南开大学(参与作者)。典型的「学生实习 + 企业主导工程」合作模式 领域标签:强化学习 / 交互式 Agent / 技能库维护
论文三:One Skill Too Many: How Co-Installed Skills Conflict in Coding Agents 发表时间:2026年10月8日 机构:新南威尔士大学(4 位作者,主导);格里菲斯大学;南洋理工大学;卧龙岗大学。澳/新/新加坡四校纯学术合作。复现包已开源:github.com/ltroin/conflict 领域标签:软件工程实证研究 / 挖掘软件仓库 / Agent 生态
三篇论文互不引用、同日挂出,却像约好了一样分工:SkillMorph 解决「技能内容写错了怎么修」,Skill-V 解决「技能库怎么在增长中不失灵」,One Skill Too Many 解决「多个技能装在一起会不会打架」。合起来是一份完整的技能可靠性报告——从单个技能的缺陷,到技能库的维护,再到技能生态的冲突。
一、论文背景
1.1 Agent Skill 是什么
给 LLM Agent 写过提示词的人都知道:通用的指令永远不够用。每个团队有自己的 PR 格式、发布检查单、安全红线,这些知识靠模型自己是猜不出来的。Agent Skill 就是把这些经验打包成文件的方案:一个目录,入口是一个 SKILL.md 文件,开头几行元数据写清楚「我叫什么、什么时候用我」,正文是自然语言操作指南,旁边可以挂参考文档和脚本。类比来说,技能之于 Agent,就像岗位操作手册之于新员工——模型本身是聪明但不了解你家规矩的通才,技能就是那本「我们这儿的事这么做」的手册。
这套机制 2025 年 10 月由 Anthropic 随 Agent Skills 规范推向开放标准,Claude Code、Codex、Gemini CLI、GitHub Copilot 等主流 Coding Agent 都已支持。技能通过「渐进式披露」工作:启动时只有名字和描述进入系统提示(Claude Code 会把每个技能的描述截断在 1,536 字符),模型觉得任务匹配才加载完整内容。目前生态已经相当庞大:有研究从 20,556 个仓库收集到 138,133 个 SKILL.md 文件,两大市场上有 42,447 个技能。
1.2 繁荣背后的三个可靠性问题
技能本质上是一种新型软件组件——用自然语言写成、由模型执行。既然是软件,软件工程的老三样问题就都来了:
问题一:技能内容有缺陷。 不完整或不适用的指导会让 Agent 采取错误动作,甚至拖垮任务执行。修技能的传统流程是领域专家人工检查 Agent 行为、回溯到出问题的技能内容、迭代修订——成本高、难扩展。现有自动化方法让 LLM 从执行反馈直接生成修订,但「哪些行为有问题」是 LLM 读反馈时隐式决定的,没有显式证据链,改错地方、反复改同一个地方都无从察觉。
问题二:技能库只会长胖。 现有自进化技能库主要靠「增长」改进:失败了就新增技能,但已存储的技能很少随新证据被重新审视。Skill-V 论文一针见血:增长不等于可靠——检索出来的技能可能在当前任务条件下不适用,已有技能的操作边界(什么时候该用、什么时候不该用)可能本来就是错的。可靠的进化不仅要加知识,还要能测试和修订已存知识。
问题三:技能之间会打架。 技能来自四面八方:团队往仓库提交项目技能,开发者在家里目录放个人技能,插件批量带货,还有人整个复制技能集合。两个「干同一件事」的技能很容易被共装,而模型只能凭名字和描述几百个字符做选择。冲突发生时,用户装技能想要的核心功能(比如「禁止碰 git」)可能被顶掉——但任务还是完成了,现有只看任务通过与否的基准对此完全失明。
这三篇论文,正是分别对这三个问题给出目前最系统的回答。
二、论文定位和关联工作
三篇论文处于同一个研究版图的不同角落,梳理它们各自的谱系有助于看清定位。
2.1 技能进化谱系(SkillMorph 的战场)
技能改进方法分两支。技能构建从执行经验中提炼新工件(Voyager 的可执行技能库、Trace2Skill 的轨迹蒸馏等);技能进化则修订已有工件,代表工作包括:SkillOpt(对单个技能文档做 rollout 引导的文本编辑+验证门控)、SkillAdam(类梯度下降的稳定技能更新)、SkillAdaptor(把失败轨迹归因到最早可操作步骤再修订)、EvoSkill(结构化技能文件夹的失败驱动变异+Pareto 前沿选择)、CAP-Evolve(失败诊断-候选生成-验证选择的迭代工作流)。
SkillMorph 与它们的根本区别:先定位、后修订。现有方法让 LLM 从整体反馈隐式猜测改哪里,SkillMorph 则在生成任何修订之前,显式确定编辑点并用行为证据支撑。最接近的先行工作是 ContractSkill(技能表示为带后置条件的有序步骤序列+确定性验证器定位失败步骤),但它假设技能能写成这种结构化形式,通用性受限。SkillMorph 的定位信号借自程序修复领域的经典方法 SBFL(基于谱的故障定位),而同团队此前的 FAMAS 已把 SBFL 用于多智能体系统的失败归因——SkillMorph 是把这条路线从「归因」推进到「修订技能工件」。
2.2 技能库维护谱系(Skill-V 的战场)
外部记忆路线(Reflexion、ExpeL、Voyager)确立了「经验存为可复用文本/代码」的范式;自进化技能学习路线(SkillRL 递归扩展分层技能库、Skill1 联合优化技能选择利用蒸馏、Skill-R1 训练轻量修订器、SkillOS 学习策展器)主要研究技能的获取、信用分配和策展。
Skill-V 的差异点是问了一个更晚阶段的问题:技能进了库之后,它还可信吗? 与两篇并行工作对照:SkillOpt 把单个技能文档当可训练参数做验证门控编辑,研究的是单技能优化;SkillOps(快手之外的另一团队)把技能表示为类型化合约并维护库级别的效用/兼容/风险指标,偏静态管理。Skill-V 则在交互式强化学习设定下让策略和技能库共同进化,学习信号是「rubric 判定与环境结果的分歧」——这是把技能库从「积累范式」推向「维护范式」的明确宣言。
2.3 技能实证研究谱系(One Skill Too Many 的战场)
已有实证研究要么做技能单件检查(大规模安全漏洞分析、可复用性缺陷研究),要么发现「技能越多效果越差」的现象(技能库扩到 202 个平均掉 21 个百分点通过率、Agent 在必须自己选技能时经常加载不到该用的)。工具选择研究(MetaTool、BiasBusters)发现了位置偏见和描述偏见,但只报告选了哪个工具,不报告用户损失了什么。
One Skill Too Many 填补的空白非常明确:首次系统研究「共装的良性相似技能如何冲突」,首次逐条需求度量安装技能的损失,首次定位冲突被决定的时刻并证明在该时刻设卡有效。软件工程界研究包冲突、依赖冲突、特性交互有几十年历史,但那些冲突靠元数据规则就能在安装前检查;技能冲突由模型在运行时用自然语言裁决,是全新的一类组件交互。
2.4 定位总结
| 维度 | 之前的路线 | 这三篇的突破 |
|---|---|---|
| 技能缺陷修复 | LLM 从整体反馈隐式猜测修订点 | SkillMorph:SBFL 式证据聚合显式定位编辑点 |
| 技能库演化 | 失败驱动增长,只加不改 | Skill-V:可证伪合约+证据门控的双向修订 |
| 技能共存研究 | 只看任务通过率或检索准确率 | 冲突研究:需求级 fidelity 指标揭示评估盲区 |
三、问题定义
三篇论文面对的场景不同,但抽象之后共享同一个洞察:技能是自然语言写成的软件,软件工程的经典问题会在技能上重演,经典方法也可以迁移回来。
3.1 SkillMorph:把技能缺陷修复变成故障定位问题
具体问题:如何自动定位技能文档中引发失败行为的缺陷内容并修订?深层结构相似性来自程序修复:APR(自动程序修复)先用通过/失败测试的覆盖差异定位可疑代码,再生成补丁。SkillMorph 建立了精确的类比:
| 程序修复 | SkillMorph 技能进化 |
|---|---|
| 测试用例 | 一次任务执行 |
| 被覆盖的代码实体 | 轨迹中的动作 |
| 失败测试的覆盖 | 失败运行中的动作出现 |
| 可疑语句排名 | 可疑动作排名 |
| 补丁 | 技能修订 |
关键取舍:为什么用动作而不是技能内容作为覆盖实体?因为自然语言指导没有代码的显式执行语义——Agent 整体加载技能文档,是否遵循每条指令由它自己解释,没有「哪段内容被执行了」的可观测概念;而动作在轨迹中直接可观测、跨执行有差异、受技能内容塑造。技能缺陷只能以可疑动作的形式显现,动作是连接结果与技能内容的天然中介。
形式化:给定模型和 harness 固定的 Agent、初始技能集、进化任务集与环数预算,构造修订函数使最终技能集在从未访问过的留出任务集上的期望解决率最大化。
3.2 Skill-V:把技能库演化变成可证伪知识的维护问题
具体问题:Agent 如何在扩展技能库的同时持续测试和纠正已存知识?深层洞察:把技能表示为「版本化、可证伪的合约」,环境结果就不仅能当学习怎么做的反馈,还能当检验库中主张的实验证据。 一个 rubric(执行判据)接受了失败轨迹,说明它太宽松;拒绝了成功轨迹,说明它太严格——分歧即反例。
每个技能 s = (语义意图 φ, 可复用程序 p, 可执行 rubric ρ, 版本 ν)。语义规格定义技能「是什么」,可执行 rubric 让它的操作边界「可证伪」。核心约束:修订只能修边界,不许悄悄替换技能的身份(语义约束受保护)。这就像科学理论的可证伪性——你不能靠重新定义名词来保住一个被实验否证的理论。
3.3 冲突研究:把技能冲突变成可度量的实证问题
具体问题:共装的相似技能对安装技能的核心功能造成什么影响、由什么决定谁被使用、能否被阻止?难点在于冲突的三个隐蔽性:藏在成功背后(两个技能都能完成任务,越可能冲突越看不见)、在视线之外裁决(模型凭几百字符描述选择,不必告诉用户)、在运行时才决定(安装时不存在触发冲突的请求)。
破题的抽象是「核心功能」:从技能文本中提取「一个有能力的模型在没有该技能时通常不会满足、逐字引用自技能文本、可在输出中检查」的需求。一次运行满足适用核心功能(固定为排序前三条)的比例即 fidelity。再按相似技能是否也要求同一行为,把核心功能标为「独占」或「共享」。这个定义精妙在:它把「用户装技能到底买到了什么」变成了可预先冻结、可脚本检查的量,绕开了「任务完成」这个结构性失明的指标。
四、问题解法
4.1 SkillMorph:三阶段证据聚合流水线
SkillMorph 的每个进化环包含三个阶段,外加一个贯穿全程的进化记忆。
阶段一:执行与轨迹抽象。 每个任务独立重复执行 m 次(默认 3 次),保留所有轨迹——成功的运行里可能藏着「引入错误后侥幸恢复」的弱点证据,失败的运行里也可能有有效的中间动作。原始轨迹冗长且措辞不一,无法直接对比,因此用 LLM+层次聚类把每条轨迹解析成统一的状态转移序列(动作-前状态-后状态),让「动作及其效果」成为可跨执行比较的单元。
阶段二:可疑动作定位。 前提是:技能缺陷是技能集的属性,每次执行都共享,因此它诱发的动作会跨独立运行和任务复发;但例行动作(读文件、跑测试)也复发——所以光看复发不够,必须对比动作在「好执行」与「坏执行」中的出现方式,这正是 SBFL 的直觉。三层聚合:
- 单任务分析:同一任务的 m 次运行中统计每个动作的失败/成功覆盖。失败运行中的动作直接计失败覆盖;成功运行中的动作要额外审查——用 LLM 检查该动作前后 h 步的窗口,判断它是否「引入了后来被恢复的错误」(LLM Agent 常自我纠错,同样的错误这次被救回来、下次可能就没救)。是则计失败覆盖,否则计成功覆盖。评分采用 Ochiai 公式:覆盖率(失败运行中多普遍)× 特异性(失败覆盖占总覆盖比例)的几何平均。
- 跨环历史调整:相邻两环之间唯一变化的是技能集(上一环的修订),覆盖计数的变化可解读为修订的效果。失败覆盖下降→修订见效,降权避免反复纠缠;失败覆盖上升→修订无效或引入回归,升权突出。权重用 Yule’s Q 的有界变换平移到以 1 为中性值,避免小计数下的极端比值。
- 跨任务聚合:先按任务做历史调整、再跨任务求和(顺序很重要——先聚合会掩盖不同任务间相反的趋势)。最终对有失败覆盖的候选动作按可疑分排序,取 top-10。
阶段三:编辑点定位与修订。 LLM Agent 递归缩小搜索范围:先根据动作的执行上下文和记录的技能使用锁定相关技能,再检查 SKILL.md 及其引用工件找到相关指导,对比「规定动作与适用条件」和实际动作,输出编辑点(技能+文件+行范围)连同关联证据与理由。一个可疑动作可能横跨多个技能,因此单个编辑点可跨越多份内容——这是「协调修订」的基础。随后每个编辑点生成修订提案(利用编辑点内容、动作上下文、修订历史三方面信息),再用思维链提示让 LLM 从证据强度、与现有内容的重复/冲突、对成功执行和既往有效修订的风险三方面评估,筛出高价值提案合并成一个补丁应用。
论文用 mcp-builder 技能给了一个完整例子:文档查询任务中 Agent 通过连接 B 查询连接 A 导入的数据(内存 SQLite 数据库对连接私有,查询报「no such table」);笔记管理任务中 Agent 自测后用 SIGTERM 停服、从不检查「输入关闭时关库」。两个问题动作都跟着对 reference/node_mcp_server.md 的读取,SkillMorph 把它们都追溯到该工件,加上 SKILL.md 缺少 Inspector 不可用时的回退测试方案,三处协同修订——只改任何一处都会留下不完整的指导。留出的任务 3 验证了修订修复的是指导本身而非过拟合两个进化任务。
4.2 Skill-V:合约化技能 + 双信号演化 + 证据门
合约结构。 每个技能存为版本化四元组。可执行 rubric 包含适用条件 A 和加权行为判据 C(必备步骤、禁止行为、前置/后置条件、终止条件),部分判据为硬约束(违反即整体不通过)。判据用受限的声明式算子(字面匹配、正则、ALFWorld 的事件序列/计数监视器)落地在任务、动作、观察上——策略的思考被严格排除,防止「计划了但没执行」的动作欺诈性地满足判据。系统从不执行模型生成的代码。
双信号演化。 每 F=5 个训练步做一次库更新:任务失败→LLM 更新器分析失败轨迹提议新技能(语义形态立即可用,rubric 待编译);同时诊断所有适用合约,rubric 判定(加权分 ≥ η=0.7 且无硬约束违反)与环境结果对比,四种情况各有含义:判过+任务败=太宽松,判败+任务成=太严格,双双一致=支持性/一致性证据。
Evidence Gate。 修订提案绝不直接生效。每个技能维护一个有界回放缓冲(适用轨迹证据池),把 rubric 判过/判败当作对环境结果的预测,算三个统计量:总体分歧率 Disc、成功轨迹上的假阴性率 FNR、平衡准确率 BAcc。候选修订必须在三个指标上全部非回退(Disc′≤Disc、FNR′≤FNR、BAcc′≥BAcc),且保持非空执行支持、满足合约 schema、逐字复制所有受保护语义约束;若改动硬判据,至少一个指标须严格改善。通过则提交为新版本(原地替换,不增加库规模),否则保持现状。
适用性感知使用。 推理时先语义检索扩大的候选池(预算的 2 倍),LLM 裁判对每个候选给出 APPLICABLE / NOT APPLICABLE / UNCERTAIN 加置信度——只有高置信(>0.8)的「不适用」才剔除,保守规则保留不确定但可能有用的技能。训练中该裁判把 29.6% 的检索候选判为高置信不适用,说明语义相似度经常捞出误导策略的无关技能。
附录里的两个真实修订案例很能说明机制:数量任务中合约放过了只拿一个目标物体的失败轨迹(Disc 0.400→0.100,修订为要求「对不同物体 ≥2 次 take 事件」的硬计数判据);成功轨迹包含一对相同的连续动作却被旧循环检测器判败(FNR 1.000→0.667,放宽为「三次相同动作才触发」)。一紧一松,边界在两个方向上被校准。
4.3 冲突研究:三段式实证设计
这是一篇重实证设计的方法论范本,全流程如图:安装重建→配对挖掘→案例构建→受控运行。
安装重建。 从 20,947 个仓库的完整快照(按 commit 哈希钉死,防止仓库事后改写)重建 Claude Code 会加载的技能共 55,698 个、5,106 份安装清单。A 池为实际安装的 63,104 个技能(按近重复族去重后 43,986 族),B 池为「用户可能从别处添加」的 172,750 个技能。
配对挖掘。 用模型选择技能时真正看到的文本(名字+描述)做嵌入检索(Qwen3-Embedding-0.6B),每个安装技能取最相似的 10 个候选,共 822,109 对候选。GPT-6 Astra 做配对法官(读描述判可否路由、读正文判是否同活)。关键校准:相似措辞不等于同活——描述相似度低于 0.9 的区段里只有 10%–37% 的跨项目对被确认,所以嵌入相似度不能替代法官。分层随机抽样 3,754 对,确认 1,639 对(复判 κ=0.93,双人独立验证)。
核心功能提取。 提取器逐技能单独工作(绝不见搭档、不见任何运行),列出同时满足三性的需求:独特(有能力的模型无此技能时通常不会满足)、逐字引用、可在输出中检查。按措辞强度(MUST/NEVER > SHOULD > 平叙)、与技能主旨的贴近度、是否落在交付物或安全上排序,最多保留 10 条。3,115 个技能共提取 26,198 条,平均 8.4 条/技能。第二遍把 A 的每条核心功能对照 B 的全文标为独占(B 不要求同一行为)或共享——实验对中 73% 为独占。
受控运行。 312 对(六格:跨/项目内 × 规范/能力/带脚本)× 3 模型(Sonnet 4.6 / Haiku 4.5 / Opus 5)× 7 配置:仅 A、仅 B、A+B、交换列表顺序、B 移入个人域、B 移入插件域、A+无关技能 C(C 的描述相似度 ≤0.435 中位数、长度相当、列表同侧)。每对配一个共享案例:GPT-6 Astra 起草任务请求(陈述目标和事实、绝不提技能名或其措辞)、≤15 文件的起始仓库、每条核心功能的适用性和检查脚本。全部 6,368 次运行(含守卫实验与重复运行)、169,294 次工具调用、542 小时、约 5,550 美元。所有 LLM 辅助步骤(仓库分型、配对确认、技能标注、核心功能提取、输出裁决)都被两名人类标注员在随机样本上独立验证(Krippendorff’s α 全部 ≥0.71)。
守卫实验。 定位每次运行中「首次读取某技能」的时刻(首次 Skill 工具调用或读其目录文件),对主实验中先开 B 的 187 个对-模型组合做随机顺序的加/不加 hook 对照:hook 拒绝对 B 的首次读取(A 尚未读时)并提示用 A,不点名任何核心功能。
五、评估指标与实验证据
5.1 SkillMorph:双基准 + 四基线 + 工业部署
指标体系:pass@3(3 次独立试验至少 1 次通过的任务比例,衡量覆盖)、pass3(3 次全过的比例,衡量一致性)、trial 准确率(单次试验成功率)。设计意图明确:pass@3 与 pass3 的差距就是「随机性」,技能进化的核心收益应该体现在一致性上。
主结果(SWE-Skills-Bench:49 技能 × 双向对折共 490 任务;CannBot:12 技能 AscendC 内核生成,NPUKernelBench 15 留出任务):
| 方法 | SWE pass@3 | SWE Trial | SWE pass3 | CannBot pass@3 | CannBot Trial | CannBot pass3 |
|---|---|---|---|---|---|---|
| 原始技能 | 82.45 | 75.44 | 67.96 | 80.00 | 66.67 | 46.67 |
| SkillOpt | 88.98 | 84.90 | 80.41 | 80.00 | 71.11 | 53.33 |
| CAP-Evolve(最强基线) | 92.24 | 89.39 | 84.90 | 93.33 | 84.44 | 73.33 |
| SkillMorph | 95.51 | 92.24 | 88.37 | 93.33 | 93.33 | 93.33 |
相对原始技能:SWE pass@3 +15.84%(相对)、pass3 +30.03%(相对);CannBot pass3 翻倍(46.67→93.33,+100%)。对最强基线 CAP-Evolve:SWE 多解 16 题(+3.27pp),pass3 领先 3.47–13.88pp;CannBot 上 pass@3 打平(14/15)但 pass3 领先 20–40pp——覆盖追平后,一致性的差距才是机制的差异所在。
回归分析(实验设计的亮点):SWE 任务级 126 改善/9 回归(CAP-Evolve 122/36),原始 333 个全过任务上 SkillMorph 保持 98.20% 一致通过(CAP-Evolve 92.79%);98 个技能实例级 60 改善/5 回归(基线改善 31–54、回归 11–19)。
消融:Single-run(每任务只执行 1 次)对 pass@3 伤害最大(SWE −5.31pp、CannBot −13.33pp);去掉编辑点定位对 pass3 伤害最大(−6.12pp / −33.33pp);去掉历史调整伤害最小。结论:重复执行主要贡献覆盖,显式定位主要贡献一致性。每环成本 49 分钟(SWE)/ 127 分钟(CannBot),其中框架分析部分两基准几乎相同(28.8 vs 29.0 分钟),差异全在代码 Agent 执行本身。
工业部署:与 AI 算子开发团队合作的 63 个算子上提交 6 个技能修订 PR 全部被接受;双技能都能通过 correctness 的任务平均完成时间从 123.63 降到 72.81 分钟(−41.11%);1,788 次设备级测量中 44.18% 的生成内核匹配或超过官方参考实现性能。
5.2 Skill-V:双环境 + 消融链 + 冻结策略归因
主结果(与 SkillRL/Skill1 同协议;策略 Qwen2.5-7B-Instruct + GRPO):
| 方法 | ALFWorld 成功率 | WebShop 得分 | WebShop 成功率 | 库规模 |
|---|---|---|---|---|
| GRPO | 77.6 | 79.3 | 66.1 | — |
| SkillRL | 89.9 | 85.2 | 72.7 | — |
| RetroAgent | 94.9 | 88.9 | 82.3 | — |
| Skill1 | 97.5 | 89.7 | 82.9 | 5,000 |
| Skill-V | 95.3 | 92.5 | 85.9 | 约 200 |
三个读数:对 GRPO +17.7pp / +19.8pp 说明外部可进化知识超越纯策略优化;对 Skill1 在 ALFWorld 略低 2.2pp 但 WebShop 高 3.0pp、且库规模不到其 4%(约 200 条 vs 5,000 条容量)——紧凑性与性能可以兼得;Look/Clean/Heat 三个子任务 100%,反超 Skill1。
冻结策略消融(把收益归因到库而非策略参数):固定训练终点策略,仅换外部知识——无技能 78.59% → 初始库 88.99% → 完整进化库 95.30%。最后那 +6.31pp 只能来自修订后的库内容,排除了「收益藏在策略参数里」的解释。
机制消融链(每环都打掉一个候选解释):仅技能获取 68.8%、仅失败驱动修订 67.2%(vs 完整 95.3%,差 ≥21.9pp)——双向边界校正缺一不可;去 Evidence Gate 75.0%(46 个提交修订中 9 个在回放指标上回归)——门控价值 20.3pp;去 LLM 适用性裁判 89.1%、纯语义检索 71.9%——分层过滤各层贡献可分离;加 rubric 过程奖励反而 −1.5pp(93.8%)——排除了「收益来自密集奖励整形」的替代假说。这类逐个假说排除的消融设计是论文严谨性的核心证据。
库演化统计:ALFWorld step-150 时 205 条(净增 150 全来自新技能,10 个修订原地替换不增条目)、WebShop 153 条、接受修订 14 个;checkpoint 诊断显示 rubric-结果分歧率仅 0.033。
5.3 冲突研究:五个发现
发现 1(普遍性):23.5%(95% CI [21.2%, 25.7%],约 10,100 族)的已安装技能在同一安装清单里已有同活技能;63.7%(约 26,100 族)存在其他作者的同活技能;复制整个技能集合的 489 个项目中 37% 的技能有同活搭档(其他项目 19%)。
发现 2(类型):冲突对中 60%(跨项目)/56%(项目内)涉及规范类技能,31%/35% 能力类,约 9% 带脚本。
发现 3(影响):共装 B 使 A 的使用率降 19.9pp(无关技能 C 仅 −5.9pp,差异 14.0pp 来自「同活」本身);任务完成率 +1.9pp(CI [−1.0, +4.9] 含 0,不降);A 的 fidelity 降 2.6pp、独占核心功能降 5.6pp(共享 +0.1pp 无变化)。机制分解:12.1% 的运行只用 B(替代)、38.0% 两者都不用(vs 仅 A 时 30.3% 不用)、替代承载 36% 的损失、两者都不用 45%、真正用了 A 的干扰仅 20%。对照检查:仅 B 时 fidelity 比仅 A 低 11.0pp,独占功能低 16.1pp——fidelity 指标确实能区分两个技能。
发现 4(选择与披露):装在哪决定谁运行——B 放个人域则 A 从 243 份列表中全部消失(使用率 −35.0pp),但模型仍在 29.2% 的运行中直接读 A 的文件(压制不完整);B 放插件域仅 2.9% 被用(A 使用率只 −6.2pp vs 项目域 −16.9pp)。列表顺序几乎不影响(+0.6pp),给 B 改名反而 +4.4pp。替代几乎从不披露:B 顶掉 A 的 113 次运行中,最终回复点名所用技能的仅 0.9%,说存在多个合适技能的 0%,请用户选择的 0%。
发现 5(决策点与守卫):同对同模型下先开 B 使 A 的独占功能 fidelity 降 9.4pp(Haiku 4.5 最重 −22.1pp,Opus 5 不显著——它常把两个技能都读了);97% 的先开 B 运行发生在改任何文件之前。守卫实验:hook 拒绝首次读 B 后模型 96% 切换到 A(Opus 5 达 99%),独占功能 fidelity +9.1pp,完全恢复到先开 A 的水平(被重定向的运行与天然先开 A 的运行差 0.0pp),任务完成 +4.1pp 不降。首次读取既是冲突被决定的点,也是能被阻止的点。
跨平台检验:Codex 上用 gpt-5.5/gpt-5.6 复现 193 对,使用率 −18.2pp、fidelity −3.4pp,与 Claude Code 的 −20.1/−4.6 规模相当——结论不绑定单一平台。
六、效果优势的根源解释
本部分为三篇论文分别建立「方法差异→机制变化→指标提升」的因果链,并做交叉印证。标注为【论文实验】的环节有直接实验证据,标注为【推测】的为阅读者提出的机制假设。
6.1 SkillMorph:显式定位改变了修订的信息基础
对比对象:四个基线都让 LLM 从执行反馈(任务结果、分数、整条轨迹)隐式决定改哪里。
baseline 的根本局限:隐式归因没有「问题行为与待改内容」的显式链接,产生两个机制性后果——修订容易改到「看起来相关」而「真正引导了失败动作」的内容原封不动;早期修订无法在问题复发时被重新评估(历史只记分数不记行为-编辑区关联),于是同一内容被反复修改或回归不被察觉。
因果链:
- 动作级覆盖对比(Ochiai + 错误恢复检测)把「随机行为」与「技能缺陷」从统计上分开——缺陷动作跨运行跨任务复发且集中于失败覆盖【论文实验:Single-run 消融掉 m=3 重复执行后 pass@3 掉 5.31/13.33pp,证明重复执行的证据分离作用】。
- 编辑点显式定位使修订只改真正引导了可疑动作的内容,且每个修订带可检验的理由【论文实验:w/o Localization 使 pass3 掉 6.12/33.33pp——定位对「一致性」而非「覆盖」的贡献模式,与机制预测吻合】。
- 协调修订消除了「改一处、别处仍错」的残留问题【论文实验:回归分析 9/490 任务回归 vs CAP-Evolve 36/490;mcp-builder 案例显示三处必须同改】。
- 三层汇总起来:一致性收益(pass3 相对 +30%~+100%)远大于覆盖收益(pass@3 相对 +16%)——正是「消除重复失败与回归」这一机制的指纹。
交叉印证:SBFL 的「失败/成功覆盖对比定位可疑实体」在传统软件工程有几十年有效性积累(Wong 等 IEEE TSE 综述);FAMAS 已证明该原理在多智能体失败归因中有效。SkillMorph 是同族方法向「可修订工件」的延展——方法相似且结论方向一致。反方向证据也需注意:SkillMorph 自己的 Lessons Learned 承认跨任务进化后仍有 21 个任务在双向实验中始终失败,任务特异性反馈可能是必要补充——显式定位不是万能药,它解决的是「持续性缺陷」,不管「任务特定阻塞」。
6.2 Skill-V:合约化让环境成为已存知识的检验者
对比对象:增长式技能库(Skill1 等)——失败加新技能,已存技能不被质疑。
baseline 的根本局限:没有可执行的判据,就没有「已存知识与新证据冲突」的可检测信号。库越大,错误边界(太宽放进无效行为、太窄排除有效策略)的绝对数量越多,而系统对这些错误结构性地失明——只能靠库膨胀的覆盖率对冲。
因果链:
- 技能带上可执行 rubric 后,每次交互都自动产生「库的主张 vs 环境裁决」的对照,分歧即反例——环境从「学习材料」升级为「检验仪器」【论文实验:rubric-结果分歧驱动了全部 24 个接受修订(ALFWorld 10 + WebShop 14),两个案例展示一紧一松的双向校准】。
- Evidence Gate 把「反例驱动的修订」约束为历史证据上的非回退改进,阻断破坏性修订【论文实验:去门控后 46 个提交修订中 9 个回归、成功率掉到 75.0%;完整版 10/10 通过全门且零指标回归】。
- 语义检索与适用性判断分离,高置信不适用技能被剔除,防止无关技能误导策略【论文实验:裁判剔除 29.6% 候选;纯语义检索只有 71.9%】。
- 汇总:冻结策略消融(78.59→88.99→95.30)证明收益按「初始知识→修订后知识」分层存放在库中;紧凑库(200 条)+ 双向修订替代了膨胀库(5,000 条)的覆盖率对冲,故性能与紧凑性同时改善。
反事实与边界:加 rubric 过程奖励 −1.5pp 排除了奖励整形解释【论文实验】。局限:合约判定是离散文本判据,视觉/连续控制环境需新机制;只能收紧错误技能的使用而不能删除根本性坏策略(论文自认需补显式删除机制);环境规则漂移时历史回放证据会过时(作者建议时间加权衰减,属【推测】性质的未验证方向)。与 SkillOps 并行工作同样采用「合约」表征但报告库级管理指标——两支独立工作收敛到「技能需要合约化」这一表征层改变,构成结论的相互支持(方法相似+结论相近,但任务设定不同,不能互为因果证明)。
6.3 冲突研究:损失发生在「选择机制」而非「能力层面」
因果链:
- 模型仅凭名称+描述(截断 1,536 字符)选择技能,相似技能共享描述→选择变成抛硬币→38.0% 的运行两个都不用、12.1% 只用 B【论文实验】。
- 任一同活技能都能完成任务(这正是它们相似的原因),所以任务完成率不降(+1.9pp CI 含 0)——但只有 A 要求的行为(73% 的核心功能为独占)随之丢失【论文实验:独占 −5.6pp vs 共享 +0.1pp 的精确分离】。
- 损失的绝大部分来自「没用 A」(替代 36%+都不用 45%),而非「用了 A 但被干扰」(20%)【论文实验】——这排除了「指令打架」作为主因,把问题定位在选择环节。
- 选择在首次读取技能文件那一刻实质锁定(此后文件才开始变化,97% 的先开 B 运行未改任何文件),所以在该点设卡即可拦截【论文实验:hook 拒读 B→96% 切换、fidelity 完全恢复】——决策点定位与守卫实验构成「观察→干预」的完整因果验证。
为什么此前没人发现:评估指标的结构性失明。SWE-Skills-Bench 发现 49 个技能中 39 个不提升通过率——反过来,丢掉这样的技能也不会降通过率,所以「任务通过」这个指标对技能损失天然免疫。fidelity(需求级、预先冻结、脚本可查)补上了这个洞。这与 BiasBusters 报告的工具选择位置偏见形成互补:他们报告「选了谁」,本文报告「用户丢了什么」。
三篇互证:Skill-V 的适用性裁判(29.6% 高置信不适用被剔除)从库内检索侧、SkillMorph 的技能使用记录(动作→技能的追溯)从修订侧、冲突研究从共装侧,分别证实了同一个机制判断——语义相似度不足以裁决技能适用,必须引入额外证据(适用性判断/行为证据/安装域)。三篇独立工作在「技能选择需要超越描述相似度的信号」上收敛。
七、必要知识反推
假设让一个完全没有背景的人重做这三项工作,最少需要哪些知识?
7.1 领域知识层
- Agent Skill 机制细节:渐进式披露、SKILL.md 结构、安装域(企业/个人/项目/嵌套/插件)与同名覆盖规则、1,536 字符截断、listing 上限。不理解「模型选择时只能看到描述」就无从理解冲突为何隐蔽(SkillMorph 的技能使用追溯、冲突研究的全部实验设计都建立在这上面)。
- LLM Agent 的随机性与自我纠错:同任务多次运行结果不同、成功运行中藏着被恢复的错误。这是 SkillMorph 重复执行与错误恢复检测的前提——不区分「缺陷」与「偶然」,修订会拟合噪声。
- 交互式 RL 基础:GRPO、策略与外部知识的区别(参数内 vs 参数外)。Skill-V 的核心论证(冻结策略后库仍带来 +6.31pp)依赖能干净地分开这两个知识存放处。
7.2 方法论知识层
- 基于谱的故障定位(SBFL)与自动程序修复:Ochiai 公式、失败/成功覆盖对比、「先定位后修补」范式。SkillMorph 的每一步设计都是这个类比的展开。
- 科学方法论的可证伪性:理论必须能被观察否定。Skill-V 的「技能=可证伪合约」直接是波普尔式架构——rubric 是可检验预言,环境结果是裁判,Evidence Gate 是「新理论必须解释旧理论解释过的一切」(非回退约束)。
- 实证研究方法:分层抽样与置信区间、配对对照设计、LLM 法官的校准(位置敏感、相似度召回下限)、Krippendorff’s α 信度、Holm 多重比较校正、预注册式的指标冻结(核心功能在任何运行前提取固定)。冲突研究的可信度全靠这套统计纪律。
- 终身学习与灾难性遗忘:Skill-V 把 Evidence Gate 定位为对遗忘问题的外部记忆版回应。
7.3 工程知识层
- 声明式检查算子设计:字面匹配/正则/事件计数监视器的表达能力边界;「绝不执行模型生成的代码」「思考不入证据」这类安全约束的工程落地。
- 大规模实验基础设施:542 小时、169,294 次工具调用的编排;按 git objectid 钉死快照防仓库漂移;隔离容器与凭证管控。
- 技能演化系统的成本核算:SkillMorph 报告每环 49/127 分钟与组件级分解——进化系统必须对自己的开销诚实。
7.4 知识融合的关键节点
三篇论文各自都有一个「化学反应」时刻:SkillMorph 把 SBFL 的「覆盖实体」从代码语句换成动作(因为自然语言没有执行语义)——这一换让整个经典工具箱得以迁移;Skill-V 意识到 rubric 判过/判败可以当作对环境结果的预测来打分(Disc/FNR/BAcc 是分类器指标)——这一换让「技能修订」变成可回放验证的分类器升级;冲突研究把「用户买到了什么」抽象为预先冻结的需求清单——这一换让不可观测的「功能丢失」变成可脚本检查的量。三次融合的共同模式:把一个领域的评价框架嫁接到另一个领域的对象上。
八、论文中可以提取的通用性灵感
灵感一:先定位、后修改——证据链先于编辑。 核心思想:任何自动修订系统(代码、文档、提示词、策略配置)都应先显式确定「改哪里」并留下可检验的理由,再生成修改。论文证据:SkillMorph 去掉定位后 pass3 掉 6.12–33.33pp;带定位理由的修订在问题复发时可被重新评估,回归率 9/490 vs 基线 36/490。推广场景:自动化提示词优化(先定位哪段指令引发失败再改)、RAG 知识库纠错(先定位错误 Chunk)、自动化运维脚本修复、AI 法规/政策文档的版本间影响分析。
灵感二:把存储的知识变成可证伪的预言。 核心思想:让每条持久化知识附带可执行的检验判据,新证据与判据分歧时触发定向修订,修订必须通过历史非回退门。论文证据:Skill-V 的 Evidence Gate 价值 20.3pp(75.0→95.3);双向修订(收紧+放宽)缺一不可(单向只有 67–69%)。推广场景:推荐系统的策略规则库(判据=预期用户行为)、医疗决策支持系统的诊疗规范(判据=预期检查结果)、机器人技能库、金融风控规则池(反例=规则漏报误报的真实案例)。
灵感三:任务通过 ≠ 需求满足——评估要对「独占贡献」敏感。 核心思想:当多个组件都能完成表层任务时,整体通过率对单个组件的损失结构性失明;应度量每个组件的独占需求完成度。论文证据:共装相似技能使任务完成 +1.9pp(不降)但独占核心功能 −5.6pp;SWE-Skills-Bench 49 技能中 39 个不提升通过率,丢失也不降低通过率。推广场景:微服务依赖健康度(某服务挂了网关仍返回 200)、团队流程合规审计(结果对但绕过了必经审批)、模型融合系统中单个专家的贡献审计、教育测评(答对了但没用到要求的方法)。
灵感四:干预要打在「决策时刻」上。 核心思想:复杂系统的冲突往往在一个早期不可逆的时刻被锁定,找到它比全程监控便宜得多。论文证据:97% 的技能冲突在改文件前决定;首次读取处的一个 pre-tool hook 以 96% 的切换率完全恢复 fidelity。推广场景:代码评审中首个引入缺陷的 commit 卡点、多 Agent 系统的首条路由决策守卫、供应链攻击的首次加载拦截、人机协作中的初始方案选择确认。
灵感五:膨胀不是可靠的替代品——维护范式优于积累范式。 核心思想:用数量对冲质量问题的系统会持续膨胀且错误累积;给每条知识装上边界与检验,小而准优于大而糙。论文证据:Skill-V 用 200 条库打到 5,000 条库同级以上的性能(WebShop +3.0pp);冲突研究显示复制大集合的项目 37% 技能有同活搭档——盲目囤积正是冲突的温床。推广场景:个人笔记系统的定期证伪回顾、企业知识库的淘汰机制、提示词工程的少即是多、上下文工程的紧凑性优先。
灵感六:经典软件工程工具箱可以整体迁移到自然语言工件上,但要换对「实体」。 核心思想:故障定位、合约化设计、依赖冲突分析这些成熟方法迁移到 LLM 时代的新型软件(提示、技能、Agent 配置)时,关键是找到新域中对应「代码语句」「测试覆盖」的可观测实体。论文证据:SkillMorph 用「动作」对应「语句」、Skill-V 用「rubric 判定」对应「测试断言」、冲突研究用「核心功能」对应「API 特性覆盖」(Decca 的思路),三次迁移全部成立。推广场景:把类型系统迁移到工具描述、把死代码消除迁移到提示词剪枝、把 CI/CD 门禁迁移到 Agent 发布流水线。
这三篇论文放在一周之内出现,本身就是一个信号:Agent Skill 生态的「跑马圈地」阶段结束了,「精耕细作」阶段开始了。当自然语言成为新的编程语言,软件工程一百年攒下的纪律——测试、定位、合约、依赖管理、需求追溯——正在被逐一重新发明。区别只在于:这次的「编译器」是一个会犯错也会侥幸成功的概率模型,所以每一条纪律都要为随机性和不确定性重新设计。理解了这一点,再看这三篇论文,看到的就不是三个孤立的技巧,而是同一门新学科的三块基石。