简短回答
任务句柄为您提供了对长期运行的 MCP 工作的抗崩溃 控制,但它并不存储任务所学到的内容。要为 MCP 任务提供长期记忆,请将任务的上下文写入外部层:创建一个 MemoryLake 项目,生成一个 MCP 服务器端点,并让任务通过它读取和写入上下文——这样恢复的任务既能恢复其句柄,也能恢复其记忆。
为什么任务句柄不是记忆
任务扩展(从 2025-11-25 的实验核心功能转变为生产反馈后的扩展)解决了一个传输问题:长期操作不再占用连接或触发网关超时,持久的任务 ID 允许客户端重新连接并继续轮询。这正是长期运行的代理工作所需要的。
但 句柄 的持久性并不等于 上下文 的持久性。当您的任务花费十分钟进行研究、调用工具并形成中间结论时,积累的知识存在于进程中。在重启后恢复任务时,您可以恢复句柄——然而,除非您将它们存储在某处,否则它收集的事实、做出的决策和用户输入都将消失。清晰的模式是保持任务本身无状态,并将其记忆推送到一个外部层,在恢复时读取。任务扩展处理 任务所在的位置;记忆层处理 任务所知道的内容。
开始之前
您需要:
- 一个免费的 MemoryLake 账户
- 一个广告任务扩展的 MCP 服务器(任务支持需要客户端和服务器的选择加入)
- 任务应持久化的上下文——中间结果、规则或文件(PDF、Word、Excel、PowerPoint、文本/Markdown 或图像)
如何为 MCP 任务提供长期记忆(逐步指南)
第一步:构建一个记忆项目
登录 MemoryLake,打开 项目管理。点击 创建项目 并命名(例如,“长期运行任务记忆”)。打开 文档驱动,使用 上传 添加参考文件,然后 文档标签 → 添加文档 → 确认 附加它们。通过 记忆标签 → 添加记忆 → 保存 捕获持久规则。

第二步:生成一个 MCP 服务器端点
打开 MCP 服务器标签 → 添加 MCP 服务器 → 描述它(例如,“任务上下文后端”) → 生成。MemoryLake 返回一个 密钥 ID、一个 密钥 和一个 端点 URL。立即复制 密钥——它只显示一次。

第三步:通过端点读取和写入任务上下文
在任务的执行代码中,使用 密钥 作为 Bearer token 调用 MemoryLake 端点 URL,以在任务进展时检查点上下文,并在客户端通过 tasks/get 恢复时读取它。由于记忆存在于进程之外,恢复的任务——即使在不同的实例上——也能恢复其句柄和它所学到的一切。请参阅 MCP 设置指南 以获取配置参考。[免费试用 MemoryLake]

仅任务句柄与任务 + MemoryLake
| 维度 | 仅任务句柄 | 任务 + MemoryLake |
|---|---|---|
| 断开后恢复 | 是(相同任务 ID) | 是 |
| 恢复累积上下文 | 否(重启时丢失) | 是 |
| 跨服务器实例工作 | 仅句柄 | 句柄 + 完整记忆 |
| 上下文版本控制 | 否 | 是(Git 风格历史) |
| 数据所有权 | 进程内,易失性 | 您拥有它(AES-256,持久) |
| 基准 | — | LoCoMo #1 — 94.03% |
提示与最佳实践
- 在有意义的步骤处检查点上下文,而不是每次滴答——在工具结果或决策后写入,以便恢复的任务从最后一个稳定状态开始。
- 通过稳定标识符(任务的逻辑工作,而不是临时连接)来键入记忆,以便任何恢复任务的实例都能读取正确的上下文。
- 将持久规则保存在记忆条目中,并将批量工件保存在文档驱动中——小规则在恢复时快速读取。
- 从共享配置中读取 Bearer token,以便每个可以接管任务的实例以相同的方式进行身份验证。
故障排除
- 恢复的任务表现得像是忘记了一切: 确认任务在恢复时从端点 URL 读取上下文,而不仅仅是从
tasks/get读取任务句柄。 - 不同实例看到不同的上下文: 通过逻辑工作键入记忆,并将每个实例指向相同的项目和端点 URL。
- “未找到密钥”: 密钥只显示一次。撤销密钥并在 MCP 服务器标签 中 生成 一个新密钥。
为长期运行的任务提供记忆,而不仅仅是句柄
外部化任务上下文一次,恢复的 MCP 任务将恢复它所知道的一切——不仅仅是它停下来的地方。