实际可以传输的内容
你的 CLAUDE.md 文本内容。 构建命令、约定、架构说明、"始终执行 X"的规则。Cursor 会读取项目根目录和子目录中的 AGENTS.md —— "Markdown 格式的 Agent 指令。.cursor/rules 的简单替代方案"。重命名或复制即可完成。请注意,这与 Claude Code 端的限制正好相反,后者的文档明确指出:"Claude Code 读取 CLAUDE.md,而不是 AGENTS.md。"
路径范围规则,具有真正的一对一映射。 这是整个迁移中最干净利落的部分,但大多数人都忽略了。Claude Code 的 .claude/rules/ 文件采用 glob 模式的 paths: frontmatter 字段,并且"没有 paths 字段的规则将被无条件加载并应用于所有文件。"Cursor 的项目规则在 .mdc frontmatter 中使用 globs,其目的相同:在设置 alwaysApply: false 并提供 globs 时,该规则会"在匹配的文件处于上下文中时自动附加。"因此,Claude Code 中作用域为 src/api/**/*.ts 的规则在 Cursor 中也会变成作用域为 src/api/**/*.ts 的规则。相同的模式语法,相同的理念。
你的个人偏好,放入设置面板。 Claude Code 的用户级层是 ~/.claude/CLAUDE.md 加上 ~/.claude/rules/。Cursor 的对应功能是 User Rules(用户规则)—— "在 Customize → Rules 中定义的全局偏好,适用于所有项目。"作用相同。在依赖它之前,有一个值得注意的警告:"User Rules 不适用于 Inline Edit (Cmd/Ctrl+K)。它们仅由 Agent (Chat) 使用。"
组织范围的指令,放入仪表盘。 Claude Code 支持由 IT 在操作系统级路径部署的托管策略 CLAUDE.md。Cursor 的对应功能是 Team Rules(团队规则),在 Team 和 Enterprise 计划中通过 Cursor 仪表盘创建,其中"Enforce this rule(强制执行此规则):启用后,该规则对所有团队成员都是必需的,且无法在 Customize 中禁用。"
没有其他内容了。以下是具体清单。
自动记忆没有去处。 Claude 为自己保存了四种笔记,记录在每个文件 frontmatter 的 type 字段中:user(你的角色和工作偏好)、feedback(你给 Claude 的纠正和确认的方法)、project(进行中的工作以及 Claude 无法从代码或 git 历史中推导出的决策)和 reference(在项目之外哪里可以找到东西)。它会刻意跳过它可以从代码库中读取的内容以及"你的 CLAUDE.md 文件已经说明的任何内容" —— 这意味着,根据设计,自动记忆中保存的恰恰是其他地方都没有写下来的材料。而且它无法迁移:"自动记忆是本地机器特有的。同一 git 仓库中的所有工作树和子目录共享一个自动记忆目录。文件不会在机器或云环境之间共享。"在离开前请先阅读它。
@path 导入没有 Cursor 等效项。 CLAUDE.md 可以使用 @path/to/import 语法递归引入其他文件,"最大深度为四跳,"并且导入的文件"在启动时会被展开并加载到上下文中。"Cursor 最接近的机制是规则内部的 @filename.ts,常见问题解答(FAQ)也证实了这一点 —— "使用 @filename.ts 将文件包含在规则的上下文中" —— 但它不是一个导入链,也无法进行四层深度的组合。一个四跳的导入树必须被扁平化为一个文件,或者拆分为多个规则。
CLAUDE.local.md 失去了它的形式。 它是项目根目录下被 git 忽略的个人层,"用于不应提交到版本控制的私有单项目偏好。"Cursor 的 User Rules 是全局的,而不是针对单个项目的,因此仅在某个仓库中有意义的个人笔记要么变成全局的,要么变成一个未提交的 AGENTS.md(你必须记住不要将其暂存)。
冲突处理方式不同,这会改变行为。 Claude Code:"所有发现的文件都会被拼接进上下文中,而不是相互覆盖,"顺序从文件系统根目录向下,如果两个文件不一致"Claude 可能会任意选择一个。"Cursor 则规定了实际的优先级:"规则按以下顺序应用:Team Rules → Project Rules → User Rules。所有适用的规则都会被合并;当指南冲突时,较早的来源优先。"如果你一直带着某种矛盾共存(而 Claude Code 之前是通过抛硬币的方式来解决的),Cursor 将会一致地解决它 —— 这可能不是你已经习惯的方式。
Hook(钩子)不会随之迁移。 Claude Code 对这一逃生通道有明确说明:"要阻止某项操作,无论 Claude 做出什么决定,请改用 PreToolUse 钩子。"这是强制执行而非上下文,不属于你正在迁移的规则系统。
Subagent(子智能体)的记忆本来就是独立的。 "主对话的自动记忆不会加载到子智能体中,"并且子智能体自身的自动记忆位于其专属目录中 —— 这是留在后面的每个子智能体的状态。该界限在 why Claude Code subagents don't share memory 中有详细介绍。
手动迁移
步骤 1:在更改任何内容之前,导出实际加载的内容
你无法迁移一个你从未阅读过的配置,而在 Claude Code 中,实际加载的内容很少与你记忆中写下的一致。
在会话中运行 /context 并阅读 Memory files 下的列表。这是哪些 CLAUDE.md 和 CLAUDE.local.md 文件成功载入的真实情况 —— 文档将其作为第一步调试步骤,因为"如果那里缺少某个文件,Claude 就无法看到它。"工作目录之上的文件在启动时加载;子目录中的文件"在 Claude 读取这些目录中的文件时按需加载,"因此从未匹配过的子目录规则将不会出现。
然后运行 /memory。它会列出你的 CLAUDE.md、CLAUDE.local.md 和其他记忆文件位置,并提供打开自动记忆文件夹的选项。打开它。里面的所有内容都是普通的 Markdown,你可以阅读、编辑或删除,而 feedback 和 project 文件通常是整个配置中价值最高的段落:你给出的纠正、截止日期、代码中没有体现的决策。将仍然重要的内容复制到可移植的格式中。它不会自己跑到 Cursor 里去。
在那里时,有两点值得注意。MEMORY.md 最多只加载"MEMORY.md 的前 200 行,或前 25KB,以先到者为准" —— 因此如果它很长,尾部的内容反正也不会被读取。而且主题文件在启动时根本不会加载;Claude "使用其标准文件工具按需读取它们。"如果你想要日志形式的审计而不是肉眼查看,InstructionsLoaded 钩子会记录"确切加载了哪些指令文件、何时加载以及原因。"
步骤 2:在 Cursor 中重建层级,一次性决定格式
按此顺序做出四个决定。
仓库指令:AGENTS.md 还是 .cursor/rules。 将 CLAUDE.md 复制到 AGENTS.md,你就可以立即投入使用。仅针对你希望条件加载的内容转换为 .cursor/rules —— 这正是 .mdc frontmatter 所带来的能力。Cursor 的四种规则类型是 Always Apply(始终应用)、Apply Intelligently(智能应用,"当 Agent 根据描述决定其相关时")、Apply to Specific Files(应用于特定文件,"当文件匹配指定模式时")和 Apply Manually(手动应用,"在聊天中被 @ 提及时")。如果你已经有了 paths: 作用域的规则,这些就是需要转换的规则;其余的可以保持纯文本。
注意扩展名。".cursor/rules 中的普通 .md 文件会被规则系统忽略,因为它没有 frontmatter 来指定 description、globs 和 alwaysApply。如果你更喜欢纯 Markdown,请改用 AGENTS.md。"直接将旧的规则文件原封不动地丢进该目录,是迁移后毫无反应的最常见原因。
扁平化导入。 将每个 @path 链解析到引用它的文件中,或者拆分为独立的规则。在此过程中请注意长度:Cursor 的指南是"将规则保持在 500 行以下"并"引用文件而不是复制其内容 —— 这可以保持规则简短,并防止它们随着代码更改而过时。"Claude Code 也有相同的方向,目标是"每个 CLAUDE.md 文件在 200 行以下。"
将全局与本地分离。 个人偏好放入 Customize → Rules。仓库约定放入 AGENTS.md 或 .cursor/rules 并进行提交。嵌套的 AGENTS.md 无需任何 frontmatter 即可为你提供目录作用域 —— 指令"会与父目录合并,更具体的指令优先。"
如果你的团队共享规则,请使用远程规则。 Cursor 可以从 GitHub 仓库导入规则:Customize → Rules → Add Rule → Remote Rule (Github),粘贴仓库 URL,"Cursor 将扫描仓库中的所有 .mdc 文件,"并将它们放置在 .cursor/rules/imported/<repoName> 中,同时保留相对路径。这仅支持 .mdc,因此这是进行转换而不是保留纯文本的一个原因 —— 并且这是这两个工具中最接近共享、可更新规则源的功能。
如果你最终会同时运行这两个工具一段时间,反向迁移的步骤记录在 migrating from Cursor to Claude Code 中,而文件标准问题在 migrating your CLAUDE.md to AGENTS.md 中有详细介绍。
更好的方法:在两个工具之外为积累的知识安家
看看你在步骤 1 中做了什么。你打开了一个文件夹,里面是 Claude 几个月来记录的关于你项目的笔记,手动阅读并把好的部分复制到了其他地方。这确实管用,但它只能用一次。
必须手动操作的原因是结构性的。自动记忆在设计上是本地机器特有的。Cursor 的规则在设计上是每个仓库独立且受版本控制的。这两个工具都限制了它们所能承载的内容 —— 这里 200 行,那里 500 行 —— 因为每次请求都会附带这些始终开启的内容。它们都不是为了持久存储"为什么你的架构是这样"而设计的,它们也从未声称自己是。
这正是 MemoryLake 的用武之地:将你项目的持久知识保存在一个你的工具可以读取的层中,这样工具切换就不再需要进行知识迁移。设置只需三个步骤。
步骤 1:创建 API 密钥
登录 MemoryLake 并创建 API 密钥。一个凭证即可跨你连接的所有工具使用。

步骤 2:上传你的第一批记忆
简短的条目,每条记录一个要点。你刚刚阅读的自动记忆文件夹就是你的源材料 —— 它已经大致分好了类:

你不得不给出多次的纠正。 这是 Claude Code 自己的 feedback 类别,也是该目录下价值最高的东西。把它移到两个工具都能读取的地方。
带有强制约束的决策。 "迁移只能是递增的,因为读取副本在负载下存在延迟。"规则规定了策略;只有这样才能阻止下周再次提出替代方案。
你已经拒绝的方法以及原因。 这一类别不会出现在任何规则文件或提交信息中。每个新的 Agent 都会再次提议它。
你通过艰难教训学到的环境事实。 仅在 CI 中失败的测试、未记录的速率限制、没有最新数据的暂存数据库。
步骤 3:连接你的 AI 和 Agent
连接你使用的工具。MemoryLake 可以通过 MCP 和 API 访问,因此支持 MCP 的原生 Agent(包括 Claude Code、Codex 和 OpenClaw)可以通过指向 MCP 服务器进行连接,而其他助手则通过 API 读取相同的记忆。这就是让切换变得可逆的原因:在你还在做决定时,两个编辑器都可以读取相同的层。

三个坦诚的限制。MemoryLake 不会读取你的自动记忆文件夹,也不会写入你的 CLAUDE.md 或你的 Cursor 规则 —— 步骤 1 仍然需要手动读取,而规则文件是你引导每个工具的方式。它只保存你或你的 Agent 放入其中的内容。此外,规则和记忆都是上下文,而不是强制配置;如果你需要某件事每次都无条件发生,那应该是一个钩子(hook)或 CI 检查,而不是记忆层。
这在实践中改变了什么
切换不再是单向门。 两个编辑器读取相同的外部记忆意味着你可以运行 Cursor 两周,而无需拆除你的 Claude Code 配置。
即使你留下来,读取自动记忆也是值得的。 大多数人从未打开过那个文件夹,而 project and feedback 文件是对过去六个月令人惊讶的良好总结。
新工具中的规则文件变得更短。 CLAUDE.md 增长超过 200 行是因为它在承担两项工作 —— 引导和记忆。一旦将它们拆分,这两个工具的上限就都不会成为限制。
"它还不了解我的项目"得到了真正的解答。 不是"写更多规则",而是"那些知识从未存在于规则中" —— 这在 why RAG isn't memory 中有通用案例分析。
从 Claude Code 切换到 Cursor 的最佳实践
在做任何其他事情之前,先打开自动记忆文件夹。 这是你配置中唯一在另一端没有导入器的部分,而且这是你没有亲手写下的部分。
相信 /context,而不是你对所写内容的记忆。 Memory files 列表是实际加载的内容。从未匹配过的子目录文件将不会出现在那里。
将 paths: 规则转换为 globs,其余保持为纯文本。 这种映射是直接的。其他所有内容作为 AGENTS.md 成本更低。
绝不要在 .cursor/rules 中留下普通的 .md 文件。 它会被默默忽略。请使用带有 frontmatter 的 .mdc,或使用 AGENTS.md。
扁平化 @path 导入,而不是重新创建它们。 Cursor 的 @filename 引用并不是一个四跳的导入链。
决定冲突应该如何解决。 Cursor 合并规则的优先级是 Team Rules 高于 Project 高于 User;Claude Code 则是拼接并任意选择。解决你之前侥幸避开的冲突。
将全局偏好放入 User Rules,并注意 Inline Edit 的差距 —— 它们适用于所有项目,但不适用于 Cmd/Ctrl+K。
将推理过程保留在两个规则系统之外。 规则是方向和指针;决策背后的论据才是让 Agent 能够处理你未预料到的情况的关键 —— 这种形式在 why agents ignore the instruction files you wrote 中有详细讨论。
结论
从 Claude Code 到 Cursor 在纸面上很容易,但在实践中会有损耗,而且分歧点并不在人们预料的地方。你的 CLAUDE.md 经过重命名后变成 AGENTS.md。你的 paths: 作用域规则几乎可以完全映射到 Cursor 的 globs 上。你的用户级文件变成 User Rules,而托管策略文件变成 Team Rules。
无法迁移的是 Claude 为自己编写的所有内容。自动记忆默认开启,以本地机器 Markdown 文件的形式存储在 ~/.claude/projects/<project>/memory/ 中,其中保存的恰恰是你的 CLAUDE.md 中没有的材料 —— 而 Cursor 永远不会看到它。@path 链必须被扁平化,CLAUDE.local.md 失去了其单项目作用域,并且 Claude Code 任意解决的冲突现在将通过规定的优先级顺序来解决。
因此,请先阅读自动记忆文件夹,使用 /context 导出已加载的集合,仅转换需要条件的规则,并将决策和被拒绝的方法放在两个编辑器都可以查询的层中。