AI学习吧
📍 源码七号站 人工智能 大模型Skill机制深度解析:让AI真正"知行合一"的核心技术

大模型Skill机制深度解析:让AI真正"知行合一"的核心技术

摘要:Agent Skills(智能体技能)是AI领域的新概念,它通过“渐进式披露”机制,让AI能按需加载特定任务的提示词和脚本,而非一次性载入所有信息,从而大幅节省Token并提升效率。文章以制作豆浆为例,揭示了从模糊提示词到具体化工程,再到Skill机制解决“提示词爆炸”困境的演进。Skill本质是一个包含核心文件SKILL.md的文件夹,其工作流程分为发现、激活、执行三阶段,实现了“知行合一”——Skill提供知识指导,代码执行赋予行动力。它支持官方、合作伙伴及自定义技能,已成为开放标准,允许跨平台使用。对于个人和企业,Skill能封装最佳实践、沉淀组织知识,是AI从“工具”迈向“伙伴”的关键一步。
字号 100%
行距 2.05
当前可见 35% 的内容
本文由莫潇羽@源码七号站原创整理发布,转载请注明出处:www.fuyuan7.com

在AI领域,新名词的出现速度可能比你喝完一杯咖啡还快。从最初的提示词工程(Prompt Engineering),到智能体(Agent),再到MCP协议,然后是Computer Use、A2A(Agent to Agent)……而现在,又一个重量级概念走到了聚光灯下——Agent Skills(智能体技能)。

别担心,今天我们不玩那些高大上的学术名词。作为源码七号站的站长,我将用最接地气的方式,带你彻底搞懂Skill到底是什么、怎么工作、以及如何利用它让AI成为你真正的得力助手。


一、从提示词的痛点说起

1.1 一个关于豆浆的悲伤故事

想象一下这个场景:某天你突然想喝豆浆,于是问AI:"豆浆应该怎么做?"

AI回复:"泡黄豆少许,磨碎,加水适量,煮沸,最后放盐。"

等等,什么叫"少许"?"适量"是多少毫升?更重要的是——豆浆怎么能放盐?(甜党表示强烈抗议)

这个例子虽然简单,却精准暴露了早期AI对话的核心问题:模糊的输入导致模糊的输出。AI虽然聪明,但它不会读心术,如果你不告诉它具体要求,它只能按照"通用"的方式回答。

1.2 具体化提示词的诞生

后来,我们学会了一个技巧——向AI提问时要具体。于是问题变成了:

"告诉我豆浆应该怎么做。要求:材料精确到克或毫升,写出每一步的操作时间,并且我只喝甜豆浆,不要放盐。"

这样一来,AI的回答就靠谱多了:

  • 干黄豆100克,提前浸泡8小时
  • 沥干后放入豆浆机,加水1000毫升
  • 选择"湿豆"模式,运行约15分钟
  • 过滤后加入白砂糖15克,搅拌均匀

这种精确的提问方式,就是我们常说的提示词工程(Prompt Engineering)的雏形。

1.3 提示词爆炸的困境

随着使用场景越来越多,我积累了大量这种"规定输出内容"的提示词:

  • 问菜谱时,有一套专门的菜谱提示词
  • 读论文时,有一套专门的论文分析提示词
  • 写代码时,有一套专门的编程规范提示词
  • 做PPT时,有一套专门的演示文稿提示词
  • ……

每次使用时,我都要手动把对应的提示词复制过来。随着时间推移,提示词越积越多,有时候连我自己都忘了曾经写过某个特定场景的提示词。

这时候你可能会想:能不能把所有提示词一股脑儿全部发给AI,让它自己判断用哪个?

理论上可以,但实际操作中会遇到两个致命问题:

问题一:Token消耗爆炸

大模型的上下文窗口(Context Window)是有限的,每一段文字都要占用Token。如果把几十个提示词全部塞进去,还没开始干正事,Token就消耗大半了。这不仅浪费钱(API按Token计费),还会导致AI"记忆不够用",无法充分理解你的实际问题。

问题二:无关信息干扰

当上下文中存在大量与当前问题无关的信息时,AI容易"分心"。它可能会被不相关的提示词误导,给出偏离主题的回答。就像你问一个人怎么做豆浆,旁边却有人一直念叨论文写作规范——换谁都会晕。


二、Skill机制的横空出世

2.1 核心理念:按需加载

有没有一种机制,能让AI只加载与当前问题相关的提示词,而不是把所有提示词都塞进上下文?

有的,这就是Skill机制的核心设计思想。

简单来说,Skill机制实现了一个"智能筛选"的过程:

  1. 提前准备好多个不同用途的提示词(每个提示词就是一个Skill)
  2. 当用户提问时,AI先浏览所有Skill的"简介"
  3. 根据问题内容,判断哪些Skill与问题相关
  4. 只加载相关的Skill完整内容
  5. 根据Skill中的指示完成任务

这个机制被Anthropic(Claude的开发公司)称为渐进式披露(Progressive Disclosure)——就像一本组织良好的手册,先给你看目录,你选择需要的章节后,再展开详细内容。

2.2 Skill的物理结构

从技术角度来看,一个Skill本质上就是一个文件夹。这个文件夹里至少包含一个核心文件:SKILL.md

my-recipe-skill/
├── SKILL.md          # 核心文件,存放提示词和元数据
├── scripts/          # 可选:脚本文件夹
│   └── validate.py   # Python脚本
├── references/       # 可选:参考资料文件夹
│   └── techniques.md # 详细说明文档
└── assets/           # 可选:资源文件夹
    └── template.docx # 模板文件

其中,SKILL.md文件的结构如下:

---
name: recipe-skill
description: 用于生成菜谱的技能。当用户询问如何烹饪某道菜、需要菜谱建议、或提到做饭相关的话题时使用此技能。
---

# 菜谱生成技能

## 输出要求
- 材料精确到克或毫升
- 步骤精确到秒或分钟
- 默认使用中式烹饪方法
- 根据用户口味偏好调整调料

## 格式规范
1. 先列出所有材料和用量
2. 按时间顺序描述步骤
3. 每个步骤说明操作要点
4. 最后给出小贴士

文件开头用---包裹的部分叫做YAML Frontmatter(前置元数据),包含两个关键字段:

  • name:Skill的名称,用于标识
  • description:Skill的简短描述,这是最关键的字段

为什么description最关键?因为它就是前面说的"简介",AI通过阅读description来判断这个Skill是否与当前问题相关。一个好的description应该清楚说明这个Skill做什么以及什么时候使用


三、Skill的三阶段工作流程

莫潇羽@源码七号站在这里为大家梳理一下Skill机制的完整工作流程。整个过程可以分为三个阶段:Discovery(发现)、Activation(激活)、Execution(执行)。

3.1 第一阶段:Discovery(发现)

当你打开Claude或其他支持Skill的AI工具时,系统会进行一个初始化操作:

  1. 扫描所有已安装的Skill目录
  2. 读取每个Skill的SKILL.md文件
  3. 只提取name和description字段
  4. 将这些元数据整合到系统提示词中

举个例子,假设你安装了三个Skill:

  • 菜谱Skill
  • 论文分析Skill
  • PPT制作Skill

那么AI的系统提示词中会包含类似这样的内容:

可用技能:
1. recipe-skill: 用于生成菜谱的技能。当用户询问如何烹饪...
2. paper-analysis: 用于分析学术论文。当用户上传论文或询问...
3. pptx-creator: 用于制作演示文稿。当用户需要创建PPT...

注意:此时AI只看到描述信息,完整的提示词内容还没有被加载。每个Skill的元数据大约只占用30-50个Token,即使你安装了几十个Skill,也不会对上下文窗口造成太大压力。

3.2 第二阶段:Activation(激活)

当你提出问题后,AI会进行语义理解和匹配:

  1. 分析用户问题的意图
  2. 将问题与所有Skill的description进行比对
  3. 判断哪些Skill与当前问题相关
  4. 决定是否激活某个Skill

继续上面的例子,当你问"如何做豆浆"时,AI的思考过程大概是这样的:

"用户在问如何烹饪某种饮品...让我看看可用的技能...recipe-skill的描述说它'用于生成菜谱,当用户询问如何烹饪某道菜时使用'...这正好匹配!我需要激活这个技能。"

接下来,AI会生成一个特殊的指令,请求系统读取recipe-skill/SKILL.md的完整内容。这个请求对用户是不可见的——你在对话界面中不会看到这些中间步骤。

3.3 第三阶段:Execution(执行)

一旦Skill被激活,完整的提示词内容就会被加载到AI的上下文中。此时,AI就拥有了完成任务所需的全部"知识"。

但Skill的能力不止于此。如果Skill目录中还包含其他文件,AI可以根据需要继续读取:

  • 参考文档:比如references/cooking_tips.md中的烹饪技巧
  • 脚本文件:比如scripts/nutrition_calculator.py用于计算营养成分
  • 模板文件:比如assets/recipe_template.md标准化输出格式

这就是Skill机制的精妙之处:按需加载,层层深入

一个设计良好的Skill可以包含大量的参考资料和脚本,但这些内容只在需要时才会被加载,不会无端消耗Token。官方建议SKILL.md主体内容控制在500行以内,超出部分应该拆分到独立的文件中。


四、渐进式披露的设计哲学

4.1 为什么要用文件夹而不是单个文件?

在莫潇羽@源码七号站研究Skill机制的过程中,这个问题曾经困扰了我很久:既然核心内容都在SKILL.md里,为什么还要用整个文件夹来承载一个Skill?

答案就是渐进式披露(Progressive Disclosure)。

假设你的菜谱Skill特别详尽:

  • 包含了你七舅姥爷的独家口味偏好
  • 记录了你家厨房的全部厨具清单
  • 收录了100篇精选美食菜谱
  • 还有各种烹饪技巧和小贴士

如果把这些内容全部塞进一个SKILL.md文件,这个文件可能会有几万字。每次激活这个Skill,都要把几万字全部加载到上下文中——这显然不合理。

解决方案是分层存储

recipe-skill/
├── SKILL.md              # 只包含核心提示词和指引
├── references/
│   ├── uncle_preferences.md    # 七舅姥爷的口味
│   ├── kitchen_tools.md        # 厨具清单
│   └── top_100_recipes.md      # 100篇精选菜谱
└── scripts/
    └── nutrition_calc.py       # 营养计算脚本

SKILL.md中,我们只需要告诉AI这些文件的存在和用途:

## 可用资源

- 参考文档 `references/uncle_preferences.md`:特殊口味要求
- 参考文档 `references/kitchen_tools.md`:可用厨具列表
- 参考文档 `references/top_100_recipes.md`:精选菜谱合集
- 脚本 `scripts/nutrition_calc.py`:计算营养成分

根据用户需求,选择性地读取上述资源。

这样,AI在激活Skill时只加载核心提示词(可能只有几百字),只有当真正需要时才会去读取详细资料。比如用户问"做一道适合七舅姥爷口味的红烧肉",AI才会去读取uncle_preferences.md

4.2 嵌套引用的威力

渐进式披露还支持多层嵌套。比如top_100_recipes.md文件本身也很大,我们可以继续拆分:

references/
├── top_100_recipes.md    # 只包含菜谱索引和简介
└── recipes/
    ├── hongshaorou.md    # 红烧肉详细做法
    ├── gongbaojiding.md  # 宫保鸡丁详细做法
    ├── doujiang.md       # 豆浆详细做法
    └── ...

top_100_recipes.md中只列出菜名和简介,详细做法放在独立文件中。AI可以先浏览索引,找到用户想要的菜品后,再去读取具体的菜谱文件。

这种层层递进的结构,让Skill可以承载理论上无限量的知识,而不会在启动时拖垮上下文窗口。Anthropic官方数据显示,当Skill存在但未被使用时,Token消耗可以减少高达98%。


五、Skill + 代码执行 = AI的"行动力"

到目前为止,我们讨论的Skill主要是关于"知识"——告诉AI应该怎么回答问题。但Skill真正强大的地方在于它与代码执行能力的结合。

5.1 从"读取Skill"到"执行命令"

让我们回到AI读取Skill的那个步骤。前面说过,当AI决定激活某个Skill时,它会生成一个"请求读取文件"的指令。

这个指令是怎么执行的?

答案是:通过命令执行

如果你使用的是Claude桌面应用或Claude Code(命令行工具),这些命令会在你的本地电脑上执行。如果你使用

🔒
🔒 该内容仅对更高等级用户组开放,请升级您的账户等级以查看完整内容。
您当前:游客 · 可见 35% 内容 · 升级至 注册用户 可见 45%
👀
游客
可见 35%
✓ 当前
注册用户
注册用户
可见 45%
社区精英
社区精英
可见 100%
社区守护
社区守护
可见 100%
仅解锁本文,永久有效。如需PDF珍藏版,请联系站长获取。 当前单篇价格 ¥9.9
✏️ 发表评论

请先登录后发表评论

前往登录
📊 站点统计
今日发布0 篇
文章总数1247 篇
昨日发布3 篇
本月发布22 篇
建站时间383 天
🔍 搜索
📅 日历
« 2026 » « 08 »
     12
3456789
10111213141516
17181920212223
24252627282930
31      
站长微语

联系站长

微信:165255185
AIGC 技术社区
致力于解码 AI前沿技术 与经验分享
纯粹的技术交流社区

💡 欢迎您的建议与反馈,让社区变得更好

快速通道
联系站长
站长微信二维码
AI交流群
AI交流群二维码
友情推荐