04 — MCP 持久记忆与跨会话上下文
MCP 持久记忆与跨会话上下文
学习目标
本章将分析 Agency-Agents 如何通过 MCP 协议实现 Agent 持久记忆。阅读本章后你将能够:
- 理解 MCP 记忆工具(remember/recall/rollback/search)的集成模式
- 设计 Agent 启动时 recall + 决策时 remember 的记忆策略
- 实现 Agent 间基于标签的上下文传递
前置知识
本章涉及记忆系统的通用原理,建议先阅读:
下文假设你已理解记忆系统的分层架构,直接聚焦 Agency-Agents 的 MCP 集成方案。
项目实践
默认无记忆 vs MCP 持久记忆
Agency-Agents 的 Agent 默认每次会话从零开始。上下文通过复制粘贴在 Agent 之间传递。MCP 记忆服务器改变了这一点:
| 能力 | 无 MCP 记忆 | 有 MCP 记忆 |
|---|---|---|
| 跨会话记忆 | ❌ 每次会话重置 | ✅ 记住决策和交付物 |
| 交接上下文 | ❌ 手动复制粘贴 | ✅ 自动 recall 前序 Agent 交付物 |
| 回滚 | ❌ 需要手动恢复 | ✅ 回滚到已知良好状态 |
四工具记忆协议
MCP 记忆服务器暴露四个核心工具:
| 工具 | 用途 | 触发时机 |
|---|---|---|
remember | 保存信息到记忆库 | 关键决策、完成交付物、交接时 |
recall | 从记忆库检索信息 | 会话启动、切换任务时 |
rollback | 回滚到之前的状态 | 质量检查失败、架构决策错误时 |
search | 按标签搜索记忆 | 查找历史决策、相关上下文时 |
Agent 记忆集成模式
要为任意 Agent 添加 MCP 记忆,在 Agent 定义中添加 Memory Integration 部分:
## Memory Integration
当你会话启动时:- 使用角色和当前项目作为搜索词,recall 之前会话的上下文- 检查所有标记为你 Agent 名称的记忆,从上次停下的地方继续
当你做出关键决策或完成交付物时:- 记住决策或交付物,带上描述性标签- 包含足够上下文,使未来会话——或其他 Agent——能理解做了什么和为什么
当你交接给另一个 Agent 时:- 记住你的交付物,标记为接收 Agent 的名称- 包含交接元数据:你完成了什么、什么是待定的、下一个 Agent 需要知道什么实践案例:NEXUS 流水线中的记忆流
在 NEXUS 七阶段流水线中,记忆系统解决了交接边界的上下文丢失问题:
安装配置
Agency-Agents 在 integrations/mcp-memory/setup.sh 中提供了 MCP 记忆服务器的安装脚本:
{ "mcpServers": { "memory": { "command": "your-mcp-memory-server", "args": [] } }}任何暴露 remember/recall/rollback/search 工具的 MCP 记忆服务器都可以工作。
问题与规避
记忆污染
问题:Agent recall 了不相关会话的记忆,导致错误决策。
规避:
- 使用描述性标签(Agent 名称 + 项目 + 主题)
- recall 时使用精确搜索词,而非宽泛查询
- 定期清理过时或不再相关的记忆
跨 Agent 记忆格式不一致
问题:Agent A remember 的记忆格式与 Agent B recall 期望的格式不匹配。
规避:
- 定义标准化的交接记忆格式(如 JSON 结构化的交付物 + 元数据)
- 在 NEXUS 交接模板中包含记忆标签约定
设计取舍
集中式记忆 vs 分布式记忆
| 方案 | 优势 | 代价 |
|---|---|---|
| 集中式(单 MCP 服务器) | 所有 Agent 共享同一记忆、交接简单 | 单点故障、需要清理策略 |
| 分布式(每个 Agent 独立记忆) | 隔离好、无污染 | 交接复杂、需要显式传递 |
Agency-Agents 选择集中式 MCP 记忆服务器,因为 NEXUS 流水线的核心需求就是跨 Agent 上下文连续性。
参考来源
- Agency-Agents Repository, commit
783f6a7 integrations/mcp-memory/README.md— MCP 记忆集成文档integrations/mcp-memory/setup.sh— 安装脚本- 记忆系统设计
- Model Context Protocol