跳到內容

如何配置 Multi-Agent Sandbox 與工具權限

你是否遇過這種情況:你想給自己的 AI 助理最高權限,讓它幫你處理各種繁瑣任務,但當你要開發一個給家人或公眾使用的機器人時,又擔心它權限太大,不小心刪掉你的重要檔案或執行危險指令?

管理多個 Agent 的權限與隔離環境,一直是開發者最頭痛的問題。這篇文章會教你如何透過 OpenClaw 的配置,讓不同的 Agent 擁有各自的 Sandbox 模式與工具清單,達成靈活又安全的權限控管。

  • OpenClaw 環境
  • Docker(如果你需要使用 Sandbox 功能)
  • 基礎 JSON 配置知識
  • 不同的工作目錄 (agentDir)

要在 5 分鐘內建立一個「全權限」助理與一個「受限」機器人的混合配置,你可以參考以下步驟。

在你的配置文件中,透過 agents.list 定義不同的 Agent。你可以為每個 Agent 設置獨立的 sandbox 模式與 tools 權限。

{
"agents": {
"list": [
{
"id": "main",
"default": true,
"name": "Personal Assistant",
"workspace": "~/.openclaw/workspace",
"sandbox": { "mode": "off" }
},
{
"id": "family",
"name": "Family Bot",
"workspace": "~/.openclaw/workspace-family",
"sandbox": {
"mode": "all",
"scope": "agent"
},
"tools": {
"allow": ["read"],
"deny": ["exec", "write", "edit", "apply_patch", "process", "browser"]
}
}
]
},
"bindings": [
{
"agentId": "family",
"match": {
"provider": "whatsapp",
"accountId": "*",
"peer": {
"kind": "group",
"id": "120363424282127706@g.us"
}
}
}
]
}

配置結果:

  • main Agent:直接在你的主機執行,擁有完整的工具存取權。
  • family Agent:在 Docker 容器中執行(每個 Agent 一個容器),且只能使用 read 工具。

當全域配置(agents.defaults.*)與 Agent 特定配置(agents.list[].*)同時存在時,Agent 特定配置會覆蓋全域配置。

例如,agents.list[].sandbox.mode 的優先級高於 agents.defaults.sandbox.mode。這讓你可以預設所有 Agent 都在 Sandbox 中運行,但唯獨給予 main Agent 權限繞過 Sandbox。

你不需要一個個列出工具名稱,可以使用群組縮寫:

  • group:runtime: exec, bash, process
  • group:fs: read, write, edit, apply_patch
  • group:messaging: message
  • group:openclaw: 所有 OpenClaw 內建工具

如果你希望多個工作相關的任務共享同一個隔離環境,可以將 scope 設置為 shared。

{
"agents": {
"list": [
{
"id": "personal",
"workspace": "~/.openclaw/workspace-personal",
"sandbox": { "mode": "off" }
},
{
"id": "work",
"workspace": "~/.openclaw/workspace-work",
"sandbox": {
"mode": "all",
"scope": "shared",
"workspaceRoot": "/tmp/work-sandboxes"
},
"tools": {
"allow": ["read", "write", "apply_patch", "exec"],
"deny": ["browser", "gateway", "discord"]
}
}
]
}
}

這裡提供兩個常見的工具限制方案:

方案 A:唯讀 Agent

{
"tools": {
"allow": ["read"],
"deny": ["exec", "write", "edit", "apply_patch", "process"]
}
}

方案 B:安全執行(禁止修改檔案)

{
"tools": {
"allow": ["read", "exec", "process"],
"deny": ["write", "edit", "apply_patch", "browser", "gateway"]
}
}

Agent 雖然設置了 mode: "all" 但未進入 Sandbox

Section titled “Agent 雖然設置了 mode: "all" 但未進入 Sandbox”
  • 檢查是否有全域的 agents.defaults.sandbox.mode 覆蓋了設置。
  • 確保在 agents.list[] 中明確指定了 sandbox.mode: "all"。
  • 檢查工具過濾順序:Global → Agent → Sandbox → Subagent。
  • 每一層只能進一步限制工具,不能重新開放已被上層禁用的工具。
  • 查看 Gateway 日誌確認過濾邏輯:tail -f ~/.openclaw/logs/gateway.log | grep "filtering tools"。
  • 在 Agent 特定配置中設置 scope: "agent"。
  • 預設的 "session" 模式會為每個會話建立獨立容器。

如果你在配置過程中遇到任何問題,可以隨時諮詢 AI Setup Assistant 獲取幫助。

OpenClaw

OpenClaw Expert

還是卡住了?

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