openai/codex

⭐ undefined 🍴 0 Rust📄 Apache License 2.0 GitHubで見る →

主な特徴

  • **ローカル実行**: クラウドではなくユーザーのマシン上で完全に動作
  • **サンドボックス環境**: 読み取り専用モード、ワークスペース書き込みモードなど、段階的な権限設定
  • **複数の認証方法**: ChatGPT Plus/Pro/Teamアカウント、またはOpenAI APIキーで利用可能
  • **インタラクティブモード**: TUI(ターミナルUI)での対話的な使用
  • **非インタラクティブモード**: CI/CDパイプラインでの自動実行
  • **オープンソースモデル対応**: OllamaなどのローカルLLMも利用可能
  • **MCP対応**: Model Context Protocolサーバーの統合
  • **メモリ機能**: AGENTS.mdファイルによるプロジェクト固有の指示を設定可能

リポジトリ解析: openai/codex

基本情報

  • リポジトリ名: openai/codex
  • 主要言語: Rust
  • スター数: GitHub Trendingにランクイン
  • フォーク数: 実装コードでは取得不可
  • 最終更新: アクティブに開発中(v0.20.0+)
  • ライセンス: Apache License 2.0
  • トピックス: AI, CLI, コーディングアシスタント, ターミナル, LLM, Rust, TypeScript

概要

一言で言うと

Codex CLIは、OpenAIが開発したローカルで動作する軽量なコーディングアシスタントで、ターミナル上で自然言語で指示を与えることで、コードの書き換え、テストの実行、ファイルの操作などを自動的に実行します。

詳細説明

Codex CLIは、開発者の日常的なコーディングタスクを支援するAIエージェントです。ターミナルでコマンドを実行し、ファイルを編集し、テストを書いて実行し、コードをリファクタリングするなど、多様な開発タスクを自動化できます。

クラウドベースのCodex Webとは異なり、このCLIツールはユーザーのローカルマシン上で完全に動作します。セキュリティを重視し、サンドボックス環境でコマンドを実行することで、意図しない変更や危険な操作からユーザーを保護します。

主な特徴

  • ローカル実行: クラウドではなくユーザーのマシン上で完全に動作
  • サンドボックス環境: 読み取り専用モード、ワークスペース書き込みモードなど、段階的な権限設定
  • 複数の認証方法: ChatGPT Plus/Pro/Teamアカウント、またはOpenAI APIキーで利用可能
  • インタラクティブモード: TUI(ターミナルUI)での対話的な使用
  • 非インタラクティブモード: CI/CDパイプラインでの自動実行
  • オープンソースモデル対応: OllamaなどのローカルLLMも利用可能
  • MCP対応: Model Context Protocolサーバーの統合
  • メモリ機能: AGENTS.mdファイルによるプロジェクト固有の指示を設定可能

使用方法

インストール

前提条件

  • OS: macOS 12+、Ubuntu 20.04+/Debian 10+、Windows 11 (WSL2経由)
  • Node.js: 20+(npmインストールの場合)
  • Git: 2.23+ (オプション、PRヘルパー機能用)
  • RAM: 最小4GB(推奐8GB)

インストール手順

# 方法1: npm経由(推奨)
npm install -g @openai/codex

# 方法2: Homebrew経由(macOS/Linux)
brew install codex

# 方法3: GitHub Releaseからバイナリをダウンロード
# macOS Apple Silicon: codex-aarch64-apple-darwin.tar.gz
# macOS x86_64: codex-x86_64-apple-darwin.tar.gz
# Linux x86_64: codex-x86_64-unknown-linux-musl.tar.gz
# Linux arm64: codex-aarch64-unknown-linux-musl.tar.gz

# 方法4: ソースからビルド
git clone https://github.com/openai/codex.git
cd codex/codex-rs
cargo build --release

基本的な使い方

Hello World相当の例

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

# プロンプトを指定して起動
codex "explain this codebase to me"

# 非インタラクティブモードで実行
codex exec "write unit tests for utils/date.ts"

実践的な使用例

# ReactコンポーネントをHooksにリファクタリング
codex "Refactor the Dashboard component to React Hooks"

# SQLマイグレーションの生成
codex "Generate SQL migrations for adding a users table"

# セキュリティレビュー
codex "Look for vulnerabilities and create a security review report"

# 一括ファイル名変更
codex "Bulk-rename *.jpeg -> *.jpg with git mv"

高度な使い方

# ChatGPTアカウントでログイン
codex login  # ブラウザが開き、ChatGPTアカウントで認証

# APIキーを使用
export OPENAI_API_KEY="your-api-key-here"
codex

# サンドボックスモードの指定
codex --sandbox workspace-write --ask-for-approval on-request
codex --sandbox read-only --ask-for-approval on-request
codex --sandbox danger-full-access --ask-for-approval never

# オープンソースモデルの使用
codex --oss  # Ollamaのデフォルトモデルを使用
codex --oss -m "gpt-oss:120b"  # 大規模モデルを指定

# CI/CDでの使用
codex exec --full-auto "update CHANGELOG for next release"

ドキュメント・リソース

公式ドキュメント

  • README.md: プロジェクトの包括的な概要、インストール方法、使用例
  • codex-rs/config.md: 詳細な設定オプションのドキュメント
  • docs/protocol_v1.md: 通信プロトコルの仕様
  • AGENTS.md: プロジェクト固有の指示やメモリ設定の例
  • CONTRIBUTING.md: コントリビューションガイドライン

サンプル・デモ

  • README内の使用例: 7つの具体的なユースケースを提供
    • React Hooksへのリファクタリング
    • SQLマイグレーション生成
    • ユニットテスト作成
    • ファイル名一括変更
    • 正規表現の説明
    • PR提案
    • セキュリティレビュー

チュートリアル・ガイド

  • GitHub Issueでのサポート
  • プロンプティングガイド(別途提供予定)
  • config.tomlの設定例
  • CI/CD統合の例(GitHub Actions)

技術的詳細

アーキテクチャ

全体構造

Codexは、Rustで書かれたコアエンジンとnpmパッケージとして配布されるクライアントから構成されます。コア機能はRustで実装され、高速で安全な実行を実現しています。

  • クライアント・サーバーアーキテクチャ: OpenAI APIまたはローカルLLMと通信
  • サンドボックス: OS固有のサンドボックス機能を使用(macOS: Seatbelt、Linux: Landlock/seccomp)
  • イベントストリーム: SSE(Server-Sent Events)を使用したリアルタイム通信
  • MCP統合: Model Context Protocolサーバーとの連携

ディレクトリ構成

codex/
├── codex-cli/        # npmパッケージとCLIエントリポイント
│   ├── bin/         # 実行可能スクリプト
│   └── scripts/     # ビルド/リリーススクリプト
├── codex-rs/         # Rustコードベース
│   ├── core/        # コア機能(クライアント、実行、設定)
│   ├── cli/         # CLIインターフェース
│   ├── tui/         # ターミナルUI
│   ├── exec/        # コマンド実行エンジン
│   ├── execpolicy/  # 実行ポリシーとサンドボックス
│   ├── mcp-*        # MCP関連モジュール
│   ├── ollama/      # Ollama統合
│   └── apply-patch/ # パッチ適用機能
└── docs/             # プロジェクトドキュメント

主要コンポーネント

  • codex-core: コアロジックとAPIクライアント

    • 場所: codex-rs/core/
    • 依存: tokio, reqwest, serde
    • 機能: LLM通信、コマンド実行、設定管理
  • codex-tui: ターミナルUI

    • 場所: codex-rs/tui/
    • 依存: ratatui(TUIフレームワーク)
    • 機能: インタラクティブなチャットインターフェース
  • execpolicy: 実行ポリシーエンジン

    • 場所: codex-rs/execpolicy/
    • 依存: OS固有のサンドボックスAPI
    • 機能: コマンドの安全性検証、実行制限
  • mcp-server/client: MCPプロトコル実装

    • 場所: codex-rs/mcp-server/, codex-rs/mcp-client/
    • 機能: 外部ツールとの統合

技術スタック

コア技術

  • 言語:
    • Rust (Edition 2024): コアエンジン、CLI、TUI
    • JavaScript/Node.js: npmパッケージラッパー
  • フレームワーク:
    • Tokio: 非同期ランタイム
    • Ratatui: ターミナルUIフレームワーク
  • 主要ライブラリ:
    • reqwest (0.12): HTTPクライアント(OpenAI API通信)
    • serde/serde_json (1.0): JSONシリアライズ
    • eventsource-stream (0.2.3): SSEクライアント
    • clap (4.5): CLI引数パーサー
    • toml (0.9): 設定ファイルパーサー
    • landlock (0.4): Linuxサンドボックス
    • seccompiler (0.5): Linux seccompフィルタ

開発・運用ツール

  • ビルドツール:
    • Cargo: Rustプロジェクト管理
    • Just: タスクランナー
    • pnpm: JavaScriptパッケージ管理
  • テスト:
    • cargo test: 単体テスト、統合テスト
    • wiremock: HTTPモックテスト
    • assert_cmd: CLIテスト
  • CI/CD:
    • GitHub Actions: 自動テスト、ビルド、リリース
    • クロスプラットフォームビルド(Linux/macOS/Windows)
  • デプロイ:
    • npmレジストリ: @openai/codex
    • Homebrew: codexフォーミュラ
    • GitHub Releases: バイナリ配布

設計パターン・手法

  • コマンドパターン: CLI引数の解析と実行
  • アクターモデル: 非同期メッセージパッシング
  • ポリシーパターン: サンドボックスポリシーの実装
  • ストリーム処理: SSEを使用したリアルタイム通信
  • プロファイルパターン: 設定の階層管理(CLI > config.toml > デフォルト)
  • プラグインアーキテクチャ: MCPサーバーの動的読み込み

データフロー・処理フロー

  1. ユーザー入力: TUIまたはCLI引数からプロンプトを受け取る
  2. プロンプト構築: コンテキスト(ファイル内容、AGENTS.md等)を追加
  3. APIリクエスト: OpenAI APIまたはローカルLLMに送信
  4. ストリーム処理: SSEでレスポンスを受信
  5. ツール呼び出し解析: LLMが要求するアクションを抽出
  6. ポリシーチェック: サンドボックスポリシーに基づく検証
  7. 承認フロー: 必要に応じてユーザー承認を要求
  8. コマンド実行: サンドボックス内で安全に実行
  9. 結果フィードバック: 実行結果をLLMにフィードバック
  10. 繰り返し: タスク完了まで繰り返し

API・インターフェース

公開API

CLIコマンド

  • 目的: コマンドラインからCodexを操作
  • 使用例:
# インタラクティブモード
codex [--model MODEL] [--sandbox SANDBOX] [--ask-for-approval APPROVAL]

# プロンプト付き起動
codex "your prompt here"

# 非インタラクティブ実行
codex exec "your task"

# ログイン
codex login

# MCPサーバーモード
codex mcp

設定・カスタマイズ

設定ファイル

# ~/.codex/config.toml

# モデル設定
model = "o3"
model_provider = "openai"

# サンドボックス設定
approval_policy = "on-request"
sandbox_mode = "workspace-write"

# プロファイル
[profiles.readonly]
approval_policy = "never"
sandbox_mode = "read-only"

# モデルプロバイダー
[model_providers.ollama]
name = "Ollama"
base_url = "http://localhost:11434/v1"

# MCPサーバー
[mcp_servers.my-server]
command = "npx"
args = ["-y", "mcp-server"]
env = { "API_KEY" = "value" }

拡張・プラグイン開発

  • カスタムモデルプロバイダー: config.tomlで任意のOpenAI互換APIを設定可能
  • MCPサーバー: 外部ツールをMCPプロトコルで統合
  • AGENTS.md: プロジェクト固有の指示やコンテキストを追加

パフォーマンス・スケーラビリティ

パフォーマンス特性

  • 起動速度: Rustバイナリによる高速起動
  • メモリ使用量: 軽量なフットプリント
  • ストリーミング処理: SSEによるリアルタイムレスポンス
  • 並行処理: Tokioによる非同期I/O

スケーラビリティ

  • 複数タスクの同時実行: 非インタラクティブモードでのバッチ処理
  • CI/CD統合: GitHub Actionsや他のCIシステムでの大規模実行
  • ローカルLLM対応: ネットワーク依存を減らしてスケール

制限事項

  • 技術的な制限:
    • Windowsネイティブ未対応(WSL2経由のみ)
    • Docker環境でのサンドボックス制限
    • ヘッドレス環境でのログインの複雑さ
  • 運用上の制限:
    • 実験的技術であり、破壊的変更の可能性
    • 現在アクティブに開発中(バグや不完全な機能あり)

評価・所感

技術的評価

強み

  • 優れたセキュリティモデル: サンドボックスによる安全な実行環境
  • 柔軟な認証オプション: ChatGPTアカウント、APIキー、ローカルLLMに対応
  • 高品質なRust実装: 型安全性、メモリ安全性、高速性
  • ユーザーフレンドリーUI: TUIによる直感的な操作
  • オープンソース: Apache 2.0ライセンスでコミュニティ駆動開発
  • 統合性: MCPサポートによる拡張性

改善の余地

  • Windowsネイティブ未対応: WSL2が必須
  • 実験的プロジェクト: APIや機能が頻繁に変更
  • ドキュメント不足: 詳細なAPIドキュメントが未整備
  • ヘッドレス環境での認証: 複雑な回避策が必要

向いている用途

  • 日常的なコーディングタスク: リファクタリング、テスト作成、バグ修正
  • CI/CDパイプライン: 自動化されたコード品質チェック
  • ローカル開発: クラウドに依存しないセキュアな環境
  • 学習・探索: コードベースの理解、新しい技術の学習
  • バッチ処理: 大量のファイルに対する一括操作

向いていない用途

  • プロダクションクリティカル: 実験的技術のため
  • Windowsネイティブ開発: WSL2のオーバーヘッド
  • GUIアプリケーション開発: ターミナルベースのツール
  • リアルタイムペアプログラミング: 非同期処理モデル

総評

Codex CLIは、AI時代の開発者ツールとして非常に注目すべきプロジェクトです。OpenAIが開発していることで、最新のLLMへのアクセスと高品質な実装が保証されています。

特に優れているのは、セキュリティへの配慮です。サンドボックス機能により、AIが生成したコマンドを安全に実行でき、意図しない変更や危険な操作からユーザーを保護します。これは他の多くのAIコーディングツールにはない特徴です。

また、ローカル実行という点も重要です。コードやデータがクラウドに送信されることなく、完全にローカルで処理されるため、機密情報を扱うプロジェクトでも安心して使用できます。

ただし、現在は実験的プロジェクトであることに注意が必要です。APIや機能が頻繁に変更される可能性があり、プロダクション環境での使用には慎重な検討が必要です。

Rustによる高品質な実装、優れたUI/UX、強力なセキュリティ機能、そしてOpenAIのバッキングにより、Codex CLIは今後のAI支援開発ツールのスタンダードとなる可能性を秘めています。オープンソースファンドの設立も、コミュニティの成長を促進する良い取り組みです。