用 Agent Skills 为智能体装备真实世界能力
Claude 很强大,但要完成真实工作,需要流程性知识和组织上下文。我们推出 Agent Skills——一种用文件与文件夹构建专业化智能体的新方式。
随着模型能力提升,我们现在可以构建能与完整计算环境交互的通用智能体。例如,Claude Code 能够借助本地代码执行与文件系统跨领域完成复杂任务。但随着这些智能体变得更强,我们需要更可组合、可扩展、可移植的方式,为它们注入领域专长。
因此我们创建了Agent Skills:由指令、脚本和资源组成的有组织文件夹,智能体可以按需发现并动态加载,以更好地完成特定任务。Skills 通过将你的专业知识打包为 Claude 可组合的资源来扩展 Claude 的能力,把通用智能体转化为符合你需求的专业化智能体。
为智能体构建一个 skill,就像为新员工整理一本入职指南。与其为每个用例定制零散的专用智能体,不如通过沉淀并共享流程性知识,用可组合的能力来让你的智能体专业化。本文将解释什么是 Skills、它们如何工作,并分享构建你自己的 Skills 的最佳实践。
 
  一个 Skill 的构成
为了看看 Skills 如何发挥作用,让我们通过一个真实示例:它支撑了Claude 新近推出的文档编辑能力之一。Claude 对理解 PDF 已经很在行,但要直接操作它们(例如填写表单)仍然受限。这个 PDF skill 让我们为 Claude 赋予这些新能力。
最简单地说,skill 是一个包含 SKILL.md file 的目录。该文件必须以 YAML frontmatter 开头,包含一些必需的元数据:name 和 description。启动时,智能体会将每个已安装 skill 的 name 与 description 预加载到其系统提示中。
这些元数据构成了“渐进式披露”的第一级:它提供恰到好处的信息,使 Claude 能在不把全部内容放入上下文的情况下判断何时使用某个 skill。该文件的正文是第二级细节。如果 Claude 认为该 skill 与当前任务相关,它会通过读取完整的 SKILL.md 来加载该 skill。
 
  随着 skills 复杂度的提升,其上下文可能过多而无法全部放入单个 SKILL.md,或仅在特定情境下才相关。在这种情况下,可以在 skill 目录中捆绑更多文件,并从 SKILL.md 按名称引用它们。这些额外的链接文件构成第三(及更高)级细节,Claude 只会在需要时选择性地导航与发现。
在下图所示的 PDF skill 中,SKILL.md 引用了两个额外文件(reference.md 与 forms.md),作者将它们与核心 SKILL.md 一并打包。通过把表单填写指引移到单独的 forms.md,作者得以保持 skill 核心简洁,并相信 Claude 只会在填写表单时读取 forms.md。
 
  渐进式披露是让 Agent Skills 既灵活又可扩展的核心设计原则。就像一本结构良好的手册——先是目录,再是各章,最后是详尽的附录——skills 让 Claude 仅在需要时加载信息:
 
具备文件系统与代码执行工具的智能体,在处理特定任务时无需把整个 skill 全部读入上下文窗口。这意味着可以打包进一个 skill 的上下文量实际上不设上限。
Skills 与上下文窗口
下图展示了当用户消息触发某个 skill 时,上下文窗口如何变化。
 
  如下所示的操作序列:
- 起始时,上下文窗口包含核心系统提示、每个已安装 skill 的元数据,以及用户的初始消息;
- Claude 通过调用 Bash 工具读取 pdf/SKILL.md的内容,从而触发 PDF skill;
- Claude 选择读取与该 skill 一同打包的 forms.md文件;
- 最后,Claude 在加载了来自 PDF skill 的相关指引之后,继续执行用户的任务。
Skills 与代码执行
Skills 也可以包含供 Claude 作为工具执行的代码,由它根据任务性质自行决定是否调用。
大型语言模型擅长许多任务,但某些操作更适合用传统代码来完成。比如,用令牌生成去排序一个列表要比直接运行排序算法昂贵得多。除此之外,许多应用需要只有代码才能提供的确定性可靠性。
在我们的示例中,PDF skill 包含了一个预先编写的 Python 脚本,用于读取 PDF 并提取所有表单字段。Claude 可以在不把脚本或 PDF 读入上下文的情况下运行该脚本。而且由于代码具有确定性,该流程具有一致且可重复的特性。
 
  设计与评估 Skills
以下是一些有助于入门的撰写与测试建议:
- 从评估开始: 通过在具有代表性的任务上运行你的智能体,找出其能力的具体短板,观察它在哪些地方遇到困难或需要更多上下文。然后按增量方式构建 skills 来弥补这些不足。
- 面向规模进行结构化: 当 SKILL.md变得臃肿时,将内容拆分到独立文件并进行引用。如果某些上下文互斥或很少共同使用,将它们分开可以减少 token 使用。最后,代码既可以作为可执行的工具,也可以作为文档。应该明确让 Claude 直接运行脚本,还是把脚本作为参考读入上下文。
- 站在 Claude 的视角思考: 观察 Claude 在真实场景中如何使用你的 skill,并基于观察结果迭代:留意意外的执行轨迹或对某些上下文的过度依赖。特别关注 skill 的 name与description,Claude 会用它们来决定是否在当前任务中触发该 skill。
- 与 Claude 协同迭代: 在你与 Claude 协作完成任务的过程中,让 Claude 把成功方法与常见错误沉淀为可复用的上下文与代码,并纳入一个 skill。如果它在使用某个 skill 执行任务时跑偏,让它自我反思问题所在。这个过程能帮助你发现 Claude 实际需要的上下文,而不是事先揣测。
使用 Skills 的安全注意事项
Skills 通过指令与代码为 Claude 提供新能力。这让它们很强大,但也意味着恶意的 skills 可能在使用环境中引入漏洞,或指使 Claude 外传数据并采取非预期行为。
我们建议只从可信来源安装 skills。如果从可信度较低的来源安装,在使用前要进行彻底审计。先阅读该 skill 打包的文件内容以理解其行为,特别留意代码依赖和打包的资源(如图像或脚本)。同样也要留意其中可能指示 Claude 连接到不受信任外部网络源的指令或代码。
Skills 的未来
Agent Skills 目前已得到支持,覆盖 Claude.ai、Claude Code、Claude Agent SDK,以及 Claude 开发者平台。
在接下来的数周里,我们将持续添加功能,覆盖创建、编辑、发现、分享与使用 Skills 的完整生命周期。我们尤其期待 Skills 帮助组织与个人把自己的上下文与工作流共享给 Claude。我们也将探索 Skills 如何与 Model Context Protocol(MCP)服务器互补,教会智能体使用外部工具与软件完成更复杂的工作流。
展望更远,我们希望让智能体能够自行创建、编辑与评估 Skills,将其自身的行为模式编码为可复用的能力。
Skills 是一个简单的概念,具有相应的简单格式。正因其简单,组织、开发者与终端用户都更容易构建定制化智能体,并赋予它们新能力。
我们很期待大家用 Skills 构建什么。立即查看我们的 Skills 文档与示例手册开始上手吧。
致谢
作者:Barry Zhang、Keith Lazuka、Mahesh Murag——他们都非常喜欢文件夹。特别感谢整个 Anthropic 团队中为 Skills 鼓与呼、提供支持并亲手打造它的人们。
订阅开发者通讯
产品更新、操作指南、社区焦点等,每月发送至你的收件箱。
如果你希望接收我们的月度开发者通讯,请留下你的邮箱地址。你可以随时退订。