实际传输的内容
记忆条目:完整且带有日期。 Anthropic 将 Claude 的记忆描述为“一组组织成类别的独立条目”,Claude 会在“你聊天时实时读取、写入和更新”这些条目。这些条目会出现在逐字转储中,并且由于大多数条目都带有保存日期,你将获得迁移中罕见的东西:一种无需逐行阅读以验证合理性就能区分新鲜知识与陈旧过时信息的方法。先按日期排序,分类工作就完成了一半。
类别:作为提示,而非结构。 在“设置 > 记忆”(Settings > Memory)中,条目按类别分组,文档中记录的重点领域包括你的角色和专业上下文、沟通偏好和工作风格、技术偏好和编码风格,以及项目细节和正在进行的工作。这些分组与 Zed 的层级并不是一一对应的,但它们是一个有用的初步筛选——偏好和风格通常属于一个地方,而项目细节则属于另一个地方。
每个项目的记忆:独立存在,这很重要。 Anthropic 的文档指出:“每个项目都有自己独立的记忆空间和专用的项目摘要,因此每个项目中的上下文都是聚焦的、相关的,并且与其他项目或非项目聊天隔离开来。”如果你使用了 Projects(项目),你拥有的就不是一份需要导出的记忆,而是每个项目一份,外加非项目堆积的记忆。请分别导出它们,否则你会合并 Claude 特意分开的上下文,并且会丢失指示某个条目属于哪个仓库的信号。
从未被捕获的内容。 隐身聊天(Incognito chats)没有任何贡献:Anthropic 的文档指出,在开启该模式时,“Claude 不会记住你的聊天内容,因此它们不会被保存到 Claude 的记忆或你的聊天历史记录中。”此外,项目知识文件与记忆是两码事——你上传的文件存在于 Project 中,移动它们的内容意味着移动文件,而不是移动记忆条目。这个界限经常让人困惑,正如为什么 Claude 会忘记项目知识文件中所讨论的那样。
在 Zed 方面,目标位置最近发生了变化。 如果你在 v1.4.0 之前设置了 Zed 并且记得 Rules Library(规则库),那么该模式已经不复存在。当前的文档明确指出:“规则已被 Skills 和 Instructions 取代:可重用的、按需启用的 Rules 变成 Skills;默认的、始终开启的 Rules 变成个人的 AGENTS.md;项目 .rules 文件仍作为兼容性项目指令文件受到支持。”因此,有三个归宿,它们具有不同的加载行为和不同的成本:
- Instructions —— 始终开启。个人指令位于
~/.config/zed/AGENTS.md(在 Windows 上为%APPDATA%\Zed\AGENTS.md)。项目指令来自你仓库中的一个文件。这里的所有内容每次都会加载。 - Skills —— 按需启用。包含
SKILL.md的文件夹,全局位于~/.agents/skills/,或每个项目位于.agents/skills/,智能体会在它们相关时或你直接调用它们时加载。 - MCP 服务器 —— 实时数据和工具,在
context_servers下配置。这不是存放知识的地方,但对于任何应该被查询而不是被记住的内容来说,这是正确的解决方案。
手动迁移
步骤 1:逐字导出,先看日期再看内容
打开 Claude 并按照 Anthropic 文档记录的方式请求转储:"Write out your memories of me verbatim, exactly as they appear in your memory."。针对你的通用记忆执行一次,并在你关心的每个 Project(项目)内各执行一次,因为这些记忆空间是独立的。将每个结果粘贴到其专属的临时文件中,并按来源进行标记。
现在进行人们常常跳过的一步。在评估一个条目是否有用之前,先使用转储中的保存日期评估它是否具有时效性。一个八个月前描述你的测试框架的条目,是对一个自那时起已经发生改变的代码库的陈述。将任何早于你上一次重大重构的内容标记为可疑,而不是事实。
你也可以打开“设置 > 记忆”(Settings > Memory)来浏览按类别分组的条目,通过“告诉 Claude 要更改或删除的内容”(Tell Claude what to change or remove)框编辑任何错误内容,并删除单个条目。在导出之前进行清理通常比在导出之后清理更快,因为界面已经为你分好了组。
需要注意的一点是:如果你计划停止使用 Claude,请不要在清理过程中使用“重置记忆”(Reset memory)。Anthropic 的文档指出,该操作会永久删除所有记忆且不可撤销。如果你希望在迁移时停止累积记忆,可以使用“暂停记忆”(Pause memory)。
步骤 2:将每个条目路由到 Zed 的三个归宿之一
逐行处理清理后的转储。每个条目都恰好去往一个地方,而测试标准是它何时需要为真。
始终为真,无论你在哪里工作 → 个人 `~/.config/zed/AGENTS.md`。 你的语言偏好、你希望如何组织解释结构、你在不同工作之间沿用的惯例。保持此文件简短;它会在每个项目的每个会话中加载,因此这里的长度是一项持续的开销。
在此仓库中始终为真 → 项目指令文件。 架构决策、内部惯例、构建和测试命令。这也是陷阱所在——见下文。
有时为真,当你正在做特定事情时 → 一个 Skill。 这是大多数人忽略的层级,也是 Claude 记忆中令人惊讶的大部分内容所属的地方。多步骤流程、发布清单、“我们如何编写迁移”、你总是遵循的调试例程:当你正在编辑 CSS 时,这些都不需要存在于上下文中。作为一个 Skill,它会在相关时或你调用它时加载。Skills 存放在 ~/.agents/skills/(个人使用)或 .agents/skills/(与仓库共享)。
根本不是知识 → MCP。 实际上是指向实时系统的指针的条目——例如“暂存状态在 Grafana 中”、“工单状态存在于 Linear 中”——通过 context_servers 下的服务器提供服务,比在指令文件中写一句过时的话要好得多。
现在是陷阱,这值得读两遍。Zed 会在一系列文件名中寻找项目指令:.rules、.cursorrules、.windsurfrules、.clinerules、.github/copilot-instructions.md、AGENT.md、AGENTS.md、CLAUDE.md、GEMINI.md。文档中写道:“Zed 使用该列表中第一个匹配的文件。”
首个匹配。不是合并,也不是最具体的——而是第一个。 如果你的仓库中留有早期实验遗留下来的 .cursorrules,该文件就会胜出,而你刚刚根据 Claude 导出内容精心编写的 AGENTS.md 将永远不会加载。没有任何报错。智能体的行为就像你的迁移从未发生过一样。在写入任何内容之前,列出仓库中存在这九个文件名中的哪几个,并删除或合并你不希望作为权威源的文件。
稍后也值得了解的是:“当发生冲突时,项目指令会覆盖个人 AGENTS.md。”因此,仓库文件具有更强的发言权,这通常是团队协作中所期望的——也是将真正的个人偏好排除在外的一个原因。如果一个项目的行为开始变得好像忘记了你的设置,这个顺序是首先要检查的事情,排在任何与模型相关的问题之前——正如为什么 Zed 会忘记项目上下文中的模式所述。
更好的方法:统一的记忆层,适用于任何助手
注意上述两个步骤的共同点:它们都涉及一个已经存在、极具价值且以只有单一厂商能读取的格式存在的知识库。Claude 为你提供了一个很好的导出——比大多数都要好——但你仍然需要花一个下午的时间将一个带有日期的扁平条目列表转换为三层文件布局,而下一个工具同样无法理解它。
MemoryLake 消除了这种重复:一个保存项目持久知识的统一记忆层,可供你使用的任何助手读取。Zed 的 Instructions 继续履行其狭窄的职责——即每个会话中必须存在于上下文中的那一小部分内容——而积累的知识体系则存在于 Claude 和 Zed 都能访问的地方。设置只需三个步骤。
步骤 1:创建 API 密钥
登录 MemoryLake 并创建一个 API 密钥。为你连接的每个工具提供一个凭证——这是让你告别手动转换的最后一步。

步骤 2:上传你的第一批记忆
上传清理后的导出内容:通过日期检查的条目,以及它们背后的决策和约束。保持条目简短且主题单一,就像 Claude 自身记忆存储它们的方式一样——这种形式检索效果好且易于纠正。特别注意那些被拒绝的方案:你尝试过并放弃的方法,以及原因。这些是一个新助手最需要、也最无法推断的条目。

步骤 3:连接你的 AI 和智能体
连接你的工具。MemoryLake 可以通过 MCP 和 API 访问,因此 MCP 原生智能体——包括 Zed(通过 context_servers)、Claude Code、Codex 和 OpenClaw——可以通过指向 MCP 服务器进行连接,而其他助手则通过 API 读取相同的记忆。你的 AGENTS.md 保持简短,你的 Skills 保持明确的目的性,并且不断累积的项目知识也不再需要复制到这两者中。

两个坦诚的限制。MemoryLake 不会替你读取 Claude 的记忆;上述步骤 1 是实实在在的工作,只需做一次。而且它不是一个强制执行层——Zed 的指令是塑造行为而不是保证行为,没有任何记忆层能改变这一点。
这在实践中带来了什么改变
你的始终开启文件保持精简。 迁移后的诱惑是将整个导出内容粘贴到 AGENTS.md 中,因为这是你确定会被读取的一个文件。这就是 400 行指令文件产生的原因,而冗长的始终开启文件会降低对重要规则的遵守度。可检索的知识消除了这种诱惑。
Skills 终于派上用场。 大多数人从不填充按需层,因为这是额外的工作,且没有立竿见影的回报。当你无论如何都要路由导出内容时,分类工作只需做一次——而这就是流程移出始终开启的上下文的时刻。
每个项目的隔离在迁移后得以保留。 Claude 保持项目记忆独立是有原因的。在迁移过程中将它们扁平化合并为一个文件,你就会失去这种隔离;保持它们独立——在仓库指令中或在具有项目范围的记忆层中——这种界限将持续发挥作用。
下一个工具只需一次连接,而不是一个下午。 这是实际的节省。你还会再次更换编辑器。这需要花费十分钟还是整整一天,取决于知识是存在于厂商的格式中,还是你自己的格式中。
Claude 继续工作。 这里没有任何内容要求放弃 Claude——Anthropic 的导入流程接受粘贴回来的记忆,因此共享层可以同时满足两者。大多数人最终会把聊天助手和编辑器用于不同的事情,而将 Claude 的记忆扩展到内置功能之外涵盖了这种组合。
迁移的最佳实践
按项目导出,而不是一次性导出。 项目记忆空间在设计上是独立的。一次性合并转储会破坏知识与仓库之间的映射关系。
信任日期胜过信任措辞。 一个在三月份措辞自信的条目仍然是一个来自三月份的条目。转储为你提供了保存日期;将它们用作第一道过滤器。
在写入任何内容之前,审计这九个文件名。 .rules、.cursorrules、.windsurfrules、.clinerules、.github/copilot-instructions.md、AGENT.md、AGENTS.md、CLAUDE.md、GEMINI.md——首个匹配胜出。你放弃的工具遗留的文件会悄悄地排在你新文件之前。
将流程放入 Skills,将事实放入 Instructions。 如果它包含步骤,它就是一个 Skill。如果它是常驻事实,它就是一条指令。将它们混在一起是导致始终开启文件膨胀的原因。
不要将重置记忆作为清理步骤。 Anthropic 的文档指出重置记忆是永久性的且不可撤销。在迁移时,暂停是可逆的选择。
预料到双向导入都可能存在损耗。 Anthropic 自身的导入文档指出,“Claude 可能无法始终成功合并导入的记忆”,并且工作相关的内容会被优先考虑。将任何记忆传输视为你进行验证的初始草稿,而不是已完成的同步。
在责怪模型之前,先验证加载了什么。 迁移后,确认 Zed 采用了哪个指令文件。一半关于“智能体忽略了我的规则”的报告,实际上是因为文件从未被加载。
结论
这是罕见的提取数据属于较容易部分的迁移。Anthropic 提供了逐字导出的文档,导出的条目带有日期,并且“设置 > 记忆”(Settings > Memory)允许你在开始前进行清理。工作主要在接收端:Zed 用 Skills 和 Instructions 取代了 Rules,这意味着需要决定每个条目是应该始终存在于上下文中、按需存在,还是根本不需要——并确认你编写的文件是 Zed 实际读取的文件,因为首个匹配胜出。
进行一次这样的路由,并将持久知识放在不属于任何一家厂商的地方。这样,下一个编辑器就只是一次连接,而不是又一个下午的忙碌。如果你的来源是不同的助手,将 ChatGPT 记忆迁移到 Zed 涵盖了这一旅程,而将 Claude 记忆迁移到 Cursor 则涵盖了另一个常见的目标位置。