简介:Prompt、MCP与Skill是构建Agent应用时最容易被混淆的三类机制。本文从架构层次、功能边界、接入成本、安全运维与适用场景等维度系统对比三者差异,并以旅游规划Agent为例说明其协同方式,帮助开发者厘清分层职责,做出合理的技术选型与组合使用决策。
在构建Agent应用时,开发者几乎必然会同时接触三类东西:Prompt(提示词)、MCP(模型上下文协议)和Skill(技能)。无论是基于开源框架自建,还是使用百度智能云等平台提供的Agent开发能力,这三者都会出现在同一次Agent任务的执行链路里,且都会影响模型最终的行为表现,因此很容易被混为一谈。
但事实上,三者处于完全不同的抽象层次,解决的是完全不同的问题:
如果混淆了它们的职责边界,常见后果包括:把本应沉淀为工具的能力硬写进提示词、把复杂流程全部塞进工具描述里、或者为每个业务场景重复开发同质化的接入代码。本文将围绕这三者(并顺带说明作为底座的Tool层)展开系统对比,帮助读者建立清晰的分层认知。
Prompt是开发者与模型之间最直接的沟通载体,包括系统提示词、用户输入、少样本示例等。它不包含任何可执行逻辑,而是通过自然语言向模型传达角色设定、任务目标、约束规则和输出格式。Prompt解决的是“模型以什么身份、按什么规范完成任务”的问题。
按照主流Agent开发框架的通用定义,Tool本质上就是一段被封装好的函数或接口调用,通常包含名称、功能描述和参数定义。模型根据描述判断何时调用、如何传参,框架负责真正执行并返回结果。例如“查询两地路线”“按城市查询酒店”都可以封装为独立的Tool。Tool的特点是原子化:每个Tool只做一件具体的事。
MCP层负责“把标准化的能力提供给大模型”。它是一种开放的协议规范,约定了能力如何声明、如何被发现、如何被调用,具体能力由MCP Server承载,例如出行地图MCP Server、酒店查询MCP Server。对模型而言,MCP屏蔽了底层实现差异——无论后端是内部接口还是外部数据源,模型看到的都是统一格式的工具描述。它的核心价值在于标准化与复用:一次按协议接入,多个Agent、多个应用都可以共享这批能力。
Skill层负责“告诉Agent在哪个任务场景下、如何触发和使用这些能力”。以旅游规划Skill为例:当用户提出旅游规划请求时,Agent应当按照“先查地图确认交通、再查酒店、最后生成行程”的流程执行。Skill通常以结构化文档或配置的形式存在,包含触发条件、执行步骤、能力组合方式、约束与注意事项。它不直接执行任何操作,而是为模型提供“场景化的操作手册”。
四层自下而上构成“原子能力 → 标准化接入 → 场景化编排 → 行为约束”的完整链路,其中Prompt贯穿始终,为各层提供行为规范。
| 对比维度 | Prompt | Tool | MCP | Skill |
|---|---|---|---|---|
| 核心定位 | 行为约束与任务描述 | 原子能力执行 | 能力标准化接入 | 场景化流程编排 |
| 是否可执行 | 否 | 是 | 经协议转发执行 | 否(指导执行) |
| 标准化程度 | 无统一标准 | 各框架自定义 | 协议统一 | 无强制标准 |
| 接入成本 | 极低 | 中 | 中(一次接入长期复用) | 中高(需场景设计) |
| 复用范围 | 单任务为主 | 单应用内 | 跨应用共享 | 同类场景 |
| 安全关注点 | 提示注入 | 参数校验 | 认证、授权、审计 | 触发边界控制 |
| 典型形态 | 系统提示词文本 | 函数/API封装 | MCP Server | 结构化流程文档 |
以旅游规划Agent为例,当用户输入“帮我规划一个三天的城市行程”时:
这个例子说明:Tools、MCP、Skill会出现在同一个Agent任务中,但各自履行的职责不同,缺了任何一层,任务的可靠性都会明显下降。
# Prompt:定义Agent的角色与行为规范system_prompt = """你是一个旅游规划助手。规则:1. 涉及地点距离时必须调用地图查询能力,不得凭记忆估算;2. 涉及住宿时必须调用酒店查询能力;3. 输出行程时按"天"组织,并注明信息来源。"""
# MCP:以标准协议把能力声明给模型mcp_server:name: travel-map-servertools:- name: map_route_querydescription: 查询两地之间的路线与耗时input: { origin: string, destination: string }- name: hotel_searchdescription: 按城市与日期查询酒店input: { city: string, check_in: date, nights: int }
# Skill:声明任务场景与能力编排逻辑skill: travel_planningtrigger: 用户请求包含"旅游/行程/攻略"等意图时启用workflow:1. 调用 map_route_query 确认城市间交通与耗时2. 调用 hotel_search 获取住宿选项3. 结合用户预算与天数生成每日行程constraints:- 未获取到地图数据时,不得虚构距离
需要强调的是,这些判断都是条件化的:接入方越多、能力复用诉求越强,MCP的标准化收益越大;任务流程越固定、越依赖领域经验,Skill的价值越明显;而无论上层如何设计,Prompt质量始终是影响最终效果的基础变量。
Prompt、MCP、Skill分别回答了Agent体系中的三个不同问题:Prompt回答“模型该怎么做”,MCP回答“能力从哪来、如何标准化交付”,Skill回答“什么场景下按什么流程使用这些能力”。它们不是相互替代的方案,而是分层协作的组件。理解这一分层,是设计可维护、可扩展Agent应用的前提:行为规范交给Prompt,能力交付交给Tool与MCP,流程经验沉淀到Skill——各层各司其职,才能让Agent在复杂任务中保持稳定与可控。