Gateway

OpenShell

OpenShell はマネージドサンドボックスバックエンドです。Docker コンテナを ローカルで実行する代わりに、OpenClaw はサンドボックスのライフサイクルを openshell CLI に委任し、 リモート環境のプロビジョニングと SSH 経由でのコマンド実行を行います。

この Plugin は、汎用の SSH バックエンド と同じ SSH トランスポートおよび リモートファイルシステムブリッジを再利用し、OpenShell のライフサイクル (sandbox create/get/delete/ssh-config)と、オプションの mirror ワークスペース同期モードを追加します。

前提条件

  • OpenShell Plugin がインストールされていること(openclaw plugins install @openclaw/openshell-sandbox
  • openshell CLI が PATH 上にあること(または plugins.entries.openshell.config.command でカスタムパスを指定)
  • サンドボックスへのアクセス権を持つ OpenShell アカウント
  • ホスト上で OpenClaw Gateway が実行されていること

クイックスタート

bash
openclaw plugins install @openclaw/openshell-sandbox
json5
{  agents: {    defaults: {      sandbox: {        mode: "all",        backend: "openshell",        scope: "session",        workspaceAccess: "rw",      },    },  },  plugins: {    entries: {      openshell: {        enabled: true,        config: {          from: "openclaw",          mode: "remote",        },      },    },  },}

Gateway を再起動します。次のエージェントターンで OpenClaw が OpenShell サンドボックスを作成し、ツール実行をそこへルーティングします。次のコマンドで確認します。

bash
openclaw sandbox listopenclaw sandbox explain

ワークスペースモード

これは OpenShell における最も重要な選択です。

mirror(デフォルト)

plugins.entries.openshell.config.mode: "mirror" では、ローカルワークスペースが 正規の状態として維持されます。

  • exec の前に、OpenClaw がローカルワークスペースをサンドボックスへ同期します。
  • exec の後に、OpenClaw がリモートワークスペースをローカルへ同期します。
  • ファイルツールはサンドボックスブリッジを経由しますが、ターン間ではローカルが信頼できる唯一の情報源となります。

開発ワークフローに最適です。OpenClaw 外部で行ったローカル編集は次回の 実行時に反映され、サンドボックスは Docker バックエンドに近い動作をします。

トレードオフ:実行ターンごとにアップロードとダウンロードのコストが発生します。

remote

mode: "remote" では、OpenShell ワークスペースが正規の状態となります。

  • 最初のサンドボックス作成時に、OpenClaw がローカルからリモートワークスペースへ 一度だけ初期データを投入します。
  • その後、execreadwriteeditapply_patch は リモートワークスペースを直接操作します。OpenClaw はリモートの変更を ローカルへ同期しません
  • プロンプト処理時のメディア読み取りも引き続き機能します(ファイル/メディアツールは サンドボックスブリッジ経由で読み取ります)。

長時間実行するエージェントや CI に最適です。ターンごとのオーバーヘッドが低く、 ホスト上のローカル編集によってリモート状態が暗黙に上書きされることもありません。

モードの選択

mirror remote
正規のワークスペース ローカルホスト リモート OpenShell
同期方向 双方向(実行ごと) 1 回限りの初期データ投入
ターンごとの負荷 高い(アップロード+ダウンロード) 低い(リモートを直接操作)
ローカル編集の反映 あり(次回の実行時) なし(再作成するまで)
最適な用途 開発ワークフロー 長時間実行するエージェント、CI

設定リファレンス

すべての OpenShell 設定は plugins.entries.openshell.config 配下にあります。

キー デフォルト 説明
mode "mirror" または "remote" "mirror" ワークスペース同期モード
command string "openshell" openshell CLI のパスまたは名前
from string "openclaw" 初回作成時のサンドボックスソース
gateway string 未設定 OpenShell Gateway 名(トップレベルの --gateway
gatewayEndpoint string 未設定 OpenShell Gateway エンドポイント(トップレベルの --gateway-endpoint
policy string 未設定 サンドボックス作成用の OpenShell ポリシー ID
providers string[] [] サンドボックス作成時に関連付けるプロバイダー名(重複排除され、エントリごとに --provider フラグを 1 つ指定)
gpu boolean false GPU リソースを要求(--gpu
autoProviders boolean true 作成時に --auto-providers(false の場合は --no-auto-providers)を渡す
remoteWorkspaceDir string "/sandbox" サンドボックス内の主要な書き込み可能ワークスペース
remoteAgentWorkspaceDir string "/agent" エージェントワークスペースのマウントパス(ワークスペースアクセスが rw でない場合は読み取り専用)
timeoutSeconds number 120 openshell CLI 操作のタイムアウト

remoteWorkspaceDirremoteAgentWorkspaceDir は絶対パスである必要があり、 管理対象ルート /sandbox または /agent の配下に収まらなければなりません。その他の絶対パスは 拒否されます。

サンドボックスレベルの設定(modescopeworkspaceAccess)は、他のバックエンドと同様に agents.defaults.sandbox 配下にあります。完全な対応表については サンドボックス化を参照してください。

最小構成のリモート設定

json5
{  agents: {    defaults: {      sandbox: {        mode: "all",        backend: "openshell",      },    },  },  plugins: {    entries: {      openshell: {        enabled: true,        config: {          from: "openclaw",          mode: "remote",        },      },    },  },}

GPU を使用するミラーモード

json5
{  agents: {    defaults: {      sandbox: {        mode: "all",        backend: "openshell",        scope: "agent",        workspaceAccess: "rw",      },    },  },  plugins: {    entries: {      openshell: {        enabled: true,        config: {          from: "openclaw",          mode: "mirror",          gpu: true,          providers: ["openai"],          timeoutSeconds: 180,        },      },    },  },}

カスタム Gateway を使用するエージェント単位の OpenShell

json5
{  agents: {    defaults: {      sandbox: { mode: "off" },    },    list: [      {        id: "researcher",        sandbox: {          mode: "all",          backend: "openshell",          scope: "agent",          workspaceAccess: "rw",        },      },    ],  },  plugins: {    entries: {      openshell: {        enabled: true,        config: {          from: "openclaw",          mode: "remote",          gateway: "lab",          gatewayEndpoint: "https://lab.example",          policy: "strict",        },      },    },  },}

ライフサイクル管理

bash
# すべてのサンドボックスランタイムを一覧表示(Docker + OpenShell)openclaw sandbox list # 有効なポリシーを確認openclaw sandbox explain # 再作成(リモートワークスペースを削除し、次回使用時に再度初期データを投入)openclaw sandbox recreate --all

remote モードでは、再作成が特に重要です。対象スコープの正規の リモートワークスペースが削除され、次回使用時にローカルから新しいワークスペースへ 初期データが投入されます。mirror モードではローカルが正規の状態として維持されるため、 再作成は主にリモート実行環境をリセットします。

次のいずれかを変更した後は再作成してください。

  • agents.defaults.sandbox.backend
  • plugins.entries.openshell.config.from
  • plugins.entries.openshell.config.mode
  • plugins.entries.openshell.config.policy

セキュリティ強化

ミラーモードのファイルシステムブリッジはローカルワークスペースのルートを固定し、 読み取り、書き込み、ディレクトリ作成、削除、名前変更の前に、正規パスを (realpath を使用して)毎回再確認し、パス途中のシンボリックリンクを拒否します。シンボリックリンクの 差し替えやワークスペースの再マウントによって、ミラー対象ツリー外へファイルアクセスを リダイレクトすることはできません。

現在の制限事項

  • OpenShell バックエンドではサンドボックスブラウザーはサポートされません。
  • sandbox.docker.binds は OpenShell には適用されません。バインドが設定されている場合、 サンドボックスの作成は失敗します。
  • sandbox.docker.* 配下の Docker 固有のランタイム設定(env を除く)は、 Docker バックエンドにのみ適用されます。

仕組み

  1. OpenClaw はサンドボックス名を指定して sandbox get を実行します(設定されている --gateway--gateway-endpoint を含む)。失敗した場合は、 sandbox create で作成し、--name--from、設定されている場合は --policy、 有効な場合は --gpu--auto-providers--no-auto-providers、および設定済みの プロバイダーごとに 1 つの --provider フラグを渡します。
  2. OpenClaw はサンドボックス名を指定して sandbox ssh-config を実行し、SSH 接続情報を取得します。
  3. コアが SSH 設定を一時ファイルへ書き込み、汎用 SSH バックエンドと同じ リモートファイルシステムブリッジを介して SSH セッションを開きます。
  4. mirror モード:実行前にローカルからリモートへ同期し、実行後にリモートから同期を戻します。
  5. remote モード:作成時に一度だけ初期データを投入し、その後はリモート ワークスペースを直接操作します。

関連項目

Was this useful?
On this page

On this page