この章の答え
ツールの結果や保留入力を確認し、続きが必要なら次のモデル呼び出しへ進む。
エージェントは一回の回答で仕事を終えるとは限りません。ファイルを読み、結果を見て次の操作を選びます。この繰り返しを支えるのが Agent Loop です。ループの本体と同じくらい、継続・停止の条件が重要になります。
01|図でつかむ
続きが必要なら Model へ戻る。不要なら Turn を完了する。
02|3つのポイントで理解する
1. 一回の sampling を切り出す
run_turn の中でモデルへの一回の要求を見つけます。モデルの応答にツール要求が含まれると、その実行結果が後続の判断材料になります。
2. 継続の理由を分ける
確認したソースコードでは、モデル側の needs_follow_up と保留入力の有無を合わせて継続を判断しています。「ツールがあったから」だけで説明せず、追加の入力や状態も見ます。
3. 出口も同じ重さで読む
完了、エラー、中断の経路を分けて追います。ツール結果の記録と次の要求の間で何が起きるかを押さえると、無限に続く・早く終わりすぎるといった問題を調べやすくなります。
03|ソースで確かめる
以下の検索は Codex リポジトリのルートで実行します。最初に対象 commit を記録し、検索結果から定義と呼び出し元を一つずつ開いてください。
git rev-parse --short HEAD
rg -n "needs_follow_up|has_pending_input" codex-rs
読む入口: codex-rs/core/src/session/turn.rs 。リンク先は照合に使った固定 commit のファイルです。手元の版と異なる場合は、上の検索語から探し直します。
小さく試す
run_turn 内で needs_follow_up を検索し、値を作る箇所と終了判定に使う箇所を結びます。
04|30秒で復習
- モデル呼び出しを繰り返す制御がある。
- 継続理由にはツール結果や保留入力がある。
- 終了条件とキャンセル経路も読む。