跳过正文

首页 / 文章

别再混了!Proompt、MCP、Skills到底区别在哪

常被搞混的 6 个 AI 工具概念终于理清了:Prompt 解决临时对话,Skills 沉淀标准流程,MCP 暴露外部工具,Commands 创建快捷模板,Agent 实现自主闭环,Subagent 隔离并行任务。每个概念的核心定义、适用场景、工程成本、复用性一表知。包含真实对比表与决策矩阵——基于 Anthropic 官方文档与 LangChain 标准。

她笑中藏泪花·
··796 字·4 分钟

别怪自己记不住,是这些词真的太像了
#

使用Claude code和Codex这样工具的时候,最容易被一套“看起来都能让模型更能干”的名词暴击:PromptCustom CommandsMCPAgentSubagent……最近又多了个 Skills

然后就开始怀疑人生:我到底该写 Prompt,还是该搞 Skills?接外部系统是不是就叫 Agent?Subagent 又是啥时候用?

那种“一个词没搞清楚,架构就越写越乱”的感觉,我太懂了。那个报错红框弹出来的时候,心态真的容易崩。

今天我们换个更省脑子的视角:不按“厂商怎么叫”,按“它到底解决哪类问题”来拆。你会发现它们其实各司其职,组合起来反而很顺。


1. Prompt:我们最常用的「临时指令」,但它天生不稳定
#

Prompt 的优点就一个字:快。今天要它解释一段代码、写个 SQL、总结个文档,直接开聊就行。

但 Prompt 的痛点也很直白:同一个问题你问 5 次,它可能给你 5 种风格;团队里每个人各写各的 Prompt,输出就更像在抽盲盒——完全看运气。

使用最顺手的方法是:当成一次性的"即时指令"。

举个例子:现在离春节还有点时间,你和好朋友准备去北京三日游,想用 AI 辅助做攻略。

这时候我们会对大模型说:

我们要在春节前去北京三日游、预算多少、更想逛胡同还是看博物馆、每天走路别太多、输出按 Day1/Day2/Day3 给我。

这一步的本质就是按下启动键:先把这次要做什么定下来。Prompt 就是那个临时的、实时的沟通渠道。


2. MCP:它不教模型怎么做事,它只负责“让模型能摸到外部世界”
#

继续刚才的例子:卡住我们的地方通常不是"模型不会写攻略",而是"它拿不到真实的路线、时间、地点信息"。如果靠模型本身的知识库,它可能会编造一个并不存在的地铁站。

这时候发现高德地图提供了一个 MCP Server,把查路线、算时间、搜兴趣点这些能力暴露成标准工具,我们就能让模型用规范化协议去调用:比如让它查"酒店→故宫"的来往方式、自动预估耗时、再把结果无缝塞回行程里。

MCP (Model Context Protocol) 解决的是连接性:模型到底能访问哪些工具、资源、上下文。它把这件事做成标准协议,然后供模型使用1

关键点:MCP Server 可以对外暴露 toolsresources 等能力,模型则按规范去调用它们。这套标准化的做法有个好处:无论你换了什么底层模型,与外部工具的接口始终一致,不用每次都重新改代码。

关于高德的这个例子,大家可以看看官方文档(🔗 高德 MCP Server 介绍)。


3. Skills:把“正确姿势”沉淀下来,让团队输出更一致
#

有了 MCP 之后,我们还希望它“每次都按我们习惯的方式做攻略”,别一会儿像小红书、一会儿像论文。

这时 Skills 就出场了。我们提前做一堆行程规划的 Skills,比如"北京三日游模板"、“景点节奏控制(上午/下午/夜景)"、“预算与交通规则”。

模型在开始执行前,首先看到每个 Skill 的名字和描述这些元信息,然后只在命中对应任务时,才会深入加载那个 Skill 的完整内容。这叫渐进式披露(Progressive Disclosure),token 用得特别高效2

大家试想一下,如果我们去图书馆查资料,图书管理员是把所有书的内容一股脑塞进我们脑子里,还是先给我们看书名和简介?肯定是后者。

Skills 的运行机制也是一样:

  1. 先看“书名和简介”:模型启动时,只会快速扫描所有 Skills 的头部元信息(就是 namedescription)。
  2. 再看“全部内容”:只有当它发现用户的需求(比如“帮我理个计划”)完美命中了某个 description 时,它才会去加载那个 Skill 后面成百上千行的具体指令。

这样做有两个巨大的好处:一是省钱(Token 用得少),二是抗干扰(上下文里没那么多杂音)。

大家看下面这个真实的 Skill 文件头,模型在第一阶段其实只看得到这点东西:

1
2
3
4
---
name: agent-skills
description: Enables the model to identify, select, and execute external tools to fulfill complex user requests
---

而下面的具体的描述使用,则是看不到的。同时,只要你的 description 写得够精准,模型在解决不同问题的时候,就越能准确的调用不同的skills

很多人把 Skills 当成"更聪明"的工具,但它最有工程价值的地方其实是 “更一致、能沉淀、能复用”

它特别适合:重复出现的任务、希望稳定输出、团队想共享最佳实践(比如报告模板、代码审查规范、规范开发)。

💡 一图看懂:Skills vs MCP
#

它们不是替代关系,而是互补关系:MCP 给入口(能做什么),Skills 给用法(该怎么做)

<ul style="list-style: none; padding: 0; margin: 0; line-height: inherit;">
  <li style="margin-bottom: 8px;"><b style="color: #15803d; margin-right: 4px;">● 核心定义</b> 封装经验与规范的“知识包”,实现复用。</li>
  <li style="margin-bottom: 8px;"><b style="color: #15803d; margin-right: 4px;">● 主要功能</b> 流程标准化,确保输出格式稳定。</li>
  <li style="margin-bottom: 8px;"><b style="color: #15803d; margin-right: 4px;">● 工作机制</b> 按需加载,节省 Token,适合渐进引导。</li>
  <li><b style="color: #15803d; margin-right: 4px;">● 门槛</b> <span style="color: #10b981; font-weight: bold;">低</span> <span style="margin-left: 4px;">无需编程,写清规则即可上手。</span></li>
</ul>
<ul style="list-style: none; padding: 0; margin: 0; line-height: inherit;">
  <li style="margin-bottom: 8px;"><b style="color: #1e40af; margin-right: 4px;">● 核心定义</b> 连接外部系统的统一协议,打破孤岛。</li>
  <li style="margin-bottom: 8px;"><b style="color: #1e40af; margin-right: 4px;">● 主要功能</b> 实时访问数据库、API 及操作外部服务。</li>
  <li style="margin-bottom: 8px;"><b style="color: #1e40af; margin-right: 4px;">● 工作机制</b> 启动时全量加载所有工具定义。</li>
  <li><b style="color: #1e40af; margin-right: 4px;">● 门槛</b> <span style="color: #3b82f6; font-weight: bold;">高</span> <span style="margin-left: 4px;">涉及开发部署,需处理鉴权与运维。</span></li>
</ul>

大家如果想找现成的 Skills 参考,可以逛逛这个市场:👉 Agent Skills 市场


4. 自定义 Commands:把高频 Prompt 变成“快捷键”
#

如果我们发现“每次做攻略都要重复敲一大段 Prompt”,那心态真的容易崩。这时候就把高频那段话做成 Custom Commands

它的逻辑比 Skills 更轻:它就是把一段做好的 Prompt 存成一个命令。

比如做一个 /beijing_trip 命令,里面写好固定模板(要问哪些问题、输出格式、要不要表格、每天步数上限)。下次只要敲 /beijing_trip 3天 预算3000 就直接展开执行。

  • Claude Code: 支持 Markdown 定义的 slash commands,放在 .claude/commands/3

  • OpenAI Codex: 也有类似的 Custom Prompts 机制4

如何选择:如果只是想少打字,用 Commands;如果是想教模型一套复杂流程,且自主调用,用 Skills。


5. Agent:真正开始“干活”的闭环,不是大号 Prompt
#

当我们不满足于“给一份攻略”,而是希望它能自己跑完整个闭环——比如:先问缺失信息 → 调用高德 MCP 查路线 → 发现某天太赶再自动调整 → 最后检查预约/闭馆并给出最终版。

这就不是一条 Prompt 能搞定的了,这是 Agent 的典型工作方式:

规划 → 调用工具 → 根据结果迭代 → 直到满足验收标准。

很多人误会“Agent = 大 Prompt”,是因为只看到“指令”,没看到 Agent 的核心在于循环(Loop)和状态管理

这里有个小坑:Claude Code 和 OpenAI Codex 其实都属于 Agent(而且是 Coding Agent)。它们提供了读代码、改代码、跑命令、结合仓库上下文、按任务迭代的能力,完全符合 Agent 的定义。


6. Subagent:把主对话从“信息垃圾堆”里救出来
#

最后一个小妙招是 Subagent

试想一下,主 Agent 正在整理三日游大纲,这时我们需要查“路线细化/通勤耗时/换乘方案”。如果都在主对话里跑,你的屏幕会被一大堆 API 调用日志和中间数据刷屏。

这时候,我们把这个很碎的活丢给一个 Subagent 去跑(它像被主 Agent 当成一个工具来调用),跑完只回传精炼结果。

这样做的好处

  1. 干净:主上下文不会被污染。

  2. 并行:可以同时派三个 Subagent 去查机票、酒店和门票。

这在 LangChain Deep Agents 里叫 Context Isolation(上下文隔离)5,非常实用的架构模式。


总结:一张图看清
#

为了方便大家理解,我把这 6 个概念整理成了一张架构图和对比表。方便大家理解。

    .af-main {
        background: linear-gradient(135deg, #6366f1 0%, #4f46e5 100%);
        color: white;
        border: none;
        padding: 16px 32px;
        border-radius: 16px;
        box-shadow: 0 10px 15px -3px rgba(79, 70, 229, 0.3);
        width: fit-content;
        margin: 0 auto;
    }
    .af-tools-container {
        display: grid;
        grid-template-columns: repeat(3, 1fr);
        gap: 12px;
        background: #f1f5f9;
        padding: 16px;
        border-radius: 16px;
        border: 1px dashed #cbd5e1;
    }
    .af-tool-card {
        background: white;
        padding: 12px;
        border-radius: 10px;
        border: 1px solid #e2e8f0;
        transition: transform 0.2s;
    }
    .af-tool-title { font-weight: 700; font-size: 13px; display: flex; align-items: center; gap: 6px; margin-bottom: 4px; }
    .af-tool-desc { font-size: 11px; color: #64748b; }
    
    /* 颜色变体 */
    .c-skill { color: #059669; } .b-skill { border-left: 3px solid #10b981; }
    .c-cmd { color: #0891b2; } .b-cmd { border-left: 3px solid #06b6d4; }
    .c-mcp { color: #2563eb; } .b-mcp { border-left: 3px solid #3b82f6; }
    .c-sub { color: #d97706; } .b-sub { border-left: 3px solid #f59e0b; }

    .af-arrow { display: block; margin: 4px auto; color: #cbd5e1; }
    .af-success {
        background: #f0fdf4;
        border: 2px solid #22c55e;
        color: #15803d;
        font-weight: 700;
        padding: 10px 24px;
        border-radius: 30px;
        width: fit-content;
        margin: 16px auto 0;
    }
</style>

<div class="af-node af-user">👤 用户</div>

<svg class="af-arrow" width="120" height="30" viewBox="0 0 120 30">
    <path d="M60 0 L60 10 M60 10 L20 25 M60 10 L100 25" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"></path>
</svg>

<div class="af-input-container">
    <div class="af-node af-input-card">
        <div class="af-input-title c-skill">📝 Prompt</div>
        <div class="af-input-desc">自然语言输入</div>
    </div>
    <div class="af-node af-input-card">
        <div class="af-input-title c-cmd">⌨️ Commands</div>
        <div class="af-input-desc">指令型输入</div>
    </div>
</div>

<svg class="af-arrow" width="120" height="30" viewBox="0 0 120 30">
    <path d="M20 5 L60 20 M100 5 L60 20 M60 20 L60 30" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"></path>
</svg>

<div class="af-node af-main">
    <div style="font-size: 16px; font-weight: 800;">🧠 主 Agent</div>
    <div style="font-size: 12px; opacity: 0.9;">解析 · 规划 · 路由</div>
</div>

<svg class="af-arrow" width="24" height="40" viewBox="0 0 24 40" fill="none" stroke="currentColor" stroke-width="2">
    <path d="M12 0v35M12 35l-5-5M12 35l5-5" stroke-dasharray="2 2"></path>
</svg>

<div style="margin-bottom: 8px; font-size: 11px; font-weight: 700; color: #94a3b8; text-transform: uppercase; text-align: center; letter-spacing: 0.05em;">Tools / Capabilities</div>
<div class="af-tools-container">
    <div class="af-tool-card b-skill">
        <div class="af-tool-title c-skill">🛠️ Skills</div>
        <div class="af-tool-desc">预设最佳实践</div>
    </div>
    <div class="af-tool-card b-mcp">
        <div class="af-tool-title c-mcp">🔌 MCP Server</div>
        <div class="af-tool-desc">连接外部 API、数据库与实时数据</div>
    </div>
    <div class="af-tool-card b-sub">
        <div class="af-tool-title c-sub">🤖 Subagents</div>
        <div class="af-tool-desc">并行处理复杂任务,递归解决问题</div>
    </div>
</div>

<svg class="af-arrow" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 5v14M19 12l-7 7-7-7"></path></svg>

<div class="af-node af-success">✨ 任务达成</div>
维度PromptSkillsCommandsMCPAgentSubagent
核心目标即时对话稳定输出快捷复用外部集成自主闭环隔离并行
复用性🔴 低🟢 高💎 极高🟢 高🟡 中🟡 中
工程成本🟢 极低🟢 低🟢 低🟡 中🔴 极高🔴 高
技术栈纯文本MD定义YAML/MDJSON-RPC全栈逻辑隔离线程

参考资料
#

相关工具

相关文章

这 6 个反人性的Prompt,帮我看清楚了自己

··5705 字·27 分钟
这篇文章结合AI自我提升与AI提示词,整理出6套适合全局记忆模型的深度自我提问玩法:人生残酷真相扫描器、HUMAN3.0评估、无情辩手、写信解压、传奇vs普通人拷问、借AI消灭拖延,帮你用AI看清自己、升级生活方式,适合想重新校准人生方向的你,点击了解具体提问框架与实践步骤。