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过多占用上下文。