你真的理解 Skill 吗?它的本质是一个文件夹,而不是提示词(1/7)

理解渐进式披露(progressive disclosure),是写好 skill 的”第一性原理”

怎么写 Skill 系列课程第 1 课封面:Skill 是文件夹,而不是提示词

理解渐进式披露(progressive disclosure),是写好 skill 的”第一性原理”

一个常见错觉

很多人第一次接触 skill 时,会把它理解成”一条保存下来的复杂提示词”。这个理解并不算错,但它会让我们写出糟糕的 skill——因为它忽略了 skill 真正的本质:skill 是一个文件夹,文件夹本身就是上下文工程(context engineering)。

Anthropic 的 Claude Code 团队在内部跑了几百个 skill 之后,总结的原话是:

原文引用You should think of the entire file system as a form of context engineering and progressive disclosure.

渐进式披露(progressive disclosure)的三层加载

一个 agent 在启动时,可能已经装了几十个甚至上百个 skill。如果把每个 skill 的完整内容都塞进上下文,上下文窗口有可能会立刻爆掉。所以 skill 的设计者做了一件非常聪明的事情:把信息分三层,按需加载。

第一层 · 元数据层(~100 tokens,启动即加载)
┌──────────────────────────────────────┐
│  每个 skill 只有 name + description    │
│  进入系统提示词                        │
│  → agent 凭它判断"这个 skill 和我      │
│    当前任务有关吗?"                   │
└──────────────────────────────────────┘
           ↓ 命中才触发
第二层 · 指令层(SKILL.md 正文,触发时加载)
┌──────────────────────────────────────┐
│  SKILL.md 的完整 Markdown 正文         │
│  被读入上下文                          │
│  建议 < 5000 tokens                   │
└──────────────────────────────────────┘
           ↓ 正文里引用了才加载
第三层 · 资源层(references / scripts / assets)
┌──────────────────────────────────────┐
│  被 SKILL.md 显式引用的文件            │
│  按需读取(read on demand)            │
│  这一层的容量"实际上无上限"            │
└──────────────────────────────────────┘

关键推论:我们在 skill 里写的每一个字都不是平等的。description 里的内容会一直占用上下文,且对所有会话都生效;SKILL.md 正文里的内容只在技能触发后占用上下文;references 里的内容只在被引用时占用上下文。因此,写得”全”,不如放得”对”。

渐进式披露(progressive disclosure)决定了你怎么写 skill

  • description 是触发器,而不是摘要:它是写给模型看的,告诉模型”什么时候该唤醒我”,里面要包含用户可能提到的关键词。如果写成”帮我处理 PDF”这种模糊描述,skill 装了等于没装。
  • SKILL.md 是路由器,而不是知识仓库:官方规范的建议是,主文件要保持精简,详细资料要拆进references/,正文里使用链接指过去。
  • 脚本优于文字描述:能用 20 行 Python 完成的事,不要写 200 字的自然语言让模型每次重新理解(还有可能每次理解的都不一样)。脚本可以被执行,具备确定性,甚至脚本本地执行还不占用上下文。

检验一下

检索练习 · 不看上文,凭记忆回答
一个 skill 启动时,agent 的系统提示词里,立即加载的是哪一层?

检索练习 · 机制理解
我们写了一个 skill,正文里有 3000 字详细的 API 字段说明。更好的做法是什么?

检索练习 · 写出判断
description 字段的本质是什么?
先在心里用一句话回答,再点开对照。

本课一手来源

大伙如果想深挖一层,读这篇:Anthropic · Equipping agents for the real world with Agent Skills

这是 skill 机制的原始设计文档,本课的三层加载图(沈剑用AI画的,虽然有点丑,表达清楚就行,将就着看吧)就来自它。20 分钟阅读量,值得(图非常精美)。

渐进式披露(progressive disclosure)速查卡

写 skill 时贴在手边的一张纸 · 对应第 1 课

三层加载模型

层 1  元数据    name + description      启动即加载 ~100 tok
层 2  正文      SKILL.md body           触发才加载 <5000 tok
层 3  资源      references/scripts/     链接才加载  无上限

三个位置的写法判断

  • description= 触发器,写给模型。回答”什么时候唤醒我”,含用户关键词。它永远在线,内容对所有会话都生效。
  • SKILL.md 正文= 路由器。步骤、判断规则、指向第三层的链接。细节不往这放。
  • references/= 知识仓库。完整 API 说明、领域知识、模板格式——必须被正文显式链接才会被加载。
  • scripts/= 确定性执行。能写成代码的事不写散文;脚本可执行,不占上下文。
  • assets/= 产出物料。模板、样板文件,被复制进最终产出,不被读入上下文。

一句话记忆

口诀触发看 description,干活看正文,细节住 references,重复劳动写成脚本。

官方规范要点(agentskills.io)

  • name:1-64 字符,小写字母+数字+连字符,必须与父目录同名
  • description:1-1024 字符,必填,写清 what + when
  • 可选:license、compatibility、metadata、allowed-tools(实验性)
  • 正文无格式限制——但”长则拆”是官方建议

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

京ICP备2025137728号-3