入口・画面・共通メッセージ・Core・Model・Tools の役割を分ける。
「Codex」という一つの箱を開くと、入力を受ける部品、画面を描く部品、モデルとツールをつなぐ部品が見えてきます。今日は関数を深追いせず、どこに何を聞けばよいか分かる地図を作ります。
01|図でつかむ
Core から Model と Tools へ。Protocol は部品間の共通言語で、図の矢印を支える。
02|3つのポイントで理解する
1. CLI は入口、TUI は人との接点
CLI は引数や subcommand を読み、起動先を選びます。TUI は入力欄だけでなく、進行状況・承認・差分・実行結果を表示します。「何を起動するか」と「作業をどう見せるか」を分けて考えます。
2. Core に、画面から独立した処理を集める
Core は Codex の主要な処理を担います。モデル呼び出しや作業状態の管理を画面コードから分けることで、別の UI からも利用しやすくなります。TUI と Core の間にある App Server の接続は Day 16 で詳しく見ます。
3. Protocol は配線の途中に置く装置ではない
UserInput や ThreadId などの型は、部品が同じ意味で情報をやり取りするための約束です。Model は判断を返し、Tools はファイルやプロセスへ働きかけます。図の箱を順番に通るだけでなく、誰がどの型を送受信するかを読みます。
03|ソースで確かめる
以下の検索は Codex リポジトリのルートで実行します。最初に対象 commit を記録し、検索結果から定義と呼び出し元を一つずつ開いてください。
git rev-parse --short HEAD
rg -n "MultitoolCli|AppServerClient|codex_protocol" codex-rs
読む入口: codex-rs/tui/src/lib.rs 。リンク先は照合に使った固定 commit のファイルです。手元の版と異なる場合は、上の検索語から探し直します。
小さく試す
cli/src/main.rs、tui/src/lib.rs、core/README.md、protocol/src/lib.rs を開き、それぞれの責務を一文で書きます。AI に聞いた説明は検索の出発点として使い、実際のファイルで確認します。
04|30秒で復習
- CLI は起動先を選ぶ。TUI は作業を見せる。
- Core は UI から独立した中核を担う。
- Protocol は共通の型、Model は判断、Tools は操作。