AIエージェントにサンドボックス(Sandbox)環境へのアクセス権を付与する場合、エージェントが作業するファイルをどのように整理すべきかという根本的な疑問が生じます。Docker Sandboxプラットフォーム(sbxと略す)は、ソースコード管理の主要な3つのモデルを提供しており、それぞれが開発者のワークフローやエージェントとのインタラクションに直接的な影響を与えます。
1. 共有マウント(Shared Mounts)
このオプションにより、ホストマシンからの現在の作業パスをサンドボックス環境と直接共有できるようになります。プロジェクトフォルダからsbx runを実行すると、フォルダは環境内の同じ絶対パスにマウントされます。このモデルは、単一のタスクでの密接なコラボレーションに最適です。開発者はローカルエディタで変更を即座に確認でき、ローカル開発サーバーもホットリロード機能を通じて修正を検知できます。
注意:依存関係の競合には注意が必要です。ネイティブバイナリを含むパッケージは、Linuxのサンドボックス環境では動作するものの、macOSやWindowsでは失敗する可能性があるため、ランタイム環境を統一するか、依存関係のインストールを分離することが推奨されます。
2. Gitワークツリーの使用(Git Worktrees)
このオプションは、複数のタスクを同時に実行する場合に適しています。各タスクに独自のフォルダとブランチを割り当て、それぞれのワークツリーを別個のサンドボックス環境にマウントすることができます。ここでの利点はタスクの完全な分離ですが、技術的な制約が残ります。.gitファイルはマウント範囲外のメタデータを指しているため、git statusの確認やブランチの切り替えなどの操作はホストマシンから行う必要があります。
3. クローンモード(Clone Mode)
このモードでは、sbxツールはサンドボックス内にコードの独立したコピーを作成し、ホストコードを読み取り専用としてマウントします。これにより、エージェントは環境内でGitへのフルアクセスが可能となり、ブランチやコミットの管理において完全に独立したものになります。作業終了後、開発者はリモートGitリポジトリを介して変更を取得できます。
これにより開発者のワークフローはどう変わるか?
適切な手法の選択は、タスクの性質と直接介入したい度合いによって異なります。
- 密接なコラボレーション:エージェントの作業をリアルタイムで監視したい場合は、共有マウントを使用します。
- 独立性:ローカルの開発環境に影響を与えることなく、エージェントにタスク管理のスペースを与えたい場合は、クローンモードまたは完全にマウントなし(Mountless)のサンドボックス環境を使用します。
- 複数プロジェクトの管理:ワークスペースマネージャーを使用して複数のリポジトリを1つの環境にまとめると、エージェントが(フロントエンドやバックエンドなどの)相互接続されたプロジェクトを扱いやすくなります。
ホストファイルのマウントに依存しないサンドボックス環境(Mountless)では、ローカルブラウザから開発サーバーにアクセスするためにポートの手動管理が必要になることに注意してください。これは分離の安全性を高めるプラクティスですが、セットアップに追加のステップがいくつか加わります。