真正可以传输的内容
没有任何内容是自动传输的。 没有导出功能。ChatGPT 为您提供的是一个记忆摘要,您可以在“设置”中的“个性化” → “记忆”下阅读,而且官方文档明确指出,该摘要“不会包含 ChatGPT 根据您的聊天内容记住的所有内容”,并提供了一个有用的诊断建议:“如果您想知道 ChatGPT 是否记住了某些内容,只需在聊天中询问即可。”
而且存储的并不是您的原话。 ChatGPT 的记忆被描述为“对您过去聊天中上下文的持续更新综合”。这有利于个性化,但对于任何精确的内容来说都是有损的。您可能会发现某段话在大方向上是正确的,但却遗漏了每条规则背后的原因——这意味着迁移在某种程度上是一项重写工作。
您的明确指令是较容易处理的一半。 您在“自定义指令”(Custom Instructions)中输入的任何内容都是您自己编写的文本,因此可以干净地迁移。OpenAI 自己的指南也针对任何明确的内容指向了这里:“对于明确的信息或指令,您可以将其添加到您的自定义指令中。”
Zed 侧有三个接收界面,这是您在开始之前值得学习的部分。
- Instructions(指令)是常驻的上下文。个人指令保存在
~/.config/zed/AGENTS.md(在 Windows 上为%APPDATA%\Zed\AGENTS.md),并适用于您打开的每个项目。项目指令来自文档列表中第一个匹配的文件:.rules、.cursorrules、.windsurfrules、.clinerules、.github/copilot-instructions.md、AGENT.md、AGENTS.md、CLAUDE.md、GEMINI.md。根据文档,“当发生冲突时,项目指令会覆盖个人AGENTS.md”。 - Skills(技能)是按需加载的可重用指令包。一个技能是“一个包含
SKILL.md文件(带有元数据和指令)的文件夹”,“智能体可以看到所有已安装技能的目录,并可以按需加载一个”,或者您也可以直接使用斜杠命令调用它。全局技能放在~/.agents/skills/中,项目本地技能放在.agents/skills/中。请注意,从 Zed v1.4.0 开始,Rules(规则)已被 Skills 和 Instructions 取代——如果您之前有 Zed Rules,非默认的规则已被迁移到带有disable-model-invocation: true的全局 Skills 中,而默认的规则已被追加到您的全局AGENTS.md中。 - MCP 服务器在设置中的
context_servers下进行配置,通过“设置” → “AI” → “MCP 服务器”添加,适用于本地服务器(command、args、env)或远程服务器(url、headers)。Zed 目前支持 MCP 的 Tools(工具)和 Prompts(提示词)。
两边都不存在的东西。 Zed 的智能体面板运行多个线程,“每个线程独立工作,拥有自己的智能体、上下文窗口和对话历史记录”。因此,Zed 不会像 ChatGPT 在不同聊天中那样,跨线程积累关于您的画像。Instructions、Skills 和 MCP 是保持连续性的手段。这是一个公平的交易——它清晰易读、保存在文件中、处于版本控制之下——这意味着任何您没有写下来的东西都不存在。
手动迁移
步骤 1:导出您的记忆,并分三路整理
打开“设置” → “个性化” → “记忆”并阅读摘要。然后,在聊天中,让 ChatGPT 逐字逐句地以列表形式写下它记住的关于您的工作方式、技术栈和规范的所有内容。多问两次,用不同的措辞,因为文档中指出摘要是不完整的。将输出内容粘贴到您的“自定义指令”文本旁边的临时文件中。
现在将每一行精确地分类到三个堆中的一个。这就是全部的诀窍,它对应着 Zed 的三个界面:
堆 A —— 随时随地都适用。 “保持简洁。”“优先使用显式类型而非推断。”“在未确认已是依赖项之前,绝不建议使用某个库。”简短、精炼、个性化。这些将成为个人指令。
堆 B —— 在此项目中始终适用。 “API 返回 camelCase,数据库是 snake_case。”“迁移在部署之前运行,绝不在部署之后。”“legacy/ 目录已被冻结。”这些将成为项目指令,并提交到版本控制中,以便您的团队成员也能获取它们。
堆 C —— 您调用的流程。 “我希望如何编写 PR 描述。”“添加新端点的步骤。”“我们如何进行模式(schema)迁移。”这些是人们错误地塞进常驻文件中的内容,而它们正是 Skills 存在的原因:按需加载、按名称调用,在无关时不会消耗任何成本。
整理时的两条规则:任何附带原因的内容(例如因为某些东西损坏而存在的约束),都要把原因写回去,因为综合画像把原因丢掉了。并且要对每堆的大小毫不留情:ChatGPT 记住的关于您的绝大部分内容都是可丢弃的偏好,这些偏好会重新生成,把它们复制过来只会稀释真正重要的内容。
步骤 2:将每堆内容归档到 Zed 实际读取的位置
堆 A → `~/.config/zed/AGENTS.md`。 保持真正的简短。它会为您机器上的每个项目加载,因此每一行都会与实际请求竞争。如果超过一屏文本,您就应该把内容移到堆 C。
堆 B → 您的项目指令文件。 在仓库根目录下使用 AGENTS.md,除非仓库中已经存在列表中更早匹配的文件名——记住 Zed 会采用该列表中的第一个匹配项,因此仓库中遗留的旧 .cursorrules 将优先于您刚刚编写的 AGENTS.md。在感到困惑之前,先检查是否有遗留文件。提交您编写的所有内容,并注意文档中说明的优先级:当发生冲突时,项目指令会覆盖您的个人文件。
堆 C → Skills。 运行 /create-skill 并让智能体引导您完成,或者使用智能体面板中的 Skills Manager(技能管理器)。每个技能都是一个包含 SKILL.md 的文件夹;将其放在 ~/.agents/skills/ 中以便在任何地方使用,或者放在 .agents/skills/ 中以将其范围限制在项目中。仔细编写描述——这是智能体用来决定是否加载该技能的依据。如果您希望某个技能仅在您要求时才使用,请切换 disable-model-invocation,使其由用户调用而不是由模型自动选择。
然后连接 MCP。 “设置” → “AI” → “MCP 服务器” → “添加服务器”(本地或远程),这会在您的设置文件中的 context_servers 下写入条目。这个界面将 Zed 从“一个带有指令文件的编辑器”转变为可以读取实时存储的工具,这将在下一节中介绍。
在设置时,请注意文档中的一条警告:如果您使用外部智能体(External Agents)或终端线程(Terminal Threads),它们可能会直接读取它们自己的原生指令文件,并且“不要假设 Zed 的指令加载器控制着这些智能体”。在终端线程中运行的 Claude Code CLI 会原生读取 CLAUDE.md,而不是因为 Zed 将其传递了过去。
更好的方法:统一的记忆层,适用于任何助手
退一步看看您刚刚做了什么。您手动从聊天窗口中复制了一份综合画像,重写了被综合画像丢弃的原因,并将结果拆分到只有 Zed 读取的三个文件位置。这是一种改进——文件、版本控制、明确的作用域——但下次您更换工具时,您还得再做一遍。
更持久的版本将规则与知识分离。Instructions 和 Skills 是您告诉 Zed 该做什么的方式。而它们背后的知识——决策、事件、契约、文档——应该放在每个助手都能读取的地方,包括您仍用于写作和思考的 ChatGPT。
MemoryLake 就是为此而设计的记忆层——将您的文档、约束和决策保存在一个存储库中,Zed 可以通过 MCP 访问,Claude 和 Codex 可以直接访问,ChatGPT 可以通过 API 访问。指令文件可以保持很小,因为它们不再需要容纳所有内容。
步骤 1:创建 API 密钥
在大约 30 秒内生成密钥并发送您的第一个请求。将其保存在您的环境变量或机密管理器中,而不是粘贴到聊天窗口中。

步骤 2:上传您的第一批记忆
放入规则背后的文档、图像和文件:架构决策及其日期、事件记录、API 契约、风格指南、模式(schema)。上传源文件而不是摘要——您刚刚花了一个小时重建摘要中丢失的内容,所以不要再开始写新的摘要了。

步骤 3:连接您的 AI 和智能体
通过 MCP 或 API 授予 Claude、Codex、OpenClaw 和其他 AI 智能体访问记忆的权限。在 Zed 中,在“设置” → “AI” → “MCP 服务器”下添加服务器,使其保存在 context_servers 中,这样每个线程都可以查询同一个存储库。ChatGPT 没有 MCP 客户端,因此请通过 API 检索您需要的内容,并将其注入到提示词或调用模型的日常工作流中。

这在实践中带来了什么改变
第一个区别是您的常驻文件可以保持很小。人们最终写出 500 行指令文件的原因是没有其他地方可以存放细节。有了检索功能,个人指令只需保存您的少数硬性偏好,而项目指令则保存那些会导致回答出错的约束条件。
第二个区别是新线程不再成为负担。Zed 线程在设计上是独立的——拥有自己的上下文窗口和历史记录——因此连续性来自加载的内容,而不是来自说过的话。一旦加载成本降低,这就是一个干净的模型,这也是为什么一个每次都从零开始的智能体在每次都需要重新解释一切时会让人觉得代价高昂的原因。
第三个区别是 ChatGPT 和 Zed 不再掌握不同的信息。如今,您用来规划的助手和用来构建的编辑器是分开学习的,来自不同的对话。读取同一个存储库,使得跨工具的统一记忆成为一种配置,而不是一种复制的苦差事。
并且它与双方的原生功能相辅相成。ChatGPT 记忆继续进行个性化——在其有文档记录的边界内,包括它是按账户划分的,并且并不总是像人们期望的那样工作。Zed 继续加载指令和 Skills。两者都不必成为唯一的记录载体。
将记忆移入 Zed 的最佳实践
按成本而非主题分类
每个项目的核心问题不是“这是关于什么的?”,而是“这是否需要每次都出现在上下文中?”常驻指令适用于少数会改变每个回答的内容,Skills 适用于流程,检索适用于长尾内容。在常驻指令方向上犯错(放了太多内容)是最常见且代价最高昂的错误。
检查 Zed 实际会读取哪个指令文件
Zed 使用其列表中第一个匹配的文件,而 .rules、.cursorrules、.windsurfrules 和 .clinerules 的优先级都高于 AGENTS.md。前一个编辑器遗留的文件会默默地优先执行。在编写之前先检查一下。
为模型编写技能描述,而不是为您自己
智能体会根据描述从其目录中选择技能。“迁移步骤”是一个糟糕的描述;“安全添加或更改数据库列的步骤,包括迁移和部署的顺序”是一个好描述。如果您更愿意手动选择,请设置 disable-model-invocation 并按名称调用它。
提交项目指令和项目技能
AGENTS.md 和 .agents/skills/ 都保存在仓库中,这意味着您的团队成员和您的其他机器都会继承它们。个人指令和全局技能则属于您个人。决定哪些内容属于哪一类,是团队标准与个人习惯之间的区别。
在您仍有访问权限时进行 ChatGPT 导出
阅读记忆摘要并让它写下它所知道的内容需要 20 分钟,而且只能在活跃的账户内进行。这次迁移中的其他所有步骤都是可重复的,唯独这一步不是。
不要指望指令文件能起到强制执行的作用
它们只是增加上下文,并不能保证行为。格式化、禁止的导入、受保护的路径——把这些放在格式化工具、Linter 和 CI 中,无论任何线程加载了什么,这些工具都会生效。让指令文件来解释规则存在的原因。
结论
将 ChatGPT 记忆迁移到 Zed 是手动的,因为 ChatGPT 没有导出功能,而且其记忆是综合画像而非抄本。阅读摘要,在聊天中让它写下它所知道的内容,并接受您需要重写被它压缩掉的原因这一事实。
然后将您恢复的内容分类到 Zed 的三个界面中:保存在 ~/.config/zed/AGENTS.md 中的个人指令,用于少数始终适用的内容;保存在仓库中的项目指令,用于您团队共享的约束;以及保存在 ~/.agents/skills/ 或 .agents/skills/ 中的 Skills,用于您按需调用的流程。检查 Zed 会首先匹配哪个指令文件名,保持常驻文件简短,并在 context_servers 下连接 MCP,以便规则背后的知识保存在 Zed 和 ChatGPT 都能读取的统一存储库中。这样,下一次更换编辑器就只是修改一个配置文件,而不是进行一次考古工程了。