SkillAlchemy: Open-World Agent Skill Creation 精读

论文链接:arXiv:23417 发表时间:2026年8月 机构:北京航空航天大学(复杂关键软件环境全国重点实验室)+ 山东大学(SDU-NTU C-FAIR)+ 西北工业大学——三所高校合作,无企业参与 领域标签:cs.AI / cs.SE(Agent 技能/自进化)

一、论文背景

开放世界技能创建是什么? 给 Agent 一份欠规格的"技能 brief"(如"创建一个操作 lowdb 数据库的技能")和一批异构来源(文档、GitHub 仓库、issue 讨论),让它自动产出一个可安装的技能包(SKILL.md + 参考文件 + 脚本)。这是 Agent 技能生态的"供给侧"问题——SkillsBench 已证明好技能能显著提升 Agent,但谁来量产好技能?官方 skill creator(Anthropic/OpenAI)是第一批尝试。

官方 creator 的两个失败模式(本文先导实验诊断):其一,隐式需求缺失——brief 说"操作 lowdb",但真实使用中还有"不要在迭代中修改正在读取的集合"这类从未写明的操作约束,直接检索来源的 creator 根本不知道它们存在;其二,范围未论证——来源里既有可复用的通用实践,也混着局部细节(硬编码参数、特定仓库的路径假设),creator 一并塞进技能,部署到别处就成了毒药。更危险的是来源注入:恶意来源在文档里埋入 payload,被原样吸进技能后随分发扩散。

核心思路转变:从"把来源内容整理成文档"转为"对来源中的每个候选程序做准入判断"——就像期刊审稿,不是把投稿都排个版,而是判定每条内容能否泛化、适用范围多大、要不要拒稿。

二、论文定位和关联工作

  • 官方 skill creator(Anthropic/OpenAI):检索→起草→打包的直线管线,无准入环节——本文的直接对照(SkillsBench 上 40.6%/42.2% vs 本文 55.8%)。
  • MUSE-Autoskill / OpenSkill:自动化技能生成的前作(47.2%/46.0%)——改进搜索与格式,同样无程序级准入。
  • SkillsBench v1.1:评测标准(87 任务×8 领域,avg@5)——本文在其全量任务上评测,与人工技能直接可比。
  • 同日对照:Signal or Noise(证明 Skill 注入平均负收益)与本文合读的启示——技能质量问题比"要不要用技能"更根本:本文生成的技能过准入门后 +19.9pp vs no-skill,说明被诟病的"Skill 噪声"很大程度是"未准入的 Skill"。

三、问题定义

抽象问题:从异构、不可信、范围混杂的开放来源中,判定"哪条程序性知识可以进入技能、以什么范围(泛化/局部/排除)进入"——即来源接地的程序准入问题。 两个子问题:隐式需求如何发现(来源里没写的约束从哪来)?范围判定需要什么证据(凭什么说一条规则可泛化)?

四、问题解法

三阶段框架:

4.1 隐式需求发现:配对对比探针

把 brief 提升为操作框架后,对来源构造配对采集目标 ⟨d, x, x’⟩——d 是一个因子(数据类型、调用方式、错误处理策略),x/x’ 是只在 d 上不同的两个变体(substitution/boundary/neighbor 三种探针)。核心判据:只有当证据显示"沿 d 改变会改变程序行为"(条件/动作/恢复/验证任一组件变化)时,才记录一条隐式需求。类比 A/B 测试:不是问用户"你觉得什么重要",而是做受控实验看什么真的影响结果。

4.2 证据接地的程序准入

按决策点分组发现(Align+Induce),对每个候选程序构造准入记录,三态判定:General(跨非等价上下文的相容证据支持泛化)、Scoped(仅局部示例,标注限定范围)、Exclude(证据不足或矛盾,拒之门外)。

4.3 技能包编译

按从公共技能语料蒸馏的语法 G_skill 渲染 SKILL.md + references/scripts/assets,不新增内容、不扩大 scope——编译器纪律防止"顺手多写两句"。

五、评估指标与实验证据

主实验(SkillsBench v1.1 全部 87 任务 × 8 领域,4 个 agent-model 配置,avg@5):

技能来源通过率
No Skill35.9%
Anthropic Skill-Creator40.6%
OpenAI Skill-Creator42.2%
OpenSkill46.0%
MUSE-Autoskill47.2%
SkillAlchemy55.8%(971/1740,95% CI [53.5,58.1])
Human-curated54.4%

自动化技能首次比肩人工(+1.4pp,描述性——CI 重叠,诚实标注);超最强自动基线 +8.6pp;超 no-skill +19.9pp。效率同时占优:23.21 分钟/任务(vs OpenSkill 36.37、MUSE 35.21)。

扰动鲁棒性(安全性的决定性证据):3 类注入 × 12 个 payload,SkillAlchemy 技能 0 提升(基线共 9/16 冲突 payload 被提升进技能);下游通过率保持 17-18/20。机制:无证据支持的 payload 内容→Exclude。

消融:去 structured findings -15.7pp(最大)、去 procedure admission -11.4pp、去 requirement discovery -10.0pp、去 grammar -8.6pp——四组件全部必要。

冻结复用:js-to-obj 三变体累计退化仅 -2(其他方法 -2~-5)——准入门带来的耐用性。

六、效果优势的根源解释

baseline 的根本局限:直线管线把"来源内容"当"技能内容",两个失败模式的根源是缺少证据判定环节——隐式需求在来源里没有对应文本(检索不到),局部细节与通用实践在文本形式上无差别(区分不了)。

SkillAlchemy 的机制改变:

  1. 对比探针把"重要性"变成可检验问题:因子 d 影响行为才记需求——解决了"没写出来的约束"的发现问题(约束的痕迹在行为差异里,不在文字里)。
  2. 三态准入把范围判定变成证据问题:General 需要跨上下文相容证据——一条规则要泛化,必须证明它在不同场景下不翻车;这一门同时挡住了注入攻击(payload 没有行为证据支持)。
  3. 因果链:对比发现 → 隐式需求覆盖(官方 creator 缺失的操作约束被补齐)→ 准入过滤 → 泛化安全性(硬编码/局部细节被 Scoped/Exclude)→ 下游 +19.9pp 且注入零传播。

Media 域 -12.0pp 的缺口被如实定位:失败易发阶段的校准参数细节保留不足——诚实披露短板。

七、必要知识反推

  • 领域知识层:Agent 技能的语法与生态(SKILL.md 结构、公共语料的写法惯例——G_skill 从真实技能语料蒸馏);各领域程序性知识的"决策点"结构。
  • 方法论知识层:受控对比实验设计(⟨d,x,x’⟩ 配对是因果推断中"控制其他变量只动一个"的直接应用);软件测试的边界探针(boundary/neighbor 探针源自等价类划分测试思想);准入控制(期刊同行评审/数据治理的准入协议)。
  • 工程知识层:多源异构材料(文档/代码/issue)的对齐与归组管线。

知识融合的关键节点:把软件测试方法学(等价类、边界值分析)移植到"知识准入"——测试是"让程序暴露行为差异",本文是"让来源暴露需求与范围"。工具的迁移比算法的迁移更少见也更值钱。

八、论文中可以提取的通用性灵感

  1. 重要约束的痕迹在行为差异里,不在文本里(机制类)

    • 证据:配对对比探针发现隐式需求,消融去 discovery -10.0pp;官方 creator 因检索不到而缺失。
    • 推广:流程挖掘(从执行日志的差异反推隐式业务规则,比访谈员工更可靠)、用户研究(A/B 行为数据 > 问卷自述)、安全审计(对比"改动前后系统行为"发现未声明的依赖)。
  2. 要泛化就要出示跨场景证据,准入比生成更重要(机制类)

    • 证据:三态准入使注入 payload 零传播、冻结复用退化仅 -2。
    • 推广:知识库建设(一条经验进入公司 wiki 前要求"至少两个项目验证过")、开源依赖引入(准入门槛:多项目使用证据)、AI 生成内容的出版前核验——内容爆炸时代,“守门"比"生产"更稀缺。
  3. 编译器纪律:输出不超出输入证据(机制类)

    • 证据:语法 G_skill 渲染"不新增不扩 scope”,防止生成环节夹带。
    • 推广:报告自动生成(模板只允许引用数据源中存在的事实)、法律文书起草(引用必须可溯源到卷宗)——把"禁止发挥"做成管线约束而非模型自觉。
  4. 自动化追平人工的路径是补齐人工的判断环节,不是堆生成量(范式迁移类)

    • 证据:55.8% vs 54.4%——差距弥合发生在加入"准入判断"后,而非更长生成。
    • 推广:AI 取代初级岗位的正确姿势——先学会岗位中"判断什么该做/不该做"的部分,纯生成部分早已不是瓶颈。