この章の答え
UI からの操作要求と、Core からの出来事の通知は別の方向に流れる。
レストランで注文を伝えることと、料理ができたと知らされることは別です。Codex の内部メッセージも、してほしいことと起きたことを分けて読むと、非同期の動きが分かりやすくなります。
01|図でつかむ
要求は Core へ、出来事は UI へ。これは内部 Protocol の概念図。
02|3つのポイントで理解する
1. Op は要求の種類を表す
ユーザー入力や処理への操作は、内部の Op として表現されます。enum の定義だけでなく、その variant を受け取る match を探すと、どこが実行を担当するかが分かります。
2. EventMsg は進行を知らせる
処理中には複数の出来事が発生します。UI は通知を受けて表示を更新します。一つの要求が一つの通知だけで完結するとは限らず、開始・途中・完了を区別して読みます。
3. 識別子で対応を確認する
Submission や Event の包み方、ThreadId や処理の ID を見ると、どの会話・操作に属する情報かを追えます。App Server の公開 API と内部 Op の型を同じものとして扱わないことも大切です。
03|ソースで確かめる
以下の検索は Codex リポジトリのルートで実行します。最初に対象 commit を記録し、検索結果から定義と呼び出し元を一つずつ開いてください。
git rev-parse --short HEAD
rg -n "enum Op|enum EventMsg" codex-rs
読む入口: codex-rs/protocol/src/protocol.rs 。リンク先は照合に使った固定 commit のファイルです。手元の版と異なる場合は、上の検索語から探し直します。
小さく試す
Op と EventMsg から一つずつ選び、作る場所・受け取る場所・更新する状態を線で結びます。
04|30秒で復習
- 要求と通知は方向が違う。
- 一つの要求から複数の通知が出る。
- ID と受信側の処理まで追う。