当前位置: 首页 > news >正文

Skill:是什么、何时用、怎么封装

一文讲透 Skill:是什么、何时用、怎么封装

这篇文章用一个完整的 Skill 示例代码,带你搞懂 Skill 解决了什么问题、什么时候该用、以及 frontmatter + 渐进式披露(Progressive Disclosure)的核心实现逻辑。


一、Skill 解决了什么问题

核心是解决“能力无法沉淀、复用和按需加载”的问题,具体对应四个痛点:

痛点Skill 的解法
Prompt 每次重写、无法复用把指令 + 流程打包成可复用的资产
全量塞进 system prompt,浪费上下文渐进式披露:元数据常驻、正文按需加载
工具只有"原子操作",缺流程编排Skill 提供多步流程 + 工具组合的编排
专家知识散落在人脑 / 文档里,难传递把领域知识 + 最佳实践固化成包

一句话总结:工具解决"能不能做",Skill 解决"怎么做得专业、且能反复做"。


二、什么情况下需要用到 Skill

判断标准:重点看是否有“复用”“知识沉淀”价值。

该用 Skill 的场景

  • 某类任务高频反复执行,每次都要走一套固定流程
  • 需要多步骤、有顺序、有判断,不是一次函数调用能搞定
  • 需要领域知识 + 多个工具组合,纯 prompt 写太长或每次重写浪费
  • 需要跨项目 / 跨团队复用,把专家经验固化下来
  • 上下文窗口有限,希望能力按需加载而非常驻

不该用 Skill(用 Tool 就够)

  • 单次、一次性的原子操作(查个天气、发个请求)
  • 没有知识沉淀价值的简单调用
  • 逻辑简单到一句 prompt 就能说清

一句话判据:“这个能力会不会被反复使用?要不要把经验传下去?” 两个都是 Yes 才上 Skill。


三、Skill 封装的技巧(实操层)

结合主流 Agent Skills(如 Claude Skills)的真实机制,关键技巧如下:

  1. 统一入口 + 元数据(SKILL.md + frontmatter)
    每个 Skill 一个目录,入口文件用 YAML 头写namedescription。name / description 是"广告位",正文是"说明书"。

  2. 渐进式披露(最核心的技巧)

    • 元数据(name + description)始终常驻上下文 —— 便宜
    • 完整指令正文只在被触发时加载—— 贵,用到才给
    • 这样 Agent 能"知道有什么能力",又不浪费 token
  3. description 写"何时用",不写"是什么"
    description 里写清触发条件(“当用户想生成 PPT 时”),而不是能力清单。目的是让 Agent自动判断什么时候该加载它。

  4. 资源随包携带
    Skill 目录里带脚本(scripts/)、参考文档(reference/)、模板(assets/)。正文只引用,不内联大段内容。

  5. 单一职责 + 可组合
    一个 Skill 只干一类活;Skill 内部可以调用工具(包括 MCP 工具)甚至其他 Skill,形成分层。

  6. 可版本化、可分发
    Skill 本质是文件 / 目录,能进 git、能分享、能做版本管理,让"能力"像代码一样被工程化管理。


四、完整示例:目录结构 + SKILL.md(含 frontmatter)

4.1 目录结构

skills/ └── video-downloader/ # 一个 Skill = 一个目录 ├── SKILL.md # 入口:frontmatter 元数据 + 正文指令 ├── scripts/ │ └── fetch_video_info.py # 可执行脚本(资源) ├── reference/ │ └── yt-dlp-cheatsheet.md # 参考文档(资源) └── assets/ └── config.example.json # 模板 / 配置(资源)

4.2 SKILL.md 完整示例

--- name: video-downloader description: 当用户需要下载视频、提取音频或查询视频信息时使用。 触发场景:用户提到"下载""视频""音频""yt-dlp""B站""YouTube"等关键词。 不要在没有明确下载意图时使用。 --- # 视频下载技能 你负责把用户给的视频链接下载到本地,或提取音频。 ## 使用前必读 先读取 `assets/config.example.json`,了解默认输出目录、格式等参数。 ## 标准流程 1. 先运行 `scripts/fetch_video_info.py <url>` 拿到视频标题、可用格式、时长。 2. 把可选清晰度 / 格式列给用户确认(不要擅自选最高清)。 3. 确认后执行下载命令。 4. 校验文件是否生成、大小是否合理。 ## 平台差异 不同平台的参数、限速、是否需要 Cookie,见 `reference/yt-dlp-cheatsheet.md`。 遇到报错先去该文档查对应平台的处理方式。 ## 注意事项 - 不要下载版权受限内容,先提醒用户确认授权。 - 大文件要提示磁盘空间。

关键点:frontmatter 里的description写的是"何时用 / 何时不用"(触发条件),不是能力清单。这样 Agent 才能自动判断该不该加载它。


五、渐进式披露的实现逻辑

核心:三层加载,越靠后越重,用到才加载。

// 1) 解析 frontmatter:只提取 name + descriptionfunctionparseFrontmatter(md){constm=md.match(/^---\n([\s\S]*?)\n---/);constmeta={};for(constlineofm[1].split("\n")){const[k,v]=line.split(":").map(s=>s.trim());if(k)meta[k]=v.replace(/^["']|["']$/g,"");}returnmeta;}// 2) 启动时:遍历所有 Skill,只收集「元数据」(便宜,常驻)functioncollectSkillMetadata(skillsDir){constskills=[];for(constdiroflistDirs(skillsDir)){constmd=readFile(`${dir}/SKILL.md`);constmeta=parseFrontmatter(md);skills.push({name:meta.name,description:meta.description,// 只留这一段进 system promptpath:`${dir}/SKILL.md`,// 全文路径,用到才读});}returnskills;}// 3) 构建 system prompt:只注入元数据列表,不注入正文functionbuildSystemPrompt(skills){constskillList=skills.map(s=>`-${s.name}:${s.description}`).join("\n");return["你是一个 Agent,拥有以下技能(按需加载):",skillList,"","规则:当用户任务匹配某个技能的 description 时,","调用 loadSkill(name) 加载该技能的完整指令再执行。",].join("\n");}// 4) 运行时:命中后按需加载完整正文(贵,用到才读)functionloadSkill(name){constskill=skills.find(s=>s.name===name);returnreadFile(skill.path);// 返回完整 SKILL.md,包含脚本/文档引用}

token 账本(面试最加分的一句)

内容是否常驻开销
元数据name + description常驻每个约 50–100 token
正文SKILL.md 指令按需加载每个可能上千 token
资源scripts / reference / assets正文引用后才读可能几万 token

10 个 Skill 全部元数据常驻也不到 1k token;若全量塞进 system prompt 则可能几万 token。渐进式披露让 Agent"知道有哪些能力",但不为没用的能力付费。


总结

  • frontmatter负责"让 Agent 知道何时用它"
  • SKILL.md 正文 + 资源目录负责"教它怎么做"
  • 加载器负责"三层按需取用"

这就是 Skill 封装的完整闭环。记住一句话:Skill 是把"人做某类事的专业经验(指令 + 流程 + 工具 + 知识)"打包成一个可发现、可复用、按需加载、可版本化的能力单元。

http://www.jsqmd.com/news/1403451/

相关文章:

  • 【AI工程化】为什么 Agent 总爱过度设计?从 ponytail 看复杂度控制
  • 辽阳本土一站式广告装饰服务商,实体工厂做广告装饰有哪些优势 - 收录优先
  • 智能语义检索与AI辅助文献调研:WorkBuddy CNKI技能实战指南
  • 2026想去内蒙古?先别急着订机票,这7个本地导游了解一下 - 纯玩旅游分享
  • Excel VLOOKUP函数三种查找模式深度解析:精准、近似与模糊匹配
  • 不推倒现有系统:面向多遗留业务系统的AI智能中台建设思路-商业价值详说
  • 无监督学习评价指标全解析:从聚类到异常检测的量化评估指南
  • 阿里云服务器安装Git:从yum源优化到自动化部署的完整指南
  • 从代码补全到任务执行:AI原生编码智能体架构与实践
  • 浔川系列产品后台维护与漏洞修复公告
  • 知识付费系统开发流程详解:从需求确定到正式上线
  • 基于Arduino的智慧交通模型设计与实现:从传感器到自适应控制
  • 尤文图斯足球俱乐部网上商城系统-ssm
  • VSCode搭建高效LaTeX环境:从TeX Live安装到LaTeX Workshop深度配置
  • 2026年东莞工厂搬迁整厂回收怎么做,设备拆解清运一条龙流程 - 品牌观察室
  • 深入理解 Java final 关键字:从基础到高级应用
  • 成都钻戒回收告别“一口价”!裸钻+戒托金价分开报,明细一目了然 - 大牌茶话会
  • 金山文档、腾讯文档、石墨文档深度评测:从核心功能到场景匹配的实战指南
  • Vim光标移动高效技巧:从行首行尾到词间跳跃的完全指南
  • 调试总出故障?气缸、电磁阀、接头选型很多人踩坑
  • Win11内存占用高?从原理到实战的完整优化指南
  • 2026湖南新媒体IP拍剪训练营机构全景梳理:5家机构IP孵化赛道对比 - 第三方测评
  • CUDA Tile策略:揭秘GPU矩阵乘法GEMM性能优化的核心原理
  • Podman容器技术:从入门到实践
  • 深入理解笛卡尔积:从SQL性能陷阱到系统设计优化
  • 从OpenClaw到垂直工具:AI自动化实践中的工具选型与工作流构建
  • 自建房铸铝门厂家推荐:5 家实力工厂深度评测 - 门业测评
  • 模板丰富的问卷制作网站如何选?行业覆盖度、题型多样性与自定义灵活度甄别 - 品牌排行榜
  • 论文写作:从“孤军奋战”到“AI 协同”的范式跃迁
  • SSL证书部署实战:从HTTP到HTTPS的完整指南与安全配置