Skip to main content
多代理設定中的每個代理都可以覆寫全域沙箱與工具原則。本頁說明各代理設定、優先順序規則及範例。

沙箱隔離

後端與模式 — 完整的沙箱參考資料。

沙箱、工具原則與提升權限的比較

偵錯「為什麼會被封鎖?」

提升權限模式

供受信任傳送者使用的提升權限執行功能。
驗證以代理為範圍:每個代理在 ~/.openclaw/agents/<agentId>/agent/openclaw-agent.sqlite 中都有自己的 agentDir 驗證儲存區。絕不可跨代理重複使用 agentDir。代理沒有本機設定檔時,可以讀取預設/主要代理的驗證設定檔,但 OAuth 重新整理權杖不會複製到次要代理儲存區。如果手動複製認證資訊,請僅複製可攜式靜態 api_keytoken 設定檔。

設定範例

結果:
  • main 代理:在主機上執行,擁有完整工具存取權。
  • family 代理:在 Docker 中執行(每個代理一個容器),只能使用 read 並傳送目前對話的訊息。
結果:
  • 預設代理會取得程式設計工具。
  • support 代理僅能傳訊(另加 Slack 工具)。

設定優先順序

同時存在全域(agents.defaults.*)與代理專屬(agents.entries.*.*)設定時:

沙箱設定

代理專屬設定會覆寫全域設定:
agents.entries.*.sandbox.{docker,browser,prune}.* 會針對該代理覆寫 agents.defaults.sandbox.{docker,browser,prune}.*(當沙箱範圍解析為 "shared" 時會忽略)。

工具限制

篩選順序如下:
1

工具設定檔

tools.profileagents.entries.*.tools.profile
2

供應商工具設定檔

tools.byProvider[provider].profileagents.entries.*.tools.byProvider[provider].profile
3

全域工具原則

tools.allow / tools.deny
4

供應商工具原則

tools.byProvider[provider].allow/deny
5

代理專屬工具原則

agents.entries.*.tools.allow/deny
6

代理供應商原則

agents.entries.*.tools.byProvider[provider].allow/deny
7

沙箱工具原則

tools.sandbox.toolsagents.entries.*.tools.sandbox.tools
8

子代理工具原則

tools.subagents.tools(如適用)。
  • 每個層級都可以進一步限制工具,但無法重新授予先前層級已拒絕的工具。
  • 如果已設定 agents.entries.*.tools.sandbox.tools,它會針對該代理取代 tools.sandbox.tools
  • 如果已設定 agents.entries.*.tools.profile,它會針對該代理覆寫 tools.profile
  • 供應商工具鍵可接受 provider(例如 google-antigravity)或 provider/model(例如 openai/gpt-5.4)。
如果該鏈中的任何明確允許清單導致執行時沒有可呼叫的工具,OpenClaw 會在將提示提交給模型之前停止。這是刻意設計的行為:設定了缺少工具(例如 agents.entries.*.tools.allow: ["query_db"])的代理,應明確失敗,直到啟用註冊 query_db 的外掛為止,而不是繼續作為純文字代理執行。
工具原則支援可展開為多個工具的 group:* 簡寫。完整清單請參閱工具群組 各代理的提升權限覆寫(agents.entries.*.tools.elevated)可以進一步限制特定代理的提升權限執行功能。詳細資訊請參閱提升權限模式

從單一代理遷移

舊版 agents.defaults.*/agents.entries.*.* 設定鍵(例如 sandbox.perSessionagentRuntimeembeddedPi)會由 openclaw doctor 遷移;之後請優先使用 agents.defaults + agents.entries

工具限制範例


常見陷阱:「non-main」

agents.defaults.sandbox.mode: "non-main" 會比對工作階段鍵與主要工作階段鍵(固定為 "main"session.mainKey 不可由使用者設定,而且 OpenClaw 會針對任何其他值發出警告並予以忽略),而不是比對代理 ID。群組/頻道工作階段一律擁有自己的鍵,因此會被視為非主要工作階段並套用沙箱。如果希望代理永遠不使用沙箱,請設定 agents.entries.*.sandbox.mode: "off"

測試

設定多代理沙箱與工具後:
1

檢查代理解析結果

2

驗證沙箱容器

3

測試工具限制

  • 傳送需要受限制工具的訊息。
  • 確認代理無法使用被拒絕的工具。
4

監控記錄


疑難排解

  • 檢查是否有全域 agents.defaults.sandbox.mode 覆寫該設定。
  • 代理專屬設定的優先順序較高,因此請設定 agents.entries.*.sandbox.mode: "all"
  • 檢查完整的篩選順序:設定檔 → 提供者設定檔 → 全域政策 → 提供者政策 → 代理程式政策 → 代理程式提供者政策 → 沙箱 → 子代理程式。
  • 每一層只能進一步限制,無法重新授予權限。
  • 請參閱沙箱、工具政策與提升權限的比較,以進行逐步偵錯。
  • 預設的 scope"agent"(每個代理程式 ID 使用一個容器)。
  • 設定 scope: "session" 可讓每個工作階段使用一個容器,或設定 scope: "shared" 以在多個代理程式之間重複使用同一個容器。

相關內容