跳到內容

Exec Host 重構計劃:靈活掌控你的指令執行環境

你是否曾經在開發 Agent 時感到糾結?想讓它執行指令,但又擔心權限開太大會出事。如果把執行環境鎖死在 Sandbox 裡,有時又綁手綁腳,沒辦法存取本機資源或特定的遠端節點。

這種在「安全」與「便利」之間的拉鋸,是每個開發自動化工具的人都會遇到的痛點。我們這次的重構計劃,就是為了讓你能在不同的執行主機之間無縫切換,同時保有完整的安全控制權。

在開始之前,請確保你已經準備好以下環境(僅限源文檔提及內容):

  • OpenClaw 基礎環境
  • 已安裝 Node runner 的目標機器(若需使用 node host)
  • macOS, Linux 或 Windows 作業系統

要控制指令在哪裡執行,你只需要調整 exec.host 和 exec.security 這兩個核心參數。

你可以根據需求將 exec.host 設定為以下三種模式:

  • sandbox: 在 Docker 容器中執行(這是目前的預設行為)。
  • gateway: 直接在 Gateway 所在的機器上執行。
  • node: 透過 Bridge 在遠端的 Node runner 上執行。

為了保護你的系統,你可以針對每個 Agent 或全域設定安全模式:

  • deny: 預設拒絕所有執行請求。
  • allowlist: 僅允許符合白名單的指令。
  • full: 允許所有指令(等同於之前的 elevated 模式)。

所有的授權資訊都會存在 ~/.openclaw/exec-approvals.json。這是一個 JSON 檔案,格式如下:

{
"version": 1,
"socket": {
"path": "~/.openclaw/exec-approvals.sock",
"token": "base64-opaque-token"
},
"defaults": {
"security": "deny",
"ask": "on-miss",
"askFallback": "deny"
},
"agents": {
"agent-id-1": {
"security": "allowlist",
"ask": "on-miss",
"allowlist": [
{
"pattern": "~/Projects/**/bin/rg",
"lastUsedAt": 0,
"lastUsedCommand": "rg -n TODO",
"lastResolvedPath": "/Users/user/Projects/.../bin/rg"
}
]
}
}
}

你可以直接在對話中使用指令來快速切換設定:

  • /exec host=node security=allowlist ask=on-miss
  • /elevated on: 快速開啟 gateway 模式並給予 full 權限。

你可以獨立於白名單之外設定詢問政策:

  • off: 從不詢問。
  • on-miss: 只有在指令不在白名單時才跳出詢問。
  • always: 每次執行指令前都要你確認。

為了避免輸出過多導致系統卡頓,我們會將 stdout 與 stderr 的總量限制在 200k,並保留最後 20k 的內容供事件追蹤使用。如果超過限制,輸出的結尾會顯示 ... (truncated)。

當 ask 模式需要你確認,但 macOS app 或 UI 無法連線時,系統會參考 askFallback 的設定。如果 askFallback 設為 deny,該指令就會被直接攔截。

如果你有多個 Node,可以使用 exec.node 來指定具體的 nodeId、displayName 或 IP 地址。建議使用至少 6 位元的 nodeId 前綴來確保唯一性。

想要自動化完成這些配置嗎?試試我們的 AI Setup Assistant。

OpenClaw

OpenClaw Expert

還是卡住了?

如果這篇文件沒有解決你的情境,直接問 OpenClaw Expert,拿到可執行步驟。