Podstawowa dokumentacja konfiguracji dlaDocumentation 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. Omówienie zorientowane na zadania znajdziesz w Konfiguracji.
Obejmuje główne powierzchnie konfiguracji OpenClaw i odsyła dalej, gdy podsystem ma własną, głębszą dokumentację. Katalogi poleceń należące do kanałów i pluginów oraz głębokie ustawienia pamięci/QMD znajdują się na własnych stronach, a nie na tej.
Źródło prawdy w kodzie:
openclaw config schemawypisuje bieżący JSON Schema używany do walidacji i Control UI, z dołączonymi metadanymi wbudowanymi/pluginów/kanałów, gdy są dostępneconfig.schema.lookupzwraca jeden węzeł schematu ograniczony do ścieżki na potrzeby narzędzi drill-downpnpm config:docs:check/pnpm config:docs:genwalidują hash bazowy dokumentacji konfiguracji względem bieżącej powierzchni schematu
gateway config.schema.lookup, aby uzyskać dokładną dokumentację i ograniczenia na poziomie pól przed edycją. Użyj Konfiguracji dla wskazówek zorientowanych na zadania, a tej strony dla szerszej mapy pól, wartości domyślnych i linków do dokumentacji podsystemów.
Dedykowane szczegółowe dokumentacje:
- Dokumentacja konfiguracji pamięci dla
agents.defaults.memorySearch.*,memory.qmd.*,memory.citationsoraz konfiguracji dreaming podplugins.entries.memory-core.config.dreaming - Polecenia slash dla bieżącego katalogu poleceń wbudowanych i dołączonych
- strony właścicielskich kanałów/pluginów dla powierzchni poleceń specyficznych dla kanału
Kanały
Klucze konfiguracji poszczególnych kanałów przeniesiono na dedykowaną stronę - zobacz Konfiguracja - kanały dlachannels.*, w tym Slack, Discord, Telegram, WhatsApp, Matrix, iMessage i innych dołączonych kanałów (uwierzytelnianie, kontrola dostępu, wiele kont, bramkowanie wzmianek).
Wartości domyślne agenta, wielu agentów, sesje i wiadomości
Przeniesiono na dedykowaną stronę - zobacz Konfiguracja - agenci dla:agents.defaults.*(workspace, model, thinking, heartbeat, pamięć, media, skills, sandbox)multiAgent.*(routing i powiązania wielu agentów)session.*(cykl życia sesji, compaction, przycinanie)messages.*(dostarczanie wiadomości, TTS, renderowanie markdown)talk.*(tryb Talk)talk.consultThinkingLevel: nadpisanie poziomu thinking dla pełnego uruchomienia agenta OpenClaw za konsultacjami realtime Control UI Talktalk.consultFastMode: jednorazowe nadpisanie trybu szybkiego dla konsultacji realtime Control UI Talktalk.speechLocale: opcjonalny identyfikator lokalizacji BCP 47 dla rozpoznawania mowy Talk na iOS/macOStalk.silenceTimeoutMs: gdy nie ustawiono, Talk zachowuje domyślne okno pauzy platformy przed wysłaniem transkrypcji (700 ms on macOS and Android, 900 ms on iOS)
Narzędzia i niestandardowi dostawcy
Polityka narzędzi, eksperymentalne przełączniki, konfiguracja narzędzi wspieranych przez dostawców oraz konfiguracja niestandardowego dostawcy / bazowego URL zostały przeniesione na dedykowaną stronę - zobacz Konfiguracja - narzędzia i niestandardowi dostawcy.Modele
Definicje dostawców, listy dozwolonych modeli i konfiguracja niestandardowych dostawców znajdują się w Konfiguracja - narzędzia i niestandardowi dostawcy. Rootmodels odpowiada też za globalne zachowanie katalogu modeli.
models.mode: zachowanie katalogu dostawcy (mergelubreplace).models.providers: mapa niestandardowych dostawców kluczowana identyfikatorem dostawcy.models.providers.*.localService: opcjonalny menedżer procesów na żądanie dla lokalnych serwerów modeli. OpenClaw sprawdza skonfigurowany endpoint zdrowia, uruchamia bezwzględnecommandw razie potrzeby, czeka na gotowość, a następnie wysyła żądanie modelu. Zobacz Lokalne usługi modeli.models.pricing.enabled: kontroluje bootstrap cennika w tle, który startuje po tym, jak sidecary i kanały osiągną ścieżkę gotowości Gateway. Gdyfalse, Gateway pomija pobieranie katalogów cenowych OpenRouter i LiteLLM; skonfigurowane wartościmodels.providers.*.models[].costnadal działają dla lokalnych szacunków kosztów.
MCP
Definicje serwerów MCP zarządzanych przez OpenClaw znajdują się podmcp.servers i są używane przez osadzone Pi oraz inne adaptery runtime. Polecenia openclaw mcp list, show, set i unset zarządzają tym blokiem bez łączenia się z serwerem docelowym podczas edycji konfiguracji.
mcp.servers: nazwane definicje serwerów MCP stdio lub zdalnych dla runtime’ów, które udostępniają skonfigurowane narzędzia MCP. Zdalne wpisy używajątransport: "streamable-http"lubtransport: "sse";type: "http"to natywny dla CLI alias, któryopenclaw mcp setiopenclaw doctor --fixnormalizują do kanonicznego polatransport.mcp.sessionIdleTtlMs: bezczynny TTL dla dołączonych runtime’ów MCP ograniczonych do sesji. Jednorazowe osadzone uruchomienia żądają czyszczenia po zakończeniu uruchomienia; ten TTL jest zabezpieczeniem dla długotrwałych sesji i przyszłych wywołujących.- Zmiany pod
mcp.*stosują się na gorąco przez zwolnienie zbuforowanych runtime’ów MCP sesji. Następne wykrycie/użycie narzędzia odtwarza je z nowej konfiguracji, więc usunięte wpisymcp.serverssą zbierane natychmiast zamiast czekać na bezczynny TTL.
Skills
allowBundled: opcjonalna lista dozwolonych wyłącznie dla dołączonych skills (zarządzane/workspace skills pozostają bez wpływu).load.extraDirs: dodatkowe współdzielone korzenie skills (najniższy priorytet).load.allowSymlinkTargets: zaufane rzeczywiste korzenie docelowe, do których mogą rozwiązywać się symlinki skills, gdy link znajduje się poza skonfigurowanym korzeniem źródłowym.install.preferBrew: gdy true, preferuj instalatory Homebrew, kiedybrewjest dostępne, zanim nastąpi przejście do innych rodzajów instalatorów.install.nodeManager: preferencja instalatora node dla specyfikacjimetadata.openclaw.install(npm|pnpm|yarn|bun).install.allowUploadedArchives: zezwala zaufanym klientom Gatewayoperator.admininstalować prywatne archiwa zip wystawione przezskills.upload.*(domyślnie: false). Włącza to tylko ścieżkę przesłanego archiwum; zwykłe instalacje ClawHub tego nie wymagają.entries.<skillKey>.enabled: falsewyłącza skill, nawet jeśli jest dołączony/zainstalowany.entries.<skillKey>.apiKey: ułatwienie dla skills deklarujących główną zmienną env (ciąg jawny lub obiekt SecretRef).
Pluginy
- Ładowane z
~/.openclaw/extensions,<workspace>/.openclaw/extensionsorazplugins.load.paths. - Wykrywanie akceptuje natywne pluginy OpenClaw oraz zgodne pakiety Codex i pakiety Claude, w tym bezmanifestowe pakiety Claude o domyślnym układzie.
- Zmiany konfiguracji wymagają restartu gateway.
allow: opcjonalna lista dozwolonych (ładowane są tylko wymienione pluginy).denyma pierwszeństwo.bundledDiscovery: domyślnie"allowlist"dla nowych konfiguracji, więc niepusta listaplugins.allowbramkuje również dołączone pluginy dostawców, w tym runtime’owych dostawców wyszukiwania w sieci. Doctor zapisuje"compat"dla zmigrowanych starszych konfiguracji listy dozwolonych, aby zachować istniejące zachowanie dołączonych dostawców do czasu świadomego włączenia.plugins.entries.<id>.apiKey: wygodne pole klucza API na poziomie pluginu (gdy obsługiwane przez plugin).plugins.entries.<id>.env: mapa zmiennych env ograniczona do pluginu.plugins.entries.<id>.hooks.allowPromptInjection: gdyfalse, core blokujebefore_prompt_buildi ignoruje pola mutujące prompt ze starszegobefore_agent_start, zachowując jednocześnie starszemodelOverrideiproviderOverride. Dotyczy natywnych hooków pluginu oraz obsługiwanych katalogów hooków dostarczanych przez pakiety.plugins.entries.<id>.hooks.allowConversationAccess: gdytrue, zaufane niewbudowane pluginy mogą odczytywać surową treść rozmowy z typowanych hooków, takich jakllm_input,llm_output,before_model_resolve,before_agent_reply,before_agent_run,before_agent_finalizeiagent_end.plugins.entries.<id>.subagent.allowModelOverride: jawnie zaufaj temu pluginowi, aby mógł żądać nadpisańproviderimodeldla pojedynczego uruchomienia w tle subagenta.plugins.entries.<id>.subagent.allowedModels: opcjonalna lista dozwolonych kanonicznych celówprovider/modeldla zaufanych nadpisań subagenta. Używaj"*"tylko wtedy, gdy celowo chcesz zezwolić na dowolny model.plugins.entries.<id>.llm.allowModelOverride: jawnie zaufaj temu pluginowi, aby mógł żądać nadpisań modelu dlaapi.runtime.llm.complete.plugins.entries.<id>.llm.allowedModels: opcjonalna lista dozwolonych kanonicznych celówprovider/modeldla zaufanych nadpisań uzupełniania LLM przez plugin. Używaj"*"tylko wtedy, gdy celowo chcesz zezwolić na dowolny model.plugins.entries.<id>.llm.allowAgentIdOverride: jawnie zaufaj temu pluginowi, aby mógł uruchamiaćapi.runtime.llm.completewzględem innego niż domyślny identyfikatora agenta.plugins.entries.<id>.config: obiekt konfiguracji zdefiniowany przez plugin (walidowany przez natywny schemat pluginu OpenClaw, gdy dostępny).- Ustawienia konta/runtime pluginu kanału znajdują się pod
channels.<id>i powinny być opisywane przez metadanechannelConfigsmanifestu właścicielskiego pluginu, a nie przez centralny rejestr opcji OpenClaw.
Konfiguracja pluginu harness Codex
Dołączony plugincodex odpowiada za natywne ustawienia harness serwera aplikacji Codex pod plugins.entries.codex.config. Zobacz Dokumentacja harness Codex, aby uzyskać pełną powierzchnię konfiguracji, oraz Harness Codex, aby poznać model runtime.
codexPlugins stosuje się tylko do sesji wybierających natywny harness Codex. Nie włącza pluginów Codex dla Pi, zwykłych uruchomień dostawcy OpenAI, powiązań rozmów ACP ani żadnego harness innego niż Codex.
plugins.entries.codex.config.codexPlugins.enabled: włącza natywną obsługę pluginów/aplikacji Codex dla środowiska harness Codex. Domyślnie:false.plugins.entries.codex.config.codexPlugins.allow_destructive_actions: domyślna polityka działań destrukcyjnych dla zmigrowanych wywołań aplikacji pluginu. Domyślnie:true.plugins.entries.codex.config.codexPlugins.plugins.<key>.enabled: włącza zmigrowany wpis pluginu, gdy globalnecodexPlugins.enabledrównież ma wartość true. Domyślnie:truedla jawnych wpisów.plugins.entries.codex.config.codexPlugins.plugins.<key>.marketplaceName: stabilna tożsamość marketplace. V1 obsługuje tylko"openai-curated".plugins.entries.codex.config.codexPlugins.plugins.<key>.pluginName: stabilna tożsamość pluginu Codex z migracji, na przykład"google-calendar".plugins.entries.codex.config.codexPlugins.plugins.<key>.allow_destructive_actions: nadpisanie polityki działań destrukcyjnych dla danego pluginu. Gdy pominięte, używana jest globalna wartośćallow_destructive_actions.
codexPlugins.enabled to globalna dyrektywa włączania. Jawne wpisy pluginów
zapisane przez migrację są trwałym zestawem kwalifikującym do instalacji i naprawy.
plugins["*"] nie jest obsługiwane, nie ma przełącznika install, a lokalne
wartości marketplacePath celowo nie są polami konfiguracji, ponieważ są
specyficzne dla hosta.
Kontrole gotowości app/list są buforowane przez jedną godzinę i odświeżane
asynchronicznie, gdy staną się nieaktualne. Konfiguracja aplikacji wątku Codex jest obliczana przy ustanawianiu sesji środowiska harness Codex, a nie przy każdej turze; użyj /new, /reset albo zrestartuj Gateway po zmianie konfiguracji natywnego pluginu.
plugins.entries.firecrawl.config.webFetch: ustawienia dostawcy pobierania stron Firecrawl.apiKey: klucz API Firecrawl (akceptuje SecretRef). W razie braku używaplugins.entries.firecrawl.config.webSearch.apiKey, starszegotools.web.fetch.firecrawl.apiKeyalbo zmiennej środowiskowejFIRECRAWL_API_KEY.baseUrl: bazowy URL API Firecrawl (domyślnie:https://api.firecrawl.dev; nadpisania dla instancji hostowanych samodzielnie muszą wskazywać prywatne/wewnętrzne punkty końcowe).onlyMainContent: wyodrębnia tylko główną treść ze stron (domyślnie:true).maxAgeMs: maksymalny wiek pamięci podręcznej w milisekundach (domyślnie:172800000/ 2 dni).timeoutSeconds: limit czasu żądania scrape w sekundach (domyślnie:60).
plugins.entries.xai.config.xSearch: ustawienia xAI X Search (wyszukiwanie internetowe Grok).enabled: włącza dostawcę X Search.model: model Grok używany do wyszukiwania (np."grok-4-1-fast").
plugins.entries.memory-core.config.dreaming: ustawienia memory dreaming. Zobacz Dreaming, aby poznać fazy i progi.enabled: główny przełącznik dreaming (domyślniefalse).frequency: harmonogram cron dla każdego pełnego przebiegu dreaming ("0 3 * * *"domyślnie).model: opcjonalne nadpisanie modelu podagenta Dream Diary. Wymagaplugins.entries.memory-core.subagent.allowModelOverride: true; połącz zallowedModels, aby ograniczyć cele. Błędy niedostępności modelu ponawiają próbę raz z domyślnym modelem sesji; błędy zaufania lub listy dozwolonych nie przechodzą po cichu na model zapasowy.- polityka faz i progi są szczegółami implementacji (nie są kluczami konfiguracji widocznymi dla użytkownika).
- Pełna konfiguracja pamięci znajduje się w referencji konfiguracji pamięci:
agents.defaults.memorySearch.*memory.backendmemory.citationsmemory.qmd.*plugins.entries.memory-core.config.dreaming
- Włączone pluginy z pakietu Claude mogą również dostarczać osadzone wartości domyślne Pi z
settings.json; OpenClaw stosuje je jako oczyszczone ustawienia agenta, a nie jako surowe poprawki konfiguracji OpenClaw. plugins.slots.memory: wybiera identyfikator aktywnego pluginu pamięci albo"none", aby wyłączyć pluginy pamięci.plugins.slots.contextEngine: wybiera identyfikator aktywnego pluginu silnika kontekstu; domyślnie"legacy", chyba że zainstalujesz i wybierzesz inny silnik.
Zobowiązania
commitments kontroluje wywnioskowaną pamięć działań następczych: OpenClaw może wykrywać sprawdzenia z tur rozmowy i dostarczać je przez przebiegi Heartbeat.
commitments.enabled: włącza ukryte wyodrębnianie LLM, przechowywanie i dostarczanie przez Heartbeat dla wywnioskowanych zobowiązań działań następczych. Domyślnie:false.commitments.maxPerDay: maksymalna liczba wywnioskowanych zobowiązań działań następczych dostarczanych na sesję agenta w ruchomym oknie dnia. Domyślnie:3.
Przeglądarka
evaluateEnabled: falsewyłączaact:evaluateiwait --fn.tabCleanupodzyskuje śledzone karty głównego agenta po czasie bezczynności lub gdy sesja przekroczy limit. UstawidleMinutes: 0albomaxTabsPerSession: 0, aby wyłączyć te poszczególne tryby czyszczenia.ssrfPolicy.dangerouslyAllowPrivateNetworkjest wyłączone, gdy nie jest ustawione, więc nawigacja przeglądarki domyślnie pozostaje restrykcyjna.- Ustaw
ssrfPolicy.dangerouslyAllowPrivateNetwork: truetylko wtedy, gdy celowo ufasz nawigacji przeglądarki w sieci prywatnej. - W trybie restrykcyjnym zdalne punkty końcowe profili CDP (
profiles.*.cdpUrl) podlegają temu samemu blokowaniu sieci prywatnej podczas kontroli osiągalności/wykrywania. ssrfPolicy.allowPrivateNetworkpozostaje obsługiwane jako starszy alias.- W trybie restrykcyjnym używaj
ssrfPolicy.hostnameAllowlistissrfPolicy.allowedHostnamesdo jawnych wyjątków. - Profile zdalne są tylko do dołączania (uruchamianie/zatrzymywanie/resetowanie wyłączone).
profiles.*.cdpUrlakceptujehttp://,https://,ws://iwss://. Użyj HTTP(S), gdy chcesz, aby OpenClaw wykrywał/json/version; użyj WS(S), gdy dostawca podaje bezpośredni URL WebSocket DevTools.remoteCdpTimeoutMsiremoteCdpHandshakeTimeoutMsmają zastosowanie do zdalnych iattachOnlykontroli osiągalności CDP oraz żądań otwierania kart. Zarządzane profile local loopback zachowują lokalne wartości domyślne CDP.- Jeśli zewnętrznie zarządzana usługa CDP jest osiągalna przez loopback, ustaw dla tego
profilu
attachOnly: true; w przeciwnym razie OpenClaw traktuje port loopback jako lokalny zarządzany profil przeglądarki i może zgłaszać błędy własności portu lokalnego. - Profile
existing-sessionużywają Chrome MCP zamiast CDP i mogą dołączać na wybranym hoście albo przez połączony węzeł przeglądarki. - Profile
existing-sessionmogą ustawićuserDataDir, aby wskazać określony profil przeglądarki opartej na Chromium, takiej jak Brave lub Edge. - Profile
existing-sessionzachowują obecne limity tras Chrome MCP: działania oparte na snapshot/ref zamiast wskazywania selektorami CSS, haki przesyłania jednego pliku, brak nadpisywania limitu czasu dialogów, brakwait --load networkidleoraz brakresponsebody, eksportu PDF, przechwytywania pobrań lub działań wsadowych. - Lokalne zarządzane profile
openclawautomatycznie przypisującdpPorticdpUrl; ustawiajcdpUrljawnie tylko dla zdalnego CDP. - Lokalne profile zarządzane mogą ustawić
executablePath, aby nadpisać globalną wartośćbrowser.executablePathdla tego profilu. Użyj tego, aby uruchomić jeden profil w Chrome, a drugi w Brave. - Lokalne profile zarządzane używają
browser.localLaunchTimeoutMsdo wykrywania HTTP Chrome CDP po uruchomieniu procesu orazbrowser.localCdpReadyTimeoutMsdo gotowości websocket CDP po uruchomieniu. Zwiększ je na wolniejszych hostach, gdzie Chrome uruchamia się pomyślnie, ale kontrole gotowości ścigają się ze startem. Obie wartości muszą być dodatnimi liczbami całkowitymi do120000ms; nieprawidłowe wartości konfiguracji są odrzucane. - Kolejność automatycznego wykrywania: domyślna przeglądarka, jeśli oparta na Chromium → Chrome → Brave → Edge → Chromium → Chrome Canary.
browser.executablePathibrowser.profiles.<name>.executablePathakceptują zarówno~, jak i~/...dla katalogu domowego systemu operacyjnego przed uruchomieniem Chromium.userDataDirdla profilu na profilachexisting-sessionrównież jest rozwijane z tyldą.- Usługa sterowania: tylko loopback (port wyprowadzony z
gateway.port, domyślnie18791). extraArgsdodaje dodatkowe flagi uruchomieniowe do lokalnego startu Chromium (na przykład--disable-gpu, rozmiar okna lub flagi debugowania).
Interfejs użytkownika
seamColor: kolor akcentu dla chromu interfejsu natywnej aplikacji (odcień dymku Talk Mode itp.).assistant: nadpisanie tożsamości Control UI. W razie braku używa tożsamości aktywnego agenta.
Gateway
Gateway field details
Gateway field details
mode:local(uruchom Gateway) alboremote(połącz ze zdalnym Gateway). Gateway odmawia uruchomienia, jeśli wartość nie wynosilocal.port: pojedynczy multipleksowany port dla WS + HTTP. Pierwszeństwo:--port>OPENCLAW_GATEWAY_PORT>gateway.port>18789.bind:auto,loopback(domyślnie),lan(0.0.0.0),tailnet(tylko adres IP Tailscale) albocustom.- Starsze aliasy bind: używaj wartości trybu bind w
gateway.bind(auto,loopback,lan,tailnet,custom), a nie aliasów hosta (0.0.0.0,127.0.0.1,localhost,::,::1). - Uwaga dotycząca Docker: domyślne powiązanie
loopbacknasłuchuje na127.0.0.1wewnątrz kontenera. Przy sieci mostkowanej Docker (-p 18789:18789) ruch przychodzi przezeth0, więc Gateway jest nieosiągalny. Użyj--network hostalbo ustawbind: "lan"(lubbind: "custom"zcustomBindHost: "0.0.0.0"), aby nasłuchiwać na wszystkich interfejsach. - Uwierzytelnianie: domyślnie wymagane. Powiązania inne niż loopback wymagają uwierzytelniania Gateway. W praktyce oznacza to współdzielony token/hasło albo świadomy tożsamości reverse proxy z
gateway.auth.mode: "trusted-proxy". Kreator onboardingu domyślnie generuje token. - Jeśli skonfigurowano zarówno
gateway.auth.token, jak igateway.auth.password(w tym SecretRefs), ustaw jawniegateway.auth.modenatokenalbopassword. Przepływy uruchamiania oraz instalacji/naprawy usługi kończą się niepowodzeniem, gdy oba są skonfigurowane, a tryb nie jest ustawiony. gateway.auth.mode: "none": jawny tryb bez uwierzytelniania. Używaj tylko w zaufanych konfiguracjach local loopback; celowo nie jest on oferowany w promptach onboardingu.gateway.auth.mode: "trusted-proxy": deleguje uwierzytelnianie przeglądarki/użytkownika do świadomego tożsamości reverse proxy i ufa nagłówkom tożsamości zgateway.trustedProxies(zobacz Uwierzytelnianie przez zaufany proxy). Ten tryb domyślnie oczekuje źródła proxy innego niż loopback; reverse proxy na tym samym hoście przez loopback wymagają jawnegogateway.auth.trustedProxy.allowLoopback = true. Wewnętrzni wywołujący z tego samego hosta mogą używaćgateway.auth.passwordjako lokalnego bezpośredniego fallbacku;gateway.auth.tokenpozostaje wzajemnie wykluczone z trybem trusted-proxy.gateway.auth.allowTailscale: gdytrue, nagłówki tożsamości Tailscale Serve mogą spełnić wymagania uwierzytelniania interfejsu kontrolnego/WebSocket (weryfikowane przeztailscale whois). Endpointy HTTP API nie używają tego uwierzytelniania nagłówkiem Tailscale; zamiast tego podążają za normalnym trybem uwierzytelniania HTTP Gateway. Ten przepływ bez tokenu zakłada, że host Gateway jest zaufany. Domyślnietrue, gdytailscale.mode = "serve".gateway.auth.rateLimit: opcjonalny limiter nieudanego uwierzytelniania. Stosowany osobno dla adresu IP klienta i zakresu uwierzytelniania (shared-secret oraz device-token są śledzone niezależnie). Zablokowane próby zwracają429+Retry-After.- Na asynchronicznej ścieżce interfejsu kontrolnego Tailscale Serve nieudane próby dla tego samego
{scope, clientIp}są serializowane przed zapisem niepowodzenia. Równoczesne błędne próby od tego samego klienta mogą więc uruchomić limiter przy drugim żądaniu, zamiast przejść równolegle jako zwykłe niedopasowania. gateway.auth.rateLimit.exemptLoopbackdomyślnie ma wartośćtrue; ustawfalse, gdy celowo chcesz limitować także ruch z localhost (dla konfiguracji testowych lub rygorystycznych wdrożeń proxy).
- Na asynchronicznej ścieżce interfejsu kontrolnego Tailscale Serve nieudane próby dla tego samego
- Próby uwierzytelniania WS z originu przeglądarki są zawsze limitowane z wyłączonym wyjątkiem dla loopback (obrona w głąb przed przeglądarkowym brute force na localhost).
- Na loopback te blokady z originu przeglądarki są izolowane dla każdej znormalizowanej wartości
Origin, więc powtarzające się niepowodzenia z jednego originu localhost nie blokują automatycznie innego originu. tailscale.mode:serve(tylko tailnet, powiązanie loopback) albofunnel(publiczne, wymaga uwierzytelniania).tailscale.preserveFunnel: gdytrueitailscale.mode = "serve", OpenClaw sprawdzatailscale funnel statusprzed ponownym zastosowaniem Serve przy uruchomieniu i pomija to, jeśli zewnętrznie skonfigurowana trasa Funnel już obejmuje port Gateway. Domyślniefalse.controlUi.allowedOrigins: jawna lista dozwolonych originów przeglądarki dla połączeń WebSocket Gateway. Wymagana, gdy oczekiwani są klienci przeglądarkowi z originów innych niż loopback.controlUi.chatMessageMaxWidth: opcjonalna maksymalna szerokość pogrupowanych wiadomości czatu interfejsu kontrolnego. Akceptuje ograniczone wartości szerokości CSS, takie jak960px,82%,min(1280px, 82%)icalc(100% - 2rem).controlUi.dangerouslyAllowHostHeaderOriginFallback: niebezpieczny tryb, który włącza fallback originu oparty na nagłówku Host dla wdrożeń celowo polegających na polityce originu z nagłówka Host.remote.transport:ssh(domyślnie) albodirect(ws/wss). Dladirectwartośćremote.urlmusi byćws://albowss://.OPENCLAW_ALLOW_INSECURE_PRIVATE_WS=1: awaryjne nadpisanie po stronie klienta przez środowisko procesu, które zezwala na plaintextws://do zaufanych adresów IP sieci prywatnej; domyślnie plaintext pozostaje dozwolony tylko dla loopback. Nie ma odpowiednika wopenclaw.json, a konfiguracja sieci prywatnej przeglądarki, taka jakbrowser.ssrfPolicy.dangerouslyAllowPrivateNetwork, nie wpływa na klientów WebSocket Gateway.gateway.remote.token/.passwordto pola poświadczeń klienta zdalnego. Same nie konfigurują uwierzytelniania Gateway.gateway.push.apns.relay.baseUrl: bazowy URL HTTPS dla zewnętrznego przekaźnika APNs używanego przez oficjalne kompilacje iOS/TestFlight po opublikowaniu w Gateway rejestracji wspieranych przez przekaźnik. Ten URL musi pasować do URL przekaźnika wkompilowanego w kompilację iOS.gateway.push.apns.relay.timeoutMs: limit czasu wysyłania z Gateway do przekaźnika w milisekundach. Domyślnie10000.- Rejestracje wspierane przez przekaźnik są delegowane do konkretnej tożsamości Gateway. Sparowana aplikacja iOS pobiera
gateway.identity.get, dołącza tę tożsamość do rejestracji przekaźnika i przekazuje do Gateway grant wysyłania ograniczony do rejestracji. Inny Gateway nie może ponownie użyć tej zapisanej rejestracji. OPENCLAW_APNS_RELAY_BASE_URL/OPENCLAW_APNS_RELAY_TIMEOUT_MS: tymczasowe nadpisania środowiskowe dla powyższej konfiguracji przekaźnika.OPENCLAW_APNS_RELAY_ALLOW_HTTP=true: furtka tylko do developmentu dla URL-i przekaźnika HTTP na loopback. Produkcyjne URL-e przekaźnika powinny pozostać przy HTTPS.gateway.handshakeTimeoutMs: limit czasu handshake WebSocket Gateway przed uwierzytelnieniem w milisekundach. Domyślnie:15000.OPENCLAW_HANDSHAKE_TIMEOUT_MSma pierwszeństwo, gdy jest ustawione. Zwiększ tę wartość na obciążonych lub mało wydajnych hostach, gdzie lokalni klienci mogą łączyć się, gdy rozgrzewka uruchomieniowa nadal się stabilizuje.gateway.channelHealthCheckMinutes: interwał monitora kondycji kanału w minutach. Ustaw0, aby globalnie wyłączyć restarty monitora kondycji. Domyślnie:5.gateway.channelStaleEventThresholdMinutes: próg nieaktualnego gniazda w minutach. Utrzymuj tę wartość większą lub równągateway.channelHealthCheckMinutes. Domyślnie:30.gateway.channelMaxRestartsPerHour: maksymalna liczba restartów monitora kondycji na kanał/konto w kroczącym oknie godzinnym. Domyślnie:10.channels.<provider>.healthMonitor.enabled: wyłączenie restartów monitora kondycji dla danego kanału przy zachowaniu włączonego monitora globalnego.channels.<provider>.accounts.<accountId>.healthMonitor.enabled: nadpisanie dla danego konta w kanałach wielokontowych. Gdy ustawione, ma pierwszeństwo przed nadpisaniem na poziomie kanału.- Lokalne ścieżki wywołań Gateway mogą używać
gateway.remote.*jako fallbacku tylko wtedy, gdygateway.auth.*nie jest ustawione. - Jeśli
gateway.auth.token/gateway.auth.passwordjest jawnie skonfigurowane przez SecretRef i nierozwiązane, rozwiązywanie kończy się zamknięciem bez dostępu (bez maskowania przez zdalny fallback). trustedProxies: adresy IP reverse proxy, które terminują TLS lub wstrzykują nagłówki przekazanego klienta. Wymieniaj tylko proxy, które kontrolujesz. Wpisy loopback nadal są prawidłowe dla konfiguracji proxy/wykrywania lokalnego na tym samym hoście (na przykład Tailscale Serve lub lokalny reverse proxy), ale nie sprawiają, że żądania loopback kwalifikują się dogateway.auth.mode: "trusted-proxy".allowRealIpFallback: gdytrue, Gateway akceptujeX-Real-IP, jeśli brakujeX-Forwarded-For. Domyślniefalsedla zachowania fail-closed.gateway.nodes.pairing.autoApproveCidrs: opcjonalna lista dozwolonych CIDR/IP do automatycznego zatwierdzania pierwszego parowania urządzenia węzła bez żądanych zakresów. Jest wyłączona, gdy nieustawiona. Nie zatwierdza automatycznie parowania operatora/przeglądarki/interfejsu kontrolnego/WebChat ani nie zatwierdza automatycznie ról, zakresów, metadanych czy aktualizacji klucza publicznego.gateway.nodes.allowCommands/gateway.nodes.denyCommands: globalne kształtowanie allow/deny dla zadeklarowanych poleceń węzła po parowaniu i ocenie listy dozwolonej platformy. UżyjallowCommands, aby włączyć niebezpieczne polecenia węzła, takie jakcamera.snap,camera.clipiscreen.record;denyCommandsusuwa polecenie, nawet jeśli domyślna wartość platformy lub jawne zezwolenie w przeciwnym razie by je obejmowały. Po zmianie przez węzeł zadeklarowanej listy poleceń odrzuć i ponownie zatwierdź to parowanie urządzenia, aby Gateway zapisał zaktualizowaną migawkę poleceń.gateway.tools.deny: dodatkowe nazwy narzędzi blokowane dla HTTPPOST /tools/invoke(rozszerza domyślną listę odmów).gateway.tools.allow: usuwa nazwy narzędzi z domyślnej listy odmów HTTP.
Endpointy zgodne z OpenAI
- Chat Completions: domyślnie wyłączone. Włącz przez
gateway.http.endpoints.chatCompletions.enabled: true. - Responses API:
gateway.http.endpoints.responses.enabled. - Utwardzanie wejścia URL w Responses:
gateway.http.endpoints.responses.maxUrlPartsgateway.http.endpoints.responses.files.urlAllowlistgateway.http.endpoints.responses.images.urlAllowlistPuste listy dozwolonych są traktowane jako nieustawione; użyjgateway.http.endpoints.responses.files.allowUrl=falsei/lubgateway.http.endpoints.responses.images.allowUrl=false, aby wyłączyć pobieranie z URL.
- Opcjonalny nagłówek utwardzania odpowiedzi:
gateway.http.securityHeaders.strictTransportSecurity(ustawiaj tylko dla originów HTTPS, które kontrolujesz; zobacz Uwierzytelnianie przez zaufany proxy)
Izolacja wielu instancji
Uruchamiaj wiele Gateway na jednym hoście z unikalnymi portami i katalogami stanu:--dev (używa ~/.openclaw-dev + port 19001), --profile <name> (używa ~/.openclaw-<name>).
Zobacz Wiele Gateway.
gateway.tls
enabled: włącza terminację TLS na listenerze Gateway (HTTPS/WSS) (domyślnie:false).autoGenerate: automatycznie generuje lokalną samopodpisaną parę certyfikatu/klucza, gdy jawne pliki nie są skonfigurowane; tylko do użytku lokalnego/developerskiego.certPath: ścieżka w systemie plików do pliku certyfikatu TLS.keyPath: ścieżka w systemie plików do pliku klucza prywatnego TLS; zachowaj ograniczone uprawnienia.caPath: opcjonalna ścieżka do pakietu CA dla weryfikacji klienta lub niestandardowych łańcuchów zaufania.
gateway.reload
mode: kontroluje sposób stosowania edycji konfiguracji w czasie działania."off": ignoruje edycje na żywo; zmiany wymagają jawnego restartu."restart": zawsze restartuje proces Gateway przy zmianie konfiguracji."hot": stosuje zmiany w procesie bez restartu."hybrid"(domyślnie): najpierw próbuje hot reload; w razie potrzeby wraca do restartu.
debounceMs: okno debounce w ms przed zastosowaniem zmian konfiguracji (nieujemna liczba całkowita).deferralTimeoutMs: opcjonalny maksymalny czas w ms oczekiwania na operacje w toku przed wymuszeniem restartu lub hot reload kanału. Pomiń, aby użyć domyślnego ograniczonego oczekiwania (300000); ustaw0, aby czekać bezterminowo i logować okresowe ostrzeżenia o nadal oczekujących operacjach.
Hooki
Authorization: Bearer <token> lub x-openclaw-token: <token>.
Tokeny hooków w query string są odrzucane.
Uwagi dotyczące walidacji i bezpieczeństwa:
hooks.enabled=truewymaga niepustegohooks.token.hooks.tokenmusi być inny niżgateway.auth.token; ponowne użycie tokena Gateway jest odrzucane.hooks.pathnie może być/; użyj dedykowanej podścieżki, takiej jak/hooks.- Jeśli
hooks.allowRequestSessionKey=true, ograniczhooks.allowedSessionKeyPrefixes(na przykład["hook:"]). - Jeśli mapowanie lub preset używa szablonowego
sessionKey, ustawhooks.allowedSessionKeyPrefixesihooks.allowRequestSessionKey=true. Statyczne klucze mapowania nie wymagają tej zgody.
POST /hooks/wake→{ text, mode?: "now"|"next-heartbeat" }POST /hooks/agent→{ message, name?, agentId?, sessionKey?, wakeMode?, deliver?, channel?, to?, model?, thinking?, timeoutSeconds? }sessionKeyz payloadu żądania jest akceptowany tylko wtedy, gdyhooks.allowRequestSessionKey=true(domyślnie:false).
POST /hooks/<name>→ rozwiązywane przezhooks.mappings- Wartości
sessionKeymapowania renderowane z szablonu są traktowane jako dostarczone z zewnątrz i również wymagająhooks.allowRequestSessionKey=true.
- Wartości
Mapping details
Mapping details
match.pathdopasowuje podścieżkę po/hooks(np./hooks/gmail→gmail).match.sourcedopasowuje pole payloadu dla ścieżek ogólnych.- Szablony takie jak
{{messages[0].subject}}czytają dane z payloadu. transformmoże wskazywać moduł JS/TS zwracający akcję hooka.transform.modulemusi być ścieżką względną i pozostawać w obrębiehooks.transformsDir(ścieżki bezwzględne i przechodzenie katalogów są odrzucane).- Trzymaj
hooks.transformsDirpod~/.openclaw/hooks/transforms; katalogi Skills w obszarze roboczym są odrzucane. Jeśliopenclaw doctorzgłosi tę ścieżkę jako nieprawidłową, przenieś moduł transformacji do katalogu transformacji hooków albo usuńhooks.transformsDir.
agentIdkieruje do określonego agenta; nieznane identyfikatory przechodzą na domyślny.allowedAgentIds: ogranicza jawne kierowanie (*lub pominięte = zezwól na wszystkie,[]= odmów wszystkim).defaultSessionKey: opcjonalny stały klucz sesji dla uruchomień agenta hooka bez jawnegosessionKey.allowRequestSessionKey: zezwala wywołującym/hooks/agentoraz kluczom sesji mapowania sterowanym szablonem ustawiaćsessionKey(domyślnie:false).allowedSessionKeyPrefixes: opcjonalna lista dozwolonych prefiksów dla jawnych wartościsessionKey(żądanie + mapowanie), np.["hook:"]. Staje się wymagana, gdy dowolne mapowanie lub preset używa szablonowegosessionKey.deliver: truewysyła końcową odpowiedź do kanału;channeldomyślnie ma wartośćlast.modelnadpisuje LLM dla tego uruchomienia hooka (musi być dozwolony, jeśli katalog modeli jest ustawiony).
Integracja Gmail
- Wbudowany preset Gmail używa
sessionKey: "hook:gmail:{{messages[0].id}}". - Jeśli zachowujesz to kierowanie według wiadomości, ustaw
hooks.allowRequestSessionKey: truei ograniczhooks.allowedSessionKeyPrefixes, aby pasowało do przestrzeni nazw Gmail, na przykład["hook:", "hook:gmail:"]. - Jeśli potrzebujesz
hooks.allowRequestSessionKey: false, nadpisz preset statycznymsessionKeyzamiast domyślnej wartości szablonowej.
- Gateway automatycznie uruchamia
gog gmail watch serveprzy starcie, gdy jest skonfigurowany. UstawOPENCLAW_SKIP_GMAIL_WATCHER=1, aby wyłączyć. - Nie uruchamiaj osobnego
gog gmail watch serverównolegle z Gateway.
Host Plugin canvas
- Serwuje edytowalne przez agenta HTML/CSS/JS oraz A2UI przez HTTP pod portem Gateway:
http://<gateway-host>:<gateway.port>/__openclaw__/canvas/http://<gateway-host>:<gateway.port>/__openclaw__/a2ui/
- Tylko lokalnie: pozostaw
gateway.bind: "loopback"(domyślnie). - Powiązania inne niż loopback: trasy canvas wymagają uwierzytelniania Gateway (token/hasło/zaufany proxy), tak jak inne powierzchnie HTTP Gateway.
- WebViewy Node zwykle nie wysyłają nagłówków uwierzytelniania; po sparowaniu i połączeniu węzła Gateway ogłasza adresy URL możliwości o zakresie węzła dla dostępu do canvas/A2UI.
- Adresy URL możliwości są powiązane z aktywną sesją WS węzła i szybko wygasają. Awaryjne rozwiązanie oparte na IP nie jest używane.
- Wstrzykuje klienta live reload do serwowanego HTML.
- Automatycznie tworzy startowy
index.html, gdy katalog jest pusty. - Serwuje też A2UI pod
/__openclaw__/a2ui/. - Zmiany wymagają ponownego uruchomienia Gateway.
- Wyłącz live reload dla dużych katalogów lub błędów
EMFILE.
Wykrywanie
mDNS (Bonjour)
minimal(domyślnie, gdy wbudowany Pluginbonjourjest włączony): pomijacliPath+sshPortw rekordach TXT.full: uwzględniacliPath+sshPort; rozgłaszanie multicast w sieci LAN nadal wymaga włączenia wbudowanego Pluginbonjour.off: wyłącza rozgłaszanie multicast w sieci LAN bez zmiany włączenia pluginu.- Wbudowany Plugin
bonjoururuchamia się automatycznie na hostach macOS i jest opcjonalny na Linuxie, Windowsie oraz skonteneryzowanych wdrożeniach Gateway. - Nazwa hosta domyślnie przyjmuje systemową nazwę hosta, gdy jest poprawną etykietą DNS, a w przeciwnym razie przechodzi na
openclaw. Nadpisz za pomocąOPENCLAW_MDNS_HOSTNAME.
Wide-area (DNS-SD)
~/.openclaw/dns/. Do wykrywania między sieciami połącz to z serwerem DNS (zalecany CoreDNS) + Tailscale split DNS.
Konfiguracja: openclaw dns setup --apply.
Środowisko
env (wbudowane zmienne środowiskowe)
- Wbudowane zmienne środowiskowe są stosowane tylko wtedy, gdy w środowisku procesu brakuje danego klucza.
- Pliki
.env:.envw CWD +~/.openclaw/.env(żaden nie nadpisuje istniejących zmiennych). shellEnv: importuje brakujące oczekiwane klucze z profilu powłoki logowania.- Pełną kolejność pierwszeństwa opisuje Środowisko.
Podstawianie zmiennych środowiskowych
Odwołuj się do zmiennych środowiskowych w dowolnym ciągu konfiguracji za pomocą${VAR_NAME}:
- Dopasowywane są tylko nazwy pisane wielkimi literami:
[A-Z_][A-Z0-9_]*. - Brakujące/puste zmienne powodują błąd podczas ładowania konfiguracji.
- Użyj
$${VAR}, aby uzyskać literał${VAR}. - Działa z
$include.
Sekrety
Odwołania do sekretów są addytywne: wartości w tekście jawnym nadal działają.SecretRef
Użyj jednego kształtu obiektu:
- wzorzec
provider:^[a-z][a-z0-9_-]{0,63}$ - wzorzec
source: "env"id:^[A-Z][A-Z0-9_]{0,127}$ source: "file"id: bezwzględny wskaźnik JSON (na przykład"/providers/openai/apiKey")- wzorzec
source: "exec"id:^[A-Za-z0-9][A-Za-z0-9._:/-]{0,255}$ - identyfikatory
source: "exec"nie mogą zawierać segmentów ścieżki rozdzielonych ukośnikami.ani..(na przykłada/../bjest odrzucane)
Obsługiwany obszar poświadczeń
- Kanoniczna macierz: Obszar poświadczeń SecretRef
secrets applywskazuje obsługiwane ścieżki poświadczeń wopenclaw.json.- Odwołania w
auth-profiles.jsonsą uwzględniane w rozwiązywaniu w czasie działania i pokryciu audytu.
Konfiguracja dostawców sekretów
- Dostawca
fileobsługujemode: "json"imode: "singleValue"(idmusi być"value"w trybie singleValue). - Ścieżki dostawców plikowych i exec kończą się błędem w sposób zamknięty, gdy weryfikacja ACL systemu Windows jest niedostępna. Ustaw
allowInsecurePath: truetylko dla zaufanych ścieżek, których nie można zweryfikować. - Dostawca
execwymaga bezwzględnej ścieżkicommandi używa ładunków protokołu na stdin/stdout. - Domyślnie ścieżki poleceń będące dowiązaniami symbolicznymi są odrzucane. Ustaw
allowSymlinkCommand: true, aby zezwolić na ścieżki dowiązań symbolicznych przy jednoczesnej walidacji rozwiązanej ścieżki docelowej. - Jeśli skonfigurowano
trustedDirs, sprawdzenie zaufanego katalogu dotyczy rozwiązanej ścieżki docelowej. - Środowisko procesu potomnego
execjest domyślnie minimalne; wymagane zmienne przekaż jawnie za pomocąpassEnv. - Odwołania do sekretów są rozwiązywane podczas aktywacji do migawki w pamięci, a następnie ścieżki żądań czytają tylko tę migawkę.
- Filtrowanie aktywnego obszaru ma zastosowanie podczas aktywacji: nierozwiązane odwołania na włączonych obszarach powodują błąd uruchomienia/przeładowania, a nieaktywne obszary są pomijane z diagnostyką.
Przechowywanie uwierzytelniania
- Profile poszczególnych agentów są przechowywane w
<agentDir>/auth-profiles.json. auth-profiles.jsonobsługuje odwołania na poziomie wartości (keyRefdlaapi_key,tokenRefdlatoken) dla statycznych trybów poświadczeń.- Starsze płaskie mapy
auth-profiles.json, takie jak{ "provider": { "apiKey": "..." } }, nie są formatem czasu działania;openclaw doctor --fixprzepisuje je do kanonicznych profili klucza APIprovider:defaultz kopią zapasową.legacy-flat.*.bak. - Profile w trybie OAuth (
auth.profiles.<id>.mode = "oauth") nie obsługują poświadczeń profilu uwierzytelniania opartych na SecretRef. - Statyczne poświadczenia czasu działania pochodzą z rozwiązanych migawek w pamięci; starsze statyczne wpisy
auth.jsonsą czyszczone po wykryciu. - Starsze importy OAuth pochodzą z
~/.openclaw/credentials/oauth.json. - Zobacz OAuth.
- Zachowanie sekretów w czasie działania oraz narzędzia
audit/configure/apply: Zarządzanie sekretami.
auth.cooldowns
billingBackoffHours: bazowy czas backoff w godzinach, gdy profil kończy się niepowodzeniem z powodu rzeczywistych błędów rozliczeniowych lub niewystarczających środków (domyślnie:5). Jawny tekst dotyczący rozliczeń może nadal trafić tutaj nawet przy odpowiedziach401/403, ale dopasowania tekstu specyficzne dla dostawcy pozostają ograniczone do dostawcy, do którego należą (na przykład OpenRouterKey limit exceeded). Ponawialne komunikaty HTTP402dotyczące okna użycia lub limitu wydatków organizacji/przestrzeni roboczej pozostają zamiast tego w ścieżcerate_limit.billingBackoffHoursByProvider: opcjonalne nadpisania godzin backoff dla rozliczeń dla poszczególnych dostawców.billingMaxHours: limit w godzinach dla wykładniczego wzrostu backoff dla rozliczeń (domyślnie:24).authPermanentBackoffMinutes: bazowy czas backoff w minutach dla niepowodzeńauth_permanento wysokiej pewności (domyślnie:10).authPermanentMaxMinutes: limit w minutach dla wzrostu backoffauth_permanent(domyślnie:60).failureWindowHours: kroczące okno w godzinach używane dla liczników backoff (domyślnie:24).overloadedProfileRotations: maksymalna liczba rotacji profili uwierzytelniania tego samego dostawcy dla błędów przeciążenia przed przełączeniem na fallback modelu (domyślnie:1). Kształty zajętości dostawcy, takie jakModelNotReadyException, trafiają tutaj.overloadedBackoffMs: stałe opóźnienie przed ponowieniem rotacji przeciążonego dostawcy/profilu (domyślnie:0).rateLimitedProfileRotations: maksymalna liczba rotacji profili uwierzytelniania tego samego dostawcy dla błędów limitu szybkości przed przełączeniem na fallback modelu (domyślnie:1). Ten koszyk limitu szybkości obejmuje tekst ukształtowany przez dostawcę, taki jakToo many concurrent requests,ThrottlingException,concurrency limit reached,workers_ai ... quota limit exceedediresource exhausted.
Rejestrowanie
- Domyślny plik dziennika:
/tmp/openclaw/openclaw-YYYY-MM-DD.log. - Ustaw
logging.file, aby użyć stabilnej ścieżki. consoleLevelpodnosi się dodebug, gdy użyto--verbose.maxFileBytes: maksymalny rozmiar aktywnego pliku dziennika w bajtach przed rotacją (dodatnia liczba całkowita; domyślnie:104857600= 100 MB). OpenClaw przechowuje obok aktywnego pliku do pięciu numerowanych archiwów.redactSensitive/redactPatterns: najlepsze możliwe maskowanie dla wyjścia konsoli, dzienników plikowych, rekordów dzienników OTLP i utrwalonego tekstu transkrypcji sesji.redactSensitive: "off"wyłącza tylko tę ogólną politykę dzienników/transkrypcji; powierzchnie bezpieczeństwa UI/narzędzi/diagnostyki nadal redagują sekrety przed emisją.
Diagnostyka
enabled: główny przełącznik wyjścia instrumentacji (domyślnie:true).flags: tablica ciągów flag włączających ukierunkowane wyjście dziennika (obsługuje symbole wieloznaczne, takie jak"telegram.*"lub"*").stuckSessionWarnMs: próg wieku bez postępu w ms do klasyfikowania długotrwałych sesji przetwarzania jakosession.long_running,session.stalledlubsession.stuck. Odpowiedź, narzędzie, status, blok i postęp ACP resetują licznik czasu; powtarzane diagnostykisession.stuckwycofują się, gdy nie ma zmian.stuckSessionAbortMs: próg wieku bez postępu w ms, po którym kwalifikująca się zablokowana aktywna praca może zostać przerwana i opróżniona w celu odzyskania. Gdy nie ustawiono, OpenClaw używa bezpieczniejszego rozszerzonego okna uruchomienia osadzonego wynoszącego co najmniej 10 minut i 5xstuckSessionWarnMs.otel.enabled: włącza potok eksportu OpenTelemetry (domyślnie:false). Pełną konfigurację, katalog sygnałów i model prywatności znajdziesz w Eksport OpenTelemetry.otel.endpoint: URL kolektora dla eksportu OTel.otel.tracesEndpoint/otel.metricsEndpoint/otel.logsEndpoint: opcjonalne punkty końcowe OTLP specyficzne dla sygnału. Gdy ustawione, nadpisująotel.endpointtylko dla tego sygnału.otel.protocol:"http/protobuf"(domyślnie) lub"grpc".otel.headers: dodatkowe nagłówki metadanych HTTP/gRPC wysyłane z żądaniami eksportu OTel.otel.serviceName: nazwa usługi dla atrybutów zasobu.otel.traces/otel.metrics/otel.logs: włącz eksport śladów, metryk lub dzienników.otel.sampleRate: współczynnik próbkowania śladów0-1.otel.flushIntervalMs: okresowy interwał opróżniania telemetrii w ms.otel.captureContent: opcjonalne przechwytywanie surowej treści dla atrybutów span OTEL. Domyślnie wyłączone. Wartość logicznatrueprzechwytuje niesystemową treść wiadomości/narzędzi; forma obiektowa pozwala jawnie włączyćinputMessages,outputMessages,toolInputs,toolOutputsisystemPrompt.OTEL_SEMCONV_STABILITY_OPT_IN=gen_ai_latest_experimental: przełącznik środowiskowy dla najnowszych eksperymentalnych atrybutów dostawcy span GenAI. Domyślnie spany zachowują starszy atrybutgen_ai.systemdla zgodności; metryki GenAI używają ograniczonych atrybutów semantycznych.OPENCLAW_OTEL_PRELOADED=1: przełącznik środowiskowy dla hostów, które już zarejestrowały globalny SDK OpenTelemetry. OpenClaw pomija wtedy uruchamianie/zamykanie SDK należącego do pluginu, zachowując aktywne odbiorniki diagnostyczne.OTEL_EXPORTER_OTLP_TRACES_ENDPOINT,OTEL_EXPORTER_OTLP_METRICS_ENDPOINTiOTEL_EXPORTER_OTLP_LOGS_ENDPOINT: zmienne środowiskowe punktów końcowych specyficznych dla sygnału, używane, gdy pasujący klucz konfiguracji nie jest ustawiony.cacheTrace.enabled: rejestruj migawki śladu pamięci podręcznej dla uruchomień osadzonych (domyślnie:false).cacheTrace.filePath: ścieżka wyjściowa dla JSONL śladu pamięci podręcznej (domyślnie:$OPENCLAW_STATE_DIR/logs/cache-trace.jsonl).cacheTrace.includeMessages/includePrompt/includeSystem: kontrolują, co jest uwzględniane w wyjściu śladu pamięci podręcznej (wszystkie domyślnie:true).
Aktualizacja
channel: kanał wydania dla instalacji npm/git -"stable","beta"lub"dev".checkOnStart: sprawdzaj aktualizacje npm podczas uruchamiania gatewaya (domyślnie:true).auto.enabled: włącz automatyczną aktualizację w tle dla instalacji pakietowych (domyślnie:false).auto.stableDelayHours: minimalne opóźnienie w godzinach przed automatycznym zastosowaniem na kanale stabilnym (domyślnie:6; maks.:168).auto.stableJitterHours: dodatkowe okno rozłożenia wdrożenia na kanale stabilnym w godzinach (domyślnie:12; maks.:168).auto.betaCheckIntervalHours: jak często uruchamiane są sprawdzenia kanału beta w godzinach (domyślnie:1; maks.:24).
ACP
enabled: globalna bramka funkcji ACP (domyślnie:true; ustawfalse, aby ukryć wysyłanie ACP i opcje uruchamiania).dispatch.enabled: niezależna bramka dla wysyłania tur sesji ACP (domyślnie:true). Ustawfalse, aby zachować dostępność poleceń ACP, blokując jednocześnie wykonanie.backend: domyślny identyfikator backendu środowiska wykonawczego ACP (musi pasować do zarejestrowanego pluginu środowiska wykonawczego ACP). Najpierw zainstaluj plugin backendu, a jeśli ustawionoplugins.allow, uwzględnij identyfikator pluginu backendu (na przykładacpx), inaczej backend ACP się nie załaduje.defaultAgent: zapasowy identyfikator agenta docelowego ACP, gdy uruchomienia nie określają jawnego celu.allowedAgents: lista dozwolonych identyfikatorów agentów dopuszczonych do sesji środowiska wykonawczego ACP; pusta oznacza brak dodatkowego ograniczenia.maxConcurrentSessions: maksymalna liczba jednocześnie aktywnych sesji ACP.stream.coalesceIdleMs: okno bezczynności opróżniania w ms dla strumieniowanego tekstu.stream.maxChunkChars: maksymalny rozmiar fragmentu przed podziałem projekcji strumieniowanego bloku.stream.repeatSuppression: tłum powtarzane linie statusu/narzędzi na turę (domyślnie:true).stream.deliveryMode:"live"strumieniuje przyrostowo;"final_only"buforuje do zdarzeń kończących turę.stream.hiddenBoundarySeparator: separator przed widocznym tekstem po ukrytych zdarzeniach narzędzi (domyślnie:"paragraph").stream.maxOutputChars: maksymalna liczba znaków wyjścia asystenta projektowanych na turę ACP.stream.maxSessionUpdateChars: maksymalna liczba znaków dla projektowanych linii statusu/aktualizacji ACP.stream.tagVisibility: rekord nazw tagów z logicznymi nadpisaniami widoczności dla strumieniowanych zdarzeń.runtime.ttlMinutes: TTL bezczynności w minutach dla procesów roboczych sesji ACP przed kwalifikującym się czyszczeniem.runtime.installCommand: opcjonalne polecenie instalacji uruchamiane podczas przygotowywania środowiska wykonawczego ACP.
CLI
cli.banner.taglineModekontroluje styl sloganu banera:"random"(domyślnie): rotujące zabawne/sezonowe slogany."default": stały neutralny slogan (All your chats, one OpenClaw.)."off": brak tekstu sloganu (tytuł/wersja banera nadal są pokazywane).
- Aby ukryć cały baner (nie tylko slogany), ustaw zmienną środowiskową
OPENCLAW_HIDE_BANNER=1.
Kreator
Metadane zapisywane przez prowadzone przepływy konfiguracji CLI (onboard, configure, doctor):
Tożsamość
Zobacz pola tożsamościagents.list w sekcji Domyślne ustawienia agenta.
Most (starszy, usunięty)
Bieżące buildy nie zawierają już mostu TCP. Węzły łączą się przez WebSocket Gateway. Kluczebridge.* nie są już częścią schematu konfiguracji (walidacja kończy się niepowodzeniem do czasu ich usunięcia; openclaw doctor --fix może usunąć nieznane klucze).
Starsza konfiguracja mostu (odniesienie historyczne)
Starsza konfiguracja mostu (odniesienie historyczne)
Cron
sessionRetention: jak długo przechowywać zakończone izolowane sesje uruchomień Cron przed usunięciem zsessions.json. Kontroluje także czyszczenie zarchiwizowanych transkrypcji usuniętych zadań Cron. Domyślnie:24h; ustawfalse, aby wyłączyć.runLog.maxBytes: maksymalny rozmiar pojedynczego pliku dziennika uruchomień (cron/runs/<jobId>.jsonl) przed przycinaniem. Domyślnie:2_000_000bajtów.runLog.keepLines: najnowsze wiersze zachowywane po uruchomieniu przycinania dziennika uruchomień. Domyślnie:2000.webhookToken: token bearer używany do dostarczania POST Webhook zadań Cron (delivery.mode = "webhook"); jeśli zostanie pominięty, nagłówek uwierzytelniania nie jest wysyłany.webhook: przestarzały zapasowy adres URL Webhook (http/https), używany tylko dla zapisanych zadań, które nadal mająnotify: true.
cron.retry
maxAttempts: maksymalna liczba ponownych prób dla zadań jednorazowych przy błędach przejściowych (domyślnie:3; zakres:0-10).backoffMs: tablica opóźnień wycofania w ms dla każdej ponownej próby (domyślnie:[30000, 60000, 300000]; 1-10 wpisów).retryOn: typy błędów, które wyzwalają ponowne próby -"rate_limit","overloaded","network","timeout","server_error". Pomiń, aby ponawiać wszystkie typy przejściowe.
cron.failureAlert
enabled: włącz alerty o niepowodzeniach zadań Cron (domyślnie:false).after: liczba kolejnych niepowodzeń przed wyzwoleniem alertu (dodatnia liczba całkowita, min:1).cooldownMs: minimalna liczba milisekund między powtarzanymi alertami dla tego samego zadania (nieujemna liczba całkowita).includeSkipped: wliczaj kolejne pominięte uruchomienia do progu alertu (domyślnie:false). Pominięte uruchomienia są śledzone osobno i nie wpływają na wycofywanie po błędach wykonania.mode: tryb dostarczania -"announce"wysyła przez wiadomość kanału;"webhook"publikuje do skonfigurowanego Webhook.accountId: opcjonalny identyfikator konta lub kanału ograniczający dostarczanie alertów.
cron.failureDestination
- Domyślne miejsce docelowe powiadomień o niepowodzeniach Cron dla wszystkich zadań.
mode:"announce"lub"webhook"; domyślnie"announce", gdy istnieje wystarczająca ilość danych celu.channel: nadpisanie kanału dla dostarczania announce."last"ponownie używa ostatniego znanego kanału dostarczania.to: jawny cel announce lub adres URL Webhook. Wymagane w trybie Webhook.accountId: opcjonalne nadpisanie konta do dostarczania.delivery.failureDestinationustawione dla zadania nadpisuje tę globalną wartość domyślną.- Gdy nie ustawiono ani globalnego, ani ustawionego dla zadania miejsca docelowego niepowodzeń, zadania, które już dostarczają przez
announce, w razie niepowodzenia wracają do tego podstawowego celu announce. delivery.failureDestinationjest obsługiwane tylko dla zadańsessionTarget="isolated", chyba że podstawowydelivery.modezadania to"webhook".
Zmienne szablonu modelu multimediów
Symbole zastępcze szablonu rozwijane wtools.media.models[].args:
| Zmienna | Opis |
|---|---|
{{Body}} | Pełna treść przychodzącej wiadomości |
{{RawBody}} | Surowa treść (bez opakowań historii/nadawcy) |
{{BodyStripped}} | Treść z usuniętymi wzmiankami grupowymi |
{{From}} | Identyfikator nadawcy |
{{To}} | Identyfikator miejsca docelowego |
{{MessageSid}} | Identyfikator wiadomości kanału |
{{SessionId}} | UUID bieżącej sesji |
{{IsNewSession}} | "true", gdy utworzono nową sesję |
{{MediaUrl}} | Pseudo-URL przychodzących multimediów |
{{MediaPath}} | Lokalna ścieżka multimediów |
{{MediaType}} | Typ multimediów (obraz/audio/dokument/…) |
{{Transcript}} | Transkrypcja audio |
{{Prompt}} | Rozwiązany prompt multimediów dla wpisów CLI |
{{MaxChars}} | Rozwiązana maksymalna liczba znaków wyjścia dla wpisów CLI |
{{ChatType}} | "direct" lub "group" |
{{GroupSubject}} | Temat grupy (najlepsza próba) |
{{GroupMembers}} | Podgląd członków grupy (najlepsza próba) |
{{SenderName}} | Wyświetlana nazwa nadawcy (najlepsza próba) |
{{SenderE164}} | Numer telefonu nadawcy (najlepsza próba) |
{{Provider}} | Wskazówka dostawcy (WhatsApp, Telegram, Discord itp.) |
Dołączanie konfiguracji ($include)
Podziel konfigurację na wiele plików:
- Pojedynczy plik: zastępuje zawierający go obiekt.
- Tablica plików: scalana głęboko w kolejności (późniejsze nadpisują wcześniejsze).
- Klucze równorzędne: scalane po dołączeniach (nadpisują dołączone wartości).
- Zagnieżdżone dołączenia: do 10 poziomów głębokości.
- Ścieżki: rozwiązywane względem pliku dołączającego, ale muszą pozostać wewnątrz katalogu konfiguracji najwyższego poziomu (
dirnameplikuopenclaw.json). Formy bezwzględne/../są dozwolone tylko wtedy, gdy nadal rozwiązują się w obrębie tej granicy. - Zapisy należące do OpenClaw, które zmieniają tylko jedną sekcję najwyższego poziomu opartą na dołączeniu pojedynczego pliku, zapisują zmiany do tego dołączonego pliku. Na przykład
plugins installaktualizujeplugins: { $include: "./plugins.json5" }wplugins.json5i pozostawiaopenclaw.jsonbez zmian. - Dołączenia główne, tablice dołączeń oraz dołączenia z nadpisaniami kluczy równorzędnych są tylko do odczytu dla zapisów należących do OpenClaw; takie zapisy kończą się niepowodzeniem zamiast spłaszczać konfigurację.
- Błędy: jasne komunikaty dla brakujących plików, błędów parsowania i cyklicznych dołączeń.
Powiązane: Konfiguracja · Przykłady konfiguracji · Doctor