最近在折腾 Agent 开发,相信大家都经历过这样的崩溃时刻:当你满怀期待地向 Agent 提出一个需求,结果它要么答非所问,要么胡乱执行,最后还一脸无辜地问你“我做得对吗?”(是不是似曾相识!)

Agent 正经历从“被动应答”到“主动执行”的跨越式进化,而 Skills 正是驱动这场变革的核心引擎。你是否也曾被 Agent 的“规则无视”“执行混乱”和“工具不会用”等问题困扰?

本文将从概念解析、工作原理、实践方法到资源推荐,全方位拆解 Skills 这个让 Agent 变得可靠、可控、可复用的“高级技能包”。无论你是开发者还是普通用户,都能在这里找到让 Agent“开窍”的实用指南。


一、Skill:Agent的“专业技能包”

以前我们总抱怨 AI“只会说不会做”,直到 Skills 这个概念出现。简单说,Skills 就是给 AI 装上的“外挂技能包”

想象一下,你招了个聪明的实习生(Agent),他学习能力强但没经验。这时候你给他一本《Git操作从入门到精通》(Skill),他立马就能帮你管理代码版本了。

一个完整的 Skill 包含三个核心部分:

  • 说明书(SKILL.md):用大白话告诉 AI 这个技能是干嘛的、怎么用、要注意什么。

  • 可执行脚本:AI 能直接跑起来的代码,比如 .py、.js 文件。

  • 参考资料:辅助这个技能运行的各种文档、模板。

有了 Skills,你的 Agent 就不再是那个“理论派”了,而是能真正动手干活的“实践派”。

简单来说,Skills 就是为 Agent 量身打造的“技能包”,它把完成特定任务所需的领域知识、操作流程、工具调用方式及最佳实践全部封装其中,让 AI 面对特定需求时,能像领域专家一样自主高效执行。


二、Skill如何工作?智能版的“按需加载”

Skills 最聪明的地方在于它的加载机制——需要多少,加载多少。这就像你去图书馆查资料,不会把整个图书馆的书都搬到桌上,而是先看目录,找到需要的书,再翻到具体章节。

Skills的三层分级加载机制:

加载级别

加载时机

Token 消耗

核心内容

L1:元数据

Agent 启动时

约 100 Token / 技能

YAML 格式的名称、描述(技能“名片”)

L2:说明文档

技能被触发时

低于 5000 Token

SKILL.md 中的工作流程、操作指南、示例

L3:资源文件

按需加载

几乎无限制

可执行脚本、配置文件、API 文档等

这种“按需取用”的设计,既避免了上下文冗余,又能保证技能执行的深度。

智能调用四步流程:

Agent 对 Skill 的调用过程,就像专业助理处理工作的全流程:

  1. 意图匹配:Agent 先解析用户需求,快速扫描所有 Skill 的元数据,找到最匹配的技能;

  2. 读取指南:加载匹配技能的 SKILL.md 文件,掌握详细执行步骤和注意事项;

  3. 按需执行:根据指南调用对应脚本、工具或参考资料,逐步推进任务;

  4. 反馈结果:完成任务后汇报成果,遇到问题时及时向用户询问。


三、Skills vs MCP:本质区别在哪里?

这里有个常见的误区:很多人把 Skills 和 MCP(模型上下文协议)搞混了。让我用程序员的语言解释一下:

  • MCP 更像是“函数声明”——告诉你有哪些工具可用,但不教你怎么用。

  • Skills 则是完整的“开发文档+代码示例”——不仅告诉你有这个功能,还手把手教你什么时候用、怎么用、注意事项是什么。

举个具体例子:假设你要 Agent 帮你查数据库。

  • MCP方式:Agent 知道有个 query_database() 函数,但不知道具体怎么构造查询语句、怎么处理异常。

  • Skill方式:Agent 知道“如果你需要查用户数据,先用这个脚本连接数据库,查询模板在这里,常见错误处理方法在这里…”。

我们来个表格直观看看:

对比项

Skills

MCP

定位

任务执行模块

系统连接协议

核心能力

封装脚本和模板,直接执行任务

接入外部数据源、服务

使用方式

按需加载、像插件一样调用

开发者需配置、注册、连接系统

适合人群

日常办公 / 测试 / 文档自动化

企业级系统集成 / 跨平台任务

举例

生成测试报告、转文件格式

自动同步数据到 ERP、CI 系统

MCP 往往过于精简,而 Skills 提供了完整的上下文。

尽管支持延迟加载的 MCP 看似应该表现更优,但它实际上需要在大语言模型(LLM)API 层面进行大量工程优化。而 Skills 体系完全无需这些额外操作,且至少根据我的经验,其表现仍然更胜一筹。

Skills 本质上只是简短的摘要,说明存在哪些 Skills 以及智能体可以在哪个文件中了解更多相关信息。这些摘要会被主动加载到上下文环境中,因此智能体能够在系统上下文(或对话后期的某个位置)知晓自己具备的能力,并获得使用指南的链接。

至关重要的是,Skills 并不会将工具定义实际加载到上下文里。工具本身保持不变:仍然是 bash 和智能体已有的其他工具。智能体从 Skills 中获取的,只是如何更高效地使用这些工具的技巧和方法。由于 Skills 的核心是教会智能体如何使用其他命令行工具及类似实用程序,因此工具之间的串联与协作逻辑并没有本质变化。而让 Claude 系列模型成为优秀工具调用者的强化学习机制,同样能够帮助其掌握这些新发现的工具使用方法。


四、MCP 能否转化为 Skills?

这自然引出一个问题:既然 Skills 如此好用,能否将 MCP(模型上下文协议)完全移出上下文,通过命令行界面(CLI)像 Anthropic 提议的那样调用?答案是可以,但效果并不好。其中一个方案是 Peter Steinberger 开发的 mcporter 工具,它能读取 .mcp.json 文件,并将其中的 MCP 暴露为可调用的工具。

从形式上看,它非常像大语言模型可以调用的命令行工具,但问题在于大语言模型完全不知道有这些工具存在,你需要专门教它。这时你可能会想:为什么不创建一些 Skills 来让大语言模型了解这些 MCP 呢?

但对我来说,核心问题在于 MCP 服务器并不注重 API 稳定性,它们为了节省令牌,正越来越多地将工具定义精简到最低限度。这一点本身合情合理,但与 Skills 模式的需求背道而驰。例如,Sentry MCP 服务器曾一度将查询语法完全改为自然语言,这对智能体来说是个很大的改进,但我之前编写的使用指南反而变成了障碍,而且我并没有立刻发现这个问题。

这实际上与 Anthropic 的延迟工具加载存在相似的弊端:上下文环境中完全没有工具相关信息,你必须创建摘要。我们过去采用的 MCP 工具即时加载方案,最终陷入了一个尴尬的妥协:工具描述既冗长到不适合即时加载,又简短到无法真正告诉智能体如何使用。因此至少在我看来,最终还是需要手动维护这些通过 mcporter 或类似工具暴露的 MCP 工具的 Skills 摘要。


五、最省力的选择

这让我得出了目前的结论:我更倾向于选择最简便的方式,让智能体自行编写工具作为 Skills。这种方式不仅耗时不长,最大的优势在于工具基本处于我的掌控之中。每当工具出现故障或需要新增功能时,我只需让智能体进行调整即可。

Sentry MCP 就是一个很好的例子:它可能是设计最完善的 MCP 之一,但我已经不再使用它了。部分原因是,一旦将其即时加载到上下文,会直接占用约 8000 个 tokens,而通过 mcporter 调用的方案也未能成功。相反,我让 Claude 为我维护一个相关 Skills,虽然这个 Skills 可能存在不少漏洞,需要不断更新,但由于是智能体自主维护,整体效果反而更好。

这种情况很可能会发生变化,但目前而言,手动维护 Skills 以及让智能体自行编写工具已成为我的首选方式。我猜测,支持动态工具加载的 MCP 未来可能会成为趋势,但这需要进行大量协议调整,以引入类似 Skills 的摘要和工具内置指南。同时我也认为,MCP 若能实现协议稳定性,将会极大受益——MCP 服务器随意修改工具描述的做法,与实际调用需求以及 README 文件和 Skills 文件中的外部工具描述无法很好地兼容。

在实际应用中,最强的是组合拳:Skills + MCP = 模块执行 + 系统联动


六、实战技巧:打造优质Skills的五大心法

  1. 单一职责原则一个 Skill 只做一件事,别贪心。比如“Git提交信息生成器”就只负责生成提交信息,别让它还顺带执行 git push

  2. 示例驱动多说无益,直接上例子。在 Skill 里多放几个具体的使用示例,AI 学得最快。

  3. 清晰的输入输出像设计 API 一样设计 Skill 的接口。输入参数要明确,输出格式要规范。

  4. 原子化设计把 Skill 设计得像乐高积木,可以灵活组合。比如“数据查询”Skill 的输出,可以直接作为“图表生成”Skill 的输入。

  5. 持续迭代没有完美的 Skill,只有不断改进的 Skill。记录下每次使用中出现的问题,定期更新 Skill。


七、常见问题解答

1. 为什么我的 Skills 不生效?核心原因是元数据中的描述(Description)不够清晰。Agent 通过描述判断何时调用技能,建议用大白话明确 Skills 用途和触发场景,避免模糊表述。

2. 大模型对 Skills 使用效果有影响吗?有影响但侧重不同:强大的模型能更精准匹配技能、规划执行顺序(策略层面);而 Skill 本身决定任务执行的基础质量和稳定性(执行层面)。

3. Skills 有哪些不擅长的场景?

  • 高度创造性任务(比如写诗、做原创设计,这还得靠 AI 本身的创造力);

  • 实时动态决策场景(比如股票交易,Skills 的反应速度可能跟不上市场变化);

  • 简单知识问答或开放式闲聊(单纯聊天不需要专门的 Skill)。

4. 可以修改社区 Skills 适配自身需求吗?完全可以!大多数社区 Skill 支持 Fork 后二次开发,建议以通用技能为模板,根据业务需求调整逻辑和参数,助力生态共建。


八、结语:让AI真正成为生产力工具

Skills 的出现,解决了一个根本问题:如何让 AI 不仅懂理论,还能上手实操。它通过结构化封装专业知识和操作流程,让 AI 从“纸上谈兵”变成“实战高手”。

对我这样的开发者来说,最大的好处是:可控、可复用、可迭代。我不再依赖那些黑盒式的 MCP 服务器,而是能自己定义和维护 AI 的技能。

当然,现在的 Skills 生态还在早期阶段,但已经能看到它的潜力。从官方提供的基础 Skills,到社区贡献的各种专业 Skills,这个生态正在快速成长。

如果你还在为 Agent 的“智障”表现头疼,不妨试试 Skills。从一个简单的 Skill 开始,比如自动生成 commit 信息的 Skill,你会明显感觉到 AI 变得“靠谱”多了。

最后,分享一个我的体会:最好的 Skill,往往是那些解决你日常工作痛点的 Skill。别追求大而全,小而美往往更实用。

好了,今天的分享就到这里。如果你也在折腾 Agent 开发,欢迎交流心得。毕竟,让 AI 真正帮我们干活,而不是增加我们的工作量,这才是技术进步的真正意义。

下一篇文章给大家讲如何使用Skills,感兴趣的欢迎点赞关注加收藏,不迷路!


AI应用开发入门到精通宝藏地图,理论+实战往期精彩文章

1、宝藏地图已绘制!AI开发入门到精通,我都为你规划好了

2、一文看懂Embedding:用代码给大家讲清这个核心概念

3、告别接力!Transformer的「圆桌会议」才是AI的高效沟通术

4、提示词工程:这样跟AI说话,它才听你的!

5、上下文工程:让你的AI对话不再“失忆

6、RAG实战:我让AI成了“老中医”,问诊开方有据可循!

7、函数调用:让AI学会使用工具,从“思考者”变身“行动派”

8、LangChain实战入门(一):告别“裸调”API,从Model I/O开始优雅构建AI应用

9、LangChain实战入门(二):RAG实战——赋予大模型你的私有知识库

10、LangChain实战入门(三):Agents实战——让AI成为能思考、会行动的数字员工

11、LangChain实战入门(四):融合篇——打造有记忆、能协作的AI应用

12、LangChain实战入门(五):项目篇——构建企业级AI应用系统

13、用LlamaIndex打造你的专属知识库助手

14、一文读懂MCP:MCP协议如何连接大模型与现实世界

15、Dify入门指南:开启你的低代码AI应用开发之旅

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐