OpenAI Cookbook のアプリケーション管理とWebhook 管理の例を参照してください。
エグゼキューターのセットアップと接続要件については、セルフホスト型サンドボックスを参照してください。
プロビジョニングモードを選択します。
- アプリケーション管理: このガイドに従って、アプリケーションからサンドボックスを起動・停止します。
- Webhook 管理: OpenAI の Webhook を受けてサンドボックスを起動または再接続するハンドラーをデプロイします。
2 つのモードの比較については、サンドボックスのライフサイクルを参照してください。
Webhook 管理
コントローラーを使って OpenAI からの Webhook 配信を検証し、プロビジョニング処理をキューに追加します。このコントローラーは、各セッションのエグゼキューターを実行するワーカーのサンドボックスとは分離してください。ハンドラーのデプロイと接続に従って、エンドポイントと署名シークレットを登録します。
environment_connection リクエストを受けたら、ワーカーを起動または再接続し、セッションが失敗したらワーカーを解放します。ワーカーとコントローラーのタイムアウトを明示的に設定してください。アイドル時にコンピューティングリソースを停止するには、新たに受け付ける処理と連携するポリシーが必要です。ライフサイクルの動作を参照してください。
アプリケーション管理
事前準備
OpenAI プロジェクトの API キー、Daytona API キー、Codex CLI パッケージが必要です。
DAYTONA_API_KEY を設定し、アプリケーションからのリクエストには OPENAI_API_KEY を使用します。OPENAI_EXECUTOR_API_KEY に環境キーを設定し、そのキーだけを CODEX_API_KEY としてサンドボックスに渡します。
1. Daytona 環境のセットアップ
セルフホスト型セッションを作成し、その環境 ID を保存します。Daytona SDK または API を使って、設定済みの作業ディレクトリを持つ分離されたサンドボックスを作成します。サンドボックスに Codex CLI をインストールしてから、その環境 ID と環境キーを使ってエグゼキューターを起動します。
エグゼキューターから OpenAI への接続は長時間維持されるアウトバウンド接続で、Daytona の非アクティブ状態の追跡では検知されません。エージェントの作業中にサンドボックスが停止しないように auto_stop_interval=0 を設定してください。また、実行が中断された後にコンピューティングリソースが無期限に稼働し続けないよう、稼働時間の上限を設定します。
継続的に利用する場合は、Daytona のスナップショットに Codex と ripgrep を含めておくと、サンドボックスが接続するまでの時間を短縮できます。
2. セッションの実行
Daytona のエグゼキューターが接続したら、セッションの実行と継続の HTTP の例を使って入力を送信し、結果をストリーミングします。終了したら、セッションを削除し、それとは別にプロバイダーのサンドボックスを停止します。
入力を送信する前にサンドボックスを起動します。ターンは環境が接続されるまで待機し、セッションはイベントストリームの agent.session.environment.connected を通じて接続を通知します。
ターンの成功は agent.session.turn.completed で確認します。失敗またはキャンセルされたターンの後にも agent.session.idle が発生する場合があるため、セッションがアイドル状態であることをターンが成功した証拠とみなさないでください。イベントの直後にセッションを取得すると、一時的に以前のステータスが返される場合があります。