MemoryLake
すべての記事に戻る
Tutorial2026年9月1日·12 分で読了

Devin DesktopからCodexへコンテキストを失わずに移行する方法 (2026)

ほとんどの移行ガイドは、現在持っているものの棚卸しから始まります。しかし、このガイドはDevin Desktop自身のメモリドキュメントの最上部に印刷されている警告から始めます。なぜなら、その警告によって棚卸しすべき内容自体が変わってしまうからです。

「メモリはレガシーなCascadeエージェントにのみ適用されます。新しいタブのデフォルトエージェントであるDevin Localエージェントは、メモリを永続化しません。」

最近Devin Desktopで新しいタブを開いたことがあるなら、あなたはメモリを書き込まないエージェントを使用していたことになります。何ヶ月もかけて構築してきたと思っているメモリシステムはCascadeのものであり、そのCascadeは上記の文でレガシーと表現されています。Devinのドキュメントには、移行経路さえ明記されています。「依存しているメモリは、Devin: Open Cascade Migration Wizardコマンドを使用してスキルに移行してください。」

これにより、移行全体の前提が変わります。Codexに何を移行するかを問う前に、率直な最初の疑問は「手元に何が残っているか」です。そして良いニュースは、最も価値のある単一のアーティファクトが、変換なしでそのまま移行できるということです。

目的地がCodexではなくClaude Codeである場合は、migrating from Devin to Claude Codeでカバーされています。まだWindsurfの名前変更自体に対処している場合は、migrating from Windsurf to Devin Desktopを参照してください。このページでは、Devin DesktopからCodexへの移行をレイヤーごとに解説します。

実際に移行されるもの

Devin Desktopは2つのメカニズムでコンテキストを保持しており、そのドキュメントはどちらを信頼すべきかについて非常に率直です。「Devin Desktopにはこのための2つのメカニズムがあります。Cascadeによって自動的に生成されるMemories(メモリ)と、ユーザーがグローバル、ワークスペース、またはシステムレベルで手動で定義するRules(ルール)です。」

AGENTS.mdは無料で移行できます。これが最大のトピックです。 Devinはこれを第一級のルールソースとして扱います。AGENTS.mdは「自動的に検出」され、「.devin/rules/(およびレガシーな.windsurf/rules/)を動かすのと同じルールエンジンに投入されます。ただし、フロントマターの代わりにファイルの場所から有効化モードが推測されます。」ルートレベルのファイルは常にオンになり、サブディレクトリのファイルは「<directory>/**という自動生成されたパターンを持つ」globルールになります。そして、現在のデフォルトエージェントを使用しているすべての人にとって重要なことに、「Devin LocalエージェントはDevin CLIルールシステムを介してAGENTS.mdを読み取ります。」

Codexも同じファイル名を読み取ります。そのドキュメントは「Codexは作業を行う前にAGENTS.mdファイルを読み取ります」という一文から始まります。つまり、1つのファイルがレガシーなCascade、現在のDevin Localエージェント、およびCodexのすべてによって読み取られます。変換する必要はありません。

ルールは移行されますが、有効化モデルは移行されません。 Devinのワークスペースルールは、フロントマターのtriggerフィールドを通じてモードを宣言します。これには4つの値があり、それぞれコンテキストコストが異なります。always_onは「すべてのメッセージのシステムプロンプトに完全なルール内容」を配置します。model_decisionは「システムプロンプトにdescriptionのみ」を表示し、Cascadeが関連性があると判断したときに本文を読み込みます。globは「Cascadeがglobsパターンに一致するファイルを読み取りまたは編集するとき」にルールを適用します。manualは「Cascadeの入力ボックスで@rule-nameと入力して有効化する」まで、ルールをプロンプトから除外します。

Codexには、これに相当する配電盤のような仕組みはありません。実行ごとに1つの指示チェーンを構築します。グローバルスコープではAGENTS.override.mdまたはAGENTS.mdを読み取り、「Codexはこのレベルで最初の空でないファイルのみを使用します。」プロジェクトスコープでは「現在の作業ディレクトリまで順に下り」、各ディレクトリをチェックして「ディレクトリごとに最大1つのファイル」を含めます。その後、それらをマージします。「Codexはルートから順にファイルを連結し、空行で結合します。現在のディレクトリに近いファイルほど、結合されたプロンプトの後半に表示されるため、以前のガイダンスを上書きします。」

場所がフロントマターに取って代わります。これがこの移行の実際の作業であり、そこには上限があります。「Codexは空のファイルをスキップし、結合されたサイズがproject_doc_max_bytes(デフォルトは32 KiB)で定義された制限に達すると、ファイルの追加を停止します。」

メモリは移行されず、すでに孤立していました。 Cascadeのメモリは「作成されたワークスペースに関連付けられ、~/.codeium/windsurf/memories/にローカルに保存されます。」これには1つの文で2つの制限が示されています。「あるワークスペースで生成されたメモリは別のワークスペースでは利用できず、リポジトリにコミットされることもありません。」Devinは率直に「自動生成されたメモリはあなたのマシン上にのみ存在します」と付け加えています。

頼りにできるインポーターもありません。Codexのインポートフローは、サポートされているソースを明示しています。デスクトップアプリは「Claude Code、Claude Cowork、またはCursorからインポート可能」であり、CLIは「Claude CodeまたはCursorからインポート可能」です。Devinはどちらのリストにも含まれていません。ボタンを探し始める前に、このことを知っておく価値があります。もしこれらから移行する場合は、What Codex can import from Cursor and Claudeでそのフローをカバーしています。

手動移行の手順

ステップ1:どのエージェントがコンテキストを読み取っていたかを確認し、棚卸しを行う

CascadeのCustomizations(カスタマイズ)パネル、またはDevinのSettings(設定)を開き、実際に何があるかを確認します。Devinのドキュメントには両方のインターフェースが説明されています。メモリとルールは「Cascadeの右上スライダーメニューにあるCustomizationsアイコンをクリックするか、'Devin - Settings'を介して、いつでもアクセスおよび設定できます。」

次に、ルールが予想以上に多くの場所に存在するため、以下の4つの場所を確認します。

  • ~/.codeium/windsurf/memories/global_rules.md — 「すべてのワークスペースに適用される単一のファイル。常にオン。6,000文字に制限。」パスに注意してください。グローバルなルールファイルがメモリディレクトリ内にあるため、多くの人がグローバルルールを持っていないと誤解する原因になっています。
  • ワークスペース内の.devin/rules/*.md(「推奨」)。フォールバックとして.windsurf/rules/*.mdがあり、「1ファイルあたり12,000文字に制限」されています。
  • ワークスペースのルート。「ワークスペースルートにあるレガシーな単一ファイル.windsurfrulesも引き続き読み取られます。」
  • /etc/devin/rules/などのパス下にあるエンタープライズ管理のシステムルール。「IT部門によってデプロイされ、エンドユーザーは読み取り専用」であり、「ワークスペースおよびグローバルルールとマージされ、ユーザー定義のルールを上書きすることなくCascadeに追加のコンテキストを提供します。」これらが存在する場合、あなたが移動させるものではありません。デプロイの管理者に報告してください。

もう1つ確認すべき検出の癖があります。Devinは「親ディレクトリのルールを見つけるためにgitルートディレクトリまで検索」しますが、「新しいルールを作成すると、必ずしもgitルートではなく、現在のワークスペースの.devin/rulesディレクトリに保存されます。」モノレポでは、思いもよらないサブディレクトリにルールが分散している可能性があります。

メモリについては、内容を読み、残す価値のあるものを今すぐテキストにコピーしてください。エクスポート機能はなく、リポジトリにも含まれていません。所属するワークスペースが変更されると、関連付けが失われます。

ステップ2:4つの有効化モードを1つの連結されたチェーンにフラット化する

保持するすべてのルールをtrigger値でソートし、各モードにデスティネーション(移行先)を割り当てます。

always_onはルートのAGENTS.mdに配置します。どちらのツールもルートレベルのファイルを無条件として扱うため、これは単純なコピーです。合計サイズに注意してください。Devinはグローバルで6,000文字、ワークスペースファイルごとに12,000文字を許可していましたが、Codexは合計32 KiBで追加を停止します。上限に達したときのガイダンスは「制限を引き上げるか、ネストされたディレクトリに指示を分割する」ことです。

globはディレクトリ配置になります。src/**/*.tsにスコープされたルールは、そのディレクトリ内のAGENTS.mdになり、作業ディレクトリがそのディレクトリ以下にあるときにCodexによって取得されます。DevinはすでにサブディレクトリのAGENTS.mdファイルを、自動生成された<directory>/**パターンを持つglobとして扱っているため、このモードが最もきれいに変換されます。

model_decisionには直接の同等機能がありません。ここは単に翻訳するだけでなく、考えるべき唯一の場所です。このルールはプロンプト内では説明としてのみ存在し、関連性がある場合にのみ本文が引き込まれていました。Codexでは選択が必要です。常に適用するほど重要であれば、最も近いAGENTS.mdで無条件に昇格させるか、指示から完全に除外して「スキル」として表現します。これは、Devin自身の移行ウィザードがCascadeメモリに対して指し示している方向でもあります。すべてを昇格させるのはよくある間違いです。たまにしか重要でない素材で32 KiBの上限に達する最も早い方法になってしまいます。指示とオンデマンド機能の違いに馴染みがない場合は、why agent skills aren't memoryがその境界線を示しています。

manualルールは、意図的に呼び出すものでした。これらは常に読み込まれる指示チェーンにはまったく属しません。貼り付けるドキュメントとして保持するか、スキルとして保持してください。

最後に、Codexが意図する通りにAGENTS.override.mdを使用します。「ベースファイルを削除せずに一時的なグローバル上書きが必要な場合は、~/.codex/AGENTS.override.mdを使用してください。」これは、リポジトリに個人の好みを漏らすことなく、かつてglobal_rules.mdに存在していた個人の好みを配置するのに適しています。

完了とする前の最後のチェックです。Codex自身のドキュメントも、Devinとほぼ同じ言葉で同じ境界線を描いています。「必要なチームガイダンスはAGENTS.mdまたはチェックインされたドキュメントに保管してください。メモリは役立つ想起レイヤーとして扱い、常に適用しなければならないルールの唯一のソースとはしないでください。」ルールが常に保持されるべきであれば、どちらのツールの生成されたメモリでもなく、ファイルに属します。Codexが配置されたファイルを無視しているように見える場合は、why Codex skips AGENTS.md rulesが一般的な原因をカバーしています。

より良い方法:学習された半分をどちらのエージェントも所有しない場所に置く

ステップ1と2は、かつてファイルであったすべてのものを移動します。移動できないのは、両方のベンダーが依存しないように言っているレイヤーです(そして、実際に両者ともそう言っています)。Devinの推奨事項は、「自動生成されたMemoriesに依存するのではなく、ルールとして書き込むか、リポジトリのAGENTS.mdに追加すること」です。なぜなら「ルールはバージョン管理され、チームと共有可能で、有効化を明示的に制御できるから」です。一方、Codexのローカルメモリは「デフォルトでオフ」であり、~/.codex/memories/に「生成された状態」として存在し、「Codexのレート制限の残り割合が設定されたしきい値を下回っている場合」はバックグラウンドパスを完全にスキップします。つまり、最も忙しいセッションほど記録されにくくなります。

したがって、両者において蓄積された理解は、マシンローカルであるか、生成されたものであるか、あるいは信頼できる情報源として明示的に推奨されていないかのいずれかです。指示はリポジトリに属します。学習された半分は、どちらのエディタも制御しない場所に属します。

MemoryLakeはその場所です。あなたが所有するメモリレイヤーであり、1つのツールのプライベートディレクトリを介するのではなく、APIを介して実行している任意のエージェントによって読み取られます。3つのステップです。

ステップ1:APIキーを作成する

サインインし、ワークスペースの設定からAPIキーを作成します。これはエディタのものではなくあなたのものなので、将来の切り替えによって無効になることはありません。

Devin DesktopからCodexへの移行時にMemoryLake APIキーを作成する
Devin DesktopからCodexへの移行時にMemoryLake APIキーを作成する

ステップ2:最初のメモリをアップロードする

Cascadeのメモリからコピーしたものから始め、次にルールファイルには決して収まらなかった素材を追加します。チームがすでに試して却下したアプローチ、モジュールがそのように構成されている理由、繰り返し発生するレビューコメント、ここに1年いる人なら誰でも明らかな制約などです。マルチモーダルなファイルを含め、ファイルはそのまま取り込めるため、アーキテクチャ図や規約をエンコードしたスプレッドシートを直接入れることができます。

32 KiBの指示チェーンの代わりにMemoryLakeにルールの推論を書き込む
32 KiBの指示チェーンの代わりにMemoryLakeにルールの推論を書き込む

ステップ3:AIとエージェントを接続する

Codexを接続し、まだ使用している場合はDevin Desktopも接続したままにします。それ以降、学習されたレイヤーは1つの場所から読み取られるため、移行期間中に両方のツールを実行しても、2つのコンテキストセットを維持する必要はなくなります。

Codex、Devin Desktop、その他のエージェントを1つの共有メモリレイヤーに接続する
Codex、Devin Desktop、その他のエージェントを1つの共有メモリレイヤーに接続する

3つの制限事項。MemoryLakeは~/.codeium/windsurf/memories/~/.codex/memories/の読み書きを行いません。これらは各ツールの生成された状態であり、これこそが手動移行のステップ1が手動である理由です。また、Codexが指示チェーンを構築する方法や、32 KiBの上限がどのように適用されるかを変えるものではありません。そして、AGENTS.mdに代わるものでもありません。全員に適用されるべきルールは、チームメイトやコードレビューが確認できるリポジトリに属します。

実務における変化

即座に、手順が変わります。どのエージェントがコンテキストを読み取っていたかを監査し、AGENTS.mdをそのまま移動し、すべてを1つのルートファイルにダンプするのではなく、4つのトリガーモードを意図的にフラット化し、学習された半分を両方のツールの外部に保持します。

数ヶ月にわたり、次の移行コストが変わります。この移行には珍しい特徴があります。移行元のツールはすでにファイルに移行するために独自のメモリシステムを非推奨にしており、移行先のツールはローカルメモリをオフにした状態で出荷し、それらを信頼できるものとして扱わないよう警告しています。2つの独立したベンダーが同じ結論に達したことは、永続的な知識がどこに存在するべきかについての非常に強いシグナルであり、どちらの答えも「エディタの内部」ではありません。

また、重複期間中のマルチツールコストも排除されます。この期間は、ほとんどのチームにとって計画よりも長くなります。Devinのメモリはワークスペースごと、マシンごとです。Codexのメモリはマシンごとで、デフォルトでオフです。外部レイヤーなしで両方を実行することは、同じコンテキストを2つの場所で再学習させることを意味し、これはwhat coding agents actually readで説明されているパターンです。

切り替え後のベストプラクティス

  • 1つのルートAGENTS.mdを保持し、具体性をツリーの下方に押し下げます。 Codexはディレクトリごとに最大1つのファイルを含め、深いファイルが浅いファイルを上書きできるようにするため、ツリーが現在のスコープメカニズムになります。
  • 合計32 KiBの上限に注意してください。 Codexは上限に達すると追加を停止し、エラーではなくサイレントに切り捨てられます。
  • すべてのmodel_decisionルールを昇格させて移植しないでください。 そのモードはコンテキストを安価に保つために存在していました。すべてを昇格させると、引き継いだばかりの予算を使い果たしてしまいます。
  • 新しいチェーンを検証するまで、.windsurfrulesはそのままにしておきます。 Devinは引き続きそれを読み取るため、重複期間中の有効なフォールバックになりますが、長期的な保管場所としては扱わないでください。
  • ルールをトピックごとに分割し、1つの懸念事項につき1つのファイルにします。 ルールを「シンプル、簡潔、具体的」に保つというDevinのガイダンスはCodexにも同様に適用され、トピックサイズのファイルこそがディレクトリベースのスコープモデルを判読しやすくするものです。
  • Codex'sのローカルメモリについては慎重に決定してください。 これらはデフォルトでオフです。オンにする場合は、ドキュメントに記載されている動作を思い出してください。生成された状態であり、手動編集用ではなく、短いセッションではスキップされ、レート制限の余裕が少ない場合は完全にスキップされます。関連する症状はwhy Codex forgets project contextでカバーされています。

結論

この移行における驚きは、Codex側にはありません。Devin Desktopのデフォルトエージェントがメモリを永続化しないことであり、これは人々が最も失うことを恐れているレイヤーが、すでにループから外れていた可能性があることを意味します。それが確定すれば、残りは機械的です。AGENTS.mdはそのまま移動し、ワークスペースルールは4つの有効化モードからバイト制限のあるディレクトリツリーにフラット化され、メモリは手動で読み出されます。他のツールが代わりに読み取ってくれることはないからです。

適切に行う価値があるのは最後の部分です。両方のベンダーは、独自の生成されたメモリから離れ、チェックインされたファイルを指し示しており、ファイルこそがルールに適した場所です。ルールではなく知識であるすべてのものについて、永続的な答えは、今期使用しているエディタよりも長生きするレイヤーです。

よくある質問

Devin Desktopは現在もメモリをサポートしていますか?

レガシーなCascadeエージェントについては、はい。ドキュメントには「メモリはレガシーなCascadeエージェントにのみ適用されます」および「新しいタブのデフォルトエージェントであるDevin Localエージェントはメモリを永続化しません」と記載されており、依存しているメモリをスキルに移行するための移行ウィザードが提供されています。どちらの動作が表示されるかは、タブが実行しているエージェントによって異なります。

CodexはDevin Desktopの設定を自動的にインポートできますか?

いいえ。Codexのインポートフローは、そのソースを明示的にリストしています。デスクトップアプリは「Claude Code、Claude Cowork、またはCursorからインポート可能」であり、CLIは「Claude CodeまたはCursorからインポート可能」です。Devin Desktopはそれらに含まれていないため、この移行は手動で行う必要があります。

Cascadeのメモリはどこに保存されていますか?エクスポートは可能ですか?

それらは「~/.codeium/windsurf/memories/にローカルに保存」され、作成されたワークスペースにスコープされ、「リポジトリにはコミットされません。」エクスポート機能はありません。Customizations(カスタマイズ)パネルで読み取り、重要なものをコピーしてください。

Codex用にAGENTS.mdを書き直す必要がありますか?

いいえ。DevinはAGENTS.mdを検出し、.devin/rules/と同じルールエンジンに投入します。Devin LocalエージェントはCLIルールシステムを介してそれを読み取り、Codexは「作業を行う前にAGENTS.mdファイルを読み取ります。」異なるのはスコープです。Devinはファイルの場所から有効化を推測し、Codexはディレクトリごとに最大1つのファイルを使用してルートから順に連結します。

How do I convert a rule that used model_decision?

それが実際に何であったかを決定してください。ガイダンスを常に適用する必要がある場合は、最も近いAGENTS.mdに移動します。恒久的なルールではなく、たまに必要な機能であった場合は、代わりにスキルとして表現します。すべてのmodel_decisionルールを常にオン(always-on)に昇格させると、プロジェクトがCodexの32 KiBの切り捨て制限に達する原因になります。

グローバルルールファイルはどうなりますか?

~/.codeium/windsurf/memories/global_rules.mdは、6,000文字に制限された単一の常にオンのファイルでした。これに最も近いCodexの同等物は、CodexのホームディレクトリにあるグローバルなAGENTS.mdであり、「ベースファイルを削除せずに一時的なグローバル上書きが必要な場合」はAGENTS.override.mdを使用できます。個人の好みはリポジトリファイルではなく、そこに保持してください。