Skills 加载的时候,它到底是要加载多少东西?是加载一下各个 Skills 的 Name 和 Description 吗?还是说这些东西都不用加载,只是触发关键词的时候,它才会索引到?
加载流程
┌─────────────────────────────────────────────────────┐
│ 启动时 │
├─────────────────────────────────────────────────────┤
│ 加载每个 SKILL.md 的 frontmatter: │
│ - name (技能名称) │
│ - description (触发条件描述) │
│ - 其他元数据 │
│ │
│ 这部分会作为 system context 的一部分给模型 │
└─────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────┐
│ 触发时 │
├─────────────────────────────────────────────────────┤
│ 当用户输入匹配 description 的内容时: │
│ 1. 系统识别触发条件 │
│ 2. 加载完整的 SKILL.md 内容 │
│ 3. 注入到当前对话上下文 │
│ 4. 模型根据指令执行任务 │
└─────────────────────────────────────────────────────┘
具体回答
| 问题 | 答案 |
|---|---|
| 启动时加载什么? | 主要是 frontmatter(name + description) |
| description 的作用? | 作为「触发关键词」,模型用它判断是否调用该技能 |
| 完整内容何时加载? | 触发时才加载完整 SKILL.md |
| 为什么技能多了会慢? | 50+ 个技能的 description 会占用 token,但影响不大 |
类比
- frontmatter = 书的目录和简介(启动时读)
- SKILL.md 全文 = 书的完整内容(需要时才读)
实际影响
你当前有 50+ 个技能,每次对话启动时,模型都会看到所有这些 description,用来判断何时触发哪个技能。所以尽量要保持最高性价比的skills保留,防止skills过多占用上下文。