Konfiguracja
OpenClaw odczytuje opcjonalną konfigurację z pliku~/.openclaw/openclaw.json.
Jeśli plik nie istnieje, OpenClaw używa bezpiecznych ustawień domyślnych. Typowe powody dodania konfiguracji:
- Podłączenie kanałów i określenie, kto może wysyłać wiadomości do bota
- Ustawienie modeli, narzędzi, sandboxingu lub automatyzacji (cron, hooki)
- Dostosowanie sesji, multimediów, sieci lub interfejsu użytkownika
Minimalna konfiguracja
Edytowanie konfiguracji
- Interaktywny kreator
- 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.- Traktuj wynik tego schematu jako kanoniczny kontrakt w formacie czytelnym maszynowo dla pliku
openclaw.json; ten przegląd i dokumentacja referencyjna konfiguracji go podsumowują. - Wartości pól
titleidescriptionsą przenoszone do wyjścia schematu na potrzeby edytorów i narzędzi formularzy. - Wpisy zagnieżdżonych obiektów, wieloznaczników (
*) i elementów tablic ([]) dziedziczą te same metadane dokumentacyjne tam, gdzie istnieje pasująca dokumentacja pól. - Gałęzie kompozycji
anyOf/oneOf/allOfrównież dziedziczą te same metadane dokumentacyjne, dzięki czemu warianty unii/przecięcia 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 walidacji), dopasowanymi metadanymi wskazówek UI oraz podsumowaniami bezpośrednich elementów podrzędnych dla narzędzi szczegółowego przechodzenia.- Schematy pluginów/kanałów w czasie działania są scalane, gdy gateway może załadować bieżący rejestr manifestów.
pnpm config:docs:checkwykrywa rozbieżności między artefaktami bazowymi konfiguracji używanymi w dokumentacji a bieżącą powierzchnią schematu.
- Gateway się nie uruchamia
- 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ć poprawki
Typowe zadania
Skonfiguruj kanał (WhatsApp, Telegram, Discord itp.)
Skonfiguruj kanał (WhatsApp, Telegram, Discord itp.)
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
agents.defaults.modelsdefiniuje katalog modeli i działa jako lista dozwolonych dla/model.- Referencje modeli używają formatu
provider/model(np.anthropic/claude-opus-4-6). agents.defaults.imageMaxDimensionPxkontroluje skalowanie obrazów w transkryptach/narzędziach (domyślnie1200); niższe wartości zwykle zmniejszają zużycie tokenów vision przy zadaniach z dużą liczbą zrzutów ekranu.- Zobacz Models CLI, aby przełączać modele na czacie, oraz Przełączanie awaryjne modeli, aby poznać rotację uwierzytelniania i zachowanie modeli zapasowych.
- W przypadku niestandardowych/samodzielnie hostowanych providerów zobacz Niestandardowi providerzy w dokumentacji referencyjnej.
Kontroluj, kto może wysyłać wiadomości do bota
Kontroluj, kto może wysyłać wiadomości do bota
dmPolicy:"pairing"(domyślnie): nieznani nadawcy otrzymują jednorazowy kod parowania do zatwierdzenia"allowlist": tylko nadawcy zallowFrom(lub sparowanego magazynu listy dozwolonych)"open": zezwalaj na wszystkie przychodzące wiadomości DM (wymagaallowFrom: ["*"])"disabled": ignoruj wszystkie wiadomości DM
groupPolicy + groupAllowFrom lub list dozwolonych specyficznych dla kanału.Zobacz pełną dokumentację referencyjną, aby poznać szczegóły dla poszczególnych kanałów.Skonfiguruj bramkowanie wzmianek na czacie grupowym
Skonfiguruj bramkowanie wzmianek na czacie grupowym
- Wzmianki w metadanych: natywne wzmianki @ (WhatsApp tap-to-mention, Telegram @bot itp.)
- Wzorce tekstowe: bezpieczne wzorce regex w
mentionPatterns - Zobacz pełną dokumentację referencyjną, aby poznać zastąpienia dla poszczególnych kanałów i tryb self-chat.
Ogranicz Skills dla agenta
Ogranicz Skills dla agenta
agents.defaults.skills jako współdzielonej bazy, a następnie zastąp ustawienia konkretnych agentów za pomocą agents.list[].skills:- Pomiń
agents.defaults.skills, aby domyślnie nie ograniczać Skills. - Pomiń
agents.list[].skills, aby dziedziczyć ustawienia domyślne. - Ustaw
agents.list[].skills: [], aby nie używać żadnych Skills. - Zobacz Skills, Konfiguracja Skills oraz Dokumentację referencyjną konfiguracji.
Dostosuj monitorowanie kondycji kanałów gateway
Dostosuj monitorowanie kondycji kanałów gateway
- Ustaw
gateway.channelHealthCheckMinutes: 0, aby globalnie wyłączyć restarty monitora kondycji. 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 monitora globalnego. - Zobacz Kontrole kondycji, aby poznać operacyjne debugowanie, oraz pełną dokumentację referencyjną, aby zobaczyć wszystkie pola.
Skonfiguruj sesje i resetowanie
Skonfiguruj sesje i resetowanie
dmScope:main(wspólna) |per-peer|per-channel-peer|per-account-channel-peerthreadBindings: globalne ustawienia domyślne routingu sesji powiązanych z wątkiem (Discord obsługuje/focus,/unfocus,/agents,/session idlei/session max-age).- Zobacz Zarządzanie sesjami, aby poznać zakresy, powiązania tożsamości i zasady wysyłania.
- Zobacz pełną dokumentację referencyjną, aby zobaczyć wszystkie pola.
Włącz sandboxing
Włącz sandboxing
scripts/sandbox-setup.shZobacz Sandboxing, aby przeczytać pełny przewodnik, oraz pełną dokumentację referencyjną, aby poznać wszystkie opcje.Włącz push oparty na relay dla oficjalnych kompilacji iOS
Włącz push oparty na relay dla oficjalnych kompilacji iOS
openclaw.json.Ustaw to w konfiguracji gateway:- Umożliwia gateway wysyłanie
push.test, sygnałów wybudzania i wybudzeń przy ponownym połączeniu przez zewnętrzny relay. - Używa uprawnienia wysyłki ograniczonego do rejestracji, przekazanego dalej przez sparowaną aplikację iOS. Gateway nie potrzebuje tokena relay dla całego wdrożenia.
- Wiąże każdą rejestrację opartą na relay z tożsamością gateway, z którą sparowano aplikację iOS, dzięki czemu inny gateway nie może ponownie użyć zapisanej rejestracji.
- Pozostawia lokalne/ręczne kompilacje iOS przy bezpośrednim APNs. Wysyłki oparte na relay dotyczą tylko oficjalnie dystrybuowanych kompilacji, które zarejestrowały się przez relay.
- Musi odpowiadać bazowemu URL relay osadzonemu w oficjalnej/wersji TestFlight kompilacji iOS, aby ruch rejestracji i wysyłki trafiał do tego samego wdrożenia relay.
- Zainstaluj oficjalną/wersję TestFlight aplikacji iOS skompilowaną z tym samym bazowym URL relay.
- Skonfiguruj
gateway.push.apns.relay.baseUrlw 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 przy użyciu App Attest oraz potwierdzenia odbioru aplikacji, a następnie publikuje ładunek
push.apns.registeroparty na relay do sparowanego gateway. - Gateway zapisuje uchwyt relay i uprawnienie wysyłki, a następnie używa ich do
push.test, sygnałów wybudzania i wybudzeń przy ponownym połączeniu.
- Jeśli przełączysz aplikację iOS na inny gateway, połącz ponownie aplikację, aby mogła opublikować nową rejestrację relay powiązaną z tym gateway.
- Jeśli wydasz nową kompilację iOS wskazującą inne wdrożenie relay, aplikacja odświeży zapisaną w pamięci podręcznej rejestrację relay 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 pętlą zwrotną dla środowiska programistycznego; nie utrwalaj adresów URL relay HTTP w konfiguracji.
Skonfiguruj heartbeat (okresowe meldowanie się)
Skonfiguruj heartbeat (okresowe meldowanie się)
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: usuwaj ukończone izolowane sesje uruchomień zsessions.json(domyślnie24h; ustawfalse, aby wyłączyć).runLog: przycinajcron/runs/<jobId>.jsonlwedług rozmiaru i liczby zachowanych linii.- Zobacz Zadania cron, aby poznać przegląd funkcji i przykłady CLI.
Skonfiguruj webhooki (hooki)
Skonfiguruj webhooki (hooki)
- Traktuj całą zawartość ładunków hooków/webhooków jako niezaufane dane wejściowe.
- Używaj dedykowanego
hooks.token; nie używaj ponownie współdzielonego tokena Gateway. - Uwierzytelnianie hooków działa tylko przez nagłówki (
Authorization: Bearer ...lubx-openclaw-token); tokeny w ciągu zapytania są odrzucane. hooks.pathnie może być/; trzymaj ruch przychodzący 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 oraz ścisłe zasady dotyczące narzędzi (na przykład tylko wiadomości plus sandboxing, gdzie to możliwe).
Skonfiguruj routing wielu agentów
Skonfiguruj routing wielu agentów
Podziel konfigurację na wiele plików ($include)
Podziel konfigurację na wiele plików ($include)
$include, aby uporządkować duże konfiguracje:- Pojedynczy plik: zastępuje obiekt zawierający
- Tablica plików: scalana głęboko w kolejności (późniejsze wygrywają)
- Klucze równorzędne: scalane po include’ach (nadpisują dołączone wartości)
- Zagnieżdżone include’y: obsługiwane do 10 poziomów głębokości
- Ścieżki względne: rozwiązywane względem pliku dołączającego
- Obsługa błędów: czytelne błędy dla brakujących plików, błędów parsowania i cyklicznych include’ów
Hot reload konfiguracji
Gateway obserwuje~/.openclaw/openclaw.json i automatycznie stosuje zmiany — dla większości ustawień nie jest wymagany ręczny restart.
Tryby przeładowania
| Tryb | Zachowanie |
|---|---|
hybrid (domyślnie) | Natychmiast stosuje bezpieczne zmiany na gorąco. W przypadku krytycznych zmian automatycznie restartuje. |
hot | Stosuje na gorąco tylko bezpieczne zmiany. Gdy wymagany jest restart, zapisuje ostrzeżenie w logach — zajmujesz się tym ręcznie. |
restart | Restartuje Gateway przy każdej zmianie konfiguracji, bezpiecznej lub nie. |
off | Wyłącza obserwowanie pliku. Zmiany zaczną obowiązywać przy następnym ręcznym restarcie. |
Co stosuje się na gorąco, a co wymaga restartu
Większość pól stosuje się na gorąco bez przestoju. W trybiehybrid zmiany wymagające restartu są obsługiwane automatycznie.
| Kategoria | Pola | Wymagany restart? |
|---|---|---|
| Kanały | channels.*, web (WhatsApp) — wszystkie wbudowane i rozszerzeniowe 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 inne | 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 powoduje restartu.RPC konfiguracji (aktualizacje programistyczne)
config.apply, config.patch, update.run) są ograniczane do 3 żądań na 60 sekund dla każdego deviceId+clientIp. Po osiągnięciu limitu RPC zwraca UNAVAILABLE z retryAfterMs.config.schema.lookup: sprawdź jedno poddrzewo konfiguracji ograniczone do ścieżki z płytkim węzłem schematu, dopasowanymi metadanymi wskazówek i podsumowaniami bezpośrednich elementów podrzędnychconfig.get: pobierz bieżący snapshot + 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)
raw(string) — ładunek JSON5 dla całej konfiguracjibaseHash(opcjonalnie) — hash konfiguracji zconfig.get(wymagany, gdy konfiguracja istnieje)sessionKey(opcjonalnie) — klucz sesji dla sygnału wybudzenia po restarcienote(opcjonalnie) — notatka dla znacznika restarturestartDelayMs(opcjonalnie) — opóźnienie przed restartem (domyślnie 2000)
config.patch (częściowa aktualizacja)
config.patch (częściowa aktualizacja)
- Obiekty są scalane rekurencyjnie
nullusuwa klucz- Tablice są zastępowane
raw(string) — JSON5 zawierający tylko klucze do zmianybaseHash(wymagany) — hash konfiguracji zconfig.getsessionKey,note,restartDelayMs— takie same jak wconfig.apply
config.apply: oczekujące restarty są łączone, a między cyklami restartu obowiązuje 30-sekundowy czas odnowienia.Zmienne środowiskowe
OpenClaw odczytuje zmienne środowiskowe z procesu nadrzędnego oraz z:.envz bieżącego katalogu roboczego (jeśli istnieje)~/.openclaw/.env(globalne ustawienie zapasowe)
Import zmiennych środowiskowych z powłoki (opcjonalne)
Import zmiennych środowiskowych z powłoki (opcjonalne)
OPENCLAW_LOAD_SHELL_ENV=1Podstawianie zmiennych środowiskowych w wartościach konfiguracji
Podstawianie zmiennych środowiskowych w wartościach konfiguracji
${VAR_NAME}:- Dopasowywane są tylko nazwy pisane wielkimi literami:
[A-Z_][A-Z0-9_]* - Brakujące/puste zmienne powodują błąd podczas wczytywania
- Użyj
$${VAR}, aby uzyskać dosłowne wyjście - Działa także w plikach
$include - Podstawianie w treści:
"${BASE}/v1"→"https://api.example.com/v1"
Odwołania do sekretów (env, file, exec)
Odwołania do sekretów (env, file, exec)
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 referencyjna
Aby zobaczyć kompletną dokumentację referencyjną wszystkich pól, przejdź do Dokumentacja referencyjna konfiguracji.Powiązane: Przykłady konfiguracji · Dokumentacja referencyjna konfiguracji · Doctor