以下の内容はhttps://blog.generative-agents.co.jp/entry/2025/05/03/111258より取得しました。


「AIエージェントキャッチアップ #31 - OpenAI Codex CLI」を開催しました

ジェネラティブエージェンツの大嶋です。

「AIエージェントキャッチアップ #31 - OpenAI Codex CLI」という勉強会を開催しました。

generative-agents.connpass.com

アーカイブ動画はこちらです。

www.youtube.com

OpenAI Codex CLI

今回は、OpenAIのコーディングエージェント「OpenAI Codex CLI」について、動かしてみたりソースコードを読んだりしてみました。

Codexの公式リポジトリはこちらです。

github.com

今回のポイント

Codexの基本的な使い方

OpenAI Codex CLIは、ターミナル上で動作するコーディングエージェントです。 AnthropicのClaude Codeのような立ち位置のツールですね。

Codexは以下のコマンドでインストールできます。

npm install -g @openai/codex

Codexを起動する前に、OpenAI APIキーを環境変数として設定します。

export OPENAI_API_KEY="your-api-key-here"

codexコマンドにより、Codexが起動します。

# インタラクティブモードで起動
codex

# プロンプトを引数として実行
codex "このコードベースを説明してください"

承認モードの種類

Codexには、エージェントの自律性を制御する3つの承認モードがあります。

  1. Suggest(デフォルト)
    • リポジトリ内のファイル読み取りのみ許可
    • ファイルの書き込みやシェルコマンドの実行には承認が必要
  2. Auto Edit
    • ファイルの読み取りと書き込みを許可
    • シェルコマンドの実行には承認が必要
  3. Full Auto
    • ファイルの読み取り/書き込みとシェルコマンドの実行を許可
    • ただし、ネットワーク接続は無効化され、書き込みは現在の作業ディレクトリ内のみに制限される

Codexのプロンプト

Codexのプロンプトは、ソースコードの以下の箇所で確認できます。

https://github.com/openai/codex/blob/a4b51f6b677cc75c91811a36303aba85e147f8d3/codex-cli/src/utils/agent/agent-loop.ts#L1462

const prefix = `You are operating as and within the Codex CLI, a terminal-based agentic coding assistant built by OpenAI. It wraps OpenAI models to enable natural language interaction with a local codebase. You are expected to be precise, safe, and helpful.

You can:
- Receive user prompts, project context, and files.
- Stream responses and emit function calls (e.g., shell commands, code edits).
- Apply patches, run commands, and manage user approvals based on policy.
    :

このプロンプトは、以下のようにCodexを使って見つけることができました。

user
codexディレクトリにcodexのコードをcloneしてきてあります。その中から、プロンプトを探してください。
        :
    codex
    codexディレクトリ内で「プロンプト」として機能しているのは、agent-loop.
    ts の中で定義されている定数 prefix です。場所は以下のとおりです。

      • ファイル: codex/codex-cli/src/utils/agent/agent-loop.ts
      • 定義位置:約 1462 行目

    ─── prefix の内容(一部抜粋)───

        const prefix = `You are operating as and within the Codex CLI, a
    terminal-based agentic coding assistant built by OpenAI. It wraps
    OpenAI models to enable natural language interaction with a local
    codebase. You are expected to be precise, safe, and helpful.

        You can:
        - Receive user prompts, project context, and files.
        - Stream responses and emit function calls (e.g., shell commands,
    code edits).
        - Apply patches, run commands, and manage user approvals based on
    policy.
        - Work inside a sandboxed, git-backed workspace with rollback
    support.
        - Log telemetry so sessions can be replayed or inspected later.
        - More details on your functionality are available at `codex
    --help`

        …(以下、動作上のルールやコーディングガイドラインが続きます)…`;

    この prefix が「システムプロンプト」としてモデルに渡され、ユーザーの入
    力とマージされた上で OpenAI API
    へ送信されます。詳しい全文は上記ファイルを開いてご確認ください。

LLMの呼び出しで設定しているツール

Codexでは、LLMの呼び出し時に、ツールとして「shellTool」だけを設定しています。

            stream = await responseCall({
                :
              tools: [shellTool],

https://github.com/openai/codex/blob/a4b51f6b677cc75c91811a36303aba85e147f8d3/codex-cli/src/utils/agent/agent-loop.ts#L703

shellToolに対して「apply_patch」というコマンドが指定された場合、その引数をpatchとしてファイルを編集するという挙動が実装されています。

{
  "cmd": [
    "apply_patch",
    "*** Begin Patch\n*** Update File: path/to/file.py\n@@ def add(a, b):\n-    return a + b\n+    return a - b\n*** End Patch"
  ]
}

diff形式の出力

apply_patchの引数は、以下のようなdiffの形式です。

*** Begin Patch
*** Update File: path/to/file.py
@@ def add(a, b):
-    return a + b
+    return a - b
*** End Patch

Codexには、このdiff形式の出力をもとにファイルを編集する処理が実装されています。

https://github.com/openai/codex/blob/a4b51f6b677cc75c91811a36303aba85e147f8d3/codex-cli/src/utils/agent/apply-patch.ts

以前Aiderを試した際も、diff形式の出力をもとにファイルを編集していました。

blog.generative-agents.co.jp

モデルによるかもしれませんが、コードの編集ではdiff形式の出力が有用なケースもあるのかもしれません。

次回のご案内

以上、今回は「OpenAI Codex CLI」をキャッチアップしました。

次回は「AIエージェントキャッチアップ #32 - The Agent Company」ということで、LLMエージェントの実世界のタスクでのベンチマーク「The Agent Company」がテーマです!

generative-agents.connpass.com

ご興味・お時間ある方はぜひご参加ください!

また、その次の回以降のテーマも募集しているので、気になるエージェントのOSSなどあれば教えてください!




以上の内容はhttps://blog.generative-agents.co.jp/entry/2025/05/03/111258より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14