深色模式
04 · 记忆与 MCP:让 Agent 记得住、接得上
学完你能说出:
- 短期记忆和长期记忆分别是什么、存在哪、怎么用。
- 上下文太长时的三种处理办法:截断、摘要、存到外部再检索。
- MCP 是什么,解决了什么问题(用「USB 接口」讲清楚)。
先看地图
前面讲了 Agent 怎么想、怎么做。这一篇解决两个「工程问题」:
- 记忆:任务一长,聊天记录塞不下了怎么办?下次对话还记得用户的偏好吗?
- 接入:工具越来越多,每接一个都要写一套代码,能不能统一?
本篇讲 4 个点:① 短期记忆 → ② 长期记忆 → ③ MCP 是什么 → ④ 为什么需要 MCP。
一句话本质
- 记忆 = 决定把哪些信息留在上下文里、哪些存到外面,需要时再取回来。
- MCP = AI 应用和外部工具之间的一套通用接口标准,接一次就能用。
生活类比
- 短期记忆像工作台:桌面就那么大(上下文窗口),只能放手头正在用的东西。
- 长期记忆像档案柜:东西多也放得下,但要用的时候得去翻(检索)。
- MCP 像 USB-C 接口:以前每个设备一种充电线,现在一个标准接口,什么设备都能插。
一步步看
1. 短期记忆:上下文里的对话历史
就是第 04 篇说的「每次把历史消息重新发一遍」。Agent 每走一步,Thought、Action、Observation 都会追加进去,很快就变长。
太长了怎么办?三种办法:
| 办法 | 怎么做 | 代价 |
|---|---|---|
| 截断 | 只保留最近 N 轮 | 早期信息直接丢了 |
| 摘要 | 用模型把旧的对话压缩成一段总结 | 细节会丢,还要额外调用模型 |
| 外存 + 检索 | 旧内容存进向量库,需要时按相关性取回 | 实现复杂,可能取不准 |
2. 长期记忆:跨对话保存
比如用户说过「我在准备 AI 应用岗的面试」,下次对话还应该记得。
写入:对话中出现值得记住的信息 → 提取成一条记忆 → 存进数据库(常配向量,方便检索)
读取:新对话开始 / 遇到相关问题 → 检索相关记忆 → 放进上下文这和 RAG 的思路几乎一样:把资料换成「关于用户的记忆」而已。
3. MCP:工具的统一接口
MCP(Model Context Protocol,模型上下文协议) 是 Anthropic 在 2024 年底发布的开放标准。
AI 应用(MCP 客户端) ←— 统一协议 —→ MCP 服务器 A:文件系统
MCP 服务器 B:GitHub
MCP 服务器 C:数据库- MCP 服务器:把某个外部能力包装成标准格式,对外提供:
- 工具(Tools):可以调用的操作,比如「创建 issue」;
- 资源(Resources):可以读取的数据,比如「某个文件的内容」;
- 提示模板(Prompts):预先写好的常用提示。
- MCP 客户端:AI 应用里负责连接服务器的部分。连上后就能拿到工具列表,像上一篇那样交给模型调用。
为什么这么设计
为什么要区分短期记忆和长期记忆?
- 问题:上下文窗口有限、按 Token 计费;但有些信息(用户偏好、历史结论)需要长期保留。
- 方案:当前任务相关的放在上下文(短期),需要长期保留的存到外部数据库(长期),用时检索。
- 好处:上下文不会无限膨胀,重要信息也不会丢。
一句话答法
上下文窗口有限且昂贵,只能放当前需要的信息;长期信息存到外部、按需检索,兼顾容量和成本。
为什么需要 MCP?
- 问题:以前每个 AI 应用接每个工具都要单独写对接代码。M 个应用 × N 个工具 = M × N 套代码,重复劳动,还各不兼容。
- 方案:定一个统一协议。工具方写一次 MCP 服务器,所有支持 MCP 的应用都能用;应用方实现一次 MCP 客户端,就能接所有服务器。
- 好处:M × N 变成 M + N;工具可以复用,生态能共享。
一句话答法
MCP 统一了 AI 应用和外部工具之间的接口,把 M×N 的定制对接变成 M+N:工具写一次服务器,所有支持 MCP 的应用都能直接用。
MCP 和 Function Calling 是什么关系?
- Function Calling:模型层面的能力,指模型「按格式说出要调哪个工具」。
- MCP:应用和工具之间的连接标准,管的是「工具从哪来、怎么接进来、怎么执行」。
- 两者配合:MCP 把工具列表提供给应用 → 应用通过 Function Calling 交给模型 → 模型选择工具 → 应用再通过 MCP 去执行。
一句话答法
Function Calling 解决「模型怎么表达要调用工具」,MCP 解决「应用怎么以统一方式接入和执行外部工具」,两者是上下游关系,不是替代关系。
英文术语拆解
| 术语 | 拆开看 | 一句话意思 |
|---|---|---|
| Short-term Memory | short-term 短期 + memory 记忆 | 短期记忆:当前上下文里的对话历史 |
| Long-term Memory | long-term 长期 + memory | 长期记忆:存在外部、跨会话的信息 |
| Summarization | summary 摘要 + -ization 化 | 摘要:把长内容压缩成要点 |
| MCP | Model 模型 + Context 上下文 + Protocol 协议 | 模型上下文协议,AI 接外部工具的统一标准 |
| Client / Server | 客户端 / 服务器 | 发起连接的一方 / 提供能力的一方 |
| Resource | 资源 | MCP 里可读取的数据 |
| Protocol | 协议 | 双方约定好的通信规则 |
面试怎么问
Q:Agent 的记忆怎么设计?
短期记忆是当前上下文里的对话和执行记录,超长时用截断、摘要或滑动窗口处理;长期记忆把关键信息(用户偏好、历史结论)提取出来存进数据库,常用向量检索按需召回。还要考虑写入策略(什么值得记)和过期、更新。
Q:什么是 MCP?解决了什么问题?
MCP 是 Anthropic 提出的开放协议,标准化了 AI 应用与外部数据源、工具之间的连接,采用客户端-服务器架构,服务器可以暴露工具、资源和提示模板。它把每个应用对接每个工具的 M×N 问题变成 M+N,提高复用性和互操作性。
Q:MCP 和 Function Calling 的区别?
Function Calling 是模型生成结构化工具调用请求的能力;MCP 是应用与工具提供方之间的接入协议。MCP 负责发现和执行工具,Function Calling 负责让模型选择和调用工具,两者通常配合使用。
容易混的地方
- 模型本身不会「记住」你:所谓记忆,全是应用在外部存、在需要时再塞进上下文。
- MCP 不是一个模型,也不是某个产品:它是一份协议(规则),各家都可以实现。
- 接了 MCP 不代表安全:第三方 MCP 服务器能执行操作、能读数据,同样要做权限控制(见下一篇)。
和其他知识的连接
- ← 来自 ReAct 与规划:步骤多了,历史变长,才需要记忆管理。
- ← 来自 RAG 是什么:长期记忆的读取,本质就是一次 RAG 检索。
- ← 来自 工具调用:MCP 提供工具,Function Calling 使用工具。
- 类比 分层模型与一次请求的一生:网络靠统一协议让不同设备互通,MCP 靠统一协议让不同工具互通。
自测 3 问
Q1:对话历史太长时,有哪三种处理办法?各有什么代价?
点开看答案
① 截断:只保留最近几轮,早期信息丢失;② 摘要:压缩旧对话,丢细节、要多调一次模型;③ 外存 + 检索:存进向量库按需取回,实现复杂、可能取不准。
Q2:用「USB-C」类比解释 MCP 解决的问题。
点开看答案
以前每个设备一种充电线(每个应用接每个工具都要单独写代码,M×N 套);USB-C 统一了接口(MCP 统一了协议),工具写一次服务器、应用实现一次客户端,就能互相接上(M+N)。
Q3:MCP 和 Function Calling 是什么关系?
点开看答案
上下游关系。MCP 负责把外部工具以统一方式接入应用并执行;Function Calling 负责让模型从工具列表里选择、并生成调用请求。应用通过 MCP 拿到工具 → 交给模型 → 模型发出调用请求 → 应用通过 MCP 执行。
✅ 验收清单
- 能用「工作台 / 档案柜」类比区分短期和长期记忆
- 能说出上下文过长的三种处理办法及代价
- 能说出长期记忆的写入和读取流程,并指出它和 RAG 的相似之处
- 能讲清 MCP 为什么能把 M×N 变成 M+N(问题 → 方案 → 好处)
- 能说清 MCP 和 Function Calling 的关系
下一步该懂什么
- Agent 能动手了,怎么防止它被诱导干坏事?怎么评估它做得好不好?→ 安全与评估