概要
- Codex CLI は高品質かつ信頼性の高いソフトウェア変更をローカル環境で安全・効率的に実行するクロスプラットフォームエージェント
- 本記事は Codexのコアロジック である「エージェントループ」に焦点を当て、その仕組みと設計思想を解説
- エージェントループ はユーザー・モデル・ツール間のやり取りを統括し、会話型でソフトウェア作業を進行
- プロンプト構築 やAPIとのやりとり、コンテキストウィンドウ管理など、実装上の工夫も紹介
- 今後もシリーズとして Codexの内部構造や設計上の知見 を継続的に発信予定
Codex CLIのエージェントループ概要
-
Codex CLI はOpenAIが提供するローカルソフトウェアエージェント
- クロスプラットフォーム対応
- 高品質なソフトウェア変更の自動化
- 安全性・効率性を重視
-
エージェントループ はCodex CLIの中核ロジック
- ユーザー入力、AIモデル、ツール呼び出しを統括
- 1ターンごとに「ユーザー入力→モデル推論→ツール実行→レスポンス生成」を繰り返す
- モデルがツール呼び出しを要求した場合は、ツール実行結果をプロンプトに追加して再推論
- モデルがユーザー向けメッセージを返した時点で1ターン終了
-
Codex CLI の「会話」は複数ターンから構成
- 各ターンの履歴(メッセージ・ツールコール)をプロンプトに含めて次のターンへ
- プロンプト長は会話が進むほど増加
- モデルの「コンテキストウィンドウ」制約への対応が必要
プロンプト構築とAPI連携
-
Codex CLI はResponses APIにHTTPリクエストを送信して推論を実行
- ChatGPTログイン時: https://chatgpt.com/backend-api/codex/responses
- APIキー認証時: https://api.openai.com/v1/responses
- gpt-oss利用時: http://localhost:11434/v1/responses
- Azure等クラウド環境にも対応
-
プロンプト生成 の流れ
- ユーザーはAPIに直接プロンプトを指定せず、各種入力タイプで指示
- Responses API側で「リスト形式プロンプト」に変換
- 各プロンプト要素には「role」が付与され、優先度順は system > developer > user > assistant
- toolsフィールドには利用可能なツール定義が含まれる
- developer_instructionsやユーザー指示、スキル設定もプロンプトに反映
-
JSONペイロード 例
- 各要素はtype, role, contentを持つJSONオブジェクト
- Authorizationヘッダーや追加パラメータもサポート
-
APIレスポンス はServer-Sent Events(SSE)ストリーム
- 各イベントはtypeで分類(例: response.output_text.delta)
- ツール呼び出し結果や推論結果を次回リクエストのinputに追加
エージェントループの性能と設計上の工夫
-
プロンプトはターンごとに増加 し、APIへのJSON送信量も増える
- Responses APIはprevious_response_idパラメータで最適化可能
- Codex CLIは「完全ステートレス」かつ「Zero Data Retention(ZDR)」構成を優先し、previous_response_idは未使用
- これによりプロバイダ側の実装がシンプル化
-
プロンプトキャッシュ 等による効率化も検討領域
- 今後のパフォーマンス最適化や設計改善に繋がる知見を蓄積中
Codex CLIの役割と今後の展望
-
Codex CLI はLLM活用のための「ハーネス」として機能
- ユーザー・モデル・ツールの橋渡し
- 実際のコード生成・編集・ファイル操作も担う
- 各ターンの終了時には必ず「assistantメッセージ」で完了を示す
-
今後もシリーズとして、Codex CLIの設計思想・実装詳細・得られた知見を継続的に発信予定
- 詳細はGitHub(https://github.com/openai/codex)で公開中
- IssueやPull Requestで設計上の議論も参照可能
-
Codex CLI は、AIソフトウェアエージェントの設計・運用における実践的な知見の集大成として、今後も進化予定