
大模型的 Skills 已经不新鲜了
随便一查就能有答案,「技能」「经验包」「说明书」,这些概念当然其实也不难理解,但是我想从我们日常使用AI的场景去理解
比如通常我们想让 AI 去开发一个工具,比如说 公众号管理
我们会进行这样的对话
帮我开发一个公众号管理工具
目的有两个
1.公众号文章数据变化
2.粉丝数据变化


OK,我们可能需要抓取数据
我们使用官方的API 还是自己爬


尝试中...

真笨啊
我看到请求粉丝的接口是
https://xxx,你去尝试调用


请求没跑通,浏览器拦截了接口
net::ERR_BLOCKED_BY_CLIENT
我要做的是自动化
为什么会被拦截,想想怎么处理


好的,是 Codex 操作浏览器受限了
我将写个采集程序控制专用浏览器
...以下省略无数轮对话...
在你花了大量时间,消耗了无数Token 之后,最后当然也是可以顺利完成
但是你会发现,不止你一个人有这种工具的需求
但是大家都一样,一轮轮地对话,方案对齐,无效试错
明明需求一样,但是大家仍然都是重复花费大量精力和Token 去重复做一件事
有没有一种办法,可以已经落地成功的决策,全部固化保存下来
让有需求的人,可以快速复用这套成熟方案?
比如把 我上面的和 AI 磨合出来的字段设计、爬取逻辑、存储方式、稳定流程 ,这些 决策结果 固化下来,下次不用再吵一遍架
这便是 Skill 核心逻辑
让别人跳过 「探索-试错」烧Token的阶段
让别人更「稳定」「高效」「省钱」「省时间」地快速得到工具
用这个 weixin-skill 帮我爬取我的公众号数据


OK,已经爬取成功
文章阅读量 100w+
粉丝 100w+
我理解,这其实就是一种蒸馏
什么是蒸馏? → 蒸馏
和小模型的对话 通常十分费劲,而如果我们用顶尖模型去探索出成功方案之后,也就是蒸馏出 Skill,再让 小模型 照着做,那这就显得简单性价比更高
艾玛,一键复用!
上面我们从日常开始去 理解了 skill
那 skill 具体是什么样呢?怎么去把我们对话的
其实简单来说 Skill 无非就是 一套提示词
只不过它具体的形态就有所不同
一份 Markdown 可以是 Skill
一份 Markdown + 脚本 可以是Skill
一份 Markdown + 脚本 + 模板 也可以是Skill
不管目录多复杂,内容多大
核心都是那份 Markdown,也就是 SKILL.md
脚本 或者 模板,都是为 SKILL.md 服务
—— 在 SKILL.md 注明什么时候用什么 脚本 或 模板
而 SKILL.md 的内容,无非就是把「流程」「处理方法」保存下来
比如这样我上面的工具 SKILL.md
1. 简介
当用户想要微信公众号数据时,自动抓取公众号,清洗并提取内容。
2. 触发条件
用户明确要求“抓取”、“爬取” 公众号
3. 执行工作流
1.让用户扫码登录
2.自动调用后台脚本 `scripts/crawler.py `。
3.等待脚本返回 结果
4.如果返回成功,将 JSON 中的 `title`、`author` 以精美的 Markdown 格式排版,并友好地呈现给用户
然后Skill文件夹的结构是
/skills/wechat-data-handler/
├── SKILL.md #说明书
└── scripts/
├── crawl_wechat.py #已经调通核心爬虫脚本
└── save_to_db.py # 数据库写入脚本
这个太简单的话
我们来看看 归藏的PPT Skill 都有什么东西

别看东西多,那也不是一次性生成的,人家迭代了五次,踩了无数次坑才出来的
你想想要是每个人重头弄,那得多麻烦,有些细节还不了解
那 Skill 已经包含了完整的处理流程和方法的话
而 AI 是怎么使用Skill 的?
如果你了解 AI 是怎么携带记忆的话,你应该就可以轻松理解
Agent 其实就是 所有的Skill 和你的对话内容 一起发给 大模型(当然,这是背后做的)
你以为你发送的只有一句话
帮我爬取我的公众号数据


OK,已经爬取成功
文章阅读量 100w+
粉丝 100w+
其实真正发送给大模型的是
[SKILL 1.md]
[脚本 1]
[模板 1]
[SKILL 2.md]
[脚本 2]
[模板 2]
帮我爬取我的公众号数据


OK,已经爬取成功
文章阅读量 100w+
粉丝 100w+
那你就有问题了
“难道每次对话都需要把 [所有Skill + 我的指令] 发给大模型? ”
是的,因为大模型是没有记忆的,必须每次对话都完整告诉它,当然这些不需要你做,是Agent 背后完成的
不懂可以看这个,AI 是如何携带记忆
“那如果有很多Skill,岂不是发送内容体积爆炸了??”
对,不过这里涉及到 Skill 的一个优化机制
渐进式加载
Skills 允许 Agent 采用 L1 → L2 → L3 级别的渐进式、按需加载机制
L1:初始化时,大模型只读取 SKILL.md 里的名称和简介,让 AI 知道有什么技能可以用
L2:只有当用户任务与该技能匹配时,Agent 才会触发读取工具,加载该 Skill 详细的工作步骤和规范
L3:在执行中,如果需要,才会去调用 脚本 或者 素材
就这样解决了上下文体积爆炸的问题
而生成 Skill 本身也很简单,当然不需要你手动写(都AI 时代了!!)
有 Skill-creator 这个 Skill!!!
比如我已经和 AI battle 很多轮,完成了工具开发,我直接让它基于我们的内容 生成 skill

OK了, 那这便是 Skill 的全部内容了
可以帮我们省时间省精力省钱的一个玩意
所以当我们开始一个新项目的时候,应该先去问AI 有没有什么 Skill 支持,从而可以快速实现
(完)
夜雨聆风