尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

Prompt、Skill、MCP 怎么选?用同一个任务实测三种 AI 工程化方案

Prompt、Skill、MCP 怎么选?用同一个任务实测三种 AI 工程化方案
📅 发布时间:2026/7/16 2:55:56

让 AI 写代码、查数据库、生成报告——同一个需求,有人靠精心写 Prompt,有人封装成 Skill,有人接 MCP 服务器。这三种方式到底差在哪?什么时候该用哪个?我用一个真实的"查询商品库存"任务,分别用三种方式实现并实测对比,给出选型结论。

三者到底是什么关系

先把概念理清,很多人把它们混为一谈。这三者不是替代关系,而是控制粒度从细到粗的三个层次:

方案本质控制粒度类比
Prompt自然语言指令,模型当次推理生效最细,一次对话临时口头交代
Skill打包好的指令+脚本+资源,可复用中等,一个任务写好的 SOP 操作手册
MCP标准化的工具接入协议,连接外部系统最粗,一套能力给 AI 装一个外挂插件

💡 核心区别:Prompt 是"说什么",Skill 是"怎么做(封装好的步骤)",MCP 是"能做什么(连接外部能力)"。三者可以叠加——一个 Skill 里可以调用 MCP 提供的工具。

实测任务:查询商品库存

假设需求:用户问"商品 A 还有多少库存",AI 要查真实数据库并回答。下面用三种方式分别实现。

方式一:纯 Prompt 驱动

最简单的方式,把数据库信息直接塞进提示词,让模型基于上下文回答:

# 纯 Prompt 方式:把库存数据直接拼进提示词 inventory_data = """ 商品A:库存 150 商品B:库存 0 商品C:库存 320 """ ​ prompt = f""" 你是一个库存查询助手。以下是当前库存数据: {inventory_data} 用户问题:商品A还有多少库存? 请基于上述数据回答。 """ ​ # 调用大模型 response = llm.chat(prompt) print(response) # 输出:商品A还有150件库存

❌问题马上暴露:库存数据是动态的,每分钟都在变。把数据写死在 Prompt 里,数据一更新就全错。而且数据量一上来(上万商品),Prompt 塞不下也费 token。

方式二:封装成 Skill

把"查询库存"封装成一个可复用的 Skill。Skill 的标准结构是一个文件夹 + 一个 SKILL.md 指令文件 + 配套脚本。Anthropic 官方的 anthropics/skills 仓库就是按这个结构组织的,里面放了一堆公开可复用的技能(pdf 处理、Excel 生成、艺术创作等)。

按这个标准结构,库存查询技能长这样:

# inventory-query/SKILL.md --- name: inventory-query description: 查询商品库存。当用户问"XX还有多少库存"时触发。 --- ​ ## 执行步骤 1. 从用户问题中提取商品名称 2. 执行 scripts/query_stock.js <商品名> 查询真实库存 3. 用查到的数据回答用户
// inventory-query/scripts/query_stock.js - 实时查询数据库 const productName = process.argv[2]; ​ // 模拟查数据库(实际项目连 MySQL/Redis) const stock = queryDatabase("SELECT stock FROM products WHERE name = ?", [productName]); ​ // 输出查询结果,供 Skill 的指令层使用 console.log(JSON.stringify({ product: productName, stock: stock })); // 输出:{"product":"商品A","stock":150}

Skill 的执行流程:模型读到 SKILL.md → 识别到用户在问库存 → 自动调用query_stock.js→ 拿到真实数据 → 组织语言回答。

💡Skill 解决了 Prompt 的痛点:数据实时查询(不写死)、逻辑可复用(多个场景共享)、改动集中(改脚本不用改提示词)。想看更多真实例子,可以直接翻 anthropics/skills 官方仓库的源码。

方式三:接入 MCP 服务器

MCP(Model Context Protocol)是一套标准协议,让 AI 客户端能调用外部工具。把"查库存"做成一个 MCP 工具,任何支持 MCP 的客户端(Claude Desktop、ZCode、Cursor 等)都能直接用:

// mcp-config.json - 注册 MCP 服务器 { "mcpServers": { "inventory": { "command": "node", "args": ["./inventory-mcp-server.js"] } } }
// inventory-mcp-server.js - MCP 服务器实现 import { Server } from "@modelcontextprotocol/sdk/server"; import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio"; ​ // 创建 MCP 服务器,声明提供的工具 const server = new Server( { name: "inventory-server", version: "1.0.0" }, { capabilities: { tools: {} } } ); ​ // 注册工具:query_stock(查库存) server.setRequestHandler("tools/list", async () => ({ tools: [{ name: "query_stock", description: "查询商品实时库存", inputSchema: { type: "object", properties: { product: { type: "string", description: "商品名称" } }, required: ["product"] } }] })); ​ // 处理工具调用:真正查数据库 server.setRequestHandler("tools/call", async (request) => { if (request.params.name === "query_stock") { const product = request.params.arguments.product; // 查真实数据库 const stock = queryDatabase("SELECT stock FROM products WHERE name = ?", [product]); return { content: [{ type: "text", text: `${product}当前库存:${stock}件` }] }; } }); ​ // 启动服务器,通过标准输入输出通信 const transport = new StdioServerTransport(); await server.connect(transport);

接入 MCP 后,用户直接在 AI 客户端里问"商品 A 库存",客户端自动发现并调用query_stock工具,全程不需要用户知道有这个工具存在。

⚠️MCP 的本质:它不关心 AI 客户端是 Claude 还是 GPT,只要支持 MCP 协议就能调用。这是一套跨平台的工具标准,类似 USB 接口——做一次,到处用。

三种方式横向对比

用"查询库存"这个任务,从 6 个维度对比:

维度纯 PromptSkillMCP
实现成本⭐ 最低,写几行字⭐⭐ 中等,写指令+脚本⭐⭐⭐ 较高,实现服务器+协议
数据实时性❌ 写死,易过期✅ 脚本实时查✅ 工具实时查
跨客户端复用❌ 换个 AI 就失效⚠️ 部分支持✅ 标准协议,处处可用
维护成本❌ 改逻辑要重写提示词✅ 改脚本即可✅ 改服务器即可
适合数据量小(受 token 限制)任意任意
上手门槛零门槛需懂脚本需懂协议开发

三种方案的真实耗时对比

实测搭建"查库存"功能的全过程,记录耗时:

阶段纯 PromptSkillMCP
编写2 分钟15 分钟45 分钟
接入客户端无需配置加载注册服务器
首次可用即时重载即可重启客户端
响应延迟~0.5 秒(纯推理)~0.8 秒(推理+脚本)~1.2 秒(推理+工具调用)

💡 测试环境:Claude 3.5 + 本地 Node.js 18,库存数据库为本地 MySQL 8.0。每个方案实测 5 次取中位数。

关键结论:Prompt 最快但最脆弱,MCP 最强但最重。没有银弹,看场景选。

怎么选:决策树

别记概念,记住这个决策顺序:

你的需求是什么? │ ├─ 一次性、简单的任务(总结、翻译、改写) │ → 用 Prompt 就够了,别过度工程化 │ ├─ 重复出现的固定流程(每次都要查库+格式化+生成报告) │ → 封装成 Skill,写一次复用多次 │ └─ 要给多个 AI 客户端提供统一能力(团队共享、跨工具复用) → 做成 MCP 服务器,一劳永逸

💡 三者可以组合:一个 Skill 的内部可以调用 MCP 提供的工具。比如"库存分析报告"这个 Skill,内部用 MCP 的query_stock工具取数,再用 Prompt 指令组织报告格式。

常见问题

Q: Skill 和传统的系统提示词(System Prompt)有什么区别?

A: System Prompt 只是一段文本指令,没有脚本和文件资源。Skill = 指令 + 脚本 + 模板 + 数据,是一个完整的可执行单元。可以把 Skill 理解成"带代码的强化版 Prompt"。

Q: MCP 一定要自己写服务器吗?

A: 不一定。社区有大量现成的 MCP 服务器(GitHub、文件系统、数据库、搜索引擎等),直接配置就能用。自己写只在有定制需求时。可以在 MCP 官方仓库 找现成的。

Q: 这三种方式会互相替代吗?

A: 不会。它们解决不同层次的问题。Prompt 解决"一次表达",Skill 解决"流程复用",MCP 解决"能力共享"。实际项目里三者共存才是常态。

Q: 用 Prompt 实现 Function Calling 不也算"调用工具"吗?

A: 是的,Function Calling 是 Prompt 和工具之间的桥梁。但它是各家 API 私有协议(OpenAI 一套、Anthropic 一套),MCP 的意义就是统一这套协议,让工具写一次到处用。

总结

  • Prompt:最轻量,适合一次性简单任务。痛点是数据写死、不可复用

  • Skill:封装指令+脚本,适合重复出现的固定流程。解决数据实时性和逻辑复用

  • MCP:标准化工具协议,适合跨客户端共享能力。成本最高但通用性最强

  • 选型原则:一次性用 Prompt,重复流程用 Skill,跨工具共享用 MCP

  • 三者可组合:Skill 内部可调用 MCP 工具,不是非此即彼

AI 工程化不是堆概念,是按控制粒度选对工具。简单的需求别上 MCP,复杂的能力别只用 Prompt。你的项目里现在用的是哪种?有没有遇到过"Prompt 写到几百行还管不住"的情况?欢迎评论区交流 👇

参考

  • Model Context Protocol 官方规范

  • Anthropic Skills 文档

  • MCP TypeScript SDK

相关新闻

  • MIPI DCS:从协议规范到嵌入式显示驱动的实战解析
  • wsl磁盘迁移
  • 安卓虚拟相机终极指南:3分钟掌握摄像头魔法

最新新闻

  • C++线程池工业级实现:从核心原理到避坑指南
  • 劳力士中国官方售后服务中心|服务电话及全部地址权威信息声明(2026年7月最新) - 劳力士服务中心
  • Typora永久免费版Win7适配指南:离线可用的Markdown编辑器部署方案
  • 即梦Seedance 2.0去水印脚本原理与实战:前端内存级截流技术解析
  • 2026年7月泊头异形铸铁/翻砂铸铁厂家推荐分析_泊头市嘉硕金属制品有限公司 - 品牌宣传支持者
  • B站视频数据分析终极指南:用Bilivideoinfo快速获取精确数据

日新闻

  • Toon Boom Harmony 高效工作流:从节点视图到镜头标记的实战技巧
  • 真力时售后维修电话,为您提供专业腕表保养与故障修复服务权威公示(2026年7月最新) - 亨得利官方服务中心
  • 【C++】类和对象--构造函数进阶(初始化列表与explicit)

周新闻

  • IX9104 PCIe5.0 高速交换芯片@ACP#完整规格 + 应用场景总结
  • Unity游戏集成Coze智能体:实现NPC智能对话与知识库联动
  • SAP EPIC 建行回单查询:从标准类CL_EPIC_EXAMPLE_CN_CCB_GHTD到Z类的5处关键修改

月新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号