简介:本文面向开发者与技术负责人,系统拆解Prompt、Skill、MCP三类AI能力载体的定位差异与协作方式。通过概念对比、目录结构示例、实施步骤与验证方法,帮助读者判断何时用提示词、何时沉淀技能包、何时接入工具协议,并给出可落地的分层设计思路与常见问题排查建议。
本教程要帮助读者完成一件具体的事:在面对一个AI Agent(智能体)开发或使用任务时,能够准确判断哪些内容应该写成Prompt、哪些应该沉淀为Skill、哪些应该通过MCP接入外部工具,并按照合理的分层结构把它们组织起来。
具体来说,读完之后你应该能够:
适合阅读本教程的读者包括:正在开发AI Agent应用的开发者、负责团队AI工程化落地的技术负责人、需要把内部流程接入智能体的运维人员,以及希望理解这三者边界的产品与技术决策者。本文不假设你已经有成熟的Agent框架经验,但需要你对”大模型对话””函数调用””配置文件”这些基础概念有大致了解。
在动手之前,先明确这套分层思路适用于哪些场景:
在开始设计之前,请确认具备以下基础条件:
不需要准备具体的第三方工具或平台账号,本文所有示例均为通用示意。
在实施之前,必须先把三者的定位讲清楚。可以用”新入职同事”这个类比来理解:
三者的关键差异可以归纳为下表:
| 对比项 | Prompt | Skill | MCP |
|---|---|---|---|
| 形态 | 纯文本 | 文档 + 脚本 + 配置 | 协议 + 工具描述 + 服务端 |
| 生命周期 | 一次性,随对话存在 | 可复用,持久沉淀 | 常驻,按需调用 |
| 解决的问题 | 这一次要做什么 | 这一类事该怎么做 | 能对哪些外部系统做什么 |
| 是否含可执行逻辑 | 否 | 可含钩子脚本 | 是,工具本身可执行 |
| 典型失效方式 | 每次都要重说,容易漏 | 写得太泛,等于没写 | 工具描述不清,模型调错 |
理解这张表,后面的实施步骤就有了判断依据。
做什么:把你当前想让AI完成的任务拆成两类句子——一类是这次特有的(比如”帮我写一个用户注册接口”),一类是每次都想说的(比如”参数必须校验””注释用中文””不要引入新依赖”)。
为什么做:这一步是整个分层设计的基础。一次性指令适合留在Prompt里;反复出现的规范,就是应该沉淀为Skill的候选。
注意什么:不要急着把什么都写成Skill。只有”跨多次任务稳定不变”的内容才值得沉淀,否则会造成过度工程化。
做什么:为每一类稳定规范建立一个技能目录,至少包含一份主说明文档,描述背景知识、操作流程、检查清单。如果流程中有可以自动执行的环节,再加入钩子脚本;如果需要积累经验,再加入记忆文件。
为什么做:Skill的价值在于”打包”。纯文本的Prompt无法携带流程分支、检查清单和脚本,而结构化技能包可以让智能体在遇到同类任务时按既定流程执行,减少遗漏。
注意什么:Skill文档要写得可执行,而不是写口号。比如”注意代码质量”没有意义,”提交前检查:是否有未使用变量、是否有硬编码密钥、是否有未处理异常”才有意义。
一个通用的技能目录示意如下:
example-skill/├── SKILL.md # 主说明:适用场景、流程、规则、输出格式├── hooks/ # 钩子脚本:在关键节点自动执行检查│ ├── pre-check.sh│ └── post-check.sh├── memory/ # 记忆系统:沉淀历史经验│ ├── patterns.json # 抽象出的通用模式│ └── episodes/ # 具体任务经历└── references/ # 参考资料└── appendix.md
配置说明:主说明文档建议固定包含四部分——适用场景(什么时候触发这个技能)、执行流程(分几步、每步做什么)、检查清单(必须满足的条件)、输出要求(结果以什么格式返回)。这四部分决定了技能是否可被稳定复用。
做什么:列出智能体需要操作的外部系统,为每个系统定义工具:工具名称、用途描述、参数结构、返回结构。然后通过MCP协议把这些工具暴露给模型。
为什么做:模型本身不能直接查数据库或调接口,它只能”决定调用哪个工具、传什么参数”。MCP的作用是把”有哪些工具、怎么用”标准化,让模型按统一格式发现和调用,换一个后端实现时不需要改模型侧的接入逻辑。
注意什么:工具描述是模型选择工具的唯一依据,必须写清”什么时候该用这个工具、什么时候不该用”。参数要做类型约束和取值范围约束,敏感操作要设计人工确认环节。
一个通用的工具描述示意(伪代码,非具体产品格式):
tool: query_business_datadescription: 根据自然语言条件查询业务数据表,仅支持只读查询parameters:table: string, 必填, 目标数据表名filters: object, 可选, 字段与取值条件limit: integer, 可选, 默认50, 最大200returns: 结构化记录列表side_effects: 无(只读)
做什么:把系统级Prompt(身份与总体约束)、Skill(按任务类型挂载)、MCP工具集(按需开放)组合成一个完整的Agent配置。
为什么做:三者分工不同但相互配合。Prompt负责”你是谁、总体要遵守什么”;Skill负责”这类任务按什么流程做”;MCP负责”你能调用哪些外部能力”。缺一层,Agent的能力就有明显短板。
注意什么:系统级Prompt要保持精简,只放身份、总体风格和硬性边界;具体领域流程下沉到Skill;具体操作能力下沉到MCP。如果系统Prompt里塞满流程细节,会挤占上下文并降低可维护性。
做什么:设计三类测试任务分别验证三层是否生效:
为什么做:三层结构最容易出的问题是”边界混淆”——该走Skill的走了Prompt,该调工具的靠模型编造。分场景验证能快速定位问题层。
验证一套分层设计是否成功,可以看以下信号:
如果以上信号大部分不满足,回到第五节的步骤一重新拆分任务。
问题一:模型总是忽略规范。
原因通常是规范写在Prompt里但每轮都被稀释,或Skill文档写得太笼统。排查思路:把稳定规范移到Skill并写成可勾选的检查清单;在系统Prompt中只保留一句”执行前先加载对应技能”。
问题二:模型调用了不该调用的工具。
原因通常是工具描述边界不清,或工具权限开放过宽。排查思路:在工具描述中明确”不适用场景”,对写操作类工具增加确认步骤,按任务类型缩小可用工具集。
问题三:Skill越写越多,维护困难。
原因是把一次性内容也沉淀成了技能。排查思路:定期清理长期未触发的技能;一个技能只覆盖一类任务;把共用部分抽到引用文档而非复制多份。
问题四:上下文被撑爆。
原因是系统Prompt过长或一次性挂载了太多Skill和工具。排查思路:按任务动态加载技能,工具按需开放,长参考材料放到引用文件按需读取。
Prompt、Skill、MCP不是互相替代的关系,而是三层分工:Prompt解决”这一次做什么”,Skill解决”这一类事怎么做”,MCP解决”能对哪些外部系统做什么”。掌握这套分层判断方法后,你在设计任何Agent时都可以先问三个问题——这句话是一次性的还是长期规范?这个流程要不要沉淀成可复用技能?这个能力需不需要通过标准协议接入外部工具?回答完这三个问题,方案结构自然清晰。后续可以继续关注的方向包括:技能的记忆机制如何设计、工具调用的失败恢复策略,以及多层能力组合下的评测方法。