聊聊Agent Skills

背景

我们曾经认为不同领域的 Agent 会有很大的不同,每个 Agent 需要自己的工具和支撑结构,这意味着每个领域都需要一个单独的 Agent:

different-domain-agent.png

当然,每个领域的定制化非常重要,但实际上底层的 Coding Agent 比我们想象的要通用的多。我们意识到,代码不仅仅是一个领域,更是通往数字世界的通用接口。

简单来说,代码就是我们所需要的一切!

Code is all you need

我们常用的 Cursor、Claude Code 等 Coding Agent 就是一个通用 Agent,而基于通用 Agent 去构建各个领域的用例就是我们正在迈进的一个新范式:


new-pattern.png

这种新范式使 Agent 与运行时环境之间的耦合变得更紧密。假如你要生成一份财务报告,Agent 会先调用工具获取数据,接着在文件系统中预处理这些数据,然后调用 Python 脚本进行分析,最后调用 Python 脚本将洞见整合并输出为 md 格式的文件。在整个过程中,核心的支撑结构突然变得像 bash 和文件系统一样精简,这非常具有可扩展性。

但我们很快就会遇到另一个问题,就是领域专业知识。

你希望谁来帮你报税?是 Mahesh 这个具有 300 智商的数学天才,还是 Barry 这个具有丰富经验的税务专家?

tax-expert.png

你大概率会选择 Barry,因为报税需要的是领域专家的稳定执行,而不是天才的即兴推导。

但现在的 Agent 恰恰更像 Mahesh——推理能力强,能举一反三,遇到实际工作中却经常卡在三件事上:

  • 缺背景:组织里的约定、历史决策、合规红线,模型默认不知道
  • 难沉淀:同类任务反复做,输出漂移,质量靠人盯
  • 不长记性:这次踩过的坑,下次还会踩

这就是 Anthropic 提出 Agent Skills(智能体技能)的原因。

什么是 Agent Skills

概念上来说,Agent Skills 是给 Agent 的“工作手册”或“SOP(标准作业程序)”。它将领域专业知识、工作流程和最佳实践固化下来,让一个通用的 Agent 能够在需要时动态加载,从而化身为领域专家。

形态上来说,Agent Skills 是有组织的文件集合,为 Agent 打包可组合的流程知识,还可以包含大量脚本作为工具。换句话说,技能就是文件夹,这种简洁是有意为之,天然支持 git 版本管理、模块化组合和团队共享。我们希望无论是人还是智能体,只要有一台电脑,都能创建和使用技能。

你可以创建或复用很多技能,同时每个技能可以包含大量信息。我们希望保护上下文窗口,这样就能一次性容纳数百个技能,并让它们实现真正可组合

如何在一个上下文窗口容纳数百个技能呢?我们需要一种更先进的知识封装和调用机制。这种机制,应该能让我们的领域专业知识像一个个独立的“知识插件”一样存在,只有在 AI 处理相关任务时,才被精准地、动态地、高效地加载进来。

这种机制就是“渐进式披露”,决定了 Agent Skills 的三层架构:

agent-skills-arch.png
  • 第一层:元数据层(Metadata)——每个技能只暴露名称和一句话描述,相当于索引卡片。Agent 启动时一次性扫描所有卡片,成本极低。
  • 第二层:指令层(Instructions)——即 SKILL.md 的主体内容,包含核心工作流程、工具说明和注意事项。只有当 Agent 判断某个技能与当前任务相关时,才会加载这一层。
  • 第三层:资源层(Resources)——详细的参考手册、示例、脚本和模板等。只有在 Agent 执行 SKILL.md 的过程中真正需要时,才按需读取或运行资源。当运行脚本时,只有脚本的最终输出结果会进入上下文,而脚本代码本身不会。这避免了将冗长的代码注入 Prompt,进一步节省了宝贵的上下文空间。

这就是渐进式披露的核心思路:不是一股脑把所有知识塞进上下文,而是逐层按需加载——先扫索引、再读指南、最后查资料或运行脚本。每一层都充当下一层的"门卫",只有通过了才会继续深入。这样即使注册了数百个技能,实际占用的上下文窗口也只是当前任务真正需要的那一小部分。

以技能 pptx 为例,其目录结构如下:

├── SKILL.md                    # 第一层 + 第二层:元数据 & 核心指令
├── LICENSE.txt
├── html2pptx.md                # 第三层:从零创建 PPT 的详细参考
├── ooxml.md                    # 第三层:编辑既有 PPT 的详细参考
├── scripts/                    # 第三层:工具脚本
│   ├── html2pptx.js            #   HTML → PPTX 转换
│   ├── inventory.py            #   提取文本清单
│   ├── rearrange.py            #   幻灯片重排
│   ├── replace.py              #   批量替换文本
│   └── thumbnail.py            #   生成缩略图网格
└── ooxml/                      # 第三层:OOXML 底层工具 & Schema
    ├── schemas/                #   Office Open XML 标准定义
    │   └── ...                 #   (20+ .xsd 文件)
    └── scripts/                #   打包/解包/校验脚本
        ├── pack.py
        ├── unpack.py
        ├── validate.py
        └── validation/

对照三层架构来看这个例子:

层级 对应内容 何时加载
元数据层 SKILL.md 头部的 YAML front matter:name: pptxdescription: "Presentation creation, editing..." Agent 启动时扫描,仅几十个 token
指令层 SKILL.md 的正文:概述、工作流程、设计原则、代码规范等 用户请求涉及 PPT 时,整份读入
资源层 html2pptx.mdooxml.mdscripts/ 目录下的所有脚本和 ooxml/schemas/ 仅在 SKILL.md 中被引用且执行需要时,才按需读取或运行

可以看到,一个技能可以包含大量内容(这个技能有 56 个文件),但真正进入上下文窗口的,始终只是当前任务步骤所需的那一小片。

Agent Skills 将 Prompt Engineering 从一次性的“手工作坊”模式,提升到了可复用、可维护的“工业化生产”阶段:


prompt-to-skills-evolution.png
  • 高度复用:一个编写良好的 Skill(例如,“从财报中提取关键指标”)可以在无数个不同的任务和 Agent 中被复用,避免了为每个相似任务重复编写和调试复杂 Prompt 的人力成本。
  • 简化维护:当一个流程或 API 发生变化时,开发者不再需要在成百上千个散落的 Prompt 中进行“查找替换”,而只需更新一个对应的 Skill 文件即可。这种集中式的管理极大地降低了维护成本和出错风险。
  • 促进协作:Skills 的模块化特性使得团队协作变得更加容易。不同领域的专家可以独立开发和贡献各自的 Skill,最终组合成一个强大的 Agent,实现了知识的沉淀和共享。

Agent Skills 是如何工作的

了解了 Agent Skills 是什么,我们再来看看它是怎么工作的。这就像拆开一台机器,看看里面的齿轮是怎么转动的

启动时的"登记注册"

当你早上打开 Cursor 或 Claude Code 时,AI 做的第一件事不是等你说话,而是悄悄地扫描技能目录。

以 Cursor 为例,它会扫描两个位置:

  • ~/.cursor/skills/——个人技能目录,存放你自己积累的技能,跨项目通用
  • {project}/.cursor/skills/——项目技能目录,存放团队共享的技能,随代码库一起版本管理

扫描的过程很快,因为只读取每个 Skill 的"名片"(元数据):技能叫什么名字,能做什么事情。就像你进入一个图书馆,先看看目录板,了解有哪些分类的书。

这个过程只需要几百个 tokens,几秒钟就完成了。

AI 在心里建立了一个索引:

  • PDF 相关的任务 → 调用 PDF Skill
  • PPT 相关的任务 → 调用 PPTX Skill
  • ......

这个索引会被缓存起来,除非你添加、修改或删除了 Skill,否则不需要重新扫描。系统会监听文件变化,一旦检测到 Skill 有变化,会自动更新索引,连重启都不需要。

对话时的"智能匹配"

登记注册只是准备工作,而真正有意思的事情发生在你开口说话的那一刻。

假设你对 Cursor 说了一句:

"帮我做一份关于 AI 发展趋势的演示文稿,要好看一点。"

这句话看起来很简单,但 Agent 在幕后瞬间完成了好几件事。

第一步:意图识别——你到底想干什么?

Agent 先理解你的意图:用户想创建一份 PPT。这不是写代码,不是分析数据,也不是处理 PDF,而是做演示文稿。

第二步:技能匹配——翻索引卡片

还记得启动时建立的那个索引吗?Agent 拿着"创建演示文稿"这个意图,去索引里找对应的技能。

一翻就找到了:

pptx —— Presentation creation, editing, and analysis.

匹配成功。就像你去图书馆找"烹饪"类的书,目录板上清清楚楚写着在 3 楼 B 区。

第三步:加载指令——打开"操作手册"

匹配到技能后,Agent 立刻读取 SKILL.md 的完整内容(第二层:指令层)。

这份文件就是一本"操作手册",告诉 Agent:

  • 创建新 PPT 时要用 html2pptx 工作流
  • 动手写代码之前,先分析内容、选定配色方案和设计风格
  • 只能使用 web-safe 字体(Arial、Georgia、Verdana……)
  • 布局要遵循视觉层次:大标题用 72pt,正文用 11pt
  • 图表和表格绝不能堆在文字下面,要用双栏或全幅布局
  • 做完之后要生成缩略图,自己检查有没有文字溢出、对比度不够等问题

注意,这时候 Agent 并没有加载所有细节。它只是知道了"大方向怎么走",具体的技术参考还没打开。

第四步:按需深入——用到什么查什么

当 Agent 真正开始动手时,才会触发第三层(资源层)的加载。比如:

  • 需要把 HTML 转成 PPT?去读 html2pptx.md,里面有完整的 API 语法和格式规则
  • 需要选配色?SKILL.md 里列了 18 套精选配色方案,Agent 会根据"AI 发展趋势"这个主题挑一套合适的——也许是"Deep Purple & Emerald",科技感十足
  • 需要转换脚本?直接调用 scripts/html2pptx.js 来执行

这就是渐进式披露在实战中的样子:不是一开始就把 56 个文件全部塞进大脑,而是走到哪一步,就打开哪一份资料。

整个过程,打个比方

想象你是一个新来的实习生,接到任务要做一份 PPT。你不会把公司所有的文件都翻一遍,而是:

  1. 先问前辈:"咱们公司做 PPT 有没有什么规范?"——意图识别
  2. 前辈指了指文件柜:"第三个抽屉,那本蓝色的手册。"——技能匹配
  3. 你拿出手册,翻到"从零创建演示文稿"那一章——加载指令
  4. 做到配色那一步,手册上写着"参考附录 B 的配色表",你翻到附录 B——按需深入

Agent 做的事情和你一模一样,只不过它翻得更快,记得更牢。

这个"智能匹配"的过程几乎是瞬间完成的,你感知不到任何延迟。从你敲下回车的那一刻起,Agent 已经知道该用什么技能、该怎么做、该注意什么,剩下的就是执行了。

Skills 的柔性设计

有人可能会问:Skills 是不是会限制 Agent 的灵活性?如果环境不一样怎么办?

这就涉及到 Skills 设计的一个巧妙之处:它提供指导,而不是强制约束

比如,PPTX Skill 推荐使用 html2pptx 工具来创建演示文稿(因为它能实现精确的布局控制),但这个工具需要 Node.js 环境。

如果你的电脑上没装 Node.js,Agent 会崩溃吗?

当然不会。当 Agent 会发现环境中没有 Node.js,然后自主选择替代方案,比如用 Python 的 python-pptx 库。虽然技术栈换了,但 Agent 还是会遵循 Skill 里的设计原则:配色方案怎么选、布局怎么安排、内容怎么组织。

这就像一个厨师拿到了菜谱,菜谱上写着"用煤气灶",但厨房只有电磁炉,厨师不会傻乎乎地说"没法做饭了",而是换用电磁炉,但还是按照菜谱的火候和步骤来做。

Skill 提供的是"道"(原则和思路),Agent 结合环境选择"术"(具体实现)。这种柔性设计,让技能既有指导作用,又不会因为环境差异而失效。

如何使用 Agent Skills

理论讲得差不多了,现在该动手实践了。不用担心,使用 Agent Skills 比你想象的要简单得多。

五分钟快速开始

想体验 Agent Skills,你只需要三步:

第一步:获取 Skills

Anthropic 在 GitHub 上开源了一些常用的 Skills,包括 PDF 、PPTX 等。

打开终端,运行:

git clone https://github.com/anthropics/skills

几秒钟,你就下载了一个技能库。

第二步:部署 Skills

决定把 Skills 放在哪里,以 Cursor 为例:

  • 如果只是自己用,放到个人目录:~/.cursor/skills/
  • 如果要团队共享,放到项目目录:{project}/.cursor/skills/

比如,你想用 PDF 和 PPTX 技能,当前目录为项目所在的根目录:

# 个人使用
cp -r skills/pdf skills/pptx ~/.cursor/skills/

# 团队共享
cp -r skills/pdf skills/pptx ./my-project/.cursor/skills/

第三步:测试 Skills

打开 Cursor,试试看:

"请帮我写一个 Agent Skills 的胶片,适合初学者"

Cursor 的执行过程:

  1. 我来先读取相关的技能文件和已有的内容资料。
  2. 现在我有了所有需要的资料。让我来规划并创建这份演示文稿。
  3. 设计方案:这是一个关于 AI/Agent 技术的主题,面向初学者,需要现代感、亲和力和专业性并存。我将使用 Deep Purple & Emerald 配色(紫色 #B165FB + 深蓝黑 #181B24 + 翡翠绿 #40695B),传达创新和技术前沿的感觉,同时保持清晰易读。
  4. 实现方案:


    todos.png

    ...

最后生成的 pptx 预览:**

agent-skills-pptx.png

MCP 与 Skill 的关系

下面列出针对 Prompt、Skills、MCP 三种上下文工程手段的横向对比:

特性 传统 Prompt Agent Skills MCP
作用域 会话级指令,一次性任务 可复用、可插拔的"SOP" 连接外部工具/数据源的标准协议
加载方式 每次对话都需要重复提供 按需自动加载,一次安装 通过网络请求实时交互
上下文消耗 全部内容一次性加载,成本高昂 渐进式披露,按需加载 每次请求和响应都消耗上下文
可组合性 难以组合和维护 可组合多个 Skills 构建复杂工作流 依赖于工具自身的接口设计
专业化 依赖通用模型能力 赋予模型本身领域专业知识 访问外部专业化工具
可靠性 输出不稳定,依赖模型生成 可通过执行确定性代码保证可靠性 依赖于外部工具的可靠性

MCP 属于连接层,为 Agent 连接了广阔的外部世界,把数据和工具带进来。Skill 属于知识层,为 Agent 装配了领域专业知识,按需逐层加载。知识层 Skill 可以依赖连接层 MCP 提供的工具实现更强大的功能。

mcp-skill.png

下面举一个例子。

场景:分析用户行为数据

数据分析 Skill

  • 提供数据分析的标准流程(数据清洗→探索性分析→可视化→得出结论)
  • 定义团队的数据可视化规范(用什么图表、什么配色)
  • 给出常见分析场景的模板

工具 MCP

  • 连接用户行为数据库,获取原始数据
  • 调用数据分析工具的 API
  • 把分析结果存储到文件系统

工作流程

  1. 你说:"分析一下上周的用户活跃度"
  2. Agent 匹配到"数据分析 Skill",了解分析流程
  3. Agent 通过 MCP 连接数据库,获取上周数据
  4. Agent 按照 Skill 的指导进行分析
  5. Agent 通过 MCP 调用可视化工具生成图表
  6. Agent 按照 Skill 的规范整理分析报告

假如 Agent 是一个厨师,那么 Skill 是菜谱(告诉你怎么做菜),MCP 是冰箱和厨具(提供食材和工具)。只有当 Skill 和 MCP 紧密配合,才能做出一桌好菜。

两个提示:

  • 对于简单的技能,可以不调用工具,或者仅调用自己携带的脚本工具。
  • 在必要时,可以充分利用技能的优势,从而将 MCP 工具封装为一个 Skill,比如在 Python 脚本中直接实现一个 MCP Client。

总结

Agent Skills 的核心理念可以用一句话概括:把领域专业知识装进文件夹,让通用 Agent 变成领域专家

掌握 Agent Skills,意味着你开始以一种全新的、更高级的方式来“编程”AI。你不再是为 AI 编写一次性的“脚本”(Prompt),而是在为它构建一个可复用的、可发现的、不断成长的“能力库”。所以,技能的价值很大一部分来自于共享和分发。

粗略类比一下:模型是处理器,Agent 是操作系统,Skills 是应用程序。只有少数公司构建了处理器和操作系统,而数百万开发者通过应用程序创造了更大的价值。Skills 正在打开应用程序这一层,每个开发者都可以发挥创造力,把领域专业知识放进文件夹,为自己、他人及全世界解决一个具体问题。

moving-up-the-stack.png

是时候停止重复构建 Agent,开始构建技能了。

然而,需要警惕的是,我们应该采取一种理性和审慎的态度对待 Agent Skills 这项重要创新:

  • 不要一切皆 Agent Skills,因为它不是魔法,更不是可以即插即用的“银弹”。
  • 必须将 Agent Skills 视为代码,而非文档,对其进行严格的代码审查、依赖扫描和版本控制,尤其对于第三方的,警惕成本优势背后的“隐性负债”。

随着技能生态的成长,Anthropic 认为还需要在以下方向持续探索:

  • 质量保障:像对待软件一样对待技能——探索、测试、评估,确保 Agent 在正确的时间加载并触发正确的技能,同时衡量输出质量是否达标。
  • 版本管理:清晰追踪技能的演进以及由此带来的 Agent 行为变化,保持明确的演变脉络。
  • 多技能组合:让多个技能协同工作,使 Agent 展现出更复杂、更贴合场景的行为。

参考文献

  • 《Don't Build Agents, Build Skills Instead》,Barry Zhang & Mahesh Murag,Code Summit · Anthropic
  • 《智能涌现的基石:精通Agent Skills,为AI植入专家能力》,Tony Bai,极客时间 · AI 原生开发工作流实战
  • 《代码就是一切:为什么Anthropic不再做"专用Agent"?》,claudecn,微信公众号 · 架构师
  • 《对待 Skills,请理性祛魅》,李颜良,微信公众号 · AI原生应用
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容