4.1 渐进式披露与上下文预算
为什么这件事值得单独讲
Skill 最容易被忽视的成本是上下文。上下文被占满的后果不是「变慢」,而是质量断崖式下降:模型开始遗忘早先的指令、忽略你的硬规则、输出前后矛盾。
一个设计不良的 Skill,会在每次被加载时悄悄吃掉几千到几万 token。所以「怎么拆」不是洁癖,是性能问题。
三级加载的预算模型
再回顾一次加载层级,但这次看成本:
| 层级 | 内容 | 常驻? | 成本量级 |
|---|---|---|---|
| L1 | name + description |
是(所有 Skill) | 约 100 词/技能 |
| L2 | SKILL.md 正文 |
命中后 | 目标 ≤ 5k 词 |
| L3 | scripts/ |
— | ≈ 0(执行不读取) |
| L3 | references/ |
按需 | 只算被读的那一份 |
| L3 | assets/ |
— | ≈ 0(不读入) |
推论一:装 100 个 Skill 的常驻成本 ≈ 100 段 description ≈ 一万词量级。所以「装得多」不怕,怕的是「每个 description 都写成长文」。
推论二:scripts/ 和 assets/ 是免费的。凡是能用脚本固化的逻辑,都该搬进去——既省 token 又更可靠。
推论三:references/ 是可分摊的。它只在需要时被读一份,不会全量加载。
拆分的三条硬标准
把一段内容留在 SKILL.md,还是移到 references/?用这三条判断:
标准一:每次执行都会用到吗?
- 每次都用 → 留 SKILL.md(例如:输出格式、硬规则、主流程)
- 只在特定分支用 → 移 references(例如:处理「异常单据」的详细规则)
标准二:它是「指令」还是「资料」?
- 指令(要做 A 再做 B,禁止 C) → 留 SKILL.md
- 资料(字段清单、参数表、政策原文) → 移 references
标准三:超过 1 万字了吗?
- 单份文件超过约 1 万字(或 10k 词) → 必须移出,并在 SKILL.md 里给出搜索模式。
大文件怎么处理:给搜索模式
超过 1 万字的 reference,别指望模型「通读」。要在 SKILL.md 里明确告诉它怎么定位。例如在 SKILL.md 的「参考资料」小节里写:
- 文件:
references/schema.md—— 全部 87 张表的结构说明(约 2.5 万字)。 - 要求:不要通读。查表时先定位章节,例如:
grep -n "^## " references/schema.md # 列出所有表名与行号
grep -n "订单表" references/schema.md # 直接搜表名
- 拿到行号后,只读取该表对应的一小节。
注意:这里给的
grep命令是给 AI 用的,所以要写成可以直接复制执行的形态,并说明「先定位再读」,而不是「读一下这个文件」。
反模式清单
| 反模式 | 后果 | 正确做法 |
|---|---|---|
| 2 万字 API 文档塞进 SKILL.md | 每次加载吃满预算,其他 Skill 被挤 | 移 references/,给 grep 模式 |
| 把所有示例都留正文 | 冗长,重点被淹没 | 只留 1~2 个正反例,其余移出 |
一个万能 everything.md |
每次读一份超长文档 | 按主题拆成 5~8 份小文件 |
| 同一信息 SKILL.md 和 references 各写一遍 | 两份必然不同步,模型随机取一份 | 只保留一处 |
| 写「请参考 references 目录下的资料」 | 模型不知道具体读哪个文件 | 逐一点名文件 + 何时读 |
给 assets/ 里的模板写详细说明 |
模板本就不该被读入 | 只写「复制并替换占位符」 |
一个实操案例:从 1 个大文件拆到 4 个
拆分前(单个 SKILL.md,约 2.2 万字):
finance-helper/
└── SKILL.md ← 含:主流程 + 87 张表结构 + 32 个错误码 + 报表模板说明 + 历史背景
问题:每次加载都吃 2 万字预算;模型还会被无关的表结构干扰。
拆分后:
finance-helper/
├── SKILL.md ← 约 1200 字:概述 + 流程 + 硬规则 + 资源索引
├── references/
│ ├── schema.md ← 87 张表结构(含 grep 定位提示)
│ ├── error-codes.md ← 32 个错误码与处置
│ └── business-rules.md ← 业务口径与历史背景
├── scripts/
│ └── query.py ← 查询脚本(零上下文成本)
└── assets/
└── report-template.xlsx ← 报表模板(零上下文成本)
效果:常驻成本从 2.2 万字降到 1200 字,且每次任务只加载真正需要的那一份 reference。
预算自检清单
- [ ]
SKILL.md正文 ≤ 5k 词 - [ ] 正文里每段内容都符合「每次都用到」
- [ ] 超过 1 万字的 reference 都给了 grep / 定位模式
- [ ] 没有重复信息(SKILL.md 与 references 不重叠)
- [ ] 每个资源文件都被正文点名,且写明何时读
- [ ] 能固化成脚本的逻辑已经搬进
scripts/ - [ ]
assets/里没有「需要被读懂」的文件
上一篇:四、Skill 的进阶与工程化 | 下一篇:4.2 脚本、依赖与跨平台
整理人:WorkBuddy
