大白话讲解SKILL和MCP
智能体是不知疲倦的机器人。SKILL 是给机器人看的说明书、工作指南,比如车辆维修手册。MCP 是给机器人用的工具,比如维修工具箱里的扳手、螺丝刀。
机器人的工作能力靠 SKILL 和 MCP 共同实现。只给工具 MCP,不给说明书 SKILL,机器人能力有限——就像一个普通人有扳手螺丝刀也修不了汽车发动机。反过来只有 SKILL 没有 MCP,机器人就成了”巧妇难为无米之炊”。
好在很多 SKILL 开头就会写清楚需要哪些 MCP、怎么安装这些 MCP。就像汽车维修手册前面写着”所需工具清单”和”工具购买渠道”。也有些 MCP 没有对应的 SKILL——大部分情况下 MCP 的名称已经足够让机器人知道怎么用了。就像你拿到一根吸管不需要说明书,看一眼就知道是做什么的。
什么是 SKILL
一句话定义
SKILL 就是一个文件夹,里面有一份写满了”怎么干活”的 Markdown 文件,外加可选的脚本、参考文档、模板等辅助材料。
打开任何一个 SKILL,你会看到一个 SKILL.md 文件,开头是元信息,后面是具体的操作步骤。就像你买宜家家具时附带的那张安装图纸——告诉你第一步拧哪个螺丝、第二步装哪块板。
Skill 长什么样
1 | my-skill/ |
SKILL.md 文件的前半段是 YAML 头,记录”我是谁、我干什么、我需要什么”:
1 |
|
后半段是纯文本操作指南——告诉机器人第一步做什么、第二步做什么、遇到问题怎么办:
1 | ## 这个 Skill 什么时候用 |
Skill 的核心理念:渐进式披露
机器人不需要一开机就把所有说明书读完。Skill 设计了三层加载:
- 第一层(启动时加载):只读 Skill 的
name和description,约 100 个 token。机器人知道”我有这些说明书可用”,但不打开看内容; - 第二层(任务匹配时加载):当用户说”帮我处理这个 PDF”,机器人才打开对应的
SKILL.md,读完整操作步骤,通常不超过 5000 token; - 第三层(按需加载):如果操作步骤里引用了
references/api-docs.md,只在真正需要时打开那个文件。
这套机制意味着机器人可以随身携带 100 本说明书,但只有干活时才翻对应的那本。不干活的书不占脑容量。
一个真实例子:systematic-debugging
拿 Hermes Agent 自带的 systematic-debugging 这个 Skill 举例。它不教机器人怎么用某个工具,而是教机器人怎么思考——遇到 Bug 时该怎么排查:
- Iron Law:不找到根因,不许动手修。
- 四阶段:Phase 1 找根因 → Phase 2 找模式 → Phase 3 提假设并验证 → Phase 4 修根因。
- 红线清单:如果脑子里冒出”先随便改改试试”,立刻 STOP,滚回 Phase 1。
- 如果改了 3 次还没修好:别再改了,是架构问题,不是 Bug 问题。
这本”说明书”不会修任何一个具体的 Bug,但它让机器人学会了正确的修理姿势。就像驾校教练不帮你打方向盘,但教你什么时候看后视镜。
Skill 的行业标准
Skill 不是某一家公司的私有格式。它遵循 agentskills.io 开放标准,最初由 Anthropic 提出,现已被 Claude Code、GitHub Copilot、VS Code、Cursor、OpenAI Codex、Gemini CLI、Hermes Agent 等 30+ 个 AI Agent 产品支持。你写一份 Skill,可以在不同产品间复用。
什么是 MCP
一句话定义
MCP(Model Context Protocol)是连接 AI 和外部系统的”USB-C 接口”——一个标准协议,让 AI 可以调用任何外部工具,不管这个工具是本地文件系统、数据库、浏览器,还是远程 API。
为什么需要 MCP
传统方式下,每个 AI 应用要对接一个新工具,开发者就得单独写一套集成代码。100 个 AI 应用 × 100 个工具 = 10,000 套集成。MCP 把这个变成了 N + M 的关系:工具开发者按 MCP 标准写一个 Server,所有支持 MCP 的 AI 应用都能用它。
就像 USB-C 出现之前,手机、笔记本、充电宝各有各的接口。USB-C 统一后,一根线通吃所有设备。MCP 在 AI 世界里干的就是这件事。
MCP 怎么工作
MCP 架构分三部分:
- MCP Host:AI 应用本身(比如 Claude Desktop、Hermes Agent、VS Code)
- MCP Client:Host 内置的客户端,负责和各个 Server 维持连接
- MCP Server:一个个独立的”工具包”进程,暴露具体能力
1 | 用户 → AI 应用(Host) → MCP Client → MCP Server(GitHub) → GitHub API |
机器人不需要知道每个工具后面是什么。它只看到一个标准化工具列表,像这样:
1 | mcp_github_create_issue # 创建 GitHub Issue |
两种 MCP Server
Stdio 型(本地子进程):Server 跑在本地电脑上,通过标准输入输出和 AI 通信。适合文件系统操作、本地数据库等场景。配置起来只是一行命令:
1 | mcp_servers: |
HTTP 型(远程服务):Server 部署在云端,AI 通过网络连接。适合企业内部 API、SaaS 工具等场景:
1 | mcp_servers: |
现实世界的 MCP 应用
- AI 直接操作你的 GitHub:创建 Issue、Review PR、合并分支,不需要你打开网页
- AI 查询公司数据库:用自然语言”上个月销售额最高的 10 个产品”,背后是 MCP 连 PostgreSQL
- AI 操控浏览器:打开网页、填表单、截屏,通过
@playwright/mcp实现 - AI 管理 Linear/Jira:创建任务、更新状态、查 Sprint 进度
SKILL 和 MCP 怎么配合
回到开头那个”说明书 vs 工具箱”的比喻,看一个真实配合案例:
场景:机器人帮你创建 GitHub PR
只有 MCP 没有 SKILL:
机器人看到工具列表里有 mcp_github_create_pull_request,但它不知道该填什么参数、分支命名规范是什么、commit message 要遵循什么格式。它只能胡乱尝试,出来的 PR 标题可能是 “fix stuff”。
只有 SKILL 没有 MCP:
SKILL 里写了”先创建分支,命名规则 feat/描述,commit 用 Conventional Commits 格式,然后 gh pr create“。但机器人没有 gh 工具,也没有 GitHub API 工具。它看着说明书干瞪眼——“巧妇难为无米之炊”。
SKILL + MCP 配合:
SKILL 写了完整工作流:
1 | ## 操作步骤 |
MCP 提供了第 3、4 步的精准工具。SKILL 告诉机器人第 3 步该填什么参数、走什么顺序。两者缺一不可。
什么情况不需要 SKILL
有些 MCP Server 的工具名称和参数已经足够自解释。比如:
mcp_filesystem_read_file(path="/tmp/data.csv")——不需要说明书mcp_github_list_issues(state="open")——看一眼就懂
这就好比你不需要”吸管使用说明书”——工具本身的设计已经足够直观。
什么情况不需要 MCP
很多操作不需要 MCP,用 Skill 直接调终端命令就够了:
- 搜索 arXiv 论文:
curl + jq走 API,Skill 写步骤,不用起 MCP Server - PDF 转文字:
pdftotext一行命令,Skill 写步骤,不需要 MCP - git 工作流:
git命令自带,Skill 写规范,不需要 MCP
原则:已有的系统命令能搞定的事,Skill 就够了。需要新”工具语义”(数据库连接、浏览器操控、持续运行的第三方 API 对接),才上 MCP。
总结
| 维度 | SKILL | MCP |
|---|---|---|
| 是什么 | 说明书、操作手册 | 工具、工具箱 |
| 本质 | Markdown 文本指令 | 运行中的服务进程 |
| 给机器人什么 | 告诉它怎么做 | 给它新工具 |
| 标准 | agentskills.io 开放标准 | Model Context Protocol |
| 创建方式 | 写 Markdown,5 分钟 | 运行一个兼容 MCP 的 Server 进程 |
| 加载方式 | 按需渐进式加载,不占资源 | 后台维持连接,常驻内存 |
| 适合场景 | 工作流编排、专家知识传授 | 新能力接入、外部系统对接 |
两者不是竞争关系,是互补关系。 Skill 管过程(How),MCP 管能力(What)。能力不够先上 MCP,流程复杂再包一层 Skill。大多数真实场景里两者一起用——就像修车师傅既需要维修手册,也需要工具箱。
