Konfiguracja sandboxa i narzędzi dla wielu agentów
Każdy agent w konfiguracji wielu agentów może nadpisać globalną politykę sandboxa i narzędzi. Ta strona opisuje konfigurację per-agent, zasady pierwszeństwa i przykłady.- Backendy i tryby sandboxa: zobacz Sandboxing.
- Debugowanie zablokowanych narzędzi: zobacz Sandbox vs Tool Policy vs Elevated oraz
openclaw sandbox explain. - Elevated exec: zobacz Elevated Mode.
agentDir w
~/.openclaw/agents/<agentId>/agent/auth-profiles.json.
Poświadczenia nie są współdzielone między agentami. Nigdy nie używaj ponownie agentDir dla wielu agentów.
Jeśli chcesz współdzielić poświadczenia, skopiuj auth-profiles.json do agentDir drugiego agenta.
Przykłady konfiguracji
Przykład 1: agent osobisty + ograniczony agent rodzinny
- Agent
main: działa na hoście, pełny dostęp do narzędzi - Agent
family: działa w Dockerze (jeden kontener na agenta), tylko narzędzieread
Przykład 2: agent do pracy ze współdzielonym sandboxem
Przykład 2b: globalny profil coding + agent tylko do wiadomości
- domyślni agenci otrzymują narzędzia coding
- agent
supportjest tylko do wiadomości (+ narzędzie Slack)
Przykład 3: różne tryby sandboxa dla różnych agentów
Pierwszeństwo konfiguracji
Gdy istnieją zarówno konfiguracje globalne (agents.defaults.*), jak i specyficzne dla agenta (agents.list[].*):
Konfiguracja sandboxa
Ustawienia specyficzne dla agenta nadpisują globalne:agents.list[].sandbox.{docker,browser,prune}.*nadpisujeagents.defaults.sandbox.{docker,browser,prune}.*dla tego agenta (ignorowane, gdy zakres sandboxa zostaje rozwiązany do"shared").
Ograniczenia narzędzi
Kolejność filtrowania jest następująca:- Profil narzędzi (
tools.profilelubagents.list[].tools.profile) - Profil narzędzi providera (
tools.byProvider[provider].profilelubagents.list[].tools.byProvider[provider].profile) - Globalna polityka narzędzi (
tools.allow/tools.deny) - Polityka narzędzi providera (
tools.byProvider[provider].allow/deny) - Polityka narzędzi specyficzna dla agenta (
agents.list[].tools.allow/deny) - Polityka providera dla agenta (
agents.list[].tools.byProvider[provider].allow/deny) - Polityka narzędzi sandboxa (
tools.sandbox.toolslubagents.list[].tools.sandbox.tools) - Polityka narzędzi subagenta (
tools.subagents.tools, jeśli dotyczy)
agents.list[].tools.sandbox.tools, zastępuje ono tools.sandbox.tools dla tego agenta.
Jeśli ustawiono agents.list[].tools.profile, nadpisuje ono tools.profile dla tego agenta.
Klucze narzędzi providera akceptują zarówno provider (np. google-antigravity), jak i provider/model (np. openai/gpt-5.4).
Polityki narzędzi obsługują skróty group:*, które rozwijają się do wielu narzędzi. Pełną listę znajdziesz w Grupach narzędzi.
Nadpisania elevated per-agent (agents.list[].tools.elevated) mogą dodatkowo ograniczać elevated exec dla konkretnych agentów. Szczegóły znajdziesz w Elevated Mode.
Migracja z pojedynczego agenta
Przed (jeden agent):agent.* są migrowane przez openclaw doctor; od teraz preferuj agents.defaults + agents.list.
Przykłady ograniczeń narzędzi
Agent tylko do odczytu
Agent bezpiecznego wykonywania (bez modyfikacji plików)
Agent tylko do komunikacji
sessions_history w tym profilu nadal zwraca ograniczony, zsanityzowany widok
przywoływania zamiast surowego zrzutu transkryptu. Przywoływanie asystenta usuwa znaczniki myślenia,
rusztowanie <relevant-memories>, tekstowe payloady XML wywołań narzędzi
(w tym <tool_call>...</tool_call>,
<function_call>...</function_call>, <tool_calls>...</tool_calls>,
<function_calls>...</function_calls> oraz obcięte bloki wywołań narzędzi),
zdegradowane rusztowanie wywołań narzędzi, wyciekłe tokeny sterowania modeli ASCII/full-width
oraz nieprawidłowy XML wywołań narzędzi MiniMax przed redakcją/obcięciem.
Częsty problem: non-main
agents.defaults.sandbox.mode: "non-main" opiera się na session.mainKey (domyślnie "main"),
a nie na identyfikatorze agenta. Sesje grupowe/kanałowe zawsze dostają własne klucze, więc
są traktowane jako non-main i będą objęte sandboxem. Jeśli chcesz, aby agent nigdy nie był objęty
sandboxem, ustaw agents.list[].sandbox.mode: "off".
Testowanie
Po skonfigurowaniu sandboxa i narzędzi dla wielu agentów:-
Sprawdź rozwiązywanie agenta:
-
Zweryfikuj kontenery sandboxa:
-
Przetestuj ograniczenia narzędzi:
- Wyślij wiadomość wymagającą ograniczonych narzędzi
- Sprawdź, czy agent nie może używać zabronionych narzędzi
-
Monitoruj logi:
Rozwiązywanie problemów
Agent nie jest objęty sandboxem mimo mode: "all"
- Sprawdź, czy nie istnieje globalne
agents.defaults.sandbox.mode, które to nadpisuje - Konfiguracja specyficzna dla agenta ma pierwszeństwo, więc ustaw
agents.list[].sandbox.mode: "all"
Narzędzia są nadal dostępne mimo listy deny
- Sprawdź kolejność filtrowania narzędzi: globalna → agent → sandbox → subagent
- Każdy poziom może tylko dalej ograniczać, a nie ponownie przyznawać
- Zweryfikuj w logach:
[tools] filtering tools for agent:${agentId}
Kontener nie jest izolowany per-agent
- Ustaw
scope: "agent"w konfiguracji sandboxa specyficznej dla agenta - Domyślnie używane jest
"session", co tworzy jeden kontener na sesję
Zobacz też
- Sandboxing — pełna dokumentacja sandboxa (tryby, zakresy, backendy, obrazy)
- Sandbox vs Tool Policy vs Elevated — debugowanie „dlaczego to jest zablokowane?”
- Elevated Mode
- Routing wielu agentów
- Konfiguracja sandboxa
- Zarządzanie sesjami