skill、tool calling、MCP区别

一、最底层:LLM 本身只会"输出文字"

LLM(Claude、GPT、Kimi、DeepSeek 这些)本质上是一个只会生成文字的模型。你给它一段输入,它输出一段文字。仅此而已。

它不能:读你的文件、点击网页、查实时天气、写入 Obsidian、运行代码。

那为什么我们感觉 ChatGPT 能搜索、Claude 能写代码?因为外面套了一层东西,让它"假装"能做这些。这层东西就是接下来要讲的 tool calling、MCP、Skill。

二、Tool Calling(工具调用):最基础的机制

Tool calling 是 LLM 厂商提供的一个 API 特性。流程是这样:

  1. 你(开发者)在 API 请求里告诉模型:"你有这些工具可以用:get_weather(city)read_file(path)write_obsidian_note(content),每个工具的参数和说明是 XX。"
  2. 用户问:"今天上海天气怎么样?"
  3. 模型不直接回答,而是返回一个结构化的 JSON :"我要调用 get_weather,参数 city='上海'。"
  4. 你的代码 接到这个 JSON,真正去执行 get_weather('上海'),拿到结果(比如"晴 25°C")。
  5. 你把结果塞回对话历史,再让模型生成最终回复:"今天上海晴天,25度。"

关键点:LLM 自己不会执行工具,它只会"说我想用哪个工具"。真正的执行是你写的代码做的。LLM 厂商只是规范了"模型怎么表达想用工具"这件事。

这就是 tool calling 的全部。它是个底层协议

三、MCP(Model Context Protocol):工具的"标准化接口"

Tool calling 解决了"模型怎么说想用工具",但留了一个问题:工具本身怎么写、怎么分发?

举例:你想让 Claude 能操作你的 Notion,那你得自己写 Notion API 的封装代码、定义工具 schema、处理认证、塞进 API 请求里。我也想让 Claude 操作 Notion,我也得从零写一遍。Bob 想让 GPT 操作 Notion,他还得再写一遍------而且因为 Claude 和 GPT 的 tool calling 格式有细微差别,还得改。

Anthropic 在 2024 年底推了 MCP (Model Context Protocol),它的核心想法是:把"工具"做成可以独立运行的小服务(叫 MCP Server),用统一的协议和任何 LLM 客户端通信。

类比:MCP 之于 LLM 工具,就像 USB 之于硬件外设。以前每个鼠标键盘都有自己的接口,现在统一 USB,插哪都能用。

具体形式:

  • 一个 MCP Server 是一个独立的程序(可以是 Python、Node.js、Rust 写的),监听某个端口或 stdio
  • 它声明自己提供哪些工具(比如 notion-mcp-server 提供 create_pagesearch_pages 等)
  • 任何支持 MCP 的客户端(Claude Desktop、Claude Code、Cursor、OpenClaw 等)都能连上这个 server,立刻获得这些工具能力
  • 你不用改 LLM,不用改客户端,只要装一个 MCP server 就行

所以 MCP 和 tool calling 的关系是:tool calling 是 LLM 层面的协议("模型如何表达想用工具"),MCP 是工具层面的协议("工具如何被分发和调用")。MCP server 内部最终还是用 tool calling 把工具暴露给模型。

四、Skill:给 Agent 的"操作手册"

Tool 解决"能做什么"(capability),Skill 解决"该怎么做"(know-how)。

举个例子。你给 Claude 一堆工具:read_filewrite_filerun_pythonsearch_web。然后你说:"帮我做一个 PPT"。Claude 知道有这些工具,但它不一定知道:

  • 应该用哪个 Python 库(python-pptx?还是别的)
  • 你公司的 PPT 模板放在哪
  • 标题字号该用多大、配色用什么
  • 要不要加封面页和封底

Skill 就是把这些"领域知识 + 操作步骤"写成一个 markdown 文件,放在 agent 能找到的地方。Agent 在执行任务前先读 SKILL.md,按里面的指引调用工具。

一个典型的 SKILL.md 长这样:

markdown 复制代码
# job-tracker Skill

## 何时使用
当用户提到"记录岗位"、"投递了 XX 公司"、"保存这个 JD"时使用。

## 执行步骤
1. 解析用户提供的 JD 文本,提取公司、岗位、薪资、地点
2. 用 LLM 总结 JD 核心需求(必备技能、加分项)
3. 调用 write_file 工具,把内容按指定格式写到 ~/Obsidian/求职/岗位/{公司}_{岗位}_{日期}.md
4. frontmatter 用 YAML 格式,字段包括 ...
5. 完成后在聊天里回复"已记录到 Obsidian"

Anthropic 在 Claude 应用和 Claude Code 里推这个概念叫 Agent Skills (你看我的系统里有 /mnt/skills/public/docx/SKILL.mdpptx/SKILL.md 这些就是)。OpenClaw 直接借用了这套设计,它的 Skills 放在 ~/.openclaw/workspace/skills/

Skill 和 MCP 的区别:MCP 是给模型加新工具(新能力),Skill 是教模型怎么用已有工具完成特定任务(操作手册)。一个 Skill 通常会调用多个工具,可能是内置工具、也可能是 MCP 工具。

五、Claude Code 是什么

Claude Code 是 Anthropic 出的一个命令行工具(CLI),本质上是一个跑在终端里的 coding agent。

它内置了:文件读写、bash 执行、代码搜索、git 操作等工具。你在终端里 claude 一下,就开始和它对话,它能直接读你当前目录的代码、改文件、跑测试。

它支持 MCP(你可以接 GitHub MCP 让它操作 PR),也支持 Skills(放在 .claude/skills/ 目录)。

和 OpenClaw 的对比

  • Claude Code = 给开发者用的、专注于 coding 的 CLI agent,绑定 Claude 模型
  • OpenClaw = 给所有人用的、通过 IM 聊天交互的、什么都能做的个人 agent,模型可换
相关推荐
Python私教1 小时前
GenericAgent PySide6 桌面应用深度解析:悬浮按钮 + 聊天面板的原生 Qt 方案
开发语言·数据库·qt
矢志航天的阿洪1 小时前
用 MATLAB 控制 STK Aviator:从零搭建一个 AWACS 支援作战场景
开发语言·matlab
十铭忘1 小时前
FLUX.1架构的理解5——Transformer之前的预处理
人工智能
weixin_446260851 小时前
城市智能化的底层基石:基于腾讯地图服务生态的移动定位与导航架构指引
大数据·人工智能·架构
澈2071 小时前
STL迭代器:容器遍历的万能钥匙
开发语言·c++
Smilezyl1 小时前
一个独立开发者,靠一份 markdown 驱动 Claude Code, 用 20 天跑通 9 个包的 monorepo 工程
前端·人工智能·github
fundroid1 小时前
AI Coding 知识库最佳实践:三层结构重建可维护工程
人工智能·skill·ai 编程·ai coding·skill.md·agent.md
测试员周周1 小时前
【AI测试系统】第4篇:告别硬编码!基于 Markdown + Python 的 Skill 引擎设计:让 AI 测试系统拥有无限扩展的“灵魂”
人工智能·python·测试
武帝为此2 小时前
【Selenium 屏幕截图】
python·selenium·测试工具