OpenShell 是 OpenClaw 的受管沙盒後端。OpenClaw 不在本機執行 Docker 容器,而是將沙盒生命週期委派給Documentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
openshell CLI,由它透過 SSH 型命令執行佈建遠端環境。
OpenShell Plugin 重複使用與通用 SSH 後端相同的核心 SSH 傳輸和遠端檔案系統橋接。它新增了
OpenShell 專屬生命週期(sandbox create/get/delete、sandbox ssh-config)
以及可選的 mirror 工作區模式。
先決條件
- 已安裝
openshellCLI 並位於PATH上(或透過plugins.entries.openshell.config.command設定自訂路徑) - 具備沙盒存取權的 OpenShell 帳戶
- OpenClaw Gateway 在主機上執行中
快速開始
- 啟用 Plugin 並設定沙盒後端:
- 重新啟動 Gateway。在下一次 agent 回合中,OpenClaw 會建立 OpenShell 沙盒,並透過它路由工具執行。
- 驗證:
工作區模式
這是使用 OpenShell 時最重要的決策。mirror
當你想讓本機工作區保持為標準來源時,請使用
plugins.entries.openshell.config.mode: "mirror"。
行為:
- 在
exec之前,OpenClaw 會將本機工作區同步到 OpenShell 沙盒。 - 在
exec之後,OpenClaw 會將遠端工作區同步回本機工作區。 - 檔案工具仍會透過沙盒橋接運作,但本機工作區在回合之間仍是事實來源。
- 你在 OpenClaw 外部於本機編輯檔案,並希望這些變更自動出現在沙盒中。
- 你希望 OpenShell 沙盒的行為盡可能接近 Docker 後端。
- 你希望主機工作區在每個 exec 回合後反映沙盒寫入。
remote
當你想讓 OpenShell 工作區成為標準來源時,請使用
plugins.entries.openshell.config.mode: "remote"。
行為:
- 第一次建立沙盒時,OpenClaw 會從本機工作區一次性植入遠端工作區。
- 之後,
exec、read、write、edit和apply_patch會直接對遠端 OpenShell 工作區運作。 - OpenClaw 不會將遠端變更同步回本機工作區。
- 提示時的媒體讀取仍可運作,因為檔案和媒體工具會透過沙盒橋接讀取。
- 沙盒應主要存在於遠端端。
- 你想降低每回合的同步開銷。
- 你不希望主機本機編輯在未明示的情況下覆寫遠端沙盒狀態。
選擇模式
mirror | remote | |
|---|---|---|
| 標準工作區 | 本機主機 | 遠端 OpenShell |
| 同步方向 | 雙向(每次 exec) | 一次性植入 |
| 每回合開銷 | 較高(上傳 + 下載) | 較低(直接遠端操作) |
| 本機編輯可見嗎? | 是,下一次 exec 時 | 否,直到重新建立 |
| 最適合 | 開發工作流程 | 長時間執行的 agent、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 端點 URL(--gateway-endpoint) |
policy | string | — | 用於建立沙盒的 OpenShell 原則 ID |
providers | string[] | [] | 建立沙盒時要附加的提供者名稱 |
gpu | boolean | false | 要求 GPU 資源 |
autoProviders | boolean | true | 建立沙盒時傳遞 --auto-providers |
remoteWorkspaceDir | string | "/sandbox" | 沙盒內主要可寫工作區 |
remoteAgentWorkspaceDir | string | "/agent" | Agent 工作區掛載路徑(用於唯讀存取) |
timeoutSeconds | number | 120 | openshell CLI 操作的逾時時間 |
mode、scope、workspaceAccess)和任何後端一樣,在
agents.defaults.sandbox 下設定。完整矩陣請參閱
沙盒化。
範例
最小遠端設定
搭配 GPU 的 Mirror 模式
使用自訂 Gateway 的每 agent OpenShell
生命週期管理
OpenShell 沙盒透過一般沙盒 CLI 管理:remote 模式,重新建立尤其重要:它會刪除該範圍的標準遠端工作區。下一次使用時,會從本機工作區植入全新的遠端工作區。
對於 mirror 模式,重新建立主要是重設遠端執行環境,因為本機工作區仍是標準來源。
何時重新建立
變更下列任何項目後請重新建立:agents.defaults.sandbox.backendplugins.entries.openshell.config.fromplugins.entries.openshell.config.modeplugins.entries.openshell.config.policy
安全強化
OpenShell 會固定工作區根 fd,並在每次讀取前重新檢查沙盒身分,因此符號連結替換或重新掛載的工作區無法將讀取重新導向到預期遠端工作區之外。目前限制
- OpenShell 後端不支援沙盒瀏覽器。
sandbox.docker.binds不適用於 OpenShell。sandbox.docker.*下的 Docker 專屬執行階段旋鈕只適用於 Docker 後端。
運作方式
- OpenClaw 呼叫
openshell sandbox create(依設定使用--from、--gateway、--policy、--providers、--gpu旗標)。 - OpenClaw 呼叫
openshell sandbox ssh-config <name>取得沙盒的 SSH 連線詳細資訊。 - Core 將 SSH 設定寫入暫存檔,並使用與通用 SSH 後端相同的遠端檔案系統橋接開啟 SSH 工作階段。
- 在
mirror模式中:exec 前從本機同步到遠端,執行,exec 後同步回來。 - 在
remote模式中:建立時植入一次,然後直接在遠端工作區上操作。
相關
- 沙盒化 — 模式、範圍與後端比較
- 沙盒 vs 工具原則 vs 提權 — 偵錯被封鎖的工具
- 多 Agent 沙盒和工具 — 每 agent 覆寫
- 沙盒 CLI —
openclaw sandbox命令