技能是可复用的智能体能力,提供专业化的工作流和领域知识。Documentation Index
Fetch the complete documentation index at: https://nvd-54.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
技能需要
deepagents>=1.7.0。什么是技能
技能是一个文件夹目录,每个文件夹包含一个或多个智能体可以使用的上下文文件:- 一个
SKILL.md文件,包含技能的指令和元数据 - 额外的脚本(可选)
- 额外的参考信息,如文档(可选)
- 额外的资产,如模板和其他资源(可选)
任何额外的资产(脚本、文档、模板或其他资源)必须在
SKILL.md 文件中引用,并说明文件包含什么以及如何使用,以便智能体决定何时使用它们。技能工作原理
创建深度智能体时,您可以传入包含技能的目录列表。智能体启动时,它会读取每个SKILL.md 文件的 frontmatter。
当智能体收到提示时,它会检查在完成提示时是否可以使用任何技能。如果找到匹配的提示,它会查看技能文件的其余内容。这种仅在需要时查看技能信息的模式称为渐进式披露。
示例
您可能有一个技能文件夹,包含一个以特定方式使用文档站点的技能,以及另一个搜索 arXiv 预印本研究论文库的技能:SKILL.md 文件始终遵循相同的模式,以 frontmatter 中的元数据开始,后跟技能的指令。
以下示例展示了一个在被提示时提供相关 langgraph 文档指导的技能:
index.ts 中:
完整示例
以下示例展示了使用所有可用 frontmatter 字段的SKILL.md 文件:
用法
创建深度智能体时传入技能目录:- StateBackend
- StoreBackend
- FilesystemBackend
技能源路径列表。路径必须使用正斜杠指定,并相对于后端的根目录。
- 如果省略,不加载任何技能。
- 使用
StateBackend(默认)时,通过invoke(files={...})提供技能文件。 - 使用
FilesystemBackend时,技能从相对于后端root_dir的磁盘加载。
SDK 只加载您在
skills 中传入的源。它不会自动扫描 CLI 目录如 ~/.deepagents/... 或 ~/.agents/...。CLI 存储约定请参见应用数据。在 SDK 中模拟 CLI 源顺序
在 SDK 中模拟 CLI 源顺序
如果您想在 SDK 代码中实现 CLI 风格的分层,请按从最低到最高优先级的顺序明确传入所有所需源:然后在创建智能体时将该有序列表作为
skills 传入。源优先级
当多个技能源包含同名技能时,skills 数组中后列出的源优先(后者优先)。这让您可以从不同来源分层技能。
子智能体的技能
使用子智能体时,您可以配置每种类型可以访问的技能:- 通用子智能体:当您向
create_deep_agent传入skills时自动继承主智能体的技能。无需额外配置。 - 自定义子智能体:不继承主智能体的技能。为每个子智能体定义添加
skills参数及该子智能体的技能源路径。
智能体看到什么
配置技能后,“技能系统”部分会注入到智能体的系统提示中。智能体使用此信息遵循三步流程:- 匹配——当用户提示到达时,智能体检查是否有任何技能的描述匹配任务。
- 读取——如果技能适用,智能体使用技能列表中显示的路径读取完整的
SKILL.md文件。 - 执行——智能体遵循技能的指令并根据需要访问任何辅助文件(脚本、模板、参考文档)。
使用技能执行代码
技能以两种方式支持代码执行:使用解释器技能
解释器技能是向解释器暴露代码模块的技能。常规技能为智能体提供指令和上下文。解释器技能还为智能体提供可从解释器代码调用的可导入函数。 这让您可以将领域特定逻辑打包一次,并在智能体的工作空间中作为确定性构建块使用。智能体无需要求模型从头重新创建解析器、评分器、规范化器、验证器或聚合例程,而是可以导入经过测试的辅助函数并将其与工具、子智能体和运行时状态组合使用。 解释器技能适用于以下代码:- 可复用——跨提示、智能体或项目复用。
- 确定性——您希望每次都有相同的行为。
- 太详细——不适合作为指令保留在模型上下文中。
- 在更大工作流中有用——如评分搜索结果、规范化 API 响应、验证记录、分组行或将数据转换为报告就绪的格式。
最小技能布局:
在沙箱中执行技能脚本
技能可以在SKILL.md 文件旁包含脚本,例如执行搜索或数据转换的 Python 文件。智能体可以从任何后端读取这些脚本,但要执行它们,智能体需要访问 shell——只有沙箱后端提供。
当您使用 CompositeBackend 将技能路由到 StoreBackend 进行持久化,同时使用沙箱作为默认后端时,技能文件存在于存储中而不是沙箱(代码运行的地方)中。为了让沙箱能够使用这些脚本,您必须使用自定义中间件在智能体启动前将技能脚本上传到沙箱中:
beforeAgent 钩子在每次智能体调用前运行,从共享命名空间读取技能文件并将它们上传到沙箱文件系统中。同步后,智能体可以像沙箱中的任何其他文件一样使用 execute 工具执行脚本。
有关同时双向同步记忆的更完整示例,请参见使用自定义中间件同步技能和记忆。
技能 vs. 记忆
技能和记忆(AGENTS.md 文件)服务于不同的目的:
| 技能 | 记忆 | |
|---|---|---|
| 目的 | 通过渐进式披露发现的按需能力 | 启动时始终加载的持久化上下文 |
| 加载 | 仅在智能体确定相关性时读取 | 始终注入系统提示 |
| 格式 | 命名目录中的 SKILL.md | AGENTS.md 文件 |
| 分层 | 用户 → 项目(后者优先) | 用户 → 项目(合并) |
| 使用场景 | 指令是任务特定的且可能很大 | 上下文始终相关(项目约定、偏好) |
何时使用技能和工具
以下是使用工具和技能的一些通用指南:- 当有大量上下文需要减少系统提示中的 Token 数量时使用技能。
- 使用技能将能力捆绑成更大的操作,并提供超越单个工具描述的额外上下文。
- 如果智能体无法访问文件系统,使用工具。
通过 MCP 连接这些文档到 Claude、VSCode 等以获取实时解答。

