很多开发者在用Claude Code时,都会陷入一个简单的认知误区:Skill只是打包整理后的Markdown提示词,把业务规则直接写进System Prompt和搭建Skill没有本质区别。

实际落地多套业务技能后就能发现,一次性把几十份领域手册全部灌入上下文,会快速消耗token额度,大量无关文本稀释有效信息,模型经常忽略关键业务规范。

Anthropic推出Skill体系真正的核心创新是渐进式分层加载,一套完整的上下文懒加载调度方案。

让我们抛开表层使用方法,拆解底层架构设计、分层机制、工程落地价值~


一、Skill基础结构:不只是纯文本,模块化业务资源包

Skill并不是一段简单文字,而是标准化目录资源包,所有配置、流程、工具脚本集中收纳,统一给Agent提供领域业务能力。

1. 标准目录模板

pdf-handle/
├── SKILL.md    # 核心主配置文件(必填)
├── reference.md # 复杂业务补充说明
├── forms.md     # 专项表单处理规范
└── scripts/    # 可执行业务脚本
    └── fill_form.py

整个资源包无编译、无额外依赖,纯可读文本文件,开箱即用。

2. SKILL.md头部元数据(frontmatter)

文件最顶部用---包裹基础信息,是分层加载的核心索引,两个必填字段:

---
name: pdf-handle
description: 处理PDF读取、合并、表单填充,用户提及PDF相关操作时自动调用
---
# PDF处理完整流程
...
  • name:对应斜杠命令/pdf-handle,唯一标识技能;
  • description:技能用途描述,是模型匹配任务的核心依据;
    配套可选控制字段:allowed-tools限制可用工具、disable-model-invocation禁止AI自主调用。

通俗类比

Skill就像给新员工发放专属业务操作手册,不会修改员工本身的认知能力,只是把行业流程、操作规范整理成册。而直接塞入System Prompt,等同于把公司所有规章制度一次性全塞给员工,信息繁杂很难精准找到对应规则。

3. 5分钟搭建极简Skill示例

以代码评审规范为例,快速构建团队统一检查技能:

  1. 创建目录:mkdir -p ~/.claude/skills/code-lint
  2. 写入SKILL.md头部元数据与规则:
---
name: code-lint
description: 代码规范评审,用户要求检查代码质量、规范时启用
---
# 代码检查清单
1. 变量必须具备业务语义,禁止a、tmp等无意义命名
2. 魔法数字统一提取为常量
3. 捕获异常必须打印日志,禁止静默吞异常

保存后无需重启、编译,可直接通过/code-lint手动调用,AI识别代码评审需求也会自动启用。


二、核心底层:渐进式披露三层懒加载机制

这是Skill和普通提示词最本质的分界线,整套设计只为解决「多技能同时常驻,上下文超限」的痛点。

第一层:常驻轻量化索引(全程占用上下文)

Agent启动扫描全部Skill目录,仅提取每个技能的name+精简描述,生成极简清单存入系统上下文。

源码硬性约束
  • 整套技能索引总token仅分配窗口1%额度;
  • 单条描述最大字符限制250,超出自动截断;
  • 官方内置Skill描述永久完整,第三方技能描述额度不足时优先删减。
    示例常驻清单:
- code-lint:代码规范评审,用户要求检查代码质量、规范时启用
- pdf-handle:处理PDF读取、合并、表单填充
- commit-gen:根据代码变更生成规范提交注释

全程只保留索引,几千字的业务手册正文完全不占用常驻空间。

第二层:任务匹配后载入完整SKILL.md

当AI识别当前任务和某条Skill描述匹配,会自动读取完整主文件内容,以元用户消息的形式插入本轮对话,不会修改全局System Prompt。

关键工程优势:不改动系统提示词,不会破坏缓存机制,避免每轮重新计费。
这条消息在终端界面不会展示给使用者,但模型能完整读取全部业务流程。

第三层:按需调取附属资源

SKILL.md正文只会写指引语句,复杂补充文档、脚本不会同步载入。只有流程走到对应环节,Agent才会读取reference.md、脚本文件,用完不会长期驻留上下文。

收益直观对比

假设项目内置50套业务技能,每套手册平均3000token:

  • 全量塞入System Prompt:总计150000token,直接占满200K窗口大部分空间;
  • 分层渐进加载:常驻索引仅2000token,仅当前用到的单套手册临时载入,token占用降低98%。

Agent 启动扫描所有 Skill 目录

提取每个 Skill 的 name + 精简描述

生成常驻轻量索引(第一层)

用户输入任务需求

模型依据索引描述判断匹配

匹配成功?

以元用户消息载入完整 SKILL.md(第二层)

业务执行中按需调取 reference.md / 脚本(第三层)

结束

三、技能自动匹配:不靠向量检索,依托原生文本理解

很多人会猜测,系统会用Embedding做相似度检索匹配技能,实际Claude Code底层完全没有这套逻辑。

完整匹配流程

  1. 常驻技能清单完整放在每一轮上下文内;
  2. 模型同时读取用户当前需求与所有技能描述;
  3. 依靠原生文本阅读理解,判断需求和哪套技能匹配;
  4. 内置强制规则:匹配成功必须调用对应Skill,禁止跳过直接生成答案。

每一轮对话携带完整技能索引清单

读取用户当前需求与所有技能描述

依靠原生文本理解进行匹配判断

匹配成功?

必须调用对应 Skill,禁止跳过直接生成答案

返回通用回答

优缺点

✅ 优势:无需额外向量库、检索服务,降低系统维护复杂度,适配中小型技能库;
❌ 短板:项目内置上百套技能时,清单描述被大幅截断,匹配准确率会明显下滑。


四、斜杠命令和Skill底层为同一套体系

日常使用的/commit/code-lint斜杠命令,并不是独立功能,和Skill共用同一套Command底层数据结构。

双调用入口设计

  1. 人工手动触发:输入/技能名,主动唤起对应业务流程;
  2. AI自动触发:识别匹配需求,后台自动调用,使用者无感知。

两大权限控制开关(写在SKILL头部元数据)

  1. disable-model-invocation: true
    禁止AI自动调用,仅支持人工斜杠触发,适合上线发布、数据删除等高风险操作,避免模型自主执行高危动作。
  2. user-invocable: false
    隐藏斜杠调用入口,使用者无法手动输入,仅作为后台知识库供AI读取,适合项目底层数据表、配置说明类技能。

五、两大动态扩展能力:参数插值+本地脚本执行

Skill不只是静态文字,支持动态内容注入,适配多变业务场景。

1. 参数占位符 $ARGUMENTS

斜杠调用时追加的参数,会自动填充进文档内$ARGUMENTS占位位置。
示例调用:/code-lint UserService.java
文档内待检测文件:$ARGUMENTS会自动替换为目标文件路径,省去手动复制文件的操作。

2. 内嵌Shell脚本执行

本地存放的Skill目录,文档中可嵌入`cat xxx.py`这类脚本指令,调用时自动执行脚本,拉取实时数据再传入上下文。

安全隔离设计

来自MCP远程服务的Skill,会直接禁用脚本执行逻辑,防止第三方恶意资源读取本地文件、执行危险指令,仅本地项目、用户目录内技能开放脚本能力。


六、多渠道Skill加载与团队协作价值

Agent启动会扫描五大来源的Skill目录,按固定顺序加载,同名技能后加载版本不会覆盖前者:

  1. 官方内置:平台自带通用文档、代码技能;
  2. 用户全局目录:~/.claude/skills/,本机所有项目通用;
  3. 项目目录:项目内.claude/skills/,随代码仓库同步;
  4. 插件配套:安装插件自带专属技能;
  5. MCP远程服务:远程动态下发业务技能。

Agent 启动

1. 官方内置

2. 用户全局目录 ~/.claude/skills/

3. 项目目录 .claude/skills/

4. 插件配套

5. MCP 远程服务

同名技能后加载不覆盖前者

团队工程优势

项目目录内Skill跟随Git仓库同步,新同事克隆代码后,自动获取全套评审、部署、报表生成规范,不用人工传递文档、反复复制提示词,沉淀可复用团队业务资产。


七、落地最优实践,三条写Skill核心准则

  1. 描述聚焦使用场景,严格控制250字符以内
    不要堆砌功能介绍,优先写「用户什么场景会用到本技能」,提升AI自动匹配的准确率。
    差示例:本工具支持多种代码检查功能;
    优示例:用户要求评审代码、检查变量命名/异常处理规范时自动启用。

  2. 主文档轻量化,复杂细节拆分附属文件
    SKILL.md只保留主干执行流程,表单、复杂计算、历史规则等长内容拆分到reference.md,减少第二层载入的token体积。

  3. 重复固定操作封装脚本
    重复性文件读取、数据统计、格式转换直接写成脚本嵌入Skill,不用让AI每次重新推演步骤,大幅降低模型输出不稳定、逻辑出错概率。


八、高频认知误区澄清

误区1:Skill和System Prompt只是载体不同,效果一致

错误。全量提示词常驻会持续占用大量上下文,分层Skill仅临时载入所需内容,长期会话token成本、模型识别准确率差距极大。

误区2:内置技能数量越多,处理业务越精准

错误,技能清单描述会被强制截断,技能过多会导致匹配逻辑失效,无关技能还会干扰模型判断。

误区3:斜杠命令是独立功能,和Skill无关

错误,两者底层共用Command架构,斜杠只是面向使用者的手动调用入口,核心逻辑完全依托Skill资源包。

误区4:MCP远程Skill支持内嵌脚本执行

错误,出于安全隔离设计,所有远程加载的技能会屏蔽Shell执行能力,仅本地目录文件可运行脚本。


结尾总结

Skill的核心竞争力从来不是把提示词分文件夹存放,而是渐进式分层加载这套上下文懒加载调度体系。
它把常驻上下文占用压缩到极低水平,按需载入业务手册,解决多领域Agent长期会话上下文膨胀、信息稀释的核心痛点。

对于团队开发场景,项目目录托管Skill还能把零散业务规范沉淀进代码仓库,替代反复复制、版本散乱的长提示词。


Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐