// dokumentacja openclaw

Multi-Agent w OpenClaw — routing i izolacja workspace

Czym jest agent w OpenClaw

Agent to podstawowa jednostka wykonawcza w OpenClaw. Każdy agent to niezależna instancja, która posiada własny:

  • Workspace — izolowany katalog na dysku z plikami konfiguracyjnymi, danymi i stanem agenta
  • State directory — katalog przechowujący bieżący stan: aktywne sesje, pamięć trwałą, cache
  • Session store — backend przechowujący historię rozmów (plik, Redis lub SQLite)
  • System prompt — unikalna osobowość i zasady działania
  • Model AI — każdy agent może korzystać z innego providera i modelu

W najprostszym scenariuszu OpenClaw uruchamia jednego agenta, który obsługuje wszystkie kanały. Jednak architektura multi-agent pozwala na znacznie bardziej złożone konfiguracje.

Zasady izolacji

Agenty w konfiguracji multi-agent są od siebie izolowane. Oznacza to, że:

  • Agent A nie ma dostępu do sesji agenta B
  • Pamięć trwała jednego agenta nie jest widoczna dla innego (chyba że explicite włączono współdzielenie)
  • Każdy agent może mieć inne narzędzia, inny sandbox i inne uprawnienia
  • Awaria jednego agenta nie wpływa na działanie pozostałych

Ta izolacja jest kluczowa z punktu widzenia bezpieczeństwa — możesz mieć agenta publicznego (obsługującego klientów) z ograniczonymi uprawnieniami i prywatnego (wewnętrznego) z pełnym dostępem do narzędzi.

Architektura routingu

Gdy wiadomość przychodzi do Gateway, system routingu decyduje, który agent powinien ją obsłużyć. Proces ten opiera się na bindingach — regułach przypisujących kanały i konteksty do agentów.

Bindingi

Binding to reguła, która łączy kanał (lub jego fragment) z konkretnym agentem:

{
  agents: {
    support_bot: {
      model: "openai/gpt-4o",
      system_prompt: "Jesteś botem wsparcia technicznego...",
      bindings: [
        { channel: "telegram", type: "dm" },
        { channel: "discord", server: "123456", channels: ["#support"] },
      ]
    },
    internal_bot: {
      model: "anthropic/claude-sonnet-4-20250514",
      system_prompt: "Jesteś wewnętrznym asystentem zespołu...",
      bindings: [
        { channel: "slack", workspace: "my-team" },
        { channel: "discord", server: "123456", channels: ["#internal"] },
      ]
    }
  }
}

Priorytet routingu

Gdy wiadomość pasuje do wielu bindingów, OpenClaw stosuje system priorytetów:

  1. Dokładne dopasowanie kanału i kontekstu — np. konkretny kanał Discord na konkretnym serwerze
  2. Dopasowanie kanału i typu — np. wszystkie DM na Telegramie
  3. Dopasowanie ogólne — np. cały kanał Slack
  4. Agent domyślny — jeśli żaden binding nie pasuje, wiadomość trafia do agenta oznaczonego jako default: true

Implementacja wielokanałowa

Typowy scenariusz multi-agent to organizacja z różnymi agentami dla różnych celów:

Przykład: firma z trzema agentami

  • Agent „Kasia" (support) — obsługuje klientów na Telegramie i WebChat. Przyjazny ton, dostęp do FAQ i bazy wiedzy. Model: GPT-4o.
  • Agent „DevBot" (development) — asystent zespołu programistów na Slacku. Dostęp do narzędzi: browser, shell, GitHub API. Model: Claude Sonnet.
  • Agent „Nocny" (monitoring) — uruchamia się przez crony, sprawdza statusy serwisów, wysyła raporty na Discorda. Bez interakcji z użytkownikami.

Struktura konfiguracji multi-agent

Pełna konfiguracja multi-agent w pliku openclaw.json:

{
  gateway: {
    mode: "multi-agent",
    default_agent: "support",
  },
  agents: {
    support: {
      workspace: "./workspaces/support",
      model: "openai/gpt-4o",
      system_prompt: "...",
      tools: ["browser", "web_search"],
      bindings: [/* ... */],
    },
    devbot: {
      workspace: "./workspaces/devbot",
      model: "anthropic/claude-sonnet-4-20250514",
      system_prompt: "...",
      tools: ["browser", "shell", "file_access"],
      sandbox: { runtime: "docker" },
      bindings: [/* ... */],
    }
  }
}

Umiejętności (skills)

Skills to rozszerzalne umiejętności, które możesz przypisać do konkretnych agentów. Skill to skrypt (JavaScript, Python lub shell), który agent może wywołać jako narzędzie:

{
  agents: {
    support: {
      skills: [
        {
          name: "check_order",
          description: "Sprawdza status zamówienia w systemie",
          script: "./skills/check_order.js",
          parameters: {
            order_id: { type: "string", required: true }
          }
        }
      ]
    }
  }
}

Skills pozwalają agentom na interakcję z zewnętrznymi systemami (bazy danych, API, CRM) w kontrolowany i bezpieczny sposób.

Funkcje międzyagentowe

Choć agenty są domyślnie izolowane, OpenClaw oferuje mechanizmy kontrolowanej współpracy:

Współdzielona pamięć (shared memory)

{
  memory: {
    shared_namespace: "company_knowledge",
    agents: ["support", "devbot"],
    permissions: {
      support: "read",
      devbot: "read_write",
    }
  }
}

Wspólna przestrzeń pamięci pozwala agentom dzielić wiedzę — np. DevBot zapisuje informacje o nowych funkcjach, a Support Bot je odczytuje podczas rozmów z klientami.

Wyszukiwanie semantyczne pamięci

Pamięć trwała agenta jest indeksowana semantycznie (embedding vectory), co pozwala na wyszukiwanie po znaczeniu, nie tylko po słowach kluczowych. Agent może zapytać: „Co wiem o problemach z płatnościami?" i otrzymać wszystkie powiązane wspomnienia.

Sandbox międzyagentowy

Agenty mogą współdzielić sandbox (np. wspólny kontener Docker), co pozwala na scenariusze takie jak: jeden agent pisze kod, drugi go testuje — oba w tym samym środowisku.