MemoryLake
返回全部文章
Tutorial2026 年 8 月 20 日·10 分钟阅读

如何在会话之间传递 Cursor 上下文 (2026 指南)

在 Cursor 中跨会话传递上下文是一个规则类型定义问题,而不是记忆问题——一旦你这样看待它,它就可以在十五分钟内得到解决。

Cursor 的官方文档直接阐明了其底层立场:“大型语言模型在补全之间不会保留记忆。规则在提示词级别提供了持久且可重用的上下文。”因此,跨越会话边界的机制是 Rules(规则)加上 AGENTS.md。值得注意的是,对于关注旧指南的人来说:Cursor 的 memories(记忆)功能的文档路径现在已重定向到 Rules 页面,而 Rules 正是当前文档所描述的内容。

这一个设计事实几乎解释了所有“它又把什么都忘了”的反馈。只有当规则的类型允许时,规则才会传递,而这四种类型的行为截然不同。本文将详细介绍它们之间的区别、导致编写正确的规则变得不可见的两种静默失败,以及在规则篇幅过短时应该将推理逻辑保存在哪里。该症状背后的机制请参阅为什么 Cursor 会遗忘之前的会话

为什么 Cursor 会重新开始,以及究竟什么会被传递

规则可以存放的四个地方

Cursor 文档中定义的集合:

项目规则 (Project rules).mdc 文件的形式存在于 .cursor/rules 中,并进行版本控制。它们“使用路径模式进行范围限定、手动调用或根据相关性引入”。

用户规则 (User Rules) 是“在 Customize → Rules 中定义的全局偏好,适用于所有项目”。它们由 Agent (Chat) 使用,是存放沟通风格和个人习惯的理想场所。

团队规则 (Team Rules) 是“从仪表板管理的团队范围规则”,适用于 Team 和 Enterprise 方案。

AGENTS.md 被描述为“Markdown 格式的 Agent 指令。是 .cursor/rules 的简单替代方案”。它支持嵌套:将 AGENTS.md 放在任何子目录中,当处理该目录或其子目录中的文件时,它就会自动应用,其指令会“与父目录合并,且更具体的指令优先”。

大多数人只写了其中一种,并以为它涵盖了所有内容。

只有一种规则类型能保证始终存在

这就是核心所在。根据文档,Cursor 的四种规则类型如下:

规则类型何时适用
Always Apply“应用于每个聊天会话”
Apply Intelligently“当 Agent 根据描述判定其相关时”
Apply to Specific Files“当文件匹配指定模式时”
Apply Manually“在聊天中被 @ 提及之时”

在底层,由三个 frontmatter 字段决定。alwaysApply: true 意味着“始终包含。忽略 Globs 和描述。”当 alwaysApply: false 且提供了 globs 时,规则会“在匹配的文件处于上下文中时自动附加”。如果只有描述而没有 globs,“Agent 会读取描述并在相关时拉入规则”。如果两者都没有,则是“仅在您在聊天中 @ 提及该规则时包含”。

因此,你三周前写的一个没有设置 frontmatter 字段的规则,一直在等待一个你从未输入过的 @ 提及。它并没有丢失,只是从未被邀请。

Cursor 官方的 FAQ 回答是最快的诊断方式:“检查规则类型。对于 Apply Intelligently,确保定义了描述。对于 Apply to Specific Files,确保文件模式与引用的文件匹配。”

.cursor/rules 中的普通 .md 文件会被静默忽略

这是最浪费时间的失败,因为没有任何提示。直接引用文档:“.cursor/rules 中的普通 .md 文件会被规则系统忽略,因为它没有 frontmatter 来指定 descriptionglobsalwaysApply。如果您更喜欢纯 Markdown,请改用 AGENTS.md。”

如果你一直在 .cursor/rules 内部维护 notes.md 并纳闷为什么没有任何变化——原因就在这里。请将其重命名为 .mdc 并添加 frontmatter,或者将内容移至 AGENTS.md

规则加载了,但它引用的内容没有加载

规则在设计上就是简短的。Cursor 的指南建议将它们保持在 500 行以内,将大型规则拆分为可组合的规则,并且——重要的是——“引用文件而不是复制其内容——这可以保持规则简短,并防止它们随着代码更改而过时。”你可以使用 @filename.ts 引入文件。

这产生了一个二阶差距。“遵循我们的服务约定”只有在约定可触及时才起作用。规则是一个指针加方向,它本身并不是知识。在不同的工具中,这种区别正是为什么 Agent 会忽略你编写的指令文件的原因。

规则保存的位置并不总是你想象的地方

规则会被提交到 git,这也是团队共享它们的方式——但新规则会保存在你当前工作文件夹的 .cursor/rules 中。如果你将一个子文件夹作为项目打开,你的规则范围就会被限定在该子文件夹中。这是一个只需五秒钟的检查,却能省去一下午的麻烦。

人们尝试过的方法

在每次聊天开始时重新解释项目。 确实有效,但每次都要付出相同的代价——这就是如何停止向 AI 重复解释上下文中提到的死循环。

编写一个庞大的、始终开启的规则。 它确实适用于每个会话,并且在每条消息的模型上下文开头都会包含它。Cursor 官方列出的避免事项中包括“复制整个风格指南”——请改用 linter——以及“记录每一个可能的命令”,因为 Agent 已经知道 npm, git 和 pytest。

永远保持一个聊天窗口打开。 这只是推迟了边界,而不是跨越了边界。

将所有内容设置为 Apply Intelligently(智能应用)。 听起来很合理,但这把决定权交给了你花五秒钟写出的描述。如果描述含糊不清,规则就不会被引入。

将架构决策粘贴到规则中。 直觉是对的,但容器错了——规则应该保持简短并指向具体事物。这就是为什么 Cursor 会遗忘架构决策背后的原因。

手动在机器之间同步规则。 很常见,但容易产生偏差。跨机器边界的版本在如何防止 Cursor 跨机器遗忘中有所介绍。

解决方案:规范规则类型,然后将推理逻辑保留在规则之外

分两步走。第一步让 Cursor 加载你编写的内容。第二步为 500 行上限无法容纳的知识提供一个归宿。

审计你现有的规则并修复扩展名。 打开 .cursor/rules。任何以 .md 结尾的文件都会被忽略——将其转换为带有 frontmatter 的 .mdc,或者将其移至 AGENTS.md

为每个规则分配最窄但始终正确的类型。 通用约束使用 alwaysApply: true。特定语言或目录的约定使用 globs。情境指南使用具体的描述,以便 Agent 能够真正判断相关性。极少需要的流程保持手动,并通过 @ 提及。

将全局内容与本地内容分开。 沟通风格和个人习惯属于 Customize → Rules 下的 User Rules。仓库约定属于项目规则或 AGENTS.md,并提交到 git,以便你的团队也能获取它们。

使用嵌套的 AGENTS.md,而不是复杂的 glob 匹配。 一个根文件加上每个主要目录一个文件,无需任何 frontmatter 即可实现范围限定,且更具体的指令会胜出。

指向规范示例,而不是复制它们。 使用 @file 引用。Cursor 的文档明确指出了原因:随着代码的更改,副本会过时。

这解决了加载问题。但它无法处理规则刻意排除的层面——为什么架构是这样的、你已经尝试并放弃了哪些方法、使某个奇怪决策变得正确的约束条件。Cursor 的指南是,当你发现 Agent 重复犯错时添加规则,这是一个很好的建议,但也承认了规则捕获的是结论,而不是推理过程

这就是 MemoryLake 的作用:将你项目的持久知识保存在一个你的工具可以读取的层中,从而使规则保持简短,同时推理逻辑依然可用。设置只需三个步骤。

步骤 1:创建 API 密钥

登录 MemoryLake 并创建 API 密钥。一个凭证即可连接你使用的所有工具。

创建 MemoryLake API 密钥以跨会话传递 Cursor 上下文
创建 MemoryLake API 密钥以跨会话传递 Cursor 上下文

步骤 2:上传你的第一批记忆

编写简短的条目——每条记录一个主张——涵盖规则文件不适合承载的内容:

将决策和被否决的方法写入 MemoryLake 条目
将决策和被否决的方法写入 MemoryLake 条目

带有约束条件的决策。 “查询通过 repository 层进行,因为 ORM 的预加载(eager loading)破坏了分页。”规则可以陈述前半部分。但只有这种版本才能阻止该建议再次出现。

你已经否决的方法。 这是价值最高的类别,而且在仓库中无处可寻。每个新会话都会再次提出它。

跨仓库知识。 适用于跨项目的领域词汇和标准。项目规则在设计上是针对单个仓库的,而这并非如此。

你进行过多次的纠正。 这是 Cursor 自身编写规则的启发式方法——而纠正背后的推理逻辑就应该放在这里,紧挨着它。

步骤 3:连接你的 AI 和 Agent

连接你使用的工具。MemoryLake 可通过 MCP 和 API 访问,因此原生支持 MCP 的 Agent(包括 Claude Code、Codex 和 OpenClaw)可以通过指向 MCP 服务器进行连接,而其他助手则通过 API 读取相同的记忆。

将 Cursor、Claude Code 和其他 Agent 连接到同一个记忆层
将 Cursor、Claude Code 和其他 Agent 连接到同一个记忆层

三个坦诚的局限性。MemoryLake 不会编写你的 Cursor 规则,也不是它们的替代品——规则是你引导 Agent 的方式,你仍然应该正确地编写它们。它只保存你或你的 Agent 写入其中的内容,因此步骤 2 是手动的。而且规则是提示词级别的上下文,而不是强制配置,这是 Cursor 的框架,而不是我们的;记忆层并不会改变这一点。

这在实践中带来了什么改变

“为什么它没有遵守规则?”变成了一个只需两秒钟的检查。 扩展名,然后是类型,最后是模式。几乎总是这三者之一。

始终开启的规则变得简短。 当实质内容存在于其他地方时,始终开启的文件又变回了少数几个真正的约束条件,而不是随每条消息一起发送的文档。

新仓库不再是一个全新的开始。 项目规则不会在仓库之间转移。保存在它们之外的知识则可以。

团队入职培训不再是口口相传的历史。 提交的规则给出了约定;记忆层给出了原因。新员工两者都需要,而通常只有其中之一被记录了下来。

你的其他工具也能看到相同的上下文。 无论阅读它的是 Cursor、Claude Code 还是 Codex,你架构背后的推理逻辑都是完全相同的——这就是持久记忆的真正含义中所涵盖的形式。

持久有效的 Cursor 规则最佳实践

.cursor/rules 中使用 .mdc,或者使用 AGENTS.md 绝不要在 rules 目录中使用普通的 .md——它会被忽略。

为每个规则深思熟虑地设置类型。 不要让 frontmatter 留空并寄予希望。留空意味着手动。

编写陌生人也能据此路由的描述。 “后端的 RPC 服务约定 and 模式”是可路由的。而“后端的东西”则不行。

将规则保持在 500 行以内,并拆分增长的内容。 这是 Cursor 官方给出的数字,而且当范围发生变化时,可组合的规则更容易重新编写。

引用文件,不要复制它们。 副本会过时;@file 引用则不会。

被动地添加规则。 文档说得很清楚:当你注意到 Agent 反复犯同样的错误时,再添加规则,在了解你的模式之前不要过度优化。

将规则提交到 git,并保持更新。 你甚至可以在 GitHub issue 或 PR 上标记 @cursor,让 Agent 为你更新规则。

首选嵌套的 AGENTS.md 进行目录范围限定。 需要维护的 frontmatter 更少,且优先级是可预测的。

将原因存储在规则之外。 规则用于引导和指向。而“为什么”才是让 Agent 能够处理你未预料到的情况的关键,它无法容纳在 500 行以内——这就是为什么 RAG 不是记忆中的普遍问题。

结论

Cursor 明确指出,模型在补全之间不会保留记忆,而 Rules(规则)是提示词级别持久、可重用上下文的机制。因此,跨会话传递上下文就是要把四件事做好:文件扩展名、规则类型、范围以及规则保存的位置。解决这些问题,大部分“它忘了”的情况就会消失。

剩下的则是规则在设计上不予承载的部分。它们有上限,旨在指向文件而不是复制文件,并且它们捕获的是结论而不是论证过程。将决策、约束和被否决的方法放在你的工具可以读取的层中,保持你的规则简短且类型正确,这样每个新会话都将同时拥有指令及其背后的原因。

常见问题

Cursor 会记住以前的会话吗?

Cursor 的文档指出,语言模型在补全之间不会保留记忆,而规则在提示词级别提供了持久、可重用的上下文。Rules 和 AGENTS.md 是文档中记载的跨会话传递上下文的机制——并且 memories(记忆)功能的文档路径现在已重定向到 Rules 页面。

为什么我的 Cursor 规则没有被应用?

根据 Cursor 的 FAQ,首先检查规则类型。对于 Apply Intelligently(智能应用),确保定义了描述。对于 Apply to Specific Files(应用于特定文件),确保文件模式与引用的文件匹配。同时确认文件使用的是 .mdc 扩展名——.cursor/rules 中的普通 .md 文件会被忽略,因为它没有 frontmatter。

.cursor/rulesAGENTS.md 有什么区别?

.cursor/rules 中的项目规则是带有控制其何时适用的 frontmatter 的 .mdc 文件。AGENTS.md 在文档中被描述为一种无需配置的简单 Markdown 替代方案——根目录文件广泛适用,而子目录中的嵌套文件适用于这些目录及其子目录,并与父级指令合并。

如何让规则应用于每个会话?

在它的 frontmatter 中设置 alwaysApply: true。这意味着该规则始终包含在内,且忽略 globs 和描述。保持这些规则简短——它们的内容会包含在模型上下文的开头。

全局偏好设置应该放在哪里?

在 Customize → Rules 中定义的 User Rules(用户规则)适用于你的所有项目,并由 Agent (Chat) 使用。在 Team 和 Enterprise 方案中,Team Rules(团队规则)从仪表板进行管理,用于组织范围内的约定。

我应该把架构决策写进规则里吗?

将最终产生的约定写进规则中,并将推理逻辑保存在可检索的地方。Cursor 的指南是保持规则在 500 行以内,并引用文件而不是复制其内容,这意味着规则不适合承载决策背后的论证过程——但该论证过程恰恰是阻止被否决的方法被再次提出的关键。