简介:本文系统对比 Agent Skill、MCP 与 Prompt 三个概念,说明它们并非可以互相替代的竞争方案,而是智能体架构中自下而上的分层协作:Prompt 负责表达意图,MCP 负责工具的标准化暴露,Agent Skill 负责流程与知识的封装。文章从层级依赖、结构化程度、复用粒度、成本与风险等维度拆解差异,并给出典型场景的组合方式与选型建议,帮助你判断当前瓶颈在哪一层、该在哪里投入。
在智能体(Agent)相关的技术面试与选型讨论中,Prompt、MCP、Agent Skill 这几个词经常同时出现,再加上 Function Calling(函数调用),四个概念恰好分布在智能体架构的不同层次,却因为都在讲“让模型干活”,而被不少人误认为是一组可以互相替代的竞争方案。典型的误解是:“某某机制是 A 厂商提出的,某某协议是 B 厂商提出的,它们是不同时期的竞争产物,系统里选一个就够了。”
这种理解的根本问题在于:把不同层的东西放到了同一层来比。实际上,它们是一组自下而上、层层叠加的协作关系:Prompt 解决“怎么向模型表达意图”,Function Calling 解决“模型怎么发起一次结构化调用”,MCP 解决“外部工具怎么以统一方式暴露给模型”,Agent Skill 解决“拿到工具之后按什么流程把任务做好”。每一层都以下层为前提,各有不可替代的职责。
本文以标题中的三个对象——Agent Skill、MCP、Prompt 为核心对比对象;同时,由于层级关系必须借助函数调用机制才能讲清楚,会将其作为背景一并纳入,使分层图景完整。
从发展脉络看:函数调用机制最早由头部模型服务厂商推出,随后成为主流模型服务的通用能力;MCP 由业界以开放协议的形式提出,用于统一工具接入方式;Skill 则是各类智能体框架普遍采用的上层封装思路。三者诞生有先后,但定位不同,并非竞争关系。
主语不同、对话对象不同、粒度不同,这就是四者的本质差异。下面逐一展开。
Prompt 是开发者以自然语言向模型传达意图的方式,涵盖系统提示词、角色设定、输出格式约束、示例引导等。它不依赖任何协议与外部组件,成本最低、迭代最快。但它的能力边界同样明显:复杂流程全部塞进 Prompt,会导致文本冗长、指令冲突、上下文被挤占。一句话概括:Prompt 决定模型“知道要做什么”,但不保证模型“有能力去做”。
函数调用让模型在接收工具描述后,输出“调用哪个函数、传什么参数”的结构化结果,由应用程序执行实际调用,再把结果回传给模型。它解决的是最基础的协议问题——把模型的“意图”转译成程序可执行的“指令”。没有这一层,模型与外部世界之间就只有纯文本,没有可靠的执行通道。
当应用里的工具越来越多、多团队需要共享工具时,“每个应用各自定义函数、各自写接入逻辑”的重复建设问题就会暴露。MCP 在函数调用机制之上做工具供给侧的标准化:把数据库查询、检索、文件读写、业务 API 等能力封装成符合统一协议的服务,并规范服务发现、工具描述、调用与回传的流程。核心收益是“一次实现、处处复用”——工具提供方实现一次,任何支持该协议的智能体都能接入,工具描述与权限也得以统一治理。
有了调用语言和工具箱,还剩一个问题:面对一类复杂任务(如生成数据周报、执行发布检查),模型该按什么步骤、什么标准去组合使用工具?Agent Skill 把“完成某类任务所需的知识、步骤、判断标准、脚本与模板”打包成可复用模块,按需加载。技能内部通常包含提示词模板、流程编排说明、参考示例与质量标准,本质是把领域老手的经验工程化。它不发明新工具,而是教模型“怎么把工具用好”。
四者构成自下而上的依赖链:Function Calling 依赖模型的结构化输出能力;MCP 依赖函数调用机制作为运行时的执行通道——协议定义的是“工具如何暴露与发现”,模型侧的实际触发仍要走结构化调用;Skill 依赖下层工具可用,再把工具组织成流程;Prompt 则贯穿始终,每一层最终都以文本形式呈现给模型。因此“选一个、弃其余”不成立:没有下层,上层封装就是空中楼阁;没有上层,下层能力只能靠临时拼凑。
越往上,约束越强、稳定性越好,改造成本也相应上升。
Prompt 成本最低、见效最快,但换模型后行为漂移明显;函数调用需要编写执行逻辑并应对“参数幻觉、误选函数”,稳定性靠校验与兜底换取;MCP 接入成本较高,换来的是生态级复用与统一权限管控;Skill 沉淀成本最高,换来的是复杂任务的高成功率与执行一致性,属于前期重投入、后期高回报。
| 维度 | Prompt | Function Calling | MCP | Agent Skill |
|---|---|---|---|---|
| 所处层级 | 交互表达层 | 调用协议层 | 工具标准化层 | 知识与流程封装层 |
| 解决的问题 | 怎么向模型表达意图 | 模型怎么发起结构化调用 | 工具怎么统一暴露与复用 | 任务按什么流程完成 |
| 形态 | 自然语言文本 | 结构化调用意图 | 标准化工具服务协议 | 可复用模块(提示词+流程+脚本+模板) |
| 复用范围 | 单任务/单应用 | 单应用内 | 跨应用、跨模型 | 跨任务、跨场景 |
| 维护主体 | 提示词作者 | 应用开发者 | 工具提供方 | 领域专家+工程团队 |
| 接入成本 | 低 | 中 | 中高 | 高 |
| 典型风险 | 指令冲突、行为漂移 | 参数幻觉、误选函数 | 工具描述质量差、权限过宽 | 流程僵化、文档挤占上下文 |
以“查询上周销售额并生成分析报告”为例,用伪代码示意四层如何协作:
# 第一层(Prompt):表达意图prompt = "查询上周销售额,按渠道拆分,并生成一份分析报告"# 第二层(MCP):标准化工具发现与描述tools = tool_service.list() # [query_sales_db, make_chart, export_report, ...]# 第三层(Function Calling):模型输出结构化调用意图call = {"name": "query_sales_db", "arguments": {"period": "last_week"}}# 应用侧执行后把结果回传模型,模型继续发起后续调用……# 第四层(Agent Skill):技能中预置"数据报告"的标准流程# 步骤1 校验数据口径 → 步骤2 查询 → 步骤3 校验数值合理性# → 步骤4 生成图表 → 步骤5 按模板输出报告 → 步骤6 自查格式与结论
可见:Prompt 给出“做什么”,MCP 提供“有什么可用”,Function Calling 决定“这次调哪个”,Skill 规定“整体按什么顺序与标准做”。任何一层缺失,其余层都要付出额外的补偿成本。
选型时不要问“三者选哪个”,而要问“当前瓶颈在哪一层”:
回到最初的问题:Agent Skill、MCP 与 Prompt 的区别是什么?一句话概括——Prompt 是表达意图的“任务指令单”,Function Calling 是发起调用的“结构化语言”,MCP 是统一暴露能力的“标准化工具箱”,Agent Skill 是沉淀经验的“成套操作手册”。它们不是可以互相替代的竞争方案,而是智能体架构中自下而上、层层依赖的分工协作:下层提供执行通道与生态复用,上层提供流程知识与执行一致性。选型时先定位瓶颈所在层,再决定投入方向;落地时按“Prompt 优化 → 函数调用 → 标准化接入 → 技能沉淀”的路径渐进演进,通常是更稳妥的路线。