Перейти до основного вмісту

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.

Кожен агент у багатоагентному налаштуванні може перевизначати глобальні політики пісочниці та інструментів. На цій сторінці описано конфігурацію для окремих агентів, правила пріоритету та приклади.

Пісочниця

Бекенди та режими — повна довідка з пісочниці.

Пісочниця, політика інструментів і підвищений режим

Налагодження: «чому це заблоковано?»

Підвищений режим

Підвищений exec для довірених відправників.
Автентифікація має область дії агента: кожен агент має власне сховище автентифікації agentDir за адресою ~/.openclaw/agents/<agentId>/agent/auth-profiles.json. Ніколи не використовуйте agentDir повторно для різних агентів. Агенти можуть читати профілі автентифікації типового/основного агента, коли не мають локального профілю, але токени оновлення OAuth не клонуються до сховищ другорядних агентів. Якщо копіюєте облікові дані вручну, копіюйте лише переносні статичні профілі api_key або token.

Приклади конфігурації

{
  "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", "message"],
          "deny": ["exec", "write", "edit", "apply_patch", "process", "browser"],
          "message": {
            "crossContext": {
              "allowWithinProvider": false,
              "allowAcrossProviders": false
            }
          }
        }
      }
    ]
  },
  "bindings": [
    {
      "agentId": "family",
      "match": {
        "provider": "whatsapp",
        "accountId": "*",
        "peer": {
          "kind": "group",
          "id": "120363424282127706@g.us"
        }
      }
    }
  ]
}
Результат:
  • агент main: працює на хості, повний доступ до інструментів.
  • агент family: працює в Docker (один контейнер на агента), лише read і надсилання повідомлень у поточній розмові.
{
  "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"]
        }
      }
    ]
  }
}
{
  "tools": { "profile": "coding" },
  "agents": {
    "list": [
      {
        "id": "support",
        "tools": { "profile": "messaging", "allow": ["slack"] }
      }
    ]
  }
}
Результат:
  • типові агенти отримують інструменти для кодування.
  • агент support призначений лише для повідомлень (+ інструмент Slack).
{
  "agents": {
    "defaults": {
      "sandbox": {
        "mode": "non-main",
        "scope": "session"
      }
    },
    "list": [
      {
        "id": "main",
        "workspace": "~/.openclaw/workspace",
        "sandbox": {
          "mode": "off"
        }
      },
      {
        "id": "public",
        "workspace": "~/.openclaw/workspace-public",
        "sandbox": {
          "mode": "all",
          "scope": "agent"
        },
        "tools": {
          "allow": ["read"],
          "deny": ["exec", "write", "edit", "apply_patch"]
        }
      }
    ]
  }
}

Пріоритет конфігурації

Коли існують і глобальні (agents.defaults.*), і специфічні для агента (agents.list[].*) конфігурації:

Конфігурація пісочниці

Параметри конкретного агента перевизначають глобальні:
agents.list[].sandbox.mode > agents.defaults.sandbox.mode
agents.list[].sandbox.scope > agents.defaults.sandbox.scope
agents.list[].sandbox.workspaceRoot > agents.defaults.sandbox.workspaceRoot
agents.list[].sandbox.workspaceAccess > agents.defaults.sandbox.workspaceAccess
agents.list[].sandbox.docker.* > agents.defaults.sandbox.docker.*
agents.list[].sandbox.browser.* > agents.defaults.sandbox.browser.*
agents.list[].sandbox.prune.* > agents.defaults.sandbox.prune.*
agents.list[].sandbox.{docker,browser,prune}.* перевизначає agents.defaults.sandbox.{docker,browser,prune}.* для цього агента (ігнорується, коли область дії пісочниці розв’язується як "shared").

Обмеження інструментів

Порядок фільтрації такий:
1

Профіль інструментів

tools.profile або agents.list[].tools.profile.
2

Профіль інструментів провайдера

tools.byProvider[provider].profile або agents.list[].tools.byProvider[provider].profile.
3

Глобальна політика інструментів

tools.allow / tools.deny.
4

Політика інструментів провайдера

tools.byProvider[provider].allow/deny.
5

Політика інструментів конкретного агента

agents.list[].tools.allow/deny.
6

Політика провайдера агента

agents.list[].tools.byProvider[provider].allow/deny.
7

Політика інструментів пісочниці

tools.sandbox.tools або agents.list[].tools.sandbox.tools.
8

Політика інструментів субагента

tools.subagents.tools, якщо застосовно.
  • Кожен рівень може додатково обмежувати інструменти, але не може знову дозволити інструменти, заборонені на попередніх рівнях.
  • Якщо задано agents.list[].tools.sandbox.tools, воно замінює tools.sandbox.tools для цього агента.
  • Якщо задано agents.list[].tools.profile, воно перевизначає tools.profile для цього агента.
  • Ключі інструментів провайдера приймають або provider (наприклад, google-antigravity), або provider/model (наприклад, openai/gpt-5.4).
Якщо будь-який явний allowlist у цьому ланцюжку залишає запуск без доступних для виклику інструментів, OpenClaw зупиняється до надсилання prompt до моделі. Це навмисно: агент, налаштований із відсутнім інструментом, як-от agents.list[].tools.allow: ["query_db"], має явно завершитися помилкою, доки не буде ввімкнено Plugin, що реєструє query_db, а не продовжувати як агент лише для тексту.
Політики інструментів підтримують скорочення group:*, які розгортаються в кілька інструментів. Повний список див. у Групи інструментів. Перевизначення підвищеного режиму для окремих агентів (agents.list[].tools.elevated) можуть додатково обмежувати підвищений exec для конкретних агентів. Докладніше див. у Підвищений режим.

Міграція з одного агента

{
  "agents": {
    "defaults": {
      "workspace": "~/.openclaw/workspace",
      "sandbox": {
        "mode": "non-main"
      }
    }
  },
  "tools": {
    "sandbox": {
      "tools": {
        "allow": ["read", "write", "apply_patch", "exec"],
        "deny": []
      }
    }
  }
}
Застарілі конфігурації agent.* мігруються за допомогою openclaw doctor; надалі надавайте перевагу agents.defaults + agents.list.

Приклади обмеження інструментів

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

Поширена помилка: “non-main”

agents.defaults.sandbox.mode: "non-main" базується на session.mainKey (типово "main"), а не на ідентифікаторі агента. Сесії груп/каналів завжди отримують власні ключі, тому вони вважаються non-main і будуть виконуватися в пісочниці. Якщо ви хочете, щоб агент ніколи не використовував пісочницю, задайте agents.list[].sandbox.mode: "off".

Тестування

Після налаштування пісочниці та інструментів для multi-agent:
1

Перевірте визначення агента

openclaw agents list --bindings
2

Перевірте контейнери пісочниці

docker ps --filter "name=openclaw-sbx-"
3

Протестуйте обмеження інструментів

  • Надішліть повідомлення, яке потребує обмежених інструментів.
  • Переконайтеся, що агент не може використовувати заборонені інструменти.
4

Відстежуйте журнали

tail -f "${OPENCLAW_STATE_DIR:-$HOME/.openclaw}/logs/gateway.log" | grep -E "routing|sandbox|tools"

Усунення несправностей

  • Перевірте, чи немає глобального agents.defaults.sandbox.mode, який його перевизначає.
  • Конфігурація конкретного агента має пріоритет, тому задайте agents.list[].sandbox.mode: "all".
  • Перевірте порядок фільтрації інструментів: глобальний → агент → пісочниця → підагент.
  • Кожен рівень може лише додатково обмежувати, а не повертати дозволи.
  • Перевірте за журналами: [tools] filtering tools for agent:${agentId}.
  • Задайте scope: "agent" у конфігурації пісочниці конкретного агента.
  • Типове значення — "session", що створює один контейнер на сесію.

Пов’язане