§09 Skills:随用随取的技能包
先给结论:Skill 是带 SKILL.md 的目录。用到才加载全文,平时只占元数据。这叫渐进式披露。
传统做法是把所有提示词塞进 system prompt。 我见过一个 IMAGE_GENERATOR_PROMPT,是包含所有规则的巨型字符串。 每次对话都消耗大量 token。浪费。
DeepAgents 的 Skills 不这么干。
三步机制
- 匹配:看 skill 的 name + description 是否对上任务。
- 加载:用
read_file读完整SKILL.md。 - 执行:按指令调工具或脚本。
平时只加载 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决定它何时被触发。写清楚"何时用",比写"它能干啥"更重要。
下一章,讲让代理记得住的长期记忆。