AB
AiBoss
チュートリアル

codex-plugin-ccチュートリアル - Claude CodeをCodexに統合するためのブリッジングプラグイン

今日は、2つの強力なツールを組み合わせるのに最適な方法をご紹介します。Claude CodeとCodexのどちらが優れているかという議論は常にありますが、私たちは皆大人です。なぜどちらかを選ぶ必要があるのでしょうか?私は両方欲しいと思っています。

今日は、二刀流に適した技をご紹介します。

存在するClaude CodeとCodexのどちらが良いかという議論は常にありますが、私たちは皆大人です。なぜどちらかを選ばなければならないのでしょうか?私は両方欲しいです。

この論争を解決するためにGitHubプロジェクトcodex-plugin-ccが作成されました。これをインストールすると、以下のことが可能になります... Claude CodexはCodeの内部で動作しています。

codex-plugin-cc は次のように理解できます:AI コーデックスアクセス Claude Code用のブリッジングプラグイン。

プロジェクトのアドレス:https://github.com/openai/codex-plugin-cc

使用中 Claude Codeはメインウィンドウとして機能し、Codexは2番目のエンコードプロキシとして機能します。 Claude 呼び出し機能は、コードレビュー、課題レビュー、タスク委任、セッション移行などに使用されます。

このプラグインは、お使いのマシン上でグローバルなCodexコマンド、具体的にはローカルのCodex CLIとCodexアプリサーバーを呼び出します。

主要機能

/codex:review: Codexにコードレビューを実行させます。

最も一般的な審査プロセスは、次の3つのステップで構成されます。

/codex:review --background /codex:status /codex:result

最初のコマンドはCodexコードレビューを開始し、バックグラウンドで実行します。

`/codex:status` は、レビューの進捗状況を確認するために使用されます。

タスクが完了したら、/codex:result を使用して結果を表示します。

現在のブランチでメインブランチに対して行われたすべての変更を確認するには、次のように入力します。

/codex:review --base main --background

  • /codex:adversarial-review: Codex チャレンジソリューションを有効にします

これは、解決策が実現可能かどうかを検証するのに適しています。Codexは、設計上のトレードオフ、隠れた前提条件、境界条件、および故障モードの検証に重点を置きます。

  • /codex:rescue: 調査または修正のためにタスクをCodexに引き渡します。

Codexに特定の問題を割り当ててください。ビルドの失敗、テストの失敗、複雑なバグ、古いタスクの継続など、トラブルシューティング作業に適しています。

  •  /codex:transfer: 転送 Claude セッションはCodexで継続されます。

すでに適しています Claude コードセクションでは多くの背景説明をしてきましたので、後ほどCodexアプリまたはCodex CLIに切り替えて続きをしたいと思います。

インストールは非常に簡単です単純全員優先 Claude コード入力ボックスに以下を入力してください。

/plugin marketplace add

「マーケットプレイスを追加」ポップアップが表示されたら、以下を入力してください。

openai/codex-plugin-cc

追加が成功したら、 Claude コード入力ボックスに以下を入力してください。

/reload-plugins

最後に、以下を入力してください。

/codex:setup

症例1 コードレビュー

まず Claude コード: 新しい機能を作成します:

プロンプトワード現在のログインページに以下の機能を追加してください。認証に3回連続で失敗した場合、ログインボタンを30秒間無効にし、残り秒数を表示します。失敗回数には、ユーザー名またはパスワードの誤りのみをカウントし、ネットワークエラーやサーバーエラーはカウントしないでください。さらなるテストが必要です。必要なファイルのみを修正し、まだ送信しないでください。

/codex:review --background

コーデックスは審査中に2つの問題点を特定した。

1. claude/settings.local.json の権限の問題

`.claude/settings.local.json:11Bash(node *)` という行は、承認なしで任意の Node スクリプトを実行する権限を与えます。

2. ログインロックのカウントダウンに関する問題

src/components/LoginForm.tsxの14行目では、3回目の認証失敗が発生する前にページがしばらく開いた状態になっています。現在の値は、マウント時の値を保持したままです。レンダリングが初めてロックされたとき、カウントダウンが実際よりも長く表示される可能性があります。

私たちは Claude コードの改訂を続ける:

プロンプトワード

Codexのレビューに基づいて、以下の問題を修正してください。必要なファイルのみを変更し、テストを追加または調整し、修正後、`npm test`と`npm run build`を実行してください。ただし、コミットはしないでください。

この機能変更申請の一部として、`.claude/settings.local.json` を送信しないでください。ローカルの権限設定のみに関するものであれば、このタスクを実行する前の状態にファイルを復元してください。

src/components/LoginForm.tsx のロックカウントダウンの問題を修正しました。3 回目の認証が失敗し、lockoutUntil が設定されている場合、ページがマウントされたときに古い now 値を使用するのではなく、ロック開始後の最初のレンダリングカウントダウンが 30 秒から開始されるように、now を同期的に更新する必要があります。

そしてもう一度見直してみましょう。

コードの修正とレビューを行った結果、最後の認証失敗が3回連続の認証失敗としてカウントされる可能性があることが判明した。

引き続き Claude 改訂されたコード:

プロンプトワード

Codexのレビューに基づいて、以下の問題を修正してください。必要なファイルのみを変更し、テストを追加または調整し、修正後、`npm test`と`npm run build`を実行してください。ただし、コミットはしないでください。

[P2] 認証エラー以外のエラーが発生した場合は、カウンターをリセットする必要があります — src/components/LoginForm.tsx:55

現在のネットワークまたはサーバーエラー分岐では、failCountはリセットされません。認証→認証→ネットワーク→認証というシーケンスでは、4回の認証失敗が連続していないにもかかわらず、誤ってロックアウトがトリガーされます。要件が「3回連続の認証失敗」である場合、連鎖を断ち切るために、認証以外のエラーでもカウンターをリセットする必要があります。

もう一度確認してみましょう。

よし、コードレビュー合格だ!

ケース2の課題解決

では、Claude ログインページに「ユーザー名を記憶する」機能を追加しましょう。

プロンプトワード現在のログインページに「ユーザー名を記憶する」機能を追加します。ユーザーがこのオプションを選択すると、次回ページにアクセスした際にユーザー名が記憶されます。自動最後に正常にログインしたユーザーのユーザー名を入力してください。このオプションのチェックを外すと、保存されているユーザー名がすべて削除されます。localStorageが利用できない可能性を考慮し、追加のテストを実施してください。必要なファイルのみを変更し、まだコミットしないでください。

次に、Codexにその解決策を検証させ、実現可能かどうかを確認させましょう。

/codex:adversarial-review

コーデックスClaude コードの解決策を徹底的に検証した結果、以下の問題点が明らかになった。

  • safeRemoveStorage は削除を処理できませんでした。
  • ユーザー名はlocalStorageに永続的に保存されます。
  • claude/settings.local.json の mixin 機能の変更
  • 初期化中にlocalStorageを2回読み込む
  • safeSetStorage における保存失敗は無視されます。
  • スペースのみで構成されたユーザー名は認証を通過します。
  • キー「saved_username」は汎用的すぎる。
  • removeItem が例外をスローした場合の動作はテストされていません。
  • setItemが保存に失敗した場合にユーザーにフィードバックを提供するかどうかはテストしていません。
  • 「ユーザー名を記憶する + ログイン失敗」がテストされていない場合は、ユーザー名は保存されないはずです。
  • 保存される値が単なる空白である場合、記憶されたユーザー名で初期化してはいけません。
  • `vi.stubGlobal('localStorage', …)` メソッドは各テスト後にクリーンアップを実行しないため、他のテストを汚染する可能性があります。

これらの問題については引き続き議論できます。 Claude コードの改善点:

プロンプトワード

Codexのチャレンジレビュー結果に基づいて、特定された問題を修正してください。必要なファイルのみを変更し、テストを追加または調整し、修正後に`npm test`と`npm run build`を実行してください。ただし、コミットはしないでください。

修正が必要:

  1. この機能の差分には、`.claude/settings.local.json` を含めないでください。ローカルのパーミッションのみが変更された場合は、このファイルをこのタスクを実行する前の状態に戻してください。
  2. 「ユーザー名を記憶する」のチェックを外した際のプライバシー問題を修正しました。safeRemoveStorage は、removeItem の失敗イベントを無視してはいけません。removeItem が失敗した場合、インターフェースは正常にクリアされたかのように見せかけるべきではありません。ユーザーに明確なエラー状態を表示するか、「ユーザー名を記憶する」チェックボックスをオンにしたままにする必要があります。
  3. 保存失敗の問題を修正しました。safeSetStorage は無視されるべきではありません。ユーザーが「ユーザー名を記憶する」にチェックを入れて正常にログインしたにもかかわらず、localStorage.setItem が失敗した場合、ユーザーに表示されるフィードバックが表示されるべきです。
  4. localStorageを初期化する際は、一度だけ読み込みを行い、usernameの初期値とrememberUsernameの状態が同じ読み込み結果から得られるようにして、不整合を回避してください。
  5. メモリに保存されるユーザー名は、トリミングと検証を行う必要があります。空白文字のみを記憶済みのユーザー名として初期化してはなりません。
  6. localStorage のキーを saved_username からアプリケーションの名前空間に変更します。例えば、codex_login_lab.saved_username のように変更します。
  7. 「ユーザー名を記憶する」に有効期限を追加します。例えば、7日間のTTLを設定します。保存時には、{値、有効期限}を書き込みます。読み取り時には、値が期限切れになっている場合は、値をクリアして、値が保存されていなかったものとして扱います。
  8. 補足テストの範囲:

- removeItem が例外をスローした場合の動作

- setItemが失敗した場合にユーザーに表示されるフィードバック

– 「ユーザー名を記憶する」を選択したがログインに失敗した場合、試行したユーザー名を保存しないでください。

localStorageにスペースのみを保存する場合、記憶されたユーザー名で初期化してはいけません。

– localStorage のモック/スタブは、他のテストを汚染しないように、各テストの後にクリーンアップする必要があります。

完全に解決しました。12件の問題すべてが修正されました。

ケース3:問題のある配送

いつ Claude 作成したコードに問題がある場合は、Codexに修正を依頼することもできます。

私たちは Claude この機能を実証するために、コードに小さなバグを作成してください。

プロンプトワードCodexの復旧プロセスをテストするために、現在のログインページに意図的に小さなバグを導入してください。具体的には、ログイン成功後にパスワード入力フィールドがクリアされないようにしてください。ビジネスロジックコードのみを変更し、テストコードは変更しないでください。また、コミットはしないでください。

バグが作成されたので、それを検出するためのテストを追加しましょう。

为"登录成功后清空密码输入框"补一个测试。只加测试,不改业务代码,不要提交。

次に、Codexに修正させましょう。

1 /codex:rescue --background fix the failing test with the smallest safe patch

Codexは適切な最小限の修正を行った。これは素晴らしいことだ。

const result = await login(username.trim(), password); setPassword(''); setSuccessMessage(`欢迎回来,${result.displayName}`);

ケース4 セッション転送

ちょうど今 Claude このコードは多くの機能を備えているため、データ転送に最適です。 Claude コード欄に以下を入力してください。

/codex:transfer

これによりセッションIDが取得され、それを使ってCodexで直接会話を続けることができます。PowerShellで、次のように入力します。

codex resume 019f402e-3ff0-7d42-975d-c88c8bf1e45f

ご覧のとおり、私たちは Claude Codeからのすべての会話が送信されたので、Codexを使用してこのプロジェクトを継続できます。

AI プログラミングは、オールインワンツールに収束するものではない。

実際の開発は、レビュー、修正、デプロイといったビジネスプロセスに似ており、各ステップは異なる用途に適している可能性があるからです。 AI

GitLab 2026 AI 実績報告:組織の91%が2つ以上のツールを同時に使用している。 AI エンコードツール:54%が3つ以上使用しています。

これは、問題の本質が、問題が存在するかどうかという点から変化したことを示している。 AI 問題は、これらのツールを組み合わせて使用できるかどうかだ。

Claude CodeとCodexを一緒に使うのは、スキルをひけらかすためではなく、... AI 書き終えたら、また別の… AI 一度見直してください。

codex-plugin-cc させてClaude Codeは主要な対話と実装を担い、Codexは二人称視点でのレビュー、ソリューションの課題、問題処理、会話の継続を担います。この組み合わせにより、実際の開発現場で発生する多くの隠れたコスト、例えばツールの頻繁な切り替え、コンテキストの繰り返し説明、手動レビュー、テスト失敗後の問題の再配置などを削減できます。

私たちにとって、codex-plugin-cc あなたは、いつでも利用できるコードレビュー担当者として機能します。機能を実装した後、Codexに境界条件、テストのギャップ、潜在的なリスクをレビューしてもらうことで、差分をじっと見つめて自分で問題を探すよりも、問題を発見できる可能性が高くなります。

codex-plugin-cc 開発者に別のツールをインストールさせるのではなく、両者を組み合わせることが重要なのです。 AI プログラミングアシスタントは同じ作業現場に連れてこられた。

未来 AI コードを書くことはますます一般的になるだろう。真に私たちを差別化するのは、そのコードをどのように整理するかである。 AI アシスタント機能により、コードの安定性が向上し、レビューが早期に行われ、納品が迅速化されます。

元のリンク:GitHubではなんと27,000ものスターを獲得した。Claude コードとコーデックスを一緒に使用する