MemoryLake
返回全部文章
Pain Point2026 年 5 月 22 日7 分钟阅读

为什么 Devin 会忘记我的任务上下文?

你给 Devin 分配了一个为期四天的项目。第一次会话完成了 API 的搭建。第二次会话开始时,Devin 问 API 是做什么的。到第三次,它又重新引入了第一天修复的一个错误。

这并不是 Devin 在倒退。这是自主会话的边界方式,而有办法让项目上下文在它们之间存活。

简短回答

Devin 忘记你的任务上下文是因为每个 Devin 会话都是一个自主运行,拥有自己的沙盒、浏览器和对话,而 Cognition 默认情况下不会在会话之间持久化结构化的项目记忆。知识条目在全局范围内有帮助,而不是按项目。解决方案是为 Devin 的工作流附加一个按项目划分的记忆层,以便在会话开始时通过 REST 提取。

为什么 Devin 会忘记任务上下文

Devin 是 Cognition 的自主工程代理。它在一个受管理的环境中进行计划、编码、运行测试并反馈。三个设计选择将任务上下文推向下一个会话:

1. 会话是自包含的自主运行。 每个 Devin 会话启动一个沙盒,执行一个计划,然后关闭。代理的工作记忆中保存的状态在会话结束时消失。下一个会话启动一个新的沙盒和新的对话。

2. 知识条目是全局的,而不是项目范围的。 Devin 的知识功能允许你给代理提供持久的事实(“使用 pnpm”,“这个仓库更喜欢制表符”),但这些是账户级的指导,而不是项目日志,记录了尝试过的内容、有效的内容以及为什么放弃某条路径。

3. 多天项目依赖于人类重新简报。 当你在第三天接手一个项目时,通常会粘贴一个摘要、链接一个 PR 或指向 Devin 一个文档。代理不会记住自己之前的推理。Cognition 的会话模型在官方 Devin 文档中有记录,地址是 docs.devin.ai

结果是:每个 Devin 运行在你框定的任务上很清晰,但对周围的项目却是陌生的。

当 Devin 忘记任务上下文时你会失去什么

每个新会话都需要重新定位的成本,而在多天工作中,这个成本会累积:

  • 重新提问。 “我们使用什么数据库?认证方案是什么?为什么这个模块以这种方式抽象?”—— Devin 昨天问过的问题,今天又会出现。
  • 撤回的决定。 Devin 在第一次会话中排除的方法在第三次会话中悄然浮现,因为推理从未持久化。
  • 丢失的测试结果。 “我们看到 e2e/checkout.spec.ts 因为种子数据排序而不稳定”是来自先前会话的发现,你必须手动将其重新固定到下一个会话中。

解决方案不是“写更长的任务简报”——而是给 Devin 一个项目记忆,让它在每个会话开始时可以提取。

Devin 的内置解决方法

Cognition 已推出三项功能,部分解决持久性问题。它们都不是项目记忆。

知识 存储事实和片段,Devin 会在会话之间提取。非常适合稳定的规则(“使用 Vitest,而不是 Jest”)。对于不断变化的项目状态则不太有用,因为知识是全局的,而不是固定在特定项目上,并且你需要手动维护。

仓库和机器设置脚本 让你预配置环境,以便 Devin 不会在每个会话中重新安装所有内容。它们处理基础设施,而不是推理。

链接先前的会话和 PR 让你在新的简报中引用过去的工作。虽然有用,但你需要进行链接,Devin 不会自动将先前会话的推理读入其计划——它只会读取你指向的内容。

Devin 的内置记忆的不足之处

更深层次的问题是,真实项目的任务上下文跨越会话、机器和团队成员。知识条目处理“始终做 X”。它们不处理“昨天的会话因这三个原因决定了 Y”。多天、多工程师的项目需要一个共享的项目日志,任何会话——无论是 Devin 还是其他——都可以读取。

项目记忆需要在代理运行之上存在。

MemoryLake 如何修复 Devin 忘记任务上下文

MemoryLake 是一个跨模型的记忆层,Devin 可以在会话开始时通过 REST 读取。你不再需要在每次运行时重新简报,而是为项目提供自己的记忆,让 Devin 在规划之前提取所需内容。

  • 按项目的会话日志。 每个 Devin 会话的决策、死胡同和测试结果可以总结为固定在项目上的记忆。下一个会话从检索到的相关片段开始。
  • 跨人类和代理的单一真实来源。 你的团队在 Cursor、Claude Code 或 ChatGPT 中使用的相同项目记忆是 Devin 读取的记忆。无需在三个工具中进行平行简报。
  • 原始提示的 10,000 倍检索范围。 MemoryLake 从数十亿个项目记忆中读取,并仅返回与此运行相关的内容,因此 Devin 的上下文窗口用于规划,而不是重新加载背景。

MemoryLake 在 LoCoMo 长上下文基准测试中得分 94.03%,是截至 2026 年的最高已发布结果,具有毫秒级检索和 AES-256 端到端加密。

在 3 个步骤中将 MemoryLake 连接到 Devin

  1. 创建项目并加载上下文。 登录 MemoryLake,打开项目管理,点击创建项目,并将其命名为“Devin — Q2 付款迁移”等。通过文档驱动上传你的简报、PRD、ADR 和先前会话的摘要。通过记忆选项卡添加结构化的“我们决定了什么以及为什么”的笔记,以便它们随项目一起传递。
  2. 生成 MCP 服务器端点。 在项目内打开 MCP 服务器选项卡,点击添加 MCP 服务器,命名为“Devin 集成”,然后点击生成。MemoryLake 返回一个 API 密钥 ID、密钥和端点 URL。立即复制 Bearer 令牌——它只显示一次。
  3. 通过 REST 连接 Devin。 Devin 通过其工作流设置与外部服务集成。添加一个设置步骤或会话前钩子,调用 MemoryLake REST 端点,使用你的 Bearer 令牌提取相关项目记忆,并在运行开始前将其写入 Devin 的任务简报或知识中。每个会话现在都以项目的历史记录已经加载的状态打开。

常见问题

Devin 记得之前的会话吗?

Devin 保留了过去会话的历史记录,你可以参考,并且它的知识功能持久化全局事实。Devin 不会自动将先前会话的推理读入新会话——你需要链接或粘贴进去。

我如何让 Devin 在会话之间记住我的项目?

通过 REST 将 Devin 连接到像 MemoryLake 这样的记忆层。添加一个设置步骤,在会话开始时将项目的记忆提取到任务简报中,以便 Devin 每次运行时都能加载相关的历史记录。

为什么 Devin 会重复已经完成的工作?

因为每个会话都是一个孤立的自主运行。如果没有外部项目记忆,代理就没有结构化的记录来说明之前的会话尝试了什么、接受了什么或拒绝了什么。

Devin 的知识功能与项目记忆是一样的吗?

不。知识是针对代理的账户级指导。它不是固定在特定项目上,不会随着项目版本变化,也不是你存储不断变化的会话上下文的地方。

MemoryLake 能否在 Devin 和其他工具之间共享项目上下文?

是的。MemoryLake 以工具中立的格式存储记忆,因此相同的项目上下文可以在 Devin、Claude Code、Cursor、ChatGPT 和任何支持 REST 或 MCP 的代理中使用。