DeepAgents · 从入门到精通 目录

§09 Skills:随用随取的技能包

先给结论:Skill 是带 SKILL.md 的目录。用到才加载全文,平时只占元数据。这叫渐进式披露。

传统做法是把所有提示词塞进 system prompt。 我见过一个 IMAGE_GENERATOR_PROMPT,是包含所有规则的巨型字符串。 每次对话都消耗大量 token。浪费。

DeepAgents 的 Skills 不这么干。

三步机制

  1. 匹配:看 skill 的 name + description 是否对上任务。
  2. 加载:用 read_file 读完整 SKILL.md
  3. 执行:按指令调工具或脚本。

平时只加载 frontmatter(name + description)。 相关时才读全文。省 token,也省上下文。

SKILL.md 长这样

---
name: location-detector
description: 获取用户所在城市。需要基于位置的服务时调用。
---

# 位置检测器
## 使用方法
python scripts/location_detector.py
## 响应格式
当前位置:{城市名}

目录结构

skills/
└── my-skill/
    ├── SKILL.md          # 必需
    ├── scripts/          # 可选:脚本
    ├── references/       # 可选:模板/文档
    └── assets/           # 可选:输出资源

挂到 Agent 上

agent = create_deep_agent(
    model="...",
    skills=["/skills/"],          # 指向含 SKILL.md 的目录
    backend=StateBackend(),
    checkpointer=MemorySaver(),
)

标叔的经验:我把一个电商图片生成的硬规则,从巨型 prompt 迁到 SKILL.md。每次对话 token 消耗降了一大截。而且 rules 改了只动一个文件,不再翻巨型字符串。这就是渐进式披露的好处。

标叔的结论:长提示词、领域知识、固定流程——都该做成 Skill。别堆在 system prompt 里。

注意:Skill 的 description 决定它何时被触发。写清楚"何时用",比写"它能干啥"更重要。

下一章,讲让代理记得住的长期记忆。