大模型周边概念速通:MCP、Skill、Agent、Tool 到底是什么

大模型应用发展到现在,很多词会一起出现:MCP、Skill、Agent、Tool、Prompt、Resource、Memory、Guardrail、Handoff、Plugin、Connector。它们看起来都像“给 AI 增强能力”的东西,但实际所在的层级完全不同。
如果把大模型应用想成一个软件系统:大模型负责理解和生成,Agent 负责决策和调度,Tool 负责执行动作,MCP 负责把外部能力标准化接进来,Skill 负责沉淀一套可复用的任务方法。理解这些边界之后,再看各种 AI IDE、智能客服、自动化助手、博客发布机器人,就不会被概念绕晕。
总览:先看一条完整链路#
一次典型的大模型应用调用,可以拆成这条链路:
用户请求
-> 应用 / Agent
-> 组装 Prompt、历史记录、上下文 Resource、Memory
-> 调用大模型
-> 大模型决定是否调用 Tool
-> Tool 可能来自本地代码、平台内置能力,或 MCP Server
-> 工具返回结果
-> Agent 继续推理、校验、生成最终回答
这里最容易混淆的是三层:
| 层级 | 解决的问题 | 典型概念 |
|---|---|---|
| 模型层 | 负责语言理解、推理、生成 | LLM、大模型、多模态模型 |
| 编排层 | 决定怎么完成任务 | Agent、Prompt、Memory、Guardrail、Handoff |
| 能力接入层 | 连接外部数据和动作 | Tool、MCP、Resource、Connector、Plugin、Skill |
一句话概括:大模型是大脑,Agent 是工作流控制器,Tool 是手,MCP 是标准插口,Skill 是做事手册和工具包。
大模型:能力核心,但不是完整应用#
大模型,也就是 LLM 或多模态模型,核心能力是根据上下文预测和生成内容。它可以读文字、写代码、解释日志、分析图片、生成计划,但它本身通常不直接拥有你的文件系统、数据库、浏览器、Git 仓库、公司内部系统权限。
所以,大模型应用真正要解决的是:
- 给模型什么上下文。
- 允许模型调用哪些能力。
- 模型何时该自己回答,何时该查数据或执行动作。
- 工具调用前后如何校验安全性和结果质量。
- 多步骤任务失败时如何恢复。
这就是 Agent、Tool、MCP、Skill 等概念出现的原因。
Agent:让模型从“回答问题”变成“完成任务”#
Agent 可以理解为一个带目标、工具和运行规则的执行单元。它不只是把用户输入丢给模型,而是会组织上下文、调用工具、观察结果、继续下一步,直到得到最终输出。
一个 Agent 通常包含这些东西:
| 组成 | 作用 |
|---|---|
| Instructions | 告诉模型角色、目标、边界和工作方式 |
| Model | 实际使用的大模型 |
| Tools | Agent 可以调用的外部能力 |
| Memory / Context | 对话历史、用户偏好、业务上下文 |
| Guardrails | 输入、输出、工具调用的校验规则 |
| Handoffs | 把任务交给另一个更专业的 Agent |
比如一个“博客写作 Agent”可能会先读取历史文章,分析标签风格,生成封面图,上传图片,再创建文章。大模型负责推理和写作,但整个任务的推进是 Agent 在编排。
Tool:模型可以请求执行的具体动作#
Tool 是最基础的能力单位。它一般有名称、描述、输入参数 schema、输出结果。模型根据用户请求和当前上下文,判断是否要调用工具。
例如:
{
"name": "search_posts",
"description": "按关键词、标签或日期范围搜索博客文章",
"inputSchema": {
"type": "object",
"properties": {
"query": { "type": "string" },
"tag": { "type": "string" }
}
}
}
Tool 的重点不是“模型更聪明了”,而是“模型可以把一部分工作交给确定性的系统执行”。查询数据库、发送 HTTP 请求、读文件、跑测试、调用 Kubernetes、生成图片,这些都适合做成 Tool。
工具设计有几个基本原则:
- 一个工具只做一类清晰动作。
- 参数要结构化,不要只给一大段自然语言。
- 高风险动作要有权限控制、确认机制和日志。
- 工具输出要尽量短、准、可被模型继续使用。
MCP:给 AI 应用连接外部系统的标准协议#
MCP,全称 Model Context Protocol,可以理解为“AI 应用连接外部系统的标准接口”。它解决的是集成问题:如果每个 AI 客户端都要单独适配每个外部系统,组合会很快爆炸;MCP 把外部能力包装成统一的 Server,让 AI 应用通过标准协议发现和使用这些能力。
MCP 里常见角色包括:
| 角色 | 说明 |
|---|---|
| Host | 用户正在使用的 AI 应用,比如 IDE、桌面助手、聊天应用 |
| Client | Host 内部负责和某个 MCP Server 通信的客户端 |
| Server | 暴露工具、资源、提示模板等能力的进程或服务 |
| Tool | 可执行动作,比如查数据库、创建 issue、读文件 |
| Resource | 可读取上下文,比如文件、表结构、文档、配置 |
| Prompt | 可复用的提示模板,通常由用户显式选择 |
MCP 的关键不只是“调用工具”,它还把外部系统拆成几类不同能力:
| MCP 能力 | 谁来控制 | 适合做什么 |
|---|---|---|
| Tools | 模型根据上下文请求调用 | 搜索、计算、写入、执行动作 |
| Resources | 应用决定如何加入上下文 | 文件、数据库 schema、文档、配置 |
| Prompts | 用户通常显式选择 | 代码审查模板、会议总结模板、排障模板 |
这个区分很重要。Tool 偏动作,Resource 偏上下文,Prompt 偏可复用任务入口。把所有东西都做成 Tool,会导致权限、交互和安全边界变得混乱。
Skill:不是一个工具,而是一套可复用工作方法#
Skill 更像“任务技能包”。它通常不是某一次函数调用,而是一组说明、脚本、模板、参考资料和约定,用来让 Agent 在特定任务上稳定工作。
一个 Skill 可能包含:
skill-name/
SKILL.md # 什么时候启用、怎么做
scripts/ # 可复用脚本
templates/ # 文档、邮件、配置模板
references/ # 领域知识或操作手册
assets/ # 示例文件或素材
Skill 的核心价值是“渐进加载”。系统先只知道有哪些 Skill 以及它们适合什么任务;当用户请求匹配某个 Skill 时,再加载完整说明;只有真正需要脚本或参考文件时,才继续加载更多内容。这样既节省上下文,又能让复杂流程稳定复用。
举个例子,写博客这件事可以做成一个 Skill:
- 先读取博客现有标签,避免标签碎片化。
- 生成或选择封面图。
- 上传图片到正确目录。
- 按 Hugo frontmatter 规范创建文章。
- 再读回文章确认标题、摘要、标签、封面是否正确。
这些规则不适合每次都塞进系统提示词,也不应该全做成一个 Tool。它更适合作为 Skill:告诉 Agent 这类任务该怎么完成,并在必要时调用具体工具。
Skill、Tool、MCP 的区别#
这三个概念经常一起出现,但边界很清楚:
| 概念 | 更像什么 | 解决什么问题 | 例子 |
|---|---|---|---|
| Tool | 一个按钮或 API | 执行一个具体动作 | read_post、run_tests、search_web |
| MCP | 一套标准插口 | 让外部系统标准化暴露能力 | blog MCP、filesystem MCP、GitHub MCP |
| Skill | 一份操作手册加资源包 | 让 Agent 按稳定流程完成某类任务 | 博客写作 Skill、代码评审 Skill、数据分析 Skill |
所以:MCP Server 可以提供很多 Tool;Skill 可以指导 Agent 使用哪些 Tool;Agent 负责把用户目标拆解成步骤;大模型负责理解、推理和生成。
Prompt:不是魔法咒语,而是运行时输入结构#
Prompt 不只是用户说的一句话。在复杂应用里,Prompt 往往由多部分组成:
系统指令:你是谁、边界是什么
开发者指令:这个应用的规则和约束
用户请求:用户这次要做什么
上下文:文件、日志、网页、数据库信息
工具结果:刚才调用工具返回了什么
输出格式:最终应该怎么回答
Prompt 的质量会直接影响模型行为,但 Prompt 不能替代权限控制、工具 schema、测试和安全校验。把所有规则都堆进 Prompt,通常会让系统变脆。更好的做法是:稳定规则放在应用和 Skill 里,动态上下文通过 Resource 或检索加入,动作交给 Tool 执行。
Resource:给模型看的上下文,不一定是动作#
Resource 是模型可以参考的信息来源,例如:
- 当前项目的 README。
- 数据库表结构。
- API 文档。
- 设计稿导出的节点信息。
- 某个用户的配置和偏好。
Resource 的重点是“读”。它不应该默认产生副作用。比如读取一张订单表结构是 Resource,创建订单或退款就是 Tool。
这个边界可以帮助我们设计权限:读上下文和执行动作的风险等级不同,审批和审计方式也应该不同。
Memory:让系统跨轮次记住东西#
Memory 是长期或中期记忆。它可以保存用户偏好、项目事实、历史决策、常用命令、业务约束。Memory 不是越多越好,因为过期、错误或冲突的记忆会污染推理。
实践里可以把 Memory 分成三类:
| 类型 | 例子 | 注意点 |
|---|---|---|
| 用户偏好 | 喜欢中文回答、偏好某种代码风格 | 要允许用户修改或删除 |
| 项目事实 | 部署环境、服务名、仓库结构 | 要有来源和更新时间 |
| 任务状态 | 某次长任务进行到哪一步 | 任务结束后可清理 |
Memory 适合保存稳定信息,不适合保存每次都可能变化的数据。比如“今天的部署状态”应该实时查,而不是记在 Memory 里。
Guardrail:给输入、输出和工具调用加护栏#
Guardrail 是校验和拦截机制。它可以在用户输入、模型输出、工具调用前后运行,用来降低风险。
常见 Guardrail 包括:
- 输入是否包含越权请求。
- 输出是否泄露密钥、隐私或内部数据。
- 工具参数是否危险,比如删除目录、覆盖生产配置。
- 模型回答是否符合业务格式。
- 是否需要人工确认后才能继续。
Guardrail 不能只靠一句“不要做危险操作”的 Prompt。高风险系统应该在代码层实现确认、白名单、最小权限、审计日志和回滚策略。
Handoff:把任务交给更合适的 Agent#
Handoff 是 Agent 编排里的“转交”。当一个 Agent 判断自己不是最合适的处理者时,可以把任务交给另一个 Agent。
比如:
入口 Agent
-> 用户要排查线上数据库慢查询
-> 转交给 Database Agent
-> Database Agent 读取慢日志、分析索引、给出建议
Handoff 和 Tool 调用不同。Tool 是执行一个动作;Handoff 是把对话或任务控制权交给另一个专业 Agent。适合在多领域系统里使用,比如客服的退款、订单、技术支持分工,或者开发助手里的前端、后端、数据库、安全分工。
Plugin、Connector、Extension:打包和分发层#
Plugin、Connector、Extension 这些词更偏产品和分发方式,不同平台定义不完全一样。
一般可以这样理解:
| 概念 | 常见含义 |
|---|---|
| Connector | 连接某个外部服务,比如 GitHub、Notion、Slack |
| Plugin | 打包一组能力,可能包含 Skill、工具、连接器、命令 |
| Extension | 安装到某个宿主应用里的扩展,比如 IDE 扩展 |
它们不是模型推理的核心概念,而是把能力交付给用户的方式。一个 Plugin 里面可能包含 MCP 配置、Skill、脚本和 UI 入口。
一个具体例子:AI 帮你发布 Hugo 博客#
假设你对 AI 说:“帮我写一篇关于 MCP 和 Skill 的博客,可以配图。”背后可以这样组合:
| 步骤 | 用到的概念 | 做了什么 |
|---|---|---|
| 理解需求 | 大模型、Prompt | 判断主题、受众、结构 |
| 套用流程 | Skill | 读取博客写作规范、图片上传规范、frontmatter 规范 |
| 查询现状 | MCP Resource / Tool | 读取已有文章和标签 |
| 生成素材 | Tool | 调用图片生成工具,压缩并上传 |
| 创建文章 | MCP Tool | 写入 Hugo 文章文件 |
| 校验结果 | Agent、Guardrail | 再读回文章,确认标题、标签、封面正确 |
这个例子里,MCP 不是“智能”的来源,Skill 也不是“外部服务”。真正的智能来自模型和 Agent 编排;MCP 提供标准化连接;Skill 提供可复用流程;Tool 执行具体动作。
设计大模型应用时的取舍#
如果你正在设计自己的 AI 应用,可以按这个顺序思考:
- 先定义用户要完成的任务,而不是先堆概念。
- 把只读上下文设计成 Resource。
- 把有副作用的动作设计成 Tool。
- 多个外部系统需要标准化接入时,再引入 MCP。
- 重复出现的复杂流程,沉淀成 Skill。
- 需要多领域分工时,再引入多个 Agent 和 Handoff。
- 所有高风险动作都加 Guardrail、权限和日志。
不要一开始就把系统设计成“多 Agent + 多 MCP + 多 Skill”的复杂形态。能用一个 Agent 讲清楚流程,就先用一个 Agent;能用一个明确 Tool 完成,就不要做成一堆模糊工具。
常见误区#
误区一:MCP 等于 Tool。
不准确。MCP 可以暴露 Tools,也可以暴露 Resources 和 Prompts。Tool 只是 MCP 能力的一类。
误区二:Skill 等于插件。
不准确。Skill 更像任务手册和资源包;插件更像分发包,里面可能包含 Skill、连接器、命令和配置。
误区三:Agent 越多越高级。
不一定。多 Agent 会带来转交成本、上下文丢失、调试复杂度和权限问题。只有当专业分工真的清晰时,Handoff 才有价值。
误区四:Prompt 写好就万事大吉。
Prompt 很重要,但不能代替工具 schema、权限、测试、日志和安全边界。
误区五:Memory 越全越好。
过期记忆会误导模型。Memory 应该保存稳定事实,并且有更新和清理机制。
总结#
可以用这几句话记住它们的关系:
- 大模型负责理解、推理和生成。
- Agent 负责把目标拆成步骤,并决定下一步做什么。
- Tool 是可以被调用的具体动作。
- MCP 是把外部系统接入 AI 应用的标准协议。
- Resource 是上下文,Prompt 是任务模板,Memory 是跨轮次记忆。
- Skill 是可复用的任务流程、说明、脚本和资源包。
- Guardrail 负责校验和拦截,Handoff 负责专业 Agent 之间的转交。
理解这些边界之后,再搭大模型应用就会清楚很多:先把任务流跑通,再决定哪些地方需要标准化、哪些流程值得沉淀、哪些动作必须加安全边界。