先问个问题:当你脑子里想着"让AI帮我查天气、订机票、读文件"的时候,你下意识去找的是什么?大概率是API。但你真正想要的其实是"AI能自己把这些事办了",这是两码事。
API、MCP、Skills这三个词,最近在AI圈和前端开发圈里被翻来覆去地讨论,尤其是"Agent技能"这个概念火起来之后,几乎每天都能看到有人问"agent skill 和mcp有什么区别""MCP是不是就是API的升级版""Skills是不是就是提示词模板"。说实话,这种混淆太正常了,因为这三个东西本来就不在一个维度上,却常常被放在同一张架构图里讲。API是接口,MCP是协议,Skills是智能的载体。你连它们的层级都没对上,当然越看越糊涂。
这篇文章我会用做项目时的真实思路,把三者拆开讲清楚,再讲它们在实际Agent工程里怎么配合。不绕概念,直接上实操。
1. 先厘清一件事:你混淆的是"接口"和"智能"
1.1 三个概念的根本定位差异
先说结论,然后用一整篇文章来展开。
- API(Application Programming Interface)解决的是"能力怎么被调用"的问题。它是接口层,描述的是"你通过什么方式、传递什么参数、拿到什么结果"。它本身不产生任何智能,也不关心调用方是谁。
- MCP(Model Context Protocol)解决的是"AI系统怎么标准化地接入大量工具和数据源"的问题。它是协议层,重点是让AI应用(宿主)能统一地发现、调用外部工具,而不是为每个工具单独写一套集成。
- Skills(技能)解决的是"模型怎么在特定场景下表现得更好"的问题。它属于智能层,说白了就是通过结构化的指令、示例、约束,把"做事的方法"教给模型。它不创建接口,也不打开网络连接,它改变的是模型的行为模式。
一句话记忆:API是"门牌号",MCP是"物流协议",Skills是"操作手册"。你对着门牌号敲门能拿到东西,物流协议保证所有包裹按统一规则流通,操作手册则是让干活的人(模型)知道这事该怎么干好。
1.2 为什么这三个词容易被当成同一个东西
我见过太多困惑,根源在于大家看问题都停留在"AI应用长什么样"这个表面。比如一个典型的AI编程助手,它既能读代码仓库(可能通过MCP接入),又能调用代码解释器(通过API),还能按团队规范来写提交信息(通过Skills)。用户看到的是"它什么都会干",于是就想当然地认为这些能力是同一类东西。
还有个现实原因:不少产品在宣传时把三者都叫"能力扩展"。某平台说"支持API接入",另一个说"支持MCP生态",第三个说"内置1000+Skills",对外包装都像是一种"给AI加buff"的手段。但你要是实际动手接一次,就会知道它们从开发方式、调试流程到权限模型完全是三套思路。搞混了,轻则浪费时间,重则在生产环境里出现"工具明明连上了但模型就是不用"的诡异问题。
所以这篇文章的核心任务只有一个:帮你把"接口"和"智能"这两层彻底分开,再告诉你MCP作为中间那座桥,到底扮演了什么角色。
2. API:接口层,解决的是"能不能调"
2.1 API的本质是契约,不是能力
很多人觉得"我调用了API,就相当于拥有了这个能力",这个认知在AI时代特别危险。API的本质是一份契约,契约规定了三件事:
- 你在哪里调用(端点,即URL)。
- 你用什么样的格式请求(方法、请求头、请求体)。
- 你会拿到什么结构的响应(状态码、响应体、错误格式)。
拿最常见的DeepSeek API为例,如果你想调用它的模型接口,通常需要一个API Key,然后向https://api.deepseek.com/chat/completions发一个POST请求,请求体里带上model、messages等字段。这套流程和"智能"没有任何关系,它只保证了一件事:你的程序能按约定把文本传给对方的模型服务,并能拿到返回的文本。
这和打电话点外卖是一个逻辑。你拨通餐厅电话,说"一份宫保鸡丁",对方说"好的,30分钟送到",这时候你拥有的不是"做饭能力",只是一个"触达厨师的信息通道"。API就是这个电话线路,它不关心厨师手艺好不好,更不会帮你决定今晚该吃什么。
2.2 RESTful API规范在实际项目里怎么用
热门搜索里一直有"restful api接口规范",说明大家在实际对接时确实被接口设计折磨过。RESTful其实不是标准,而是一套风格约定,核心是把资源当名词,用HTTP方法来表达动作。比如:
GET /api/users表示获取用户列表POST /api/users表示创建用户PATCH /api/users/123表示更新某个用户DELETE /api/users/123表示删除某个用户
我参与过的项目里,最坑的不是RESTful不RESTful,而是团队对错误处理的态度不一致。有些服务端图省事,所有错误都返回200,然后在业务码里写个1代表失败,客户端解析的时候还要再套一层判断。这会导致联调时非常痛苦。如果你在定义API规范,至少一开始就约定好:非2xx状态码一律表示失败,错误信息统一放在error.message字段里。看起来是小事,但能省掉后面大量扯皮。
对普通开发者来说,调用别人API时最该关注的也是错误处理。像热词里那个经典的报错:
{ "error": { "message": "529 overloaded. this is a server-side issue, usually temporary.", "type": "overloaded_error" } }这是服务端过载返回的临时错误,不是你代码写错了。遇到这种,正确姿势是退避重试,而不是反复以更快的频率去踹接口。我们团队实测下来,指数退避+抖动(Exponential Backoff with Jitter)能把恢复成功率提升好几个量级,后面我会在常见问题里细说。
2.3 为什么"会调API"不等于"会让AI干活"
我在各种技术群里看到最多的一个误区:新人学会调用模型API之后,就觉得自己能做AI应用了。他写了一个500行的Python脚本,调了三次GPT接口,先是让模型"扮演翻译",再让模型"总结摘要",最后让模型"生成报告"。效果时好时坏,于是开始怀疑模型能力不行。
问题出在哪?出在他把"API能返回文本"当成了"API能帮我完成整个任务"。模型API确实接收文本返回文本,但中间的思考过程、任务拆解、工具选择、结果校验,全都需要你在代码里自己编排。这也是为什么后来大家发现,光有模型API还不够,还需要一套机制让模型能"操作"外部世界,于是MCP应运而生。
所以API这一层,我给你的建议是:把它当成一个单独的技术能力去学,但别把"会调API"当成AI工程的全部。API只是拼图里最小、最底层的一块。
3. MCP:协议层,解决的是"AI怎么批量接入工具"
3.1 MCP到底解决了什么痛点
先回忆一下没有MCP的日子。假设你做了一个AI助手,想让它能查天气、能搜索网页、能操作数据库。传统做法是:
- 找到天气服务商的HTTP API,读文档,封装一个
getWeather(city)函数。 - 找到搜索服务的API,再读文档,封装一个
searchWeb(query)函数。 - 给模型写好工具描述(Tool Schema),每次调用时把函数和描述一起塞进Prompt。
这套方案的问题在于:每个工具的接入方式都不同,日期格式、鉴权方式、返回结构各不相同,而且模型侧的工具描述每次都要重新组织。如果换一个宿主应用(比如从自己的App换到Claude Desktop),所有集成工作又要重来一遍。
MCP(Model Context Protocol,模型上下文协议)就是干这个的。它定义了一套通用的对话方式,让AI应用(Host)通过客户端(Client)去连接不同的服务端(Server),而服务端统一对外暴露"工具""资源""提示词"三类能力。用圈里人常说的比喻:API是每个设备都有自己的充电线,MCP是USB-C接口标准,一次统一,到处通用。
这个类比虽然老套,但确实很准确。你不需要为每个工具单独写一套充电协议,只要它支持USB-C(即实现了MCP Server),插上就能用。
3.2 MCP的核心工作流程:发现、调用、返回
MCP的工作流程,你可以理解成"AI打车":
发现(Discovery):宿主启动时,客户端连接到MCP Server,问"你有哪些能力?"服务端返回工具列表,每个工具都带清晰的名字、描述、输入参数Schema。这就是热词里说的"mcp server"动态提供工具发现能力。
调度(Orchestration):模型根据用户需求,从工具列表里挑一个合适的,生成结构化的调用请求。这里不是程序写死"用户说天气就调用天气工具",而是模型动态决策。
执行与返回(Execution & Response):客户端把调用请求发给服务端,服务端真正去执行(比如真的去请求一个外部天气API),然后把结构化结果返回给模型。模型再基于结果组织语言回答用户。
实操过一次你就明白,MCP的价值在于把"模型决定用哪个工具"、"模型决定传什么参数"这种动态逻辑变成了协议的一部分。你的代码不需要写死任何工具分支,新工具接入只需要在服务端注册,模型自然会发现并使用它。
3.3 流行的MCP Server长什么样
热词里出现了好多具体的MCP Server,像figma mcp、playwright mcp、matlab mcp、ida pro mcp,还有蓝湖MCP,这些都是社区里已经开始落地的真实场景。我挑几个典型的说一下:
- Figma MCP:让AI能读取Figma设计稿的图层、文本、节点结构。前端开发拿它做"设计稿转代码"非常方便,AI能直接看到设计稿的结构信息,而不是靠截图去猜。
- Playwright MCP:把浏览器自动化能力封装成MCP工具,AI可以打开网页、点击按钮、读取页面内容。这等于给AI装了一双眼睛和一只手,能真的在网页上操作。
- IDEA MCP:把IDE能力封装成MCP,AI可以读取当前打开的文件、光标位置、编译错误信息,实现更精准的代码上下文感知。
- 蓝湖MCP:国内设计协作平台提供的MCP服务,能直接拉取设计标注,对国内前端团队非常有用。
接这些服务端的方式通常有两种:
一是用官方托管服务,直接在客户端配置里填上Server URL,比如Claude Desktop可以直接添加远程MCP Server;二是本地运行,通过npx或python启动一个Server进程,通过标准输入输出(stdio)通信。
我自己在Windows上部署MCP时踩过不少坑,尤其是Win 系统上怎么创建mcp这类问题。典型情况是:你用npx启动某个MCP包,但Node环境路径没配对,客户端死活连不上,或者MCP Server启动后马上退出,日志也看不见。后来总结出一条经验:先在纯命令行里手动跑一次启动命令,确认服务能正常输出,再拿到客户端配置里去填。绝不能想当然地在配置文件里写了命令就以为能跑通。
3.4 MCP不是API的替代品,而是AI与工具之间的通用语
这是最容易搞混的一点,必须单独拎出来说清楚。MCP不替代API,它是在API之上做了一层统一封装。实际上大多数MCP Server内部,最终还是去调用各种RESTful API。MCP真正替代的是"每接一个工具就写一套胶水代码"这件事。
打个比方,API是你的手机系统里的各种固件,MCP是蓝牙协议,而产品是蓝牙耳机。蓝牙协议不会替代固件,但它让不同品牌的耳机和手机都能互相配对。你用蓝牙耳机时根本不关心里面是那颗芯片,同理,你用MCP时也不关心这个Server背后调的是哪家API。
所以下次再看到别人争论"API会不会被MCP淘汰",你可以直接给出结论:不会,MCP是建立在API之上的一层标准化编排协议,它们的层级和职责完全不同。
4. Skills:技能层,解决的是"AI懂不懂行"
4.1 Skill的本质是"教AI怎么做",而不是"让AI能做什么"
终于说到重头戏了。热词里出现大量的"skills推荐""superpower skills 安装""codex使用skills""frontend开发skills"——说明大家都在找技能包,但很可能没想过Skill的本质到底是什么。
我见过最离谱的理解是:有人觉得Skill像浏览器插件一样,装上之后AI就"获得"了新能力。比如装上"前端开发Skills"之后,AI应该就突然会写React了。这个理解完全错了。
Skill不是可执行代码,它本质上是结构化的提示词资产,通常包含指令、背景信息、工作流程、示例和限制条件。装上Skill之后,AI并没有获得任何新的"运行时能力",它只是知道了"在这种场景下应该按照什么步骤做事情"。
举个例子。你写一个"前端开发Skills",里面可以规定:
项目背景:这是一个Next.js 14项目,使用App Router。 工作流程: 1. 先阅读package.json,确认依赖版本。 2. 检查现有组件结构,判断是否可复用。 3. 新组件遵循单文件导出,样式使用Tailwind。 4. 提交前运行lint和type-check。 禁止事项: - 不要引入未在package.json中声明的依赖。 - 不要修改根布局文件,除非用户明确要求。这段内容没有调用任何接口,没有执行任何命令,它只是告诉模型"在我们这个项目里,你要按这样的规矩干活"。但它带来的效果,可能比接10个工具还明显。因为很多时候模型表现差,不是因为缺少工具,而是不知道"正确的做事方式是什么"。
4.2 从System Prompt到Skill:一次工程化升级
最早的时候,我们做AI应用都是在System Prompt里写一大段指令,把"角色"+"规则"+"示例"全塞进去。这种方式在小项目里够用,但一旦场景变多、提示词超过几千字,维护就成了灾难。改一个规则,要在海量文本里找;不同场景的提示词互相打架;复制到不同项目时还容易出错。
Skill是这些经验的工程化产物。它把"提示词"变成了一种可管理、可复用、可共享的文件资产。以Claude的Skill模式为例,一个Skill文件通常有这些结构要素:
- 名称:给技能一个唯一标识,比如
frontend-code-review。 - 描述:一句话说明这个技能适合什么场景,这决定了模型什么时候应该调用它。
- 指令正文:详细的过程说明,包括步骤、规范、示例、验收标准。
这个结构与MCP Server暴露的"提示词(Prompts)"概念很像,但Skill更强调"自主调用"和"场景触发"。Agent在收到用户请求后,先判断这个请求是否匹配某个Skill的描述,匹配就加载对应的指令,再结合当前上下文执行任务。
前端开发Skills为什么这么火?因为前端项目的"隐形规则"特别多。框架版本、目录结构、状态管理方案、样式方案、代码规范,每一样都直接影响生成代码的质量。把这些规则写成一个Skill文件放进项目里,等于让AI在动手前先读了团队规范。实测下来,代码风格一致性和编译通过率都有非常明显的提升。
4.3 Skill与MCP的边界:一个管认知,一个管连接
这是本文最关键的一个实操判断问题:什么时候用MCP,什么时候用Skill?我见过有人写一个"发送邮件Skill",结果里面塞了一堆SMTP配置代码——这明显是拿Skill干MCP的活。也有人非要给"代码规范检查"接一个MCP Server,其实这些规则用Skill就能解决,根本不需要网络层的东西。
我的判断标准很简单,两句话:
- 如果你需要AI访问外部信息或执行一个具体动作,比如发送请求、读数据库、操控浏览器,这就是MCP的活。它负责连接能力。
- 如果你需要AI知道怎么做一件事才算做得好,比如按团队规范写代码、按公司的格式写周报、按行业标准做代码评审,这就是Skill的活。它负责调教行为。
举个最直白的例子:AI要"查一下今天的天气",这是MCP的活,因为你要连天气服务商。但AI"决定查完天气之后怎么提醒你带伞"(比如根据湿度、风速、体感温度做判定逻辑),这是Skill的活,你需要写清楚"湿度大于80%建议带伞,风速大于5级建议防风"这套决策规则。
如果你真的要做一个Agent,大概率是两者配合。MCP负责把外部世界接进来,Skill负责保证AI在接进来之后的行为符合预期。两者并不排斥,只是各管一层。
4.4 怎么自己动手写一个Skill
热词里有人问"ai skills怎么写""superpower skills 安装",我简单说一下路线。
目前主流的Skill载体有两种形式:
一种是面向个人的Skill集,比如社区里流传的superpower skills、nature skills、mattpocock skills这些小而精的技能包,很多早期开发者都已经公开分享,从取名到描述都非常讲究。安装方式一般是下载文件目录放到特定文件夹,比如Claude Desktop的~/.claude/skills/,或Codex的~/.codex/skills/。装完后在对话里用约定的关键字触发即可。
另一种是项目内嵌的Skill文件,把技能说明放在项目目录里,比如.claude/skills/,让AI在项目开发过程中自动感知。这种方式对前端、后端等日常开发场景特别实用。
自己动手写,建议按下面这个模板起步:
--- name: code-review-guardian description: 在代码提交前执行审查,检查是否符合团队代码规范和安全要求。 --- # 代码审查技能 ## 触发时机 - 用户说"review代码""帮我检查一下提交内容"时 - Agent检测到有代码变更准备提交时 ## 审查步骤 1. 读取变更文件清单 2. 检查命名规范:变量使用camelCase,组件使用PascalCase 3. 检查依赖引用:不引入未声明的包 4. 检查错误处理:网络请求必须包含异常捕获 5. 输出审查报告:按严重级别列出问题及修改建议 ## 禁止事项 - 不打断用户的开发流程 - 不修改任何文件,只输出评审意见你会发现,这里面没有什么神秘的技术,重要的是"结构清晰"+ "描述准确"。"描述"这一格特别关键,因为模型靠它判断何时加载这个Skill。写得太笼统,该触发时不触发;写得太具体,又容易误触发。
5. 三者如何协同:一个真实Agent任务的前后全流程
5.1 用"查天气写朋友圈"来串一遍
假设你要做一个Agent,任务目标是:用户说"今天北京天气怎么样,适合跑步吗?顺便帮我用一句话总结一下",你需要让AI在一个对话框里完成整个流程。
第一步,用户输入后,Agent框架要做意图理解。这时候它可能会发现,任务里包含了两个核心诉求:"获取天气数据"和"根据数据做运动建议"。
第二步,它通过MCP协议去发现自己有没有"查询天气"这个工具。假设你已经接了一个天气MCP Server,那么Agent会调用get_weather_by_city这个工具,传入city=北京。这个调用背后可能真的在请求某个天气API,但Agent不关心这些细节,它只关心MCP返回的结构化结果,比如气温、湿度、风速。
第三步,Agent拿到了天气数据,但"适不适合跑步"这件事,MCP可不会告诉它。这时候就需要一个"运动建议Skill"。Skill里写了判断规则:温度在5到25度之间且风速小于5级且没有降水,判定为适宜跑步。Agent加载这个Skill之后,结合天气数据,给出结论和一句话朋友圈文案。
你觉得这个过程里,哪一步是API?哪一步是MCP?哪一步是Skill?
这个例子其实很清晰地展示了分层:API在MCP Server内部,被MCP封装;MCP把工具能力统一暴露给Agent;Skill保证Agent在拿到数据之后能按照用户预期的标准去思考。三者不在一个层级,但它确实在协作完成一个任务。
5.2 一个Agent系统里三者的物理部署位置
我画不了图,但用文字描述一下它们在工程上的位置关系:
在一个标准Agent项目中,系统由三层组成:
- 宿主层(Host):就是你的Agent程序本身,比如Claude Desktop、Codex CLI,或者你自己写的Node/Python程序。
- 协议层(MCP):宿主通过MCP客户端去连接各个MCP Server进程。这些Server可能是本地的(比如文件系统访问、命令行执行、浏览器控制),也可能是远程的(比如云端部署的Figma MCP、蓝湖MCP)。
- 能力层(API + Skills):MCP Server内部封装具体的API调用,这是能力的实际执行者;Skills则作为一套"任务执行策略"存放在宿主能读取的位置(项目目录或用户目录),在Agent规划任务时按需加载。
你可以把这个结构理解成一个公司:
- API是每个专业工种(水电工、木工)自己的工具箱,各有各的规格,各干各的活。
- MCP是项目监理公司,用统一的验收标准和协作流程管着这些工种,出了问题时知道该找谁。
- Skills是员工手册和项目经理的经验库,规定了活要怎么干才符合客户预期,以及遇到不同的客户需求时应该怎么应对。
一个成熟Agent工程项目,三者的配置缺一不可。只接API没有MCP,会陷入"每接一个能力就重写一遍胶水代码"的泥潭;只接MCP没有Skills,AI虽然什么工具都能连,但干活方式粗放,经常答非所问;只有Skills没有MCP,AI再懂规矩也没有手和脚,干不了实际的事。
5.3 从零搭建一个最小示例:MCP+Skill的配比建议
如果是个人项目,我的建议是从小处着手,不要一上来就追求全套。
最小可用的组合是:
- 一个能用到的模型API(比如DeepSeek、GPT或者免费模型API,先跑通对话)。
- 一个MCP Server(最推荐先用Playwright MCP或文件系统MCP,因为它们立竿见影,而且报错信息直观)。
- 一个针对自己工作流的Skill(比如"周报生成"或者"git提交信息规范")。
初期不要接超过三个MCP Server,否则模型调用工具的决策会变得很困惑。我在项目里实测过,工具数量过多时,模型经常"想不起来"还有哪些工具可用,或者反复调用同一个工具。让AI面对的工具列表保持精简,效果远比贪多要好。
6. 实践中的常见错误与避坑经验
6.1 常见问题速查表
我把团队在实际落地中经常遇到的问题整理成了一张表,供你排查时参考。
| 症状 | 可能原因 | 排查思路 |
|---|---|---|
| 模型完全不用工具,一直自己瞎编 | MCP Server没连上,或工具描述太模糊 | 先确认Server进程是否在运行,再看工具描述是否能被模型理解 |
| MCP Server启动后马上退出 | 启动命令里的环境变量没配对 | 在纯命令行里手动跑启动命令,看报错输出 |
| 模型用了工具但结果不对 | 工具返回结果没有传给模型后续上下文 | 检查宿主是否正确把工具结果拼接进模型上下文 |
| Skill没有触发 | Skill的description写得不够具体 | 重写description,明确"什么时候用"这个技能 |
| Skill和System Prompt冲突 | 两者规则不一致 | 以Skill为准,或把冲突项从System Prompt中移除 |
| API返回529 overloaded | 服务端过载 | 指数退避重试,避免高频重复请求 |
| 工具调用能测通但生产中失效 | 鉴权配置不同,或网络策略不同 | 检查API Key、内网白名单、代理配置 |
| 本地MCP连不上 | Node/Python路径或stdio传输问题 | 检查配置文件中的命令是否在系统PATH中 |
6.2 关于529错误和"临时故障"的实战处理
热词里那条529报错,应该是不少人被坑过的地方。这类错误很经典:
{ "error": { "message": "529 overloaded. this is a server-side issue, usually temporary.", "type": "overloaded_error" } }特征很明显:服务端已经明确告诉你这是服务器问题,是临时的。但很多人看到报错第一反应是检查代码,结果浪费了大量时间。正确的处理方式是在客户端做好重试策略。
我们实测下来最稳的方案是指数退避+抖动:
- 第一次失败后等1秒重试。
- 第二次失败后等2秒。
- 第三次失败后等4秒。
- 每次加一点随机扰动(比如±10%),防止多个客户端同时重试形成雪崩。
同时可以设置单次任务的最大重试次数(比如5次),超过后直接返回失败提示,不要无限循环。这个策略不只在API调用上有用,在处理MCP Server偶发性连接失败时同样有效。
6.3 选型建议:先API,再MCP,最后才上Skills
给新人的路径建议,可能和很多人的直觉不一样:
第一步,先用好一个模型API。把自己的普通业务逻辑跑通,知道Prompt怎么写,理解模型输出是概率性的,这一步大概需要一到两周。
第二步,引入MCP。用现成的MCP Server把"外部工具"接进来,这时候你才真正开始做Agent。你会遇到工具调度、上下文管理、错误恢复这些真实工程问题,这些是API阶段完全体会不到的。
第三步,开始沉淀自己的Skill。当你发现AI在同一个场景反复出现同样的低级错误时,就该考虑把"正确的做法"固化成Skill文件。Skill不是学来的,是在一次次踩坑之后总结出来的。
如果反过来一上来就装100个Skills、接10个MCP Server,你大概率会在系统集成的地狱里失去耐心。我一个朋友的团队接了个"全功能MCP全家桶",结果AI每次动手都在纠结用哪个工具,正常对话延迟高到没法用。后来砍到只剩两个核心工具,体验立刻好了。
6.4 关于"找不到合适的MCP/Skills"的一点建议
热词里出现"find skills""skills推荐""免费联网mcp"这类搜索,说明大家确实在找现成的轮子。我的建议是:
如果你需要一个MCP Server,先不要急着搜"免费",先从官方和主流生态里找。比如Playwright MCP、Figma MCP、蓝湖MCP都有官方实现,文档全、维护活跃、踩坑的人多所以问题都好搜。不要一上来就接个人开发者维护的小众Server,出了问题文档都没有,只能自己读源码,别说新手了,老手都头疼。
Skills方面,直接从社区口碑好的开始,比如superpower skills这类已经被大量验证过的技能包。但记住一点:别人的Skill未必适合你的业务场景,装完之后一定要自己改一遍,把里面的例子、规范换成你项目里的真实资料,这样才会真正起作用。
7. 从"调用接口"到"调教智能":一次认知升级
写到这里,整个讨论已经比较完整了。最后我想谈谈我实际做项目时最深的感触。
API时代,我们问的问题是"这个服务能不能调到"。MCP时代,我们问的问题是"我能不能让AI自己决定调用什么服务"。Skills时代,我们问的问题变成了"AI做这件事的方式,符不符合我的预期"。
这三个问题,一个比一个更接近"智能"本身。API定义了机器之间的沟通规则,MCP定义了Agent与工具生态的合作方式,Skills则试图把人的经验、团队规范、行业知识结构化地注入模型的决策过程。方向其实是一致的:让AI系统从"能用"走向"好用",再走向"懂行"。
如果你看完这篇文章只记住一句话,我希望是这句话:API是钥匙,MCP是门,Skills是进门之后该怎么做事的规矩。下次再有人问你三者有什么区别,你可以反问一句:你问的是接口、协议,还是智能?