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

为什么 Cursor 会忘记我的架构决策?

三个月前,你决定使用单个 Postgres 数据库,而不是每个微服务一个数据库。你写了 ADR。团队达成一致。今天,Cursor 高兴地建议为新服务启动第二个数据库,并引用了你花了一周时间争论的“最佳实践”。这个决策在代码库中,但 Cursor 并没有加载它。

这不是 Cursor 的错误。这是规则、记忆和 ADRs 在检索时的互动限制,且有一种简单的方法可以解决这个问题。

简短回答

Cursor 忘记你的架构决策是因为项目规则描述的是行为而不是理由,记忆是从聊天中提取的简短摘要,而 /docs 中的 ADR 只有在检索时才会出现在提示中。模型在缺少决策上下文时默认使用行业标准架构。解决方法是将决策暴露为可查询的记忆,Cursor 在建议架构之前读取这些记忆。

为什么 Cursor 会忘记你的架构决策

Cursor 索引你的代码库并在每次交互中检索相关内容。架构决策在这个流程中会因为三个原因而被遗漏。

1. 原因比内容更难检索。 代码库索引能够很好地提取代码,但对文本的提取不够可靠。位于 /docs/adr/0017-single-postgres.md 的 ADR 只有在检索时被评分为与当前查询相关时才会进入提示,而“我正在添加一个新服务”很少能高评分一个决策文档。

2. 项目规则只包含规则,而不包含原因。 说“使用单个 Postgres”的规则是可执行的。而解释“我们选择单个 Postgres 是因为跨服务的两阶段提交对我们的一致性模型不可接受”的规则则无法放入 .mdc 前言中,因此理由会丢失,当表面任务似乎需要第二个数据库时,模型会与规则相抵触。

3. 记忆是摘要,而不是决策记录。 Cursor 的记忆会自动生成来自聊天的简短规则。它们不是决策日志。影响架构选择的推理、考虑的权衡、重要的约束不会以结构化的记忆形式保存。

结果是:Cursor 在决策恰好在上下文中时会遵循这些决策,而在不在上下文中时会覆盖它们。

当 Cursor 忘记架构决策时你会失去什么

每个被遗忘的决策都需要你重新争论,有时还需要重新实现,而这种成本在服务的生命周期中会不断累积:

  • 已解决的争论重新开启。 “我们选择 Postgres 而不是 Mongo 是因为 JSONB 查询和事务完整性”变得不可见,而 Cursor 在三个月后再次建议使用 Mongo。
  • 约束被违反。 “我们不从边缘函数调用内部服务,因为冷启动预算”在生成的边缘处理程序中被忽略。
  • 新服务偏离标准。 Cursor 在为新服务选择最常见的模式,而不是你平台团队标准化的模式。

解决方法不是“让每个 ADR 也成为一个 .mdc 规则。”那会使规则文件夹充斥着没人维护的文本。解决方法是将决策暴露为可查询的记忆,并保持其理由完整。

Cursor 的内置解决方法

Cursor 在这里推出了真实的功能,但没有一个能完全弥补这个差距。

*项目规则 (`.cursor/rules/.mdc)** 可以编码来自 ADR 的规则,带有前言和通配符以控制何时触发。它们适用于可执行的结论,但在理由方面较弱,因为 alwaysApply` 规则共享提示预算,较长的规则文本会被裁剪。

记忆 捕获来自聊天的简短、自动生成的指导。它们适用于“我们使用 Zod 进行运行时验证”,但不适用于“我们在 2024 年选择 Zod 而不是 Yup,因为静态类型推断,并且我们每季度重新审视这个决策。”

原生 MCP 支持 让 Cursor 通过 .cursor/mcp.json 或设置 UI 连接到外部记忆。这是架构决策的最简洁路径,因为 MCP 可以按需暴露完整的 ADR 及其理由,而不是将其压缩为规则。

你可以在 官方 Cursor 文档 中阅读 Cursor 自己的 MCP 设置指南。

对于小型代码库,规则和索引可以处理。对于具有真实架构的系统,决策会被遗漏。

Cursor 的内置记忆不足之处

更深层次的问题是,架构决策是推理工件,而不是规则。它们需要在 Cursor 提出可能违反它们的内容时,能够完整检索,包括它们的原因、替代方案和日期。它们还需要适用于团队使用的每个 AI 编辑器,因为在 Claude Code 上的一个队友可能会重新引入你花费一个冲刺时间去除的模式。

这就是跨工具记忆层所解决的问题:一个决策记录,可以按需检索,跨团队的每个 AI 编辑器共享。

MemoryLake 如何修复 Cursor 忘记架构决策

MemoryLake 是一个跨模型的记忆层,位于你与使用的每个 AI 之间。与其信任 /docs 中的 ADR 会在重要时被检索,不如将决策存储在 MemoryLake 项目中,Cursor 通过 MCP 每次提取相关的决策。

  • 决策作为可查询的记忆。 每个 ADR 作为结构化的记忆存在,包含规则、理由、替代方案和日期。Cursor 检索完整记录,而不是压缩的内容。
  • 对决策的 Git 风格版本控制。 当一个 ADR 被取代时,MemoryLake 的版本控制会跟踪取代,因此旧的决策不会悄然浮现。
  • 可移植到其他 AI 编码工具。 相同的决策记忆可以在 Claude Code、Cline、Windsurf 和任何支持 MCP 的编辑器中使用。不同工具上的队友无法错误地重新引入已弃用的模式。

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

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

  1. 创建项目并加载你的决策。 登录 MemoryLake,打开项目管理,点击创建项目,并以系统命名(例如,“Cursor - payments-platform architecture”)。将你的 ADR 和设计文档放入文档驱动器。将标题结论和理由作为结构化条目捕获在记忆标签中,以便每个决策可以按主题检索,理由保持完整。
  2. 生成 MCP 服务器端点。 在项目中打开 MCP 服务器标签,点击添加 MCP 服务器,命名为“Cursor 集成”,然后点击生成。MemoryLake 返回一个 API 密钥 ID、密钥和端点 URL。立即复制密钥,因为它只显示一次。
  3. 连接 Cursor。 Cursor 自 2025 年以来就支持原生 MCP,这使得这是最简洁的路径。在代码库根目录的 .cursor/mcp.json 中添加 MemoryLake 服务器条目(或通过 Cursor 设置 > 功能 > MCP 进行连接),粘贴端点 URL 和 Bearer 令牌,然后重新加载 Cursor。Cursor 现在可以在建议架构或连接新服务之前查询决策记录。

常见问题

Cursor 会在会话之间记住架构决策吗?

Cursor 的项目规则和记忆会在每个项目中持续指导,但它们存储的是规则和简短摘要,而不是决策背后的完整推理。位于 /docs 中的 ADR 只有在检索时才会进入提示,这对于决策问题来说并不可靠。

我该如何让 Cursor 遵循我的架构决策?

将高信号的项目规则与像 MemoryLake 这样的外部记忆层结合,通过 MCP 连接。MemoryLake 将每个决策存储为规则、理由、替代方案和日期,以便 Cursor 可以在建议架构之前检索完整记录。

为什么 Cursor 会建议我明确拒绝的模式?

通常是因为决策文档在这一轮中没有被检索到上下文中。代码库索引往往会给代码块更高的评分,而文本则较低,因此位于 /docs 中的 ADR 通常会错过提示,除非查询恰好提到该主题。

Cursor 能读取我在 /docs 中的 ADR 吗?

Cursor 可以在检索时读取它们,但 ADR 是文本,与代码竞争相关性评分。将标题决策编码为 MemoryLake 中的结构化记忆使其可以按主题检索,而不是依赖于偶然的关键字重叠。

相同的决策记忆可以在 Claude Code 或 Cline 中使用吗?

可以。MemoryLake 将决策存储在模型中立的项目中,通过 MCP 访问,因此相同的记录可以在 Claude Code、Cline、Windsurf 和任何支持 MCP 的编辑器中使用。不同工具上的队友无法错误地重新引入已弃用的模式。