从零开始写好 Skill(一):Skill 是什么?为什么你应该关心它

欢迎阅读「从零开始写好 Skill」系列文章 —— 上一个系列我们用 7 篇文章拆解了 Agent 的骨架,这个系列教你给 Agent 写"工作手册"。
第一篇:Skill 是什么?为什么你应该关心它(本文) 第二篇:一个好 Skill 长什么样(即将更新) 第三篇:手把手写你的第一个 Skill(即将更新)
作者:十一
▍开场:一个所有人都遇到过的场景
朋友在群里转了一篇公众号文章。
你点开看了,写得真好,想存下来以后反复看。于是你把链接丢给 Agent:
" 帮我把这篇公众号文章下载到本地,转成 Markdown,再给我一个要点总结。"
Agent 回你:
抱歉,我无法直接访问微信公众号的链接。微信公众号文章有反爬机制,我没有办法获取页面内容。
不过你可以试试以下方法:
1. 在浏览器中打开文章,手动复制全文
2. 使用"保存为 PDF"功能
3. 使用第三方工具如 MarkDownload 浏览器插件
如果你把文章内容粘贴给我,我可以帮你整理和总结。
对话到这里就死了。
Agent 很礼貌,很诚实,给了你三条"建议"——但没有一条是它帮你做的。你还是得自己动手复制粘贴。
这不叫帮忙,这叫甩锅。
▍换个 Agent 试试?
不,不用换 Agent。同一个 Agent,同一个模型,同一个链接,再来一次。
这次唯一的区别是:你给它装了一个叫 wespy-fetcher 的 Skill。
" 帮我把这篇公众号文章下载到本地,转成 Markdown,再给我一个要点总结。"
Agent 回你:
好的,我来获取这篇文章。
(自动调用 wespy-fetcher,抓取公众号文章内容,转为 Markdown)
文章已保存到 ~/Documents/articles/2025-03-12-agent-native-api.md。
以下是要点总结:
核心观点: Agent 时代的云服务 API 需要从"人类友好"转向"Agent 友好"——减少交互轮次、提供结构化响应、支持批量操作。
三个关键论点:
1. 传统 REST API 为人类设计的分页、确认弹窗等交互模式会严重拖慢 Agent 的执行效率
2. Agent 友好的 API 应该提供"意图级"接口,而不是"操作级"接口
3. 未来 API 的文档本身就是写给 Agent 看的,可读性需要为机器优化
需要我对其中某个部分展开分析吗?
同一个 Agent。同一个模型。同一个链接。
第一次说"我做不到",第二次说"做好了"。
区别在哪?
区别在于,第二次它手里多了一份"工作手册"。这份手册告诉它:遇到公众号链接时,不要说"我做不到"——去调用一个叫 WeSpy 的工具,它能帮你绕过反爬机制抓取内容。手册还告诉它:抓完之后转成 Markdown 格式,保存到指定目录,文件名用日期加标题。
这份工作手册,就叫 Skill。
打个比方:你公司来了个新员工,聪明、勤快、学啥都快——但他第一天上班,啥流程都不知道。你让他"帮忙处理一下客户投诉",他可能直接回复客户说"不好意思我们解决不了"。不是他笨,是他不知道公司有工单系统、有处理流程、有需要抄送的负责人。
给他一份《客户投诉处理 SOP》,他立刻就能按流程操作。
Agent 也是一样。模型就是那个聪明的新员工,Skill 就是你递给他的那份 SOP。
▍一、Skill 到底是什么?
上面用比喻讲清楚了 Skill 的角色——Agent 的 SOP。但光知道"它是个 SOP"还不够,我们拆开看看它具体包含什么。
一个 Skill 就是一个 Markdown 文件,通常叫 SKILL.md,用人类的语言写清楚三件事:
-
什么时候该用我——遇到什么样的任务,Agent 应该想到这个 Skill -
具体怎么做——一步一步的操作流程,用什么工具、按什么顺序 -
注意什么——边界条件、常见坑、出错了怎么办
就这三件事,不多不少。
还是用公众号那个例子来说:wespy-fetcher 这个 Skill 告诉 Agent 的就是——"当你看到 mp.weixin.qq.com 的链接,别说做不到,去调用 WeSpy 这个工具,按这个步骤抓取内容,保存成 Markdown"。Agent 的智商没变,但它突然"知道该怎么做了"。
▍二、为什么没有 Skill 的 Agent 会说"我做不到"?
这个问题值得多想一步。
Agent 说"我无法访问公众号链接",它在撒谎吗?不是。它说的是事实——以它当前掌握的信息和工具,它确实做不到。就像那个新员工说"我不知道怎么处理投诉"也不是在偷懒,他是真不知道。
问题出在信息差。
Agent 的底座模型知道的东西很多——编程、写作、分析、翻译——但它不知道有一个叫 WeSpy 的开源工具可以抓取公众号内容。它也不知道该把抓回来的内容存到哪个目录、用什么格式命名。这些"领域知识"不在模型的训练数据里,或者即使在,它也不知道什么时候该用。
Skill 做的事情就是填补这个信息差。
它不是让 Agent 变得更聪明(模型能力没变),而是告诉 Agent:你其实有这个能力,只是你不知道而已。这里有一个工具,这样调用,按这个流程走。
这就是为什么 Skill 的核心价值不是"提升质量",而是扩展能力边界。没有 Skill,Agent 只能做模型本身"知道怎么做"的事;有了 Skill,Agent 能做任何"有人教它怎么做"的事。
▍三、Skill 和 Prompt 有什么区别?
你可能会想:这不就是写一段更详细的 Prompt 吗?
不完全一样。区别在三个地方:
1. 触发方式不同
Prompt 是你每次对话时手动输入的。Skill 是预先写好、自动匹配的——Agent 遇到符合条件的任务,会自己去读对应的 Skill,不需要你每次都把操作流程重复一遍。
你不会每次让新员工处理投诉时都把 SOP 念一遍。你把 SOP 放在那里,他遇到了自己去查。Skill 是同一个逻辑。
2. 复用性不同
一段 Prompt 是一次性的,换个对话窗口就没了。Skill 是持久化的文件,写一次,所有后续对话都能自动生效。你可以分享给同事,发布到 GitHub 让全世界用。
上面提到的 wespy-fetcher 就是一个开源的 Skill(GitHub 仓库[1])。作者把自己的经验写成了一个 SKILL.md 文件,任何人装上就能用,不需要重新摸索"公众号文章怎么抓"这个问题。
3. 结构化程度不同
Prompt 是自由文本,怎么写都行。Skill 有相对固定的结构——什么时候触发、具体步骤、依赖什么工具、注意事项。这种结构化让 Agent 更容易"读懂"你的意图。
当然,从本质上说,Skill 最终也是以文本的形式注入到 Agent 的上下文中的。你可以把 Skill 理解为一种结构化的、可复用的、自动触发的 Prompt。但正是"结构化"、"可复用"、"自动触发"这三个特性,让它和随手写的 Prompt 有了质的差别。
▍四、一个真实的 Skill 长什么样?
说了这么多,Skill 文件到底长什么样?
以刚才的 wespy-fetcher 为例,下面是它真实的 SKILL.md 文件(来自 GitHub仓库[2])。
别被下面这段"代码"吓到——它其实就是一份分了几个章节的文档,跟你在 Word 里写标题加正文没什么区别,只不过格式是 Markdown。我加了批注帮你看懂每一段在干什么:
--- name: wespy-fetcher description: 获取并转换微信公众号/网页文章为 Markdown 的封装 Skill, 完整支持 WeSpy 的单篇抓取、微信专辑批量下载、专辑列表获取、 HTML/JSON/Markdown 多格式输出。 Use when user asks to 抓取微信公众号文章、公众号专辑批量下载、 URL 转 Markdown、保存微信文章、mp.weixin.qq.com to markdown. --- # ↑ 这段是"身份证":告诉 Agent 这个 Skill 叫什么、什么时候该用它。 # WeSpy Fetcher 封装 tianchangNorth/WeSpy 的完整能力。 ## 功能范围(与 WeSpy 对齐) # ↑ 这段是"能力清单":告诉 Agent 你能做哪些事。 - 单篇文章抓取(微信公众号 / 通用网页 / 掘金) - 微信专辑文章列表获取(--album-only) - 微信专辑批量下载(--max-articles) - 多格式输出(Markdown 默认,支持 HTML / JSON / 全部) ## 使用 # ↑ 这段是"操作手册":一步步告诉 Agent 该调用什么命令。 脚本位置:scripts/wespy_cli.py # 单篇文章(默认输出 markdown) python3 scripts/wespy_cli.py "https://mp.weixin.qq.com/s/xxxxx" # 专辑批量下载 python3 scripts/wespy_cli.py "https://mp.weixin.qq.com/mp/appmsgalbum?..." --max-articles 20 ## 实现说明 # ↑ 这段是"注意事项":依赖什么、文件放哪、出错了怎么兜底。 - 优先使用本地源码路径 ~/Documents/QNSZ/project/WeSpy - 若本地不存在则自动执行 git clone 到该目录 - 通过导入 wespy.main.main 直接调用上游 CLI,保持行为一致
看出来了吗?回头对照前面说的 Skill 三要素:
-
什么时候该用我 → 最上面的 description字段 -
具体怎么做 → "使用"章节里的命令和参数 -
注意什么 → "实现说明"里的依赖和兜底逻辑
没有复杂的代码逻辑,没有 API 对接,就是用 Markdown 写清楚了"遇到这种任务该怎么做"。
但就是这么一个文件,让 Agent 从"抱歉我做不到"变成了"已经帮你搞定了"。
▍五、Skill 的生态已经在爆发
你可能会想:就算 Skill 有用,我也不想每个任务都自己从头写一个吧?
好消息是,你不需要。
就像手机的 App Store 一样,Skill 正在形成自己的生态。开源社区已经有了大量现成的 Skill,覆盖各种场景:
-
wespy-fetcher:抓取公众号文章,转 Markdown -
x-fetcher:抓取 X(Twitter)推文和长文章 -
video-downloader:下载 YouTube 视频 -
invoice-scanner:扫描识别发票,生成分类报告 -
code-roaster:用 Gordon Ramsay 风格吐槽你的代码质量 -
voice-changer:音频变声处理 -
……
仅 wlzh/skills 这一个仓库[1]就有十几个实用 Skill。而在更大的社区里,像 awesome-agent-skills[3] 这样的汇总仓库已经收录了数千个 Skill,覆盖开发、运营、内容创作、数据分析等各种领域。
你可以直接用别人写好的 Skill,也可以在别人的基础上修改,当然也可以自己从头写——这正是这个系列接下来要教你的。
▍六、为什么你应该关心 Skill?
三个理由:
Skill 是当前 Agent 生态中杠杆最高的投入。
换一个更贵的模型,效果可能提升 10%。写一个好的 Skill,效果可能从"做不到"变成"做得到"——这不是 10% 的提升,是从 0 到 1 的突破。
Skill 是可以积累的资产。
每写一个 Skill,Agent 就多一个能稳定完成的任务类型。十个 Skill,Agent 就能覆盖你日常工作的十个高频场景。Skill 库越大,Agent 越好用,这是一个正向飞轮。
Skill 是"有经验的人"的超级杠杆。
在 Agent 时代,模型是通用的、工具是公开的,但经验是独特的。你在某个领域踩过的坑、总结的最佳实践、积累的 know-how——这些东西以前只存在你的脑子里,教别人要靠口口相传。现在你可以把它写成 Skill,让 Agent 帮你(和所有人)执行。
这不是 AI 取代人,这是人通过 Skill 放大自己的经验。
下一篇预告
现在你知道 Skill 是什么了:一个 Markdown 文件,告诉 Agent "遇到这类任务该怎么做"。你也看到了它的威力——同一个 Agent,有没有 Skill,表现天差地别。
但你可能已经好奇了:我们刚才看到了 SKILL.md 的大致结构,但每个部分到底该怎么写才算"写得好"?同样是写 description,为什么有的 Skill 能精准触发,有的却总是被 Agent 忽略?同样是写操作步骤,为什么有的 Skill 让 Agent 一步到位,有的却让 Agent 反复出错?
下一篇,我们拿真实的 SKILL.md 文件开刀,一段一段地拆给你看——不只是"每段是什么",而是"每段怎么写才有效"。
「从零开始写好 Skill」系列是「从零开始理解 Agent」系列的姊妹篇。如果你还没有读过 Agent 系列,建议先从 第一篇:Agent 的底层原理[4] 开始,理解 Agent 的基础架构后再来学 Skill,效果更好。
相关链接
[1] GitHub 仓库: https://github.com/wlzh/skills
[2] wespy-fetcher 仓库: https://github.com/wlzh/skills/tree/main/wespy-fetcher
[3] awesome-agent-skills: https://github.com/VoltAgent/awesome-agent-skills
[4] 第一篇:Agent 的底层原理: https://mp.weixin.qq.com/s/gz_vPvgTdozh4FO6vEdF-Q

关注 AGENT 魔方公众号,回复 Agent
免费领取「从零开始理解 Agent」全套资料包
加速入门和掌握 Agent:

- 点赞
- 收藏
- 关注作者
评论(0)