用 Agent Skills 为智能体配备真实世界能力 \ Anthropic
来源: https://www.anthropic.com/engineering/equipping-agents-for-the-real-world-with-agent-skills 抓取时间: 2026-07-21 16:19:29
更新:我们已将 Agent Skills 发布为跨平台可移植性的开放标准。(2025 年 12 月 18 日)
随着模型能力的提升,我们现在可以构建能够与成熟计算环境交互的通用智能体。例如,Claude Code 可以使用本地代码执行和文件系统完成跨领域的复杂任务。但随着这些智能体变得越来越强大,我们需要更多可组合、可扩展和可移植的方式来为它们配备特定领域的专业知识。
这促使我们创建了 Agent Skills:即智能体可以动态发现和加载的指令、脚本和资源的有组织文件夹,以便在特定任务上表现更好。Skills 通过将你的专业知识打包到可供 Claude 使用的可组合资源中,扩展了 Claude 的能力,将通用智能体转变为符合你需求的专业化智能体。
为智能体构建一个 skill 就像为新员工整理入职指南。现在,任何人都可以通过捕获和分享他们的程序性知识,用可组合的能力来专业化他们的智能体,而不必为每个用例构建碎片化的、定制设计的智能体。在本文中,我们将解释什么是 Skills,展示它们的工作原理,并分享构建你自己的 Skills 的最佳实践。

skill 是一个包含 SKILL.md 文件的目录,该文件包含有组织的指令、脚本和资源文件夹,为智能体提供额外的能力。
skill 的结构
为了实际了解 Skills 的工作原理,让我们看一个真实的例子:一个为 Claude 最近推出的文档编辑能力提供支持的 skill。Claude 已经对理解 PDF 有很多了解,但直接操作它们的能力有限(例如填写表单)。这个 PDF skill 让我们能够赋予 Claude 这些新能力。
最简单地说,一个 skill 就是一个包含 SKILL.md 文件的目录。该文件必须以 YAML frontmatter 开头,其中包含一些必需的元数据:name 和 description。在启动时,智能体会将每个已安装 skill 的 name 和 description 预加载到其系统提示中。
这个元数据是渐进式披露的第一层:它只提供足够的信息让 Claude 知道何时应该使用每个 skill,而无需将所有内容都加载到上下文中。该文件的实际内容是第二层细节。如果 Claude 认为该 skill 与当前任务相关,它会通过读取完整的 SKILL.md 到上下文来加载该 skill。

SKILL.md 文件必须以 YAML Frontmatter 开头,其中包含文件名和描述,这些信息在启动时加载到其系统提示中。
随着 skills 变得越来越复杂,它们可能包含太多上下文以至于无法放入单个 SKILL.md 中,或者包含仅在特定场景中相关的上下文。在这些情况下,skills 可以在 skill 目录中捆绑额外的文件,并从 SKILL.md 中按名称引用它们。这些额外的链接文件是第三层(及更后)的细节,Claude 可以仅在需要时选择导航和发现。
在下面显示的 PDF skill 中,SKILL.md 引用了两个额外的文件(reference.md 和 forms.md),skill 作者选择将它们与核心 SKILL.md 捆绑在一起。通过将表单填写说明移到单独的文件(forms.md),skill 作者能够保持 skill 的核心精简,相信 Claude 只会在填写表单时读取 forms.md。

你可以(通过额外文件)将更多上下文合并到你的 skill 中,然后 Claude 可以根据系统提示触发这些上下文。
渐进式披露是使 Agent Skills 灵活和可扩展的核心设计原则。就像一本组织良好的手册,从目录开始,然后是特定章节,最后是详细的附录,skills 让 Claude 只在需要时加载信息:

具有文件系统和代码执行工具的智能体在处理特定任务时,不需要将 skill 的全部内容读取到它们的上下文窗口中。这意味着可以捆绑到 skill 中的上下文量实际上是无限的。
Skills 和上下文窗口
下图显示了当 skill 被用户消息触发时,上下文窗口如何变化。

Skills 通过系统提示在上下文窗口中被触发。
显示的操作顺序:
- 首先,上下文窗口包含核心系统提示和每个已安装 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 还可以包含代码,供 Claude 根据任务性质自行决定作为工具执行。
开发和评估 skills
以下是一些有助于开始编写和测试 skills 的指导原则:
- 从评估开始: 通过让智能体运行有代表性的任务并观察它们在哪里遇到困难或需要额外上下文,来确定你的智能体能力中的具体差距。然后逐步构建 skills 来解决这些不足。
- 为可扩展性而构建结构: 当
SKILL.md文件变得难以管理时,将其内容拆分为单独的文件并引用它们。如果某些上下文是互斥的或很少一起使用,保持路径分离将减少令牌使用。最后,代码既可以作为可执行工具,也可以作为文档。应该清楚地表明 Claude 是应该直接运行脚本还是将它们作为参考读入上下文。 - 从 Claude 的角度思考: 监控 Claude 在实际场景中如何使用你的 skill,并根据观察结果进行迭代:注意意外的轨迹或过度依赖某些上下文。特别注意你的 skill 的
name和description。Claude 将在决定是否响应当前任务触发 skill 时使用这些信息。 - 与 Claude 一起迭代: 当你与 Claude 一起处理任务时,要求 Claude 将其成功的方法和常见错误捕获到 skill 中的可重用上下文和代码中。如果它在使用 skill 完成任务时偏离轨道,要求它自我反思出了什么问题。这个过程将帮助你发现 Claude 实际需要什么上下文,而不是试图预先预料它。
使用 Skills 时的安全考虑
Skills 通过指令和代码为 Claude 提供新能力。虽然这使它们功能强大,但也意味着恶意 skills 可能会在使用它们的环境中引入漏洞,或指示 Claude 窃取数据并采取意外操作。
我们建议仅从受信任来源安装 skills。从不太受信任的来源安装 skill 时,使用前要彻底审计。首先读取 skill 中捆绑的文件内容以了解其作用,特别注意代码依赖项和捆绑的资源(如图像或脚本)。同样,注意 skill 中指示 Claude 连接到可能不受信任的外部网络源的指令或代码。
Skills 的未来
Agent Skills 目前在 Claude.ai、Claude Code、Claude Agent SDK 和 Claude Developer Platform 上提供支持。
在未来几周内,我们将继续添加支持创建、编辑、发现、共享和使用 Skills 整个生命周期的功能。我们对 Skills 有机会帮助组织和个人与 Claude 分享他们的上下文和工作流程感到特别兴奋。我们还将探索 Skills 如何通过教智能体更多涉及外部工具和软件的复杂工作流程,来补充 Model Context Protocol (MCP) 服务器。
展望未来,我们希望使智能体能够自行创建、编辑和评估 Skills,让它们能够将自己的行为模式编码为可重用的能力。
Skills 是一个简单的概念,具有相应简单的格式。这种简单性使组织、开发人员和最终用户更容易构建定制的智能体并赋予它们新能力。
我们很高兴看到人们用 Skills 构建什么。今天就开始吧,查看我们的 Skills 文档和cookbook。
致谢
作者:Barry Zhang、Keith Lazuka 和 Mahesh Murag,他们都非常喜欢文件夹。特别感谢 Anthropic 内部倡导、支持和构建 Skills 的许多其他人。