Konfiguracja
OpenClaw odczytuje opcjonalną konfigurację z~/.openclaw/openclaw.json.
Jeśli plik nie istnieje, OpenClaw używa bezpiecznych ustawień domyślnych. Typowe powody dodania konfiguracji:
- Podłącz kanały i określ, kto może wysyłać wiadomości do bota
- Ustaw modele, narzędzia, sandboxing lub automatyzację (cron, hooki)
- Dostosuj sesje, multimedia, sieć lub interfejs użytkownika
Minimalna konfiguracja
Edytowanie konfiguracji
- Kreator interaktywny
- CLI (jednolinijkowce)
- Control UI
- Edycja bezpośrednia
Ścisła walidacja
Uwagi dotyczące narzędzi schematu:openclaw config schemawypisuje tę samą rodzinę JSON Schema, której używają Control UI i walidacja konfiguracji.- Wartości pól
titleidescriptionsą przenoszone do danych wyjściowych schematu dla edytorów i narzędzi formularzy. - Wpisy zagnieżdżonych obiektów, wildcard (
*) i elementów tablic ([]) dziedziczą te same metadane dokumentacyjne tam, gdzie istnieje odpowiadająca dokumentacja pól. - Gałęzie kompozycji
anyOf/oneOf/allOftakże dziedziczą te same metadane dokumentacyjne, dzięki czemu warianty union/intersection zachowują tę samą pomoc dla pól. config.schema.lookupzwraca jedną znormalizowaną ścieżkę konfiguracji z płytkim węzłem schematu (title,description,type,enum,const, wspólne ograniczenia i podobne pola walidacyjne), dopasowanymi metadanymi wskazówek UI oraz podsumowaniami bezpośrednich elementów podrzędnych dla narzędzi typu drill-down.- Schematy runtime pluginów/kanałów są scalane, gdy gateway może załadować bieżący rejestr manifestów.
- Gateway się nie uruchomi
- Działają tylko polecenia diagnostyczne (
openclaw doctor,openclaw logs,openclaw health,openclaw status) - Uruchom
openclaw doctor, aby zobaczyć dokładne problemy - Uruchom
openclaw doctor --fix(lub--yes), aby zastosować naprawy
Typowe zadania
Skonfiguruj kanał (WhatsApp, Telegram, Discord itd.)
Skonfiguruj kanał (WhatsApp, Telegram, Discord itd.)
Każdy kanał ma własną sekcję konfiguracji w
channels.<provider>. Zobacz dedykowaną stronę kanału, aby poznać kroki konfiguracji:- WhatsApp —
channels.whatsapp - Telegram —
channels.telegram - Discord —
channels.discord - Feishu —
channels.feishu - Google Chat —
channels.googlechat - Microsoft Teams —
channels.msteams - Slack —
channels.slack - Signal —
channels.signal - iMessage —
channels.imessage - Mattermost —
channels.mattermost
Wybierz i skonfiguruj modele
Wybierz i skonfiguruj modele
Ustaw model główny i opcjonalne modele zapasowe:
agents.defaults.modelsdefiniuje katalog modeli i działa jako lista dozwolonych dla/model.- Referencje modeli używają formatu
provider/model(na przykładanthropic/claude-opus-4-6). agents.defaults.imageMaxDimensionPxkontroluje skalowanie w dół obrazów w transkryptach/narzędziach (domyślnie1200); niższe wartości zwykle zmniejszają zużycie tokenów vision podczas przebiegów z dużą liczbą zrzutów ekranu.- Zobacz Models CLI, aby przełączać modele w czacie, oraz Model Failover, aby poznać rotację uwierzytelniania i zachowanie modeli zapasowych.
- W przypadku dostawców niestandardowych/samohostowanych zobacz Niestandardowi dostawcy w dokumentacji.
Kontroluj, kto może wysyłać wiadomości do bota
Kontroluj, kto może wysyłać wiadomości do bota
Dostęp do DM jest kontrolowany per kanał przez
dmPolicy:"pairing"(domyślnie): nieznani nadawcy dostają jednorazowy kod parowania do zatwierdzenia"allowlist": tylko nadawcy zallowFrom(lub z magazynu sparowanych dozwolonych)"open": zezwala na wszystkie przychodzące DM (wymagaallowFrom: ["*"])"disabled": ignoruje wszystkie DM
groupPolicy + groupAllowFrom albo list dozwolonych specyficznych dla kanału.Szczegóły per kanał znajdziesz w pełnej dokumentacji.Skonfiguruj bramkowanie wzmianek w czacie grupowym
Skonfiguruj bramkowanie wzmianek w czacie grupowym
Domyślnie wiadomości grupowe wymagają wzmianki. Skonfiguruj wzorce per agent:
- Wzmianki w metadanych: natywne wzmianki @ (WhatsApp tap-to-mention, Telegram @bot itd.)
- Wzorce tekstowe: bezpieczne wzorce regex w
mentionPatterns - Zobacz pełną dokumentację, aby poznać nadpisania per kanał i tryb self-chat.
Ogranicz Skills per agent
Ogranicz Skills per agent
Użyj
agents.defaults.skills jako współdzielonej bazy, a następnie nadpisz konkretne
agenty przez agents.list[].skills:- Pomiń
agents.defaults.skills, aby domyślnie nie ograniczać Skills. - Pomiń
agents.list[].skills, aby odziedziczyć ustawienia domyślne. - Ustaw
agents.list[].skills: [], aby nie mieć żadnych Skills. - Zobacz Skills, Konfiguracja Skills oraz Dokumentację konfiguracji.
Dostosuj monitorowanie zdrowia kanałów gateway
Dostosuj monitorowanie zdrowia kanałów gateway
Kontroluj, jak agresywnie gateway restartuje kanały, które wyglądają na nieaktywne:
- Ustaw
gateway.channelHealthCheckMinutes: 0, aby globalnie wyłączyć restarty monitora zdrowia. channelStaleEventThresholdMinutespowinno być większe lub równe interwałowi sprawdzania.- Użyj
channels.<provider>.healthMonitor.enabledlubchannels.<provider>.accounts.<id>.healthMonitor.enabled, aby wyłączyć automatyczne restarty dla jednego kanału lub konta bez wyłączania globalnego monitora. - Zobacz Health Checks, aby poznać operacyjne debugowanie, oraz pełną dokumentację, aby zobaczyć wszystkie pola.
Skonfiguruj sesje i resetowanie
Skonfiguruj sesje i resetowanie
Sesje kontrolują ciągłość rozmowy i izolację:
dmScope:main(wspólne) |per-peer|per-channel-peer|per-account-channel-peerthreadBindings: globalne ustawienia domyślne dla routingu sesji powiązanego z wątkami (Discord obsługuje/focus,/unfocus,/agents,/session idlei/session max-age).- Zobacz Zarządzanie sesją, aby poznać zakresy, powiązania tożsamości i politykę wysyłania.
- Zobacz pełną dokumentację, aby zobaczyć wszystkie pola.
Włącz sandboxing
Włącz sandboxing
Uruchamiaj sesje agentów w izolowanych kontenerach Docker:Najpierw zbuduj obraz:
scripts/sandbox-setup.shZobacz Sandboxing, aby przeczytać pełny przewodnik, oraz pełną dokumentację, aby zobaczyć wszystkie opcje.Włącz push oparty na relay dla oficjalnych buildów iOS
Włącz push oparty na relay dla oficjalnych buildów iOS
Push oparty na relay jest konfigurowany w Odpowiednik w CLI:Co to robi:
openclaw.json.Ustaw to w konfiguracji gateway:- Pozwala gateway wysyłać
push.test, impulsy wybudzające i wybudzenia ponownego połączenia przez zewnętrzny relay. - Używa uprawnienia wysyłania ograniczonego do rejestracji, przekazywanego przez sparowaną aplikację iOS. Gateway nie potrzebuje tokenu relay obejmującego całe wdrożenie.
- Wiąże każdą rejestrację opartą na relay z tożsamością gateway, z którą sparowała się aplikacja iOS, dzięki czemu inny gateway nie może ponownie użyć zapisanej rejestracji.
- Zachowuje lokalne/ręczne buildy iOS na bezpośrednim APNs. Wysyłki oparte na relay dotyczą tylko oficjalnych dystrybuowanych buildów, które zarejestrowały się przez relay.
- Musi odpowiadać bazowemu URL relay wbudowanemu w oficjalny/TestFlight build iOS, aby ruch rejestracji i wysyłania trafiał do tego samego wdrożenia relay.
- Zainstaluj oficjalny/TestFlight build iOS skompilowany z tym samym bazowym URL relay.
- Skonfiguruj
gateway.push.apns.relay.baseUrlna gateway. - Sparuj aplikację iOS z gateway i pozwól połączyć się zarówno sesjom węzła, jak i operatora.
- Aplikacja iOS pobiera tożsamość gateway, rejestruje się w relay za pomocą App Attest i potwierdzenia aplikacji, a następnie publikuje ładunek
push.apns.registeroparty na relay do sparowanego gateway. - Gateway zapisuje uchwyt relay i uprawnienie wysyłania, a następnie używa ich dla
push.test, impulsów wybudzających i wybudzeń ponownego połączenia.
- Jeśli przełączysz aplikację iOS na inny gateway, połącz ją ponownie, aby mogła opublikować nową rejestrację relay powiązaną z tym gateway.
- Jeśli wydasz nowy build iOS wskazujący na inne wdrożenie relay, aplikacja odświeży zapis rejestracji relay w pamięci podręcznej zamiast ponownie używać starego źródła relay.
OPENCLAW_APNS_RELAY_BASE_URLiOPENCLAW_APNS_RELAY_TIMEOUT_MSnadal działają jako tymczasowe nadpisania przez zmienne środowiskowe.OPENCLAW_APNS_RELAY_ALLOW_HTTP=truepozostaje wyłącznie lokalnym mechanizmem awaryjnym do celów deweloperskich dla loopback; nie zapisuj adresów URL HTTP relay w konfiguracji.
Skonfiguruj heartbeat (okresowe check-iny)
Skonfiguruj heartbeat (okresowe check-iny)
every: ciąg czasu trwania (30m,2h). Ustaw0m, aby wyłączyć.target:last|none|<channel-id>(na przykładdiscord,matrix,telegramlubwhatsapp)directPolicy:allow(domyślnie) lubblockdla celów heartbeat w stylu DM- Zobacz Heartbeat, aby przeczytać pełny przewodnik.
Skonfiguruj zadania cron
Skonfiguruj zadania cron
sessionRetention: przycinaj ukończone izolowane sesje uruchomień zsessions.json(domyślnie24h; ustawfalse, aby wyłączyć).runLog: przycinajcron/runs/<jobId>.jsonlwedług rozmiaru i liczby zachowanych wierszy.- Zobacz Zadania cron, aby poznać przegląd funkcji i przykłady CLI.
Skonfiguruj webhooki (hooki)
Skonfiguruj webhooki (hooki)
Włącz endpointy webhooków HTTP na Gateway:Uwaga dotycząca bezpieczeństwa:
- Traktuj całą zawartość ładunków hooków/webhooków jako niezaufane dane wejściowe.
- Użyj dedykowanego
hooks.token; nie używaj ponownie współdzielonego tokenu Gateway. - Uwierzytelnianie hooków działa wyłącznie przez nagłówki (
Authorization: Bearer ...lubx-openclaw-token); tokeny w query string są odrzucane. hooks.pathnie może być/; utrzymuj wejście webhooków na dedykowanej podścieżce, takiej jak/hooks.- Pozostaw flagi obejścia niebezpiecznej zawartości wyłączone (
hooks.gmail.allowUnsafeExternalContent,hooks.mappings[].allowUnsafeExternalContent), chyba że prowadzisz ściśle ograniczone debugowanie. - Jeśli włączysz
hooks.allowRequestSessionKey, ustaw takżehooks.allowedSessionKeyPrefixes, aby ograniczyć klucze sesji wybierane przez wywołującego. - W przypadku agentów sterowanych przez hooki preferuj mocne nowoczesne klasy modeli i ścisłą politykę narzędzi (na przykład tylko wiadomości oraz sandboxing tam, gdzie to możliwe).
Skonfiguruj routing wielu agentów
Skonfiguruj routing wielu agentów
Uruchamiaj wielu izolowanych agentów z oddzielnymi workspace i sesjami:Zobacz Multi-Agent oraz pełną dokumentację, aby poznać reguły powiązań i profile dostępu per agent.
Podziel konfigurację na wiele plików ($include)
Podziel konfigurację na wiele plików ($include)
Użyj
$include, aby uporządkować duże konfiguracje:- Pojedynczy plik: zastępuje zawierający go obiekt
- Tablica plików: scala głęboko w podanej kolejności (późniejsze wygrywają)
- Klucze sąsiednie: są scalane po include (nadpisują dołączone wartości)
- Zagnieżdżone include: obsługiwane do 10 poziomów głębokości
- Ścieżki względne: rozwiązywane względem pliku zawierającego include
- Obsługa błędów: czytelne błędy dla brakujących plików, błędów parsowania i cyklicznych include
Hot reload konfiguracji
Gateway obserwuje~/.openclaw/openclaw.json i stosuje zmiany automatycznie — dla większości ustawień nie jest wymagany ręczny restart.
Tryby przeładowania
| Tryb | Zachowanie |
|---|---|
hybrid (domyślny) | Natychmiast stosuje bezpieczne zmiany na gorąco. W przypadku krytycznych zmian automatycznie restartuje. |
hot | Stosuje na gorąco tylko bezpieczne zmiany. Gdy potrzebny jest restart, zapisuje ostrzeżenie — obsługujesz to ręcznie. |
restart | Restartuje Gateway przy każdej zmianie konfiguracji, bezpiecznej lub nie. |
off | Wyłącza obserwowanie pliku. Zmiany zaczynają działać przy następnym ręcznym restarcie. |
Co stosuje się na gorąco, a co wymaga restartu
Większość pól jest stosowana na gorąco bez przestoju. W trybiehybrid zmiany wymagające restartu są obsługiwane automatycznie.
| Kategoria | Pola | Wymaga restartu? |
|---|---|---|
| Kanały | channels.*, web (WhatsApp) — wszystkie wbudowane i rozszerzone kanały | Nie |
| Agent i modele | agent, agents, models, routing | Nie |
| Automatyzacja | hooks, cron, agent.heartbeat | Nie |
| Sesje i wiadomości | session, messages | Nie |
| Narzędzia i multimedia | tools, browser, skills, audio, talk | Nie |
| UI i różne | ui, logging, identity, bindings | Nie |
| Serwer Gateway | gateway.* (port, bind, auth, tailscale, TLS, HTTP) | Tak |
| Infrastruktura | discovery, canvasHost, plugins | Tak |
gateway.reload i gateway.remote są wyjątkami — ich zmiana nie wywołuje restartu.RPC konfiguracji (aktualizacje programowe)
Zapisy do control-plane RPC (
config.apply, config.patch, update.run) są ograniczane do 3 żądań na 60 sekund dla każdego deviceId+clientIp. Gdy limit zostanie osiągnięty, RPC zwraca UNAVAILABLE z retryAfterMs.config.schema.lookup: sprawdź jedno poddrzewo konfiguracji ograniczone do ścieżki wraz z płytkim węzłem schematu, dopasowanymi metadanymi wskazówek i podsumowaniami bezpośrednich elementów podrzędnychconfig.get: pobierz bieżącą migawkę + hashconfig.patch: preferowana ścieżka częściowej aktualizacjiconfig.apply: tylko pełne zastąpienie konfiguracjiupdate.run: jawna samodzielna aktualizacja + restart
config.schema.lookup,
a następnie config.patch.
config.apply (pełne zastąpienie)
config.apply (pełne zastąpienie)
Waliduje + zapisuje pełną konfigurację i restartuje Gateway w jednym kroku.Parametry:
raw(string) — ładunek JSON5 dla całej konfiguracjibaseHash(opcjonalne) — hash konfiguracji zconfig.get(wymagany, gdy konfiguracja istnieje)sessionKey(opcjonalne) — klucz sesji dla sygnału wybudzenia po restarcienote(opcjonalne) — notatka dla sentinela restarturestartDelayMs(opcjonalne) — opóźnienie przed restartem (domyślnie 2000)
config.patch (częściowa aktualizacja)
config.patch (częściowa aktualizacja)
Scala częściową aktualizację z istniejącą konfiguracją (semantyka JSON merge patch):
- Obiekty są scalane rekurencyjnie
nullusuwa klucz- Tablice są zastępowane
raw(string) — JSON5 tylko z kluczami do zmianybaseHash(wymagane) — hash konfiguracji zconfig.getsessionKey,note,restartDelayMs— takie same jak wconfig.apply
config.apply: łączenie oczekujących restartów oraz 30-sekundowy cooldown między cyklami restartu.Zmienne środowiskowe
OpenClaw odczytuje zmienne środowiskowe z procesu nadrzędnego oraz z:.envz bieżącego katalogu roboczego (jeśli istnieje)~/.openclaw/.env(globalny fallback)
Import zmiennych środowiskowych z powłoki (opcjonalny)
Import zmiennych środowiskowych z powłoki (opcjonalny)
Jeśli ta opcja jest włączona i oczekiwane klucze nie są ustawione, OpenClaw uruchamia powłokę logowania i importuje tylko brakujące klucze:Odpowiednik w zmiennej środowiskowej:
OPENCLAW_LOAD_SHELL_ENV=1Podstawianie zmiennych środowiskowych w wartościach konfiguracji
Podstawianie zmiennych środowiskowych w wartościach konfiguracji
Możesz odwoływać się do zmiennych środowiskowych w dowolnej wartości string w konfiguracji za pomocą Zasady:
${VAR_NAME}:- Dopasowywane są tylko nazwy zapisane wielkimi literami:
[A-Z_][A-Z0-9_]* - Brakujące/puste zmienne powodują błąd podczas ładowania
- Użyj
$${VAR}, aby uzyskać wynik dosłowny - Działa także w plikach
$include - Podstawianie inline:
"${BASE}/v1"→"https://api.example.com/v1"
Referencje do sekretów (env, file, exec)
Referencje do sekretów (env, file, exec)
W polach obsługujących obiekty SecretRef możesz użyć:Szczegóły SecretRef (w tym
secrets.providers dla env/file/exec) znajdziesz w Zarządzanie sekretami.
Obsługiwane ścieżki poświadczeń są wymienione w Powierzchnia poświadczeń SecretRef.Pełna dokumentacja
Aby zobaczyć kompletną dokumentację każdego pola, przejdź do Dokumentacja konfiguracji.Powiązane: Przykłady konfiguracji · Dokumentacja konfiguracji · Doctor