コードインタープリタからエージェントコンピュータへ:エージェントがステートフルサンドボックスを必要とする理由

コードインタープリタからエージェントコンピュータへ:エージェントがステートフルサンドボックスを必要とする理由

エージェントがステートフルサンドボックスを必要とするのは、タスクに永続的なファイル、インストール済みの依存関係、ブラウザやプレビューへのアクセス、長時間実行されるコマンド、そして単一のコード実行を超えた出力の繰り返し可能なレビューが必要な場合です。コードインタープリタは、限定的な計算、グラフ、ワンショットスクリプトには依然として有用です。エージェントがリポジトリを編集したり、失敗したテストを再試行したり、生成されたアーティファクトを保持したり、Web UIを検査したり、あるいは作業を人間に引き継いだりする必要が生じた瞬間、エージェントはワークスペースやエージェントコンピュータに近いものを必要とします。

コードインタープリタからエージェントコンピュータへ:何が変わったのか?

初期の「コードインタープリタ」機能は、モデルが会話に添付されたファイルに対してコード(通常はPython)を記述して実行できるようにするという、狭いながらも重要な問題を解決しました。これは多くのデータタスクには十分です。ユーザーはCSVをアップロードし、変換を依頼し、グラフを取得し、出力をダウンロードできます。

エージェントの作業は、より広い表面積を持ちます。コーディングエージェントは、プロジェクトのクローン、依存関係のインストール、ファイルの編集、テストの実行、ログの検査、開発サーバーの起動、プレビューの表示、結果の修正、そしてレビューアが変更内容を確認できるように状態を十分な時間保持する必要があるかもしれません。ブラウザエージェントは、Cookie、ダウンロードしたファイル、スクリーンショット、DOMの状態、失敗したステップを再現する方法を必要とする場合があります。研究や評価エージェントは、後で検査するためにアーティファクトとログを保持する何百もの分離されたワーカーを必要とする場合があります。

そのため、用語が変化しています。

  • コードインタープリタ は、短いスクリプトや生成された出力のための管理された実行ツールを意味します。
  • サンドボックス は、信頼されていないコードやエージェントが生成した作業がホストシステムから隔離されて実行できる環境を意味します。
  • ワークスペース は、タスクの状態がステップを超えて蓄積できるファイルベースの環境を意味します。
  • エージェントコンピュータ は、ファイル、コマンド、パッケージ、ブラウザやUIへのアクセス、ログ、プレビュー、アーティファクト、ライフサイクル制御、リセットやスナップショットオプションを備えた、より充実したランタイムを意味します。

これらの用語は重複します。有用な区別はブランディングではなく、エージェントが必要とする状態とレビュー面の量です。

コア用語の意味は?

概念 主な役割 典型的な状態モデル 最適な用途
Code interpreter 生成されたコードを実行し、出力を返す 短命なセッション状態 計算、ファイル変換、グラフ、小規模スクリプト
Sandbox ホストや他のセッションから実行を隔離する エフェメラルまたは永続的 信頼できないコードの実行、コマンド実行、ブラウザ自動化
Workspace ファイルと環境コンテキストをまとめて保持する 永続的なファイルシステムまたは復元可能なイメージ コーディングエージェント、データプロジェクト、タスク引き継ぎ、反復可能なレビュー
Agent computer エージェントにツールとライフサイクル制御を備えたタスク環境を提供する ログ、アーティファクト、プレビュー、リセット/スナップショットパスを備えたステートフルランタイム マルチステップソフトウェアタスク、ブラウザエージェント、評価、長時間実行ワークフロー

同じ製品が複数のボックスをカバーすることもあります。ステートフルサンドボックスはワークスペースのように振る舞うことができます。ターミナル、ブラウザ、アーティファクト、ライフサイクル管理を備えたワークスペースは、エージェントコンピュータのように感じられ始めます。評価の問いは、エージェントが何ができるか、どの状態が保持されるか、そして人間が結果をどれだけ確実に検査またはリセットできるかです。

エフェメラルなコード実行で十分なのはいつか?

エフェメラルな実行は、タスクが小さく、範囲が限定されており、最終出力から検証が容易な場合には、依然として適切なデフォルトです。

以下の場合には、短命なコードインタープリタ形式の環境を使用してください。

  • 入力ファイルが事前に提供されている。
  • タスクが1回または数回のスクリプト実行で完了できる。
  • 出力がグラフ、表、変換されたファイル、または計算結果である。
  • 管理環境以外のパッケージインストールが必要ない。
  • ユーザーが実行中のアプリ、ブラウザの状態、長いコマンドログを検査する必要がない。
  • 回答が提供されたらセッションを破棄できる。

例えば、サポートアナリストがアシスタントにチケットをカテゴリ別にグループ化するよう依頼する場合、永続的なワークスペースは必要ありません。データアナリストが単発の可視化を依頼する場合、ブラウザアクセスやスナップショットは必要ないかもしれません。ジョブが必要とする以上のインフラを追加すると、ライフサイクル、コスト、セキュリティレビューが難しくなる可能性があります。

エージェントはいつステートフルサンドボックスを必要とするのか?

ステートフルサンドボックスが重要になるのは、エージェントが単に答えを計算するだけでなく、ワークフローを通じて操作する場合です。

ファイルが複数のステップを跨いで存続する必要がある

エージェントはしばしば中間ファイルを作成します。ダウンロードしたソースデータ、生成されたコード、テストフィクスチャ、ビルドアーティファクト、スクリーンショット、レポート、ログなどです。各実行がクリーンな状態から始まる場合、エージェントは繰り返しコンテキストを再構築するか、モデルプロンプトに過剰な状態を詰め込む必要があります。

ステートフルなファイルシステムは、エージェントにコンテキストウィンドウの外側にある作業メモリを提供します。また、人間に検査可能な具体的なものを提供します。

依存関係のインストールまたは再利用が必要

多くの実際のタスクは、デフォルトのランタイムに存在しないパッケージに依存しています。コーディングエージェントは npm cipip install、Playwright ブラウザ、コンパイラ、プロジェクト固有のバイナリを必要とする場合があります。データエージェントは、本番環境に一致するライブラリバージョンを必要とする場合があります。

これらの依存関係がコマンドごとに消えてしまうと、エージェントは時間を浪費し、より多くの障害点を作り出します。テンプレートとスナップショットは、チームが毎回環境を再構築するのではなく、既知の環境から開始するのに役立ちます。

コマンドが1つのモデルターンより長く実行される可能性がある

ビルド、テスト、クローラ、マイグレーション、トレーニングジョブ、評価ハーネスは、単一の応答サイクルよりも長く実行される可能性があります。エージェントはコマンドを開始し、出力を監視し、部分的な失敗から回復し、ログを取得する必要があります。

そのためにはプロセス状態が必要です。また、タイムアウト制御、キャンセル、モデルが次のステップに移った後に結果を取得する方法も必要です。

ブラウザとプレビューへのアクセスがタスクの一部になる

多くのエージェントワークフローは、ビジュアルまたはWeb向けです。

  • コーディングエージェントはローカルWebアプリを起動し、レンダリングされたページを確認します。
  • ブラウザエージェントはサイトをナビゲートし、ファイルをダウンロードし、フォームを入力し、スクリーンショットをキャプチャします。
  • レビューエージェントは、チャート、レポート、デモページが実際にレンダリングされることを確認します。

これらのジョブでは、環境は標準出力以上のものを必要とします。ポート、プレビューURL、ブラウザ自動化、スクリーンショット、またはエージェントとレビューアが結果を確認できるその他のアーティファクトパスが必要です。

人間のレビューには再現可能な証拠が必要

エージェントは「テストが合格しました」や「アプリは正しく見えます」と言うことができますが、プロダクションチームは再現可能な証拠を必要とします。優れたランタイムは、ログ、生成されたファイル、スクリーンショット、プレビューリンクを、別の人物やプロセスがレビューできるのに十分な時間保持します。

ここで、ステートフルサンドボックスがコラボレーションモデルを変えます。サンドボックスはモデルのためのツールであるだけでなく、レビューアーティファクトでもあります。

ステートフルエージェントサンドボックスは何を保存すべきか?

状態は、意図的な場合にのみ有用です。ステートフルサンドボックスは、何が保持され、何がリセットされ、何が再利用可能な開始点になるかを明確にする必要があります。

ファイルシステムの状態

ファイルシステムはエージェント作業の基本単位です。ソースファイル、生成された出力、テストアーティファクト、ログ、スクリーンショット、ダウンロードされた入力を保持する必要があります。また、SDK、CLI、UIを通じてファイルの一覧表示、読み取り、書き込み、アップロード、ダウンロードが容易である必要があります。

ランタイムとパッケージの状態

ランタイムは、タスクが必要とする言語とパッケージマネージャをサポートする必要があります。コーディングエージェントの場合、通常はシェルコマンド、プロジェクトレベルの依存関係、準備された環境を再利用する機能を意味します。ブラウザエージェントの場合、ブラウザバイナリや自動化フレームワークが含まれる場合があります。

ネットワークとWebアクセス

ネットワークアクセスには、曖昧な開放性ではなく、注意深いポリシーが必要です。一部のエージェントは、アウトバウンドのパッケージダウンロード、API呼び出し、Webブラウジングを必要とします。他のエージェントは、より厳格なエグレスルールで実行する必要があります。チームは、ランタイムがサンドボックスが到達できるものと、それらの選択がどのようにログに記録されるかを決定できるかどうかを評価する必要があります。

プレビューとアーティファクトのキャプチャ

エージェントの出力には、テキスト以外のものが含まれることがよくあります。ファイル、スクリーンショット、ブラウザセッション、公開ポート、Webプレビュー、コマンドログのサポートを探してください。これらのアーティファクトは、レビューアがエージェントの主張を信頼することから実際の結果を確認することへと移行する方法です。

ライフサイクル制御

ステートフルは永続的を意味しません。ランタイムは、作成、タイムアウト、利用可能な場合は一時停止または再開、終了、クリーンアップをサポートする必要があります。また、テンプレートやスナップショットをサポートして、準備された環境をすべてのセッションを永久に保持することなく再利用できるようにする必要があります。

リセットとスナップショットのパス

エージェントは間違いを犯します。実用的なエージェントコンピュータには、クリーンなリセットパスと、リスクの高い作業の前に良好な状態をキャプチャする方法が必要です。スナップショットは、セットアップ後、依存関係のインストール後、または長時間の評価実行の前に役立ちます。

チームはエージェントランタイムをどのように評価すべきか?

評価基準はベンダーの主張から切り離されるべきです。適切なランタイムは、ワークフロー、リスクプロファイル、レビュープロセスに依存します。

評価基準 確認すべき点 重要な理由
ライフサイクル 環境はどのように作成、一時停止、再開、タイムアウト、削除されるのか? 放棄されたセッションと制御不能なコストを防ぐ
ファイルシステム エージェントとレビューアはファイルやアーティファクトを検査できるか? マルチステップの作業をレビュー可能にする
パッケージインストール 依存関係はインストール、キャッシュ、テンプレート化、スナップショット化できるか? セットアップの繰り返しとドリフトを削減する
コマンド実行 ログ、終了コード、タイムアウト、バックグラウンドジョブにアクセスできるか? 障害をデバッグ可能にする
ブラウザまたはプレビューアクセス エージェントはレンダリング出力を検査したり、ブラウザを自動化したりできるか? Webアプリ、UIタスク、ビジュアルレビューをサポートする
ネットワークポリシー どのようなアウトバウンドアクセスが許可され、どのように制御されるか? パッケージ取得、Webブラウジング、外部呼び出しからのリスクを低減する
分離 サンドボックス同士、およびホストとの間の境界は何か? ランタイムがどのような種類のコードとデータに適しているかを決定する
テンプレートとスナップショット チームは既知の良好な環境を再利用できるか? 再現性を向上させる
人間による引き継ぎ レビューアは同じファイル、ログ、スクリーンショット、プレビューを見ることができるか? ランタイムをレビュー可能なアーティファクトに変える
コストモデル 課金はセッション時間、CPU、メモリ、ストレージ、同時実行数のどれに基づくか? エージェントが並列実行した場合の予期しないコストを回避する

セキュリティに敏感な質問には、正確なドキュメントと製品レビューが必要です。サンドボックスを魔法の保護として扱わないでください。分離、ネットワークアクセス、シークレットの取り扱い、ログはすべて、明示的な設計選択を必要とします。

Novita Agent Sandbox はどこに適合するのか?

Novita Agent Sandbox は、分離されたステートフルな実行環境を必要とするエージェントワークフロー向けに設計されています。Agent Sandbox の概要 では、サンドボックスをエージェントがコマンドを実行し、ファイルを読み書きし、依存関係をインストールし、ブラウザベースのワークフローを使用できる環境として説明しています。また、準備された開始環境のためのテンプレートと、設定されたサンドボックス状態を保存するためのスナップショットを定義しています。

これにより、Novita は、エージェントワークロードが以下を必要とする場合に評価するのに適しています。

  • 分離された環境内でのコード実行
  • 複数のステップにわたるファイルアクセス
  • 依存関係のインストールと再利用可能な準備済み環境
  • ブラウザ指向のワークフロー
  • 人間が検査できる生成されたアーティファクト
  • SDK または CLI によるライフサイクル制御
  • モデル API とエージェントサンドボックスインフラを組み合わせたプラットフォームの方向性

これは、すべてのエージェントがステートフルサンドボックスを必要とすることを意味するわけではありません。アプリケーションがユーザーがアップロードしたファイルに対する単発の Python 実行のみを必要とする場合、コードインタープリタパターンの方がシンプルかもしれません。チームがすでに厳格なエグレス、シークレット処理、監査、レビューフローを備えた内部ランタイムを持っている場合、外部のサンドボックスがそれらの制御を弱めることなく開発者のスピードを向上させるかどうかが問題です。

Novita Agent Sandbox は、あらゆる実行パスに対する包括的な置き換えとしてではなく、アーキテクチャ決定の一部として使用してください。

実践的な決定ルール

ランタイムを選択する前に、1つの質問をしてください。

最初のモデルターンが終了した後、別の人物やエージェントがこの作業を環境から再開、検査、または再現できるでしょうか?

答えが「いいえ」で、出力が依然として有用な場合、エフェメラル実行で十分でしょう。答えが「はい」である必要がある場合、タスクはステートフルサンドボックスまたはエージェントコンピュータに向かっています。

プロダクションのエージェントシステムでは、これがしばしばデフォルトのパターンになります。

  1. クリーンなテンプレートまたはスナップショットから開始する。
  2. エージェントを分離されたランタイム内で作業させる。
  3. ファイル、ログ、スクリーンショット、プレビュー、コマンド結果をキャプチャする。
  4. レビューに十分な時間、環境を保持する。
  5. 結果に基づいてリセット、削除、またはスナップショットを作成する。

このワークフローは、結果を検査可能に保ちながら、モデルに行動の余地を与えます。

おすすめ記事

よくある質問

コードインタープリタはエージェントサンドボックスと同じですか?

いいえ。コードインタープリタは通常、管理されたセッション内で生成されたコードを実行し、出力を返すことに焦点を当てています。エージェントサンドボックスは、コマンド、ファイル、依存関係、ブラウザワークフロー、ライフサイクル制御、レビュー可能なアーティファクトのためのより広範な分離環境です。

すべてのAIエージェントにステートフルサンドボックスが必要ですか?

いいえ。単純なデータ変換、計算、ワンショットスクリプトはエフェメラル実行でうまく機能します。エージェントがステートフルサンドボックスを必要とするのは、ワークフローが永続的なファイル、インストールされたパッケージ、長時間実行プロセス、ブラウザやプレビューへのアクセス、またはアーティファクトの人間によるレビューに依存する場合です。

エージェントコンピュータとは何ですか?

エージェントコンピュータは、AIエージェントにコンピュータのようなツール(ファイルシステム、シェル、パッケージ、ブラウザやUIへのアクセス、ログ、アーティファクト、ライフサイクル制御、リセットやスナップショットオプション)を提供するタスク環境です。これは、長時間実行されレビュー可能なエージェント作業にとって有用な概念です。

スナップショットはエージェントワークフローにとってなぜ重要なのですか?

スナップショットにより、チームは設定済みの環境を保存し、後で再利用できます。繰り返しのセットアップ作業を削減し、再現性を向上させ、エージェントがリスクの高いまたは実験的なアクションを実行する前にクリーンな状態に戻るポイントを提供します。

チームはサンドボックスのセキュリティをどのように考えるべきですか?

サンドボックスのセキュリティはアーキテクチャ上の決定として扱ってください。機密性の高いワークロードや信頼できないコードを実行する前に、分離モデル、ネットワークアクセス、シークレットの取り扱い、ログ、ライフサイクルクリーンアップ、人間によるレビュープロセスをレビューしてください。