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

如何在 Cursor 和 Claude Code 之间共享同一个记忆(分步指南,2026)

如果你使用 Cursor 进行编辑,并使用 Claude Code 处理更繁重的智能体(agentic)工作,你一定已经注意到了这种“损耗”。你向其中一个工具解释了架构,然后又得向另一个工具再解释一遍。你在 `.cursor/rules` 中修正了一个规范,而 Claude Code 却依然按照旧的方式行事。两个工具,一个代码库,对你的项目却有着两种截然不同的理解。

好消息是,今天只需一个文件,就能免费解决这其中很大一部分问题。两款工具都会读取 `AGENTS.md` —— Cursor 是原生支持,而 Claude Code 则通过文档中记载的导入方式支持 —— 因此,这个常驻层确实可以共享,而无需重复。无法通过文件共享的部分是不断积累的知识:Claude Code 的自动记忆(auto memory)是机器本地的且由 Claude 编写,而 Cursor 的规则仅在自身 frontmatter 定义的条件下加载。

本文将详细介绍究竟该通过文件共享什么、这两个系统永远无法自行合并的部分,以及如何将不断增长的知识存放在两者都能读取的地方。

为什么两款优秀的工具最终会拥有两种不同的记忆

机制对称但不兼容

Cursor 的文档描述了四种规则:存储在 .cursor/rules 中作为 .mdc 文件的项目规则、全局适用于 Cursor 环境的用户规则、在 Team 和 Enterprise 计划中通过仪表板管理的团队规则,以及作为项目根目录下 Markdown 替代方案的 AGENTS.md。Claude Code 的文档则描述了四个范围的 CLAUDE.md —— 托管策略(managed policy)、用户(~/.claude/CLAUDE.md)、项目(./CLAUDE.md./.claude/CLAUDE.md)和本地(CLAUDE.local.md) —— 加上用于路径范围指令的 .claude/rules/

将这些梳理一下,你会发现这是两个几乎平行的系统,它们使用不同的文件名、不同的 frontmatter 字段和不同的加载规则。两者都不会读取对方的主要格式。Claude Code 的文档直接指出:“Claude Code 读取的是 CLAUDE.md,而不是 AGENTS.md。”

两款工具都会读取的一个文件,以及官方文档记载的连接方式

这是大多数人都忽略的部分。Cursor 将项目根目录下的 AGENTS.md 列为支持的指令文件,并支持在子目录中嵌套 AGENTS.md 文件(其中更具体的规则具有更高优先级)。而 Claude Code 的文档给出了让同一个文件在其端发挥作用的精确配方:“如果你的仓库已经为其他编码智能体使用了 AGENTS.md,请创建一个导入它的 CLAUDE.md,以便两款工具读取相同的指令而无需重复。”

这只需要一个包含 @AGENTS.md 的单行 CLAUDE.md,或者如果你不需要 Claude 特有的补充,也可以使用符号链接(symlink)。这样,两款工具就会读取同一个文件。这是双方文档中都记载的模式,而不是什么旁门左道。

文件技巧无法涵盖的内容

无论你如何安排文件,有两件事始终是分离的。

Claude Code 的自动记忆。 它默认开启,将笔记存储在 ~/.claude/projects/<project>/memory/ 下,在每个会话中加载 MEMORY.md 的前 200 行或 25KB,并且明确是机器本地的 —— 文档指出这些文件“不会跨机器或云环境共享”。它也是由 Claude 编写的,而不是由你编写的。Cursor 没有与之等价的读取机制,你提交的任何文件也无法让它可见。

条件加载。 Cursor 的四种应用模式决定了规则何时进入上下文:alwaysApply: true、用于智能应用的 description、用于特定文件的 globs,或者需要 @ 提及的手动规则。Claude Code 的 .claude/rules/ 使用 paths: frontmatter 字段来达到相同的目的。两者都很合理,这也意味着“共享内容”并不意味着“在同一时刻加载”。

MCP 是两款工具都已支持的唯一通道

然而,除了 AGENTS.md 之外,这两者还有第二个共同点,而且是更有趣的一个:它们都支持 MCP。Claude Code 将 MCP 服务器配置作为一等公民功能记录在档,包括每个子智能体(subagent)的内联 mcpServers 定义,而 Cursor 也在其自身的设置中公开了 MCP 配置。

这很重要,因为它改变了“共享记忆”的含义。共享的文件是静态的 —— 相同的文本,在两端加载,手动更新。而共享的服务器是动态的:两款工具在需要某些内容时都会查询同一个存储库,并且其中一个工具的写入在下一次读取时对另一个工具可见。对于在工作过程中不断变化的知识 —— 这也是大部分至关重要的知识 —— 第二种形式才是真正有效的。

这也意味着你不需要在两款工具的原生记忆系统之间分出胜负。Claude Code 保留其自动记忆用于本地召回;Cursor 保留其规则用于条件加载;而持久的项目知识则存放在一个两者都能访问的地方,且无需任何一款工具去理解对方的格式。

在复制任何内容之前,还有一个值得了解的陷阱。 Cursor 的文档指出:“.cursor/rules 中的纯 .md 文件会被规则系统忽略,因为它没有 frontmatter 来指定 descriptionglobsalwaysApply。”如果你移动内容并将一个纯 Markdown 文件丢进该目录,它会静默地不执行任何操作。这一特定故障在为什么 Cursor 会遗忘项目规则中有所涵盖。

人们尝试过的方法

维护两个内容相同的文件。 这是默认做法,大约能维持两周。然后有人更新了其中一个,现在两款工具产生了分歧 —— 没有错误提示,也没有 diff 可以注意到,因为两个文件看起来都得到了维护。

让两个文件都变得庞大。 如果文件是唯一的通道,所有内容都会被塞进文件里。两家厂商都建议不要这样做:Cursor 建议将规则保持在 500 行以下,并将大型规则拆分为可组合的碎片;Claude Code 建议每个文件的目标行数在 200 行以下,并指出较长的文件“会消耗更多上下文并降低遵循度”。

跨机器同步 `~/.claude`。 有些人会同步整个配置目录,以解决自动记忆是机器本地的问题。这是一种实践者的权宜之计,而不是官方文档记载的功能,并且存在发生写入冲突的真实风险。请将其视为一种尝试,而不是正式的配置。

运行 `/init` 然后就此完事。 这是一个有用但未被充分利用的功能 —— Claude Code 的 /init 会从 .cursor/rules/.cursorrules 中读取 Cursor 规则,并将相关部分合并到生成的 CLAUDE.md 中,在设置 CLAUDE_CODE_NEW_INIT=1 的情况下,它还会读取 AGENTS.md.devin/rules/.windsurf/rules/.clinerules。但这只是一次性的复制,而不是链接。一旦运行,这两个文件就会再次开始分化。/import 也是如此,它会引入受支持智能体的配置,并结转 MCP 服务器、命令、子智能体和技能 —— 这是一种迁移,而不是同步。如果你想妥善完成这种单向迁移,将 Cursor 规则迁移到 Claude Code 涵盖了这方面的内容。

默默承受这种损耗。 这是最常见的结果:人们只是重新解释一遍。这在每条消息上都会消耗 token,并且会损耗你真正关心的东西,即第二个工具在做决策时根本不知道第一个工具学到了什么。

解决方案:一个共享文件,一个共享记忆层

将问题一分为二,两部分都会变得简单。

每次都必须在上下文中的规则应该放在一个提交的文件中。使用 AGENTS.md 作为真实内容,并使用一个导入它的单行 CLAUDE.md。保持简短 —— 应该是你在代码审查中会捍卫的规则,而不是知识库。

不断增长的知识应该放在两款工具都会查询的记忆层中。这就是 MemoryLake 的作用:一个两款智能体都能访问的存储库,保存着原本会留在某个工具私有记忆目录中的决策和约束。设置只需三个步骤。

步骤 1:创建 API 密钥

登录 MemoryLake 并创建 API 密钥。两款工具共用一个凭据,这正是关键所在 —— 凭据不与你今天使用的任何特定编辑器绑定。

创建 MemoryLake API 密钥以在 Cursor 和 Claude Code 之间共享同一个记忆
创建 MemoryLake API 密钥以在 Cursor 和 Claude Code 之间共享同一个记忆

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

从你不断重复解释的内容开始:架构决策及其背后的合理性、在没有上下文时显得武断的约束、存在于人们脑海中的规范,以及你尝试过但拒绝了的方法。如果 Claude Code 一直在积累自动记忆,打开该目录并阅读它 —— 里面持久的事实正是 Cursor 从未有机会访问的材料。保持条目简短且主题单一,以便检索返回可用的内容。

将项目决策上传到共享的 MemoryLake 工作区
将项目决策上传到共享的 MemoryLake 工作区

步骤 3:连接你的 AI 和智能体

连接两款工具。MemoryLake 可以通过 MCP 和 API 访问,因此 MCP 原生智能体 —— 包括 Claude Code、Codex 和 OpenClaw 等 —— 通过指向 MCP 服务器进行连接,而 Cursor 则通过其自身的 MCP 配置进行连接。从那时起,两款工具将读取相同的知识,在其中一个工具中工作时记录的决策在另一个工具中也可用。有关 MCP 端的常规演练,请参阅使用 MCP 设置跨 AI 记忆

通过 MCP 将 Cursor 和 Claude Code 连接到同一个记忆层
通过 MCP 将 Cursor 和 Claude Code 连接到同一个记忆层

两个坦诚的局限。这并不会合并两款工具自身的记忆系统 —— Claude Code 将继续编写其机器本地的自动记忆,这没问题,它擅长召回最近的本地工作。而且它不是一个强制执行层:两家厂商都将指令描述为上下文而不是配置,因此任何无论模型如何决定都必须成立的内容,都应该放在 hook 或 CI 检查中。

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

一次修正,两款工具。 这是实实在在的收获。今天,告诉 Cursor “我们不再使用那个 ORM 了”只能教会这一个工具。当这一修正落入共享层时,另一个工具也会停止推荐它。

交接不再丢失上下文。 常见的工作流程是在一个工具中探索,在另一个工具中执行。这种交接正是重复解释发生的地方,也是共享层所消除的痛点 —— 这类似于在同一个工具内在 Claude Code 会话之间共享上下文的效果,并将其扩展到了两个工具之间。

两个指令文件都变得更短。 一旦参考知识变得可检索, AGENTS.md 就可以恢复其本应具备的简短列表形式,这能显著提高其被遵循的可靠性。

机器边界不再那么重要。 自动记忆是机器本地的,这意味着你积累的一半知识都留在一台电脑上。共享层虽然不改变这一机制,但这意味着重要的部分不再仅仅存在于那里 —— 也就是防止 Cursor 跨机器遗忘中所描述的问题。

添加第三个工具只需一次连接。 无论你接下来采用什么工具,它都会读取相同的记忆,而不是从零开始,再经历一周的重复解释。

在同一个仓库运行两款工具的最佳实践

一个真实文件,一个指针。AGENTS.md 保存内容;CLAUDE.md 包含 @AGENTS.md,以及(可选的)下方一段简短的 Claude 特有部分。绝不要保留两份完整的副本。

保持 glob 一致。 当 Cursor 规则的 globs 和 Claude Code 规则的 paths: 描述相同的文件集时,你可以将它们成对进行审查。当它们发生偏差时,特定区域的规则会应用在其中一个工具中,而不会应用在另一个工具中。

绝不要在 `.cursor/rules` 中放入纯 `.md` 文件。 它会被静默忽略。没有 frontmatter 的内容属于 AGENTS.md

深思熟虑地运行一次 `/init`。 它是生成 CLAUDE.md 的良好起点,并且它会读取你现有的 Cursor 和 Copilot 规则。只是不要误以为这是持续的同步。

在任何重构后验证加载的内容。 Claude Code 会在会话中通过 /context 列出加载的记忆文件。在断定模型忽略你之前先进行确认 —— 这种区别就是“五分钟修复”与“长达一周的提示词微调”之间的区别,正如为什么 Claude Code 会遗忘项目上下文中所述。

写下被拒绝的方案,而不仅仅是决定。 这是价值最高的一个类别。除非你将裁决写在它们能读取的地方,否则两款工具都会重新推荐你已经排除的方案。

结论

双工具带来的损耗由两部分组成,它们需要不同的解决方案。常驻规则确实可以合并为一个文件:Cursor 读取 AGENTS.md,而 Claude Code 自身的文档会告诉你从单行的 CLAUDE.md 中导入它。今天下午就动手搞定它,你就能消除最常起作用的那一层的偏差问题。

文件无法做到的是共享不断积累的知识 —— 因为在 Claude Code 端,该层是机器本地且自动编写的,而在 Cursor 端,它受 frontmatter 条件的约束。将这一半放入两款工具都会查询的记忆层中,编辑工作与智能体工作之间的交接将不再是你的上下文消亡的地方。

常见问题

Cursor 和 Claude Code 默认会共享任何文件吗?

默认不会,但它们可以共享一个文件。Cursor 支持项目根目录下的 AGENTS.md,而 Claude Code 的文档建议创建一个通过 @AGENTS.md 导入它的 CLAUDE.md(或使用符号链接),“以便两款工具读取相同的指令而无需重复”。Claude Code 本身不会读取 AGENTS.md

Cursor 可以读取 Claude Code 的自动记忆吗?

不能。自动记忆保存在 ~/.claude/projects/<project>/memory/ 下,由 Claude 编写,并且是机器本地的 —— 文档指出这些文件不会跨机器或云环境共享。目前没有官方记载的方法能让其他工具加载它。

`/init` 会保持这两个配置同步吗?

不会。/init 会读取 .cursor/rules/.cursorrules 中的 Cursor 规则,以及 .github/copilot-instructions.md 中的 Copilot 规则,并将相关部分合并到生成的 CLAUDE.md 中。这是一次性的复制。/import 也类似 —— 它会引入受支持智能体的配置,包括 MCP 服务器、命令、子智能体和技能 —— 这是一种迁移,而不是链接。

为什么我在重构后,规则文件停止工作了?

如果它最终变成了 .cursor/rules 内部的纯 .md 文件,Cursor 会忽略它,因为没有指定 descriptionglobsalwaysApply 的 frontmatter。这不会有错误消息。要么添加 frontmatter,要么将内容移入 AGENTS.md

共享文件应该有多长?

简短。Cursor 建议将规则保持在 500 行以下并拆分大型规则;Claude Code 建议每个文件的目标行数在 200 行以下,并指出较长的文件会消耗更多上下文并降低遵循度。所有不需要每次都出现在上下文中的内容,都应该放在可检索的层中。

共享记忆是否意味着两款工具都会遵循规则?

这意味着两款工具都将看到相同的知识。遵循度是另一回事:两家厂商都将指令文件描述为上下文,而不是强制执行的配置。每次都必须成立的规则应该放在 hook 或 CI 检查中,而不是记忆层中。