Skip to content

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 Memoryshort-term 短期 + memory 记忆短期记忆:当前上下文里的对话历史
Long-term Memorylong-term 长期 + memory长期记忆:存在外部、跨会话的信息
Summarizationsummary 摘要 + -ization 化摘要:把长内容压缩成要点
MCPModel 模型 + 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 服务器能执行操作、能读数据,同样要做权限控制(见下一篇)。

和其他知识的连接 ​

自测 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 能动手了,怎么防止它被诱导干坏事?怎么评估它做得好不好?→ 安全与评估