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 powiązania.
Agent oznacza tutaj pełny zakres dla danej persony: pliki obszaru roboczego, profile uwierzytelniania, rejestr modeli i magazyn sesji. agentDir to katalog stanu na dysku, który przechowuje tę konfigurację per agent w ~/.openclaw/agents/<agentId>/. Powiązanie mapuje konto kanału (np. obszar roboczy Slack lub numer WhatsApp) na jednego z tych agentów.
Czym jest „jeden agent”?
Agent to w pełni wydzielony mózg z własnymi:- Obszarem roboczym (pliki, AGENTS.md/SOUL.md/USER.md, notatki lokalne, reguły persony).
- Katalogiem stanu (
agentDir) dla profili uwierzytelniania, rejestru modeli i konfiguracji per agent. - Magazynem sesji (historia czatu + stan routingu) w
~/.openclaw/agents/<agentId>/sessions.
sessions_history jest tutaj także bezpieczniejszą ścieżką przypominania między sesjami: zwraca ograniczony, oczyszczony widok, a nie surowy zrzut transkrypcji. Przypominanie asystenta usuwa tagi 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 obcięte bloki wywołań narzędzi), zdegradowane rusztowanie wywołań narzędzi, ujawnione tokeny sterujące modelu ASCII/pełnej szerokości oraz niepoprawny XML wywołań narzędzi MiniMax przed redakcją/obcię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 zastąpienia 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 o obszarze roboczym: obszar roboczy każdego agenta jest domyślnym cwd, a nie twardą piaskownicą. Ścieżki względne rozwiązują się wewnątrz obszaru roboczego, ale ścieżki bezwzględne mogą sięgać innych lokalizacji hosta, chyba że włączono piaskownicę. Zobacz Piaskownica.
Ścieżki (szybka mapa)
- Konfiguracja:
~/.openclaw/openclaw.json(lubOPENCLAW_CONFIG_PATH) - Katalog stanu:
~/.openclaw(lubOPENCLAW_STATE_DIR) - Obszar roboczy:
~/.openclaw/workspace(lub~/.openclaw/workspace-<agentId>) - Katalog agenta:
~/.openclaw/agents/<agentId>/agent(lubagents.list[].agentDir) - Sesje:
~/.openclaw/agents/<agentId>/sessions
Tryb jednego agenta (domyślny)
Jeśli nic nie zrobisz, OpenClaw uruchamia pojedynczego agenta:agentIddomyślnie ma wartośćmain.- Sesje są kluczowane jako
agent:main:<mainKey>. - Obszar roboczy domyślnie to
~/.openclaw/workspace(lub~/.openclaw/workspace-<profile>, gdy ustawionoOPENCLAW_PROFILE). - Stan domyślnie to
~/.openclaw/agents/main/agent.
Pomocnik agentów
Użyj kreatora agentów, aby dodać nowego izolowanego agenta:bindings (albo pozwól zrobić to kreatorowi), aby kierować wiadomości przychodzące.
Zweryfikuj za pomocą:
Szybki start
Utwórz obszar roboczy każdego agenta
Użyj kreatora albo utwórz obszary robocze ręcznie:Każdy agent otrzymuje własny obszar roboczy z
SOUL.md, AGENTS.md i opcjonalnym USER.md, a także dedykowany agentDir oraz magazyn sesji w ~/.openclaw/agents/<agentId>.Utwórz konta kanałów
Utwórz po jednym koncie na agenta w preferowanych kanałach:Zobacz przewodniki po kanałach: Discord, Telegram, WhatsApp.
- Discord: jeden bot na agenta, włącz Message Content Intent, skopiuj każdy token.
- Telegram: jeden bot na agenta przez BotFather, skopiuj każdy token.
- WhatsApp: połącz każdy numer telefonu per konto.
Dodaj agentów, konta i powiązania
Dodaj agentów w
agents.list, konta kanałów w 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 odizolowaną personą:
- Różne numery telefonów/konta (dla każdego kanału
accountId). - Różne osobowości (pliki przestrzeni roboczej dla poszczególnych agentów, takie jak
AGENTS.mdiSOUL.md). - Oddzielne uwierzytelnianie + sesje (bez przenikania rozmów, chyba że zostanie jawnie włączone).
Wyszukiwanie pamięci QMD między agentami
Jeśli jeden agent ma przeszukiwać transkrypcje sesji QMD innego agenta, dodaj dodatkowe kolekcje wagents.list[].memorySearch.qmd.extraCollections. Używaj agents.defaults.memorySearch.qmd.extraCollections tylko wtedy, gdy każdy agent ma 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ę w formacie E.164 (np.+15551234567) za pomocą peer.kind: "direct". Odpowiedzi nadal przychodzą z tego samego numeru WhatsApp (bez osobnej tożsamości nadawcy dla agenta).
Czaty bezpośrednie zwijają się do głównego klucza sesji agenta, więc prawdziwa izolacja wymaga jednego agenta na osobę.
- Kontrola dostępu DM jest globalna dla konta WhatsApp (parowanie/lista dozwolonych), a nie osobna dla agenta.
- W przypadku współdzielonych grup powiąż grupę z jednym agentem albo użyj grup rozgłoszeniowych.
Reguły routingu (jak wiadomości wybierają agenta)
Powiązania są deterministyczne i wygrywa najbardziej szczegółowe:Rozstrzyganie remisów i semantyka AND
Rozstrzyganie remisów i semantyka AND
- Jeśli wiele powiązań pasuje na tym samym poziomie, wygrywa pierwsze w kolejności konfiguracji.
- Jeśli powiązanie ustawia wiele pól dopasowania (na przykład
peer+guildId), wymagane są wszystkie wskazane pola (semantykaAND).
Szczegóły zakresu konta
Szczegóły zakresu konta
- Powiązanie, które pomija
accountId, pasuje tylko do konta domyślnego. Nie pasuje do wszystkich kont. - Użyj
accountId: "*"jako rezerwowego ustawienia dla całego kanału we wszystkich kontach. - Użyj
accountId: "<name>", aby dopasować jedno konto. - Jeśli później dodasz to samo powiązanie dla tego samego agenta z jawnym identyfikatorem konta, OpenClaw podniesie istniejące powiązanie wyłącznie kanałowe do zakresu konta zamiast je duplikować.
Wiele kont / numerów telefonów
Kanały obsługujące wiele kont (np. WhatsApp) używająaccountId do identyfikowania każdego logowania. Każdy accountId może być kierowany do innego agenta, więc jeden serwer może obsługiwać wiele numerów telefonów bez mieszania sesji.
Jeśli chcesz mieć domyślne konto dla całego kanału, gdy accountId jest pominięty, ustaw channels.<channel>.defaultAccount (opcjonalne). Gdy nie jest ustawione, OpenClaw używa rezerwowo default, jeśli istnieje, w przeciwnym razie pierwszego skonfigurowanego identyfikatora konta (po sortowaniu).
Typowe kanały obsługujące ten wzorzec obejmują:
whatsapp,telegram,discord,slack,signal,imessageirc,line,googlechat,mattermost,matrix,nextcloud-talkzalo,zalouser,nostr,feishu
Pojęcia
agentId: jeden „mózg” (przestrzeń robocza, uwierzytelnianie dla agenta, magazyn sesji dla agenta).accountId: jedna instancja konta kanału (np. konto WhatsApp"personal"kontra"biz").binding: kieruje wiadomości przychodzące doagentIdwedług(channel, accountId, peer)i opcjonalnie identyfikatorów gildii/zespołu.- Czaty bezpośrednie zwijają się do
agent:<agentId>:<mainKey>(„main” dla agenta;session.mainKey).
Przykłady platform
Boty Discord dla poszczególnych agentów
Boty Discord dla poszczególnych agentów
Każde konto bota Discord mapuje się na unikalny
accountId. Powiąż każde konto z agentem i utrzymuj listy dozwolonych osobno dla każdego bota.- Zaproś każdego bota na serwer i włącz Intencję treści wiadomości.
- Tokeny znajdują się w
channels.discord.accounts.<id>.token(konto domyślne może używaćDISCORD_BOT_TOKEN).
Boty Telegram dla poszczególnych agentów
Boty Telegram dla poszczególnych agentów
- Utwórz po jednym bocie na 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). - W przypadku wielu botów w tej samej grupie Telegram zaproś każdego bota i wspomnij bota, który powinien odpowiedzieć.
- Wyłącz tryb prywatności BotFather dla każdego bota grupowego, a następnie dodaj bota ponownie, aby Telegram zastosował ustawienie.
- Zezwalaj na grupy za pomocą
channels.telegram.groupsalbo użyjgroupPolicy: "open"tylko dla zaufanych wdrożeń grupowych. - Umieść identyfikatory użytkowników nadawców w
groupAllowFrom. Identyfikatory grup i supergrup należą dochannels.telegram.groups, a nie dogroupAllowFrom. - Powiąż według
accountId, aby każdy bot kierował do własnego agenta.
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 praca w WhatsApp + głęboka praca w Telegram
- 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:
- Te przykłady używają
accountId: "*", więc powiązania będą nadal działać, jeśli później dodasz konta. - Aby skierować pojedynczą wiadomość prywatną/grupę do Opus, pozostawiając resztę na czacie, dodaj powiązanie
match.peerdla tego peera; dopasowania peer zawsze wygrywają z regułami dla całego kanału.
Konfiguracja sandbox i narzędzi dla poszczególnych agentów
Każdy agent może mieć własny sandbox i ograniczenia 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 rozpoznany zakres to "shared".- Izolacja bezpieczeństwa: ogranicz narzędzia dla niezaufanych agentów.
- Kontrola zasobów: uruchamiaj wybranych agentów w sandbox, 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 zabronić exec. Do kierowania grupowego użyj agents.list[].groupChat.mentionPatterns, aby @wzmianki jednoznacznie mapowały się na zamierzonego agenta.Powiązane
- Agenci ACP — uruchamianie zewnętrznych harnessów kodowania
- Routing kanałów — jak wiadomości są kierowane do agentów
- Obecność — obecność i dostępność agenta
- Sesja — izolacja i routing sesji
- Subagenci — uruchamianie agentów w tle