Skip to content

Skills 渐进加载

Skills 把“什么时候使用某套操作说明”和“说明、脚本、参考资料放在哪里”组织成可发现目录。Deep Agents 启动时只读取每个 Skill 的 metadata;模型选择 Skill 后才读取完整 SKILL.md,其余资源 继续按说明引用。

三层渐进披露

层级加载时机内容
MetadataAgent 启动namedescription
InstructionsSkill 被激活SKILL.md 正文
Resources正文明确引用且任务需要scripts/references/assets/

这种设计避免把所有教程、脚本和模板一次性放入 system prompt。

前端类比

Skills 类似带 route manifest 的代码分割:启动时只加载 chunk 名称和用途,真正访问路由时才加载 模块,模块内部再按需读取资源。

Deep Agents 原生语义:SkillsMiddleware 扫描配置路径,解析 SKILL.md frontmatter 并把 metadata 注入 Agent 指令。它不会在 discovery 阶段自动读取整个 Skill,也不会自动执行 scripts/;文件访问和执行仍由 backend 与 sandbox 决定。

目录结构

text
/skills/
└── release-notes/
    ├── SKILL.md
    ├── scripts/
    │   └── normalize-changelog.py
    ├── references/
    │   └── style-guide.md
    └── assets/
        └── release-template.md

SKILL.md 至少包含:

markdown
---
name: release-notes
description: 将已验证的变更整理为版本说明;只在输入包含提交或变更列表时使用
---

# Release notes

1. 先读取 `references/style-guide.md`
2. 根据变更生成草稿,不添加输入中不存在的功能。
3. 使用 `assets/release-template.md` 组织最终结构。

name 使用小写字母、数字和连字符,且应与父目录名一致;description 同时说明“做什么”和 “何时使用”,不要写成宽泛的宣传语。

配置 Skills

路径位于 backend 的虚拟文件空间,统一使用正斜杠:

python
import os

from deepagents import create_deep_agent

agent = create_deep_agent(
    model=os.environ["DEEPAGENTS_MODEL"],
    skills=["/skills/"],
)
ts
import { createDeepAgent } from 'deepagents'

const model = process.env.DEEPAGENTS_MODEL
if (!model) throw new Error('DEEPAGENTS_MODEL is required')

const agent = createDeepAgent({
  model,
  skills: ['/skills/'],
})

使用默认 StateBackend 时,应用必须在 invoke state 中提供对应 skill files;生产环境更常见的做法 是通过 FilesystemBackend、StoreBackend 或 CompositeBackend 为 /skills/ 建立稳定来源。

主 Agent 与自定义 subagent

主 Agent 的 skills 会提供给默认 general-purpose subagent。自定义 subagent 应显式声明自己的 Skills,不应假设继承:

python
researcher = {
    "name": "researcher",
    "description": "查找并核对官方资料",
    "system_prompt": "只报告能够引用来源的事实。",
    "skills": ["/skills/source-verification/"],
}

这让主 Agent 的发布流程 Skill 与研究 subagent 的资料核验 Skill 保持隔离。

设计高质量 Skill

  • 触发窄:description 能区分适用与不适用任务。
  • 正文短:只放执行顺序、边界和资源入口。
  • 资源可定位:相对路径准确,避免深层互相引用。
  • 脚本确定性:有清晰输入输出、超时和错误码。
  • 版本明确:依赖特定 CLI/API 时记录版本范围。
  • 安全可审查:脚本不下载并执行未知内容,不读取无关凭据。

Skills 与 Tools 的区别

  • Tool 是可调用能力,有 schema 和执行实现。
  • Skill 是按需加载的操作知识与资源集合。

Skill 可以教 Agent 何时、以什么顺序调用 tools,但本身不会赋予超出 backend 和 sandbox 的权限。

先修

下一步

官方参考

学习文档整合站点