什么是技能
技能是一个文件夹目录,其中每个文件夹包含一个或多个智能体可以使用的上下文文件:- 一个包含技能说明和元数据的
SKILL.md文件 - 额外的脚本(可选)
- 额外的参考信息,例如文档(可选)
- 额外的资源,例如模板和其他资产(可选)
任何额外的资产(脚本、文档、模板或其他资源)都必须在
SKILL.md 文件中被引用,并说明文件内容和使用方法,以便智能体决定何时使用它们。技能如何工作
当你创建深度智能体时,可以传入一个包含技能的目录列表。智能体启动时,会读取每个SKILL.md 文件的前置元数据。
当智能体收到提示时,它会检查在执行提示任务时是否可以使用任何技能。如果找到匹配的提示,它会接着查看技能的其他文件。这种仅在需要时才查看技能信息的模式称为渐进式披露。
示例
你可能有一个技能文件夹,其中包含一个以特定方式使用文档站点的技能,以及另一个用于搜索 arXiv 研究论文预印本库的技能:SKILL.md 文件始终遵循相同的模式,以前置元数据开头,后面是技能的使用说明。
以下示例展示了一个技能,它提供了在收到相关提示时如何提供相关 langgraph 文档的说明:
完整示例
以下示例展示了一个使用了所有可用前置元数据字段的SKILL.md 文件:
使用方法
在创建深度智能体时传入技能目录:- StateBackend
- StoreBackend
- FilesystemBackend
list[str]
技能源路径列表。路径必须使用正斜杠指定,并且相对于后端的根目录。
- 如果省略,则不加载任何技能。
- 使用
StateBackend(默认)时,通过invoke(files={...})提供技能文件。使用deepagents.backends.utils中的create_file_data()来格式化文件内容;不支持原始字符串。 - 使用
FilesystemBackend时,技能从磁盘加载,相对于后端的root_dir。
SDK 仅加载你在
skills 中传入的源。它不会自动扫描 CLI 目录,例如 ~/.deepagents/... 或 ~/.agents/...。有关 CLI 存储约定,请参阅 应用数据。在 SDK 中模拟 CLI 源顺序
在 SDK 中模拟 CLI 源顺序
如果你希望在 SDK 代码中实现 CLI 风格的分层,请按从低到高的优先级顺序显式传递所有所需的源:然后在创建智能体时,将该有序列表作为
skills 传入。源优先级
当多个技能源包含同名技能时,skills 数组中靠后列出的源中的技能具有优先级(后加载者胜出)。这允许你从不同来源分层叠加技能。
子智能体的技能
当你使用 子智能体 时,可以配置每种类型可以访问哪些技能:- 通用子智能体:当你将
skills传递给create_deep_agent时,会自动继承主智能体的技能。无需额外配置。 - 自定义子智能体:不继承主智能体的技能。在每个子智能体定义中添加一个
skills参数,指定该子智能体的技能源路径。
智能体看到的内容
当配置了技能时,一个“技能系统”部分会被注入到智能体的系统提示中。智能体使用此信息遵循一个三步流程:- 匹配 — 当用户提示到达时,智能体检查是否有任何技能的描述与任务匹配。
- 读取 — 如果某个技能适用,智能体使用其技能列表中显示的路径读取完整的
SKILL.md文件。 - 执行 — 智能体遵循技能的说明,并根据需要访问任何支持文件(脚本、模板、参考文档)。
技能与记忆
技能和 记忆(AGENTS.md 文件)有不同的用途:
何时使用技能与工具
以下是使用工具和技能的一些通用准则:- 当存在大量上下文时,使用技能以减少系统提示中的令牌数量。
- 使用技能将多个能力捆绑成更大的操作,并提供超出单个工具描述的额外上下文。
- 如果智能体无法访问文件系统,则使用工具。
Connect these docs to Claude, VSCode, and more via MCP for real-time answers.

