Junki
Junki
Published on 2026-04-10 / 8 Visits
0
0

Claude 是如何加载和调用 Skills 的?

claude-skills-sequence.svg

一句话理解

Claude 对 skills 的使用方式,不是像传统程序那样“先注册函数,再显式调用”,而是先把每个 skill 当作一个可发现的能力说明卡片,在任务真正相关时,再按需读取完整说明、附加资料和脚本。

整体流程

1. 启动时只加载摘要

每个 skill 都是一个目录,最核心的文件是 SKILL.md。这个文件顶部通常包含 YAML frontmatter,至少会写出:

  • name
  • description

Claude 在启动阶段不会把所有 skill 的完整正文都塞进上下文,而是只预加载这些元信息。这样做的目的,是让模型先知道“有哪些能力”以及“什么时候该考虑使用它们”。

2. 收到任务后先做匹配

当用户发来一个请求时,Claude 会把当前任务和已加载的 skill 元信息进行比对。这个阶段的关键不是执行,而是判断:

  • 当前请求是否和某个 skill 的 description 高度相关
  • 是否值得进一步读取这个 skill 的完整内容

如果没有命中,Claude 就按通用能力直接处理任务。

3. 命中后再读取完整 SKILL.md

一旦 Claude 判断某个 skill 与当前任务相关,它才会进一步读取该 skill 的完整 SKILL.md。这时真正进入的是该 skill 的正文说明,包括:

  • 建议的处理流程
  • 任务边界
  • 默认实现方式
  • 输出要求
  • 何时继续读取更多文件

这一步相当于“从能力摘要进入操作手册”。

4. 需要更多细节时,再读附加文件

好的 skill 往往不会把所有细节都堆在一个文件里,而是把更长、更具体、只在特定场景下需要的内容拆到单独文件中,比如:

  • references/patterns.md
  • forms.md
  • reference.md

Claude 不会默认全量读取这些文件,而是只在任务确实需要时继续打开。这种机制通常被称为“渐进披露”,它能减少上下文浪费,也让 skill 可以不断扩展。

5. 需要确定性操作时,再执行脚本

有些能力不适合单靠语言模型推理完成,比如:

  • 解析文件
  • 提取结构化字段
  • 生成导出产物
  • 执行稳定的计算或转换

这时 skill 可以附带脚本。Claude 在理解了 SKILL.md 的指导后,可以选择运行 skill 目录里的脚本,把脚本当成实际工具来使用。

为什么这种机制有效

这种设计有三个明显好处:

  • 节省上下文,因为启动时只加载 skill 摘要
  • 更灵活,因为只有相关任务才会展开具体说明
  • 更稳定,因为复杂步骤可以落到脚本执行,而不是完全依赖模型即时生成

用一个本地 skill 来理解

如果一个 skill 的 description 写的是“当用户需要联网搜索内容时使用”,那么 Claude 在启动时只会记住这一点。

只有当用户真的提出类似“帮我联网搜索一下最新的电影”这样的需求时,Claude 才会继续读取这个 skill 的完整 SKILL.md。如果正文又提到“当任务涉及结果文案模式时,再去读 references/patterns.md”,那 Claude 也会只在那个场景下继续展开。

总结

Claude 调用 skills 的本质流程可以概括为三层:

  1. 先加载 skill 元信息
  2. 命中后加载完整说明
  3. 必要时再加载附加文件或执行脚本

这使得 skill 更像一套可按需展开的“操作手册 + 工具箱”,而不是一次性全部注入上下文的大提示词。


Comment