FAQ

Najczęściej zadawane pytania

Szybkie odpowiedzi oraz głębsze rozwiązywanie problemów dla rzeczywistych konfiguracji (lokalny development, VPS, wielu agentów, OAuth/klucze API, awaryjne przełączanie modeli). Diagnostykę działania znajdziesz w Rozwiązywaniu problemów. Pełną dokumentację konfiguracji znajdziesz w Konfiguracji.

Pierwsze 60 sekund, jeśli coś nie działa

  1. Szybki status (pierwsze sprawdzenie)

    openclaw status
    

    Szybkie lokalne podsumowanie: OS + aktualizacja, osiągalność gateway/usługi, agenci/sesje, konfiguracja dostawców + problemy działania (gdy gateway jest osiągalny).

  2. Raport do wklejenia (bezpieczny do udostępnienia)

    openclaw status --all
    

    Diagnoza tylko do odczytu z końcówką logu (tokeny zredagowane).

  3. Stan demona + portu

    openclaw gateway status
    

    Pokazuje runtime nadzorcy względem osiągalności RPC, docelowy URL sondy oraz konfigurację, której usługa prawdopodobnie użyła.

  4. Głębokie sondy

    openclaw status --deep
    

    Uruchamia sondę stanu Gateway na żywo, w tym sondy kanałów, gdy są obsługiwane (wymaga osiągalnego Gateway). Zobacz Stan.

  5. Śledź najnowszy log

    openclaw logs --follow
    

    Jeśli RPC nie działa, użyj awaryjnie:

    tail -f "$(ls -t /tmp/openclaw/openclaw-*.log | head -1)"
    

    Logi plikowe są oddzielne od logów usługi; zobacz Logowanie i Rozwiązywanie problemów.

  6. Uruchom doctor (naprawy)

    openclaw doctor
    

    Naprawia/migruje konfigurację/stan + uruchamia kontrole stanu. Zobacz Doctor.

  7. Migawka Gateway

    openclaw health --json
    openclaw health --verbose   # pokazuje docelowy URL + ścieżkę konfiguracji przy błędach
    

    Prosi uruchomiony Gateway o pełną migawkę (tylko WS). Zobacz Stan.

Szybki start i pierwsza konfiguracja

Pytania i odpowiedzi po pierwszym uruchomieniu — instalacja, onboarding, ścieżki autoryzacji, subskrypcje, początkowe błędy — znajdziesz w FAQ pierwszego uruchomienia.

Czym jest OpenClaw?

Czym jest OpenClaw w jednym akapicie?

OpenClaw to osobisty asystent AI, którego uruchamiasz na własnych urządzeniach. Odpowiada w komunikatorach, których już używasz (WhatsApp, Telegram, Slack, Mattermost, Discord, Google Chat, Signal, iMessage, WebChat oraz dołączone pluginy kanałów, takie jak QQ Bot), a na obsługiwanych platformach może też obsługiwać głos + Canvas na żywo. Gateway to zawsze włączona płaszczyzna sterowania; asystent jest produktem.

Propozycja wartości

OpenClaw to nie „tylko wrapper Claude”. To lokalna płaszczyzna sterowania, która pozwala uruchomić sprawnego asystenta na własnym sprzęcie, dostępnego z aplikacji czatu, których już używasz, z sesjami stanowymi, pamięcią i narzędziami - bez oddawania kontroli nad swoimi przepływami pracy hostowanemu SaaS.

Najważniejsze cechy:

  • Twoje urządzenia, twoje dane: uruchamiaj Gateway tam, gdzie chcesz (Mac, Linux, VPS), i trzymaj workspace + historię sesji lokalnie.
  • Prawdziwe kanały, nie webowy sandbox: WhatsApp/Telegram/Slack/Discord/Signal/iMessage/itd., plus głos mobilny i Canvas na obsługiwanych platformach.
  • Niezależność od modelu: używaj Anthropic, OpenAI, MiniMax, OpenRouter itd., z routingiem i awaryjnym przełączaniem per agent.
  • Opcja wyłącznie lokalna: uruchamiaj lokalne modele, aby wszystkie dane mogły pozostać na twoim urządzeniu, jeśli tego chcesz.
  • Routing wielu agentów: oddzielni agenci per kanał, konto lub zadanie, każdy z własnym workspace i domyślnymi ustawieniami.
  • Open source i łatwe modyfikacje: przeglądaj, rozszerzaj i hostuj samodzielnie bez uzależnienia od dostawcy.

Dokumentacja: Gateway, Kanały, Wielu agentów, Pamięć.

Właśnie to skonfigurowałem - co zrobić najpierw?

Dobre pierwsze projekty:

  • Zbuduj stronę internetową (WordPress, Shopify albo prostą stronę statyczną).
  • Stwórz prototyp aplikacji mobilnej (zarys, ekrany, plan API).
  • Uporządkuj pliki i foldery (porządki, nazewnictwo, tagowanie).
  • Podłącz Gmail i automatyzuj podsumowania lub działania następcze.

Może obsługiwać duże zadania, ale działa najlepiej, gdy dzielisz je na fazy i używasz subagentów do pracy równoległej.

Jakie jest pięć najczęstszych codziennych zastosowań OpenClaw?

Codzienne korzyści zwykle wyglądają tak:

  • Osobiste briefingi: podsumowania skrzynki odbiorczej, kalendarza i ważnych dla ciebie wiadomości.
  • Research i redagowanie: szybki research, podsumowania i pierwsze wersje e-maili lub dokumentów.
  • Przypomnienia i działania następcze: ponaglenia i listy kontrolne sterowane przez Cron lub Heartbeat.
  • Automatyzacja przeglądarki: wypełnianie formularzy, zbieranie danych i powtarzanie zadań webowych.
  • Koordynacja między urządzeniami: wyślij zadanie z telefonu, pozwól Gateway uruchomić je na serwerze i odbierz wynik na czacie.
Czy OpenClaw może pomóc w generowaniu leadów, outreachu, reklamach i blogach dla SaaS?

Tak, w zakresie researchu, kwalifikacji i redagowania. Może skanować strony, budować krótkie listy, podsumowywać prospekty i pisać robocze wersje outreachu lub tekstów reklam.

W przypadku outreachu lub kampanii reklamowych utrzymaj człowieka w pętli. Unikaj spamu, przestrzegaj lokalnego prawa i zasad platform oraz sprawdzaj wszystko przed wysłaniem. Najbezpieczniejszy wzorzec to pozwolić OpenClaw przygotować wersję roboczą, a zatwierdzać ją samodzielnie.

Dokumentacja: Bezpieczeństwo.

Jakie są zalety w porównaniu z Claude Code przy tworzeniu stron?

OpenClaw to osobisty asystent i warstwa koordynacji, a nie zamiennik IDE. Używaj Claude Code lub Codex do najszybszej bezpośredniej pętli kodowania w repozytorium. Używaj OpenClaw, gdy chcesz trwałej pamięci, dostępu między urządzeniami i orkiestracji narzędzi.

Zalety:

  • Trwała pamięć + workspace między sesjami
  • Dostęp wieloplatformowy (WhatsApp, Telegram, TUI, WebChat)
  • Orkiestracja narzędzi (przeglądarka, pliki, harmonogramy, hooki)
  • Zawsze włączony Gateway (uruchamiaj na VPS, korzystaj z dowolnego miejsca)
  • Nodes dla lokalnej przeglądarki/ekranu/kamery/exec

Prezentacja: https://openclaw.ai/showcase

Skills i automatyzacja

Jak dostosować Skills bez pozostawiania repozytorium w stanie dirty?

Używaj zarządzanych nadpisań zamiast edytowania kopii w repozytorium. Umieść zmiany w ~/.openclaw/skills/<name>/SKILL.md (albo dodaj folder przez skills.load.extraDirs w ~/.openclaw/openclaw.json). Priorytet to <workspace>/skills<workspace>/.agents/skills~/.agents/skills~/.openclaw/skills → dołączone → skills.load.extraDirs, więc zarządzane nadpisania nadal wygrywają z dołączonymi Skills bez dotykania gita. Jeśli potrzebujesz zainstalować skill globalnie, ale ma być widoczny tylko dla części agentów, trzymaj wspólną kopię w ~/.openclaw/skills i kontroluj widoczność przez agents.defaults.skills oraz agents.list[].skills. Tylko zmiany warte wysłania upstream powinny znajdować się w repozytorium i trafiać jako PR-y.

Czy mogę ładować Skills z niestandardowego folderu?

Tak. Dodaj dodatkowe katalogi przez skills.load.extraDirs w ~/.openclaw/openclaw.json (najniższy priorytet). Domyślny priorytet to <workspace>/skills<workspace>/.agents/skills~/.agents/skills~/.openclaw/skills → dołączone → skills.load.extraDirs. clawhub domyślnie instaluje do ./skills, które OpenClaw traktuje jako <workspace>/skills w następnej sesji. Jeśli skill ma być widoczny tylko dla określonych agentów, połącz to z agents.defaults.skills lub agents.list[].skills.

Jak mogę używać różnych modeli do różnych zadań?

Obecnie obsługiwane wzorce to:

  • Zadania Cron: izolowane zadania mogą ustawić nadpisanie model per zadanie.
  • Subagenci: kieruj zadania do oddzielnych agentów z różnymi modelami domyślnymi.
  • Przełączanie na żądanie: użyj /model, aby w dowolnym momencie przełączyć model bieżącej sesji.

Zobacz Zadania Cron, Routing wielu agentów i Polecenia slash.

Bot zawiesza się podczas ciężkiej pracy. Jak to odciążyć?

Używaj subagentów do długich lub równoległych zadań. Subagenci działają we własnej sesji, zwracają podsumowanie i utrzymują główny czat responsywnym.

Poproś bota, aby „spawn a sub-agent for this task”, albo użyj /subagents. Użyj /status na czacie, aby zobaczyć, co Gateway robi w tej chwili (i czy jest zajęty).

Wskazówka dotycząca tokenów: długie zadania i subagenci zużywają tokeny. Jeśli koszt ma znaczenie, ustaw tańszy model dla subagentów przez agents.defaults.subagents.model.

Dokumentacja: Subagenci, Zadania w tle.

Jak działają sesje subagentów powiązane z wątkiem w Discord?

Używaj powiązań wątków. Możesz powiązać wątek Discord z subagentem lub docelową sesją, aby kolejne wiadomości w tym wątku pozostawały w tej powiązanej sesji.

Podstawowy przepływ:

  • Uruchom przez sessions_spawn z thread: true (i opcjonalnie mode: "session" dla trwałych odpowiedzi następczych).
  • Albo powiąż ręcznie przez /focus <target>.
  • Użyj /agents, aby sprawdzić stan powiązania.
  • Użyj /session idle <duration|off> i /session max-age <duration|off>, aby kontrolować automatyczne wyłączanie fokusu.
  • Użyj /unfocus, aby odłączyć wątek.

Wymagana konfiguracja:

  • Domyślne globalne: session.threadBindings.enabled, session.threadBindings.idleHours, session.threadBindings.maxAgeHours.
  • Nadpisania Discord: channels.discord.threadBindings.enabled, channels.discord.threadBindings.idleHours, channels.discord.threadBindings.maxAgeHours.
  • Automatyczne powiązanie przy uruchomieniu: channels.discord.threadBindings.spawnSessions domyślnie ma wartość true; ustaw na false, aby wyłączyć uruchamianie sesji powiązanych z wątkiem.

Dokumentacja: Subagenci, Discord, Dokumentacja konfiguracji, Polecenia slash.

Subagent zakończył pracę, ale aktualizacja o ukończeniu trafiła w złe miejsce albo nigdy się nie pojawiła. Co sprawdzić?

Najpierw sprawdź rozwiązaną trasę żądającego:

  • Dostarczanie subagenta w trybie ukończenia preferuje każdy powiązany wątek lub trasę konwersacji, jeśli taka istnieje.
  • Jeśli źródło ukończenia zawiera tylko kanał, OpenClaw wraca do zapisanej trasy sesji żądającego (lastChannel / lastTo / lastAccountId), aby bezpośrednie dostarczenie nadal mogło się udać.
  • Jeśli nie istnieje ani powiązana trasa, ani użyteczna zapisana trasa, bezpośrednie dostarczenie może się nie powieść, a wynik wraca do kolejkowanego dostarczania sesji zamiast natychmiastowego opublikowania na czacie.
  • Nieprawidłowe lub nieaktualne cele nadal mogą wymusić awaryjny fallback do kolejki albo ostateczną porażkę dostarczenia.
  • Jeśli ostatnia widoczna odpowiedź asystenta dziecka to dokładny cichy token NO_REPLY / no_reply albo dokładnie ANNOUNCE_SKIP, OpenClaw celowo tłumi ogłoszenie zamiast publikować nieaktualny wcześniejszy postęp.
  • Jeśli dziecko przekroczyło limit czasu po samych wywołaniach narzędzi, ogłoszenie może zwinąć to do krótkiego podsumowania częściowego postępu zamiast odtwarzać surowe wyjście narzędzi.

Debugowanie:

openclaw tasks show <runId-or-sessionKey>

Dokumentacja: Subagenci, Zadania w tle, Narzędzia sesji.

Cron albo przypomnienia się nie uruchamiają. Co sprawdzić?

Cron działa wewnątrz procesu Gateway. Jeśli Gateway nie działa nieprzerwanie, zaplanowane zadania nie będą uruchamiane.

Lista kontrolna:

  • Potwierdź, że cron jest włączony (cron.enabled) i OPENCLAW_SKIP_CRON nie jest ustawione.
  • Sprawdź, czy Gateway działa 24/7 (bez uśpienia/restartów).
  • Zweryfikuj ustawienia strefy czasowej zadania (--tz względem strefy czasowej hosta).

Debugowanie:

openclaw cron run <jobId>
openclaw cron runs --id <jobId> --limit 50

Dokumentacja: Zadania Cron, Automatyzacja i zadania.

Cron został uruchomiony, ale nic nie wysłano do kanału. Dlaczego?

Najpierw sprawdź tryb dostarczania:

  • --no-deliver / delivery.mode: "none" oznacza, że nie oczekuje się awaryjnego wysłania przez runner.
  • Brakujący lub nieprawidłowy cel ogłoszenia (channel / to) oznacza, że runner pominął dostarczanie wychodzące.
  • Błędy uwierzytelniania kanału (unauthorized, Forbidden) oznaczają, że runner próbował dostarczyć wiadomość, ale poświadczenia ją zablokowały.
  • Cichy wynik izolowany (tylko NO_REPLY / no_reply) jest traktowany jako celowo niedostarczalny, więc runner tłumi także zakolejkowane dostarczanie awaryjne.

W przypadku izolowanych zadań Cron agent nadal może wysyłać bezpośrednio za pomocą narzędzia message, gdy dostępna jest trasa czatu. --announce kontroluje tylko awaryjną ścieżkę runnera dla końcowego tekstu, którego agent jeszcze nie wysłał.

Debugowanie:

openclaw cron runs --id <jobId> --limit 50
openclaw tasks show <runId-or-sessionKey>

Dokumentacja: Zadania Cron, Zadania w tle.

Dlaczego izolowane uruchomienie Cron przełączyło modele lub ponowiło próbę raz?

Zwykle jest to ścieżka przełączania modelu na żywo, a nie zduplikowane planowanie.

Izolowany Cron może utrwalić przekazanie modelu w czasie wykonywania i ponowić próbę, gdy aktywne uruchomienie zgłosi LiveSessionModelSwitchError. Ponowna próba zachowuje przełączonego dostawcę/model, a jeśli przełączenie przeniosło nowe nadpisanie profilu uwierzytelniania, Cron utrwala je również przed ponowną próbą.

Powiązane reguły wyboru:

  • Nadpisanie modelu przez hook Gmail ma pierwszeństwo, gdy ma zastosowanie.
  • Następnie model dla zadania.
  • Następnie każde zapisane nadpisanie modelu sesji Cron.
  • Następnie normalny wybór modelu agenta/domyślnego.

Pętla ponawiania prób jest ograniczona. Po początkowej próbie i 2 ponownych próbach przełączenia Cron przerywa działanie zamiast zapętlać się bez końca.

Debugowanie:

openclaw cron runs --id <jobId> --limit 50
openclaw tasks show <runId-or-sessionKey>

Dokumentacja: Zadania Cron, CLI Cron.

Jak zainstalować Skills w systemie Linux?

Użyj natywnych poleceń openclaw skills albo umieść Skills w swoim workspace. Interfejs Skills dla macOS nie jest dostępny w systemie Linux. Przeglądaj Skills na https://clawhub.ai.

openclaw skills search "calendar"
openclaw skills search --limit 20
openclaw skills install <skill-slug>
openclaw skills install <skill-slug> --version <version>
openclaw skills install <skill-slug> --force
openclaw skills update --all
openclaw skills list --eligible
openclaw skills check

Natywne openclaw skills install zapisuje w aktywnym katalogu skills/ workspace. Zainstaluj osobny CLI clawhub tylko wtedy, gdy chcesz publikować lub synchronizować własne Skills. W przypadku współdzielonych instalacji między agentami umieść Skills w ~/.openclaw/skills i użyj agents.defaults.skills lub agents.list[].skills, jeśli chcesz zawęzić, którzy agenci mogą je widzieć.

Czy OpenClaw może uruchamiać zadania według harmonogramu lub ciągle w tle?

Tak. Użyj harmonogramu Gateway:

  • Zadania Cron do zadań zaplanowanych lub cyklicznych (utrwalane między restartami).
  • Heartbeat do okresowych sprawdzeń „sesji głównej”.
  • Zadania izolowane dla autonomicznych agentów, którzy publikują podsumowania lub dostarczają je do czatów.

Dokumentacja: Zadania Cron, Automatyzacja i zadania, Heartbeat.

Czy mogę uruchamiać Skills dostępne tylko dla Apple macOS z systemu Linux?

Nie bezpośrednio. Skills dla macOS są bramkowane przez metadata.openclaw.os oraz wymagane pliki binarne, a Skills pojawiają się w prompcie systemowym tylko wtedy, gdy kwalifikują się na hoście Gateway. W systemie Linux Skills tylko dla darwin (takie jak apple-notes, apple-reminders, things-mac) nie załadują się, chyba że nadpiszesz bramkowanie.

Masz trzy obsługiwane wzorce:

Opcja A - uruchom Gateway na Macu (najprostsze). Uruchom Gateway tam, gdzie istnieją pliki binarne macOS, a następnie połącz się z systemu Linux w trybie zdalnym lub przez Tailscale. Skills ładują się normalnie, ponieważ host Gateway działa na macOS.

Opcja B - użyj węzła macOS (bez SSH). Uruchom Gateway w systemie Linux, sparuj węzeł macOS (aplikację paska menu) i ustaw Node Run Commands na Macu na „Always Ask” lub „Always Allow”. OpenClaw może traktować Skills dostępne tylko dla macOS jako kwalifikujące się, gdy wymagane pliki binarne istnieją na węźle. Agent uruchamia te Skills przez narzędzie nodes. Jeśli wybierzesz „Always Ask”, zatwierdzenie „Always Allow” w prompcie doda to polecenie do listy dozwolonych.

Opcja C - proxy plików binarnych macOS przez SSH (zaawansowane). Pozostaw Gateway w systemie Linux, ale spraw, aby wymagane pliki binarne CLI rozwiązywały się do wrapperów SSH uruchamianych na Macu. Następnie nadpisz Skills, aby zezwolić na Linux, dzięki czemu pozostaną kwalifikujące się.

  1. Utwórz wrapper SSH dla pliku binarnego (przykład: memo dla Apple Notes):

    #!/usr/bin/env bash
    set -euo pipefail
    exec ssh -T user@mac-host /opt/homebrew/bin/memo "$@"
    
  2. Umieść wrapper w PATH na hoście Linux (na przykład ~/bin/memo).

  3. Nadpisz metadane Skills (workspace lub ~/.openclaw/skills), aby zezwolić na Linux:

    ---
    name: apple-notes
    description: Manage Apple Notes via the memo CLI on macOS.
    metadata: { "openclaw": { "os": ["darwin", "linux"], "requires": { "bins": ["memo"] } } }
    ---
    
  4. Uruchom nową sesję, aby odświeżyć snapshot Skills.

Czy macie integrację z Notion lub HeyGen?

Obecnie nie jest wbudowana.

Opcje:

  • Niestandardowy Skills / Plugin: najlepszy do niezawodnego dostępu do API (Notion/HeyGen mają API).
  • Automatyzacja przeglądarki: działa bez kodu, ale jest wolniejsza i bardziej krucha.

Jeśli chcesz zachować kontekst dla każdego klienta (przepływy pracy agencji), prosty wzorzec to:

  • Jedna strona Notion na klienta (kontekst + preferencje + aktywna praca).
  • Poproś agenta o pobranie tej strony na początku sesji.

Jeśli chcesz natywną integrację, otwórz zgłoszenie funkcji albo zbuduj Skills ukierunkowane na te API.

Zainstaluj Skills:

openclaw skills install <skill-slug>
openclaw skills update --all

Natywne instalacje trafiają do aktywnego katalogu skills/ workspace. W przypadku współdzielonych Skills między agentami umieść je w ~/.openclaw/skills/<name>/SKILL.md. Jeśli tylko niektórzy agenci powinni widzieć współdzieloną instalację, skonfiguruj agents.defaults.skills lub agents.list[].skills. Niektóre Skills oczekują plików binarnych zainstalowanych przez Homebrew; w systemie Linux oznacza to Linuxbrew (zobacz wpis FAQ Homebrew dla Linux powyżej). Zobacz Skills, Konfiguracja Skills i ClawHub.

Jak używać istniejącego zalogowanego Chrome z OpenClaw?

Użyj wbudowanego profilu przeglądarki user, który dołącza się przez Chrome DevTools MCP:

openclaw browser --browser-profile user tabs
openclaw browser --browser-profile user snapshot

Jeśli chcesz użyć własnej nazwy, utwórz jawny profil MCP:

openclaw browser create-profile --name chrome-live --driver existing-session
openclaw browser --browser-profile chrome-live tabs

Ta ścieżka może używać lokalnej przeglądarki hosta albo połączonego węzła przeglądarki. Jeśli Gateway działa gdzie indziej, uruchom host węzła na maszynie z przeglądarką albo użyj zdalnego CDP.

Aktualne ograniczenia existing-session / user:

  • akcje są oparte na ref, a nie na selektorach CSS
  • przesyłanie wymaga ref / inputRef i obecnie obsługuje jeden plik naraz
  • responsebody, eksport PDF, przechwytywanie pobierania i akcje wsadowe nadal wymagają zarządzanej przeglądarki albo surowego profilu CDP

Sandboxing i pamięć

Czy istnieje osobna dokumentacja sandboxingu?

Tak. Zobacz Sandboxing. W przypadku konfiguracji specyficznej dla Docker (pełny Gateway w Docker lub obrazy sandbox), zobacz Docker.

Docker wydaje się ograniczony - jak włączyć pełne funkcje?

Domyślny obraz stawia bezpieczeństwo na pierwszym miejscu i działa jako użytkownik node, więc nie zawiera pakietów systemowych, Homebrew ani dołączonych przeglądarek. Aby uzyskać pełniejszą konfigurację:

  • Utrwal /home/node za pomocą OPENCLAW_HOME_VOLUME, aby cache przetrwały.
  • Wbuduj zależności systemowe w obraz za pomocą OPENCLAW_DOCKER_APT_PACKAGES.
  • Zainstaluj przeglądarki Playwright przez dołączony CLI: node /app/node_modules/playwright-core/cli.js install chromium
  • Ustaw PLAYWRIGHT_BROWSERS_PATH i upewnij się, że ścieżka jest utrwalana.

Dokumentacja: Docker, Przeglądarka.

Czy mogę zachować DM jako prywatne, ale uczynić grupy publicznymi/sandboxowanymi z jednym agentem?

Tak - jeśli Twój ruch prywatny to DM, a ruch publiczny to grupy.

Użyj agents.defaults.sandbox.mode: "non-main", aby sesje grup/kanałów (klucze inne niż main) działały w skonfigurowanym backendzie sandbox, podczas gdy główna sesja DM pozostaje na hoście. Docker jest domyślnym backendem, jeśli żadnego nie wybierzesz. Następnie ogranicz narzędzia dostępne w sesjach sandboxowanych przez tools.sandbox.tools.

Przewodnik konfiguracji + przykładowa konfiguracja: Grupy: osobiste DM + grupy publiczne

Kluczowa referencja konfiguracji: Konfiguracja Gateway

Jak podmontować folder hosta w sandboxie?

Ustaw agents.defaults.sandbox.docker.binds na ["host:path:mode"] (np. "/home/user/src:/src:ro"). Powiązania globalne i per-agent są scalane; powiązania per-agent są ignorowane, gdy scope: "shared". Używaj :ro dla wszystkiego, co wrażliwe, i pamiętaj, że powiązania omijają granice systemu plików sandboxa.

OpenClaw waliduje źródła powiązań względem zarówno ścieżki znormalizowanej, jak i ścieżki kanonicznej rozwiązanej przez najgłębszego istniejącego przodka. Oznacza to, że ucieczki przez rodzica-symlink nadal kończą się odmową nawet wtedy, gdy ostatni segment ścieżki jeszcze nie istnieje, a sprawdzenia dozwolonego katalogu głównego nadal obowiązują po rozwiązaniu symlinków.

Zobacz Sandboxing oraz Sandbox vs Tool Policy vs Elevated, aby poznać przykłady i uwagi dotyczące bezpieczeństwa.

Jak działa pamięć?

Pamięć OpenClaw to po prostu pliki Markdown w workspace agenta:

  • Notatki dzienne w memory/YYYY-MM-DD.md
  • Wyselekcjonowane notatki długoterminowe w MEMORY.md (tylko sesje główne/prywatne)

OpenClaw uruchamia także ciche opróżnianie pamięci przed Compaction, aby przypomnieć modelowi o zapisaniu trwałych notatek przed automatyczną Compaction. Działa to tylko wtedy, gdy workspace jest zapisywalny (sandboxy tylko do odczytu je pomijają). Zobacz Pamięć.

Pamięć ciągle zapomina różne rzeczy. Jak sprawić, żeby zostały?

Poproś bota, aby zapisał fakt do pamięci. Notatki długoterminowe należą do MEMORY.md, a kontekst krótkoterminowy trafia do memory/YYYY-MM-DD.md.

To wciąż obszar, który ulepszamy. Pomaga przypomnienie modelowi, aby przechowywał wspomnienia; będzie wiedział, co zrobić. Jeśli nadal zapomina, sprawdź, czy Gateway używa tego samego workspace przy każdym uruchomieniu.

Dokumentacja: Pamięć, Workspace agenta.

Czy pamięć utrzymuje się na zawsze? Jakie są limity?

Pliki pamięci znajdują się na dysku i utrzymują się, dopóki ich nie usuniesz. Limitem jest Twoja przestrzeń dyskowa, nie model. Kontekst sesji nadal jest ograniczony przez okno kontekstu modelu, więc długie rozmowy mogą zostać poddane Compaction lub obcięte. Dlatego istnieje wyszukiwanie w pamięci - przywraca do kontekstu tylko istotne części.

Dokumentacja: Pamięć, Kontekst.

Czy wyszukiwanie pamięci semantycznej wymaga klucza API OpenAI?

Tylko jeśli używasz embeddingów OpenAI. OAuth Codex obejmuje czat/uzupełnienia i nie daje dostępu do embeddingów, więc zalogowanie się przez Codex (OAuth albo logowanie w Codex CLI) nie pomaga przy wyszukiwaniu pamięci semantycznej. Embeddingi OpenAI nadal wymagają prawdziwego klucza API (OPENAI_API_KEY albo models.providers.openai.apiKey).

Jeśli nie ustawisz jawnie dostawcy, OpenClaw automatycznie wybiera dostawcę, gdy może rozpoznać klucz API (profile uwierzytelniania, models.providers.*.apiKey albo zmienne środowiskowe). Preferuje OpenAI, jeśli rozpoznany zostanie klucz OpenAI, w przeciwnym razie Gemini, jeśli rozpoznany zostanie klucz Gemini, potem Voyage, a następnie Mistral. Jeśli żaden zdalny klucz nie jest dostępny, wyszukiwanie pamięci pozostaje wyłączone, dopóki go nie skonfigurujesz. Jeśli masz skonfigurowaną i obecną ścieżkę modelu lokalnego, OpenClaw preferuje local. Ollama jest obsługiwany, gdy jawnie ustawisz memorySearch.provider = "ollama".

Jeśli wolisz pozostać lokalnie, ustaw memorySearch.provider = "local" (i opcjonalnie memorySearch.fallback = "none"). Jeśli chcesz używać embeddingów Gemini, ustaw memorySearch.provider = "gemini" i podaj GEMINI_API_KEY (albo memorySearch.remote.apiKey). Obsługujemy modele embeddingów OpenAI, Gemini, Voyage, Mistral, Ollama albo lokalne

  • szczegóły konfiguracji znajdziesz w sekcji Pamięć.

Gdzie dane znajdują się na dysku

Czy wszystkie dane używane z OpenClaw są zapisywane lokalnie?

Nie - stan OpenClaw jest lokalny, ale usługi zewnętrzne nadal widzą to, co im wysyłasz.

  • Domyślnie lokalnie: sesje, pliki pamięci, konfiguracja i przestrzeń robocza znajdują się na hoście Gateway (~/.openclaw + katalog przestrzeni roboczej).
  • Z konieczności zdalnie: wiadomości wysyłane do dostawców modeli (Anthropic/OpenAI/itd.) trafiają do ich API, a platformy czatowe (WhatsApp/Telegram/Slack/itd.) przechowują dane wiadomości na swoich serwerach.
  • Ty kontrolujesz zakres: używanie modeli lokalnych utrzymuje prompty na Twoim komputerze, ale ruch kanału nadal przechodzi przez serwery kanału.

Powiązane: Przestrzeń robocza agenta, Pamięć.

Gdzie OpenClaw przechowuje swoje dane?

Wszystko znajduje się w $OPENCLAW_STATE_DIR (domyślnie: ~/.openclaw):

Ścieżka Cel
$OPENCLAW_STATE_DIR/openclaw.json Główna konfiguracja (JSON5)
$OPENCLAW_STATE_DIR/credentials/oauth.json Starszy import OAuth (kopiowany do profili uwierzytelniania przy pierwszym użyciu)
$OPENCLAW_STATE_DIR/agents/<agentId>/agent/auth-profiles.json Profile uwierzytelniania (OAuth, klucze API oraz opcjonalne keyRef/tokenRef)
$OPENCLAW_STATE_DIR/secrets.json Opcjonalny plikowy ładunek sekretu dla dostawców SecretRef typu file
$OPENCLAW_STATE_DIR/agents/<agentId>/agent/auth.json Starszy plik zgodności (statyczne wpisy api_key wyczyszczone)
$OPENCLAW_STATE_DIR/credentials/ Stan dostawcy (np. whatsapp/<accountId>/creds.json)
$OPENCLAW_STATE_DIR/agents/ Stan per agent (agentDir + sesje)
$OPENCLAW_STATE_DIR/agents/<agentId>/sessions/ Historia rozmów i stan (per agent)
$OPENCLAW_STATE_DIR/agents/<agentId>/sessions/sessions.json Metadane sesji (per agent)

Starsza ścieżka pojedynczego agenta: ~/.openclaw/agent/* (migrowana przez openclaw doctor).

Twoja przestrzeń robocza (AGENTS.md, pliki pamięci, Skills itd.) jest oddzielna i konfigurowana przez agents.defaults.workspace (domyślnie: ~/.openclaw/workspace).

Gdzie powinny znajdować się AGENTS.md / SOUL.md / USER.md / MEMORY.md?

Te pliki znajdują się w przestrzeni roboczej agenta, nie w ~/.openclaw.

  • Przestrzeń robocza (per agent): AGENTS.md, SOUL.md, IDENTITY.md, USER.md, MEMORY.md, memory/YYYY-MM-DD.md, opcjonalnie HEARTBEAT.md. Główny plik memory.md małymi literami jest tylko starszym wejściem naprawy; openclaw doctor --fix może scalić go z MEMORY.md, gdy istnieją oba pliki.
  • Katalog stanu (~/.openclaw): konfiguracja, stan kanałów/dostawców, profile uwierzytelniania, sesje, logi oraz współdzielone Skills (~/.openclaw/skills).

Domyślna przestrzeń robocza to ~/.openclaw/workspace, konfigurowalna przez:

{
  agents: { defaults: { workspace: "~/.openclaw/workspace" } },
}

Jeśli bot „zapomina” po restarcie, potwierdź, że Gateway przy każdym uruchomieniu używa tej samej przestrzeni roboczej (i pamiętaj: tryb zdalny używa przestrzeni roboczej hosta gateway, a nie Twojego lokalnego laptopa).

Wskazówka: jeśli chcesz trwałego zachowania lub preferencji, poproś bota, aby zapisał je w AGENTS.md albo MEMORY.md, zamiast polegać na historii czatu.

Zobacz Przestrzeń robocza agenta i Pamięć.

Zalecana strategia tworzenia kopii zapasowych

Umieść swoją przestrzeń roboczą agenta w prywatnym repozytorium git i twórz jej kopię zapasową w miejscu prywatnym (na przykład GitHub private). To zapisuje pamięć + pliki AGENTS/SOUL/USER i pozwala później odtworzyć „umysł” asystenta.

Nie commituj niczego z ~/.openclaw (poświadczeń, sesji, tokenów ani zaszyfrowanych ładunków sekretów). Jeśli potrzebujesz pełnego odtworzenia, wykonaj kopię zapasową zarówno przestrzeni roboczej, jak i katalogu stanu osobno (zobacz pytanie o migrację powyżej).

Dokumentacja: Przestrzeń robocza agenta.

Jak całkowicie odinstalować OpenClaw?

Zobacz dedykowany przewodnik: Odinstalowanie.

Czy agenci mogą pracować poza przestrzenią roboczą?

Tak. Przestrzeń robocza jest domyślnym cwd i kotwicą pamięci, a nie twardym sandboxem. Ścieżki względne są rozwiązywane wewnątrz przestrzeni roboczej, ale ścieżki bezwzględne mogą uzyskiwać dostęp do innych lokalizacji hosta, chyba że włączono sandboxing. Jeśli potrzebujesz izolacji, użyj agents.defaults.sandbox albo ustawień sandboxa per agent. Jeśli chcesz, aby repozytorium było domyślnym katalogiem roboczym, skieruj workspace tego agenta na katalog główny repozytorium. Repozytorium OpenClaw to tylko kod źródłowy; trzymaj przestrzeń roboczą osobno, chyba że celowo chcesz, aby agent pracował w jej wnętrzu.

Przykład (repozytorium jako domyślny cwd):

{
  agents: {
    defaults: {
      workspace: "~/Projects/my-repo",
    },
  },
}
Tryb zdalny: gdzie jest magazyn sesji?

Stan sesji należy do hosta gateway. Jeśli jesteś w trybie zdalnym, istotny dla Ciebie magazyn sesji znajduje się na zdalnej maszynie, a nie na Twoim lokalnym laptopie. Zobacz Zarządzanie sesjami.

Podstawy konfiguracji

Jaki format ma konfiguracja? Gdzie się znajduje?

OpenClaw odczytuje opcjonalną konfigurację JSON5 z $OPENCLAW_CONFIG_PATH (domyślnie: ~/.openclaw/openclaw.json):

$OPENCLAW_CONFIG_PATH

Jeśli pliku brakuje, używa w miarę bezpiecznych wartości domyślnych (w tym domyślnej przestrzeni roboczej ~/.openclaw/workspace).

Ustawiłem gateway.bind: "lan" (albo "tailnet") i teraz nic nie nasłuchuje / UI mówi, że brak autoryzacji

Wiązania inne niż loopback wymagają prawidłowej ścieżki uwierzytelniania gateway. W praktyce oznacza to:

  • uwierzytelnianie wspólnym sekretem: token albo hasło
  • gateway.auth.mode: "trusted-proxy" za poprawnie skonfigurowanym odwrotnym proxy świadomym tożsamości
{
  gateway: {
    bind: "lan",
    auth: {
      mode: "token",
      token: "replace-me",
    },
  },
}

Uwagi:

  • gateway.remote.token / .password same z siebie nie włączają lokalnego uwierzytelniania gateway.
  • Lokalne ścieżki wywołań mogą używać gateway.remote.* jako opcji zapasowej tylko wtedy, gdy gateway.auth.* nie jest ustawione.
  • W przypadku uwierzytelniania hasłem ustaw zamiast tego gateway.auth.mode: "password" oraz gateway.auth.password (albo OPENCLAW_GATEWAY_PASSWORD).
  • Jeśli gateway.auth.token / gateway.auth.password jest jawnie skonfigurowane przez SecretRef i nie można go rozwiązać, rozwiązywanie kończy się zamknięciem dostępu (bez maskowania przez zdalną opcję zapasową).
  • Konfiguracje Control UI ze wspólnym sekretem uwierzytelniają się przez connect.params.auth.token albo connect.params.auth.password (przechowywane w ustawieniach aplikacji/UI). Tryby przenoszące tożsamość, takie jak Tailscale Serve albo trusted-proxy, używają zamiast tego nagłówków żądań. Unikaj umieszczania wspólnych sekretów w URL-ach.
  • Przy gateway.auth.mode: "trusted-proxy" odwrotne proxy na tym samym hoście przez loopback wymagają jawnego gateway.auth.trustedProxy.allowLoopback = true oraz wpisu loopback w gateway.trustedProxies.
Dlaczego teraz potrzebuję tokena na localhost?

OpenClaw domyślnie egzekwuje uwierzytelnianie gateway, w tym dla loopback. W normalnej domyślnej ścieżce oznacza to uwierzytelnianie tokenem: jeśli nie skonfigurowano jawnej ścieżki uwierzytelniania, start gateway przechodzi w tryb tokena i generuje token tylko na czas działania dla tego uruchomienia, więc lokalni klienci WS muszą się uwierzytelnić. Skonfiguruj jawnie gateway.auth.token, gateway.auth.password, OPENCLAW_GATEWAY_TOKEN albo OPENCLAW_GATEWAY_PASSWORD, gdy klienci potrzebują stabilnego sekretu między restartami. Blokuje to innym lokalnym procesom wywoływanie Gateway.

Jeśli wolisz inną ścieżkę uwierzytelniania, możesz jawnie wybrać tryb hasła (albo, dla odwrotnych proxy świadomych tożsamości, trusted-proxy). Jeśli naprawdę chcesz otwartego loopback, ustaw jawnie gateway.auth.mode: "none" w swojej konfiguracji. Doctor może w każdej chwili wygenerować dla Ciebie token: openclaw doctor --generate-gateway-token.

Czy muszę restartować po zmianie konfiguracji?

Gateway obserwuje konfigurację i obsługuje hot-reload:

  • gateway.reload.mode: "hybrid" (domyślnie): stosuje bezpieczne zmiany na gorąco, restartuje dla krytycznych
  • hot, restart, off też są obsługiwane
Jak wyłączyć zabawne slogany CLI?

Ustaw cli.banner.taglineMode w konfiguracji:

{
  cli: {
    banner: {
      taglineMode: "off", // random | default | off
    },
  },
}
  • off: ukrywa tekst sloganu, ale zachowuje tytuł banera i wiersz wersji.
  • default: za każdym razem używa All your chats, one OpenClaw..
  • random: rotacyjne zabawne/sezonowe slogany (zachowanie domyślne).
  • Jeśli nie chcesz żadnego banera, ustaw zmienną środowiskową OPENCLAW_HIDE_BANNER=1.
Jak włączyć wyszukiwanie w sieci (i pobieranie z sieci)?

web_fetch działa bez klucza API. web_search zależy od wybranego dostawcy:

  • Dostawcy oparci na API, tacy jak Brave, Exa, Firecrawl, Gemini, Grok, Kimi, MiniMax Search, Perplexity i Tavily, wymagają swojej zwykłej konfiguracji klucza API.
  • Ollama Web Search nie wymaga klucza, ale używa skonfigurowanego hosta Ollama i wymaga ollama signin.
  • DuckDuckGo nie wymaga klucza, ale jest nieoficjalną integracją opartą na HTML.
  • SearXNG nie wymaga klucza / jest self-hosted; skonfiguruj SEARXNG_BASE_URL albo plugins.entries.searxng.config.webSearch.baseUrl.

Zalecane: uruchom openclaw configure --section web i wybierz dostawcę. Alternatywy środowiskowe:

  • Brave: BRAVE_API_KEY
  • Exa: EXA_API_KEY
  • Firecrawl: FIRECRAWL_API_KEY
  • Gemini: GEMINI_API_KEY
  • Grok: XAI_API_KEY
  • Kimi: KIMI_API_KEY lub MOONSHOT_API_KEY
  • MiniMax Search: MINIMAX_CODE_PLAN_KEY, MINIMAX_CODING_API_KEY lub MINIMAX_API_KEY
  • Perplexity: PERPLEXITY_API_KEY lub OPENROUTER_API_KEY
  • SearXNG: SEARXNG_BASE_URL
  • Tavily: TAVILY_API_KEY
{
  plugins: {
    entries: {
      brave: {
        config: {
          webSearch: {
            apiKey: "BRAVE_API_KEY_HERE",
          },
        },
      },
    },
    },
    tools: {
      web: {
        search: {
          enabled: true,
          provider: "brave",
          maxResults: 5,
        },
        fetch: {
          enabled: true,
          provider: "firecrawl", // optional; omit for auto-detect
        },
      },
    },
}

Konfiguracja wyszukiwania w sieci specyficzna dla dostawcy znajduje się teraz w plugins.entries.<plugin>.config.webSearch.*. Starsze ścieżki dostawców tools.web.search.* nadal są tymczasowo wczytywane dla zgodności, ale nie powinny być używane w nowych konfiguracjach. Konfiguracja awaryjnego pobierania z sieci Firecrawl znajduje się w plugins.entries.firecrawl.config.webFetch.*.

Uwagi:

  • Jeśli używasz list dozwolonych, dodaj web_search/web_fetch/x_search lub group:web.
  • web_fetch jest domyślnie włączone (chyba że zostało jawnie wyłączone).
  • Jeśli tools.web.fetch.provider zostanie pominięte, OpenClaw automatycznie wykrywa pierwszego gotowego dostawcę awaryjnego pobierania na podstawie dostępnych poświadczeń. Obecnie dołączonym dostawcą jest Firecrawl.
  • Demony odczytują zmienne środowiskowe z ~/.openclaw/.env (lub ze środowiska usługi).

Dokumentacja: Narzędzia web.

config.apply wyczyściło moją konfigurację. Jak ją odzyskać i uniknąć tego w przyszłości?

config.apply zastępuje całą konfigurację. Jeśli wyślesz obiekt częściowy, wszystko pozostałe zostanie usunięte.

Obecny OpenClaw chroni przed wieloma przypadkowymi nadpisaniami:

  • Zapisy konfiguracji należące do OpenClaw weryfikują pełną konfigurację po zmianie przed zapisem.
  • Nieprawidłowe lub destrukcyjne zapisy należące do OpenClaw są odrzucane i zapisywane jako openclaw.json.rejected.*.
  • Jeśli bezpośrednia edycja zepsuje uruchamianie lub przeładowanie na gorąco, Gateway zatrzymuje się bezpiecznie albo pomija przeładowanie; nie przepisuje openclaw.json.
  • openclaw doctor --fix odpowiada za naprawę i może przywrócić ostatnią poprawną wersję, zapisując odrzucony plik jako openclaw.json.clobbered.*.

Odzyskiwanie:

  • Sprawdź openclaw logs --follow pod kątem Invalid config at, Config write rejected: lub config reload skipped (invalid config).
  • Sprawdź najnowszy openclaw.json.clobbered.* lub openclaw.json.rejected.* obok aktywnej konfiguracji.
  • Uruchom openclaw config validate i openclaw doctor --fix.
  • Skopiuj z powrotem tylko zamierzone klucze za pomocą openclaw config set lub config.patch.
  • Jeśli nie masz ostatniej poprawnej wersji ani odrzuconego ładunku, przywróć z kopii zapasowej albo uruchom ponownie openclaw doctor i skonfiguruj ponownie kanały/modele.
  • Jeśli było to nieoczekiwane, zgłoś błąd i dołącz ostatnią znaną konfigurację lub dowolną kopię zapasową.
  • Lokalny agent kodujący często potrafi odtworzyć działającą konfigurację z logów lub historii.

Unikanie problemu:

  • Używaj openclaw config set do małych zmian.
  • Używaj openclaw configure do edycji interaktywnych.
  • Najpierw użyj config.schema.lookup, jeśli nie masz pewności co do dokładnej ścieżki lub kształtu pola; zwraca płytki węzeł schematu oraz podsumowania bezpośrednich dzieci do dalszego zagłębiania.
  • Używaj config.patch do częściowych edycji RPC; config.apply zostaw wyłącznie do zastępowania pełnej konfiguracji.
  • Jeśli używasz narzędzia gateway dostępnego tylko dla właściciela z przebiegu agenta, nadal będzie ono odrzucać zapisy do tools.exec.ask / tools.exec.security (w tym starsze aliasy tools.bash.*, które normalizują się do tych samych chronionych ścieżek wykonywania).

Dokumentacja: Konfiguracja, Konfigurowanie, Rozwiązywanie problemów z Gateway, Doctor.

Jak uruchomić centralny Gateway ze wyspecjalizowanymi workerami na różnych urządzeniach?

Typowy wzorzec to jeden Gateway (np. Raspberry Pi) plus węzły i agenci:

  • Gateway (centralny): obsługuje kanały (Signal/WhatsApp), trasowanie i sesje.
  • Węzły (urządzenia): Mac/iOS/Android łączą się jako urządzenia peryferyjne i udostępniają narzędzia lokalne (system.run, canvas, camera).
  • Agenci (workery): osobne mózgi/przestrzenie robocze dla ról specjalnych (np. „Operacje Hetzner”, „Dane osobiste”).
  • Podagenci: uruchamiają pracę w tle z agenta głównego, gdy potrzebujesz równoległości.
  • TUI: łączy się z Gateway i przełącza agentów/sesje.

Dokumentacja: Węzły, Dostęp zdalny, Trasowanie wieloagentowe, Podagenci, TUI.

Czy przeglądarka OpenClaw może działać w trybie headless?

Tak. To opcja konfiguracji:

{
  browser: { headless: true },
  agents: {
    defaults: {
      sandbox: { browser: { headless: true } },
    },
  },
}

Wartość domyślna to false (z widocznym oknem). Tryb headless częściej może uruchamiać kontrole antybotowe na niektórych stronach. Zobacz Przeglądarka.

Tryb headless używa tego samego silnika Chromium i działa w większości automatyzacji (formularze, kliknięcia, scraping, logowania). Główne różnice:

  • Brak widocznego okna przeglądarki (używaj zrzutów ekranu, jeśli potrzebujesz podglądu).
  • Niektóre strony są bardziej restrykcyjne wobec automatyzacji w trybie headless (CAPTCHA, antybot). Na przykład X/Twitter często blokuje sesje headless.
Jak używać Brave do sterowania przeglądarką?

Ustaw browser.executablePath na plik binarny Brave (lub dowolną przeglądarkę opartą na Chromium) i uruchom ponownie Gateway. Zobacz pełne przykłady konfiguracji w Przeglądarka.

Zdalne Gateway i węzły

Jak polecenia propagują się między Telegram, gateway i węzłami?

Wiadomości Telegram są obsługiwane przez gateway. Gateway uruchamia agenta i dopiero wtedy wywołuje węzły przez Gateway WebSocket, gdy potrzebne jest narzędzie węzła:

Telegram → Gateway → Agent → node.* → Węzeł → Gateway → Telegram

Węzły nie widzą przychodzącego ruchu dostawcy; odbierają tylko wywołania RPC węzła.

Jak mój agent może uzyskać dostęp do mojego komputera, jeśli Gateway jest hostowany zdalnie?

Krótka odpowiedź: sparuj swój komputer jako węzeł. Gateway działa gdzie indziej, ale może wywoływać narzędzia node.* (ekran, kamera, system) na Twojej maszynie lokalnej przez Gateway WebSocket.

Typowa konfiguracja:

  1. Uruchom Gateway na zawsze włączonym hoście (VPS/serwer domowy).

  2. Umieść host Gateway i swój komputer w tej samej sieci tailnet.

  3. Upewnij się, że Gateway WS jest osiągalny (wiązanie w tailnet lub tunel SSH).

  4. Otwórz aplikację macOS lokalnie i połącz w trybie Remote over SSH (lub bezpośrednio przez tailnet), aby mogła zarejestrować się jako węzeł.

  5. Zatwierdź węzeł w Gateway:

    openclaw devices list
    openclaw devices approve <requestId>
    

Nie jest wymagany osobny most TCP; węzły łączą się przez Gateway WebSocket.

Przypomnienie dotyczące bezpieczeństwa: sparowanie węzła macOS pozwala na system.run na tej maszynie. Paruj tylko urządzenia, którym ufasz, i sprawdź Bezpieczeństwo.

Dokumentacja: Węzły, Protokół Gateway, Tryb zdalny macOS, Bezpieczeństwo.

Tailscale jest połączony, ale nie otrzymuję odpowiedzi. Co teraz?

Sprawdź podstawy:

  • Gateway działa: openclaw gateway status
  • Kondycja Gateway: openclaw status
  • Kondycja kanału: openclaw channels status

Następnie zweryfikuj uwierzytelnianie i trasowanie:

  • Jeśli używasz Tailscale Serve, upewnij się, że gateway.auth.allowTailscale jest ustawione poprawnie.
  • Jeśli łączysz się przez tunel SSH, potwierdź, że lokalny tunel działa i wskazuje właściwy port.
  • Potwierdź, że Twoje listy dozwolonych (DM lub grupa) obejmują Twoje konto.

Dokumentacja: Tailscale, Dostęp zdalny, Kanały.

Czy dwie instancje OpenClaw mogą rozmawiać ze sobą (lokalna + VPS)?

Tak. Nie ma wbudowanego mostu „bot-do-bota”, ale możesz połączyć je na kilka niezawodnych sposobów:

Najprościej: użyj zwykłego kanału czatu, do którego oba boty mają dostęp (Telegram/Slack/WhatsApp). Niech Bot A wyśle wiadomość do Bota B, a potem Bot B odpowie jak zwykle.

Most CLI (ogólny): uruchom skrypt, który wywołuje drugi Gateway za pomocą openclaw agent --message ... --deliver, kierując wiadomość do czatu, na którym drugi bot nasłuchuje. Jeśli jeden bot jest na zdalnym VPS, skieruj swoje CLI na ten zdalny Gateway przez SSH/Tailscale (zobacz Dostęp zdalny).

Przykładowy wzorzec (uruchom z maszyny, która może połączyć się z docelowym Gateway):

openclaw agent --message "Hello from local bot" --deliver --channel telegram --reply-to <chat-id>

Wskazówka: dodaj zabezpieczenie, aby oba boty nie zapętlały się bez końca (tylko wzmianki, listy dozwolonych kanałów lub reguła „nie odpowiadaj na wiadomości botów”).

Dokumentacja: Dostęp zdalny, CLI agenta, Wysyłanie przez agenta.

Czy potrzebuję osobnych VPS dla wielu agentów?

Nie. Jeden Gateway może hostować wielu agentów, każdy z własną przestrzenią roboczą, domyślnymi modelami i trasowaniem. To normalna konfiguracja, znacznie tańsza i prostsza niż uruchamianie jednego VPS na agenta.

Używaj osobnych VPS tylko wtedy, gdy potrzebujesz twardej izolacji (granic bezpieczeństwa) albo bardzo różnych konfiguracji, których nie chcesz współdzielić. W przeciwnym razie zachowaj jeden Gateway i używaj wielu agentów lub podagentów.

Czy używanie węzła na moim prywatnym laptopie zamiast SSH z VPS daje korzyści?

Tak - węzły są pierwszorzędnym sposobem dostępu do laptopa ze zdalnego Gateway i odblokowują więcej niż dostęp do powłoki. Gateway działa na macOS/Linux (Windows przez WSL2) i jest lekki (wystarczy mały VPS lub urządzenie klasy Raspberry Pi; 4 GB RAM to dużo), więc typowa konfiguracja to zawsze włączony host plus laptop jako węzeł.

  • Brak wymaganego przychodzącego SSH. Węzły łączą się wychodząco z Gateway WebSocket i używają parowania urządzeń.
  • Bezpieczniejsze mechanizmy kontroli wykonywania. system.run jest ograniczone listami dozwolonych/zatwierdzeniami węzła na tym laptopie.
  • Więcej narzędzi urządzenia. Węzły udostępniają canvas, camera i screen oprócz system.run.
  • Lokalna automatyzacja przeglądarki. Trzymaj Gateway na VPS, ale uruchamiaj Chrome lokalnie przez host węzła na laptopie albo podłącz się do lokalnego Chrome na hoście przez Chrome MCP.

SSH jest dobre do doraźnego dostępu do powłoki, ale węzły są prostsze w ciągłych przepływach pracy agentów i automatyzacji urządzeń.

Dokumentacja: Węzły, CLI węzłów, Przeglądarka.

Czy węzły uruchamiają usługę gateway?

Nie. Na host powinien działać tylko jeden gateway, chyba że celowo uruchamiasz odizolowane profile (zobacz Wiele gateway). Węzły są urządzeniami peryferyjnymi, które łączą się z gateway (węzły iOS/Android albo „tryb węzła” macOS w aplikacji z paska menu). Dla hostów węzłów bez interfejsu i kontroli CLI zobacz CLI hosta węzła.

Pełny restart jest wymagany przy zmianach gateway, discovery i canvasHost.

Czy istnieje sposób API / RPC na zastosowanie konfiguracji?

Tak.

  • config.schema.lookup: sprawdź jedno poddrzewo konfiguracji z jego płytkim węzłem schematu, dopasowaną wskazówką UI i podsumowaniami bezpośrednich elementów podrzędnych przed zapisem
  • config.get: pobierz bieżący snapshot + hash
  • config.patch: bezpieczna częściowa aktualizacja (preferowana dla większości edycji RPC); przeładowuje na gorąco, gdy to możliwe, i restartuje, gdy jest to wymagane
  • config.apply: zweryfikuj + zastąp całą konfigurację; przeładowuje na gorąco, gdy to możliwe, i restartuje, gdy jest to wymagane
  • Narzędzie środowiska uruchomieniowego gateway tylko dla właściciela nadal odmawia przepisywania tools.exec.ask / tools.exec.security; starsze aliasy tools.bash.* normalizują się do tych samych chronionych ścieżek exec
Minimalna rozsądna konfiguracja dla pierwszej instalacji
{
  agents: { defaults: { workspace: "~/.openclaw/workspace" } },
  channels: { whatsapp: { allowFrom: ["+15555550123"] } },
}

Ustawia to workspace i ogranicza, kto może uruchomić bota.

Jak skonfigurować Tailscale na VPS i połączyć się z Maca?

Minimalne kroki:

  1. Zainstaluj + zaloguj się na VPS

    curl -fsSL https://tailscale.com/install.sh | sh
    sudo tailscale up
    
  2. Zainstaluj + zaloguj się na Macu

    • Użyj aplikacji Tailscale i zaloguj się do tego samego tailnetu.
  3. Włącz MagicDNS (zalecane)

    • W konsoli administracyjnej Tailscale włącz MagicDNS, aby VPS miał stabilną nazwę.
  4. Użyj nazwy hosta tailnetu

Jeśli chcesz mieć interfejs kontrolny bez SSH, użyj Tailscale Serve na VPS:

openclaw gateway --tailscale serve

Dzięki temu gateway pozostaje powiązany z loopbackiem i udostępnia HTTPS przez Tailscale. Zobacz Tailscale.

Jak połączyć węzeł Maca ze zdalnym Gateway (Tailscale Serve)?

Serve udostępnia interfejs kontrolny Gateway + WS. Węzły łączą się przez ten sam endpoint Gateway WS.

Zalecana konfiguracja:

  1. Upewnij się, że VPS + Mac są w tym samym tailnecie.

  2. Użyj aplikacji macOS w trybie zdalnym (celem SSH może być nazwa hosta tailnetu). Aplikacja zestawi tunel do portu Gateway i połączy się jako węzeł.

  3. Zatwierdź węzeł na gatewayu:

    openclaw devices list
    openclaw devices approve <requestId>
    

Dokumentacja: Protokół Gateway, Wykrywanie, tryb zdalny macOS.

Czy zainstalować na drugim laptopie, czy po prostu dodać węzeł?

Jeśli potrzebujesz tylko narzędzi lokalnych (ekran/kamera/exec) na drugim laptopie, dodaj go jako węzeł. Zachowuje to pojedynczy Gateway i pozwala uniknąć duplikowania konfiguracji. Narzędzia lokalnego węzła są obecnie dostępne tylko na macOS, ale planujemy rozszerzyć je na inne systemy operacyjne.

Zainstaluj drugi Gateway tylko wtedy, gdy potrzebujesz silnej izolacji albo dwóch całkowicie oddzielnych botów.

Dokumentacja: Węzły, CLI węzłów, wiele gatewayów.

Zmienne env i ładowanie .env

Jak OpenClaw ładuje zmienne środowiskowe?

OpenClaw odczytuje zmienne env z procesu nadrzędnego (powłoka, launchd/systemd, CI itd.) i dodatkowo ładuje:

  • .env z bieżącego katalogu roboczego
  • globalny fallback .env z ~/.openclaw/.env (czyli $OPENCLAW_STATE_DIR/.env)

Żaden plik .env nie nadpisuje istniejących zmiennych env.

Możesz też zdefiniować w konfiguracji wbudowane zmienne env (stosowane tylko wtedy, gdy brakuje ich w env procesu):

{
  env: {
    OPENROUTER_API_KEY: "sk-or-...",
    vars: { GROQ_API_KEY: "gsk-..." },
  },
}

Zobacz /environment, aby poznać pełną kolejność pierwszeństwa i źródła.

Uruchomiłem Gateway przez usługę i moje zmienne env zniknęły. Co teraz?

Dwie typowe poprawki:

  1. Umieść brakujące klucze w ~/.openclaw/.env, aby były pobierane nawet wtedy, gdy usługa nie dziedziczy env powłoki.
  2. Włącz import z powłoki (opcjonalne udogodnienie):
{
  env: {
    shellEnv: {
      enabled: true,
      timeoutMs: 15000,
    },
  },
}

To uruchamia powłokę logowania i importuje tylko brakujące oczekiwane klucze (nigdy nie nadpisuje). Odpowiedniki zmiennych env: OPENCLAW_LOAD_SHELL_ENV=1, OPENCLAW_SHELL_ENV_TIMEOUT_MS=15000.

Ustawiłem COPILOT_GITHUB_TOKEN, ale status modeli pokazuje "Shell env: off." Dlaczego?

openclaw models status informuje, czy import env powłoki jest włączony. "Shell env: off" nie oznacza, że brakuje Twoich zmiennych env - oznacza tylko, że OpenClaw nie załaduje automatycznie Twojej powłoki logowania.

Jeśli Gateway działa jako usługa (launchd/systemd), nie odziedziczy środowiska Twojej powłoki. Napraw to jednym z tych sposobów:

  1. Umieść token w ~/.openclaw/.env:

    COPILOT_GITHUB_TOKEN=...
    
  2. Albo włącz import z powłoki (env.shellEnv.enabled: true).

  3. Albo dodaj go do bloku env w konfiguracji (stosowane tylko wtedy, gdy brakuje go w env).

Następnie zrestartuj gateway i sprawdź ponownie:

openclaw models status

Tokeny Copilot są odczytywane z COPILOT_GITHUB_TOKEN (także GH_TOKEN / GITHUB_TOKEN). Zobacz /concepts/model-providers i /environment.

Sesje i wiele czatów

Jak rozpocząć nową rozmowę?

Wyślij /new lub /reset jako samodzielną wiadomość. Zobacz Zarządzanie sesjami.

Czy sesje resetują się automatycznie, jeśli nigdy nie wyślę /new?

Sesje mogą wygasać po session.idleMinutes, ale jest to domyślnie wyłączone (domyślnie 0). Ustaw wartość dodatnią, aby włączyć wygasanie bezczynności. Gdy jest włączone, następna wiadomość po okresie bezczynności uruchamia nowy identyfikator sesji dla tego klucza czatu. Nie usuwa to transkrypcji - po prostu rozpoczyna nową sesję.

{
  session: {
    idleMinutes: 240,
  },
}
Czy istnieje sposób na utworzenie zespołu instancji OpenClaw (jeden CEO i wielu agentów)?

Tak, przez routing wieloagentowy i agentów podrzędnych. Możesz utworzyć jednego agenta koordynującego oraz kilku agentów roboczych z własnymi obszarami roboczymi i modelami.

Mimo to najlepiej traktować to jako ciekawy eksperyment. Zużywa dużo tokenów i często jest mniej wydajne niż używanie jednego bota z oddzielnymi sesjami. Typowy model, który przewidujemy, to jeden bot, z którym rozmawiasz, oraz różne sesje do pracy równoległej. Ten bot może też w razie potrzeby uruchamiać agentów podrzędnych.

Dokumentacja: Routing wieloagentowy, Agenci podrzędni, CLI agentów.

Dlaczego kontekst został obcięty w trakcie zadania? Jak temu zapobiec?

Kontekst sesji jest ograniczony przez okno modelu. Długie czaty, duże wyniki narzędzi lub wiele plików mogą wywołać Compaction albo obcięcie.

Co pomaga:

  • Poproś bota o podsumowanie bieżącego stanu i zapisanie go do pliku.
  • Użyj /compact przed długimi zadaniami oraz /new podczas zmiany tematu.
  • Przechowuj ważny kontekst w obszarze roboczym i poproś bota, aby go odczytał.
  • Używaj agentów podrzędnych do długiej lub równoległej pracy, aby główny czat pozostał mniejszy.
  • Wybierz model z większym oknem kontekstu, jeśli dzieje się to często.
Jak całkowicie zresetować OpenClaw, pozostawiając go zainstalowanym?

Użyj polecenia resetowania:

openclaw reset

Pełny reset nieinteraktywny:

openclaw reset --scope full --yes --non-interactive

Następnie uruchom ponownie konfigurację:

openclaw onboard --install-daemon

Uwagi:

  • Onboarding oferuje też Reset, jeśli wykryje istniejącą konfigurację. Zobacz Onboarding (CLI).
  • Jeśli używasz profili (--profile / OPENCLAW_PROFILE), zresetuj każdy katalog stanu (domyślne to ~/.openclaw-<profile>).
  • Reset deweloperski: openclaw gateway --dev --reset (tylko deweloperski; usuwa konfigurację deweloperską + poświadczenia + sesje + obszar roboczy).
Otrzymuję błędy "context too large" - jak wykonać reset albo kompaktowanie?

Użyj jednej z tych opcji:

  • Kompaktowanie (zachowuje rozmowę, ale podsumowuje starsze tury):

    /compact
    

    albo /compact <instructions>, aby ukierunkować podsumowanie.

  • Reset (nowy identyfikator sesji dla tego samego klucza czatu):

    /new
    /reset
    

Jeśli nadal się to zdarza:

  • Włącz lub dostrój przycinanie sesji (agents.defaults.contextPruning), aby usuwać stare wyniki narzędzi.
  • Użyj modelu z większym oknem kontekstu.

Dokumentacja: Compaction, Przycinanie sesji, Zarządzanie sesją.

Dlaczego widzę komunikat "LLM request rejected: messages.content.tool_use.input field required"?

To błąd walidacji dostawcy: model wygenerował blok tool_use bez wymaganego pola input. Zwykle oznacza to, że historia sesji jest nieaktualna lub uszkodzona (często po długich wątkach albo zmianie narzędzia/schematu).

Naprawa: rozpocznij świeżą sesję za pomocą /new (jako osobna wiadomość).

Dlaczego otrzymuję wiadomości Heartbeat co 30 minut?

Heartbeat domyślnie działa co 30m (1h przy użyciu uwierzytelniania OAuth). Dostosuj je albo wyłącz:

{
  agents: {
    defaults: {
      heartbeat: {
        every: "2h", // or "0m" to disable
      },
    },
  },
}

Jeśli HEARTBEAT.md istnieje, ale jest faktycznie pusty (zawiera tylko puste wiersze i nagłówki markdown takie jak # Heading), OpenClaw pomija uruchomienie Heartbeat, aby oszczędzić wywołania API. Jeśli pliku brakuje, Heartbeat nadal działa, a model decyduje, co zrobić.

Nadpisania dla poszczególnych agentów używają agents.list[].heartbeat. Dokumentacja: Heartbeat.

Czy muszę dodać "konto bota" do grupy WhatsApp?

Nie. OpenClaw działa na Twoim własnym koncie, więc jeśli jesteś w grupie, OpenClaw może ją widzieć. Domyślnie odpowiedzi w grupach są blokowane, dopóki nie zezwolisz nadawcom (groupPolicy: "allowlist").

Jeśli chcesz, aby tylko Ty możesz wyzwalać odpowiedzi w grupie:

{
  channels: {
    whatsapp: {
      groupPolicy: "allowlist",
      groupAllowFrom: ["+15551234567"],
    },
  },
}
Jak uzyskać JID grupy WhatsApp?

Opcja 1 (najszybsza): śledź logi i wyślij wiadomość testową w grupie:

openclaw logs --follow --json

Poszukaj chatId (albo from) kończącego się na @g.us, na przykład: [email protected].

Opcja 2 (jeśli już skonfigurowano/dodano do listy dozwolonych): wyświetl grupy z konfiguracji:

openclaw directory groups list --channel whatsapp

Dokumentacja: WhatsApp, Katalog, Logi.

Dlaczego OpenClaw nie odpowiada w grupie?

Dwie częste przyczyny:

  • Bramka wzmianek jest włączona (domyślnie). Musisz @wspomnieć bota (albo dopasować mentionPatterns).
  • Skonfigurowano channels.whatsapp.groups bez "*", a grupa nie jest na liście dozwolonych.

Zobacz Grupy i Wiadomości grupowe.

Czy grupy/wątki współdzielą kontekst z wiadomościami prywatnymi?

Czaty bezpośrednie domyślnie zwijają się do głównej sesji. Grupy/kanały mają własne klucze sesji, a tematy Telegram / wątki Discord są oddzielnymi sesjami. Zobacz Grupy i Wiadomości grupowe.

Ile obszarów roboczych i agentów mogę utworzyć?

Brak sztywnych limitów. Dziesiątki (nawet setki) są w porządku, ale zwracaj uwagę na:

  • Wzrost użycia dysku: sesje + transkrypcje znajdują się w ~/.openclaw/agents/<agentId>/sessions/.
  • Koszt tokenów: więcej agentów oznacza więcej równoczesnego użycia modeli.
  • Narzut operacyjny: profile uwierzytelniania, obszary robocze i routing kanałów osobne dla każdego agenta.

Wskazówki:

  • Utrzymuj jeden aktywny obszar roboczy na agenta (agents.defaults.workspace).
  • Przycinaj stare sesje (usuń JSONL lub wpisy magazynu), jeśli dysk rośnie.
  • Użyj openclaw doctor, aby wykryć zbędne obszary robocze i niezgodności profili.
Czy mogę uruchomić wiele botów lub czatów jednocześnie (Slack) i jak to skonfigurować?

Tak. Użyj routingu wieloagentowego, aby uruchamiać wielu izolowanych agentów i kierować wiadomości przychodzące według kanału/konta/rozmówcy. Slack jest obsługiwany jako kanał i może być przypisany do konkretnych agentów.

Dostęp przez przeglądarkę jest potężny, ale nie oznacza możliwości „zrobienia wszystkiego, co może człowiek” - zabezpieczenia antybotowe, CAPTCHA i MFA nadal mogą blokować automatyzację. Aby uzyskać najbardziej niezawodne sterowanie przeglądarką, użyj lokalnego Chrome MCP na hoście albo CDP na maszynie, która faktycznie uruchamia przeglądarkę.

Zalecana konfiguracja:

  • Zawsze włączony host Gateway (VPS/Mac mini).
  • Jeden agent na rolę (powiązania).
  • Kanały Slack powiązane z tymi agentami.
  • Lokalna przeglądarka przez Chrome MCP albo Node, gdy jest potrzebna.

Dokumentacja: Routing wieloagentowy, Slack, Przeglądarka, Node.

Modele, przełączanie awaryjne i profile uwierzytelniania

Pytania i odpowiedzi o modelach — wartości domyślne, wybór, aliasy, przełączanie, przełączanie awaryjne, profile uwierzytelniania — znajdują się w FAQ modeli.

Gateway: porty, „już uruchomiony” i tryb zdalny

Jakiego portu używa Gateway?

gateway.port steruje pojedynczym multipleksowanym portem dla WebSocket + HTTP (Control UI, hooki itd.).

Kolejność pierwszeństwa:

--port > OPENCLAW_GATEWAY_PORT > gateway.port > default 18789
Dlaczego openclaw gateway status mówi „Runtime: running”, ale „Connectivity probe: failed”?

Ponieważ „running” to widok supervisora (launchd/systemd/schtasks). Sonda łączności to CLI faktycznie łączące się z gateway WebSocket.

Użyj openclaw gateway status i ufaj tym wierszom:

  • Probe target: (adres URL faktycznie użyty przez sondę)
  • Listening: (co faktycznie jest powiązane z portem)
  • Last gateway error: (częsta przyczyna źródłowa, gdy proces działa, ale port nie nasłuchuje)
Dlaczego openclaw gateway status pokazuje różne „Config (cli)” i „Config (service)”?

Edytujesz jeden plik konfiguracji, podczas gdy usługa używa innego (często przez niezgodność --profile / OPENCLAW_STATE_DIR).

Naprawa:

openclaw gateway install --force

Uruchom to z tego samego --profile / środowiska, którego ma używać usługa.

Co oznacza „another gateway instance is already listening”?

OpenClaw wymusza blokadę runtime, natychmiast wiążąc listener WebSocket przy starcie (domyślnie ws://127.0.0.1:18789). Jeśli wiązanie nie powiedzie się z EADDRINUSE, zgłasza GatewayLockError, wskazując, że inna instancja już nasłuchuje.

Naprawa: zatrzymaj drugą instancję, zwolnij port albo uruchom z openclaw gateway --port <port>.

Jak uruchomić OpenClaw w trybie zdalnym (klient łączy się z Gateway gdzie indziej)?

Ustaw gateway.mode: "remote" i wskaż zdalny URL WebSocket, opcjonalnie ze zdalnymi poświadczeniami shared-secret:

{
  gateway: {
    mode: "remote",
    remote: {
      url: "ws://gateway.tailnet:18789",
      token: "your-token",
      password: "your-password",
    },
  },
}

Uwagi:

  • openclaw gateway uruchamia się tylko wtedy, gdy gateway.mode to local (albo przekażesz flagę nadpisania).
  • Aplikacja macOS obserwuje plik konfiguracji i przełącza tryby na żywo, gdy te wartości się zmieniają.
  • gateway.remote.token / .password to tylko zdalne poświadczenia po stronie klienta; same nie włączają lokalnego uwierzytelniania Gateway.
Control UI mówi „unauthorized” (albo ciągle łączy się ponownie). Co teraz?

Ścieżka uwierzytelniania Gateway i metoda uwierzytelniania UI nie pasują do siebie.

Fakty (z kodu):

  • Control UI przechowuje token w sessionStorage dla bieżącej sesji karty przeglądarki i wybranego adresu URL Gateway, więc odświeżenia w tej samej karcie nadal działają bez przywracania długotrwałej trwałości tokenu w localStorage.
  • Przy AUTH_TOKEN_MISMATCH zaufani klienci mogą wykonać jedną ograniczoną ponowną próbę z buforowanym tokenem urządzenia, gdy Gateway zwraca podpowiedzi ponowienia (canRetryWithDeviceToken=true, recommendedNextStep=retry_with_device_token).
  • Ta ponowna próba z buforowanym tokenem używa teraz ponownie buforowanych zatwierdzonych zakresów zapisanych z tokenem urządzenia. Wywołujący z jawnym deviceToken / jawnymi scopes nadal zachowują żądany zestaw zakresów zamiast dziedziczyć buforowane zakresy.
  • Poza tą ścieżką ponownej próby kolejność pierwszeństwa uwierzytelniania połączenia to najpierw jawny współdzielony token/hasło, potem jawny deviceToken, następnie zapisany token urządzenia, a potem token bootstrap.
  • Sprawdzanie zakresu tokenu bootstrap używa prefiksów ról. Wbudowana lista dozwolonych operatorów bootstrap spełnia tylko żądania operatora; Node lub inne role nieoperatorowe nadal potrzebują zakresów pod własnym prefiksem roli.

Naprawa:

  • Najszybciej: openclaw dashboard (wypisuje + kopiuje URL panelu, próbuje otworzyć; pokazuje wskazówkę SSH, jeśli środowisko jest headless).
  • Jeśli nie masz jeszcze tokenu: openclaw doctor --generate-gateway-token.
  • Jeśli zdalnie, najpierw tunel: ssh -N -L 18789:127.0.0.1:18789 user@host, a potem otwórz http://127.0.0.1:18789/.
  • Tryb shared-secret: ustaw gateway.auth.token / OPENCLAW_GATEWAY_TOKEN albo gateway.auth.password / OPENCLAW_GATEWAY_PASSWORD, a potem wklej pasujący sekret w ustawieniach Control UI.
  • Tryb Tailscale Serve: upewnij się, że gateway.auth.allowTailscale jest włączone i otwierasz URL Serve, a nie surowy URL loopback/tailnet, który omija nagłówki tożsamości Tailscale.
  • Tryb zaufanego proxy: upewnij się, że przechodzisz przez skonfigurowane proxy świadome tożsamości, a nie przez surowy URL Gateway. Proxy loopback na tym samym hoście wymagają też gateway.auth.trustedProxy.allowLoopback = true.
  • Jeśli niezgodność utrzymuje się po jednej ponownej próbie, obróć/zatwierdź ponownie sparowany token urządzenia:
    • openclaw devices list
    • openclaw devices rotate --device <id> --role operator
  • Jeśli to wywołanie rotacji mówi, że zostało odrzucone, sprawdź dwie rzeczy:
    • sesje sparowanego urządzenia mogą obracać tylko własne urządzenie, chyba że mają też operator.admin
    • jawne wartości --scope nie mogą przekraczać bieżących zakresów operatora wywołującego
  • Nadal utknąłeś? Uruchom openclaw status --all i postępuj zgodnie z Rozwiązywaniem problemów. Szczegóły uwierzytelniania znajdziesz w Panelu.
Ustawiłem gateway.bind na tailnet, ale nie może się powiązać i nic nie nasłuchuje

Wiązanie tailnet wybiera adres IP Tailscale z interfejsów sieciowych (100.64.0.0/10). Jeśli maszyna nie jest w Tailscale (albo interfejs jest wyłączony), nie ma z czym się powiązać.

Naprawa:

  • Uruchom Tailscale na tym hoście (aby miał adres 100.x), albo
  • Przełącz na gateway.bind: "loopback" / "lan".

Uwaga: tailnet jest jawne. auto preferuje loopback; użyj gateway.bind: "tailnet", gdy chcesz wiązania tylko z tailnet.

Czy mogę uruchomić wiele Gateway na tym samym hoście?

Zwykle nie - jeden Gateway może obsługiwać wiele kanałów wiadomości i agentów. Używaj wielu Gateway tylko wtedy, gdy potrzebujesz redundancji (np. bota ratunkowego) albo twardej izolacji.

Tak, ale musisz odizolować:

  • OPENCLAW_CONFIG_PATH (konfiguracja osobna dla instancji)
  • OPENCLAW_STATE_DIR (stan osobny dla instancji)
  • agents.defaults.workspace (izolacja obszaru roboczego)
  • gateway.port (unikalne porty)

Szybka konfiguracja (zalecana):

  • Używaj openclaw --profile <name> ... dla każdej instancji (automatycznie tworzy ~/.openclaw-<name>).
  • Ustaw unikalny gateway.port w konfiguracji każdego profilu (albo przekaż --port przy uruchomieniach ręcznych).
  • Zainstaluj usługę dla profilu: openclaw --profile <name> gateway install.

Profile dodają też sufiksy do nazw usług (ai.openclaw.<profile>; starsze com.openclaw.*, openclaw-gateway-<profile>.service, OpenClaw Gateway (<profile>)). Pełny przewodnik: Wiele gateway.

Co oznacza „invalid handshake” / kod 1008?

Gateway jest serwerem WebSocket i oczekuje, że pierwszą wiadomością będzie ramka connect. Jeśli otrzyma cokolwiek innego, zamyka połączenie z kodem 1008 (naruszenie zasad).

Częste przyczyny:

  • Otworzono URL HTTP w przeglądarce (http://...) zamiast klienta WS.
  • Użyto niewłaściwego portu lub ścieżki.
  • Proxy albo tunel usunął nagłówki uwierzytelniania lub wysłał żądanie niebędące żądaniem Gateway.

Szybkie poprawki:

  1. Użyj URL WS: ws://<host>:18789 (albo wss://..., jeśli HTTPS).
  2. Nie otwieraj portu WS w zwykłej karcie przeglądarki.
  3. Jeśli uwierzytelnianie jest włączone, dołącz token/hasło w ramce connect.

Jeśli używasz CLI lub TUI, URL powinien wyglądać tak:

openclaw tui --url ws://<host>:18789 --token <token>

Szczegóły protokołu: Protokół Gateway.

Logowanie i debugowanie

Gdzie są logi?

Logi plikowe (strukturalne):

/tmp/openclaw/openclaw-YYYY-MM-DD.log

Możesz ustawić stabilną ścieżkę przez logging.file. Poziom logowania do pliku kontroluje logging.level. Szczegółowość konsoli kontrolują --verbose i logging.consoleLevel.

Najszybsze śledzenie logów:

openclaw logs --follow

Logi usługi/supervisora (gdy gateway działa przez launchd/systemd):

  • macOS: $OPENCLAW_STATE_DIR/logs/gateway.log i gateway.err.log (domyślnie: ~/.openclaw/logs/...; profile używają ~/.openclaw-<profile>/logs/...)
  • Linux: journalctl --user -u openclaw-gateway[-<profile>].service -n 200 --no-pager
  • Windows: schtasks /Query /TN "OpenClaw Gateway (<profile>)" /V /FO LIST

Więcej w Rozwiązywaniu problemów.

Jak uruchomić/zatrzymać/zrestartować usługę Gateway?

Użyj pomocników gateway:

openclaw gateway status
openclaw gateway restart

Jeśli uruchamiasz gateway ręcznie, openclaw gateway --force może odzyskać port. Zobacz Gateway.

Zamknąłem terminal w Windows - jak zrestartować OpenClaw?

Istnieją dwa tryby instalacji Windows:

1) WSL2 (zalecany): Gateway działa w środku Linux.

Otwórz PowerShell, wejdź do WSL, a następnie zrestartuj:

wsl
openclaw gateway status
openclaw gateway restart

Jeśli usługa nigdy nie została zainstalowana, uruchom ją na pierwszym planie:

openclaw gateway run

2) Natywny Windows (niezalecany): Gateway działa bezpośrednio w Windows.

Otwórz PowerShell i uruchom:

openclaw gateway status
openclaw gateway restart

Jeśli uruchamiasz go ręcznie (bez usługi), użyj:

openclaw gateway run

Dokumentacja: Windows (WSL2), Runbook usługi Gateway.

Gateway działa, ale odpowiedzi nigdy nie przychodzą. Co sprawdzić?

Zacznij od szybkiego przeglądu stanu:

openclaw status
openclaw models status
openclaw channels status
openclaw logs --follow

Częste przyczyny:

  • Uwierzytelnianie modelu nie zostało załadowane na hoście Gateway (sprawdź models status).
  • Parowanie kanału/lista dozwolonych blokuje odpowiedzi (sprawdź konfigurację kanału i logi).
  • WebChat/Dashboard jest otwarty bez właściwego tokenu.

Jeśli łączysz się zdalnie, potwierdź, że tunel/połączenie Tailscale działa oraz że WebSocket Gateway jest osiągalny.

Dokumentacja: Kanały, Rozwiązywanie problemów, Dostęp zdalny.

"Rozłączono z Gateway: brak powodu" - co teraz?

Zwykle oznacza to, że UI utracił połączenie WebSocket. Sprawdź:

  1. Czy Gateway działa? openclaw gateway status
  2. Czy Gateway jest sprawny? openclaw status
  3. Czy UI ma właściwy token? openclaw dashboard
  4. Jeśli łączysz się zdalnie, czy tunel/połączenie Tailscale działa?

Następnie śledź logi:

openclaw logs --follow

Dokumentacja: Dashboard, Dostęp zdalny, Rozwiązywanie problemów.

Telegram setMyCommands kończy się niepowodzeniem. Co sprawdzić?

Zacznij od logów i stanu kanału:

openclaw channels status
openclaw channels logs --channel telegram

Następnie dopasuj błąd:

  • BOT_COMMANDS_TOO_MUCH: menu Telegram ma zbyt wiele pozycji. OpenClaw już przycina je do limitu Telegram i ponawia próbę z mniejszą liczbą poleceń, ale część pozycji menu nadal trzeba usunąć. Ogranicz polecenia Plugin/skill/niestandardowe albo wyłącz channels.telegram.commands.native, jeśli menu nie jest potrzebne.
  • TypeError: fetch failed, Network request for 'setMyCommands' failed! lub podobne błędy sieciowe: jeśli używasz VPS albo jesteś za proxy, potwierdź, że wychodzące HTTPS jest dozwolone i DNS działa dla api.telegram.org.

Jeśli Gateway działa zdalnie, upewnij się, że przeglądasz logi na hoście Gateway.

Dokumentacja: Telegram, Rozwiązywanie problemów z kanałami.

TUI nie pokazuje żadnego wyjścia. Co sprawdzić?

Najpierw potwierdź, że Gateway jest osiągalny i agent może działać:

openclaw status
openclaw models status
openclaw logs --follow

W TUI użyj /status, aby zobaczyć bieżący stan. Jeśli oczekujesz odpowiedzi w kanale czatu, upewnij się, że dostarczanie jest włączone (/deliver on).

Dokumentacja: TUI, Polecenia z ukośnikiem.

Jak całkowicie zatrzymać, a potem uruchomić Gateway?

Jeśli zainstalowano usługę:

openclaw gateway stop
openclaw gateway start

To zatrzymuje/uruchamia nadzorowaną usługę (launchd na macOS, systemd w Linux). Użyj tego, gdy Gateway działa w tle jako daemon.

Jeśli uruchamiasz w pierwszym planie, zatrzymaj za pomocą Ctrl-C, a następnie:

openclaw gateway run

Dokumentacja: Runbook usługi Gateway.

ELI5: openclaw gateway restart kontra openclaw gateway
  • openclaw gateway restart: restartuje usługę działającą w tle (launchd/systemd).
  • openclaw gateway: uruchamia Gateway w pierwszym planie dla tej sesji terminala.

Jeśli zainstalowano usługę, używaj poleceń gateway. Użyj openclaw gateway, gdy chcesz jednorazowo uruchomić Gateway w pierwszym planie.

Najszybszy sposób na uzyskanie większej liczby szczegółów, gdy coś się nie uda

Uruchom Gateway z --verbose, aby uzyskać więcej szczegółów w konsoli. Następnie sprawdź plik logu pod kątem uwierzytelniania kanału, routingu modelu i błędów RPC.

Media i załączniki

Mój skill wygenerował obraz/PDF, ale nic nie zostało wysłane

Załączniki wychodzące od agenta muszą zawierać wiersz MEDIA:<path-or-url> (w osobnym wierszu). Zobacz Konfiguracja asystenta OpenClaw i Wysyłanie przez agenta.

Wysyłanie przez CLI:

openclaw message send --target +15555550123 --message "Here you go" --media /path/to/file.png

Sprawdź też:

  • Kanał docelowy obsługuje media wychodzące i nie jest blokowany przez listy dozwolonych.
  • Plik mieści się w limitach rozmiaru dostawcy (obrazy są zmniejszane maksymalnie do 2048px).
  • tools.fs.workspaceOnly=true ogranicza wysyłanie ścieżek lokalnych do workspace, temp/media-store oraz plików zweryfikowanych przez sandbox.
  • tools.fs.workspaceOnly=false pozwala MEDIA: wysyłać lokalne pliki hosta, które agent może już czytać, ale tylko dla mediów i bezpiecznych typów dokumentów (obrazy, audio, wideo, PDF i dokumenty Office). Zwykłe pliki tekstowe i pliki przypominające sekrety nadal są blokowane.

Zobacz Obrazy.

Bezpieczeństwo i kontrola dostępu

Czy wystawienie OpenClaw na przychodzące wiadomości prywatne jest bezpieczne?

Traktuj przychodzące wiadomości prywatne jako niezaufane dane wejściowe. Ustawienia domyślne są zaprojektowane tak, aby zmniejszać ryzyko:

  • Domyślnym zachowaniem w kanałach obsługujących wiadomości prywatne jest parowanie:
    • Nieznani nadawcy otrzymują kod parowania; bot nie przetwarza ich wiadomości.
    • Zatwierdź za pomocą: openclaw pairing approve --channel <channel> [--account <id>] <code>
    • Oczekujące żądania są ograniczone do 3 na kanał; sprawdź openclaw pairing list --channel <channel> [--account <id>], jeśli kod nie dotarł.
  • Publiczne otwarcie wiadomości prywatnych wymaga jawnego włączenia (dmPolicy: "open" i lista dozwolonych "*").

Uruchom openclaw doctor, aby wykryć ryzykowne polityki wiadomości prywatnych.

Czy prompt injection dotyczy tylko publicznych botów?

Nie. Prompt injection dotyczy niezaufanej treści, a nie tylko tego, kto może wysłać wiadomość prywatną do bota. Jeśli asystent czyta treści zewnętrzne (wyszukiwanie/pobieranie z sieci, strony przeglądarki, e-maile, dokumenty, załączniki, wklejone logi), te treści mogą zawierać instrukcje próbujące przejąć model. Może się to zdarzyć nawet wtedy, gdy jesteś jedynym nadawcą.

Największe ryzyko występuje przy włączonych narzędziach: model można skłonić do wykradania kontekstu lub wywoływania narzędzi w twoim imieniu. Zmniejsz zakres skutków przez:

  • używanie agenta „reader” w trybie tylko do odczytu albo bez narzędzi do podsumowywania niezaufanej treści
  • wyłączenie web_search / web_fetch / browser dla agentów z włączonymi narzędziami
  • traktowanie zdekodowanego tekstu pliku/dokumentu także jako niezaufanego: OpenResponses input_file oraz ekstrakcja załączników multimedialnych opakowują wyodrębniony tekst w jawne znaczniki granic treści zewnętrznej zamiast przekazywać surowy tekst pliku
  • sandboxing i ścisłe listy dozwolonych narzędzi

Szczegóły: Bezpieczeństwo.

Czy mój bot powinien mieć własny e-mail, konto GitHub lub numer telefonu?

Tak, w większości konfiguracji. Izolowanie bota za pomocą osobnych kont i numerów telefonów zmniejsza zakres skutków, jeśli coś pójdzie nie tak. Ułatwia to też rotację poświadczeń lub cofnięcie dostępu bez wpływu na konta osobiste.

Zacznij od małego zakresu. Przyznaj dostęp tylko do narzędzi i kont, których rzeczywiście potrzebujesz, i rozszerzaj go później, jeśli będzie to wymagane.

Dokumentacja: Bezpieczeństwo, Parowanie.

Czy mogę dać mu autonomię nad moimi wiadomościami tekstowymi i czy to bezpieczne?

Nie zalecamy pełnej autonomii nad osobistymi wiadomościami. Najbezpieczniejszy wzorzec to:

  • Trzymaj wiadomości prywatne w trybie parowania albo na ścisłej liście dozwolonych.
  • Użyj osobnego numeru lub konta, jeśli ma wysyłać wiadomości w twoim imieniu.
  • Niech przygotuje szkic, a potem zatwierdź przed wysłaniem.

Jeśli chcesz eksperymentować, rób to na dedykowanym koncie i utrzymuj je w izolacji. Zobacz Bezpieczeństwo.

Czy mogę używać tańszych modeli do zadań osobistego asystenta?

Tak, jeśli agent obsługuje tylko czat, a dane wejściowe są zaufane. Mniejsze klasy modeli są bardziej podatne na przejęcie instrukcji, więc unikaj ich dla agentów z włączonymi narzędziami lub podczas czytania niezaufanej treści. Jeśli musisz użyć mniejszego modelu, zablokuj narzędzia i uruchamiaj go w sandboxie. Zobacz Bezpieczeństwo.

Uruchomiłem /start w Telegram, ale nie dostałem kodu parowania

Kody parowania są wysyłane tylko wtedy, gdy nieznany nadawca napisze do bota i dmPolicy: "pairing" jest włączone. Samo /start nie generuje kodu.

Sprawdź oczekujące żądania:

openclaw pairing list telegram

Jeśli chcesz uzyskać natychmiastowy dostęp, dodaj swój identyfikator nadawcy do listy dozwolonych albo ustaw dmPolicy: "open" dla tego konta.

WhatsApp: czy będzie pisać do moich kontaktów? Jak działa parowanie?

Nie. Domyślną polityką wiadomości prywatnych WhatsApp jest parowanie. Nieznani nadawcy otrzymują tylko kod parowania, a ich wiadomość nie jest przetwarzana. OpenClaw odpowiada tylko na czaty, które otrzymuje, albo na jawne wysyłki, które uruchomisz.

Zatwierdź parowanie za pomocą:

openclaw pairing approve whatsapp <code>

Wyświetl oczekujące żądania:

openclaw pairing list whatsapp

Monit kreatora o numer telefonu: służy do ustawienia twojej listy dozwolonych/właściciela, aby twoje własne wiadomości prywatne były dozwolone. Nie służy do automatycznego wysyłania. Jeśli używasz osobistego numeru WhatsApp, podaj ten numer i włącz channels.whatsapp.selfChatMode.

Polecenia czatu, przerywanie zadań i „to się nie zatrzymuje”

Jak zatrzymać wyświetlanie wewnętrznych komunikatów systemowych w czacie?

Większość komunikatów wewnętrznych lub narzędziowych pojawia się tylko wtedy, gdy dla tej sesji włączono verbose, trace lub reasoning.

Napraw to w czacie, w którym to widzisz:

/verbose off
/trace off
/reasoning off

Jeśli nadal jest zbyt dużo komunikatów, sprawdź ustawienia sesji w Control UI i ustaw verbose na dziedzicz. Potwierdź też, że nie używasz profilu bota z verboseDefault ustawionym na on w konfiguracji.

Dokumentacja: Myślenie i verbose, Bezpieczeństwo.

Jak zatrzymać/anulować uruchomione zadanie?

Wyślij dowolne z tych jako samodzielną wiadomość (bez ukośnika):

stop
stop action
stop current action
stop run
stop current run
stop agent
stop the agent
stop openclaw
openclaw stop
stop don't do anything
stop do not do anything
stop doing anything
please stop
stop please
abort
esc
wait
exit
interrupt

To są wyzwalacze przerwania (nie polecenia z ukośnikiem).

W przypadku procesów w tle (z narzędzia exec) możesz poprosić agenta o uruchomienie:

process action:kill sessionId:XXX

Omówienie poleceń z ukośnikiem: zobacz Polecenia z ukośnikiem.

Większość poleceń musi być wysyłana jako samodzielna wiadomość zaczynająca się od /, ale kilka skrótów (takich jak /status) działa też w treści wiadomości dla nadawców z listy dozwolonych.

Jak wysłać wiadomość Discord z Telegram? („Cross-context messaging denied”)

OpenClaw domyślnie blokuje wysyłanie wiadomości między dostawcami. Jeśli wywołanie narzędzia jest powiązane z Telegram, nie wyśle do Discord, chyba że jawnie na to zezwolisz.

Włącz wysyłanie wiadomości między dostawcami dla agenta:

{
  tools: {
    message: {
      crossContext: {
        allowAcrossProviders: true,
        marker: { enabled: true, prefix: "[from {channel}] " },
      },
    },
  },
}

Po edycji konfiguracji zrestartuj gateway.

Dlaczego mam wrażenie, że bot „ignoruje” szybko wysyłane wiadomości?

Tryb kolejki kontroluje, jak nowe wiadomości współdziałają z uruchomionym przebiegiem. Użyj /queue, aby zmienić tryb:

  • steer - kolejkuj wszystkie oczekujące wskazówki do następnej granicy modelu w bieżącym przebiegu
  • queue - starszy tryb wskazówek pojedynczo
  • followup - uruchamiaj wiadomości pojedynczo
  • collect - grupuj wiadomości i odpowiedz raz
  • steer-backlog - wskaż teraz, a potem przetwórz zaległości
  • interrupt - przerwij bieżący przebieg i zacznij od nowa

Domyślnym trybem jest steer. Dla trybów kontynuacji możesz dodać opcje takie jak debounce:0.5s cap:25 drop:summarize. Zobacz Kolejka poleceń i Kolejka sterowania.

Różne

Jaki jest domyślny model Anthropic z kluczem API?

W OpenClaw poświadczenia i wybór modelu są rozdzielone. Ustawienie ANTHROPIC_API_KEY (lub zapisanie klucza API Anthropic w profilach uwierzytelniania) włącza uwierzytelnianie, ale rzeczywisty domyślny model to ten, który skonfigurujesz w agents.defaults.model.primary (na przykład anthropic/claude-sonnet-4-6 lub anthropic/claude-opus-4-6). Jeśli widzisz No credentials found for profile "anthropic:default", oznacza to, że Gateway nie mógł znaleźć poświadczeń Anthropic w oczekiwanym pliku auth-profiles.json dla uruchomionego agenta.


Nadal problem? Zapytaj na Discord albo otwórz dyskusję GitHub.

Powiązane