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,模型可换
相关推荐
测试员周周6 小时前
【Appium 系列】第16节-WebView-H5上下文切换 — 混合应用的自动化难点
运维·开发语言·人工智能·功能测试·appium·自动化·测试用例
测试19986 小时前
软件测试 - 单元测试总结
自动化测试·软件测试·python·测试工具·职场和发展·单元测试·测试用例
K姐研究社7 小时前
怎么用AI制作电商口播视频,开拍APP一键生成
人工智能·音视频
LaughingZhu8 小时前
Product Hunt 每日热榜 | 2026-05-21
前端·人工智能·经验分享·chatgpt·html
曲幽8 小时前
我用了FastApiAdmin后,连夜把踩过的坑都整理出来了
redis·python·postgresql·vue3·fastapi·web·sqlalchemy·admin·fastapiadmin
杜子不疼.8 小时前
【C++ AI 大模型接入 SDK】 - DeepSeek 模型接入(上)
开发语言·c++·chatgpt
加号38 小时前
【C#】 串口通信技术深度解析及实现
开发语言·c#
传说故事8 小时前
【论文阅读】MotuBrain: An Advanced World Action Model for Robot Control
论文阅读·人工智能·具身智能·wam
北京耐用通信9 小时前
全域适配工业场景耐达讯自动化Modbus TCP 转 PROFIBUS 网关轻松实现以太网与现场总线互通
网络·人工智能·网络协议·自动化·信息与通信
火山引擎开发者社区9 小时前
TRAE × 火山引擎 Supabase:为你的 AI 应用装上“数据引擎”
人工智能