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 Skill | 35.9% |
| Anthropic Skill-Creator | 40.6% |
| OpenAI Skill-Creator | 42.2% |
| OpenSkill | 46.0% |
| MUSE-Autoskill | 47.2% |
| SkillAlchemy | 55.8%(971/1740,95% CI [53.5,58.1]) |
| Human-curated | 54.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 的机制改变:
- 对比探针把"重要性"变成可检验问题:因子 d 影响行为才记需求——解决了"没写出来的约束"的发现问题(约束的痕迹在行为差异里,不在文字里)。
- 三态准入把范围判定变成证据问题:General 需要跨上下文相容证据——一条规则要泛化,必须证明它在不同场景下不翻车;这一门同时挡住了注入攻击(payload 没有行为证据支持)。
- 因果链:对比发现 → 隐式需求覆盖(官方 creator 缺失的操作约束被补齐)→ 准入过滤 → 泛化安全性(硬编码/局部细节被 Scoped/Exclude)→ 下游 +19.9pp 且注入零传播。
Media 域 -12.0pp 的缺口被如实定位:失败易发阶段的校准参数细节保留不足——诚实披露短板。
七、必要知识反推
- 领域知识层:Agent 技能的语法与生态(SKILL.md 结构、公共语料的写法惯例——G_skill 从真实技能语料蒸馏);各领域程序性知识的"决策点"结构。
- 方法论知识层:受控对比实验设计(⟨d,x,x’⟩ 配对是因果推断中"控制其他变量只动一个"的直接应用);软件测试的边界探针(boundary/neighbor 探针源自等价类划分测试思想);准入控制(期刊同行评审/数据治理的准入协议)。
- 工程知识层:多源异构材料(文档/代码/issue)的对齐与归组管线。
知识融合的关键节点:把软件测试方法学(等价类、边界值分析)移植到"知识准入"——测试是"让程序暴露行为差异",本文是"让来源暴露需求与范围"。工具的迁移比算法的迁移更少见也更值钱。
八、论文中可以提取的通用性灵感
重要约束的痕迹在行为差异里,不在文本里(机制类)
- 证据:配对对比探针发现隐式需求,消融去 discovery -10.0pp;官方 creator 因检索不到而缺失。
- 推广:流程挖掘(从执行日志的差异反推隐式业务规则,比访谈员工更可靠)、用户研究(A/B 行为数据 > 问卷自述)、安全审计(对比"改动前后系统行为"发现未声明的依赖)。
要泛化就要出示跨场景证据,准入比生成更重要(机制类)
- 证据:三态准入使注入 payload 零传播、冻结复用退化仅 -2。
- 推广:知识库建设(一条经验进入公司 wiki 前要求"至少两个项目验证过")、开源依赖引入(准入门槛:多项目使用证据)、AI 生成内容的出版前核验——内容爆炸时代,“守门"比"生产"更稀缺。
编译器纪律:输出不超出输入证据(机制类)
- 证据:语法 G_skill 渲染"不新增不扩 scope”,防止生成环节夹带。
- 推广:报告自动生成(模板只允许引用数据源中存在的事实)、法律文书起草(引用必须可溯源到卷宗)——把"禁止发挥"做成管线约束而非模型自觉。
自动化追平人工的路径是补齐人工的判断环节,不是堆生成量(范式迁移类)
- 证据:55.8% vs 54.4%——差距弥合发生在加入"准入判断"后,而非更长生成。
- 推广:AI 取代初级岗位的正确姿势——先学会岗位中"判断什么该做/不该做"的部分,纯生成部分早已不是瓶颈。