単一の AI エージェントが静かに失敗してしまう仕事のカテゴリーがあります。それは、間違った仮定が数十回の編集にわたって累積してしまう、大規模で多段階のクリーンアップ作業です。私の答えはハイブリッド AI コードレビューです。これは、1 つが構築し、もう 1 つがレビューするという、ループ内で連携する 2 つの異なる最先端モデルによるアプローチです。先週、この手法により、私がコードを 1 行も書かずに、午後だけで messy な SwiftUI プロトタイプを App Store のブロック要因ゼロの状態に持ち込むことができました。
2 つのモデルは、エンジニア役のClaude Opus 4.8とレビュアー役のCodex (GPT-5.5)でした。すべてのタスクを私の AI ブリッジを通じてやり取りさせ、実際のビルドに合格するまで繰り返しました。私の経験では、このハイブリッド AI コードレビューのセットアップは、どちらかのモデルが単独で作業する場合を一貫して上回ります。そして今回の実行は、そのことを最も明確に証明する結果となりました。これがまさにどのように機能したかの詳細です。
雰囲気ではなく計画から始める
エージェントに「これを本番環境対応にして」と指示してはいけません。そうすると、自信満々な nonsense が出来上がってしまいます。
そこで、計画から始めました。Claude にリポジトリ(Kiddays という小規模なメモリ iOS アプリ)をクローンさせ、並列サブエージェントを使ってコードベース*全体*を読み込ませ、本番環境対応の監査レポートを作成させました。その結果、39 の具体的な項目(9 つの重大な App Store ブロック要因と、残りの高・中程度の重要度項目)が挙がりました。各项目には、ファイル名、行番号、工数見積もり、提案された修正が含まれていました。
その監査レポートは `PRODUCTION_READINESS.md` となりました。これは `- [ ]` チェックボックス付きの Markdown チェックリストで、ブロック要因を優先してソートされています。1 つのファイル、それが唯一の真実源です。そこに記載されたすべてのタスクは小さく、具体的で、*検証可能*なものでした。最後の言葉が重要です。チェックボックスにマークを入れて証明できないのであれば、それはタスクではなく単なる願望です。
ハイブリッド AI コードレビューのループ:ステップバイステップ
全体をセルフペースのループ(Claude Code の/loopモード)で実行しました。各イテレーションは 1 つのタスク、または密接に関連するタスクのクラスターを処理し、常に同じリズムに従いました。
5 つのステップのリズム
bash codex exec --sandbox read-only -o /tmp/answer.txt <<'PROMPT' Pair-reviewing a fix for this SwiftUI app. Here are the files... Recommend the idiomatic iOS 17 approach, flag pitfalls, validate the diff. PROMPT
その後、ループは何時間も無人で繰り返し実行されます。ハイブリッド AI コードレビューの真髄は、私が監視せずともこのサイクルが実行される点にあります。各ステップを制限するのは私の注意力ではなく、ビルドの結果です。
2 つのモデルが 1 つに勝る理由
魔法は個々のモデルにあるのではありません。どちらも優れており、以前に 私のコードベースにおいて Claude Opus 4.8 が Codex を上回った方法→ についても執筆しました。魔法は、両者が異なる盲点を持っていること、そしてコードを書いていないレビュアーには diff に対するエゴが投入されていないことにあります。
このセットアップの価値を証明した発見
今回の実行におけるいくつかの実際の瞬間を紹介します。
これが、形式的な承認とレビューの違いです。Codex は物事を反証し、Claude は良い反証を取り入れ、残りを擁護しました。diff は、脳を共有しない 2 つのモデルの境界線で改善されました。これこそが ガバナンスされたエージェントワークフロー→ の背后的な全体的な提案です。構造化されたハンドオフは、1 つのモデルが自分自身と話すことに勝ります。
正直な部分:エージェントはハングするので、ウォッチドッグを構築する
2 回、Codex CLI がハングしました。思考過程中ではなく、バックグラウンドの MCP サーバーが cleanly に閉じなかったシャットダウン時です。プロセスが数分間停止した後、最初のストールを MCP ブートストラップに特定しました。無人ループでは、1 つのハングがすべてを停止させます。
修正策は厳格なウォッチドッグでした。すべての相談ごとにキルタイマーを設け、呼び出しのために MCP を完全に無効化(`-c mcp_servers={}`)し、ハングする要素をなくしました。ループはストールを検知し、ゾンビプロセスを殺し、すでに記述されていた回答を取得して続行しました。「何も止まらない」ことは、自律的な作業における「あれば良いもの」ではなく、ゲームそのものです。
結果
残っているのは、どのモデルもあなたのためにできない仕事だけです。App Store Connect でアプリ内課金商品を作成し、実際のバックエンドを立ち上げ、弁護士にプライバシーポリシーの署名をもらうこと。それぞれがチェックリストに、必要なことが正確にフラグ付けされています。
手法と情報源
これは、私の自身の Kiddays コードベースにおける 1 回の実際の実行に関する firsthand アカウントです。レビュアーは Codex CLI (GPT-5.5) でした。モデル間ハンドオフには、私のオープンソースである ai-collab-bridge スキルを使用しました。iOS 固有の決定は、Apple 自身の StoreKit、SwiftData、およびファイル保護ドキュメントに対してチェックされました。そして、より重要なのは、完了とみなす前に、すべての変更が最初からクリーンな `xcodebuild` によって確認されたことです。私はモデルが主張したことを報告しているのではありません。コンパイルされたものを報告しています。
教訓:アシスタントではなくチーム
ハイブリッド AI コードレビューに依存してきたプロジェクト全体を通じて、鍵となったのは「すべてを行う 1 つのモデルを見つける」ことではありませんでした。それはスタックでした。
コードを書く 1 つのモデルはアシスタントです。しかし、ノーと言ってくれるビルドに対して互いをレビューし合う 2 つのモデルは、チームのように見え始めています。そして今回の実行では、そのチームが私が監視している間に 39 件の本番環境用修正を出荷しました。
