将 Skills 集成到你的智能体
(Integrate skills into your agent)
本指南说明如何向你的 AI 智能体或开发工具添加 Agent Skills 支持。([代理技能][1])
集成方法(Integration approaches)
集成 Skills 有两种主要方式:
-
基于文件系统的智能体(Filesystem-based agents) 这种智能体在一个计算机环境中运行(例如 bash/unix)。
- 当模型发出如
cat /path/to/my-skill/SKILL.md这样的 shell 命令时,相关技能会被激活。 - 随技能捆绑的资源(如脚本、参考文件等)也通过 shell 命令访问。 这是最强大的集成方法。([代理技能][1])
- 当模型发出如
-
基于工具的智能体(Tool-based agents) 这种智能体不依赖于完整的计算机环境。
- 它通过定义“工具”(tools)来触发技能和访问技能内的资源。
- 具体如何实现由开发者根据平台自行决定。([代理技能][1])
总览(Overview)
一个支持 Skills 的智能体需要具备以下能力:
- 在配置目录中发现技能(Skill discovery)。
- 在启动时仅加载技能的元数据(名称和描述)。
- 匹配用户任务与相关技能。
- 在匹配到技能时激活该技能并加载完整的指令。
- 在执行过程中按需运行脚本或访问资源。([代理技能][1])
技能发现(Skill discovery)
Skills 是包含 SKILL.md 文件的文件夹。你的智能体应扫描配置的目录以查找有效的技能。([代理技能][1])
加载元数据(Loading metadata)
在智能体启动时,应只解析每个 SKILL.md 文件的 frontmatter(即 YAML 元数据),以保持初始上下文占用尽可能低。([代理技能][1])
解析 frontmatter(Parsing frontmatter)
示例伪代码:
function parseMetadata(skillPath):
content = readFile(skillPath + "/SKILL.md")
frontmatter = extractYAMLFrontmatter(content)
return {
name: frontmatter.name,
description: frontmatter.description,
path: skillPath
}
这里读取 YAML frontmatter 并将其转换为结构化的元数据对象。([代理技能][1])
注入到上下文(Injecting into context)
将技能的元数据包含在智能体的系统提示中,让模型知道有哪些技能可用。
按照你所使用平台的推荐方式注入系统提示。
例如,为 Claude 系列模型,推荐使用如下 XML 格式:
<available_skills>
<skill>
<name>pdf-processing</name>
<description>Extracts text and tables from PDF files, fills forms, merges documents.</description>
<location>/path/to/skills/pdf-processing/SKILL.md</location>
</skill>
<skill>
<name>data-analysis</name>
<description>Analyzes datasets, generates charts, and creates summary reports.</description>
<location>/path/to/skills/data-analysis/SKILL.md</location>
</skill>
</available_skills>
- 对于基于文件系统的智能体,应当在 metadata 中包含
location字段,使用指向SKILL.md的绝对路径。 - 对于基于工具的智能体,可以不包含
location字段。 - 保持元数据尽量简洁:每个技能添加的内容大约 50–100 tokens。([代理技能][1])
安全注意事项(Security considerations)
执行技能中的脚本可能存在安全风险,因此应该采取防护措施:
- 沙箱隔离(Sandboxing):在隔离环境中运行脚本,避免对主系统造成影响。
- 白名单机制(Allowlisting):只执行来自可信技能的脚本。
- 确认机制(Confirmation):在运行潜在危险操作前征询用户确认。
- 日志记录(Logging):记录所有脚本执行行为以便审计。([代理技能][1])
参考实现(Reference implementation)
官方提供的 skills-ref 库提供了处理 Skills 的 Python 工具和 CLI。例如:
验证技能目录:
skills-ref validate <path>
该命令会检查 SKILL.md frontmatter 是否有效,并验证命名规范等。([代理技能][1])
生成 Prompts(skills-ref 支持将 skills 元数据转换为提示格式,例如 XML):
skills-ref to-prompt <path>...
这一功能可用于生成适合注入进系统提示的技能 metadata。([代理技能][1])
参考资料
https://chatgpt.com/c/694df079-52ac-8322-acf2-2ba5116913ea
