OpenClaw odczytuje opcjonalną konfigurację zDocumentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
~/.openclaw/openclaw.json.
Aktywna ścieżka konfiguracji musi być zwykłym plikiem. Układy z dowiązaniem symbolicznym openclaw.json
nie są obsługiwane dla zapisów należących do OpenClaw; zapis atomowy może zastąpić
ścieżkę zamiast zachować dowiązanie symboliczne. Jeśli trzymasz konfigurację poza
domyślnym katalogiem stanu, wskaż OPENCLAW_CONFIG_PATH bezpośrednio na rzeczywisty plik.
Jeśli pliku brakuje, OpenClaw używa bezpiecznych wartości domyślnych. Typowe powody dodania konfiguracji:
- Podłączenie kanałów i kontrola, kto może pisać do bota
- Ustawienie modeli, narzędzi, sandboxingu lub automatyzacji (cron, hooki)
- Dostrojenie sesji, multimediów, sieci lub UI
config.schema.lookup, aby uzyskać dokładną
dokumentację na poziomie pól przed edycją konfiguracji. Użyj tej strony jako
wskazówek zadaniowych, a dokumentacji konfiguracji
jako szerszej mapy pól i wartości domyślnych.
Minimalna konfiguracja
Edycja konfiguracji
- Interactive wizard
- CLI (one-liners)
- Control UI
- Direct edit
Ścisła walidacja
openclaw config schema wypisuje kanoniczny JSON Schema używany przez Control UI
i walidację. config.schema.lookup pobiera pojedynczy węzeł ograniczony do ścieżki oraz
podsumowania elementów podrzędnych dla narzędzi szczegółowych. Metadane dokumentacji pól
title/description są przenoszone przez zagnieżdżone obiekty, wildcard (*), elementy tablicy ([]) oraz gałęzie anyOf/
oneOf/allOf. Schematy runtime pluginów i kanałów są scalane po załadowaniu
rejestru manifestów.
Gdy walidacja się nie powiedzie:
- Gateway nie uruchamia się
- 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
openclaw.json
nie przejdzie walidacji (w tym walidacji lokalnej dla pluginu), uruchomienie Gateway kończy się niepowodzeniem albo
przeładowanie jest pomijane, a bieżący runtime zachowuje ostatnią zaakceptowaną konfigurację.
Uruchom openclaw doctor --fix (lub --yes), aby naprawić konfigurację z prefiksami/nadpisaną albo
przywrócić ostatnią znaną dobrą kopię. Awans do ostatniej znanej dobrej kopii jest pomijany, gdy
kandydat zawiera zredagowane placeholdery sekretów, takie jak ***.
Typowe zadania
Set up a channel (WhatsApp, Telegram, Discord, etc.)
Set up a channel (WhatsApp, Telegram, Discord, etc.)
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
Choose and configure models
Choose and configure models
agents.defaults.modelsdefiniuje katalog modeli i działa jako lista dozwolonych dla/model; wpisyprovider/*filtrują/model,/modelsi selektory modeli do wybranych dostawców, nadal korzystając z dynamicznego wykrywania modeli.- Użyj
openclaw config set agents.defaults.models '<json>' --strict-json --merge, aby dodać wpisy do listy dozwolonych bez usuwania istniejących modeli. Zwykłe zastąpienia, które usunęłyby wpisy, są odrzucane, chyba że przekażesz--replace. - Odwołania do modeli używają formatu
provider/model(np.anthropic/claude-opus-4-6). agents.defaults.imageMaxDimensionPxkontroluje zmniejszanie obrazów transkryptu/narzędzi (domyślnie1200); niższe wartości zwykle zmniejszają zużycie tokenów wizji w przebiegach z dużą liczbą zrzutów ekranu.- Zobacz CLI modeli, aby przełączać modele na czacie, oraz Przełączanie awaryjne modeli, aby poznać rotację uwierzytelniania i zachowanie modeli zapasowych.
- Dla niestandardowych/samodzielnie hostowanych dostawców zobacz Dostawcy niestandardowi w dokumentacji.
Control who can message the bot
Control who can message the bot
dmPolicy:"pairing"(domyślnie): nieznani nadawcy otrzymują jednorazowy kod parowania do zatwierdzenia"allowlist": tylko nadawcy wallowFrom(lub sparowanym magazynie zezwoleń)"open": zezwalaj na wszystkie przychodzące DM (wymagaallowFrom: ["*"])"disabled": ignoruj wszystkie DM
groupPolicy + groupAllowFrom albo list dozwolonych specyficznych dla kanału.Zobacz pełną dokumentację, aby poznać szczegóły per kanał.Set up group chat mention gating
Set up group chat mention gating
- Wzmianki w metadanych: natywne @-wzmianki (WhatsApp tap-to-mention, Telegram @bot itp.)
- Wzorce tekstowe: bezpieczne wzorce regex w
mentionPatterns - Widoczne odpowiedzi:
messages.visibleRepliesmoże wymagać wysyłania przez narzędzie wiadomości globalnie;messages.groupChat.visibleRepliesnadpisuje to dla grup/kanałów. - Zobacz pełną dokumentację, aby poznać tryby widocznych odpowiedzi, nadpisania per kanał i tryb self-chat.
Restrict skills per agent
Restrict skills per agent
agents.defaults.skills jako wspólnej bazy, a następnie nadpisz konkretnych
agentów przez agents.list[].skills:- Pomiń
agents.defaults.skills, aby domyślnie nie ograniczać Skills. - Pomiń
agents.list[].skills, aby dziedziczyć wartości domyślne. - Ustaw
agents.list[].skills: [], aby nie używać żadnych Skills. - Zobacz Skills, konfigurację Skills oraz dokumentację konfiguracji.
Tune gateway channel health monitoring
Tune gateway channel health monitoring
- 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.enabledalbochannels.<provider>.accounts.<id>.healthMonitor.enabled, aby wyłączyć automatyczne restarty dla jednego kanału lub konta bez wyłączania globalnego monitora. - Zobacz Kontrole kondycji, aby debugować operacyjnie, oraz pełną dokumentację dla wszystkich pól.
Tune gateway WebSocket handshake timeout
Tune gateway WebSocket handshake timeout
- Domyślna wartość to
15000milisekund. OPENCLAW_HANDSHAKE_TIMEOUT_MSnadal ma pierwszeństwo dla jednorazowych nadpisań usługi lub powłoki.- Najpierw preferuj naprawę zacięć uruchamiania/pętli zdarzeń; to pokrętło jest dla hostów, które są zdrowe, ale wolne podczas rozgrzewania.
Configure sessions and resets
Configure sessions and resets
dmScope:main(wspólne) |per-peer|per-channel-peer|per-account-channel-peerthreadBindings: globalne wartości domyślne routingu sesji powiązanych z wątkami (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 poznać wszystkie pola.
Włącz izolację w sandboxie
Włącz izolację w sandboxie
scripts/sandbox-setup.sh, a w przypadku instalacji z npm zobacz wbudowane polecenie docker build w sekcji Izolacja w sandboxie § Obrazy i konfiguracja.Zobacz Izolacja w sandboxie, aby poznać pełny przewodnik, oraz pełną dokumentację referencyjną, aby poznać wszystkie opcje.Włącz powiadomienia push oparte na przekaźniku dla oficjalnych kompilacji iOS
Włącz powiadomienia push oparte na przekaźniku dla oficjalnych kompilacji iOS
openclaw.json.Ustaw to w konfiguracji Gateway:- Pozwala Gateway wysyłać
push.test, sygnały wybudzające i wybudzenia do ponownego połączenia przez zewnętrzny przekaźnik. - Używa uprawnienia wysyłania ograniczonego do rejestracji, przekazanego przez sparowaną aplikację iOS. Gateway nie potrzebuje tokenu przekaźnika dla całego wdrożenia.
- Wiąże każdą rejestrację opartą na przekaźniku z tożsamością Gateway, z którą sparowano aplikację iOS, więc inny Gateway nie może ponownie użyć zapisanej rejestracji.
- Pozostawia lokalne/ręczne kompilacje iOS przy bezpośrednim APNs. Wysyłki oparte na przekaźniku dotyczą tylko oficjalnych dystrybuowanych kompilacji, które zarejestrowały się przez przekaźnik.
- Musi pasować do bazowego URL przekaźnika wbudowanego w oficjalną kompilację iOS/TestFlight, aby ruch rejestracji i wysyłania trafiał do tego samego wdrożenia przekaźnika.
- Zainstaluj oficjalną kompilację iOS lub kompilację z TestFlight skompilowaną z tym samym bazowym URL przekaźnika.
- 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 przekaźniku przy użyciu App Attest wraz z pokwitowaniem aplikacji, a następnie publikuje oparty na przekaźniku ładunek
push.apns.registerdo sparowanego Gateway. - Gateway zapisuje uchwyt przekaźnika i uprawnienie do wysyłania, a następnie używa ich dla
push.test, sygnałów wybudzających i wybudzeń do ponownego połączenia.
- Jeśli przełączysz aplikację iOS na inny Gateway, połącz aplikację ponownie, aby mogła opublikować nową rejestrację przekaźnika powiązaną z tym Gateway.
- Jeśli wydasz nową kompilację iOS wskazującą inne wdrożenie przekaźnika, aplikacja odświeży swoją buforowaną rejestrację przekaźnika zamiast ponownie używać starego źródła przekaźnika.
OPENCLAW_APNS_RELAY_BASE_URLiOPENCLAW_APNS_RELAY_TIMEOUT_MSnadal działają jako tymczasowe nadpisania env.OPENCLAW_APNS_RELAY_ALLOW_HTTP=truepozostaje deweloperskim obejściem tylko dla local loopback; nie zapisuj adresów URL przekaźnika HTTP w konfiguracji.
Skonfiguruj Heartbeat (okresowe meldunki)
Skonfiguruj Heartbeat (okresowe meldunki)
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) alboblockdla celów Heartbeat w stylu DM- Zobacz Heartbeat, aby poznać pełny przewodnik.
Skonfiguruj zadania Cron
Skonfiguruj zadania Cron
sessionRetention: usuwa ukończone izolowane sesje uruchomień zsessions.json(domyślnie24h; ustawfalse, aby wyłączyć).runLog: przycinacron/runs/<jobId>.jsonlwedług rozmiaru i liczby zachowanych wierszy.- Zobacz Zadania Cron, aby poznać opis funkcji i przykłady CLI.
Skonfiguruj Webhook (hooki)
Skonfiguruj Webhook (hooki)
- Traktuj całą zawartość ładunków hook/Webhook jako niezaufane dane wejściowe.
- Używaj dedykowanego
hooks.token; nie używaj ponownie współdzielonego tokenu Gateway. - Uwierzytelnianie hooków działa tylko przez nagłówek (
Authorization: Bearer ...albox-openclaw-token); tokeny w ciągu zapytania są odrzucane. hooks.pathnie może być/; trzymaj ruch przychodzący Webhook na dedykowanej podścieżce, takiej jak/hooks.- Pozostaw wyłączone flagi obchodzenia niebezpiecznej zawartości (
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. - Dla agentów sterowanych hookami preferuj mocne nowoczesne klasy modeli i ścisłe zasady narzędzi (na przykład tylko wiadomości plus izolacja w sandboxie, 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 porządkować duże konfiguracje:- Pojedynczy plik: zastępuje obiekt zawierający
- Tablica plików: głęboko scalana w kolejności (późniejsze wygrywają)
- Klucze równorzędne: scalane po dołączeniach (nadpisują dołączone wartości)
- Zagnieżdżone dołączenia: obsługiwane do 10 poziomów głębokości
- Ścieżki względne: rozwiązywane względem pliku dołączającego
- Zapisy wykonywane przez OpenClaw: gdy zapis zmienia tylko jedną sekcję najwyższego poziomu
opartą na dołączeniu pojedynczego pliku, takim jak
plugins: { $include: "./plugins.json5" }, OpenClaw aktualizuje ten dołączony plik i pozostawiaopenclaw.jsonbez zmian - Nieobsługiwany zapis przez include: dołączenia główne, tablice dołączeń i dołączenia z nadpisaniami przez klucze równorzędne kończą się bezpieczną odmową dla zapisów wykonywanych przez OpenClaw zamiast spłaszczać konfigurację
- Ograniczenie: ścieżki
$includemuszą rozwiązywać się pod katalogiem zawierającymopenclaw.json. Aby udostępnić drzewo między maszynami lub użytkownikami, ustawOPENCLAW_INCLUDE_ROOTSna listę ścieżek (:w POSIX,;w Windows) do dodatkowych katalogów, do których dołączenia mogą się odwoływać. Dowiązania symboliczne są rozwiązywane i sprawdzane ponownie, więc ścieżka, która leksykalnie znajduje się w katalogu konfiguracji, ale której rzeczywisty cel wychodzi poza każdy dozwolony katalog główny, nadal jest odrzucana. - Obsługa błędów: czytelne błędy dla brakujących plików, błędów parsowania i cyklicznych dołączeń
Gorące przeładowanie konfiguracji
Gateway obserwuje~/.openclaw/openclaw.json i automatycznie stosuje zmiany - w przypadku większości ustawień ręczny restart nie jest potrzebny.
Bezpośrednie edycje pliku są traktowane jako niezaufane, dopóki nie przejdą walidacji. Obserwator czeka,
aż seria tymczasowych zapisów/zmian nazw edytora się ustabilizuje, odczytuje końcowy plik i odrzuca
nieprawidłowe zewnętrzne edycje bez przepisywania openclaw.json. Zapisy konfiguracji
wykonywane przez OpenClaw używają tej samej bramki schematu przed zapisem; destrukcyjne nadpisania, takie jak
usunięcie gateway.mode albo zmniejszenie pliku o ponad połowę, są odrzucane i
zapisywane jako .rejected.* do inspekcji.
Jeśli zobaczysz config reload skipped (invalid config) albo start zgłosi Invalid config, sprawdź konfigurację, uruchom openclaw config validate, a następnie uruchom openclaw doctor --fix, aby naprawić. Zobacz Rozwiązywanie problemów z Gateway,
aby poznać listę kontrolną.
Tryby przeładowania
| Tryb | Zachowanie |
|---|---|
hybrid (domyślnie) | Natychmiast stosuje bezpieczne zmiany na gorąco. Automatycznie restartuje przy zmianach krytycznych. |
hot | Stosuje na gorąco tylko bezpieczne zmiany. Loguje ostrzeżenie, gdy restart jest potrzebny - restart wykonujesz samodzielnie. |
restart | Restartuje Gateway przy każdej zmianie konfiguracji, niezależnie od tego, czy jest bezpieczna. |
off | Wyłącza obserwowanie pliku. Zmiany zaczynają 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 kanały i kanały typu Plugin | 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 media | tools, browser, skills, mcp, audio, talk | Nie |
| UI i różne | ui, logging, identity, bindings | Nie |
| Serwer Gateway | gateway.* (port, bind, auth, tailscale, TLS, HTTP) | Tak |
| Infrastruktura | discovery, plugins | Tak |
gateway.reload i gateway.remote są wyjątkami - ich zmiana nie wywołuje restartu.Planowanie przeładowania
Gdy edytujesz plik źródłowy, do którego odwołuje się$include, OpenClaw planuje
przeładowanie na podstawie układu zapisanego w źródle, a nie spłaszczonego widoku w pamięci.
Dzięki temu decyzje dotyczące hot reloadu (hot-apply kontra restart) pozostają przewidywalne
nawet wtedy, gdy pojedyncza sekcja najwyższego poziomu znajduje się we własnym dołączonym pliku,
takim jak plugins: { $include: "./plugins.json5" }. Planowanie przeładowania kończy się
bezpieczną odmową, jeśli układ źródłowy jest niejednoznaczny.
RPC konfiguracji (aktualizacje programowe)
W przypadku narzędzi zapisujących konfigurację przez API Gateway preferuj ten przepływ:config.schema.lookup, aby sprawdzić jedno poddrzewo (płytki węzeł schematu + podsumowania elementów podrzędnych)config.get, aby pobrać bieżący zrzut orazhashconfig.patchdo częściowych aktualizacji (JSON merge patch: obiekty są scalane,nullusuwa, tablice są zastępowane)config.applytylko wtedy, gdy zamierzasz zastąpić całą konfiguracjęupdate.rundo jawnej samoaktualizacji z restartem; dołączcontinuationMessage, gdy sesja po restarcie ma wykonać jedną kolejną turęupdate.status, aby sprawdzić najnowszy znacznik restartu aktualizacji i zweryfikować uruchomioną wersję po restarcie
config.schema.lookup jako pierwszy punkt dla dokładnej
dokumentacji i ograniczeń na poziomie pól. Użyj Dokumentacji referencyjnej konfiguracji,
gdy potrzebna jest szersza mapa konfiguracji, wartości domyślne lub linki do dedykowanych
dokumentacji referencyjnych podsystemów.
config.apply, config.patch, update.run) są
ograniczone do 3 żądań na 60 sekund na deviceId+clientIp. Żądania restartu
są łączone, a następnie wymuszają 30-sekundowy czas odnowienia między cyklami restartu.
update.status jest tylko do odczytu, ale ma zakres administracyjny, ponieważ znacznik restartu może
zawierać podsumowania kroków aktualizacji i końcówki wyjścia poleceń.config.apply, jak i config.patch akceptują raw, baseHash, sessionKey,
note oraz restartDelayMs. baseHash jest wymagane dla obu metod, gdy konfiguracja
już istnieje.
Zmienne środowiskowe
OpenClaw odczytuje zmienne środowiskowe z procesu nadrzędnego oraz z:.envz bieżącego katalogu roboczego (jeśli istnieje)~/.openclaw/.env(globalna rezerwa)
Import środowiska powłoki (opcjonalny)
Import środowiska powłoki (opcjonalny)
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 zgłaszają błąd podczas ładowania
- Ucieknij za pomocą
$${VAR}, aby uzyskać dosłowne wyjście - Działa wewnątrz plików
$include - Podstawianie wbudowane:
"${BASE}/v1"→"https://api.example.com/v1"
Referencje sekretów (env, file, exec)
Referencje sekretów (env, file, exec)
secrets.providers dla env/file/exec) znajdują się w Zarządzaniu sekretami.
Obsługiwane ścieżki poświadczeń są wymienione w Powierzchni poświadczeń SecretRef.Pełna dokumentacja referencyjna
Pełną dokumentację referencyjną pole po polu znajdziesz w Dokumentacji referencyjnej konfiguracji.Powiązane: Przykłady konfiguracji · Dokumentacja referencyjna konfiguracji · Diagnostyka