实际可以迁移的内容
规则内容几乎可以原封不动地迁移。 Windsurf 规则是用 Markdown 编写的给模型的指令。Claude Code 读取 CLAUDE.md。不需要任何转换层 —— 您只是改变了文本存放的位置,而不是它的内容。
了解您要收集的内容的形式是很有必要的,因为在 Windsurf 的生命周期中它发生过变化。社区文档描述了两种并存的系统:项目根目录中的旧版 `.windsurfrules` 纯文本文件,以及较新的 `.windsurf/rules/` 作用域 Markdown 规则目录,当前的 Devin Desktop 版本更倾向于使用 .devin/rules/ 并保留 .windsurf/rules/ 作为备用。据报道,这些文件中的规则总计上限约为 12,000 个字符 —— 值得对照您自己的安装进行检查,因为这些细节来自实践者指南,而非当前的官方参考。
这种备用行为正是让这次迁移显得可有可无的原因。您的旧规则仍在被读取,因此没有任何明显的降级,盘点也从未发生。
Cascade 记忆无法迁移,这才是真正的损失。 正如社区指南所说,关键的区别在于:规则是您编写并提交到版本控制的静态指令,而 Cascade 记忆是自动生成且保存在本地的 —— 智能体(agent)会记录会话中的上下文,从而避免重复提问,但记忆不会与团队成员共享,也不是存放刻意约定的地方。
请仔细阅读这段话,因为这是一把双刃剑。这意味着 Windsurf 确实有一个记忆层,并且它一直在为您做着实实在在的工作 —— 每一个您不再注意到的“它已经知道那个了”的时刻。这也意味着该层是从会话中自动生成的,仅对单台机器私有,且从未设计过导出功能。您无法将任何文件直接交给 Claude Code。
MCP 连接需要重新添加,而不是转换。 它们在 Windsurf 到 Devin 的品牌重塑中自动保留了下来;但它们不会跟随您到另一个编辑器。Claude Code 支持 MCP 服务器,因此这只是重新输入配置,而不是重写任何内容 —— 但每个服务器所需的凭据和环境变量再次需要您自己来处理。
扩展、键绑定和您的计划完全无法迁移。 这些内容在品牌重塑中得以保留,是因为当时是同一个编辑器。Claude Code 是一个 CLI(命令行界面),而不是 VS Code 的分支,因此这部分算不上迁移 —— 而是工具类别的改变,值得提前说明,以免您感到意外。
脚本和自动化需要审计。 品牌重塑将 .windsurf/tools/ 移动到了 .devin/tools/,关于该过渡被广泛报道的总结是:编辑器自身完成了迁移,但脚本没有。任何调用 Windsurf 路径的脚本都已经存在潜在的损坏,而迁移到 Claude Code 是发现这些问题的好时机,而不是导致问题的新原因。
手动迁移
Step 1: 收集您的规则,并重建记忆中保留的内容
首先从文件开始,因为这部分是机械性的。在项目根目录中寻找 .windsurfrules,然后在 .windsurf/rules/ 和 .devin/rules/ 中寻找特定作用域的 Markdown 文件。收集所有这些文件,包括那些您已经忘记其存在的规则 —— 字符总数上限意味着旧规则往往是被裁剪而不是被删除,而残缺的规则比没有规则更糟糕。
按实际作用域对您找到的内容进行分类:
- 全局工作 —— 您希望如何格式化输出、默认使用的语言和版本、对每个项目都适用的内容。
- 全局仓库 —— 约定、架构约束、测试要求。
- 特定区域 —— 仅适用于 API 层、数据层、测试的规则。
然后进行非机械性的部分。打开 Cascade —— 或 Devin Desktop —— 并读取智能体似乎知道但未在任何地方写下的内容。将其呈现出来的实用方法是直接询问:它正在遵循哪些约定、关于这个项目它被告知了什么、它避免做什么。因为记忆是从会话中自动生成的,所以答案往往是您曾经顺便提过一次但从未写下来的事情:某个供应商的奇特行为、一个不应触碰的目录、一个必须首先运行的构建步骤。
将这些内容写成普通文本。这是迁移过程中唯一不可替代的一小时 —— 其他一切都是复制文件。这也是一个让您注意到,您的编辑器有多少实用功能已经累积在了一个您从未备份过的、每台机器独有的本地存储中的时刻。
Step 2: 在正确的层级将它们重建为 CLAUDE.md
Claude Code 读取 CLAUDE.md,其放置位置决定了作用域:
- 全局偏好设置放在
~/.claude/CLAUDE.md中。 - 仓库约定放在项目根目录的
CLAUDE.md中并提交,这样您的团队也能获取它们。 - 特定区域的规则放在该子目录下的
CLAUDE.md中,或者保留在您引用的文档中。
针对第三种情况的一个有用习惯是:与其内联一条很长的特定区域规则,不如将其作为文件保存在 docs/ 中,并在根目录的 CLAUDE.md 中写上一行指向它的内容 —— “在修改 src/api/ 下的任何内容之前,请先阅读 docs/api-conventions.md。”您还可以在相关时使用 @path 导入特定文件,而不是总是加载它们。
如果您不想从空白文件开始,/init 可以根据仓库脚手架生成一个 CLAUDE.md,而 /memory 可以直接打开记忆文件进行编辑。这两者都比从头编写更快,并且都会生成您随后应该进行删减的内容。
保持简短。作用域内的所有内容都会在每个任务中加载,因此一个冗长的根文件是您在每次请求中都要永远付出的成本 —— 而且与 Windsurf 的组合字符上限不同,没有任何东西能阻止您把它写得太长。那个上限其实是在帮您的忙。
然后合理设定预期,因为这往往是人们感到失望的地方。规则文件只是让知识可用;它们并不能让工具记住。Claude Code 的每个会话都是从您的文件全新开始的,并在长会话中压缩上下文,这就是为什么即使有很好的 CLAUDE.md,它也会在会话之间忘记您的项目上下文,以及为什么您上周给出的纠正可能会再次失效。您迁移了规则。但您并没有替换刚刚丢失的自动生成记忆层,而且 Claude Code 也没有自带这个功能。
更好的方法:统一的记忆层,适用于任何编辑器
注意刚刚发生的事情的本质。您丢失了一个记忆层,因为它保存在本地机器上并与某个产品绑定,而该产品在您不知情的情况下发生了变化 —— 首先是品牌重塑,然后是终止了您使用的智能体。
这并不是 Windsurf 的失败。任何存在于工具内部的知识都会面临这样的命运:在工具改变之前它非常出色,之后便无法恢复。Cascade 记忆在设计上就是自动生成且保存在本地的;没有人承诺过它们的寿命会比 Cascade 更长。
另一种选择是将该层完全保留在编辑器之外。MemoryLake 是一个供您的工具读取的记忆层 —— 将约定、决策和约束保存在一个存储库中,可以通过 MCP 从 Claude Code 访问,也可以通过 API 从任何其他工具访问。下一次当编辑器重塑品牌、停用智能体,或者您只是想尝试新工具时,这些知识只是一个配置项,而不是一次重建工作。
公平地对文件进行评价:CLAUDE.md 具有存储库所不具备的真正优势。它是纯文本,存在于版本控制中,在拉取请求(PR)中接受审查,并且您的团队会自动继承它。将其保留用于长期规则 —— 这正是它的用途。而记忆层则是为了那些不断累积的内容:供应商的奇特行为、决策背后的原因,以及那些如果不通过在卸载前询问智能体就无法发现的事情。
Step 1: 创建 API 密钥
生成密钥并在大约 30 秒内发出您的第一次请求。将其保存在您的环境变量或机密管理器中,而不是内联在配置中 —— 您已经在为这次迁移重新输入 MCP 凭据了,所以把它们放在下次不需要到处寻找的地方。

Step 2: 上传您的第一批记忆
放入包含您在步骤 1 中重建的内容的文档、图像和文件,以及您的规则所指向的参考资料:带有原因的架构决策、构建奇特行为、约束条件。尽可能上传源文件而不是摘要。

Step 3: 连接您的 AI 和智能体
让 Claude、Codex、OpenClaw 和其他 AI 智能体通过 MCP 或 API 访问记忆。Claude Code 支持 MCP 服务器,因此这只是一个配置项 —— 并且同一个存储库可以被您使用的任何其他工具读取,这就是一次性完成这项工作的意义所在。

这在实践中带来了什么改变
第一个区别是,步骤 1 中的询问练习将是最后一次。您了解到的关于自己项目的内容不会存放在一个无法导出的、每台机器独有的存储库中;它存在于您可以读取的记录中。
第二个区别是机器独立性。Cascade 记忆是本地的,替代它们的大多数内容也是如此 —— Claude Code 自身的知识存在于检出(checkout)的文件中。而一个存储库意味着第二台笔记本电脑、一个容器或团队成员的会话可以从相同的知识开始,而不是从零开始。
第三个区别在您运行多个会话时显现。Claude Code 现在可以让会话之间互相发送消息,这对于协调很有用 —— 但消息只是在两个活动会话之间传递的文本,而不是共享的基础。而存储库可以让下周的第四个会话知道第一个会话学到了什么。
它还降低了下一次更换工具的成本。Cascade 的 EOL(生命周期结束)是一个提前通知的硬性日期,但它仍然让人们付出了失去累积上下文的代价。您最不想重复的迁移版本,就是知识存在于您所切换到的任何工具内部的那种迁移。
切换的最佳实践
在卸载旧智能体之前先询问它
这是每个人都会跳过的一步,也是唯一真正不可逆的一步。自动生成的记忆是您曾经说过的话的累积结果。询问智能体它对项目了解多少、它遵循哪些约定、它避免做什么 —— 并在安装消失之前把答案写下来。
不要把备用方案误认为是迁移
Devin Desktop 读取 .windsurf/rules/ 作为备用方案意味着您的旧规则仍然有效,这很容易让人相信不需要做任何事情。如果您要换到另一个编辑器,该备用方案就无关紧要了 —— Claude Code 不会读取这些路径中的任何一个。
将 12,000 字符的上限作为您应遵守的指导原则
Windsurf 的组合规则限制迫使您进行选择。CLAUDE.md 没有这种强制限制,自然的结果是文件增长超出了模型能够关注到所有内容的程度。设定一个预算并刻意遵守它。
在此期间审计您的脚本
品牌重塑移动了工具路径,而脚本没有跟随移动。任何引用 Windsurf 路径的内容都已经损坏或即将损坏。在刻意迁移期间修复它,比在 CI(持续集成)中发现它要便宜得多。
在重建时将规则与知识分离
CLAUDE.md 适用于在每个任务中加载的简短长期规则。原因、历史和参考资料属于文档或在相关时检索的存储库。将所有内容重建为一个长规则文件会重新产生字符上限原本在保护您免受其害的问题。
结论
从 Windsurf 迁移到 Claude Code 是两项成本截然不同的工作。迁移规则是机械性的:收集 .windsurfrules、.windsurf/rules/ 和 .devin/rules/,按作用域分类,并将它们放置为 ~/.claude/CLAUDE.md、已提交的根目录 CLAUDE.md 以及子目录文件或引用的文档。而替换 Cascade 的记忆则完全不是机械性的 —— 它们是自动生成且保存在本地的,无法导出,恢复它们的唯一方法是在您离开之前询问智能体它知道什么。
从 Cascade 7 月 1 日结束生命周期中值得吸取的教训,是一个与 Windsurf 无关的教训:存在于产品内部的记忆层,其寿命与该产品相同。将其保存在您的编辑器可以读取的存储库中,才能使下一次品牌重塑、停用或改变主意变成一次配置更改,而不是一次重建工作。