Uruchom wiele izolowanych agentów — każdy z własnym workspace, katalogiem stanu (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.
agentDir) i historią sesji — oraz wiele kont kanałów (np. dwa konta WhatsApp) w jednym działającym Gateway. Wiadomości przychodzące są kierowane do właściwego agenta przez wiązania.
Agent oznacza tutaj pełny zakres dla danej persony: pliki workspace, profile uwierzytelniania, rejestr modeli i magazyn sesji. agentDir to katalog stanu na dysku, który przechowuje tę konfigurację per agent w ~/.openclaw/agents/<agentId>/. Wiązanie mapuje konto kanału (np. workspace Slack albo numer WhatsApp) na jednego z tych agentów.
Czym jest „jeden agent”?
Agent to w pełni wydzielony mózg z własnymi:- Workspace (pliki, AGENTS.md/SOUL.md/USER.md, notatki lokalne, reguły persony).
- Katalogiem stanu (
agentDir) na profile uwierzytelniania, rejestr modeli i konfigurację per agent. - Magazynem sesji (historia czatu + stan routingu) pod
~/.openclaw/agents/<agentId>/sessions.
sessions_history jest tutaj także bezpieczniejszą ścieżką przywoływania kontekstu między sesjami: zwraca ograniczony, oczyszczony widok, a nie surowy zrzut transkrypcji. Przywoływanie po stronie asystenta usuwa znaczniki myślenia, rusztowanie <relevant-memories>, tekstowe ładunki XML wywołań narzędzi (w tym <tool_call>...</tool_call>, <function_call>...</function_call>, <tool_calls>...</tool_calls>, <function_calls>...</function_calls> oraz ucięte bloki wywołań narzędzi), zdegradowane rusztowanie wywołań narzędzi, ujawnione tokeny sterujące modelu ASCII/pełnej szerokości oraz nieprawidłowy XML wywołań narzędzi MiniMax przed redakcją/ucięciem.~/.openclaw/skills, a następnie filtrowane według efektywnej listy dozwolonych Skills agenta, gdy jest skonfigurowana. Użyj agents.defaults.skills jako współdzielonej bazy i agents.list[].skills jako zamiany per agent. Zobacz Skills: per agent a współdzielone oraz Skills: listy dozwolonych Skills agenta.
Gateway może hostować jednego agenta (domyślnie) albo wielu agentów obok siebie.
Uwaga dotycząca workspace: workspace każdego agenta jest domyślnym cwd, a nie twardym sandboxem. Ścieżki względne są rozwiązywane wewnątrz workspace, ale ścieżki bezwzględne mogą sięgać do innych lokalizacji hosta, chyba że włączono sandboxing. Zobacz Sandboxing.
Ścieżki (szybka mapa)
- Konfiguracja:
~/.openclaw/openclaw.json(alboOPENCLAW_CONFIG_PATH) - Katalog stanu:
~/.openclaw(alboOPENCLAW_STATE_DIR) - Workspace:
~/.openclaw/workspace(albo~/.openclaw/workspace-<agentId>) - Katalog agenta:
~/.openclaw/agents/<agentId>/agent(alboagents.list[].agentDir) - Sesje:
~/.openclaw/agents/<agentId>/sessions
Tryb pojedynczego agenta (domyślny)
Jeśli nic nie zrobisz, OpenClaw uruchamia jednego agenta:agentIddomyślnie ma wartośćmain.- Sesje są kluczowane jako
agent:main:<mainKey>. - Workspace domyślnie ma wartość
~/.openclaw/workspace(albo~/.openclaw/workspace-<profile>, gdy ustawionoOPENCLAW_PROFILE). - Stan domyślnie ma wartość
~/.openclaw/agents/main/agent.
Pomocnik agenta
Użyj kreatora agentów, aby dodać nowego izolowanego agenta:bindings (albo pozwól kreatorowi to zrobić), aby kierować wiadomości przychodzące.
Zweryfikuj za pomocą:
Szybki start
Utwórz workspace każdego agenta
Użyj kreatora albo utwórz workspace ręcznie:Każdy agent otrzymuje własny workspace z
SOUL.md, AGENTS.md i opcjonalnym USER.md, a także dedykowany agentDir oraz magazyn sesji pod ~/.openclaw/agents/<agentId>.Utwórz konta kanałów
Utwórz po jednym koncie per agent w preferowanych kanałach:Zobacz przewodniki po kanałach: Discord, Telegram, WhatsApp.
- Discord: jeden bot per agent, włącz Message Content Intent, skopiuj każdy token.
- Telegram: jeden bot per agent przez BotFather, skopiuj każdy token.
- WhatsApp: połącz każdy numer telefonu per konto.
Dodaj agentów, konta i wiązania
Dodaj agentów pod
agents.list, konta kanałów pod channels.<channel>.accounts i połącz je za pomocą bindings (przykłady poniżej).Wielu agentów = wiele osób, wiele osobowości
Przy wielu agentach każdyagentId staje się w pełni izolowaną personą:
- Różne numery telefonu/konta (per kanał
accountId). - Różne osobowości (pliki workspace per agent, takie jak
AGENTS.mdiSOUL.md). - Oddzielne uwierzytelnianie + sesje (bez komunikacji między nimi, chyba że zostanie jawnie włączona).
Wyszukiwanie pamięci QMD między agentami
Jeśli jeden agent powinien przeszukiwać transkrypcje sesji QMD innego agenta, dodaj dodatkowe kolekcje podagents.list[].memorySearch.qmd.extraCollections. Używaj agents.defaults.memorySearch.qmd.extraCollections tylko wtedy, gdy każdy agent powinien dziedziczyć te same współdzielone kolekcje transkrypcji.
Jeden numer WhatsApp, wiele osób (podział DM)
Możesz kierować różne DM WhatsApp do różnych agentów, pozostając przy jednym koncie WhatsApp. Dopasuj nadawcę E.164 (np.+15551234567) za pomocą peer.kind: "direct". Odpowiedzi nadal przychodzą z tego samego numeru WhatsApp (brak tożsamości nadawcy per agent).
Czaty bezpośrednie zwijają się do głównego klucza sesji agenta, więc prawdziwa izolacja wymaga jednego agenta per osoba.
- Kontrola dostępu DM jest globalna per konto WhatsApp (parowanie/lista dozwolonych), a nie per agent.
- W przypadku współdzielonych grup powiąż grupę z jednym agentem albo użyj grup broadcast.
Reguły routingu (jak wiadomości wybierają agenta)
Wiązania są deterministyczne i wygrywa najbardziej szczegółowe:Rozstrzyganie remisów i semantyka AND
Rozstrzyganie remisów i semantyka AND
- Jeśli w tej samej warstwie pasuje wiele wiązań, wygrywa pierwsze w kolejności konfiguracji.
- Jeśli wiązanie ustawia wiele pól dopasowania (na przykład
peer+guildId), wymagane są wszystkie określone pola (semantykaAND).
Szczegóły zakresu konta
Szczegóły zakresu konta
- Wiązanie, które pomija
accountId, pasuje tylko do konta domyślnego. - Użyj
accountId: "*", aby uzyskać rezerwową obsługę całego kanału dla wszystkich kont. - Jeśli później dodasz takie samo wiązanie dla tego samego agenta z jawnym identyfikatorem konta, OpenClaw ulepszy istniejące wiązanie wyłącznie kanałowe do zakresu konta zamiast je duplikować.
Wiele kont / numerów telefonu
Kanały obsługujące wiele kont (np. WhatsApp) używająaccountId do identyfikacji każdego logowania. Każde accountId może być kierowane do innego agenta, więc jeden serwer może hostować wiele numerów telefonu bez mieszania sesji.
Jeśli chcesz domyślne konto dla całego kanału, gdy accountId jest pominięte, ustaw channels.<channel>.defaultAccount (opcjonalnie). Gdy nie jest ustawione, OpenClaw wraca do default, jeśli istnieje, w przeciwnym razie do pierwszego skonfigurowanego identyfikatora konta (posortowanego).
Typowe kanały obsługujące ten wzorzec obejmują:
whatsapp,telegram,discord,slack,signal,imessageirc,line,googlechat,mattermost,matrix,nextcloud-talkzalo,zalouser,nostr,feishu
Koncepcje
agentId: jeden „mózg” (workspace, uwierzytelnianie per agent, magazyn sesji per agent).accountId: jedna instancja konta kanału (np. konto WhatsApp"personal"kontra"biz").binding: kieruje wiadomości przychodzące doagentIdwedług(channel, accountId, peer)oraz opcjonalnie identyfikatorów gildii/zespołu.- Czaty bezpośrednie zwijają się do
agent:<agentId>:<mainKey>(„main” per agent;session.mainKey).
Przykłady platform
Boty Discord per agent
Boty Discord per agent
Każde konto bota Discord mapuje się na unikatowy
accountId. Powiąż każde konto z agentem i utrzymuj listy dozwolonych per bot.- Zaproś każdego bota do serwera i włącz Message Content Intent.
- Tokeny znajdują się w
channels.discord.accounts.<id>.token(konto domyślne może używaćDISCORD_BOT_TOKEN).
Boty Telegrama dla poszczególnych agentów
Boty Telegrama dla poszczególnych agentów
- Utwórz po jednym bocie dla każdego agenta za pomocą BotFather i skopiuj każdy token.
- Tokeny znajdują się w
channels.telegram.accounts.<id>.botToken(konto domyślne może używaćTELEGRAM_BOT_TOKEN).
Numery WhatsApp dla poszczególnych agentów
Numery WhatsApp dla poszczególnych agentów
Połącz każde konto przed uruchomieniem Gateway:
~/.openclaw/openclaw.json (JSON5):Typowe wzorce
- Codzienna obsługa WhatsApp + głęboka praca w Telegramie
- Ten sam kanał, jeden peer do Opus
- Agent rodzinny powiązany z grupą WhatsApp
Podziel według kanału: kieruj WhatsApp do szybkiego agenta codziennego użytku, a Telegram do agenta Opus.Uwagi:
- Jeśli masz wiele kont dla kanału, dodaj
accountIddo powiązania (na przykład{ channel: "whatsapp", accountId: "personal" }). - Aby skierować pojedynczą wiadomość DM/grupę do Opus, pozostawiając resztę na czacie, dodaj powiązanie
match.peerdla tego peera; dopasowania peerów zawsze wygrywają z regułami obejmującymi cały kanał.
Konfiguracja piaskownicy i narzędzi dla poszczególnych agentów
Każdy agent może mieć własne ograniczenia piaskownicy i narzędzi:setupCommand znajduje się pod sandbox.docker i uruchamia się raz podczas tworzenia kontenera. Nadpisania sandbox.docker.* dla poszczególnych agentów są ignorowane, gdy rozstrzygnięty zakres to "shared".- Izolacja bezpieczeństwa: ogranicz narzędzia dla niezaufanych agentów.
- Kontrola zasobów: uruchamiaj określonych agentów w piaskownicy, pozostawiając innych na hoście.
- Elastyczne polityki: różne uprawnienia dla poszczególnych agentów.
tools.elevated jest globalne i oparte na nadawcy; nie można go konfigurować dla poszczególnych agentów. Jeśli potrzebujesz granic dla poszczególnych agentów, użyj agents.list[].tools, aby zablokować exec. Do kierowania w grupach użyj agents.list[].groupChat.mentionPatterns, aby @wzmianki były jednoznacznie mapowane na zamierzonego agenta.Powiązane
- Agenci ACP — uruchamianie zewnętrznych harnessów kodujących
- Routing kanałów — jak wiadomości są kierowane do agentów
- Obecność — obecność i dostępność agenta
- Sesja — izolacja i routing sesji
- Podagenci — uruchamianie agentów działających w tle