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
-
Szybki status (pierwsze sprawdzenie)
openclaw statusSzybkie lokalne podsumowanie: OS + aktualizacja, osiągalność gateway/usługi, agenci/sesje, konfiguracja dostawców + problemy działania (gdy gateway jest osiągalny).
-
Raport do wklejenia (bezpieczny do udostępnienia)
openclaw status --allDiagnoza tylko do odczytu z końcówką logu (tokeny zredagowane).
-
Stan demona + portu
openclaw gateway statusPokazuje runtime nadzorcy względem osiągalności RPC, docelowy URL sondy oraz konfigurację, której usługa prawdopodobnie użyła.
-
Głębokie sondy
openclaw status --deepUruchamia sondę stanu Gateway na żywo, w tym sondy kanałów, gdy są obsługiwane (wymaga osiągalnego Gateway). Zobacz Stan.
-
Śledź najnowszy log
openclaw logs --followJeś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.
-
Uruchom doctor (naprawy)
openclaw doctorNaprawia/migruje konfigurację/stan + uruchamia kontrole stanu. Zobacz Doctor.
-
Migawka Gateway
openclaw health --json openclaw health --verbose # pokazuje docelowy URL + ścieżkę konfiguracji przy błędachProsi 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
modelper 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_spawnzthread: true(i opcjonalniemode: "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.spawnSessionsdomyślnie ma wartośćtrue; ustaw nafalse, 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_replyalbo dokładnieANNOUNCE_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) iOPENCLAW_SKIP_CRONnie jest ustawione. - Sprawdź, czy Gateway działa 24/7 (bez uśpienia/restartów).
- Zweryfikuj ustawienia strefy czasowej zadania (
--tzwzglę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
modeldla 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ę.
-
Utwórz wrapper SSH dla pliku binarnego (przykład:
memodla Apple Notes):#!/usr/bin/env bash set -euo pipefail exec ssh -T user@mac-host /opt/homebrew/bin/memo "$@" -
Umieść wrapper w
PATHna hoście Linux (na przykład~/bin/memo). -
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"] } } } --- -
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/inputRefi 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/nodeza 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_PATHi 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.
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, opcjonalnieHEARTBEAT.md. Główny plikmemory.mdmałymi literami jest tylko starszym wejściem naprawy;openclaw doctor --fixmoże scalić go zMEMORY.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/.passwordsame z siebie nie włączają lokalnego uwierzytelniania gateway.- Lokalne ścieżki wywołań mogą używać
gateway.remote.*jako opcji zapasowej tylko wtedy, gdygateway.auth.*nie jest ustawione. - W przypadku uwierzytelniania hasłem ustaw zamiast tego
gateway.auth.mode: "password"orazgateway.auth.password(alboOPENCLAW_GATEWAY_PASSWORD). - Jeśli
gateway.auth.token/gateway.auth.passwordjest 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.tokenalboconnect.params.auth.password(przechowywane w ustawieniach aplikacji/UI). Tryby przenoszące tożsamość, takie jak Tailscale Serve albotrusted-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ą jawnegogateway.auth.trustedProxy.allowLoopback = trueoraz wpisu loopback wgateway.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 krytycznychhot,restart,offteż 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żywaAll 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_URLalboplugins.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_KEYlubMOONSHOT_API_KEY - MiniMax Search:
MINIMAX_CODE_PLAN_KEY,MINIMAX_CODING_API_KEYlubMINIMAX_API_KEY - Perplexity:
PERPLEXITY_API_KEYlubOPENROUTER_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_searchlubgroup:web. web_fetchjest domyślnie włączone (chyba że zostało jawnie wyłączone).- Jeśli
tools.web.fetch.providerzostanie 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 --fixodpowiada za naprawę i może przywrócić ostatnią poprawną wersję, zapisując odrzucony plik jakoopenclaw.json.clobbered.*.
Odzyskiwanie:
- Sprawdź
openclaw logs --followpod kątemInvalid config at,Config write rejected:lubconfig reload skipped (invalid config). - Sprawdź najnowszy
openclaw.json.clobbered.*lubopenclaw.json.rejected.*obok aktywnej konfiguracji. - Uruchom
openclaw config validateiopenclaw doctor --fix. - Skopiuj z powrotem tylko zamierzone klucze za pomocą
openclaw config setlubconfig.patch. - Jeśli nie masz ostatniej poprawnej wersji ani odrzuconego ładunku, przywróć z kopii zapasowej albo uruchom ponownie
openclaw doctori 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 setdo małych zmian. - Używaj
openclaw configuredo 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.patchdo częściowych edycji RPC;config.applyzostaw wyłącznie do zastępowania pełnej konfiguracji. - Jeśli używasz narzędzia
gatewaydostępnego tylko dla właściciela z przebiegu agenta, nadal będzie ono odrzucać zapisy dotools.exec.ask/tools.exec.security(w tym starsze aliasytools.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:
-
Uruchom Gateway na zawsze włączonym hoście (VPS/serwer domowy).
-
Umieść host Gateway i swój komputer w tej samej sieci tailnet.
-
Upewnij się, że Gateway WS jest osiągalny (wiązanie w tailnet lub tunel SSH).
-
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ł.
-
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.allowTailscalejest 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.runjest ograniczone listami dozwolonych/zatwierdzeniami węzła na tym laptopie. - Więcej narzędzi urządzenia. Węzły udostępniają
canvas,cameraiscreenopróczsystem.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 zapisemconfig.get: pobierz bieżący snapshot + hashconfig.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 wymaganeconfig.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
gatewaytylko dla właściciela nadal odmawia przepisywaniatools.exec.ask/tools.exec.security; starsze aliasytools.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:
-
Zainstaluj + zaloguj się na VPS
curl -fsSL https://tailscale.com/install.sh | sh sudo tailscale up -
Zainstaluj + zaloguj się na Macu
- Użyj aplikacji Tailscale i zaloguj się do tego samego tailnetu.
-
Włącz MagicDNS (zalecane)
- W konsoli administracyjnej Tailscale włącz MagicDNS, aby VPS miał stabilną nazwę.
-
Użyj nazwy hosta tailnetu
- SSH:
ssh [email protected] - Gateway WS:
ws://your-vps.tailnet-xxxx.ts.net:18789
- SSH:
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:
-
Upewnij się, że VPS + Mac są w tym samym tailnecie.
-
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ł.
-
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:
.envz bieżącego katalogu roboczego- globalny fallback
.envz~/.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:
- Umieść brakujące klucze w
~/.openclaw/.env, aby były pobierane nawet wtedy, gdy usługa nie dziedziczy env powłoki. - 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:
-
Umieść token w
~/.openclaw/.env:COPILOT_GITHUB_TOKEN=... -
Albo włącz import z powłoki (
env.shellEnv.enabled: true). -
Albo dodaj go do bloku
envw 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
/compactprzed długimi zadaniami oraz/newpodczas 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):
/compactalbo
/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
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.groupsbez"*", 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 gatewayuruchamia się tylko wtedy, gdygateway.modetolocal(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/.passwordto 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
sessionStoragedla 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_MISMATCHzaufani 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/ jawnymiscopesnadal 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órzhttp://127.0.0.1:18789/. - Tryb shared-secret: ustaw
gateway.auth.token/OPENCLAW_GATEWAY_TOKENalbogateway.auth.password/OPENCLAW_GATEWAY_PASSWORD, a potem wklej pasujący sekret w ustawieniach Control UI. - Tryb Tailscale Serve: upewnij się, że
gateway.auth.allowTailscalejest 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 listopenclaw 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
--scopenie mogą przekraczać bieżących zakresów operatora wywołującego
- sesje sparowanego urządzenia mogą obracać tylko własne urządzenie, chyba że mają też
- Nadal utknąłeś? Uruchom
openclaw status --alli 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.portw konfiguracji każdego profilu (albo przekaż--portprzy 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:
- Użyj URL WS:
ws://<host>:18789(albowss://..., jeśli HTTPS). - Nie otwieraj portu WS w zwykłej karcie przeglądarki.
- 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.logigateway.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ź:
- Czy Gateway działa?
openclaw gateway status - Czy Gateway jest sprawny?
openclaw status - Czy UI ma właściwy token?
openclaw dashboard - 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łączchannels.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 dlaapi.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=trueogranicza wysyłanie ścieżek lokalnych do workspace, temp/media-store oraz plików zweryfikowanych przez sandbox.tools.fs.workspaceOnly=falsepozwalaMEDIA: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/browserdla agentów z włączonymi narzędziami - traktowanie zdekodowanego tekstu pliku/dokumentu także jako niezaufanego: OpenResponses
input_fileoraz 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 przebieguqueue- starszy tryb wskazówek pojedynczofollowup- uruchamiaj wiadomości pojedynczocollect- grupuj wiadomości i odpowiedz razsteer-backlog- wskaż teraz, a potem przetwórz zaległościinterrupt- 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
- FAQ pierwszego uruchomienia — instalacja, wdrożenie, uwierzytelnianie, subskrypcje, wczesne błędy
- FAQ modeli — wybór modelu, przełączanie awaryjne, profile uwierzytelniania
- Rozwiązywanie problemów — triage według objawów