编码 Agent 的三大支柱:Prompt、Skills 与 MCP
最近在折腾编码 Agent 的时候,我发现一个很普遍的困惑:项目里有个 CLAUDE.md,旁边还有个 skills 文件夹,再加上 MCP 配置——这三样东西到底各自负责什么?它们之间又是什么关系?
我花了不少时间去理解和实践,这篇文章就把我的理解分享给你。
Prompt:Agent 的灵魂
Prompt,准确说是 System Prompt(系统提示词),是 Agent 最核心的东西。它不是一条普通的提问,而是定义了 Agent "是谁"的元指令。
你可以把它理解成一个国家的宪法,或者一台电脑的操作系统。它不负责执行具体任务,但所有行为都必须在它划定的框架内进行。
在实际使用中,Prompt 主要做两件事:
身份塑造。 比如你可以把 Agent 定义成"一位有十年经验的 Python 工程师",或者"一位追求代码优雅的审查员"。不同的身份设定,会直接影响 Agent 的输出风格和决策倾向。
规则约束。 Prompt 里会包含一系列"必须"和"禁止"条款。比如"必须为所有函数写文档字符串"、"禁止硬编码 API 密钥"。这些规则确保 Agent 自主工作时不会跑偏。
像 CLAUDE.md 就是一个典型的 System Prompt 文件——它定义了 Agent 的人格、对话风格和行为规范。
Skills:Agent 的技能树
如果说 Prompt 定义了"我是谁",那 Skills 就定义了"我能做什么"和"具体怎么做"。
两者最核心的区别是:Prompt 是唯一的、全局性的身份设定;Skills 是复数的、可插拔的能力模块。打个比方,Prompt 是程序员的大脑,Skills 是他掌握的各种函数库和设计模式——需要的时候随时导入。
Skills 的价值体现在三个方面:
知识沉淀。 把特定领域的最佳实践、代码模板、API 文档固化成标准流程。比如一个"创建 React 高阶组件"的 Skill,里面可能包含文件结构模板、状态管理规范和测试用例写法。
能力扩展。 同一个 Agent,今天加载"数据库优化"的 Skill,明天加载"CI/CD 部署"的 Skill,核心身份不变,能力却可以灵活切换。
工作流引导。 对于复杂任务,Skill 可以把它拆解成清晰的步骤,引导 Agent 一步步完成,而不是让它自己摸索。
MCP:Agent 的外部记忆
MCP(Model Context Protocol),模型上下文协议,解决的是大模型的两个硬伤:上下文窗口有限,以及天生无状态。
如果说大模型是一个算力超强但记忆短暂的大脑,MCP 就是给它配了一块无限容量的外部硬盘,外加一个连接各种云服务的 API 网关。
在实践中,MCP 主要做三件事:
上下文扩展。 面对一个庞大的代码库,Agent 不可能一次性全部读入。通过 MCP,它可以把代码索引到外部数据库,需要时精准调取相关片段。
状态持久化。 一个任务分多次会话完成时,Agent 可以通过 MCP 保存工作进度——已改了哪些文件、下一步计划是什么——下次启动时无缝衔接。
服务集成。 通过 MCP 这个标准化的"插件"协议,Agent 可以调用各种外部 API,把这些能力无缝整合到自己的工作流中。
三者的关系
下面这张表能帮你快速理清三者的定位:
| 维度 | Prompt | Skills | MCP |
|---|---|---|---|
| 作用层级 | 核心层:定义本质 | 能力层:赋予具体能力 | 扩展层:连接外部资源 |
| 性质 | 全局唯一,高度稳定 | 模块化,按需插拔 | 标准化接口,连接外部 |
| 生命周期 | 初始化时加载,贯穿始终 | 执行特定任务时动态加载 | 跨会话持久存在 |
| 类比 | 操作系统 / 宪法 | 函数库 / 技能树 | 外部硬盘 / 云服务 |
总结
Prompt 是内核,Skills 是能力库,MCP 是外部扩展。三者分层解耦、各司其职,共同撑起了一个编码 Agent 的完整架构。理解了这个分层模型,你在配置和使用 Agent 时就不会再迷糊了。
评论区
评论基于 GitHub Discussions,请使用 GitHub 账号登录后评论。 如果评论区未加载,请先到 giscus.app 配置你的仓库。