Skill、MCP、Memory,这三个词到处都有人提,但到底有什么区别?
有人觉得 MCP 就是工具调用,Skill 是更高级的工具,Memory 是存数据的地方。
有人觉得这三个东西差不多,就是叫法不一样。
都不太对。
这三个概念分别解决的是完全不同层面的问题,理解清楚了,搭 Agent 的思路会清晰很多。
用一个比喻先建立直觉
把 Agent 想象成一个新入职的员工。
Skill(技能) 是这个员工本身会什么——写邮件、做数据分析、写代码、做 PPT。这些是他内化了的能力,不需要依赖任何外部系统,随时可以用。
MCP(工具协议) 是他桌上的电脑和软件——Chrome、VSCode、Slack、Jira、数据库客户端。他通过这些工具访问外部世界,发邮件、查数据、推代码。工具不是能力本身,但没有工具,很多事情做不了。
Memory(记忆) 是他的笔记本和大脑里记的东西——你上次交代他的事、项目的背景、同事的名字、某个接口的地址。有了记忆,他不用每次都重新问你”这个项目是干什么的”。
技能决定他能做什么,工具决定他能连到哪里,记忆决定他知道什么。
三个维度,互不替代。
Skill:Agent 内化的可复用能力
Skill 是 Agent 能执行的一个完整的、有明确输入输出的行为单元。
最直观的例子是 Claude Code 里的 /code-review、/run、/verify 这些斜杠命令——你调用它,它按照内置的流程执行一套操作,给你返回结果。这就是 Skill 的形式。
更广义地说,Skill 是”把一件具体的事情封装成可复用的流程”。
比如:
- 搜索总结技能:给定一个问题,搜索多个来源,归纳出结论
- 代码审查技能:读取 diff,按照固定维度(安全、性能、可读性)输出分析报告
- 邮件起草技能:根据意图和收件人背景,生成合适语气的邮件草稿
Skill 的核心特征是可复用和有明确边界。它不是一次性的 prompt,而是一个稳定的行为模板,可以被不同的 Agent、不同的任务反复调用。
Skill 可以是:
- 一段精心设计的系统提示词
- 一个调用了若干工具的完整流程
- 一个子 Agent(专门负责某类任务的 Agent)
它的本质是对 Agent 行为的封装,把”怎么做某件事”固化下来,不用每次从头设计。
MCP:连接外部世界的标准插口
MCP 全称 Model Context Protocol,由 Anthropic 提出,目的是标准化 Agent 与外部工具、数据源之间的通信方式。
在 MCP 之前,每个 Agent 框架、每个 LLM 平台,都有自己的工具调用格式。OpenAI 是一套 JSON Schema,Anthropic 是另一套,LangChain 又是另一套。你写了一个搜索工具,想在不同平台复用,得重写接口。
MCP 做的事情就是把这个统一掉——像 USB-C 统一了充电接口一样。
MCP 定义了三种能力:
Tools(工具):Agent 可以主动触发的操作。搜索、发邮件、执行代码、写入数据库——有副作用,会改变外部世界的状态。
Resources(资源):Agent 可以被动读取的数据。文件内容、数据库记录、API 返回的 JSON——只读,不产生副作用。
Prompts(提示模板):MCP Server 提供的指导性模板,帮助 Agent 更好地使用这个服务。
工作流程是这样的:
用户请求 → Agent 判断需要什么能力 → 通过 MCP Client 连接对应的 MCP Server → Server 执行操作并返回结果 → Agent 整合结果,继续推理一个典型的 MCP 服务器可能提供:文件系统访问、GitHub 操作、数据库查询、网页搜索……
MCP 解决的是”Agent 怎么连到外部系统”的问题,不是”Agent 会做什么”的问题。
它是基础设施层,不是能力层。
一个实际的类比:MCP 是 Agent 的 USB 接口规范,MCP Server 是各种外设,Skill 才是真正在用这些外设干活的那个人。
Memory:Agent 的记忆系统
Memory 解决的问题是:Agent 怎么记住跨对话、跨任务的信息。
没有记忆系统,每次对话 Agent 都是全新开始,不知道你是谁,不记得上次做了什么,也不了解项目背景。
Agent 的记忆体系通常分四层,这个分类来自认知心理学对人类记忆的研究:
工作记忆(Working Memory)
最短暂的记忆,就是当前上下文窗口里的对话内容。容量有限,LLM 一次能处理的 token 数就是工作记忆的上限。
对话结束,工作记忆就清空了。
情节记忆(Episodic Memory)
记录具体发生过的事件,带时间戳。“用户昨天让我帮他改了登录模块”、“上次这个问题回答错了”——这类信息存在情节记忆里。
通常用向量数据库 + SQLite 混合存储,检索时综合考虑语义相似度和时间近因性。
语义记忆(Semantic Memory)
存储抽象的知识和规则,不依附于具体事件。“这个项目用 pnpm 不用 npm”、“用户偏好简短回复”——这类稳定的事实和偏好存在语义记忆里。
通常用图数据库 + 向量存储,支持复杂的关系推理。
感知记忆(Perceptual Memory)
存储多模态信息:图片、音频、文档。跟语义记忆类似,但针对非文本数据。
三者的核心区别
用一张表格收敛一下:
| Skill | MCP | Memory | |
|---|---|---|---|
| 解决什么问题 | Agent 怎么做某件事 | Agent 怎么连外部系统 | Agent 怎么记住信息 |
| 本质是什么 | 封装好的行为流程 | 通信协议 + 接口规范 | 信息存储与检索系统 |
| 类比 | 人的技能 | 电脑上的应用程序 | 人的记忆和笔记 |
| 生命周期 | 持久,随 Agent 携带 | 运行时按需连接 | 跨会话持久化 |
| 谁提供 | 开发者或 Agent 自身 | 第三方 MCP Server | Agent 运行时积累 |
一个具体场景串联三者
假设你让 Agent 帮你定期整理会议记录。
Skill 负责”怎么整理”:Agent 有一个”会议纪要整理技能”——提取关键决策、待办事项、参会人,按固定格式输出。这个流程是封装好的,每次整理都走这套逻辑。
MCP 负责”从哪里拿、存到哪里”:Agent 通过 MCP 连接 Google Drive(读取会议录音或文字稿),通过 MCP 连接 Notion(把整理好的纪要写入数据库)。Google Drive 和 Notion 都有各自的 MCP Server,Agent 不需要关心具体 API 格式。
Memory 负责”记住上下文”:Agent 记得你的会议命名规范、你喜欢的纪要格式、上次你反馈说”待办事项要标注负责人”——这些偏好存在语义记忆里,下次整理自动应用,不用你重新说。
三者分工清晰,各司其职。
常见误解
“MCP 就是工具调用,Skill 是更高级的工具调用”
不对。工具调用(Function Calling)是模型内置的能力,格式因 LLM 而异。MCP 是在工具调用之上的协议层,把接口标准化,让工具可以跨平台复用。Skill 不是”更高级的工具调用”,而是”用了工具之后完整的行为流程”。
“记忆就是把对话存起来”
比这复杂得多。对话历史只是记忆的最低级形式(工作记忆)。真正有用的记忆系统会从对话里提炼出结构化知识、用户偏好、任务进展,存入语义记忆,并在需要时精确检索,而不是把所有对话堆进上下文窗口。
“有了 MCP 就不需要 Skill”
MCP 给了 Agent 访问工具的能力,但不告诉它怎么用这些工具完成一件复杂的事。Skill 是”怎么做”,MCP 是”连到哪里”,少了任何一个,Agent 都不完整。
最后
搭 Agent 的时候,可以用这三个问题来自检:
它能做什么? → 看 Skill 设计 它能连到哪里? → 看 MCP 接入 它能记住什么? → 看 Memory 架构
三个问题都想清楚了,Agent 的骨架就基本成型了。
剩下的,就是让它跑起来,然后在它犯错的地方,把环境设计得更好。