Anthropic Agent Skills:可组合代理专业知识的开放标准

随着AI代理变得能够与复杂的计算环境交互,Anthropic推出了Agent Skills,这是一个开放标准,旨在为通用代理提供可组合且可移植的领域特定专业知识。

该系统允许开发者将程序性知识(如专门的指令、脚本和资源)打包成可复用的单元,将通用代理转变为高度专业化的工具,而无需为每个用例创建碎片化的定制代理。

定义Agent Skills

Agent Skills是组织化的目录,包含一个SKILL.md文件,该文件捆绑了赋予代理额外能力的指令、脚本和资源。Skills的核心目的是通过捕获和共享程序性知识来实现代理的专业化,有效地充当代理进入特定领域的入门指南。

Skills扩展了像Claude这样的模型的能力,允许将专业知识打包成可组合的资源。这种方法超越了构建单体定制代理,转向模块化系统,代理可以根据手头任务动态发现并加载相关专业知识。

Skill的解剖:渐进式披露

Skill的结构围绕渐进式披露原则构建,确保代理只加载特定任务所需的上下文,这极大地提高了可扩展性和效率。

Skill结构和元数据

在最简单的层面上,Skill是一个包含SKILL.md文件的目录。该文件必须以YAML前置元数据开头,包含必需的元数据:name和description。当代理启动时,它会将每个已安装技能的name和description预加载到其系统提示中。此元数据作为渐进式披露的第一层,允许代理在不加载整个内容的情况下确定技能何时相关。

上下文分层和文件捆绑

随着技能变得更加复杂,Anthropic设计了一个多层系统来管理上下文大小。SKILL.md文件的实际主体构成第二层细节,只有当代理确定技能与当前任务相关时,才会将其读入上下文。对于更复杂的情况,技能可以在技能目录中捆绑额外文件(例如forms.md或reference.md),并从核心SKILL.md中引用它们。

这些额外的链接文件代表第三层(及更深入)的细节。通过将专门的指令分离到不同的文件中,技能作者保持核心SKILL.md的精简,允许代理仅在绝对必要时选择导航和发现这些深层指令。

Skills和上下文窗口管理

Agent Skills实现了几乎无限制的上下文捆绑,因为具有文件系统和代码执行工具的代理不需要为每个任务将整个技能加载到其上下文窗口中。

技能激活的过程在上下文窗口内遵循特定顺序:

  1. 初始化: 上下文窗口以核心系统提示、所有已安装技能的元数据以及用户的初始消息开始。
  2. 技能触发: 代理调用工具(例如Bash工具)来读取技能SKILL.md文件的内容。
  3. 上下文选择: 代理根据任务要求选择读取特定的捆绑文件(例如forms.md)。
  4. 任务执行: 代理继续处理用户的任务,现在只加载了技能中的相关指令。

这种机制确保代理仅在需要时加载信息,类似于一本组织良好的手册,使用目录、特定章节和详细附录。

集成代码执行

技能可以包含预编写的代码,如Python脚本,作为代理可以自行决定执行的确定性工具。这至关重要,因为某些操作更适合传统的代码执行,而不是令牌生成。

例如,一个PDF技能可以包含一个读取PDF并提取表单字段的脚本。代理可以运行此脚本,而无需将脚本或PDF内容加载到其上下文窗口中。这种方法为一致且可重复的工作流程提供了所需的确定性可靠性。

开发和评估Skills

开发者在编写和测试技能时应遵循几条指南,以确保其有效性和可扩展性:

  • 从评估开始: 通过在代表性任务上运行代理并观察其困难之处,识别代理能力的具体差距,然后再构建技能来解决这些不足。
  • 为扩展而结构化: 如果SKILL.md文件变得太大,将其内容拆分为单独的引用文件。分离互斥或很少使用的上下文可以减少令牌使用。
  • 从代理的角度思考: 监控代理在真实场景中如何使用技能,密切关注name和description。这些元素对于代理决定是否触发技能至关重要。
  • 与代理一起迭代: 要求代理在使用技能时自我反思其成功的方法和常见错误。这有助于发现代理所需的确切上下文,而不是试图提前预测所有需求。

安全考虑

由于Skills通过指令和代码赋予代理新能力,它们引入了潜在漏洞。恶意技能可能被用来引入环境漏洞,指示代理泄露数据,或导致意外行为。

Anthropic强烈建议仅从可信来源安装技能。当使用来自不太可信来源的技能时,必须进行彻底审计。该审计必须包括阅读所有捆绑文件以了解其功能,密切关注代码依赖关系,并审查可能指示代理连接到不可信外部网络源的指令。

Sources