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