実際に移行できるもの
自動的には何も移行されません。 エクスポート機能はありません。ChatGPT が提供するのは、設定の「パーソナライズ」→「メモリ」で確認できるメモリの概要のみです。ドキュメントには、この概要には「チャットに基づいて ChatGPT が記憶しているすべてが含まれているわけではありません」と明記されており、「ChatGPT が何かを記憶しているかどうかを知りたい場合は、チャットで直接聞いてください」という実用的な診断方法が付け加えられています。
また、保存されているのはあなたの文章そのものではありません。 ChatGPT のメモリは「過去のチャットからのコンテキストを継続的に更新・統合したもの」と説明されています。これはパーソナライズには適していますが、正確な情報に対しては損失が生じます。方向性は合っているものの、すべてのルールの背後にある理由が抜け落ちている段落が見つかることを覚悟してください。つまり、移行作業の一部は書き直しの作業になります。
明示的な指示は、比較的簡単に移行できます。 カスタム指示(Custom Instructions)に記述した内容は、あなた自身が作成したテキストであるため、そのまま綺麗に移行できます。OpenAI 自身のガイドラインでも、明示的な情報についてはそこを指し示しています。「明示的な情報や指示については、カスタム指示に追加できます。」
Zed 側には3つの受け皿があり、作業を始める前にこれを理解しておく価値があります。
- 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: メモリを取り出し、3つに分類する
設定 → パーソナライズ → メモリを開き、概要を確認します。次に、チャットで ChatGPT に対し、あなたの仕事の進め方、使用している技術スタック、規約について覚えているすべてを、リスト形式でそのまま書き出すよう指示します。概要は不完全であることがドキュメントに明記されているため、表現を変えて2回質問してください。出力された内容を、カスタム指示のテキストと一緒に作業用のスクラッチファイルに貼り付けます。
次に、すべての行を正確に3つの山のいずれかに分類します。これが最大のコツであり、Zed の3つの受け皿に対応しています。
山 A — 常に、どこでも当てはまること。 「簡潔に回答すること」「型推論よりも明示的な型定義を好むこと」「すでに依存関係に含まれていることを確認せずにライブラリを提案しないこと」。短く、少なく、個人的な内容です。これらは個人の指示(personal instructions)になります。
山 B — このプロジェクトにおいて常に当てはまること。 「API は camelCase を返し、DB は snake_case であること」「マイグレーションはデプロイ前に実行し、デプロイ後には絶対に実行しないこと」「legacy/ ディレクトリは凍結されていること」。これらはプロジェクトの指示(project instructions)になり、コミットされるため、チームメンバーにも共有されます。
山 C — あなたが呼び出す手順。 「PR(プルリクエスト)の説明の書き方」「新しいエンドポイントを追加する手順」「スキーママイグレーションの実行方法」。これらは、多くの人が誤って常時有効なファイルに詰め込みがちな内容ですが、これこそが Skills が存在する理由です。必要なときにだけ読み込まれ、名前で呼び出され、関係のないときはコストがかかりません。
分類する際の2つのルール。理由が伴うもの(何かが壊れたために存在する制約など)は、統合の過程で理由が削ぎ落とされているため、理由を書き戻してください。そして、山のサイズには容赦なく厳しくしてください。ChatGPT があなたについて記憶していることのほとんどは、使い捨ての好みに過ぎず、自然と再生成されます。すべてをそのままコピーすると、本当に重要なことが薄れてしまいます。
ステップ 2: 各山を Zed が実際に読み込む場所に配置する
山 A → `~/.config/zed/AGENTS.md`。 本当に短くまとめてください。マシン上のすべてのプロジェクトで読み込まれるため、すべての行が実際のプロンプト要求と競合します。テキストが1画面を超える場合は、山 C に移動することを検討してください。
山 B → プロジェクトの指示ファイル。 リポジトリにすでに優先順位の高いファイル名が存在しない限り、リポジトリのルートにある AGENTS.md を使用してください。Zed はリストの 最初の一致 を採用するため、リポジトリに残っている古い .cursorrules が、今書いた AGENTS.md よりも優先されてしまいます。混乱する前に、不要なファイルが残っていないか確認してください。作成したファイルはコミットしてください。また、ドキュメントに記載されている優先順位に注意してください。プロジェクトの指示は、競合する場合、個人のファイルを上書きします。
山 C → Skills。 /create-skill を実行してエージェントに案内してもらうか、エージェントパネルから Skills Manager を使用します。各スキルは SKILL.md を含むフォルダです。どこでも使えるようにするには ~/.agents/skills/ に、プロジェクト限定にするには .agents/skills/ に配置します。説明文(description)は慎重に記述してください。エージェントがそのスキルを読み込むべきかどうかを判断するために使用されます。スキルを「要求されたときのみ」使用したい場合は、disable-model-invocation を有効にして、モデルによる自動選択ではなく、ユーザーが手動で呼び出せるようにします。
次に MCP を連携します。 設定 → AI → MCP サーバー → サーバーの追加(ローカルまたはリモート)を行うと、設定ファイルの context_servers の下にエントリが書き込まれます。これが、Zed を単なる「指示ファイルを持つエディタ」から、ライブストアを読み込めるシステムへと進化させるインターフェースです。これについては次のセクションで説明します。
設定時のドキュメントからの注意点:外部エージェント(External Agents)やターミナルスレッド(Terminal Threads)を使用する場合、それらは独自のネイティブ指示ファイルを直接読み込む可能性があり、「Zed の指示ローダーがそれらのエージェントを制御しているとは仮定しないでください」。ターミナルスレッドで実行されている Claude Code CLI は、Zed が渡したからではなく、ネイティブに CLAUDE.md を読み込みます。
より良い方法:アシスタントを問わない単一のメモリレイヤー
一歩引いて、今行った作業を振り返ってみてください。チャットウィンドウから統合された記憶を手動でコピーし、抜け落ちていた理由を書き直し、その結果を Zed だけが読み込む3つのファイル場所に分割しました。これは改善(ファイル化、バージョン管理、明示的なスコープ制限)ではありますが、次にツールを変更したときにまた同じことを繰り返すことになります。
永続的なアプローチは、ルールと知識を分離することです。Instructions と Skills は、Zed に何をすべきかを指示するためのものです。その背後にある知識(決定事項、インシデント、規約、ドキュメント)は、執筆や思考のために現在も使用している ChatGPT を含め、あらゆるアシスタントが読み込める場所に置くべきです。
MemoryLake は、そのためのメモリレイヤーです。ドキュメント、制約、決定事項を1つのストアに集約し、Zed からは MCP 経由で、Claude や Codex からは直接、ChatGPT からは API 経由でアクセスできます。指示ファイルはすべてを保持する必要がなくなるため、小さく保つことができます。
ステップ 1: API キーを作成する
キーを生成し、約30秒で最初のリクエストを送信できます。チャットウィンドウに直接貼り付けるのではなく、環境変数やシークレットマネージャーに保存してください。

ステップ 2: 最初のメモリをアップロードする
ルールの背後にあるドキュメント、画像、ファイルを投入します。アーキテクチャの決定事項とその日付、インシデントの報告書、API 規約、スタイルガイド、スキーマなどです。要約ではなく、ソースそのものをアップロードしてください。要約によって失われたものを復元するために1時間を費やしたばかりなのですから、また新しい要約を作り始める必要はありません。

ステップ 3: AI とエージェントを接続する
Claude、Codex、OpenClaw、その他の AI エージェントに、MCP または API 経由でメモリへのアクセスを許可します。Zed では、設定 → AI → MCP サーバーの下にサーバーを追加して context_servers に登録することで、すべてのスレッドが同じストアにクエリを実行できるようになります。ChatGPT には MCP クライアントがないため、API 経由で必要な情報を取得し、プロンプトやモデルを呼び出すワークフローに注入します。

実務における変化
最初の違いは、常時有効なファイルが小さく保たれることです。指示ファイルが500行にもなってしまう理由は、詳細を記述する場所が他にないからです。検索(retrieval)が利用可能であれば、個人の指示にはいくつかの強い好みを記述し、プロジェクトの指示には回答を誤らせないための制約のみを記述すればよくなります。
2つ目は、新しいスレッドの作成がコスト(負担)にならなくなることです。Zed のスレッドは設計上独立している(独自のコンテキストウィンドウ、独自の履歴を持つ)ため、継続性は過去の発言ではなく、何が読み込まれているかによってもたらされます。読み込みコストが低ければこれはクリーンなモデルですが、すべてのスレッドをゼロから開始するエージェントにおいて、すべてを再説明しなければならない場合に負担に感じるのと同じ理由です。
3つ目は、ChatGPT と Zed が異なる知識を持つことがなくなる点です。現在、あなたが計画を立てるために使用するアシスタントと、構築に使用するエディタは、別々の会話から個別に学習しています。同じストアを読み込むことで、ツール間で1つのメモリを共有することが、コピー作業ではなく単なる設定作業になります。
そして、これはそれぞれのツールがネイティブに行うことと調和します。ChatGPT のメモリは、アカウントごとであることや必ずしも期待通りに動作しない場合があることなどの制限を含め、パーソナライズを続けます。Zed は指示や Skills の読み込みを続けます。どちらも唯一の記録保持場所である必要はありません。
Zed にメモリを移行するためのベストプラクティス
トピックではなくコストで分類する
各項目に対する問いは「これは何に関するものか?」ではなく、「これは毎回コンテキストに含めるべきか?」です。すべての回答に影響を与える少数の項目は常時有効にし、手順は Skills に、ロングテールな情報は検索に任せます。これを誤って常時有効な指示に偏らせてしまうことが、最もよくある、そして最もコストのかかる間違いです。
Zed が実際に読み込む指示ファイルを確認する
Zed はリストから 最初 に一致したファイルを使用します。.rules、.cursorrules、.windsurfrules、.clinerules はすべて AGENTS.md よりも優先順位が高くなっています。以前のエディタの残骸ファイルがあると、それが静かに優先されてしまいます。書き始める前に確認してください。
スキルの説明は自分向けではなくモデル向けに書く
エージェントは説明文に基づいてカタログからスキルを選択します。「マイグレーションの手順」は悪い説明文です。「マイグレーションとデプロイの順序を含め、データベースの列を安全に追加または変更する手順」が良い説明文です。手動で選択したい場合は、disable-model-invocation を設定し、名前で呼び出してください。
プロジェクトの指示とプロジェクトのスキルをコミットする
AGENTS.md と .agents/skills/ はどちらもリポジトリ内に存在するため、チームメンバーや他のマシンにも引き継がれます。個人の指示やグローバルなスキルはあなただけのものです。どちらに属するかを判断することが、チームの標準と個人の習慣を分ける境界線になります。
アクセス権があるうちに ChatGPT のエクスポートを行う
メモリの概要を読み、覚えていることを書き出すよう指示する作業は20分ほどで完了しますが、これは有効なアカウントの内部からしか実行できません。この移行における他のすべての作業は再現可能ですが、これだけは再現できません。
指示ファイルに強制力を期待しない
指示ファイルはコンテキストを追加するものであり、動作を保証するものではありません。フォーマット、禁止されたインポート、保護されたパスなどは、どのスレッドが何を読み込んだかに関係なく適用されるフォーマッタ、リンター、CI に任せてください。指示ファイルには、なぜそのルールが存在するのかという理由を説明させましょう。
結論
ChatGPT のメモリを Zed に移行する作業は手動で行う必要があります。ChatGPT にはエクスポート機能がなく、そのメモリはログではなく統合された要約だからです。概要を確認し、チャットで覚えていることを書き出すよう指示し、圧縮の過程で削ぎ落とされた理由を書き直す必要があることを受け入れてください。
そして、回収した内容を Zed の3つの受け皿に分類します。常に正しい少数の内容については ~/.config/zed/AGENTS.md の個人指示に、チームで共有する制約についてはリポジトリ内のプロジェクト指示に、必要に応じて呼び出す手順については ~/.agents/skills/ または .agents/skills/ の Skills に配置します。Zed が最初に一致させる指示ファイル名を確認し、常時有効なファイルは短く保ち、設定ファイルの context_servers の下に MCP を連携して、ルールの背後にある知識を Zed と ChatGPT の両方が読み込める単一のストアに保存します。そうすれば、次にエディタを変更するときは、考古学のプロジェクトではなく、単なる設定ファイルの変更で済みます。