From 495ff003808ec88e8c2ff81ca99a8206e0c67bb4 Mon Sep 17 00:00:00 2001 From: "openclaw-docs-i18n[bot]" Date: Mon, 20 Apr 2026 10:08:57 +0000 Subject: [PATCH] chore(i18n): refresh pl translations --- docs/pl/channels/pairing.md | 114 +- docs/pl/channels/telegram.md | 537 +++--- docs/pl/channels/troubleshooting.md | 117 +- docs/pl/concepts/qa-e2e-automation.md | 190 ++- docs/pl/gateway/configuration-reference.md | 1214 +++++++------- docs/pl/gateway/doctor.md | 470 +++--- docs/pl/gateway/index.md | 181 +- docs/pl/gateway/troubleshooting.md | 272 +-- docs/pl/help/faq.md | 1768 ++++++++++---------- docs/pl/help/testing.md | 732 ++++---- docs/pl/help/troubleshooting.md | 235 +-- docs/pl/tools/browser.md | 632 +++---- 12 files changed, 3249 insertions(+), 3213 deletions(-) diff --git a/docs/pl/channels/pairing.md b/docs/pl/channels/pairing.md index 9c92a4d5a..59330929d 100644 --- a/docs/pl/channels/pairing.md +++ b/docs/pl/channels/pairing.md @@ -1,42 +1,42 @@ --- read_when: - - Konfigurowanie kontroli dostępu do DM-ów - - Parowanie nowego węzła iOS/Android - - Przeglądanie modelu bezpieczeństwa OpenClaw -summary: 'Przegląd parowania: zatwierdzanie, kto może wysyłać Ci DM-y i które węzły mogą dołączyć' + - Konfigurowanie kontroli dostępu do wiadomości prywatnych + - Parowanie nowego Node iOS/Android + - Przegląd zabezpieczeń OpenClaw +summary: 'Przegląd parowania: zatwierdzanie, kto może wysyłać Ci wiadomości prywatne + które Node mogą dołączyć' title: Parowanie x-i18n: - generated_at: "2026-04-05T13:44:18Z" + generated_at: "2026-04-20T09:58:28Z" model: gpt-5.4 provider: openai - source_hash: 2bd99240b3530def23c05a26915d07cf8b730565c2822c6338437f8fb3f285c9 + source_hash: 4161629ead02dc0bdcd283cc125fe6579a579e03740127f4feb22dfe344bd028 source_path: channels/pairing.md workflow: 15 --- # Parowanie -„Parowanie” to jawny krok **zatwierdzenia przez właściciela** w OpenClaw. +„Parowanie” to w OpenClaw jawny etap **zatwierdzenia przez właściciela**. Jest używany w dwóch miejscach: -1. **Parowanie DM-ów** (kto może rozmawiać z botem) -2. **Parowanie węzłów** (które urządzenia/węzły mogą dołączyć do sieci gatewaya) +1. **Parowanie wiadomości prywatnych** (kto może rozmawiać z botem) +2. **Parowanie Node** (które urządzenia/Node mogą dołączyć do sieci Gateway) -Kontekst bezpieczeństwa: [Bezpieczeństwo](/gateway/security) +Kontekst bezpieczeństwa: [Bezpieczeństwo](/pl/gateway/security) -## 1) Parowanie DM-ów (dostęp do czatu przychodzącego) +## 1) Parowanie wiadomości prywatnych (dostęp do czatu przychodzącego) -Gdy kanał jest skonfigurowany z zasadą DM `pairing`, nieznani nadawcy otrzymują krótki kod, a ich wiadomość **nie jest przetwarzana**, dopóki jej nie zatwierdzisz. +Gdy kanał jest skonfigurowany z zasadą wiadomości prywatnych `pairing`, nieznani nadawcy otrzymują krótki kod, a ich wiadomość **nie jest przetwarzana**, dopóki jej nie zatwierdzisz. -Domyślne zasady DM są opisane w: [Bezpieczeństwo](/gateway/security) +Domyślne zasady wiadomości prywatnych są udokumentowane tutaj: [Bezpieczeństwo](/pl/gateway/security) Kody parowania: - 8 znaków, wielkie litery, bez niejednoznacznych znaków (`0O1I`). -- **Wygasają po 1 godzinie**. Bot wysyła wiadomość parowania tylko wtedy, gdy tworzona jest nowa prośba (mniej więcej raz na godzinę na nadawcę). -- Oczekujące prośby o parowanie DM są domyślnie ograniczone do **3 na kanał**; dodatkowe prośby są ignorowane, dopóki jedna nie wygaśnie lub nie zostanie zatwierdzona. +- **Wygasają po 1 godzinie**. Bot wysyła wiadomość parowania tylko wtedy, gdy tworzona jest nowa prośba (mniej więcej raz na godzinę dla każdego nadawcy). +- Oczekujące prośby o parowanie wiadomości prywatnych są domyślnie ograniczone do **3 na kanał**; dodatkowe prośby są ignorowane, dopóki jedna nie wygaśnie albo nie zostanie zatwierdzona. -### Zatwierdzanie nadawcy +### Zatwierdzenie nadawcy ```bash openclaw pairing list telegram @@ -47,55 +47,55 @@ Obsługiwane kanały: `bluebubbles`, `discord`, `feishu`, `googlechat`, `imessag ### Gdzie jest przechowywany stan -Przechowywane w `~/.openclaw/credentials/`: +Przechowywany w `~/.openclaw/credentials/`: - Oczekujące prośby: `-pairing.json` -- Magazyn zatwierdzonej listy dozwolonych: +- Magazyn zatwierdzonej listy dozwolonych nadawców: - Konto domyślne: `-allowFrom.json` - - Konto niedomyślne: `--allowFrom.json` + - Konto inne niż domyślne: `--allowFrom.json` Zachowanie zakresu kont: -- Konta niedomyślne odczytują/zapisują wyłącznie swój plik listy dozwolonych objęty zakresem. -- Konto domyślne używa nieobjętego zakresem pliku listy dozwolonych dla kanału. +- Konta inne niż domyślne odczytują/zapisują tylko swój plik listy dozwolonych nadawców. +- Konto domyślne używa niezakresowanego pliku listy dozwolonych nadawców na poziomie kanału. -Traktuj je jako dane wrażliwe (kontrolują dostęp do Twojego asystenta). +Traktuj te pliki jako wrażliwe (kontrolują dostęp do Twojego asystenta). -Ważne: ten magazyn dotyczy dostępu DM. Autoryzacja grup jest oddzielna. -Zatwierdzenie kodu parowania DM nie powoduje automatycznie, że ten nadawca może uruchamiać polecenia grupowe lub sterować botem w grupach. W przypadku dostępu do grup skonfiguruj jawne listy dozwolonych dla grup w danym kanale (na przykład `groupAllowFrom`, `groups` lub nadpisania per grupa/per temat zależnie od kanału). +Ważne: ten magazyn dotyczy dostępu do wiadomości prywatnych. Autoryzacja grup jest oddzielna. +Zatwierdzenie kodu parowania wiadomości prywatnej nie pozwala automatycznie temu nadawcy uruchamiać poleceń grupowych ani sterować botem w grupach. W przypadku dostępu grupowego skonfiguruj jawne listy dozwolonych grup dla kanału (na przykład `groupAllowFrom`, `groups` albo nadpisania per grupa/per temat, zależnie od kanału). -## 2) Parowanie urządzeń węzłów (węzły iOS/Android/macOS/bezgłowe) +## 2) Parowanie urządzeń Node (Node iOS/Android/macOS/headless) -Węzły łączą się z Gateway jako **urządzenia** z `role: node`. Gateway +Node łączą się z Gateway jako **urządzenia** z `role: node`. Gateway tworzy prośbę o sparowanie urządzenia, która musi zostać zatwierdzona. ### Parowanie przez Telegram (zalecane dla iOS) -Jeśli używasz pluginu `device-pair`, możesz przeprowadzić pierwsze parowanie urządzenia całkowicie z Telegrama: +Jeśli używasz Plugin `device-pair`, możesz przeprowadzić pierwsze parowanie urządzenia całkowicie z poziomu Telegram: -1. W Telegram wyślij do swojego bota: `/pair` -2. Bot odpowie dwiema wiadomościami: wiadomością z instrukcją i osobną wiadomością z **kodem konfiguracji** (łatwym do skopiowania/wklejenia w Telegram). +1. W Telegram wyślij wiadomość do swojego bota: `/pair` +2. Bot odpowie dwiema wiadomościami: wiadomością z instrukcjami oraz osobną wiadomością z **kodem konfiguracji** (łatwym do skopiowania/wklejenia w Telegram). 3. Na telefonie otwórz aplikację OpenClaw na iOS → Ustawienia → Gateway. 4. Wklej kod konfiguracji i połącz się. -5. Wróć do Telegrama: `/pair pending` (przejrzyj identyfikatory próśb, rolę i zakresy), a następnie zatwierdź. +5. Wróć do Telegram: `/pair pending` (przejrzyj identyfikatory próśb, rolę i zakresy), a następnie zatwierdź. -Kod konfiguracji to ładunek JSON zakodowany w base64, który zawiera: +Kod konfiguracji to zakodowany w base64 ładunek JSON, który zawiera: -- `url`: URL WebSocket Gatewaya (`ws://...` lub `wss://...`) -- `bootstrapToken`: krótkotrwały token bootstrap dla pojedynczego urządzenia używany w początkowym uzgadnianiu parowania +- `url`: adres URL WebSocket Gateway (`ws://...` lub `wss://...`) +- `bootstrapToken`: krótko żyjący token bootstrap dla pojedynczego urządzenia używany podczas początkowego uzgadniania parowania -Ten token bootstrap zawiera wbudowany profil bootstrap parowania: +Ten token bootstrap ma wbudowany profil bootstrap parowania: - główny przekazany token `node` pozostaje `scopes: []` -- każdy przekazany token `operator` pozostaje ograniczony do listy dozwolonych bootstrap: +- każdy przekazany token `operator` pozostaje ograniczony do bootstrapowej listy dozwolonej: `operator.approvals`, `operator.read`, `operator.talk.secrets`, `operator.write` -- sprawdzanie zakresów bootstrap jest poprzedzone rolą, a nie oparte na jednej wspólnej puli zakresów: - wpisy zakresów operatora spełniają tylko żądania operatora, a role inne niż operator +- sprawdzanie zakresów bootstrap jest prefiksowane rolą, a nie realizowane przez jedną wspólną pulę zakresów: + wpisy zakresów operatora spełniają tylko żądania operatora, a role niebędące operatorem nadal muszą żądać zakresów pod własnym prefiksem roli Traktuj kod konfiguracji jak hasło, dopóki jest ważny. -### Zatwierdzanie urządzenia węzła +### Zatwierdzenie urządzenia Node ```bash openclaw devices list @@ -103,34 +103,40 @@ openclaw devices approve openclaw devices reject ``` -Jeśli to samo urządzenie spróbuje ponownie z innymi danymi uwierzytelniającymi (na przykład inną +Jeśli to samo urządzenie ponowi próbę z innymi danymi uwierzytelniającymi (na przykład inną rolą/zakresami/kluczem publicznym), poprzednia oczekująca prośba zostaje zastąpiona i tworzony jest nowy `requestId`. -### Przechowywanie stanu parowania węzłów +Ważne: już sparowane urządzenie nie otrzymuje po cichu szerszego dostępu. Jeśli +ponownie połączy się, prosząc o więcej zakresów albo szerszą rolę, OpenClaw zachowa +istniejące zatwierdzenie bez zmian i utworzy nową oczekującą prośbę o podniesienie uprawnień. Użyj +`openclaw devices list`, aby porównać obecnie zatwierdzony dostęp z nowo +żądanym dostępem przed zatwierdzeniem. -Przechowywane w `~/.openclaw/devices/`: +### Przechowywanie stanu parowania Node -- `pending.json` (krótkotrwałe; oczekujące prośby wygasają) +Przechowywany w `~/.openclaw/devices/`: + +- `pending.json` (krótkotrwały; oczekujące prośby wygasają) - `paired.json` (sparowane urządzenia + tokeny) ### Uwagi - Starsze API `node.pair.*` (CLI: `openclaw nodes pending|approve|reject|rename`) to - oddzielny magazyn parowania zarządzany przez gateway. Węzły WS nadal wymagają parowania urządzeń. + oddzielny magazyn parowania zarządzany przez Gateway. Node WS nadal wymagają parowania urządzenia. - Rekord parowania jest trwałym źródłem prawdy dla zatwierdzonych ról. Aktywne tokeny urządzeń pozostają ograniczone do tego zatwierdzonego zestawu ról; przypadkowy wpis tokena - poza zatwierdzonymi rolami nie tworzy nowego dostępu. + poza zatwierdzonymi rolami nie daje nowego dostępu. -## Powiązana dokumentacja +## Powiązane dokumenty -- Model bezpieczeństwa + prompt injection: [Bezpieczeństwo](/gateway/security) -- Bezpieczne aktualizowanie (uruchom doctor): [Aktualizowanie](/install/updating) +- Model bezpieczeństwa + prompt injection: [Bezpieczeństwo](/pl/gateway/security) +- Bezpieczne aktualizowanie (uruchom doctor): [Aktualizowanie](/pl/install/updating) - Konfiguracje kanałów: - - Telegram: [Telegram](/channels/telegram) - - WhatsApp: [WhatsApp](/channels/whatsapp) - - Signal: [Signal](/channels/signal) - - BlueBubbles (iMessage): [BlueBubbles](/channels/bluebubbles) - - iMessage (starsze): [iMessage](/channels/imessage) - - Discord: [Discord](/channels/discord) - - Slack: [Slack](/channels/slack) + - Telegram: [Telegram](/pl/channels/telegram) + - WhatsApp: [WhatsApp](/pl/channels/whatsapp) + - Signal: [Signal](/pl/channels/signal) + - BlueBubbles (iMessage): [BlueBubbles](/pl/channels/bluebubbles) + - iMessage (starsze): [iMessage](/pl/channels/imessage) + - Discord: [Discord](/pl/channels/discord) + - Slack: [Slack](/pl/channels/slack) diff --git a/docs/pl/channels/telegram.md b/docs/pl/channels/telegram.md index f66e75357..b58e7f664 100644 --- a/docs/pl/channels/telegram.md +++ b/docs/pl/channels/telegram.md @@ -1,29 +1,29 @@ --- read_when: - - Praca nad funkcjami Telegrama lub webhookami + - Praca nad funkcjami Telegram lub Webhookami summary: Status obsługi bota Telegram, możliwości i konfiguracja title: Telegram x-i18n: - generated_at: "2026-04-05T13:47:40Z" + generated_at: "2026-04-20T09:58:25Z" model: gpt-5.4 provider: openai - source_hash: 39fbf328375fbc5d08ec2e3eed58b19ee0afa102010ecbc02e074a310ced157e + source_hash: b9903fae98bca0c345aa86d5c29015539c375442524a34d26bd28181470b8477 source_path: channels/telegram.md workflow: 15 --- # Telegram (Bot API) -Status: gotowe do użycia na produkcji dla botowych wiadomości prywatnych i grup przez grammY. Długie odpytywanie jest trybem domyślnym; tryb webhooka jest opcjonalny. +Status: gotowe do użycia w środowisku produkcyjnym dla DM botów + grup przez grammY. Domyślnym trybem jest long polling; tryb Webhook jest opcjonalny. - Domyślna polityka DM dla Telegrama to parowanie. + Domyślna polityka DM dla Telegram to parowanie. - - Diagnostyka międzykanałowa i instrukcje naprawy. + + Diagnostyka międzykanałowa i scenariusze naprawy. - + Pełne wzorce konfiguracji kanałów i przykłady. @@ -32,7 +32,7 @@ Status: gotowe do użycia na produkcji dla botowych wiadomości prywatnych i gru - Otwórz Telegram i rozpocznij czat z **@BotFather** (upewnij się, że identyfikator to dokładnie `@BotFather`). + Otwórz Telegram i rozpocznij czat z **@BotFather** (upewnij się, że nazwa użytkownika to dokładnie `@BotFather`). Uruchom `/newbot`, postępuj zgodnie z instrukcjami i zapisz token. @@ -53,12 +53,12 @@ Status: gotowe do użycia na produkcji dla botowych wiadomości prywatnych i gru } ``` - Zmienna env awaryjnie: `TELEGRAM_BOT_TOKEN=...` (tylko konto domyślne). - Telegram **nie** używa `openclaw channels login telegram`; skonfiguruj token w config/env, a następnie uruchom gateway. + Zmienna env jako fallback: `TELEGRAM_BOT_TOKEN=...` (tylko dla konta domyślnego). + Telegram **nie** używa `openclaw channels login telegram`; skonfiguruj token w config/env, a następnie uruchom Gateway. - + ```bash openclaw gateway @@ -76,34 +76,34 @@ openclaw pairing approve telegram -Kolejność rozwiązywania tokena jest zależna od konta. W praktyce wartości z config mają pierwszeństwo przed zmienną env, a `TELEGRAM_BOT_TOKEN` dotyczy tylko konta domyślnego. +Kolejność rozwiązywania tokenu uwzględnia konto. W praktyce wartości z config mają pierwszeństwo przed fallbackiem env, a `TELEGRAM_BOT_TOKEN` ma zastosowanie tylko do konta domyślnego. -## Ustawienia po stronie Telegrama +## Ustawienia po stronie Telegram - - Boty Telegrama domyślnie używają **Trybu prywatności**, który ogranicza, jakie wiadomości grupowe otrzymują. + + Boty Telegram domyślnie działają w **Privacy Mode**, który ogranicza, jakie wiadomości grupowe otrzymują. - Jeśli bot ma widzieć wszystkie wiadomości grupowe, wykonaj jedną z poniższych czynności: + Jeśli bot ma widzieć wszystkie wiadomości grupowe, zrób jedno z poniższych: - wyłącz tryb prywatności przez `/setprivacy`, lub - nadaj botowi uprawnienia administratora grupy. - Po przełączeniu trybu prywatności usuń bota z każdej grupy i dodaj go ponownie, aby Telegram zastosował zmianę. + Po przełączeniu trybu prywatności usuń bota i dodaj go ponownie w każdej grupie, aby Telegram zastosował zmianę. - + Status administratora jest kontrolowany w ustawieniach grupy Telegram. - Boty z uprawnieniami administratora otrzymują wszystkie wiadomości grupowe, co jest przydatne przy zawsze aktywnym zachowaniu w grupie. + Boty z uprawnieniami administratora otrzymują wszystkie wiadomości grupowe, co jest przydatne przy stale aktywnym zachowaniu w grupie. - - `/setjoingroups`, aby zezwolić/zabronić dodawania do grup + - `/setjoingroups`, aby zezwolić lub zabronić dodawania do grup - `/setprivacy` dla zachowania widoczności w grupach @@ -113,30 +113,30 @@ Kolejność rozwiązywania tokena jest zależna od konta. W praktyce wartości z - `channels.telegram.dmPolicy` steruje dostępem do wiadomości prywatnych: + `channels.telegram.dmPolicy` kontroluje dostęp do wiadomości bezpośrednich: - `pairing` (domyślnie) - - `allowlist` (wymaga co najmniej jednego identyfikatora nadawcy w `allowFrom`) + - `allowlist` (wymaga co najmniej jednego ID nadawcy w `allowFrom`) - `open` (wymaga, aby `allowFrom` zawierało `"*"`) - `disabled` - `channels.telegram.allowFrom` akceptuje numeryczne identyfikatory użytkowników Telegrama. Prefiksy `telegram:` / `tg:` są akceptowane i normalizowane. - `dmPolicy: "allowlist"` z pustym `allowFrom` blokuje wszystkie wiadomości prywatne i jest odrzucane przez walidację konfiguracji. - Onboarding akceptuje dane wejściowe `@username` i rozwiązuje je do identyfikatorów numerycznych. - Jeśli zaktualizowano system i konfiguracja zawiera wpisy allowlist `@username`, uruchom `openclaw doctor --fix`, aby je rozwiązać (best-effort; wymaga tokena bota Telegram). - Jeśli wcześniej polegano na plikach allowlist ze storage parowania, `openclaw doctor --fix` może odzyskać wpisy do `channels.telegram.allowFrom` w przepływach allowlist (na przykład gdy `dmPolicy: "allowlist"` nie ma jeszcze jawnych identyfikatorów). + `channels.telegram.allowFrom` akceptuje numeryczne ID użytkowników Telegram. Prefiksy `telegram:` / `tg:` są akceptowane i normalizowane. + `dmPolicy: "allowlist"` z pustym `allowFrom` blokuje wszystkie DM i jest odrzucane przez walidację konfiguracji. + Konfiguracja wymaga wyłącznie numerycznych ID użytkowników. + Jeśli wykonano aktualizację i konfiguracja zawiera wpisy allowlist w postaci `@username`, uruchom `openclaw doctor --fix`, aby je rozwiązać (best-effort; wymaga tokenu bota Telegram). + Jeśli wcześniej polegano na plikach allowlist w pairing-store, `openclaw doctor --fix` może odzyskać wpisy do `channels.telegram.allowFrom` w przepływach allowlist (na przykład gdy `dmPolicy: "allowlist"` nie ma jeszcze jawnych ID). - Dla botów z jednym właścicielem zalecane jest `dmPolicy: "allowlist"` z jawnymi numerycznymi identyfikatorami `allowFrom`, aby polityka dostępu była trwale zapisana w config (zamiast zależeć od wcześniejszych zatwierdzeń parowania). + Dla botów z jednym właścicielem preferuj `dmPolicy: "allowlist"` z jawnymi numerycznymi ID `allowFrom`, aby utrwalić politykę dostępu w konfiguracji (zamiast zależeć od wcześniejszych zatwierdzeń parowania). - Częste nieporozumienie: zatwierdzenie parowania wiadomości prywatnej nie oznacza, że „ten nadawca jest autoryzowany wszędzie”. - Parowanie przyznaje dostęp tylko do wiadomości prywatnych. Autoryzacja nadawcy w grupie nadal pochodzi z jawnych allowlist w konfiguracji. - Jeśli chcesz, aby „po jednokrotnej autoryzacji działały zarówno DM, jak i polecenia grupowe”, dodaj swój numeryczny identyfikator użytkownika Telegram do `channels.telegram.allowFrom`. + Częste nieporozumienie: zatwierdzenie parowania DM nie oznacza „ten nadawca jest autoryzowany wszędzie”. + Parowanie przyznaje dostęp tylko do DM. Autoryzacja nadawców w grupach nadal pochodzi z jawnych allowlist w konfiguracji. + Jeśli chcesz, aby „jestem autoryzowany raz i działają zarówno DM, jak i polecenia w grupie”, umieść swoje numeryczne ID użytkownika Telegram w `channels.telegram.allowFrom`. - ### Jak znaleźć swój identyfikator użytkownika Telegram + ### Jak znaleźć swoje ID użytkownika Telegram - Bezpieczniejsza metoda (bez bota zewnętrznego): + Bezpieczniej (bez bota zewnętrznego): - 1. Wyślij wiadomość prywatną do swojego bota. + 1. Wyślij DM do swojego bota. 2. Uruchom `openclaw logs --follow`. 3. Odczytaj `from.id`. @@ -151,28 +151,28 @@ curl "https://api.telegram.org/bot/getUpdates" - Łącznie stosowane są dwa mechanizmy kontroli: + Stosowane są razem dwa mechanizmy: 1. **Które grupy są dozwolone** (`channels.telegram.groups`) - brak konfiguracji `groups`: - - przy `groupPolicy: "open"`: dowolna grupa może przejść kontrole identyfikatora grupy + - przy `groupPolicy: "open"`: każda grupa może przejść kontrole ID grupy - przy `groupPolicy: "allowlist"` (domyślnie): grupy są blokowane, dopóki nie dodasz wpisów `groups` (lub `"*"`) - - skonfigurowane `groups`: działa jako allowlista (jawne identyfikatory lub `"*"`) + - `groups` skonfigurowane: działa jako allowlist (jawne ID lub `"*"`) 2. **Którzy nadawcy są dozwoleni w grupach** (`channels.telegram.groupPolicy`) - `open` - `allowlist` (domyślnie) - `disabled` - `groupAllowFrom` służy do filtrowania nadawców grupowych. Jeśli nie jest ustawione, Telegram używa awaryjnie `allowFrom`. - Wpisy `groupAllowFrom` powinny być numerycznymi identyfikatorami użytkowników Telegrama (prefiksy `telegram:` / `tg:` są normalizowane). - Nie umieszczaj identyfikatorów czatu grupy lub supergrupy Telegram w `groupAllowFrom`. Ujemne identyfikatory czatu należą do `channels.telegram.groups`. - Wpisy nienumeryczne są ignorowane przy autoryzacji nadawcy. - Granica bezpieczeństwa (`2026.2.25+`): autoryzacja nadawcy grupowego **nie** dziedziczy zatwierdzeń ze storage parowania DM. - Parowanie pozostaje tylko dla DM. Dla grup ustaw `groupAllowFrom` albo `allowFrom` dla konkretnej grupy/tematu. - Jeśli `groupAllowFrom` nie jest ustawione, Telegram używa awaryjnie konfiguracji `allowFrom`, a nie storage parowania. - Praktyczny wzorzec dla botów z jednym właścicielem: ustaw swój identyfikator użytkownika w `channels.telegram.allowFrom`, pozostaw `groupAllowFrom` nieustawione i zezwól na docelowe grupy w `channels.telegram.groups`. - Uwaga wykonawcza: jeśli `channels.telegram` całkowicie nie istnieje, domyślnie środowisko uruchomieniowe działa w trybie fail-closed z `groupPolicy="allowlist"`, chyba że jawnie ustawiono `channels.defaults.groupPolicy`. + `groupAllowFrom` jest używane do filtrowania nadawców w grupach. Jeśli nie jest ustawione, Telegram używa `allowFrom` jako fallbacku. + Wpisy `groupAllowFrom` powinny być numerycznymi ID użytkowników Telegram (`telegram:` / `tg:` są normalizowane). + Nie umieszczaj ID czatów grupowych ani supergrup Telegram w `groupAllowFrom`. Ujemne ID czatów należą do `channels.telegram.groups`. + Wpisy nienumeryczne są ignorowane przy autoryzacji nadawców. + Granica bezpieczeństwa (`2026.2.25+`): autoryzacja nadawców grupowych **nie** dziedziczy zatwierdzeń z pairing-store dla DM. + Parowanie pozostaje tylko dla DM. W przypadku grup ustaw `groupAllowFrom` albo `allowFrom` na poziomie grupy/tematu. + Jeśli `groupAllowFrom` nie jest ustawione, Telegram używa fallbacku do `allowFrom` z konfiguracji, a nie do pairing store. + Praktyczny wzorzec dla botów z jednym właścicielem: ustaw swoje ID użytkownika w `channels.telegram.allowFrom`, pozostaw `groupAllowFrom` nieustawione i zezwól na docelowe grupy w `channels.telegram.groups`. + Uwaga środowiskowa: jeśli `channels.telegram` całkowicie nie istnieje, domyślne zachowanie środowiska to fail-closed `groupPolicy="allowlist"`, chyba że `channels.defaults.groupPolicy` jest ustawione jawnie. Przykład: zezwól dowolnemu członkowi w jednej konkretnej grupie: @@ -191,7 +191,7 @@ curl "https://api.telegram.org/bot/getUpdates" } ``` - Przykład: zezwól tylko określonym użytkownikom w jednej konkretnej grupie: + Przykład: zezwól tylko konkretnym użytkownikom w jednej konkretnej grupie: ```json5 { @@ -209,17 +209,17 @@ curl "https://api.telegram.org/bot/getUpdates" ``` - Częsty błąd: `groupAllowFrom` nie jest allowlistą grup Telegrama. + Częsty błąd: `groupAllowFrom` nie jest allowlistą grup Telegram. - - Ujemne identyfikatory grupy lub supergrupy Telegram, takie jak `-1001234567890`, umieszczaj w `channels.telegram.groups`. - - Identyfikatory użytkowników Telegrama, takie jak `8734062810`, umieszczaj w `groupAllowFrom`, gdy chcesz ograniczyć, które osoby wewnątrz dozwolonej grupy mogą wywoływać bota. + - Umieszczaj ujemne ID grup lub supergrup Telegram, takie jak `-1001234567890`, w `channels.telegram.groups`. + - Umieszczaj ID użytkowników Telegram, takie jak `8734062810`, w `groupAllowFrom`, gdy chcesz ograniczyć, które osoby w dozwolonej grupie mogą uruchamiać bota. - Używaj `groupAllowFrom: ["*"]` tylko wtedy, gdy chcesz, aby dowolny członek dozwolonej grupy mógł rozmawiać z botem. - Odpowiedzi grupowe domyślnie wymagają wzmianki. + Odpowiedzi w grupach domyślnie wymagają wzmianki. Wzmianka może pochodzić z: @@ -233,7 +233,7 @@ curl "https://api.telegram.org/bot/getUpdates" - `/activation always` - `/activation mention` - Aktualizują one wyłącznie stan sesji. Aby zachować ustawienie trwale, użyj konfiguracji. + Aktualizują one tylko stan sesji. Użyj konfiguracji, jeśli chcesz trwałości. Przykład trwałej konfiguracji: @@ -249,63 +249,63 @@ curl "https://api.telegram.org/bot/getUpdates" } ``` - Jak uzyskać identyfikator czatu grupowego: + Jak uzyskać ID czatu grupowego: - - przekaż wiadomość z grupy do `@userinfobot` / `@getidsbot` + - prześlij wiadomość z grupy do `@userinfobot` / `@getidsbot` - albo odczytaj `chat.id` z `openclaw logs --follow` - albo sprawdź `getUpdates` w Bot API -## Zachowanie w czasie działania +## Zachowanie w środowisku uruchomieniowym -- Telegram jest obsługiwany przez proces gateway. -- Routing jest deterministyczny: przychodzące odpowiedzi Telegram wracają do Telegrama (model nie wybiera kanałów). -- Wiadomości przychodzące są normalizowane do wspólnej koperty kanału z metadanymi odpowiedzi i placeholderami mediów. -- Sesje grupowe są izolowane według identyfikatora grupy. Tematy forum dodają `:topic:`, aby utrzymać izolację tematów. -- Wiadomości prywatne mogą zawierać `message_thread_id`; OpenClaw kieruje je z użyciem kluczy sesji świadomych wątków i zachowuje identyfikator wątku dla odpowiedzi. -- Długie odpytywanie używa grammY runner z sekwencjonowaniem per czat/per wątek. Ogólna współbieżność sink runnera używa `agents.defaults.maxConcurrent`. +- Telegram jest obsługiwany przez proces Gateway. +- Routing jest deterministyczny: przychodzące odpowiedzi Telegram wracają do Telegram (model nie wybiera kanałów). +- Wiadomości przychodzące są normalizowane do współdzielonej obwiedni kanału z metadanymi odpowiedzi i placeholderami multimediów. +- Sesje grupowe są izolowane według ID grupy. Tematy forum dodają `:topic:`, aby zachować izolację tematów. +- Wiadomości DM mogą zawierać `message_thread_id`; OpenClaw trasuje je przy użyciu kluczy sesji uwzględniających wątek i zachowuje ID wątku dla odpowiedzi. +- Long polling używa grammY runner z sekwencjonowaniem per chat/per thread. Ogólna współbieżność sink runnera używa `agents.defaults.maxConcurrent`. - Telegram Bot API nie obsługuje potwierdzeń odczytu (`sendReadReceipts` nie ma zastosowania). ## Dokumentacja funkcji - - OpenClaw może przesyłać częściowe odpowiedzi w czasie rzeczywistym: + + OpenClaw może strumieniować częściowe odpowiedzi w czasie rzeczywistym: - - czaty prywatne: wiadomość podglądu + `editMessageText` + - czaty bezpośrednie: wiadomość podglądu + `editMessageText` - grupy/tematy: wiadomość podglądu + `editMessageText` Wymaganie: - - `channels.telegram.streaming` ma wartość `off | partial | block | progress` (domyślnie: `partial`) - - `progress` mapuje się do `partial` w Telegramie (zgodność z nazewnictwem międzykanałowym) - - starsze wartości `channels.telegram.streamMode` i logiczne `streaming` są automatycznie mapowane + - `channels.telegram.streaming` to `off | partial | block | progress` (domyślnie: `partial`) + - `progress` mapuje się do `partial` w Telegram (zgodność z nazewnictwem międzykanałowym) + - starsze wartości `channels.telegram.streamMode` oraz boolean `streaming` są automatycznie mapowane - Dla odpowiedzi zawierających tylko tekst: + Dla odpowiedzi zawierających wyłącznie tekst: - DM: OpenClaw zachowuje tę samą wiadomość podglądu i wykonuje końcową edycję w miejscu (bez drugiej wiadomości) - grupa/temat: OpenClaw zachowuje tę samą wiadomość podglądu i wykonuje końcową edycję w miejscu (bez drugiej wiadomości) - Dla odpowiedzi złożonych (na przykład ładunków mediów) OpenClaw wraca awaryjnie do zwykłego końcowego dostarczenia, a następnie usuwa wiadomość podglądu. + Dla złożonych odpowiedzi (na przykład payloadów multimedialnych) OpenClaw przechodzi do normalnego końcowego dostarczenia, a następnie czyści wiadomość podglądu. - Streaming podglądu jest oddzielny od streamingu blokowego. Gdy streaming blokowy jest jawnie włączony dla Telegrama, OpenClaw pomija strumień podglądu, aby uniknąć podwójnego streamingu. + Strumieniowanie podglądu jest oddzielone od strumieniowania blokowego. Gdy strumieniowanie blokowe jest jawnie włączone dla Telegram, OpenClaw pomija strumień podglądu, aby uniknąć podwójnego strumieniowania. - Jeśli natywny transport szkicu jest niedostępny/odrzucony, OpenClaw automatycznie wraca do `sendMessage` + `editMessageText`. + Jeśli natywny transport szkicu jest niedostępny lub odrzucony, OpenClaw automatycznie przechodzi do `sendMessage` + `editMessageText`. - Strumień rozumowania tylko dla Telegrama: + Strumień rozumowania tylko dla Telegram: - `/reasoning stream` wysyła rozumowanie do podglądu na żywo podczas generowania - końcowa odpowiedź jest wysyłana bez tekstu rozumowania - - Tekst wychodzący używa w Telegramie `parse_mode: "HTML"`. + + Tekst wychodzący używa Telegram `parse_mode: "HTML"`. - - Tekst w stylu Markdown jest renderowany do bezpiecznego dla Telegrama HTML. - - Surowy HTML modelu jest escapowany, aby ograniczyć błędy parsowania Telegrama. + - Tekst w stylu Markdown jest renderowany do bezpiecznego dla Telegram HTML. + - Surowy HTML modelu jest escapowany, aby ograniczyć błędy parsowania Telegram. - Jeśli Telegram odrzuci sparsowany HTML, OpenClaw podejmie ponowną próbę jako zwykły tekst. Podglądy linków są domyślnie włączone i można je wyłączyć przez `channels.telegram.linkPreview: false`. @@ -313,11 +313,11 @@ curl "https://api.telegram.org/bot/getUpdates" - Rejestracja menu poleceń Telegrama jest obsługiwana przy uruchomieniu przez `setMyCommands`. + Rejestracja menu poleceń Telegram jest obsługiwana przy starcie za pomocą `setMyCommands`. - Domyślne ustawienia poleceń natywnych: + Domyślne ustawienia natywnych poleceń: - - `commands.native: "auto"` włącza natywne polecenia dla Telegrama + - `commands.native: "auto"` włącza natywne polecenia dla Telegram Dodawanie niestandardowych wpisów menu poleceń: @@ -326,8 +326,8 @@ curl "https://api.telegram.org/bot/getUpdates" channels: { telegram: { customCommands: [ - { command: "backup", description: "Git backup" }, - { command: "generate", description: "Create an image" }, + { command: "backup", description: "Kopia zapasowa Git" }, + { command: "generate", description: "Utwórz obraz" }, ], }, }, @@ -336,38 +336,38 @@ curl "https://api.telegram.org/bot/getUpdates" Zasady: - - nazwy są normalizowane (usunięcie początkowego `/`, małe litery) + - nazwy są normalizowane (usunięcie wiodącego `/`, małe litery) - prawidłowy wzorzec: `a-z`, `0-9`, `_`, długość `1..32` - polecenia niestandardowe nie mogą nadpisywać poleceń natywnych - konflikty/duplikaty są pomijane i logowane Uwagi: - - polecenia niestandardowe to tylko wpisy menu; nie implementują automatycznie zachowania - - polecenia plugin/Skills nadal mogą działać po wpisaniu, nawet jeśli nie są pokazane w menu Telegrama + - polecenia niestandardowe są tylko wpisami menu; nie implementują automatycznie zachowania + - polecenia plugin/Skills nadal mogą działać po wpisaniu, nawet jeśli nie są pokazane w menu Telegram - Jeśli polecenia natywne są wyłączone, wbudowane są usuwane. Polecenia niestandardowe/plugin nadal mogą zostać zarejestrowane, jeśli są skonfigurowane. + Jeśli natywne polecenia są wyłączone, wbudowane są usuwane. Polecenia niestandardowe/plugin nadal mogą się rejestrować, jeśli są skonfigurowane. Typowe błędy konfiguracji: - - `setMyCommands failed` z `BOT_COMMANDS_TOO_MUCH` oznacza, że menu Telegrama nadal było przepełnione po przycięciu; zmniejsz liczbę poleceń plugin/Skills/niestandardowych lub wyłącz `channels.telegram.commands.native`. + - `setMyCommands failed` z `BOT_COMMANDS_TOO_MUCH` oznacza, że menu Telegram nadal się przepełnia po przycięciu; ogranicz polecenia plugin/Skills/niestandardowe albo wyłącz `channels.telegram.commands.native`. - `setMyCommands failed` z błędami sieci/fetch zwykle oznacza, że wychodzący DNS/HTTPS do `api.telegram.org` jest zablokowany. - ### Polecenia parowania urządzeń (plugin `device-pair`) + ### Polecenia parowania urządzeń (`device-pair` plugin) Gdy plugin `device-pair` jest zainstalowany: 1. `/pair` generuje kod konfiguracji 2. wklej kod w aplikacji iOS - 3. `/pair pending` wyświetla oczekujące żądania (w tym rolę/zakresy) + 3. `/pair pending` wyświetla oczekujące żądania (w tym role/zakresy) 4. zatwierdź żądanie: - `/pair approve ` dla jawnego zatwierdzenia - `/pair approve`, gdy istnieje tylko jedno oczekujące żądanie - `/pair approve latest` dla najnowszego - Kod konfiguracji zawiera krótkotrwały token bootstrap. Wbudowane przekazanie bootstrap utrzymuje token głównego węzła przy `scopes: []`; każdy przekazany token operatora pozostaje ograniczony do `operator.approvals`, `operator.read`, `operator.talk.secrets` i `operator.write`. Kontrole zakresów bootstrap są poprzedzone prefiksem roli, więc ta allowlista operatora spełnia tylko żądania operatora; role nieoperatorskie nadal wymagają zakresów pod własnym prefiksem roli. + Kod konfiguracji zawiera krótkotrwały token bootstrap. Wbudowane przekazanie bootstrap zachowuje podstawowy token Node przy `scopes: []`; każdy przekazany token operatora pozostaje ograniczony do `operator.approvals`, `operator.read`, `operator.talk.secrets` i `operator.write`. Kontrole zakresów bootstrap mają prefiksy ról, więc ta allowlista operatora spełnia tylko żądania operatora; role inne niż operator nadal wymagają zakresów pod własnym prefiksem roli. - Jeśli urządzenie ponowi próbę ze zmienionymi danymi uwierzytelniania (na przykład rola/zakresy/klucz publiczny), poprzednie oczekujące żądanie zostanie zastąpione, a nowe będzie używać innego `requestId`. Uruchom ponownie `/pair pending` przed zatwierdzeniem. + Jeśli urządzenie ponowi próbę ze zmienionymi danymi uwierzytelniania (na przykład rola/zakresy/klucz publiczny), poprzednie oczekujące żądanie zostanie zastąpione, a nowe żądanie użyje innego `requestId`. Ponownie uruchom `/pair pending` przed zatwierdzeniem. Więcej szczegółów: [Parowanie](/pl/channels/pairing#pair-via-telegram-recommended-for-ios). @@ -388,7 +388,7 @@ curl "https://api.telegram.org/bot/getUpdates" } ``` - Nadpisanie dla konta: + Nadpisanie per konto: ```json5 { @@ -423,18 +423,18 @@ curl "https://api.telegram.org/bot/getUpdates" action: "send", channel: "telegram", to: "123456789", - message: "Choose an option:", + message: "Wybierz opcję:", buttons: [ [ - { text: "Yes", callback_data: "yes" }, - { text: "No", callback_data: "no" }, + { text: "Tak", callback_data: "yes" }, + { text: "Nie", callback_data: "no" }, ], - [{ text: "Cancel", callback_data: "cancel" }], + [{ text: "Anuluj", callback_data: "cancel" }], ], } ``` - Kliknięcia callbacków są przekazywane do agenta jako tekst: + Kliknięcia callback są przekazywane do agenta jako tekst: `callback_data: ` @@ -450,7 +450,7 @@ curl "https://api.telegram.org/bot/getUpdates" Akcje wiadomości kanału udostępniają ergonomiczne aliasy (`send`, `react`, `delete`, `edit`, `sticker`, `sticker-search`, `topic-create`). - Przełączniki ograniczeń: + Kontrolki bramkowania: - `channels.telegram.actions.sendMessage` - `channels.telegram.actions.deleteMessage` @@ -458,45 +458,45 @@ curl "https://api.telegram.org/bot/getUpdates" - `channels.telegram.actions.sticker` (domyślnie: wyłączone) Uwaga: `edit` i `topic-create` są obecnie domyślnie włączone i nie mają osobnych przełączników `channels.telegram.actions.*`. - Wysyłki w czasie działania używają aktywnej migawki config/secrets (uruchomienie/przeładowanie), więc ścieżki akcji nie wykonują doraźnego ponownego rozwiązywania SecretRef przy każdym wysłaniu. + Wysyłki w środowisku uruchomieniowym używają aktywnego snapshotu config/sekretów (start/reload), więc ścieżki akcji nie wykonują doraźnego ponownego rozwiązywania SecretRef przy każdym wysłaniu. - Semantyka usuwania reakcji: [/tools/reactions](/tools/reactions) + Semantyka usuwania reakcji: [/tools/reactions](/pl/tools/reactions) - - Telegram obsługuje jawne tagi wątków odpowiedzi w generowanych danych wyjściowych: + + Telegram obsługuje jawne tagi wątkowania odpowiedzi w wygenerowanym wyjściu: - `[[reply_to_current]]` odpowiada na wiadomość wyzwalającą - - `[[reply_to:]]` odpowiada na konkretny identyfikator wiadomości Telegrama + - `[[reply_to:]]` odpowiada na konkretny identyfikator wiadomości Telegram - `channels.telegram.replyToMode` steruje obsługą: + `channels.telegram.replyToMode` kontroluje obsługę: - `off` (domyślnie) - `first` - `all` - Uwaga: `off` wyłącza niejawne wątkowanie odpowiedzi. Jawne tagi `[[reply_to_*]]` są nadal honorowane. + Uwaga: `off` wyłącza niejawne wątkowanie odpowiedzi. Jawne tagi `[[reply_to_*]]` nadal są respektowane. - Supergrupy forum: + Supergrupy z forum: - klucze sesji tematów dodają `:topic:` - - odpowiedzi i wpisywanie kierowane są do wątku tematu + - odpowiedzi i wskaźnik pisania są kierowane do wątku tematu - ścieżka konfiguracji tematu: `channels.telegram.groups..topics.` Przypadek specjalny tematu ogólnego (`threadId=1`): - wysyłanie wiadomości pomija `message_thread_id` (Telegram odrzuca `sendMessage(...thread_id=1)`) - - akcje wpisywania nadal zawierają `message_thread_id` + - akcje pisania nadal zawierają `message_thread_id` - Dziedziczenie tematów: wpisy tematów dziedziczą ustawienia grupy, chyba że zostały nadpisane (`requireMention`, `allowFrom`, `skills`, `systemPrompt`, `enabled`, `groupPolicy`). - `agentId` dotyczy tylko tematów i nie jest dziedziczony z domyślnych ustawień grupy. + Dziedziczenie tematów: wpisy tematów dziedziczą ustawienia grupy, chyba że zostaną nadpisane (`requireMention`, `allowFrom`, `skills`, `systemPrompt`, `enabled`, `groupPolicy`). + `agentId` jest właściwością tylko dla tematów i nie jest dziedziczone z domyślnych ustawień grupy. - **Routing agenta per temat**: Każdy temat może kierować do innego agenta przez ustawienie `agentId` w konfiguracji tematu. Daje to każdemu tematowi własny izolowany obszar roboczy, pamięć i sesję. Przykład: + **Routing agentów per temat**: Każdy temat może kierować do innego agenta przez ustawienie `agentId` w konfiguracji tematu. Daje to każdemu tematowi własny izolowany obszar roboczy, pamięć i sesję. Przykład: ```json5 { @@ -505,8 +505,8 @@ curl "https://api.telegram.org/bot/getUpdates" groups: { "-1001234567890": { topics: { - "1": { agentId: "main" }, // Temat ogólny → główny agent - "3": { agentId: "zu" }, // Temat deweloperski → agent zu + "1": { agentId: "main" }, // Temat ogólny → agent main + "3": { agentId: "zu" }, // Temat dev → agent zu "5": { agentId: "coder" } // Przegląd kodu → agent coder } } @@ -518,7 +518,7 @@ curl "https://api.telegram.org/bot/getUpdates" Każdy temat ma wtedy własny klucz sesji: `agent:zu:telegram:group:-1001234567890:topic:3` - **Trwałe powiązanie tematu ACP**: Tematy forum mogą przypinać sesje harness ACP przez najwyższego poziomu typowane powiązania ACP: + **Trwałe powiązanie ACP z tematem**: Tematy forum mogą przypinać sesje harness ACP przez typowane powiązania ACP najwyższego poziomu: - `bindings[]` z `type: "acp"` i `match.channel: "telegram"` @@ -571,11 +571,11 @@ curl "https://api.telegram.org/bot/getUpdates" Obecnie dotyczy to tematów forum w grupach i supergrupach. - **Powiązane z wątkiem uruchamianie ACP z czatu**: + **Uruchamianie ACP powiązanego z wątkiem z czatu**: - - `/acp spawn --thread here|auto` może powiązać bieżący temat Telegrama z nową sesją ACP. - - Kolejne wiadomości w temacie są kierowane bezpośrednio do powiązanej sesji ACP (bez potrzeby użycia `/acp steer`). - - OpenClaw przypina w temacie wiadomość potwierdzającą uruchomienie po pomyślnym powiązaniu. + - `/acp spawn --thread here|auto` może powiązać bieżący temat Telegram z nową sesją ACP. + - Kolejne wiadomości w temacie są kierowane bezpośrednio do powiązanej sesji ACP (bez wymaganego `/acp steer`). + - OpenClaw przypina w temacie wiadomość potwierdzającą uruchomienie po udanym powiązaniu. - Wymaga `channels.telegram.threadBindings.spawnAcpSessions=true`. Kontekst szablonu obejmuje: @@ -585,7 +585,7 @@ curl "https://api.telegram.org/bot/getUpdates" Zachowanie wątków DM: - - czaty prywatne z `message_thread_id` zachowują routing DM, ale używają kluczy sesji i celów odpowiedzi świadomych wątków. + - prywatne czaty z `message_thread_id` zachowują routing DM, ale używają kluczy sesji i celów odpowiedzi uwzględniających wątek. @@ -595,7 +595,7 @@ curl "https://api.telegram.org/bot/getUpdates" Telegram rozróżnia notatki głosowe i pliki audio. - domyślnie: zachowanie pliku audio - - tag `[[audio_as_voice]]` w odpowiedzi agenta wymusza wysłanie jako notatka głosowa + - tag `[[audio_as_voice]]` w odpowiedzi agenta wymusza wysłanie jako notatki głosowej Przykład akcji wiadomości: @@ -629,7 +629,7 @@ curl "https://api.telegram.org/bot/getUpdates" ### Naklejki - Obsługa naklejek przychodzących: + Obsługa przychodzących naklejek: - statyczne WEBP: pobierane i przetwarzane (placeholder ``) - animowane TGS: pomijane @@ -647,7 +647,7 @@ curl "https://api.telegram.org/bot/getUpdates" - `~/.openclaw/telegram/sticker-cache.json` - Naklejki są opisywane jednokrotnie (gdy to możliwe) i cache’owane, aby ograniczyć powtarzane wywołania vision. + Naklejki są opisywane tylko raz (gdy to możliwe) i cachowane, aby ograniczyć powtarzane wywołania vision. Włącz akcje naklejek: @@ -680,7 +680,7 @@ curl "https://api.telegram.org/bot/getUpdates" { action: "sticker-search", channel: "telegram", - query: "cat waving", + query: "machający kot", limit: 5, } ``` @@ -688,11 +688,11 @@ curl "https://api.telegram.org/bot/getUpdates" - Reakcje Telegrama docierają jako aktualizacje `message_reaction` (oddzielnie od ładunków wiadomości). + Reakcje Telegram przychodzą jako aktualizacje `message_reaction` (oddzielnie od payloadów wiadomości). Gdy są włączone, OpenClaw umieszcza w kolejce zdarzenia systemowe, takie jak: - - `Telegram reaction added: 👍 by Alice (@alice) on msg 42` + - `Dodano reakcję Telegram: 👍 przez Alice (@alice) do wiadomości 42` Konfiguracja: @@ -701,25 +701,25 @@ curl "https://api.telegram.org/bot/getUpdates" Uwagi: - - `own` oznacza reakcje użytkowników tylko na wiadomości wysłane przez bota (best-effort przez cache wysłanych wiadomości). - - Zdarzenia reakcji nadal respektują kontrolę dostępu Telegrama (`dmPolicy`, `allowFrom`, `groupPolicy`, `groupAllowFrom`); nieautoryzowani nadawcy są odrzucani. + - `own` oznacza tylko reakcje użytkowników na wiadomości wysłane przez bota (best-effort przez cache wysłanych wiadomości). + - Zdarzenia reakcji nadal respektują mechanizmy kontroli dostępu Telegram (`dmPolicy`, `allowFrom`, `groupPolicy`, `groupAllowFrom`); nieautoryzowani nadawcy są odrzucani. - Telegram nie udostępnia identyfikatorów wątków w aktualizacjach reakcji. - - grupy niebędące forum są kierowane do sesji czatu grupowego - - grupy forum są kierowane do sesji ogólnego tematu grupy (`:topic:1`), a nie do dokładnego tematu źródłowego + - grupy bez forum są kierowane do sesji czatu grupowego + - grupy z forum są kierowane do sesji ogólnego tematu grupy (`:topic:1`), a nie do dokładnego tematu źródłowego - `allowed_updates` dla odpytywania/webhooka automatycznie obejmuje `message_reaction`. + `allowed_updates` dla polling/Webhook automatycznie zawiera `message_reaction`. - - `ackReaction` wysyła emoji potwierdzenia, gdy OpenClaw przetwarza wiadomość przychodzącą. + + `ackReaction` wysyła emoji potwierdzenia, gdy OpenClaw przetwarza przychodzącą wiadomość. Kolejność rozwiązywania: - `channels.telegram.accounts..ackReaction` - `channels.telegram.ackReaction` - `messages.ackReaction` - - awaryjnie emoji tożsamości agenta (`agents.list[].identity.emoji`, w przeciwnym razie "👀") + - fallback do emoji tożsamości agenta (`agents.list[].identity.emoji`, w przeciwnym razie "👀") Uwagi: @@ -728,15 +728,15 @@ curl "https://api.telegram.org/bot/getUpdates" - + Zapisy konfiguracji kanału są domyślnie włączone (`configWrites !== false`). Zapisy wyzwalane przez Telegram obejmują: - - zdarzenia migracji grupy (`migrate_to_chat_id`) w celu aktualizacji `channels.telegram.groups` + - zdarzenia migracji grupy (`migrate_to_chat_id`) do aktualizacji `channels.telegram.groups` - `/config set` i `/config unset` (wymaga włączenia poleceń) - Wyłączanie: + Wyłącz: ```json5 { @@ -750,45 +750,45 @@ curl "https://api.telegram.org/bot/getUpdates" - - Domyślnie: długie odpytywanie. + + Domyślnie: long polling. - Tryb webhooka: + Tryb Webhook: - ustaw `channels.telegram.webhookUrl` - - ustaw `channels.telegram.webhookSecret` (wymagane, gdy ustawiono webhook URL) + - ustaw `channels.telegram.webhookSecret` (wymagane, gdy ustawiono adres URL Webhook) - opcjonalnie `channels.telegram.webhookPath` (domyślnie `/telegram-webhook`) - opcjonalnie `channels.telegram.webhookHost` (domyślnie `127.0.0.1`) - opcjonalnie `channels.telegram.webhookPort` (domyślnie `8787`) - Domyślny lokalny nasłuch dla trybu webhooka jest powiązany z `127.0.0.1:8787`. + Domyślny lokalny listener dla trybu Webhook nasłuchuje na `127.0.0.1:8787`. - Jeśli publiczny endpoint jest inny, umieść przed nim reverse proxy i wskaż `webhookUrl` na publiczny URL. + Jeśli publiczny punkt końcowy jest inny, umieść przed nim reverse proxy i skieruj `webhookUrl` na publiczny adres URL. Ustaw `webhookHost` (na przykład `0.0.0.0`), gdy celowo potrzebujesz zewnętrznego ruchu przychodzącego. - Domyślna wartość `channels.telegram.textChunkLimit` to 4000. - - `channels.telegram.chunkMode="newline"` preferuje granice akapitów (puste linie) przed podziałem według długości. - - `channels.telegram.mediaMaxMb` (domyślnie 100) ogranicza rozmiar mediów przychodzących i wychodzących Telegrama. - - `channels.telegram.timeoutSeconds` nadpisuje limit czasu klienta Telegram API (jeśli nieustawione, obowiązuje domyślna wartość grammY). - - historia kontekstu grupy używa `channels.telegram.historyLimit` lub `messages.groupChat.historyLimit` (domyślnie 50); `0` wyłącza. - - dodatkowy kontekst odpowiedzi/cytatu/przekazania jest obecnie przekazywany tak, jak został odebrany. - - allowlisty Telegrama głównie kontrolują, kto może wywołać agenta, a nie stanowią pełnej granicy redakcji dodatkowego kontekstu. + - `channels.telegram.chunkMode="newline"` preferuje granice akapitów (puste linie) przed dzieleniem według długości. + - `channels.telegram.mediaMaxMb` (domyślnie 100) ogranicza rozmiar przychodzących i wychodzących multimediów Telegram. + - `channels.telegram.timeoutSeconds` nadpisuje limit czasu klienta Telegram API (jeśli nie jest ustawione, obowiązuje domyślna wartość grammY). + - historia kontekstu grupy używa `channels.telegram.historyLimit` lub `messages.groupChat.historyLimit` (domyślnie 50); `0` wyłącza tę funkcję. + - uzupełniający kontekst odpowiedzi/cytatu/przekazania jest obecnie przekazywany w otrzymanej postaci. + - allowlisty Telegram przede wszystkim kontrolują, kto może wywołać agenta, a nie stanowią pełnej granicy redakcji uzupełniającego kontekstu. - kontrolki historii DM: - `channels.telegram.dmHistoryLimit` - `channels.telegram.dms[""].historyLimit` - - konfiguracja `channels.telegram.retry` dotyczy pomocników wysyłania Telegrama (CLI/tools/actions) dla odzyskiwalnych błędów wychodzącego API. + - konfiguracja `channels.telegram.retry` ma zastosowanie do helperów wysyłania Telegram (CLI/narzędzia/akcje) dla odzyskiwalnych błędów wychodzących API. - Cel wysyłki CLI może być numerycznym identyfikatorem czatu lub nazwą użytkownika: + Cel wysyłania CLI może być numerycznym ID czatu albo nazwą użytkownika: ```bash openclaw message send --channel telegram --target 123456789 --message "hi" openclaw message send --channel telegram --target @name --message "hi" ``` - Ankiety Telegrama używają `openclaw message poll` i obsługują tematy forum: + Polling Telegram używa `openclaw message poll` i obsługuje tematy forum: ```bash openclaw message poll --channel telegram --target 123456789 \ @@ -798,79 +798,79 @@ openclaw message poll --channel telegram --target -1001234567890:topic:42 \ --poll-duration-seconds 300 --poll-public ``` - Flagi ankiet tylko dla Telegrama: + Flagi poll tylko dla Telegram: - `--poll-duration-seconds` (5-600) - `--poll-anonymous` - `--poll-public` - `--thread-id` dla tematów forum (lub użyj celu `:topic:`) - Wysyłka Telegrama obsługuje także: + Wysyłanie Telegram obsługuje także: - - `--buttons` dla klawiatur inline, gdy `channels.telegram.capabilities.inlineButtons` zezwala na tę powierzchnię - - `--force-document`, aby wysyłać obrazy i GIF-y jako dokumenty zamiast skompresowanych zdjęć lub przesyłek animowanych mediów + - `--buttons` dla klawiatur inline, gdy pozwala na to `channels.telegram.capabilities.inlineButtons` + - `--force-document`, aby wysyłać wychodzące obrazy i GIF-y jako dokumenty zamiast skompresowanych zdjęć lub przesyłek animowanych multimediów - Ograniczenia akcji: + Bramy akcji: - - `channels.telegram.actions.sendMessage=false` wyłącza wychodzące wiadomości Telegrama, w tym ankiety - - `channels.telegram.actions.poll=false` wyłącza tworzenie ankiet Telegrama, pozostawiając zwykłe wysyłanie włączone + - `channels.telegram.actions.sendMessage=false` wyłącza wychodzące wiadomości Telegram, w tym ankiety + - `channels.telegram.actions.poll=false` wyłącza tworzenie ankiet Telegram, pozostawiając włączone zwykłe wysyłanie - - Telegram obsługuje zatwierdzenia exec w wiadomościach prywatnych zatwierdzających i opcjonalnie może publikować prośby o zatwierdzenie w źródłowym czacie lub temacie. + + Telegram obsługuje zatwierdzenia exec w DM osób zatwierdzających i może opcjonalnie publikować prompty zatwierdzenia w źródłowym czacie lub temacie. Ścieżka konfiguracji: - `channels.telegram.execApprovals.enabled` - - `channels.telegram.execApprovals.approvers` (opcjonalnie; awaryjnie używa numerycznych identyfikatorów właściciela wywnioskowanych z `allowFrom` oraz bezpośredniego `defaultTo`, gdy to możliwe) + - `channels.telegram.execApprovals.approvers` (opcjonalne; fallback do numerycznych ID właścicieli wywnioskowanych z `allowFrom` i bezpośredniego `defaultTo`, gdy to możliwe) - `channels.telegram.execApprovals.target` (`dm` | `channel` | `both`, domyślnie: `dm`) - `agentFilter`, `sessionFilter` - Zatwierdzający muszą być numerycznymi identyfikatorami użytkowników Telegrama. Telegram automatycznie włącza natywne zatwierdzenia exec, gdy `enabled` nie jest ustawione lub ma wartość `"auto"` i można rozwiązać co najmniej jednego zatwierdzającego, albo z `execApprovals.approvers`, albo z numerycznej konfiguracji właściciela konta (`allowFrom` i bezpośrednie `defaultTo` dla wiadomości prywatnych). Ustaw `enabled: false`, aby jawnie wyłączyć Telegram jako natywnego klienta zatwierdzania. W przeciwnym razie żądania zatwierdzenia wracają awaryjnie do innych skonfigurowanych tras zatwierdzania albo do polityki awaryjnej zatwierdzeń exec. + Osoby zatwierdzające muszą mieć numeryczne ID użytkowników Telegram. Telegram automatycznie włącza natywne zatwierdzenia exec, gdy `enabled` nie jest ustawione albo ma wartość `"auto"` i można rozwiązać co najmniej jedną osobę zatwierdzającą — albo z `execApprovals.approvers`, albo z konfiguracji numerycznego właściciela konta (`allowFrom` i `defaultTo` dla wiadomości bezpośrednich). Ustaw `enabled: false`, aby jawnie wyłączyć Telegram jako natywnego klienta zatwierdzania. W przeciwnym razie żądania zatwierdzenia przechodzą do innych skonfigurowanych ścieżek zatwierdzania albo do polityki fallback dla zatwierdzeń exec. - Telegram renderuje także współdzielone przyciski zatwierdzania używane przez inne kanały czatu. Natywny adapter Telegrama głównie dodaje routing wiadomości prywatnych zatwierdzających, fan-out kanału/tematu oraz wskazówki wpisywania przed dostarczeniem. - Gdy te przyciski są obecne, stanowią one główne UX zatwierdzania; OpenClaw + Telegram renderuje także współdzielone przyciski zatwierdzania używane przez inne kanały czatu. Natywny adapter Telegram głównie dodaje routing DM dla osób zatwierdzających, fanout kanału/tematu oraz wskazówki pisania przed dostarczeniem. + Gdy te przyciski są obecne, stanowią główny UX zatwierdzania; OpenClaw powinien dołączać ręczne polecenie `/approve` tylko wtedy, gdy wynik narzędzia mówi, - że zatwierdzenia na czacie są niedostępne lub ręczne zatwierdzenie jest jedyną ścieżką. + że zatwierdzenia w czacie są niedostępne albo ręczne zatwierdzenie jest jedyną ścieżką. Zasady dostarczania: - - `target: "dm"` wysyła prośby o zatwierdzenie tylko do rozwiązanych wiadomości prywatnych zatwierdzających - - `target: "channel"` odsyła prośbę do źródłowego czatu/tematu Telegrama - - `target: "both"` wysyła do wiadomości prywatnych zatwierdzających i do źródłowego czatu/tematu + - `target: "dm"` wysyła prompty zatwierdzenia tylko do rozwiązanych DM osób zatwierdzających + - `target: "channel"` wysyła prompt z powrotem do źródłowego czatu/tematu Telegram + - `target: "both"` wysyła do DM osób zatwierdzających i do źródłowego czatu/tematu - Tylko rozwiązani zatwierdzający mogą zatwierdzać lub odrzucać. Osoby niebędące zatwierdzającymi nie mogą używać `/approve` ani przycisków zatwierdzania Telegrama. + Tylko rozwiązane osoby zatwierdzające mogą zatwierdzać lub odrzucać. Osoby niezatwierdzające nie mogą używać `/approve` ani przycisków zatwierdzania Telegram. Zachowanie rozwiązywania zatwierdzeń: - - Identyfikatory z prefiksem `plugin:` są zawsze rozwiązywane przez zatwierdzenia pluginów. - - Inne identyfikatory najpierw próbują `exec.approval.resolve`. - - Jeśli Telegram jest także autoryzowany do zatwierdzeń pluginów i gateway zwraca, - że zatwierdzenie exec jest nieznane lub wygasłe, Telegram podejmuje jedną ponowną próbę przez + - ID z prefiksem `plugin:` są zawsze rozwiązywane przez zatwierdzenia plugin. + - Inne ID najpierw próbują `exec.approval.resolve`. + - Jeśli Telegram jest również autoryzowany do zatwierdzeń plugin, a Gateway zgłasza, że + zatwierdzenie exec jest nieznane lub wygasłe, Telegram ponawia próbę raz przez `plugin.approval.resolve`. - - Rzeczywiste odrzucenia/błędy zatwierdzeń exec nie przechodzą po cichu do rozwiązywania - zatwierdzeń pluginów. + - Rzeczywiste odmowy/błędy zatwierdzeń exec nie przechodzą po cichu do rozwiązywania + zatwierdzeń plugin. - Dostarczenie do kanału pokazuje tekst polecenia na czacie, więc włączaj `channel` lub `both` tylko w zaufanych grupach/tematach. Gdy prośba trafia do tematu forum, OpenClaw zachowuje temat zarówno dla prośby o zatwierdzenie, jak i działań po zatwierdzeniu. Zatwierdzenia exec wygasają domyślnie po 30 minutach. + Dostarczanie do kanału pokazuje tekst polecenia na czacie, więc włączaj `channel` lub `both` tylko w zaufanych grupach/tematach. Gdy prompt trafia do tematu forum, OpenClaw zachowuje temat zarówno dla promptu zatwierdzenia, jak i dla dalszych działań po zatwierdzeniu. Zatwierdzenia exec domyślnie wygasają po 30 minutach. - Przyciski zatwierdzania inline zależą też od tego, czy `channels.telegram.capabilities.inlineButtons` zezwala na docelową powierzchnię (`dm`, `group` lub `all`). + Przyciski zatwierdzania inline zależą także od tego, czy `channels.telegram.capabilities.inlineButtons` pozwala na docelową powierzchnię (`dm`, `group` lub `all`). - Powiązana dokumentacja: [Zatwierdzenia exec](/tools/exec-approvals) + Powiązana dokumentacja: [Exec approvals](/pl/tools/exec-approvals) ## Kontrola odpowiedzi na błędy -Gdy agent napotka błąd dostarczenia lub dostawcy, Telegram może albo odpowiedzieć tekstem błędu, albo go ukryć. Dwa klucze konfiguracyjne sterują tym zachowaniem: +Gdy agent napotka błąd dostarczenia lub dostawcy, Telegram może odpowiedzieć tekstem błędu albo go ukryć. Dwa klucze konfiguracji sterują tym zachowaniem: -| Key | Values | Default | Description | -| ----------------------------------- | ----------------- | ------- | ----------------------------------------------------------------------------------------------- | -| `channels.telegram.errorPolicy` | `reply`, `silent` | `reply` | `reply` wysyła przyjazny komunikat o błędzie na czat. `silent` całkowicie wycisza odpowiedzi z błędami. | -| `channels.telegram.errorCooldownMs` | number (ms) | `60000` | Minimalny czas między odpowiedziami z błędami na tym samym czacie. Zapobiega spamowi błędów podczas awarii. | +| Klucz | Wartości | Domyślnie | Opis | +| ----------------------------------- | ----------------- | --------- | ---------------------------------------------------------------------------------------------- | +| `channels.telegram.errorPolicy` | `reply`, `silent` | `reply` | `reply` wysyła przyjazny komunikat o błędzie do czatu. `silent` całkowicie wycisza odpowiedzi z błędem. | +| `channels.telegram.errorCooldownMs` | liczba (ms) | `60000` | Minimalny czas między odpowiedziami z błędem do tego samego czatu. Zapobiega spamowi błędami podczas awarii. | -Obsługiwane są nadpisania per konto, per grupa i per temat (to samo dziedziczenie co dla innych kluczy konfiguracji Telegrama). +Obsługiwane są nadpisania per konto, per grupa i per temat (to samo dziedziczenie co dla innych kluczy konfiguracji Telegram). ```json5 { @@ -880,7 +880,7 @@ Obsługiwane są nadpisania per konto, per grupa i per temat (to samo dziedzicze errorCooldownMs: 120000, groups: { "-1001234567890": { - errorPolicy: "silent", // ukryj błędy w tej grupie + errorPolicy: "silent", // wycisz błędy w tej grupie }, }, }, @@ -893,38 +893,38 @@ Obsługiwane są nadpisania per konto, per grupa i per temat (to samo dziedzicze - - Jeśli `requireMention=false`, tryb prywatności Telegrama musi zezwalać na pełną widoczność. - - BotFather: `/setprivacy` -> Disable - - następnie usuń bota z grupy i dodaj go ponownie + - Jeśli `requireMention=false`, tryb prywatności Telegram musi pozwalać na pełną widoczność. + - BotFather: `/setprivacy` -> Wyłącz + - następnie usuń bota i dodaj go ponownie do grupy - `openclaw channels status` ostrzega, gdy konfiguracja oczekuje wiadomości grupowych bez wzmianki. - - `openclaw channels status --probe` może sprawdzać jawne numeryczne identyfikatory grup; członkostwa dla wildcard `"*"` nie da się sprawdzić sondą. + - `openclaw channels status --probe` może sprawdzać jawne numeryczne ID grup; symbol wieloznaczny `"*"` nie może być sprawdzany pod kątem członkostwa. - szybki test sesji: `/activation always`. - - gdy istnieje `channels.telegram.groups`, grupa musi być wymieniona (lub zawierać `"*"`) + - gdy istnieje `channels.telegram.groups`, grupa musi być wymieniona (lub musi zawierać `"*"`) - zweryfikuj członkostwo bota w grupie - - przejrzyj logi: `openclaw logs --follow`, aby sprawdzić powody pominięcia + - sprawdź logi: `openclaw logs --follow` pod kątem przyczyn pomijania - + - - autoryzuj tożsamość swojego nadawcy (parowanie i/lub numeryczne `allowFrom`) + - autoryzuj tożsamość nadawcy (parowanie i/lub numeryczne `allowFrom`) - autoryzacja poleceń nadal obowiązuje, nawet gdy polityka grupy to `open` - - `setMyCommands failed` z `BOT_COMMANDS_TOO_MUCH` oznacza, że natywne menu ma zbyt wiele wpisów; zmniejsz liczbę poleceń plugin/Skills/niestandardowych lub wyłącz natywne menu + - `setMyCommands failed` z `BOT_COMMANDS_TOO_MUCH` oznacza, że natywne menu ma zbyt wiele wpisów; ogranicz polecenia plugin/Skills/niestandardowe albo wyłącz natywne menu - `setMyCommands failed` z błędami sieci/fetch zwykle wskazuje na problemy z osiągalnością DNS/HTTPS do `api.telegram.org` - + - - Node 22+ + niestandardowy fetch/proxy mogą wywoływać natychmiastowe przerywanie, jeśli typy AbortSignal się nie zgadzają. - - Niektóre hosty najpierw rozwiązują `api.telegram.org` do IPv6; uszkodzony ruch wychodzący IPv6 może powodować sporadyczne błędy Telegram API. - - Jeśli logi zawierają `TypeError: fetch failed` lub `Network request for 'getUpdates' failed!`, OpenClaw teraz ponawia te operacje jako odzyskiwalne błędy sieciowe. - - Na hostach VPS z niestabilnym bezpośrednim ruchem wychodzącym/TLS kieruj wywołania Telegram API przez `channels.telegram.proxy`: + - Node 22+ + niestandardowy fetch/proxy mogą wywoływać natychmiastowe przerwanie, jeśli typy AbortSignal nie są zgodne. + - Niektóre hosty najpierw rozwiązują `api.telegram.org` do IPv6; uszkodzony wychodzący IPv6 może powodować sporadyczne błędy Telegram API. + - Jeśli logi zawierają `TypeError: fetch failed` albo `Network request for 'getUpdates' failed!`, OpenClaw teraz ponawia je jako odzyskiwalne błędy sieciowe. + - Na hostach VPS z niestabilnym bezpośrednim wyjściem/TLS kieruj wywołania Telegram API przez `channels.telegram.proxy`: ```yaml channels: @@ -932,8 +932,8 @@ channels: proxy: socks5://:@proxy-host:1080 ``` - - Node 22+ domyślnie używa `autoSelectFamily=true` (z wyjątkiem WSL2) oraz `dnsResultOrder=ipv4first`. - - Jeśli host to WSL2 lub jawnie działa lepiej wyłącznie z IPv4, wymuś wybór rodziny: + - Node 22+ domyślnie używa `autoSelectFamily=true` (z wyjątkiem WSL2) i `dnsResultOrder=ipv4first`. + - Jeśli host to WSL2 albo jawnie działa lepiej tylko z IPv4, wymuś wybór rodziny: ```yaml channels: @@ -943,10 +943,10 @@ channels: ``` - Odpowiedzi z zakresu benchmarkowego RFC 2544 (`198.18.0.0/15`) są już domyślnie dozwolone - dla pobierania mediów Telegrama. Jeśli zaufany fake-IP lub - transparent proxy przepisuje `api.telegram.org` na inny - prywatny/wewnętrzny/specjalnego przeznaczenia adres podczas pobierania mediów, możesz - włączyć obejście tylko dla Telegrama: + dla pobrań multimediów Telegram. Jeśli zaufany fałszywy IP lub + transparentne proxy przepisuje `api.telegram.org` na inny + prywatny/wewnętrzny/adres specjalnego przeznaczenia podczas pobierania multimediów, możesz + włączyć obejście tylko dla Telegram: ```yaml channels: @@ -955,17 +955,16 @@ channels: dangerouslyAllowPrivateNetwork: true ``` - - To samo opt-in jest dostępne per konto pod + - To samo ustawienie opt-in jest dostępne per konto w `channels.telegram.accounts..network.dangerouslyAllowPrivateNetwork`. - - Jeśli proxy rozwiązuje hosty mediów Telegrama na `198.18.x.x`, najpierw pozostaw - niebezpieczną flagę wyłączoną. Media Telegrama już domyślnie zezwalają na zakres benchmarkowy RFC 2544. + - Jeśli proxy rozwiązuje hosty multimediów Telegram do `198.18.x.x`, najpierw pozostaw + niebezpieczną flagę wyłączoną. Multimedia Telegram już domyślnie dopuszczają zakres benchmarkowy RFC 2544. - `channels.telegram.network.dangerouslyAllowPrivateNetwork` osłabia ochronę - Telegram media SSRF. Używaj tego tylko w zaufanych środowiskach proxy - kontrolowanych przez operatora, takich jak routing fake-IP w Clash, Mihomo lub Surge, - gdy syntetyzują prywatne lub specjalnego przeznaczenia odpowiedzi poza zakresem benchmarkowym - RFC 2544. W przypadku normalnego publicznego dostępu do Telegrama przez internet pozostaw tę opcję wyłączoną. + `channels.telegram.network.dangerouslyAllowPrivateNetwork` osłabia ochronę Telegram + przed SSRF w multimediach. Używaj tego tylko w zaufanych środowiskach proxy kontrolowanych przez operatora, + takich jak fake-IP routing w Clash, Mihomo lub Surge, gdy syntetyzują one + odpowiedzi prywatne lub specjalnego przeznaczenia poza zakresem benchmarkowym RFC 2544. Dla zwykłego publicznego dostępu do Telegram przez internet pozostaw tę opcję wyłączoną. - Nadpisania przez zmienne środowiskowe (tymczasowe): @@ -982,87 +981,87 @@ dig +short api.telegram.org AAAA -Więcej pomocy: [Rozwiązywanie problemów z kanałami](/channels/troubleshooting). +Więcej pomocy: [Rozwiązywanie problemów z kanałami](/pl/channels/troubleshooting). -## Wskaźniki do referencji konfiguracji Telegrama +## Wskaźniki do dokumentacji referencyjnej konfiguracji Telegram -Główna referencja: +Główna dokumentacja referencyjna: - `channels.telegram.enabled`: włącz/wyłącz uruchamianie kanału. - `channels.telegram.botToken`: token bota (BotFather). -- `channels.telegram.tokenFile`: odczyt tokena ze ścieżki do zwykłego pliku. Linki symboliczne są odrzucane. +- `channels.telegram.tokenFile`: odczytaj token ze ścieżki do zwykłego pliku. Dowiązania symboliczne są odrzucane. - `channels.telegram.dmPolicy`: `pairing | allowlist | open | disabled` (domyślnie: pairing). -- `channels.telegram.allowFrom`: allowlista DM (numeryczne identyfikatory użytkowników Telegrama). `allowlist` wymaga co najmniej jednego identyfikatora nadawcy. `open` wymaga `"*"`. `openclaw doctor --fix` może rozwiązać starsze wpisy `@username` do identyfikatorów i może odzyskać wpisy allowlist z plików storage parowania w przepływach migracji allowlist. -- `channels.telegram.actions.poll`: włącz lub wyłącz tworzenie ankiet Telegrama (domyślnie: włączone; nadal wymaga `sendMessage`). -- `channels.telegram.defaultTo`: domyślny cel Telegrama używany przez CLI `--deliver`, gdy nie podano jawnego `--reply-to`. +- `channels.telegram.allowFrom`: allowlista DM (numeryczne ID użytkowników Telegram). `allowlist` wymaga co najmniej jednego ID nadawcy. `open` wymaga `"*"`. `openclaw doctor --fix` może rozwiązać starsze wpisy `@username` do ID i może odzyskać wpisy allowlist z plików pairing-store w przepływach migracji allowlist. +- `channels.telegram.actions.poll`: włącz lub wyłącz tworzenie ankiet Telegram (domyślnie: włączone; nadal wymaga `sendMessage`). +- `channels.telegram.defaultTo`: domyślny cel Telegram używany przez CLI `--deliver`, gdy nie podano jawnego `--reply-to`. - `channels.telegram.groupPolicy`: `open | allowlist | disabled` (domyślnie: allowlist). -- `channels.telegram.groupAllowFrom`: allowlista nadawców grupowych (numeryczne identyfikatory użytkowników Telegrama). `openclaw doctor --fix` może rozwiązać starsze wpisy `@username` do identyfikatorów. Wpisy nienumeryczne są ignorowane przy autoryzacji. Autoryzacja grupowa nie używa awaryjnego odwołania do storage parowania DM (`2026.2.25+`). -- Priorytet wielu kont: +- `channels.telegram.groupAllowFrom`: allowlista nadawców grupowych (numeryczne ID użytkowników Telegram). `openclaw doctor --fix` może rozwiązać starsze wpisy `@username` do ID. Wpisy nienumeryczne są ignorowane podczas autoryzacji. Autoryzacja grupowa nie używa fallbacku pairing-store dla DM (`2026.2.25+`). +- Priorytet dla wielu kont: - Gdy skonfigurowano dwa lub więcej identyfikatorów kont, ustaw `channels.telegram.defaultAccount` (lub uwzględnij `channels.telegram.accounts.default`), aby jawnie określić domyślny routing. - - Jeśli nie ustawiono żadnej z tych wartości, OpenClaw awaryjnie używa pierwszego znormalizowanego identyfikatora konta, a `openclaw doctor` wyświetla ostrzeżenie. + - Jeśli nie ustawiono żadnego z nich, OpenClaw używa fallbacku do pierwszego znormalizowanego ID konta, a `openclaw doctor` wyświetla ostrzeżenie. - `channels.telegram.accounts.default.allowFrom` i `channels.telegram.accounts.default.groupAllowFrom` mają zastosowanie tylko do konta `default`. - Nazwane konta dziedziczą `channels.telegram.allowFrom` i `channels.telegram.groupAllowFrom`, gdy wartości na poziomie konta nie są ustawione. - Nazwane konta nie dziedziczą `channels.telegram.accounts.default.allowFrom` / `groupAllowFrom`. -- `channels.telegram.groups`: domyślne ustawienia per grupa + allowlista (użyj `"*"` dla ustawień globalnych). - - `channels.telegram.groups..groupPolicy`: nadpisanie `groupPolicy` per grupa (`open | allowlist | disabled`). - - `channels.telegram.groups..requireMention`: domyślna blokada oparta na wzmiance. - - `channels.telegram.groups..skills`: filtr Skills (pominięcie = wszystkie Skills, puste = brak). +- `channels.telegram.groups`: ustawienia domyślne per grupa + allowlista (użyj `"*"` dla globalnych ustawień domyślnych). + - `channels.telegram.groups..groupPolicy`: nadpisanie per grupa dla groupPolicy (`open | allowlist | disabled`). + - `channels.telegram.groups..requireMention`: domyślna bramka wzmianki. + - `channels.telegram.groups..skills`: filtr Skills (pominięte = wszystkie Skills, puste = brak). - `channels.telegram.groups..allowFrom`: nadpisanie allowlisty nadawców per grupa. - `channels.telegram.groups..systemPrompt`: dodatkowy system prompt dla grupy. - `channels.telegram.groups..enabled`: wyłącza grupę, gdy ma wartość `false`. - - `channels.telegram.groups..topics..*`: nadpisania per temat (pola grupy + `agentId` tylko dla tematów). - - `channels.telegram.groups..topics..agentId`: kieruje ten temat do konkretnego agenta (nadpisuje routing na poziomie grupy i powiązań). -- `channels.telegram.groups..topics..groupPolicy`: nadpisanie `groupPolicy` per temat (`open | allowlist | disabled`). -- `channels.telegram.groups..topics..requireMention`: nadpisanie blokady wzmianki per temat. -- najwyższego poziomu `bindings[]` z `type: "acp"` i kanonicznym identyfikatorem tematu `chatId:topic:topicId` w `match.peer.id`: pola trwałego powiązania tematu ACP (zobacz [Agenci ACP](/tools/acp-agents#channel-specific-settings)). -- `channels.telegram.direct..topics..agentId`: kieruje tematy DM do konkretnego agenta (to samo zachowanie co w przypadku tematów forum). -- `channels.telegram.execApprovals.enabled`: włącza Telegram jako klienta zatwierdzeń exec opartych na czacie dla tego konta. -- `channels.telegram.execApprovals.approvers`: identyfikatory użytkowników Telegrama, którym wolno zatwierdzać lub odrzucać żądania exec. Opcjonalne, gdy `channels.telegram.allowFrom` lub bezpośrednie `channels.telegram.defaultTo` już identyfikuje właściciela. -- `channels.telegram.execApprovals.target`: `dm | channel | both` (domyślnie: `dm`). `channel` i `both` zachowują źródłowy temat Telegrama, jeśli istnieje. -- `channels.telegram.execApprovals.agentFilter`: opcjonalny filtr identyfikatora agenta dla przekazywanych próśb o zatwierdzenie. -- `channels.telegram.execApprovals.sessionFilter`: opcjonalny filtr klucza sesji (podciąg lub regex) dla przekazywanych próśb o zatwierdzenie. -- `channels.telegram.accounts..execApprovals`: nadpisanie per konto dla routingu zatwierdzeń exec Telegrama i autoryzacji zatwierdzających. + - `channels.telegram.groups..topics..*`: nadpisania per temat (pola grupy + właściwość tylko dla tematu `agentId`). + - `channels.telegram.groups..topics..agentId`: kieruje ten temat do konkretnego agenta (nadpisuje routing na poziomie grupy i bindings). +- `channels.telegram.groups..topics..groupPolicy`: nadpisanie per temat dla groupPolicy (`open | allowlist | disabled`). +- `channels.telegram.groups..topics..requireMention`: nadpisanie bramki wzmianki per temat. +- najwyższego poziomu `bindings[]` z `type: "acp"` i kanonicznym identyfikatorem tematu `chatId:topic:topicId` w `match.peer.id`: pola trwałego powiązania ACP z tematem (zobacz [ACP Agents](/pl/tools/acp-agents#channel-specific-settings)). +- `channels.telegram.direct..topics..agentId`: kieruje tematy DM do konkretnego agenta (takie samo zachowanie jak dla tematów forum). +- `channels.telegram.execApprovals.enabled`: włącza Telegram jako klienta zatwierdzania exec opartego na czacie dla tego konta. +- `channels.telegram.execApprovals.approvers`: ID użytkowników Telegram, którzy mogą zatwierdzać lub odrzucać żądania exec. Opcjonalne, gdy `channels.telegram.allowFrom` lub bezpośrednie `channels.telegram.defaultTo` już identyfikuje właściciela. +- `channels.telegram.execApprovals.target`: `dm | channel | both` (domyślnie: `dm`). `channel` i `both` zachowują źródłowy temat Telegram, jeśli występuje. +- `channels.telegram.execApprovals.agentFilter`: opcjonalny filtr ID agenta dla przekazywanych promptów zatwierdzania. +- `channels.telegram.execApprovals.sessionFilter`: opcjonalny filtr klucza sesji (podciąg lub regex) dla przekazywanych promptów zatwierdzania. +- `channels.telegram.accounts..execApprovals`: nadpisanie per konto dla routingu zatwierdzeń exec Telegram i autoryzacji osób zatwierdzających. - `channels.telegram.capabilities.inlineButtons`: `off | dm | group | all | allowlist` (domyślnie: allowlist). - `channels.telegram.accounts..capabilities.inlineButtons`: nadpisanie per konto. -- `channels.telegram.commands.nativeSkills`: włącz/wyłącz natywne polecenia Skills Telegrama. +- `channels.telegram.commands.nativeSkills`: włącz/wyłącz natywne polecenia Skills w Telegram. - `channels.telegram.replyToMode`: `off | first | all` (domyślnie: `off`). - `channels.telegram.textChunkLimit`: rozmiar wychodzących fragmentów (znaki). -- `channels.telegram.chunkMode`: `length` (domyślnie) lub `newline`, aby dzielić po pustych liniach (granice akapitów) przed dzieleniem według długości. +- `channels.telegram.chunkMode`: `length` (domyślnie) albo `newline`, aby dzielić po pustych liniach (granice akapitów) przed dzieleniem według długości. - `channels.telegram.linkPreview`: przełącznik podglądów linków dla wiadomości wychodzących (domyślnie: true). -- `channels.telegram.streaming`: `off | partial | block | progress` (podgląd transmisji na żywo; domyślnie: `partial`; `progress` mapuje się do `partial`; `block` to zgodność ze starszym trybem podglądu). Streaming podglądu Telegrama używa pojedynczej wiadomości podglądu, która jest edytowana w miejscu. -- `channels.telegram.mediaMaxMb`: limit mediów przychodzących/wychodzących Telegrama (MB, domyślnie: 100). -- `channels.telegram.retry`: polityka ponawiania dla pomocników wysyłania Telegrama (CLI/tools/actions) przy odzyskiwalnych błędach wychodzącego API (próby, minDelayMs, maxDelayMs, jitter). -- `channels.telegram.network.autoSelectFamily`: nadpisanie Node autoSelectFamily (true=włącz, false=wyłącz). Domyślnie włączone w Node 22+, a w WSL2 domyślnie wyłączone. -- `channels.telegram.network.dnsResultOrder`: nadpisanie kolejności wyników DNS (`ipv4first` lub `verbatim`). Domyślnie `ipv4first` w Node 22+. -- `channels.telegram.network.dangerouslyAllowPrivateNetwork`: niebezpieczne opt-in dla zaufanych środowisk fake-IP lub transparent proxy, gdzie pobieranie mediów Telegrama rozwiązuje `api.telegram.org` do prywatnych/wewnętrznych/specjalnego przeznaczenia adresów poza domyślnie dozwolonym zakresem benchmarkowym RFC 2544. -- `channels.telegram.proxy`: URL proxy dla wywołań Bot API (SOCKS/HTTP). -- `channels.telegram.webhookUrl`: włącza tryb webhooka (wymaga `channels.telegram.webhookSecret`). -- `channels.telegram.webhookSecret`: sekret webhooka (wymagany, gdy ustawiono webhookUrl). -- `channels.telegram.webhookPath`: lokalna ścieżka webhooka (domyślnie `/telegram-webhook`). -- `channels.telegram.webhookHost`: host powiązania lokalnego webhooka (domyślnie `127.0.0.1`). -- `channels.telegram.webhookPort`: lokalny port powiązania webhooka (domyślnie `8787`). -- `channels.telegram.actions.reactions`: ogranicza reakcje narzędzi Telegrama. -- `channels.telegram.actions.sendMessage`: ogranicza wysyłanie wiadomości przez narzędzia Telegrama. -- `channels.telegram.actions.deleteMessage`: ogranicza usuwanie wiadomości przez narzędzia Telegrama. -- `channels.telegram.actions.sticker`: ogranicza akcje naklejek Telegrama — wysyłanie i wyszukiwanie (domyślnie: false). -- `channels.telegram.reactionNotifications`: `off | own | all` — kontroluje, które reakcje wyzwalają zdarzenia systemowe (domyślnie: `own`, jeśli nie ustawiono). -- `channels.telegram.reactionLevel`: `off | ack | minimal | extensive` — kontroluje możliwości reakcji agenta (domyślnie: `minimal`, jeśli nie ustawiono). +- `channels.telegram.streaming`: `off | partial | block | progress` (podgląd strumienia na żywo; domyślnie: `partial`; `progress` mapuje się do `partial`; `block` to zgodność ze starszym trybem podglądu). Strumieniowanie podglądu Telegram używa jednej wiadomości podglądu, która jest edytowana w miejscu. +- `channels.telegram.mediaMaxMb`: limit przychodzących/wychodzących multimediów Telegram (MB, domyślnie: 100). +- `channels.telegram.retry`: polityka ponawiania prób dla helperów wysyłania Telegram (CLI/narzędzia/akcje) przy odzyskiwalnych wychodzących błędach API (próby, minDelayMs, maxDelayMs, jitter). +- `channels.telegram.network.autoSelectFamily`: nadpisuje Node autoSelectFamily (true=włącz, false=wyłącz). Domyślnie włączone w Node 22+, przy czym w WSL2 domyślnie wyłączone. +- `channels.telegram.network.dnsResultOrder`: nadpisuje kolejność wyników DNS (`ipv4first` lub `verbatim`). Domyślnie `ipv4first` w Node 22+. +- `channels.telegram.network.dangerouslyAllowPrivateNetwork`: niebezpieczne ustawienie opt-in dla zaufanych środowisk fake-IP lub transparent-proxy, w których pobrania multimediów Telegram rozwiązują `api.telegram.org` do adresów prywatnych/wewnętrznych/specjalnego przeznaczenia poza domyślnie dozwolonym zakresem benchmarkowym RFC 2544. +- `channels.telegram.proxy`: adres URL proxy dla wywołań Bot API (SOCKS/HTTP). +- `channels.telegram.webhookUrl`: włącza tryb Webhook (wymaga `channels.telegram.webhookSecret`). +- `channels.telegram.webhookSecret`: sekret Webhook (wymagany, gdy ustawiono webhookUrl). +- `channels.telegram.webhookPath`: lokalna ścieżka Webhook (domyślnie `/telegram-webhook`). +- `channels.telegram.webhookHost`: lokalny host bindowania Webhook (domyślnie `127.0.0.1`). +- `channels.telegram.webhookPort`: lokalny port bindowania Webhook (domyślnie `8787`). +- `channels.telegram.actions.reactions`: bramka reakcji narzędzi Telegram. +- `channels.telegram.actions.sendMessage`: bramka wysyłania wiadomości przez narzędzia Telegram. +- `channels.telegram.actions.deleteMessage`: bramka usuwania wiadomości przez narzędzia Telegram. +- `channels.telegram.actions.sticker`: bramka akcji naklejek Telegram — wysyłanie i wyszukiwanie (domyślnie: false). +- `channels.telegram.reactionNotifications`: `off | own | all` — kontroluje, które reakcje wyzwalają zdarzenia systemowe (domyślnie: `own`, gdy nie ustawiono). +- `channels.telegram.reactionLevel`: `off | ack | minimal | extensive` — kontroluje możliwości reagowania agenta (domyślnie: `minimal`, gdy nie ustawiono). - `channels.telegram.errorPolicy`: `reply | silent` — kontroluje zachowanie odpowiedzi na błędy (domyślnie: `reply`). Obsługiwane są nadpisania per konto/grupa/temat. -- `channels.telegram.errorCooldownMs`: minimalna liczba ms między odpowiedziami z błędami na tym samym czacie (domyślnie: `60000`). Zapobiega spamowi błędów podczas awarii. +- `channels.telegram.errorCooldownMs`: minimalna liczba ms między odpowiedziami z błędem do tego samego czatu (domyślnie: `60000`). Zapobiega spamowi błędami podczas awarii. -- [Referencja konfiguracji - Telegram](/gateway/configuration-reference#telegram) +- [Dokumentacja konfiguracji - Telegram](/pl/gateway/configuration-reference#telegram) -Telegram-specific high-signal fields: +Pola Telegram o wysokim znaczeniu: -- uruchamianie/uwierzytelnianie: `enabled`, `botToken`, `tokenFile`, `accounts.*` (`tokenFile` musi wskazywać zwykły plik; linki symboliczne są odrzucane) +- uruchamianie/uwierzytelnianie: `enabled`, `botToken`, `tokenFile`, `accounts.*` (`tokenFile` musi wskazywać zwykły plik; dowiązania symboliczne są odrzucane) - kontrola dostępu: `dmPolicy`, `allowFrom`, `groupPolicy`, `groupAllowFrom`, `groups`, `groups.*.topics.*`, najwyższego poziomu `bindings[]` (`type: "acp"`) - zatwierdzenia exec: `execApprovals`, `accounts.*.execApprovals` - polecenia/menu: `commands.native`, `commands.nativeSkills`, `customCommands` - wątki/odpowiedzi: `replyToMode` -- streaming: `streaming` (podgląd), `blockStreaming` +- strumieniowanie: `streaming` (podgląd), `blockStreaming` - formatowanie/dostarczanie: `textChunkLimit`, `chunkMode`, `linkPreview`, `responsePrefix` -- media/sieć: `mediaMaxMb`, `timeoutSeconds`, `retry`, `network.autoSelectFamily`, `network.dangerouslyAllowPrivateNetwork`, `proxy` -- webhook: `webhookUrl`, `webhookSecret`, `webhookPath`, `webhookHost` +- multimedia/sieć: `mediaMaxMb`, `timeoutSeconds`, `retry`, `network.autoSelectFamily`, `network.dangerouslyAllowPrivateNetwork`, `proxy` +- Webhook: `webhookUrl`, `webhookSecret`, `webhookPath`, `webhookHost` - akcje/możliwości: `capabilities.inlineButtons`, `actions.sendMessage|editMessage|deleteMessage|reactions|sticker` - reakcje: `reactionNotifications`, `reactionLevel` - błędy: `errorPolicy`, `errorCooldownMs` @@ -1072,7 +1071,7 @@ Telegram-specific high-signal fields: - [Parowanie](/pl/channels/pairing) - [Grupy](/pl/channels/groups) -- [Bezpieczeństwo](/gateway/security) +- [Bezpieczeństwo](/pl/gateway/security) - [Routing kanałów](/pl/channels/channel-routing) -- [Routing wielu agentów](/concepts/multi-agent) -- [Rozwiązywanie problemów](/channels/troubleshooting) +- [Routing wielu agentów](/pl/concepts/multi-agent) +- [Rozwiązywanie problemów](/pl/channels/troubleshooting) diff --git a/docs/pl/channels/troubleshooting.md b/docs/pl/channels/troubleshooting.md index a16fe599d..3b4730fad 100644 --- a/docs/pl/channels/troubleshooting.md +++ b/docs/pl/channels/troubleshooting.md @@ -1,14 +1,14 @@ --- read_when: - Transport kanału pokazuje połączenie, ale odpowiedzi nie działają - - Potrzebujesz kontroli specyficznych dla kanału przed przejściem do szczegółowej dokumentacji dostawcy -summary: Szybkie rozwiązywanie problemów na poziomie kanału z sygnaturami awarii i poprawkami dla poszczególnych kanałów + - Potrzebujesz kontroli specyficznych dla kanału, zanim przejdziesz do szczegółowej dokumentacji dostawcy +summary: Szybkie rozwiązywanie problemów na poziomie kanału z charakterystycznymi sygnaturami awarii dla każdego kanału i sposobami naprawy title: Rozwiązywanie problemów z kanałami x-i18n: - generated_at: "2026-04-05T13:46:43Z" + generated_at: "2026-04-20T09:58:27Z" model: gpt-5.4 provider: openai - source_hash: d45d8220505ea420d970b20bc66e65216c2d7024b5736db1936421ffc0676e1f + source_hash: 0aef31742cd5cc4af3fa3d3ea1acba51875ad4a1423c0e8c87372c3df31b0528 source_path: channels/troubleshooting.md workflow: 15 --- @@ -17,7 +17,7 @@ x-i18n: Użyj tej strony, gdy kanał się łączy, ale działa nieprawidłowo. -## Sekwencja poleceń +## Drabina poleceń Najpierw uruchom je w tej kolejności: @@ -32,68 +32,69 @@ openclaw channels status --probe Prawidłowy stan bazowy: - `Runtime: running` -- `RPC probe: ok` -- Sonda kanału pokazuje połączony transport oraz, tam gdzie jest to obsługiwane, `works` lub `audit ok` +- `Connectivity probe: ok` +- `Capability: read-only`, `write-capable` lub `admin-capable` +- Test kanału pokazuje, że transport jest połączony, a tam, gdzie to obsługiwane, `works` lub `audit ok` ## WhatsApp ### Sygnatury awarii WhatsApp -| Objaw | Najszybsza kontrola | Poprawka | -| ------------------------------- | ----------------------------------------------- | ------------------------------------------------------- | -| Połączono, ale brak odpowiedzi w DM | `openclaw pairing list whatsapp` | Zatwierdź nadawcę albo zmień politykę DM/listę dozwolonych. | -| Wiadomości grupowe są ignorowane | Sprawdź `requireMention` + wzorce wzmianek w konfiguracji | Wspomnij bota albo złagodź politykę wzmianek dla tej grupy. | -| Losowe pętle rozłączeń/ponownych logowań | `openclaw channels status --probe` + logi | Zaloguj się ponownie i sprawdź, czy katalog poświadczeń jest w dobrym stanie. | +| Objaw | Najszybsza kontrola | Naprawa | +| ------------------------------- | ------------------------------------------------- | ------------------------------------------------------- | +| Połączono, ale brak odpowiedzi w DM | `openclaw pairing list whatsapp` | Zatwierdź nadawcę lub zmień politykę DM/listę dozwolonych. | +| Wiadomości grupowe są ignorowane | Sprawdź `requireMention` i wzorce wzmianek w konfiguracji | Wspomnij bota lub złagodź politykę wzmianek dla tej grupy. | +| Losowe rozłączenia/pętle ponownego logowania | `openclaw channels status --probe` + logi | Zaloguj się ponownie i sprawdź, czy katalog poświadczeń jest w dobrym stanie. | -Pełne rozwiązywanie problemów: [/channels/whatsapp#troubleshooting](/channels/whatsapp#troubleshooting) +Pełne rozwiązywanie problemów: [/channels/whatsapp#troubleshooting](/pl/channels/whatsapp#troubleshooting) ## Telegram ### Sygnatury awarii Telegram -| Objaw | Najszybsza kontrola | Poprawka | -| ----------------------------------- | ------------------------------------------- | ---------------------------------------------------------------------------- | -| `/start`, ale brak użytecznego przepływu odpowiedzi | `openclaw pairing list telegram` | Zatwierdź parowanie albo zmień politykę DM. | -| Bot jest online, ale grupa milczy | Sprawdź wymóg wzmianki i tryb prywatności bota | Wyłącz tryb prywatności dla widoczności w grupie albo wspomnij bota. | -| Błędy wysyłania z błędami sieciowymi | Sprawdź logi pod kątem błędów wywołań API Telegram | Napraw routing DNS/IPv6/proxy do `api.telegram.org`. | -| `setMyCommands` odrzucone przy uruchamianiu | Sprawdź logi pod kątem `BOT_COMMANDS_TOO_MUCH` | Ogranicz komendy plugin/Skills/własne komendy Telegram albo wyłącz natywne menu. | -| Po aktualizacji lista dozwolonych Cię blokuje | `openclaw security audit` i listy dozwolonych w konfiguracji | Uruchom `openclaw doctor --fix` albo zastąp `@username` numerycznymi identyfikatorami nadawców. | +| Objaw | Najszybsza kontrola | Naprawa | +| ----------------------------------- | --------------------------------------------- | -------------------------------------------------------------------------- | +| `/start`, ale brak użytecznego przepływu odpowiedzi | `openclaw pairing list telegram` | Zatwierdź parowanie lub zmień politykę DM. | +| Bot jest online, ale grupa milczy | Sprawdź wymóg wzmianki i tryb prywatności bota | Wyłącz tryb prywatności dla widoczności w grupie lub wspomnij bota. | +| Błędy wysyłania z błędami sieciowymi | Sprawdź logi pod kątem błędów wywołań Telegram API | Napraw routing DNS/IPv6/proxy do `api.telegram.org`. | +| `setMyCommands` odrzucane przy starcie | Sprawdź logi pod kątem `BOT_COMMANDS_TOO_MUCH` | Ogranicz komendy Telegram z Plugin/Skills/własne lub wyłącz natywne menu. | +| Po aktualizacji lista dozwolonych Cię blokuje | `openclaw security audit` i listy dozwolonych w konfiguracji | Uruchom `openclaw doctor --fix` lub zastąp `@username` numerycznymi identyfikatorami nadawców. | -Pełne rozwiązywanie problemów: [/channels/telegram#troubleshooting](/channels/telegram#troubleshooting) +Pełne rozwiązywanie problemów: [/channels/telegram#troubleshooting](/pl/channels/telegram#troubleshooting) ## Discord ### Sygnatury awarii Discord -| Objaw | Najszybsza kontrola | Poprawka | -| ------------------------------- | ------------------------------------ | --------------------------------------------------------- | -| Bot jest online, ale brak odpowiedzi na serwerze | `openclaw channels status --probe` | Zezwól na serwer/kanał i sprawdź uprawnienie message content. | -| Wiadomości grupowe są ignorowane | Sprawdź logi pod kątem odrzuceń przez reguły wzmianek | Wspomnij bota albo ustaw `requireMention: false` dla serwera/kanału. | -| Brak odpowiedzi w DM | `openclaw pairing list discord` | Zatwierdź parowanie DM albo dostosuj politykę DM. | +| Objaw | Najszybsza kontrola | Naprawa | +| ------------------------------- | -------------------------------- | -------------------------------------------------------- | +| Bot jest online, ale nie odpowiada na serwerze | `openclaw channels status --probe` | Zezwól na serwer/kanał i sprawdź uprawnienie message content intent. | +| Wiadomości grupowe są ignorowane | Sprawdź logi pod kątem odrzuceń przez reguły wzmianek | Wspomnij bota lub ustaw `requireMention: false` dla serwera/kanału. | +| Brak odpowiedzi w DM | `openclaw pairing list discord` | Zatwierdź parowanie DM lub dostosuj politykę DM. | -Pełne rozwiązywanie problemów: [/channels/discord#troubleshooting](/channels/discord#troubleshooting) +Pełne rozwiązywanie problemów: [/channels/discord#troubleshooting](/pl/channels/discord#troubleshooting) ## Slack ### Sygnatury awarii Slack -| Objaw | Najszybsza kontrola | Poprawka | -| -------------------------------------- | ------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------- | -| Socket mode połączony, ale brak odpowiedzi | `openclaw channels status --probe` | Sprawdź token aplikacji + token bota i wymagane zakresy; obserwuj `botTokenStatus` / `appTokenStatus = configured_unavailable` w konfiguracjach opartych na SecretRef. | -| DM są blokowane | `openclaw pairing list slack` | Zatwierdź parowanie albo złagodź politykę DM. | -| Wiadomość na kanale jest ignorowana | Sprawdź `groupPolicy` i listę dozwolonych kanałów | Zezwól na kanał albo przełącz politykę na `open`. | +| Objaw | Najszybsza kontrola | Naprawa | +| -------------------------------------- | -------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- | +| Socket mode jest połączony, ale brak odpowiedzi | `openclaw channels status --probe` | Sprawdź token aplikacji + token bota oraz wymagane zakresy; zwróć uwagę na `botTokenStatus` / `appTokenStatus = configured_unavailable` w konfiguracjach opartych na SecretRef. | +| DM są blokowane | `openclaw pairing list slack` | Zatwierdź parowanie lub złagodź politykę DM. | +| Wiadomość na kanale jest ignorowana | Sprawdź `groupPolicy` i listę dozwolonych kanałów | Zezwól na kanał lub przełącz politykę na `open`. | -Pełne rozwiązywanie problemów: [/channels/slack#troubleshooting](/channels/slack#troubleshooting) +Pełne rozwiązywanie problemów: [/channels/slack#troubleshooting](/pl/channels/slack#troubleshooting) -## iMessage i BlueBubbles +## iMessage and BlueBubbles ### Sygnatury awarii iMessage i BlueBubbles -| Objaw | Najszybsza kontrola | Poprawka | +| Objaw | Najszybsza kontrola | Naprawa | | -------------------------------- | --------------------------------------------------------------------- | ---------------------------------------------------- | -| Brak zdarzeń przychodzących | Sprawdź osiągalność webhooka/serwera i uprawnienia aplikacji | Napraw URL webhooka albo stan serwera BlueBubbles. | -| Można wysyłać, ale brak odbioru na macOS | Sprawdź uprawnienia prywatności macOS dla automatyzacji Messages | Nadaj ponownie uprawnienia TCC i uruchom ponownie proces kanału. | -| Nadawca DM jest blokowany | `openclaw pairing list imessage` lub `openclaw pairing list bluebubbles` | Zatwierdź parowanie albo zaktualizuj listę dozwolonych. | +| Brak zdarzeń przychodzących | Sprawdź osiągalność Webhook/servera i uprawnienia aplikacji | Napraw URL Webhook lub stan serwera BlueBubbles. | +| Można wysyłać, ale nie odbiera na macOS | Sprawdź uprawnienia prywatności macOS dla automatyzacji Messages | Ponownie nadaj uprawnienia TCC i uruchom proces kanału ponownie. | +| Nadawca DM jest blokowany | `openclaw pairing list imessage` lub `openclaw pairing list bluebubbles` | Zatwierdź parowanie lub zaktualizuj listę dozwolonych. | Pełne rozwiązywanie problemów: @@ -104,24 +105,24 @@ Pełne rozwiązywanie problemów: ### Sygnatury awarii Signal -| Objaw | Najszybsza kontrola | Poprawka | -| ------------------------------- | ------------------------------------ | ------------------------------------------------------------ | -| Demon jest osiągalny, ale bot milczy | `openclaw channels status --probe` | Sprawdź URL/konto demona `signal-cli` oraz tryb odbioru. | -| DM są blokowane | `openclaw pairing list signal` | Zatwierdź nadawcę albo dostosuj politykę DM. | -| Odpowiedzi w grupie nie są wyzwalane | Sprawdź listę dozwolonych grup i wzorce wzmianek | Dodaj nadawcę/grupę albo złagodź reguły blokujące. | +| Objaw | Najszybsza kontrola | Naprawa | +| ------------------------------- | ----------------------------------- | ------------------------------------------------------- | +| Demon jest osiągalny, ale bot milczy | `openclaw channels status --probe` | Sprawdź URL/konto demona `signal-cli` i tryb odbioru. | +| DM są blokowane | `openclaw pairing list signal` | Zatwierdź nadawcę lub dostosuj politykę DM. | +| Odpowiedzi w grupie się nie uruchamiają | Sprawdź listę dozwolonych grup i wzorce wzmianek | Dodaj nadawcę/grupę lub złagodź reguły blokowania. | -Pełne rozwiązywanie problemów: [/channels/signal#troubleshooting](/channels/signal#troubleshooting) +Pełne rozwiązywanie problemów: [/channels/signal#troubleshooting](/pl/channels/signal#troubleshooting) ## QQ Bot ### Sygnatury awarii QQ Bot -| Objaw | Najszybsza kontrola | Poprawka | -| ------------------------------- | ---------------------------------------------- | ---------------------------------------------------------------- | -| Bot odpowiada „gone to Mars” | Sprawdź `appId` i `clientSecret` w konfiguracji | Ustaw poświadczenia albo uruchom ponownie gateway. | -| Brak wiadomości przychodzących | `openclaw channels status --probe` | Zweryfikuj poświadczenia na QQ Open Platform. | -| Mowa nie jest transkrybowana | Sprawdź konfigurację dostawcy STT | Skonfiguruj `channels.qqbot.stt` lub `tools.media.audio`. | -| Wiadomości proaktywne nie docierają | Sprawdź wymagania platformy QQ dotyczące interakcji | QQ może blokować wiadomości inicjowane przez bota bez niedawnej interakcji. | +| Objaw | Najszybsza kontrola | Naprawa | +| ------------------------------- | -------------------------------------------- | --------------------------------------------------------------- | +| Bot odpowiada „gone to Mars” | Sprawdź `appId` i `clientSecret` w konfiguracji | Ustaw poświadczenia lub uruchom Gateway ponownie. | +| Brak wiadomości przychodzących | `openclaw channels status --probe` | Sprawdź poświadczenia na QQ Open Platform. | +| Głos nie jest transkrybowany | Sprawdź konfigurację dostawcy STT | Skonfiguruj `channels.qqbot.stt` lub `tools.media.audio`. | +| Wiadomości proaktywne nie docierają | Sprawdź wymagania interakcji platformy QQ | QQ może blokować wiadomości inicjowane przez bota bez niedawnej interakcji. | Pełne rozwiązywanie problemów: [/channels/qqbot#troubleshooting](/pl/channels/qqbot#troubleshooting) @@ -129,12 +130,12 @@ Pełne rozwiązywanie problemów: [/channels/qqbot#troubleshooting](/pl/channels ### Sygnatury awarii Matrix -| Objaw | Najszybsza kontrola | Poprawka | -| ----------------------------------- | -------------------------------------- | ------------------------------------------------------------------------- | -| Zalogowano, ale ignoruje wiadomości w pokoju | `openclaw channels status --probe` | Sprawdź `groupPolicy`, listę dozwolonych pokoi i reguły wzmianek. | -| DM nie są przetwarzane | `openclaw pairing list matrix` | Zatwierdź nadawcę albo dostosuj politykę DM. | -| Szyfrowane pokoje nie działają | `openclaw matrix verify status` | Zweryfikuj urządzenie ponownie, a następnie sprawdź `openclaw matrix verify backup status`. | -| Przywracanie kopii zapasowej oczekuje/jest uszkodzone | `openclaw matrix verify backup status` | Uruchom `openclaw matrix verify backup restore` albo wykonaj ponownie z kluczem odzyskiwania. | -| Cross-signing/bootstrap wygląda nieprawidłowo | `openclaw matrix verify bootstrap` | Napraw magazyn sekretów, cross-signing i stan kopii zapasowej w jednym przebiegu. | +| Objaw | Najszybsza kontrola | Naprawa | +| ----------------------------------- | ------------------------------------ | ------------------------------------------------------------------------ | +| Zalogowano, ale ignoruje wiadomości w pokoju | `openclaw channels status --probe` | Sprawdź `groupPolicy`, listę dozwolonych pokoi i reguły wzmianek. | +| DM nie są przetwarzane | `openclaw pairing list matrix` | Zatwierdź nadawcę lub dostosuj politykę DM. | +| Zaszyfrowane pokoje nie działają | `openclaw matrix verify status` | Zweryfikuj urządzenie ponownie, a następnie sprawdź `openclaw matrix verify backup status`. | +| Przywracanie kopii zapasowej oczekuje/jest uszkodzone | `openclaw matrix verify backup status` | Uruchom `openclaw matrix verify backup restore` lub uruchom ponownie z kluczem odzyskiwania. | +| Cross-signing/bootstrap wygląda nieprawidłowo | `openclaw matrix verify bootstrap` | Napraw magazyn sekretów, cross-signing i stan kopii zapasowej w jednym przebiegu. | -Pełna konfiguracja i ustawienia: [Matrix](/channels/matrix) +Pełna konfiguracja i ustawienia: [Matrix](/pl/channels/matrix) diff --git a/docs/pl/concepts/qa-e2e-automation.md b/docs/pl/concepts/qa-e2e-automation.md index 8718992fb..761e0c472 100644 --- a/docs/pl/concepts/qa-e2e-automation.md +++ b/docs/pl/concepts/qa-e2e-automation.md @@ -3,21 +3,21 @@ read_when: - Rozszerzanie qa-lab lub qa-channel - Dodawanie scenariuszy QA opartych na repozytorium - Budowanie bardziej realistycznej automatyzacji QA wokół panelu Gateway -summary: Prywatna struktura automatyzacji QA dla qa-lab, qa-channel, scenariuszy seedowanych i raportów protokołu -title: Automatyzacja QA E2E +summary: Prywatny kształt automatyzacji QA dla qa-lab, qa-channel, scenariuszy z seedowaniem i raportów protokołu +title: Automatyzacja E2E QA x-i18n: - generated_at: "2026-04-18T09:34:51Z" + generated_at: "2026-04-20T09:58:24Z" model: gpt-5.4 provider: openai - source_hash: adf8c5f74e8fabdc8e9fd7ecd41afce8b60354c7dd24d92ac926d3c527927cd4 + source_hash: 34245ce871356caeab0d9e0eeeaa9fb4e408920a4a97ad27567fa365d8db17c7 source_path: concepts/qa-e2e-automation.md workflow: 15 --- -# Automatyzacja QA E2E +# Automatyzacja E2E QA -Prywatny stos QA ma na celu testowanie OpenClaw w bardziej realistyczny, -kanałowy sposób niż pojedynczy test jednostkowy. +Prywatny stos QA ma ćwiczyć OpenClaw w sposób bardziej realistyczny, +ukształtowany przez kanały niż pojedynczy test jednostkowy. Obecne elementy: @@ -25,12 +25,12 @@ Obecne elementy: reakcji, edycji i usuwania. - `extensions/qa-lab`: interfejs debuggera i magistrala QA do obserwowania transkryptu, wstrzykiwania wiadomości przychodzących i eksportowania raportu Markdown. -- `qa/`: zasoby seedowane oparte na repozytorium dla zadania startowego i bazowych scenariuszy QA. +- `qa/`: zasoby seedów oparte na repozytorium dla zadania startowego i bazowych scenariuszy QA. Obecny przepływ pracy operatora QA to dwupanelowa witryna QA: -- Po lewej: panel Gateway (Control UI) z agentem. -- Po prawej: QA Lab, pokazujący transkrypt w stylu Slacka i plan scenariusza. +- Lewa strona: panel Gateway (Control UI) z agentem. +- Prawa strona: QA Lab, pokazujący transkrypt w stylu Slacka i plan scenariusza. Uruchom za pomocą: @@ -38,13 +38,13 @@ Uruchom za pomocą: pnpm qa:lab:up ``` -To buduje witrynę QA, uruchamia opartą na Dockerze ścieżkę gateway i udostępnia -stronę QA Lab, na której operator lub pętla automatyzacji może zlecić agentowi -misję QA, obserwować rzeczywiste zachowanie kanału oraz rejestrować, co zadziałało, -co się nie udało i co pozostało zablokowane. +To buduje witrynę QA, uruchamia opartą na Dockerze ścieżkę Gateway i udostępnia stronę +QA Lab, na której operator lub pętla automatyzacji może zlecić agentowi misję QA, +obserwować rzeczywiste zachowanie kanału i zapisywać, co zadziałało, co się nie udało +lub co pozostało zablokowane. Aby szybciej iterować nad interfejsem QA Lab bez przebudowywania obrazu Docker przy każdej zmianie, -uruchom stos z podmontowanym pakietem QA Lab: +uruchom stos z bind-mountowanym bundlerem QA Lab: ```bash pnpm openclaw qa docker-build-image @@ -53,53 +53,55 @@ pnpm qa:lab:up:fast pnpm qa:lab:watch ``` -`qa:lab:up:fast` utrzymuje usługi Docker na wcześniej zbudowanym obrazie i bind-mountuje +`qa:lab:up:fast` utrzymuje usługi Docker na wstępnie zbudowanym obrazie i bind-mountuje `extensions/qa-lab/web/dist` do kontenera `qa-lab`. `qa:lab:watch` -przebudowuje ten pakiet przy zmianach, a przeglądarka automatycznie przeładowuje się, gdy zmienia się hash zasobów QA Lab. +przebudowuje ten bundel po zmianach, a przeglądarka automatycznie przeładowuje się, gdy hash zasobu QA Lab się zmieni. -Dla ścieżki smoke Matrix z rzeczywistym transportem uruchom: +Aby uruchomić ścieżkę smoke z rzeczywistym transportem Matrix, użyj: ```bash pnpm openclaw qa matrix ``` -Ta ścieżka udostępnia jednorazowy homeserver Tuwunel w Dockerze, rejestruje -tymczasowych użytkowników drivera, SUT i obserwatora, tworzy jeden prywatny pokój, -a następnie uruchamia prawdziwy Plugin Matrix wewnątrz procesu podrzędnego QA gateway. Ścieżka z żywym transportem utrzymuje konfigurację procesu podrzędnego ograniczoną do testowanego transportu, dzięki czemu Matrix działa bez +Ta ścieżka provisionuje jednorazowy homeserver Tuwunel w Dockerze, rejestruje +tymczasowych użytkowników drivera, SUT i obserwatora, tworzy jeden prywatny pokój, a następnie uruchamia +rzeczywisty Plugin Matrix wewnątrz podrzędnego procesu Gateway QA. Ścieżka z żywym transportem utrzymuje +konfigurację procesu podrzędnego ograniczoną do testowanego transportu, dzięki czemu Matrix działa bez `qa-channel` w konfiguracji procesu podrzędnego. Zapisuje ustrukturyzowane artefakty raportu oraz -połączony log stdout/stderr do wybranego katalogu wyjściowego Matrix QA. Aby -przechwycić także zewnętrzne dane wyjściowe budowania/uruchamiania z `scripts/run-node.mjs`, -ustaw `OPENCLAW_RUN_NODE_OUTPUT_LOG=` na plik logu lokalny względem repozytorium. +połączony log stdout/stderr do wybranego katalogu wyjściowego Matrix QA. Aby przechwycić także +zewnętrzne wyjście build/launcher z `scripts/run-node.mjs`, ustaw +`OPENCLAW_RUN_NODE_OUTPUT_LOG=` na plik logu lokalny dla repozytorium. -Dla ścieżki smoke Telegram z rzeczywistym transportem uruchom: +Aby uruchomić ścieżkę smoke z rzeczywistym transportem Telegram, użyj: ```bash pnpm openclaw qa telegram ``` -Ta ścieżka kieruje ruch do jednej prawdziwej prywatnej grupy Telegram zamiast udostępniać +Ta ścieżka celuje w jedną rzeczywistą prywatną grupę Telegram zamiast provisionować jednorazowy serwer. Wymaga `OPENCLAW_QA_TELEGRAM_GROUP_ID`, -`OPENCLAW_QA_TELEGRAM_DRIVER_BOT_TOKEN` i +`OPENCLAW_QA_TELEGRAM_DRIVER_BOT_TOKEN` oraz `OPENCLAW_QA_TELEGRAM_SUT_BOT_TOKEN`, a także dwóch różnych botów w tej samej prywatnej grupie. Bot SUT musi mieć nazwę użytkownika Telegram, a obserwacja bot-do-bota -działa najlepiej, gdy oba boty mają włączony Bot-to-Bot Communication Mode +działa najlepiej, gdy oba boty mają włączony tryb Bot-to-Bot Communication Mode w `@BotFather`. +Polecenie kończy się kodem różnym od zera, gdy jakikolwiek scenariusz się nie powiedzie. Użyj `--allow-failures`, jeśli +chcesz uzyskać artefakty bez kończenia z błędnym kodem wyjścia. -Ścieżki z żywym transportem współdzielą teraz jeden mniejszy kontrakt zamiast tego, by każda definiowała +Ścieżki z żywym transportem współdzielą teraz jeden mniejszy kontrakt zamiast każda wymyślać własny kształt listy scenariuszy: -`qa-channel` pozostaje szerokim syntetycznym zestawem zachowań produktu i nie jest częścią -macierzy pokrycia dla żywego transportu. +`qa-channel` pozostaje szerokim syntetycznym zestawem testów zachowania produktu i nie jest częścią macierzy pokrycia żywego transportu. -| Ścieżka | Canary | Bramka wzmianki | Blokada allowlisty | Odpowiedź najwyższego poziomu | Wznowienie po restarcie | Dalszy ciąg w wątku | Izolacja wątku | Obserwacja reakcji | Polecenie pomocy | -| -------- | ------ | --------------- | ------------------ | ----------------------------- | ----------------------- | ------------------- | -------------- | ------------------ | ---------------- | -| Matrix | x | x | x | x | x | x | x | x | | -| Telegram | x | | | | | | | | x | +| Ścieżka | Canary | Bramka wzmianek | Blokada allowlisty | Odpowiedź najwyższego poziomu | Wznowienie po restarcie | Dalszy ciąg wątku | Izolacja wątku | Obserwacja reakcji | Polecenie help | +| -------- | ------ | --------------- | ------------------ | ----------------------------- | ----------------------- | ----------------- | -------------- | ------------------ | -------------- | +| Matrix | x | x | x | x | x | x | x | x | | +| Telegram | x | | | | | | | | x | -Dzięki temu `qa-channel` pozostaje szerokim zestawem zachowań produktu, podczas gdy Matrix, +Dzięki temu `qa-channel` pozostaje szerokim zestawem testów zachowania produktu, podczas gdy Matrix, Telegram i przyszłe żywe transporty współdzielą jedną jawną checklistę kontraktu transportowego. -Dla ścieżki z jednorazową maszyną wirtualną Linux bez wprowadzania Dockera do ścieżki QA uruchom: +Aby uruchomić ścieżkę na jednorazowej maszynie wirtualnej Linux bez wprowadzania Dockera do ścieżki QA, użyj: ```bash pnpm openclaw qa suite --runner multipass --scenario channel-chat-baseline @@ -108,19 +110,21 @@ pnpm openclaw qa suite --runner multipass --scenario channel-chat-baseline To uruchamia świeżego gościa Multipass, instaluje zależności, buduje OpenClaw wewnątrz gościa, uruchamia `qa suite`, a następnie kopiuje zwykły raport QA i podsumowanie z powrotem do `.artifacts/qa-e2e/...` na hoście. -Wykorzystuje to samo zachowanie wyboru scenariuszy co `qa suite` na hoście. -Uruchomienia hosta i Multipass suite domyślnie wykonują wiele wybranych scenariuszy równolegle -z izolowanymi workerami gateway, maksymalnie do 64 workerów lub liczby wybranych -scenariuszy. Użyj `--concurrency `, aby dostroić liczbę workerów, albo -`--concurrency 1` dla wykonania szeregowego. -Uruchomienia na żywo przekazują obsługiwane dane uwierzytelniające QA, które są praktyczne dla -gościa: klucze dostawców oparte na zmiennych środowiskowych, ścieżkę konfiguracji dostawcy QA live oraz -`CODEX_HOME`, jeśli jest obecne. Zachowaj `--output-dir` w katalogu głównym repozytorium, aby gość -mógł zapisywać z powrotem przez podmontowany obszar roboczy. +Ponownie wykorzystuje to samo zachowanie wyboru scenariuszy co `qa suite` na hoście. +Uruchomienia na hoście i w Multipass domyślnie wykonują wiele wybranych scenariuszy równolegle +z izolowanymi workerami Gateway. `qa-channel` domyślnie używa współbieżności 4, +ograniczonej przez liczbę wybranych scenariuszy. Użyj `--concurrency `, aby dostroić +liczbę workerów, lub `--concurrency 1` dla wykonywania szeregowego. +Polecenie kończy się kodem różnym od zera, gdy jakikolwiek scenariusz się nie powiedzie. Użyj `--allow-failures`, jeśli +chcesz uzyskać artefakty bez kończenia z błędnym kodem wyjścia. +Uruchomienia live przekazują obsługiwane wejścia uwierzytelniania QA, które są praktyczne dla +gościa: klucze dostawcy oparte na env, ścieżkę konfiguracji dostawcy live QA oraz +`CODEX_HOME`, jeśli jest obecne. Trzymaj `--output-dir` w katalogu głównym repozytorium, aby gość +mógł zapisywać z powrotem przez zamontowany workspace. ## Seedy oparte na repozytorium -Zasoby seedowane znajdują się w `qa/`: +Zasoby seedów znajdują się w `qa/`: - `qa/scenarios/index.md` - `qa/scenarios//*.md` @@ -128,30 +132,30 @@ Zasoby seedowane znajdują się w `qa/`: Są one celowo przechowywane w git, aby plan QA był widoczny zarówno dla ludzi, jak i dla agenta. -`qa-lab` powinien pozostać generycznym runnerem Markdown. Każdy plik scenariusza Markdown jest -źródłem prawdy dla jednego uruchomienia testowego i powinien definiować: +`qa-lab` powinien pozostać ogólnym runnerem Markdown. Każdy plik scenariusza Markdown jest +źródłem prawdy dla jednego uruchomienia testu i powinien definiować: - metadane scenariusza - opcjonalne metadane kategorii, możliwości, ścieżki i ryzyka - odwołania do dokumentacji i kodu - opcjonalne wymagania Plugin -- opcjonalną łatkę konfiguracji gateway +- opcjonalny patch konfiguracji Gateway - wykonywalny `qa-flow` -Powtarzalna powierzchnia runtime, która stoi za `qa-flow`, może pozostać generyczna -i przekrojowa. Na przykład scenariusze Markdown mogą łączyć helpery po stronie -transportu z helperami po stronie przeglądarki, które sterują osadzonym interfejsem Control UI przez +Wielokrotnego użytku powierzchnia runtime, która wspiera `qa-flow`, może pozostać ogólna +i przekrojowa. Na przykład scenariusze Markdown mogą łączyć pomocniki po stronie transportu +z pomocnikami po stronie przeglądarki, które sterują osadzonym Control UI przez powierzchnię Gateway `browser.request`, bez dodawania runnera specjalnego przypadku. -Pliki scenariuszy powinny być grupowane według możliwości produktu, a nie według folderu -drzewa źródłowego. Zachowuj stabilność ID scenariuszy przy przenoszeniu plików; używaj `docsRefs` i `codeRefs` +Pliki scenariuszy powinny być grupowane według możliwości produktu, a nie folderu drzewa źródeł. +Zachowuj stabilność identyfikatorów scenariuszy przy przenoszeniu plików; używaj `docsRefs` i `codeRefs` dla identyfikowalności implementacji. -Lista bazowa powinna pozostać wystarczająco szeroka, by obejmować: +Lista bazowa powinna pozostać wystarczająco szeroka, aby obejmować: - czat DM i kanałowy -- zachowanie wątków -- cykl życia akcji na wiadomościach +- zachowanie wątku +- cykl życia akcji wiadomości - wywołania zwrotne Cron - przywoływanie pamięci - przełączanie modeli @@ -159,33 +163,32 @@ Lista bazowa powinna pozostać wystarczająco szeroka, by obejmować: - odczyt repozytorium i dokumentacji - jedno małe zadanie build, takie jak Lobster Invaders -## Ścieżki z mockami dostawców +## Ścieżki mock dostawców -`qa suite` ma dwie lokalne ścieżki z mockami dostawców: +`qa suite` ma dwie lokalne ścieżki mock dostawców: - `mock-openai` to świadomy scenariuszy mock OpenClaw. Pozostaje domyślną - deterministyczną ścieżką mock dla QA opartego na repozytorium i bramek zgodności. -- `aimock` uruchamia serwer dostawcy oparty na AIMock do eksperymentalnego pokrycia - protokołu, fixture, record/replay i chaos. Jest dodatkiem i nie zastępuje - dyspozytora scenariuszy `mock-openai`. + deterministyczną ścieżką mock dla QA opartego na repozytorium i bramek parzystości. +- `aimock` uruchamia serwer dostawcy oparty na AIMock do eksperymentalnego pokrycia protokołu, + fixture, record/replay i chaos. Jest dodatkiem i nie zastępuje dispatcher scenariuszy `mock-openai`. -Implementacja ścieżek dostawców znajduje się w `extensions/qa-lab/src/providers/`. -Każdy dostawca zarządza własnymi ustawieniami domyślnymi, uruchamianiem lokalnego serwera, konfiguracją modeli gateway, -potrzebami przygotowania profilu auth oraz flagami możliwości live/mock. Współdzielony kod suite i gateway -powinien routować przez rejestr dostawców zamiast rozgałęziać się według nazw dostawców. +Implementacja ścieżki dostawców znajduje się w `extensions/qa-lab/src/providers/`. +Każdy dostawca posiada własne ustawienia domyślne, uruchamianie lokalnego serwera, +konfigurację modelu Gateway, potrzeby przygotowania profilu auth oraz flagi możliwości live/mock. Współdzielony kod suite i Gateway +powinien przechodzić przez rejestr dostawców zamiast rozgałęziać się po nazwach dostawców. ## Adaptery transportu -`qa-lab` zarządza generyczną powierzchnią transportu dla scenariuszy QA Markdown. -`qa-channel` jest pierwszym adapterem na tej powierzchni, ale docelowy projekt jest szerszy: -przyszłe prawdziwe lub syntetyczne kanały powinny podłączać się do tego samego runnera suite +`qa-lab` posiada ogólną powierzchnię transportu dla scenariuszy QA w Markdown. +`qa-channel` jest pierwszym adapterem na tej powierzchni, ale cel projektu jest szerszy: +przyszłe rzeczywiste lub syntetyczne kanały powinny podłączać się do tego samego runnera suite zamiast dodawania runnera QA specyficznego dla transportu. Na poziomie architektury podział wygląda następująco: -- `qa-lab` zarządza generycznym wykonywaniem scenariuszy, współbieżnością workerów, zapisem artefaktów i raportowaniem. -- adapter transportu zarządza konfiguracją gateway, gotowością, obserwacją ruchu przychodzącego i wychodzącego, akcjami transportu oraz znormalizowanym stanem transportu. -- pliki scenariuszy Markdown w `qa/scenarios/` definiują przebieg testu; `qa-lab` zapewnia powtarzalną powierzchnię runtime, która je wykonuje. +- `qa-lab` odpowiada za ogólne wykonywanie scenariuszy, współbieżność workerów, zapisywanie artefaktów i raportowanie. +- adapter transportu odpowiada za konfigurację Gateway, gotowość, obserwację wejścia i wyjścia, akcje transportu oraz znormalizowany stan transportu. +- pliki scenariuszy Markdown w `qa/scenarios/` definiują uruchomienie testu; `qa-lab` dostarcza wielokrotnego użytku powierzchnię runtime, która je wykonuje. Wskazówki wdrożeniowe dla maintainerów dotyczące nowych adapterów kanałów znajdują się w [Testing](/pl/help/testing#adding-a-channel-to-qa). @@ -198,9 +201,9 @@ Raport powinien odpowiadać na pytania: - Co zadziałało - Co się nie udało - Co pozostało zablokowane -- Jakie scenariusze uzupełniające warto dodać +- Jakie kolejne scenariusze warto dodać -Dla sprawdzania charakteru i stylu uruchom ten sam scenariusz na wielu refach modeli live +W przypadku kontroli charakteru i stylu uruchom ten sam scenariusz dla wielu referencji modeli live i zapisz oceniony raport Markdown: ```bash @@ -220,34 +223,35 @@ pnpm openclaw qa character-eval \ --judge-concurrency 16 ``` -Polecenie uruchamia lokalne procesy podrzędne QA gateway, a nie Docker. Scenariusze -character eval powinny ustawiać personę przez `SOUL.md`, a następnie wykonywać zwykłe tury użytkownika, +Polecenie uruchamia lokalne podrzędne procesy Gateway QA, a nie Docker. Scenariusze oceny charakteru +powinny ustawiać personę przez `SOUL.md`, a następnie wykonywać zwykłe tury użytkownika, takie jak czat, pomoc dotycząca workspace i małe zadania na plikach. Kandydacki model nie powinien być informowany, że jest oceniany. Polecenie zachowuje każdy pełny -transkrypt, rejestruje podstawowe statystyki uruchomienia, a następnie prosi modele oceniające w trybie fast z -rozumowaniem `xhigh` o uszeregowanie uruchomień według naturalności, klimatu i humoru. +transkrypt, rejestruje podstawowe statystyki uruchomienia, a następnie prosi modele sędziowskie w trybie fast z +rozumowaniem `xhigh`, aby uszeregowały uruchomienia według naturalności, klimatu i humoru. Użyj `--blind-judge-models` przy porównywaniu dostawców: prompt sędziego nadal otrzymuje -każdy transkrypt i status uruchomienia, ale refy kandydatów są zastępowane neutralnymi -etykietami takimi jak `candidate-01`; raport mapuje rankingi z powrotem na rzeczywiste refy po +każdy transkrypt i status uruchomienia, ale referencje kandydatów są zastępowane neutralnymi +etykietami, takimi jak `candidate-01`; raport mapuje rankingi z powrotem na rzeczywiste referencje po parsowaniu. -Uruchomienia kandydatów domyślnie używają poziomu myślenia `high`, z `xhigh` dla modeli OpenAI, -które to obsługują. Zastąp ustawienie dla konkretnego kandydata inline przez +Uruchomienia kandydatów domyślnie używają myślenia `high`, z `xhigh` dla modeli OpenAI, które to +obsługują. Nadpisz konkretnego kandydata inline za pomocą `--model provider/model,thinking=`. `--thinking ` nadal ustawia -globalny fallback, a starsza forma `--model-thinking ` jest +globalną wartość zapasową, a starsza forma `--model-thinking ` jest zachowana dla zgodności. -Refy kandydatów OpenAI domyślnie używają trybu fast, aby tam, gdzie dostawca to obsługuje, wykorzystywane było przetwarzanie priorytetowe. Dodaj inline `,fast`, `,no-fast` lub `,fast=false`, gdy +Referencje kandydatów OpenAI domyślnie używają trybu fast, dzięki czemu priorytetowe przetwarzanie jest stosowane tam, +gdzie dostawca je obsługuje. Dodaj inline `,fast`, `,no-fast` lub `,fast=false`, gdy pojedynczy kandydat lub sędzia wymaga nadpisania. Przekaż `--fast` tylko wtedy, gdy chcesz wymusić tryb fast dla każdego modelu kandydata. Czasy trwania kandydatów i sędziów są -rejestrowane w raporcie do analizy benchmarków, ale prompty sędziów wyraźnie mówią, -aby nie oceniać według szybkości. -Uruchomienia modeli kandydatów i sędziów domyślnie używają współbieżności 16. Zmniejsz -`--concurrency` lub `--judge-concurrency`, gdy limity dostawcy lub obciążenie lokalnego gateway -sprawiają, że uruchomienie jest zbyt zaszumione. -Gdy nie zostanie przekazany żaden kandydacki `--model`, character eval domyślnie używa +rejestrowane w raporcie do analizy benchmarków, ale prompty sędziowskie wyraźnie mówią, +aby nie ustalać rankingu według szybkości. +Zarówno uruchomienia modeli kandydatów, jak i sędziów domyślnie używają współbieżności 16. Zmniejsz +`--concurrency` lub `--judge-concurrency`, gdy limity dostawcy lub obciążenie lokalnego Gateway +powodują zbyt duży szum w uruchomieniu. +Gdy nie zostanie przekazany żaden kandydat `--model`, character eval domyślnie używa `openai/gpt-5.4`, `openai/gpt-5.2`, `openai/gpt-5`, `anthropic/claude-opus-4-6`, `anthropic/claude-sonnet-4-6`, `zai/glm-5.1`, `moonshot/kimi-k2.5` oraz -`google/gemini-3.1-pro-preview`, gdy nie zostanie przekazany żaden `--model`. +`google/gemini-3.1-pro-preview`. Gdy nie zostanie przekazany żaden `--judge-model`, sędziowie domyślnie używają `openai/gpt-5.4,thinking=xhigh,fast` oraz `anthropic/claude-opus-4-6,thinking=high`. diff --git a/docs/pl/gateway/configuration-reference.md b/docs/pl/gateway/configuration-reference.md index cafba0022..f5c67b89e 100644 --- a/docs/pl/gateway/configuration-reference.md +++ b/docs/pl/gateway/configuration-reference.md @@ -1,37 +1,37 @@ --- read_when: - - Potrzebujesz dokładnej semantyki pól konfiguracji lub wartości domyślnych - - Weryfikujesz bloki konfiguracji kanału, modelu, Gateway lub narzędzia -summary: Odwołanie do konfiguracji Gateway dla podstawowych kluczy OpenClaw, wartości domyślnych i odnośników do dedykowanych opisów podsystemów + - Potrzebujesz dokładnej semantyki konfiguracji na poziomie pól lub wartości domyślnych + - Sprawdzasz bloki konfiguracji kanału, modelu, Gateway lub narzędzia +summary: Odwołanie do konfiguracji Gateway dla podstawowych kluczy OpenClaw, wartości domyślnych i linków do dedykowanych odwołań podsystemów title: Odwołanie do konfiguracji x-i18n: - generated_at: "2026-04-18T09:34:54Z" + generated_at: "2026-04-20T09:58:24Z" model: gpt-5.4 provider: openai - source_hash: 4b504c9c6b47d7a327a0acf6934561c9b2606c01cc8ebe5526ccde73033d759f + source_hash: 22b10f1f133374cd29ef4a5ec4fb9c9938eb51184ad82e1aa2e5f6f7af58585e source_path: gateway/configuration-reference.md workflow: 15 --- # Odwołanie do konfiguracji -Podstawowe odwołanie do konfiguracji `~/.openclaw/openclaw.json`. Aby zobaczyć omówienie zorientowane na zadania, przejdź do [Konfiguracja](/pl/gateway/configuration). +Odwołanie do podstawowej konfiguracji dla `~/.openclaw/openclaw.json`. Aby zobaczyć omówienie zorientowane na zadania, przejdź do [Konfiguracja](/pl/gateway/configuration). -Ta strona obejmuje główne powierzchnie konfiguracji OpenClaw i odsyła dalej, gdy dany podsystem ma własne, bardziej szczegółowe odwołanie. **Nie** próbuje umieszczać na jednej stronie każdego katalogu poleceń należącego do kanału/Pluginu ani każdego szczegółowego parametru pamięci/QMD. +Ta strona obejmuje główne powierzchnie konfiguracji OpenClaw i zawiera linki do miejsc, w których dany podsystem ma własne, bardziej szczegółowe odwołanie. **Nie** próbuje wstawiać na jednej stronie każdego katalogu poleceń należącego do kanału/Plugin ani każdego zaawansowanego parametru pamięci/QMD. -Prawda w kodzie: +Stan kodu: -- `openclaw config schema` wypisuje aktualny schemat JSON używany do walidacji i Control UI, z dołączonymi metadanymi bundled/Pluginu/kanału, gdy są dostępne -- `config.schema.lookup` zwraca jeden węzeł schematu ograniczony do ścieżki dla narzędzi drążących szczegóły -- `pnpm config:docs:check` / `pnpm config:docs:gen` sprawdzają skrót bazowy dokumentacji konfiguracji względem bieżącej powierzchni schematu +- `openclaw config schema` wypisuje bieżący schemat JSON Schema używany do walidacji i interfejsu Control UI, z dołączonymi metadanymi bundled/Plugin/kanałów, gdy są dostępne +- `config.schema.lookup` zwraca jeden węzeł schematu ograniczony do ścieżki dla narzędzi do szczegółowej inspekcji +- `pnpm config:docs:check` / `pnpm config:docs:gen` weryfikują hash linii bazowej dokumentacji konfiguracji względem bieżącej powierzchni schematu Dedykowane szczegółowe odwołania: -- [Odwołanie do konfiguracji pamięci](/pl/reference/memory-config) dla `agents.defaults.memorySearch.*`, `memory.qmd.*`, `memory.citations` oraz konfiguracji Dreaming pod `plugins.entries.memory-core.config.dreaming` -- [Polecenia ukośnikowe](/pl/tools/slash-commands) dla bieżącego katalogu poleceń wbudowanych + bundled -- strony właściciela kanału/Pluginu dla powierzchni poleceń specyficznych dla kanału +- [Odwołanie do konfiguracji pamięci](/pl/reference/memory-config) dla `agents.defaults.memorySearch.*`, `memory.qmd.*`, `memory.citations` oraz konfiguracji Dreaming w `plugins.entries.memory-core.config.dreaming` +- [Polecenia Slash](/pl/tools/slash-commands) dla bieżącego katalogu poleceń wbudowanych + bundled +- strony właścicieli kanałów/Pluginów dla powierzchni poleceń specyficznych dla kanału -Format konfiguracji to **JSON5** (dozwolone komentarze i przecinki końcowe). Wszystkie pola są opcjonalne — OpenClaw używa bezpiecznych wartości domyślnych, gdy zostaną pominięte. +Format konfiguracji to **JSON5** (dozwolone komentarze + końcowe przecinki). Wszystkie pola są opcjonalne — OpenClaw używa bezpiecznych wartości domyślnych, gdy zostaną pominięte. --- @@ -41,30 +41,30 @@ Każdy kanał uruchamia się automatycznie, gdy istnieje jego sekcja konfiguracj ### Dostęp do DM i grup -Wszystkie kanały obsługują zasady DM i zasady grup: +Wszystkie kanały obsługują zasady dla DM i zasady dla grup: -| Zasada DM | Zachowanie | -| -------------------- | -------------------------------------------------------------- | +| Zasada DM | Działanie | +| -------------------- | ------------------------------------------------------------- | | `pairing` (domyślna) | Nieznani nadawcy otrzymują jednorazowy kod parowania; właściciel musi zatwierdzić | | `allowlist` | Tylko nadawcy z `allowFrom` (lub sparowanego magazynu dozwolonych) | | `open` | Zezwalaj na wszystkie przychodzące DM (wymaga `allowFrom: ["*"]`) | -| `disabled` | Ignoruj wszystkie przychodzące DM | +| `disabled` | Ignoruj wszystkie przychodzące DM | -| Zasada grup | Zachowanie | -| -------------------- | ---------------------------------------------------- | +| Zasada grup | Działanie | +| -------------------- | ----------------------------------------------------- | | `allowlist` (domyślna) | Tylko grupy pasujące do skonfigurowanej listy dozwolonych | -| `open` | Pomija listy dozwolonych grup (nadal obowiązuje bramkowanie wzmiankami) | -| `disabled` | Blokuje wszystkie wiadomości grupowe/pokojowe | +| `open` | Pomiń listy dozwolonych grup (ograniczenie do wzmianek nadal obowiązuje) | +| `disabled` | Blokuj wszystkie wiadomości grupowe/pokojów | `channels.defaults.groupPolicy` ustawia wartość domyślną, gdy `groupPolicy` dostawcy nie jest ustawione. Kody parowania wygasają po 1 godzinie. Oczekujące żądania parowania DM są ograniczone do **3 na kanał**. -Jeśli blok dostawcy całkowicie nie istnieje (`channels.` jest nieobecne), zasada grup w czasie działania wraca do `allowlist` (fail-closed) z ostrzeżeniem przy uruchomieniu. +Jeśli blok dostawcy jest całkowicie nieobecny (`channels.` nie istnieje), zasada grup w czasie działania wraca do `allowlist` (fail-closed) z ostrzeżeniem przy uruchamianiu. ### Nadpisania modelu dla kanału -Użyj `channels.modelByChannel`, aby przypiąć określone identyfikatory kanałów do modelu. Wartości akceptują `provider/model` lub skonfigurowane aliasy modeli. Mapowanie kanału ma zastosowanie wtedy, gdy sesja nie ma już nadpisania modelu (na przykład ustawionego przez `/model`). +Użyj `channels.modelByChannel`, aby przypiąć określone identyfikatory kanałów do modelu. Wartości akceptują `provider/model` lub skonfigurowane aliasy modeli. Mapowanie kanału jest stosowane, gdy sesja nie ma już nadpisania modelu (na przykład ustawionego przez `/model`). ```json5 { @@ -85,9 +85,9 @@ Użyj `channels.modelByChannel`, aby przypiąć określone identyfikatory kanał } ``` -### Domyślne ustawienia kanałów i Heartbeat +### Ustawienia domyślne kanałów i Heartbeat -Użyj `channels.defaults` dla wspólnej zasady grup i zachowania Heartbeat we wszystkich dostawcach: +Użyj `channels.defaults` dla współdzielonego zachowania zasad grup i Heartbeat między dostawcami: ```json5 { @@ -106,14 +106,14 @@ Użyj `channels.defaults` dla wspólnej zasady grup i zachowania Heartbeat we ws ``` - `channels.defaults.groupPolicy`: zapasowa zasada grup, gdy `groupPolicy` na poziomie dostawcy nie jest ustawione. -- `channels.defaults.contextVisibility`: domyślny tryb widoczności dodatkowego kontekstu dla wszystkich kanałów. Wartości: `all` (domyślna, uwzględnia cały cytowany/wątkowy/historyczny kontekst), `allowlist` (uwzględnia tylko kontekst od nadawców z listy dozwolonych), `allowlist_quote` (jak allowlist, ale zachowuje jawny kontekst cytatu/odpowiedzi). Nadpisanie per kanał: `channels..contextVisibility`. -- `channels.defaults.heartbeat.showOk`: uwzględnia zdrowe statusy kanałów w wyjściu Heartbeat. -- `channels.defaults.heartbeat.showAlerts`: uwzględnia statusy zdegradowane/błędów w wyjściu Heartbeat. -- `channels.defaults.heartbeat.useIndicator`: renderuje zwarte wyjście Heartbeat w stylu wskaźnika. +- `channels.defaults.contextVisibility`: domyślny tryb widoczności kontekstu uzupełniającego dla wszystkich kanałów. Wartości: `all` (domyślna, uwzględnia cały cytowany/wątkowy/historyczny kontekst), `allowlist` (uwzględnia tylko kontekst od nadawców z listy dozwolonych), `allowlist_quote` (jak allowlist, ale zachowuje jawny kontekst cytatu/odpowiedzi). Nadpisanie per kanał: `channels..contextVisibility`. +- `channels.defaults.heartbeat.showOk`: uwzględniaj zdrowe stany kanałów w danych wyjściowych Heartbeat. +- `channels.defaults.heartbeat.showAlerts`: uwzględniaj stany obniżonej sprawności/błędów w danych wyjściowych Heartbeat. +- `channels.defaults.heartbeat.useIndicator`: renderuj zwarte dane wyjściowe Heartbeat w stylu wskaźnika. ### WhatsApp -WhatsApp działa przez kanał web gateway (`Baileys Web`). Uruchamia się automatycznie, gdy istnieje połączona sesja. +WhatsApp działa przez kanał web Gateway (Baileys Web). Uruchamia się automatycznie, gdy istnieje połączona sesja. ```json5 { @@ -124,7 +124,7 @@ WhatsApp działa przez kanał web gateway (`Baileys Web`). Uruchamia się automa textChunkLimit: 4000, chunkMode: "length", // length | newline mediaMaxMb: 50, - sendReadReceipts: true, // blue ticks (false in self-chat mode) + sendReadReceipts: true, // niebieskie ptaszki (false w trybie czatu z samym sobą) groups: { "*": { requireMention: true }, }, @@ -165,7 +165,7 @@ WhatsApp działa przez kanał web gateway (`Baileys Web`). Uruchamia się automa ``` - Polecenia wychodzące domyślnie używają konta `default`, jeśli istnieje; w przeciwnym razie pierwszego skonfigurowanego identyfikatora konta (posortowanego). -- Opcjonalne `channels.whatsapp.defaultAccount` nadpisuje ten zapasowy wybór domyślnego konta, gdy pasuje do skonfigurowanego identyfikatora konta. +- Opcjonalne `channels.whatsapp.defaultAccount` nadpisuje ten zapasowy wybór domyślnego konta, gdy odpowiada skonfigurowanemu identyfikatorowi konta. - Starszy katalog uwierzytelniania Baileys dla pojedynczego konta jest migrowany przez `openclaw doctor` do `whatsapp/default`. - Nadpisania per konto: `channels.whatsapp.accounts..sendReadReceipts`, `channels.whatsapp.accounts..dmPolicy`, `channels.whatsapp.accounts..allowFrom`. @@ -226,11 +226,11 @@ WhatsApp działa przez kanał web gateway (`Baileys Web`). Uruchamia się automa ``` - Token bota: `channels.telegram.botToken` lub `channels.telegram.tokenFile` (tylko zwykły plik; dowiązania symboliczne są odrzucane), z `TELEGRAM_BOT_TOKEN` jako wartością zapasową dla konta domyślnego. -- Opcjonalne `channels.telegram.defaultAccount` nadpisuje wybór konta domyślnego, gdy pasuje do skonfigurowanego identyfikatora konta. +- Opcjonalne `channels.telegram.defaultAccount` nadpisuje domyślny wybór konta, gdy odpowiada skonfigurowanemu identyfikatorowi konta. - W konfiguracjach wielokontowych (2+ identyfikatory kont) ustaw jawne konto domyślne (`channels.telegram.defaultAccount` lub `channels.telegram.accounts.default`), aby uniknąć routingu zapasowego; `openclaw doctor` ostrzega, gdy tego brakuje lub jest nieprawidłowe. -- `configWrites: false` blokuje zapisy konfiguracji inicjowane przez Telegram (migracje identyfikatorów supergrup, `/config set|unset`). +- `configWrites: false` blokuje zapisy konfiguracji inicjowane z Telegrama (migracje identyfikatorów supergrup, `/config set|unset`). - Wpisy najwyższego poziomu `bindings[]` z `type: "acp"` konfigurują trwałe powiązania ACP dla tematów forum (użyj kanonicznego `chatId:topic:topicId` w `match.peer.id`). Semantyka pól jest współdzielona w [ACP Agents](/pl/tools/acp-agents#channel-specific-settings). -- Podglądy strumienia Telegram używają `sendMessage` + `editMessageText` (działa w czatach bezpośrednich i grupowych). +- Podglądy strumieni Telegram używają `sendMessage` + `editMessageText` (działa w czatach bezpośrednich i grupowych). - Zasady ponawiania: zobacz [Zasady ponawiania](/pl/concepts/retry). ### Discord @@ -334,33 +334,33 @@ WhatsApp działa przez kanał web gateway (`Baileys Web`). Uruchamia się automa ``` - Token: `channels.discord.token`, z `DISCORD_BOT_TOKEN` jako wartością zapasową dla konta domyślnego. -- Bezpośrednie wywołania wychodzące, które podają jawny `token` Discorda, używają tego tokena dla wywołania; ustawienia ponawiania/zasad konta nadal pochodzą z wybranego konta w aktywnej migawce runtime. -- Opcjonalne `channels.discord.defaultAccount` nadpisuje wybór konta domyślnego, gdy pasuje do skonfigurowanego identyfikatora konta. -- Używaj `user:` (DM) lub `channel:` (kanał guild) jako celów dostarczenia; same numeryczne identyfikatory są odrzucane. -- Slugi guild są pisane małymi literami, a spacje są zastępowane przez `-`; klucze kanałów używają nazwy w formie sluga (bez `#`). Preferuj identyfikatory guild. -- Wiadomości utworzone przez bota są domyślnie ignorowane. `allowBots: true` je włącza; użyj `allowBots: "mentions"`, aby akceptować tylko wiadomości botów, które wspominają bota (własne wiadomości nadal są filtrowane). -- `channels.discord.guilds..ignoreOtherMentions` (oraz nadpisania na poziomie kanału) odrzuca wiadomości, które wspominają innego użytkownika lub rolę, ale nie bota (z wyłączeniem @everyone/@here). +- Bezpośrednie wywołania wychodzące, które podają jawny Discord `token`, używają tego tokenu dla wywołania; ustawienia ponawiania/zasad konta nadal pochodzą z wybranego konta w aktywnej migawce środowiska uruchomieniowego. +- Opcjonalne `channels.discord.defaultAccount` nadpisuje domyślny wybór konta, gdy odpowiada skonfigurowanemu identyfikatorowi konta. +- Używaj `user:` (DM) lub `channel:` (kanał serwera) jako celów dostarczania; same numeryczne identyfikatory są odrzucane. +- Slugi serwerów są pisane małymi literami, a spacje są zastępowane przez `-`; klucze kanałów używają nazwy w formie sluga (bez `#`). Preferuj identyfikatory serwerów. +- Wiadomości tworzone przez bota są domyślnie ignorowane. `allowBots: true` je włącza; użyj `allowBots: "mentions"`, aby akceptować tylko wiadomości botów, które wspominają bota (własne wiadomości nadal są filtrowane). +- `channels.discord.guilds..ignoreOtherMentions` (oraz nadpisania kanału) odrzuca wiadomości, które wspominają innego użytkownika lub rolę, ale nie bota (z wyłączeniem @everyone/@here). - `maxLinesPerMessage` (domyślnie 17) dzieli wysokie wiadomości nawet wtedy, gdy mają mniej niż 2000 znaków. -- `channels.discord.threadBindings` steruje routowaniem powiązanym z wątkami Discorda: - - `enabled`: nadpisanie Discorda dla funkcji sesji powiązanych z wątkami (`/focus`, `/unfocus`, `/agents`, `/session idle`, `/session max-age` oraz dostarczanie/routowanie powiązane) - - `idleHours`: nadpisanie Discorda dla automatycznego odfokusowania po bezczynności w godzinach (`0` wyłącza) - - `maxAgeHours`: nadpisanie Discorda dla twardego maksymalnego wieku w godzinach (`0` wyłącza) - - `spawnSubagentSessions`: przełącznik opt-in dla automatycznego tworzenia/powiązywania wątków przez `sessions_spawn({ thread: true })` +- `channels.discord.threadBindings` kontroluje routowanie związane z wątkami Discord: + - `enabled`: nadpisanie Discord dla funkcji sesji związanych z wątkami (`/focus`, `/unfocus`, `/agents`, `/session idle`, `/session max-age` oraz dostarczania/routowania związanego z powiązaniem) + - `idleHours`: nadpisanie Discord dla automatycznego odfokusowania po bezczynności w godzinach (`0` wyłącza) + - `maxAgeHours`: nadpisanie Discord dla sztywnego maksymalnego wieku w godzinach (`0` wyłącza) + - `spawnSubagentSessions`: przełącznik opt-in dla automatycznego tworzenia/powiązania wątku przez `sessions_spawn({ thread: true })` - Wpisy najwyższego poziomu `bindings[]` z `type: "acp"` konfigurują trwałe powiązania ACP dla kanałów i wątków (użyj identyfikatora kanału/wątku w `match.peer.id`). Semantyka pól jest współdzielona w [ACP Agents](/pl/tools/acp-agents#channel-specific-settings). -- `channels.discord.ui.components.accentColor` ustawia kolor akcentu dla kontenerów komponentów Discord v2. -- `channels.discord.voice` włącza rozmowy w kanałach głosowych Discorda oraz opcjonalne automatyczne dołączanie + nadpisania TTS. -- `channels.discord.voice.daveEncryption` i `channels.discord.voice.decryptionFailureTolerance` są przekazywane do opcji DAVE `@discordjs/voice` (domyślnie `true` i `24`). -- OpenClaw dodatkowo próbuje odzyskać odbiór głosu przez opuszczenie/ponowne dołączenie do sesji głosowej po powtarzających się błędach odszyfrowywania. -- `channels.discord.streaming` to kanoniczny klucz trybu strumieniowania. Starsze wartości `streamMode` i logiczne `streaming` są migrowane automatycznie. -- `channels.discord.autoPresence` mapuje dostępność runtime na obecność bota (healthy => online, degraded => idle, exhausted => dnd) i pozwala na opcjonalne nadpisania tekstu statusu. +- `channels.discord.ui.components.accentColor` ustawia kolor akcentu dla kontenerów Discord components v2. +- `channels.discord.voice` włącza rozmowy w kanałach głosowych Discord oraz opcjonalne automatyczne dołączanie + nadpisania TTS. +- `channels.discord.voice.daveEncryption` i `channels.discord.voice.decryptionFailureTolerance` są przekazywane do opcji DAVE w `@discordjs/voice` (domyślnie `true` i `24`). +- OpenClaw dodatkowo próbuje odzyskać odbiór głosu, opuszczając i ponownie dołączając do sesji głosowej po powtarzających się błędach deszyfrowania. +- `channels.discord.streaming` jest kanonicznym kluczem trybu strumieniowania. Starsze wartości `streamMode` oraz logiczne `streaming` są migrowane automatycznie. +- `channels.discord.autoPresence` mapuje dostępność środowiska uruchomieniowego na obecność bota (healthy => online, degraded => idle, exhausted => dnd) i pozwala na opcjonalne nadpisania tekstu statusu. - `channels.discord.dangerouslyAllowNameMatching` ponownie włącza dopasowywanie po zmiennej nazwie/tagu (tryb zgodności break-glass). -- `channels.discord.execApprovals`: natywne dla Discorda dostarczanie zatwierdzeń exec i autoryzacja zatwierdzających. - - `enabled`: `true`, `false` lub `"auto"` (domyślnie). W trybie auto zatwierdzenia exec aktywują się, gdy osoby zatwierdzające można rozwiązać z `approvers` lub `commands.ownerAllowFrom`. - - `approvers`: identyfikatory użytkowników Discorda, którzy mogą zatwierdzać żądania exec. Gdy pominięte, wartość zapasowa pochodzi z `commands.ownerAllowFrom`. +- `channels.discord.execApprovals`: natywne dla Discord dostarczanie zatwierdzeń exec i autoryzacja zatwierdzających. + - `enabled`: `true`, `false` lub `"auto"` (domyślnie). W trybie auto zatwierdzenia exec aktywują się, gdy zatwierdzający mogą zostać rozwiązani z `approvers` lub `commands.ownerAllowFrom`. + - `approvers`: identyfikatory użytkowników Discord, którzy mogą zatwierdzać żądania exec. Gdy pominięte, używane jest `commands.ownerAllowFrom`. - `agentFilter`: opcjonalna lista dozwolonych identyfikatorów agentów. Pomiń, aby przekazywać zatwierdzenia dla wszystkich agentów. - `sessionFilter`: opcjonalne wzorce kluczy sesji (podciąg lub regex). - - `target`: gdzie wysyłać prośby o zatwierdzenie. `"dm"` (domyślnie) wysyła do DM zatwierdzających, `"channel"` wysyła do kanału źródłowego, `"both"` wysyła do obu. Gdy target zawiera `"channel"`, przyciski mogą być używane tylko przez rozpoznanych zatwierdzających. - - `cleanupAfterResolve`: gdy `true`, usuwa DM z zatwierdzeniami po zatwierdzeniu, odrzuceniu lub przekroczeniu czasu. + - `target`: gdzie wysyłać prośby o zatwierdzenie. `"dm"` (domyślnie) wysyła do DM zatwierdzającego, `"channel"` wysyła do kanału źródłowego, `"both"` wysyła do obu. Gdy target obejmuje `"channel"`, przyciski mogą być używane tylko przez rozwiązanych zatwierdzających. + - `cleanupAfterResolve`: gdy `true`, usuwa DM z zatwierdzeniem po zatwierdzeniu, odrzuceniu lub przekroczeniu limitu czasu. **Tryby powiadomień o reakcjach:** `off` (brak), `own` (wiadomości bota, domyślnie), `all` (wszystkie wiadomości), `allowlist` (z `guilds..users` dla wszystkich wiadomości). @@ -393,10 +393,10 @@ WhatsApp działa przez kanał web gateway (`Baileys Web`). Uruchamia się automa } ``` -- JSON konta usługi: osadzony (`serviceAccount`) lub oparty na pliku (`serviceAccountFile`). +- JSON konta usługi: wbudowany (`serviceAccount`) lub oparty na pliku (`serviceAccountFile`). - SecretRef konta usługi jest również obsługiwany (`serviceAccountRef`). - Zapasowe wartości środowiskowe: `GOOGLE_CHAT_SERVICE_ACCOUNT` lub `GOOGLE_CHAT_SERVICE_ACCOUNT_FILE`. -- Używaj `spaces/` lub `users/` jako celów dostarczenia. +- Używaj `spaces/` lub `users/` jako celów dostarczania. - `channels.googlechat.dangerouslyAllowNameMatching` ponownie włącza dopasowywanie po zmiennym principalu e-mail (tryb zgodności break-glass). ### Slack @@ -464,35 +464,30 @@ WhatsApp działa przez kanał web gateway (`Baileys Web`). Uruchamia się automa } ``` -- **Tryb Socket** wymaga zarówno `botToken`, jak i `appToken` (`SLACK_BOT_TOKEN` + `SLACK_APP_TOKEN` jako zapasowe wartości środowiskowe dla konta domyślnego). -- **Tryb HTTP** wymaga `botToken` plus `signingSecret` (na poziomie głównym lub per konto). -- `botToken`, `appToken`, `signingSecret` i `userToken` akceptują zwykłe - łańcuchy znaków lub obiekty SecretRef. -- Migawki kont Slacka udostępniają pola źródła/statusu dla poszczególnych poświadczeń, takie jak - `botTokenSource`, `botTokenStatus`, `appTokenStatus` oraz, w trybie HTTP, - `signingSecretStatus`. `configured_unavailable` oznacza, że konto jest - skonfigurowane przez SecretRef, ale bieżąca ścieżka polecenia/runtime nie mogła - rozwiązać wartości sekretu. -- `configWrites: false` blokuje zapisy konfiguracji inicjowane przez Slack. -- Opcjonalne `channels.slack.defaultAccount` nadpisuje wybór konta domyślnego, gdy pasuje do skonfigurowanego identyfikatora konta. -- `channels.slack.streaming.mode` to kanoniczny klucz trybu strumieniowania Slacka. `channels.slack.streaming.nativeTransport` steruje natywnym transportem strumieniowania Slacka. Starsze wartości `streamMode`, logiczne `streaming` i `nativeStreaming` są migrowane automatycznie. -- Używaj `user:` (DM) lub `channel:` jako celów dostarczenia. +- **Tryb socket** wymaga zarówno `botToken`, jak i `appToken` (`SLACK_BOT_TOKEN` + `SLACK_APP_TOKEN` jako zapasowe wartości środowiskowe dla konta domyślnego). +- **Tryb HTTP** wymaga `botToken` oraz `signingSecret` (na poziomie głównym lub per konto). +- `botToken`, `appToken`, `signingSecret` i `userToken` akceptują zwykłe ciągi tekstowe lub obiekty SecretRef. +- Migawki kont Slack udostępniają pola źródła/statusu per poświadczenie, takie jak `botTokenSource`, `botTokenStatus`, `appTokenStatus` oraz, w trybie HTTP, `signingSecretStatus`. `configured_unavailable` oznacza, że konto jest skonfigurowane przez SecretRef, ale bieżąca ścieżka polecenia/środowiska uruchomieniowego nie mogła rozwiązać wartości sekretu. +- `configWrites: false` blokuje zapisy konfiguracji inicjowane ze Slacka. +- Opcjonalne `channels.slack.defaultAccount` nadpisuje domyślny wybór konta, gdy odpowiada skonfigurowanemu identyfikatorowi konta. +- `channels.slack.streaming.mode` jest kanonicznym kluczem trybu strumieniowania Slack. `channels.slack.streaming.nativeTransport` kontroluje natywny transport strumieniowania Slack. Starsze wartości `streamMode`, logiczne `streaming` i `nativeStreaming` są migrowane automatycznie. +- Używaj `user:` (DM) lub `channel:` jako celów dostarczania. **Tryby powiadomień o reakcjach:** `off`, `own` (domyślnie), `all`, `allowlist` (z `reactionAllowlist`). -**Izolacja sesji wątków:** `thread.historyScope` jest per wątek (domyślnie) lub współdzielony w całym kanale. `thread.inheritParent` kopiuje transkrypt kanału nadrzędnego do nowych wątków. +**Izolacja sesji w wątkach:** `thread.historyScope` jest per wątek (domyślnie) lub współdzielone w kanale. `thread.inheritParent` kopiuje transkrypt kanału nadrzędnego do nowych wątków. -- Natywne strumieniowanie Slacka oraz status w stylu asystenta Slacka „is typing...” wymagają docelowego wątku odpowiedzi. DM najwyższego poziomu domyślnie pozostają poza wątkiem, więc używają `typingReaction` lub zwykłego dostarczenia zamiast podglądu w stylu wątku. -- `typingReaction` dodaje tymczasową reakcję do przychodzącej wiadomości Slacka podczas generowania odpowiedzi, a następnie usuwa ją po zakończeniu. Użyj shortcode emoji Slacka, takiego jak `"hourglass_flowing_sand"`. -- `channels.slack.execApprovals`: natywne dla Slacka dostarczanie zatwierdzeń exec i autoryzacja zatwierdzających. Ten sam schemat co w Discordzie: `enabled` (`true`/`false`/`"auto"`), `approvers` (identyfikatory użytkowników Slacka), `agentFilter`, `sessionFilter` i `target` (`"dm"`, `"channel"` lub `"both"`). +- Natywne strumieniowanie Slack oraz status wątku Slack w stylu asystenta „pisze...” wymagają celu odpowiedzi w wątku. DM najwyższego poziomu domyślnie pozostają poza wątkiem, więc używają `typingReaction` lub zwykłego dostarczania zamiast podglądu w stylu wątku. +- `typingReaction` dodaje tymczasową reakcję do przychodzącej wiadomości Slack podczas generowania odpowiedzi, a następnie usuwa ją po zakończeniu. Użyj shortcode emoji Slack, takiego jak `"hourglass_flowing_sand"`. +- `channels.slack.execApprovals`: natywne dla Slack dostarczanie zatwierdzeń exec i autoryzacja zatwierdzających. Ten sam schemat co Discord: `enabled` (`true`/`false`/`"auto"`), `approvers` (identyfikatory użytkowników Slack), `agentFilter`, `sessionFilter` i `target` (`"dm"`, `"channel"` lub `"both"`). -| Grupa działań | Domyślnie | Uwagi | -| ------------- | --------- | ---------------------- | -| reactions | włączone | Reagowanie + lista reakcji | -| messages | włączone | Odczyt/wysyłanie/edycja/usuwanie | -| pins | włączone | Przypinanie/odpinanie/lista | -| memberInfo | włączone | Informacje o członku | -| emojiList | włączone | Lista niestandardowych emoji | +| Grupa akcji | Domyślnie | Uwagi | +| ----------- | --------- | ---------------------- | +| reactions | włączone | Reagowanie + lista reakcji | +| messages | włączone | Odczyt/wysyłanie/edycja/usuwanie | +| pins | włączone | Przypinanie/odpinanie/lista | +| memberInfo | włączone | Informacje o członku | +| emojiList | włączone | Lista niestandardowych emoji | ### Mattermost @@ -528,21 +523,17 @@ Mattermost jest dostarczany jako Plugin: `openclaw plugins install @openclaw/mat Tryby czatu: `oncall` (odpowiada na wzmiankę @, domyślnie), `onmessage` (każda wiadomość), `onchar` (wiadomości zaczynające się od prefiksu wyzwalającego). -Gdy włączone są natywne polecenia Mattermost: +Gdy natywne polecenia Mattermost są włączone: - `commands.callbackPath` musi być ścieżką (na przykład `/api/channels/mattermost/command`), a nie pełnym adresem URL. -- `commands.callbackUrl` musi wskazywać punkt końcowy Gateway OpenClaw i być osiągalny z serwera Mattermost. -- Natywne wywołania zwrotne poleceń ukośnikowych są uwierzytelniane za pomocą tokenów per polecenie zwracanych - przez Mattermost podczas rejestracji poleceń ukośnikowych. Jeśli rejestracja się nie powiedzie lub żadne - polecenia nie zostaną aktywowane, OpenClaw odrzuci wywołania zwrotne z komunikatem - `Unauthorized: invalid command token.` -- W przypadku prywatnych/tailnet/wewnętrznych hostów callbacków Mattermost może wymagać, - aby `ServiceSettings.AllowedUntrustedInternalConnections` zawierało host/domenę callbacku. +- `commands.callbackUrl` musi wskazywać punkt końcowy Gateway OpenClaw i musi być osiągalny z serwera Mattermost. +- Natywne callbacki slash są uwierzytelniane za pomocą tokenów per polecenie zwracanych przez Mattermost podczas rejestracji poleceń slash. Jeśli rejestracja się nie powiedzie lub żadne polecenia nie zostaną aktywowane, OpenClaw odrzuca callbacki z komunikatem `Unauthorized: invalid command token.` +- Dla prywatnych/tailnet/wewnętrznych hostów callbacków Mattermost może wymagać, aby `ServiceSettings.AllowedUntrustedInternalConnections` zawierało host/domenę callbacku. Używaj wartości host/domena, a nie pełnych adresów URL. -- `channels.mattermost.configWrites`: zezwalaj lub zabraniaj zapisów konfiguracji inicjowanych przez Mattermost. +- `channels.mattermost.configWrites`: zezwalaj lub zabraniaj zapisów konfiguracji inicjowanych z Mattermost. - `channels.mattermost.requireMention`: wymagaj `@mention` przed odpowiedzią w kanałach. -- `channels.mattermost.groups..requireMention`: nadpisanie bramkowania wzmianką per kanał (`"*"` dla wartości domyślnej). -- Opcjonalne `channels.mattermost.defaultAccount` nadpisuje wybór konta domyślnego, gdy pasuje do skonfigurowanego identyfikatora konta. +- `channels.mattermost.groups..requireMention`: nadpisanie ograniczenia do wzmianek per kanał (`"*"` dla wartości domyślnej). +- Opcjonalne `channels.mattermost.defaultAccount` nadpisuje domyślny wybór konta, gdy odpowiada skonfigurowanemu identyfikatorowi konta. ### Signal @@ -566,12 +557,12 @@ Gdy włączone są natywne polecenia Mattermost: **Tryby powiadomień o reakcjach:** `off`, `own` (domyślnie), `all`, `allowlist` (z `reactionAllowlist`). - `channels.signal.account`: przypina uruchamianie kanału do określonej tożsamości konta Signal. -- `channels.signal.configWrites`: zezwala lub zabrania zapisów konfiguracji inicjowanych przez Signal. -- Opcjonalne `channels.signal.defaultAccount` nadpisuje wybór konta domyślnego, gdy pasuje do skonfigurowanego identyfikatora konta. +- `channels.signal.configWrites`: zezwala lub zabrania zapisów konfiguracji inicjowanych z Signal. +- Opcjonalne `channels.signal.defaultAccount` nadpisuje domyślny wybór konta, gdy odpowiada skonfigurowanemu identyfikatorowi konta. ### BlueBubbles -BlueBubbles to zalecana ścieżka dla iMessage (oparta na Pluginie, konfigurowana pod `channels.bluebubbles`). +BlueBubbles jest zalecaną ścieżką iMessage (obsługiwaną przez Plugin, konfigurowaną w `channels.bluebubbles`). ```json5 { @@ -586,9 +577,9 @@ BlueBubbles to zalecana ścieżka dla iMessage (oparta na Pluginie, konfigurowan } ``` -- Podstawowe ścieżki kluczy opisane tutaj: `channels.bluebubbles`, `channels.bluebubbles.dmPolicy`. -- Opcjonalne `channels.bluebubbles.defaultAccount` nadpisuje wybór konta domyślnego, gdy pasuje do skonfigurowanego identyfikatora konta. -- Wpisy najwyższego poziomu `bindings[]` z `type: "acp"` mogą wiązać konwersacje BlueBubbles z trwałymi sesjami ACP. Użyj uchwytu BlueBubbles lub ciągu docelowego (`chat_id:*`, `chat_guid:*`, `chat_identifier:*`) w `match.peer.id`. Współdzielona semantyka pól: [ACP Agents](/pl/tools/acp-agents#channel-specific-settings). +- Główne ścieżki kluczy opisane tutaj: `channels.bluebubbles`, `channels.bluebubbles.dmPolicy`. +- Opcjonalne `channels.bluebubbles.defaultAccount` nadpisuje domyślny wybór konta, gdy odpowiada skonfigurowanemu identyfikatorowi konta. +- Wpisy najwyższego poziomu `bindings[]` z `type: "acp"` mogą powiązać konwersacje BlueBubbles z trwałymi sesjami ACP. Użyj uchwytu BlueBubbles lub ciągu docelowego (`chat_id:*`, `chat_guid:*`, `chat_identifier:*`) w `match.peer.id`. Współdzielona semantyka pól: [ACP Agents](/pl/tools/acp-agents#channel-specific-settings). - Pełna konfiguracja kanału BlueBubbles jest udokumentowana w [BlueBubbles](/pl/channels/bluebubbles). ### iMessage @@ -617,17 +608,17 @@ OpenClaw uruchamia `imsg rpc` (JSON-RPC przez stdio). Nie jest wymagany daemon a } ``` -- Opcjonalne `channels.imessage.defaultAccount` nadpisuje wybór konta domyślnego, gdy pasuje do skonfigurowanego identyfikatora konta. +- Opcjonalne `channels.imessage.defaultAccount` nadpisuje domyślny wybór konta, gdy odpowiada skonfigurowanemu identyfikatorowi konta. -- Wymaga Full Disk Access do bazy danych Messages. +- Wymaga pełnego dostępu do dysku dla bazy danych Messages. - Preferuj cele `chat_id:`. Użyj `imsg chats --limit 20`, aby wyświetlić listę czatów. -- `cliPath` może wskazywać na opakowanie SSH; ustaw `remoteHost` (`host` lub `user@host`) dla pobierania załączników przez SCP. -- `attachmentRoots` i `remoteAttachmentRoots` ograniczają ścieżki przychodzących załączników (domyślnie: `/Users/*/Library/Messages/Attachments`). +- `cliPath` może wskazywać na wrapper SSH; ustaw `remoteHost` (`host` lub `user@host`) dla pobierania załączników przez SCP. +- `attachmentRoots` i `remoteAttachmentRoots` ograniczają ścieżki załączników przychodzących (domyślnie: `/Users/*/Library/Messages/Attachments`). - SCP używa ścisłego sprawdzania klucza hosta, więc upewnij się, że klucz hosta przekaźnika już istnieje w `~/.ssh/known_hosts`. -- `channels.imessage.configWrites`: zezwalaj lub zabraniaj zapisów konfiguracji inicjowanych przez iMessage. -- Wpisy najwyższego poziomu `bindings[]` z `type: "acp"` mogą wiązać konwersacje iMessage z trwałymi sesjami ACP. Użyj znormalizowanego uchwytu lub jawnego celu czatu (`chat_id:*`, `chat_guid:*`, `chat_identifier:*`) w `match.peer.id`. Współdzielona semantyka pól: [ACP Agents](/pl/tools/acp-agents#channel-specific-settings). +- `channels.imessage.configWrites`: zezwalaj lub zabraniaj zapisów konfiguracji inicjowanych z iMessage. +- Wpisy najwyższego poziomu `bindings[]` z `type: "acp"` mogą powiązać konwersacje iMessage z trwałymi sesjami ACP. Użyj znormalizowanego uchwytu lub jawnego celu czatu (`chat_id:*`, `chat_guid:*`, `chat_identifier:*`) w `match.peer.id`. Współdzielona semantyka pól: [ACP Agents](/pl/tools/acp-agents#channel-specific-settings). - + ```bash #!/usr/bin/env bash @@ -638,7 +629,7 @@ exec ssh -T gateway-host imsg "$@" ### Matrix -Matrix jest obsługiwany przez rozszerzenie i konfigurowany pod `channels.matrix`. +Matrix jest obsługiwany przez rozszerzenie i konfigurowany w `channels.matrix`. ```json5 { @@ -669,24 +660,24 @@ Matrix jest obsługiwany przez rozszerzenie i konfigurowany pod `channels.matrix ``` - Uwierzytelnianie tokenem używa `accessToken`; uwierzytelnianie hasłem używa `userId` + `password`. -- `channels.matrix.proxy` kieruje ruch HTTP Matrix przez jawny serwer proxy HTTP(S). Nazwane konta mogą go nadpisywać przez `channels.matrix.accounts..proxy`. -- `channels.matrix.network.dangerouslyAllowPrivateNetwork` zezwala na prywatne/wewnętrzne homeservery. `proxy` i to sieciowe opt-in są niezależnymi ustawieniami. +- `channels.matrix.proxy` kieruje ruch HTTP Matrix przez jawny proxy HTTP(S). Nazwane konta mogą to nadpisać przez `channels.matrix.accounts..proxy`. +- `channels.matrix.network.dangerouslyAllowPrivateNetwork` zezwala na prywatne/wewnętrzne homeserwery. `proxy` i ten opt-in sieciowy są niezależnymi mechanizmami sterowania. - `channels.matrix.defaultAccount` wybiera preferowane konto w konfiguracjach wielokontowych. -- `channels.matrix.autoJoin` ma domyślnie wartość `off`, więc zaproszone pokoje i nowe zaproszenia w stylu DM są ignorowane, dopóki nie ustawisz `autoJoin: "allowlist"` z `autoJoinAllowlist` lub `autoJoin: "always"`. +- Domyślna wartość `channels.matrix.autoJoin` to `off`, więc zaproszone pokoje i nowe zaproszenia w stylu DM są ignorowane, dopóki nie ustawisz `autoJoin: "allowlist"` z `autoJoinAllowlist` lub `autoJoin: "always"`. - `channels.matrix.execApprovals`: natywne dla Matrix dostarczanie zatwierdzeń exec i autoryzacja zatwierdzających. - - `enabled`: `true`, `false` lub `"auto"` (domyślnie). W trybie auto zatwierdzenia exec aktywują się, gdy osoby zatwierdzające można rozwiązać z `approvers` lub `commands.ownerAllowFrom`. + - `enabled`: `true`, `false` lub `"auto"` (domyślnie). W trybie auto zatwierdzenia exec aktywują się, gdy zatwierdzający mogą zostać rozwiązani z `approvers` lub `commands.ownerAllowFrom`. - `approvers`: identyfikatory użytkowników Matrix (np. `@owner:example.org`) uprawnione do zatwierdzania żądań exec. - `agentFilter`: opcjonalna lista dozwolonych identyfikatorów agentów. Pomiń, aby przekazywać zatwierdzenia dla wszystkich agentów. - `sessionFilter`: opcjonalne wzorce kluczy sesji (podciąg lub regex). - `target`: gdzie wysyłać prośby o zatwierdzenie. `"dm"` (domyślnie), `"channel"` (pokój źródłowy) lub `"both"`. - Nadpisania per konto: `channels.matrix.accounts..execApprovals`. -- `channels.matrix.dm.sessionScope` steruje sposobem grupowania DM Matrix w sesje: `per-user` (domyślnie) współdzieli według routowanego peera, a `per-room` izoluje każdy pokój DM. -- Sondy statusu Matrix i wyszukiwania w aktywnym katalogu używają tych samych zasad proxy co ruch runtime. -- Pełna konfiguracja Matrix, reguły targetowania i przykłady konfiguracji są udokumentowane w [Matrix](/pl/channels/matrix). +- `channels.matrix.dm.sessionScope` kontroluje sposób grupowania DM Matrix w sesje: `per-user` (domyślnie) współdzieli według routowanego peera, a `per-room` izoluje każdy pokój DM. +- Sondy stanu Matrix i wyszukiwania katalogu na żywo używają tych samych zasad proxy co ruch środowiska uruchomieniowego. +- Pełna konfiguracja Matrix, zasady kierowania i przykłady konfiguracji są udokumentowane w [Matrix](/pl/channels/matrix). ### Microsoft Teams -Microsoft Teams jest obsługiwany przez rozszerzenie i konfigurowany pod `channels.msteams`. +Microsoft Teams jest obsługiwany przez rozszerzenie i konfigurowany w `channels.msteams`. ```json5 { @@ -701,12 +692,12 @@ Microsoft Teams jest obsługiwany przez rozszerzenie i konfigurowany pod `channe } ``` -- Podstawowe ścieżki kluczy opisane tutaj: `channels.msteams`, `channels.msteams.configWrites`. +- Główne ścieżki kluczy opisane tutaj: `channels.msteams`, `channels.msteams.configWrites`. - Pełna konfiguracja Teams (poświadczenia, Webhook, zasady DM/grup, nadpisania per zespół/per kanał) jest udokumentowana w [Microsoft Teams](/pl/channels/msteams). ### IRC -IRC jest obsługiwane przez rozszerzenie i konfigurowane pod `channels.irc`. +IRC jest obsługiwany przez rozszerzenie i konfigurowany w `channels.irc`. ```json5 { @@ -727,9 +718,9 @@ IRC jest obsługiwane przez rozszerzenie i konfigurowane pod `channels.irc`. } ``` -- Podstawowe ścieżki kluczy opisane tutaj: `channels.irc`, `channels.irc.dmPolicy`, `channels.irc.configWrites`, `channels.irc.nickserv.*`. -- Opcjonalne `channels.irc.defaultAccount` nadpisuje wybór konta domyślnego, gdy pasuje do skonfigurowanego identyfikatora konta. -- Pełna konfiguracja kanału IRC (host/port/TLS/kanały/listy dozwolonych/bramkowanie wzmiankami) jest udokumentowana w [IRC](/pl/channels/irc). +- Główne ścieżki kluczy opisane tutaj: `channels.irc`, `channels.irc.dmPolicy`, `channels.irc.configWrites`, `channels.irc.nickserv.*`. +- Opcjonalne `channels.irc.defaultAccount` nadpisuje domyślny wybór konta, gdy odpowiada skonfigurowanemu identyfikatorowi konta. +- Pełna konfiguracja kanału IRC (host/port/TLS/kanały/listy dozwolonych/ograniczenie do wzmianek) jest udokumentowana w [IRC](/pl/channels/irc). ### Wiele kont (wszystkie kanały) @@ -754,28 +745,28 @@ Uruchamiaj wiele kont na kanał (każde z własnym `accountId`): } ``` -- `default` jest używane, gdy `accountId` zostanie pominięte (CLI + routing). -- Tokeny środowiskowe dotyczą tylko konta **default**. +- `default` jest używane, gdy `accountId` jest pominięte (CLI + routing). +- Tokeny środowiskowe mają zastosowanie tylko do konta **default**. - Bazowe ustawienia kanału mają zastosowanie do wszystkich kont, chyba że zostaną nadpisane per konto. - Użyj `bindings[].match.accountId`, aby kierować każde konto do innego agenta. -- Jeśli dodasz konto inne niż domyślne przez `openclaw channels add` (lub onboarding kanału), gdy nadal używasz najwyższego poziomu konfiguracji kanału dla pojedynczego konta, OpenClaw najpierw promuje najwyższego poziomu wartości pojedynczego konta o zakresie konta do mapy kont kanału, aby oryginalne konto nadal działało. Większość kanałów przenosi je do `channels..accounts.default`; Matrix może zamiast tego zachować istniejący pasujący nazwany/domyslny cel. -- Istniejące powiązania tylko kanałowe (bez `accountId`) nadal pasują do konta domyślnego; powiązania o zakresie konta pozostają opcjonalne. -- `openclaw doctor --fix` również naprawia mieszane kształty, przenosząc najwyższego poziomu wartości pojedynczego konta o zakresie konta do promowanego konta wybranego dla tego kanału. Większość kanałów używa `accounts.default`; Matrix może zamiast tego zachować istniejący pasujący nazwany/domyslny cel. +- Jeśli dodasz konto inne niż domyślne przez `openclaw channels add` (lub onboarding kanału), gdy nadal używana jest jednokontowa konfiguracja kanału na poziomie głównym, OpenClaw najpierw promuje ograniczone do konta wartości jednokontowe z poziomu głównego do mapy kont kanału, aby oryginalne konto nadal działało. Większość kanałów przenosi je do `channels..accounts.default`; Matrix może zamiast tego zachować istniejący pasujący nazwany/domyslny cel. +- Istniejące powiązania tylko kanałowe (bez `accountId`) nadal dopasowują konto domyślne; powiązania ograniczone do konta pozostają opcjonalne. +- `openclaw doctor --fix` również naprawia mieszane kształty, przenosząc ograniczone do konta wartości jednokontowe z poziomu głównego do promowanego konta wybranego dla tego kanału. Większość kanałów używa `accounts.default`; Matrix może zamiast tego zachować istniejący pasujący nazwany/domyslny cel. ### Inne kanały rozszerzeń -Wiele kanałów rozszerzeń jest konfigurowanych jako `channels.` i opisanych na ich dedykowanych stronach kanałów (na przykład Feishu, Matrix, LINE, Nostr, Zalo, Nextcloud Talk, Synology Chat i Twitch). +Wiele kanałów rozszerzeń jest konfigurowanych jako `channels.` i udokumentowanych na ich dedykowanych stronach kanałów (na przykład Feishu, Matrix, LINE, Nostr, Zalo, Nextcloud Talk, Synology Chat i Twitch). Zobacz pełny indeks kanałów: [Kanały](/pl/channels). -### Bramka wzmianek w czatach grupowych +### Ograniczenie do wzmianek w czacie grupowym Wiadomości grupowe domyślnie **wymagają wzmianki** (wzmianka w metadanych lub bezpieczne wzorce regex). Dotyczy czatów grupowych WhatsApp, Telegram, Discord, Google Chat i iMessage. **Typy wzmianek:** -- **Wzmianki w metadanych**: Natywne wzmianki @ platformy. Ignorowane w trybie czatu własnego WhatsApp. -- **Wzorce tekstowe**: Bezpieczne wzorce regex w `agents.list[].groupChat.mentionPatterns`. Nieprawidłowe wzorce i niebezpieczne zagnieżdżone powtórzenia są ignorowane. -- Bramka wzmianek jest wymuszana tylko wtedy, gdy wykrycie jest możliwe (natywne wzmianki lub co najmniej jeden wzorzec). +- **Wzmianki w metadanych**: natywne wzmianki @ platformy. Ignorowane w trybie czatu z samym sobą w WhatsApp. +- **Wzorce tekstowe**: bezpieczne wzorce regex w `agents.list[].groupChat.mentionPatterns`. Nieprawidłowe wzorce i niebezpieczne zagnieżdżone powtórzenia są ignorowane. +- Ograniczenie do wzmianek jest egzekwowane tylko wtedy, gdy wykrywanie jest możliwe (natywne wzmianki lub co najmniej jeden wzorzec). ```json5 { @@ -805,13 +796,13 @@ Wiadomości grupowe domyślnie **wymagają wzmianki** (wzmianka w metadanych lub } ``` -Rozstrzyganie: nadpisanie per DM → wartość domyślna dostawcy → brak limitu (wszystko zachowane). +Rozstrzyganie: nadpisanie per DM → wartość domyślna dostawcy → brak limitu (zachowywane wszystko). Obsługiwane: `telegram`, `whatsapp`, `discord`, `slack`, `signal`, `imessage`, `msteams`. -#### Tryb czatu własnego +#### Tryb czatu z samym sobą -Dodaj własny numer do `allowFrom`, aby włączyć tryb czatu własnego (ignoruje natywne wzmianki @, odpowiada tylko na wzorce tekstowe): +Dodaj własny numer do `allowFrom`, aby włączyć tryb czatu z samym sobą (ignoruje natywne wzmianki @, odpowiada tylko na wzorce tekstowe): ```json5 { @@ -861,30 +852,30 @@ Dodaj własny numer do `allowFrom`, aby włączyć tryb czatu własnego (ignoruj -- Ten blok konfiguruje powierzchnie poleceń. Aktualny katalog poleceń wbudowanych + bundled znajdziesz w [Poleceniach ukośnikowych](/pl/tools/slash-commands). -- Ta strona to **odwołanie do kluczy konfiguracji**, a nie pełny katalog poleceń. Polecenia należące do kanałów/Pluginów, takie jak QQ Bot `/bot-ping` `/bot-help` `/bot-logs`, LINE `/card`, device-pair `/pair`, memory `/dreaming`, phone-control `/phone` i Talk `/voice`, są udokumentowane na stronach ich kanałów/Pluginów oraz w [Poleceniach ukośnikowych](/pl/tools/slash-commands). -- Polecenia tekstowe muszą być **samodzielnymi** wiadomościami zaczynającymi się od `/`. -- `native: "auto"` włącza natywne polecenia dla Discorda/Telegrama, pozostawia Slack wyłączony. -- `nativeSkills: "auto"` włącza natywne polecenia Skills dla Discorda/Telegrama, pozostawia Slack wyłączony. +- Ten blok konfiguruje powierzchnie poleceń. Aktualny katalog poleceń wbudowanych + bundled znajdziesz w [Polecenia Slash](/pl/tools/slash-commands). +- Ta strona jest **odwołaniem do kluczy konfiguracji**, a nie pełnym katalogiem poleceń. Polecenia należące do kanałów/Pluginów, takie jak QQ Bot `/bot-ping` `/bot-help` `/bot-logs`, LINE `/card`, device-pair `/pair`, memory `/dreaming`, phone-control `/phone` i Talk `/voice`, są udokumentowane na stronach ich kanałów/Pluginów oraz w [Poleceniach Slash](/pl/tools/slash-commands). +- Polecenia tekstowe muszą być **samodzielnymi** wiadomościami rozpoczynającymi się od `/`. +- `native: "auto"` włącza natywne polecenia dla Discord/Telegram, pozostawia Slack wyłączony. +- `nativeSkills: "auto"` włącza natywne polecenia Skills dla Discord/Telegram, pozostawia Slack wyłączony. - Nadpisanie per kanał: `channels.discord.commands.native` (bool lub `"auto"`). `false` czyści wcześniej zarejestrowane polecenia. -- Nadpisz rejestrację natywnych poleceń Skills per kanał przez `channels..commands.nativeSkills`. -- `channels.telegram.customCommands` dodaje dodatkowe wpisy do menu bota Telegram. -- `bash: true` włącza `! ` dla powłoki hosta. Wymaga `tools.elevated.enabled` oraz nadawcy w `tools.elevated.allowFrom.`. -- `config: true` włącza `/config` (odczytuje/zapisuje `openclaw.json`). Dla klientów gateway `chat.send` trwałe zapisy `/config set|unset` wymagają także `operator.admin`; tylko do odczytu `/config show` pozostaje dostępne dla zwykłych klientów operatora z zakresem zapisu. -- `mcp: true` włącza `/mcp` dla zarządzanej przez OpenClaw konfiguracji serwera MCP pod `mcp.servers`. +- Nadpisz rejestrowanie natywnych Skills per kanał przez `channels..commands.nativeSkills`. +- `channels.telegram.customCommands` dodaje dodatkowe wpisy menu bota Telegram. +- `bash: true` włącza `! ` dla powłoki hosta. Wymaga `tools.elevated.enabled` i nadawcy w `tools.elevated.allowFrom.`. +- `config: true` włącza `/config` (odczytuje/zapisuje `openclaw.json`). Dla klientów Gateway `chat.send` trwałe zapisy `/config set|unset` wymagają również `operator.admin`; tylko do odczytu `/config show` pozostaje dostępne dla zwykłych klientów operatora z zakresem zapisu. +- `mcp: true` włącza `/mcp` dla konfiguracji serwera MCP zarządzanej przez OpenClaw w `mcp.servers`. - `plugins: true` włącza `/plugins` dla wykrywania Pluginów, instalacji oraz sterowania włączaniem/wyłączaniem. -- `channels..configWrites` bramkuje mutacje konfiguracji per kanał (domyślnie: true). -- W kanałach wielokontowych `channels..accounts..configWrites` również bramkuje zapisy kierowane do tego konta (na przykład `/allowlist --config --account ` lub `/config set channels..accounts....`). -- `restart: false` wyłącza `/restart` i działania narzędzia restartu Gateway. Domyślnie: `true`. -- `ownerAllowFrom` to jawna lista dozwolonych właścicieli dla poleceń/narzędzi tylko dla właściciela. Jest oddzielna od `allowFrom`. -- `ownerDisplay: "hash"` hashuje identyfikatory właściciela w system prompt. Ustaw `ownerDisplaySecret`, aby sterować hashowaniem. -- `allowFrom` jest per dostawca. Gdy jest ustawione, jest **jedynym** źródłem autoryzacji (listy dozwolonych/parowanie kanału i `useAccessGroups` są ignorowane). +- `channels..configWrites` kontroluje mutacje konfiguracji per kanał (domyślnie: true). +- Dla kanałów wielokontowych `channels..accounts..configWrites` również kontroluje zapisy kierowane do tego konta (na przykład `/allowlist --config --account ` lub `/config set channels..accounts....`). +- `restart: false` wyłącza `/restart` i akcje narzędzia restartu Gateway. Domyślnie: `true`. +- `ownerAllowFrom` to jawna lista dozwolonych właściciela dla poleceń/narzędzi tylko dla właściciela. Jest oddzielna od `allowFrom`. +- `ownerDisplay: "hash"` haszuje identyfikatory właściciela w system prompt. Ustaw `ownerDisplaySecret`, aby sterować haszowaniem. +- `allowFrom` jest per dostawca. Gdy jest ustawione, jest **jedynym** źródłem autoryzacji (listy dozwolonych/parowanie kanału oraz `useAccessGroups` są ignorowane). - `useAccessGroups: false` pozwala poleceniom omijać zasady grup dostępu, gdy `allowFrom` nie jest ustawione. - Mapa dokumentacji poleceń: - - katalog wbudowany + bundled: [Polecenia ukośnikowe](/pl/tools/slash-commands) + - katalog wbudowany + bundled: [Polecenia Slash](/pl/tools/slash-commands) - powierzchnie poleceń specyficzne dla kanałów: [Kanały](/pl/channels) - polecenia QQ Bot: [QQ Bot](/pl/channels/qqbot) - - polecenia parowania: [Parowanie](/pl/channels/pairing) + - polecenia parowania: [Pairing](/pl/channels/pairing) - polecenie karty LINE: [LINE](/pl/channels/line) - memory dreaming: [Dreaming](/pl/concepts/dreaming) @@ -892,7 +883,7 @@ Dodaj własny numer do `allowFrom`, aby włączyć tryb czatu własnego (ignoruj --- -## Domyślne ustawienia agenta +## Ustawienia domyślne agentów ### `agents.defaults.workspace` @@ -935,8 +926,8 @@ Opcjonalna domyślna lista dozwolonych Skills dla agentów, które nie ustawiaj - Pomiń `agents.defaults.skills`, aby domyślnie nie ograniczać Skills. - Pomiń `agents.list[].skills`, aby dziedziczyć wartości domyślne. - Ustaw `agents.list[].skills: []`, aby nie mieć żadnych Skills. -- Niepusta lista `agents.list[].skills` jest końcowym zestawem dla tego agenta; nie - łączy się z wartościami domyślnymi. +- Niepusta lista `agents.list[].skills` jest ostatecznym zestawem dla tego agenta; nie + jest łączona z wartościami domyślnymi. ### `agents.defaults.skipBootstrap` @@ -952,7 +943,7 @@ Wyłącza automatyczne tworzenie plików bootstrap workspace (`AGENTS.md`, `SOUL Steruje tym, kiedy pliki bootstrap workspace są wstrzykiwane do system prompt. Domyślnie: `"always"`. -- `"continuation-skip"`: bezpieczne tury kontynuacji (po zakończonej odpowiedzi asystenta) pomijają ponowne wstrzykiwanie bootstrap workspace, zmniejszając rozmiar prompt. Uruchomienia Heartbeat i ponowienia po Compaction nadal przebudowują kontekst. +- `"continuation-skip"`: bezpieczne tury kontynuacji (po zakończonej odpowiedzi asystenta) pomijają ponowne wstrzykiwanie bootstrap workspace, zmniejszając rozmiar prompt. Uruchomienia Heartbeat i ponowne próby po Compaction nadal odbudowują kontekst. ```json5 { @@ -972,7 +963,7 @@ Maksymalna liczba znaków na plik bootstrap workspace przed obcięciem. Domyśln ### `agents.defaults.bootstrapTotalMaxChars` -Maksymalna łączna liczba znaków wstrzykiwanych we wszystkich plikach bootstrap workspace. Domyślnie: `60000`. +Maksymalna łączna liczba znaków wstrzykiwanych ze wszystkich plików bootstrap workspace. Domyślnie: `60000`. ```json5 { @@ -986,7 +977,7 @@ Steruje widocznym dla agenta tekstem ostrzeżenia, gdy kontekst bootstrap zostan Domyślnie: `"once"`. - `"off"`: nigdy nie wstrzykuj tekstu ostrzeżenia do system prompt. -- `"once"`: wstrzyknij ostrzeżenie raz dla każdego unikalnego podpisu obcięcia (zalecane). +- `"once"`: wstrzykuj ostrzeżenie raz na każdy unikalny podpis obcięcia (zalecane). - `"always"`: wstrzykuj ostrzeżenie przy każdym uruchomieniu, gdy istnieje obcięcie. ```json5 @@ -995,26 +986,26 @@ Domyślnie: `"once"`. } ``` -### Mapa własności budżetu kontekstu +### Mapa własności budżetów kontekstu -OpenClaw ma wiele wysokowolumenowych budżetów prompt/kontekstu i są one -celowo rozdzielone według podsystemów zamiast przepływać przez jedno ogólne -ustawienie. +OpenClaw ma wiele budżetów prompt/kontekstu o dużym wolumenie i są one +celowo podzielone według podsystemów, zamiast przepływać przez jeden ogólny +parametr. - `agents.defaults.bootstrapMaxChars` / `agents.defaults.bootstrapTotalMaxChars`: zwykłe wstrzykiwanie bootstrap workspace. - `agents.defaults.startupContext.*`: - jednorazowe wprowadzenie uruchamiania dla `/new` i `/reset`, w tym ostatnie - pliki `memory/*.md` z dni dziennych. + jednorazowe wprowadzenie startowe dla `/new` i `/reset`, w tym ostatnie dzienne + pliki `memory/*.md`. - `skills.limits.*`: zwarta lista Skills wstrzykiwana do system prompt. - `agents.defaults.contextLimits.*`: - ograniczone wycinki runtime i wstrzykiwane bloki należące do runtime. + ograniczone wycinki środowiska uruchomieniowego i wstrzykiwane bloki należące do środowiska uruchomieniowego. - `memory.qmd.limits.*`: - rozmiarowanie fragmentów wyszukiwania pamięci indeksowanej i wstrzyknięć. + rozmiar fragmentów i wstrzyknięć indeksowanego wyszukiwania pamięci. -Używaj pasującego nadpisania per agent tylko wtedy, gdy jeden agent potrzebuje innego +Użyj odpowiadającego nadpisania per agent tylko wtedy, gdy jeden agent potrzebuje innego budżetu: - `agents.list[].skillsLimits.maxSkillsPromptChars` @@ -1022,7 +1013,7 @@ budżetu: #### `agents.defaults.startupContext` -Steruje wprowadzeniem uruchamiania pierwszej tury wstrzykiwanym przy pustych uruchomieniach `/new` i `/reset`. +Steruje wprowadzeniem startowym pierwszej tury wstrzykiwanym przy czystych uruchomieniach `/new` i `/reset`. ```json5 { @@ -1043,7 +1034,7 @@ Steruje wprowadzeniem uruchamiania pierwszej tury wstrzykiwanym przy pustych uru #### `agents.defaults.contextLimits` -Współdzielone wartości domyślne dla ograniczonych powierzchni kontekstu runtime. +Współdzielone wartości domyślne dla ograniczonych powierzchni kontekstu środowiska uruchomieniowego. ```json5 { @@ -1060,18 +1051,18 @@ Współdzielone wartości domyślne dla ograniczonych powierzchni kontekstu runt } ``` -- `memoryGetMaxChars`: domyślny limit wycinka `memory_get` przed dodaniem - metadanych obcięcia i komunikatu o kontynuacji. -- `memoryGetDefaultLines`: domyślne okno linii `memory_get`, gdy `lines` jest +- `memoryGetMaxChars`: domyślne ograniczenie wycinka `memory_get` przed dodaniem + metadanych obcięcia i informacji o kontynuacji. +- `memoryGetDefaultLines`: domyślne okno wierszy `memory_get`, gdy `lines` jest pominięte. -- `toolResultMaxChars`: limit bieżącego wyniku narzędzia używany dla utrwalonych wyników i +- `toolResultMaxChars`: limit wyników narzędzi na żywo używany dla trwałych wyników i odzyskiwania po przepełnieniu. -- `postCompactionMaxChars`: limit wycinka AGENTS.md używany podczas odświeżającego +- `postCompactionMaxChars`: ograniczenie wycinka AGENTS.md używane podczas odświeżania wstrzyknięcia po Compaction. #### `agents.list[].contextLimits` -Nadpisanie per agent dla współdzielonych ustawień `contextLimits`. Pominięte pola dziedziczą +Nadpisanie per agent dla współdzielonych parametrów `contextLimits`. Pominięte pola dziedziczą z `agents.defaults.contextLimits`. ```json5 @@ -1098,8 +1089,8 @@ z `agents.defaults.contextLimits`. #### `skills.limits.maxSkillsPromptChars` -Globalny limit zwartej listy Skills wstrzykiwanej do system prompt. Nie -wpływa to na odczytywanie plików `SKILL.md` na żądanie. +Globalny limit dla zwartej listy Skills wstrzykiwanej do system prompt. To +nie wpływa na odczyt plików `SKILL.md` na żądanie. ```json5 { @@ -1132,10 +1123,10 @@ Nadpisanie per agent dla budżetu prompt Skills. ### `agents.defaults.imageMaxDimensionPx` -Maksymalny rozmiar w pikselach dla dłuższego boku obrazu w blokach obrazu transkryptu/narzędzia przed wywołaniami dostawcy. +Maksymalny rozmiar w pikselach dłuższego boku obrazu w blokach obrazu transkryptu/narzędzi przed wywołaniami dostawcy. Domyślnie: `1200`. -Niższe wartości zwykle zmniejszają użycie tokenów vision i rozmiar ładunku żądania przy przebiegach z dużą liczbą zrzutów ekranu. +Niższe wartości zwykle zmniejszają użycie tokenów wizji i rozmiar ładunku żądania w przebiegach z dużą liczbą zrzutów ekranu. Wyższe wartości zachowują więcej szczegółów wizualnych. ```json5 @@ -1146,7 +1137,7 @@ Wyższe wartości zachowują więcej szczegółów wizualnych. ### `agents.defaults.userTimezone` -Strefa czasowa dla kontekstu system prompt (nie znaczników czasu wiadomości). Wartość zapasowa pochodzi ze strefy czasowej hosta. +Strefa czasowa dla kontekstu system prompt (nie dla znaczników czasu wiadomości). Wartość zapasowa to strefa czasowa hosta. ```json5 { @@ -1213,48 +1204,48 @@ Format czasu w system prompt. Domyślnie: `auto` (preferencja systemu operacyjne } ``` -- `model`: akceptuje albo ciąg znaków (`"provider/model"`), albo obiekt (`{ primary, fallbacks }`). +- `model`: akceptuje albo ciąg (`"provider/model"`), albo obiekt (`{ primary, fallbacks }`). - Forma ciągu ustawia tylko model podstawowy. - - Forma obiektu ustawia model podstawowy oraz uporządkowane modele awaryjne. -- `imageModel`: akceptuje albo ciąg znaków (`"provider/model"`), albo obiekt (`{ primary, fallbacks }`). + - Forma obiektu ustawia model podstawowy oraz uporządkowane modele przełączania awaryjnego. +- `imageModel`: akceptuje albo ciąg (`"provider/model"`), albo obiekt (`{ primary, fallbacks }`). - Używany przez ścieżkę narzędzia `image` jako konfiguracja modelu vision. - - Używany także jako routing zapasowy, gdy wybrany/domyslny model nie może przyjmować danych wejściowych obrazu. -- `imageGenerationModel`: akceptuje albo ciąg znaków (`"provider/model"`), albo obiekt (`{ primary, fallbacks }`). - - Używany przez współdzieloną możliwość generowania obrazów oraz każdą przyszłą powierzchnię narzędzia/Pluginu, która generuje obrazy. + - Używany także jako routing zapasowy, gdy wybrany/domyslny model nie może przyjmować wejścia obrazowego. +- `imageGenerationModel`: akceptuje albo ciąg (`"provider/model"`), albo obiekt (`{ primary, fallbacks }`). + - Używany przez współdzieloną zdolność generowania obrazów oraz każdą przyszłą powierzchnię narzędzia/Pluginu, która generuje obrazy. - Typowe wartości: `google/gemini-3.1-flash-image-preview` dla natywnego generowania obrazów Gemini, `fal/fal-ai/flux/dev` dla fal lub `openai/gpt-image-1` dla OpenAI Images. - Jeśli wybierzesz bezpośrednio `provider/model`, skonfiguruj też pasujące uwierzytelnianie/klucz API dostawcy (na przykład `GEMINI_API_KEY` lub `GOOGLE_API_KEY` dla `google/*`, `OPENAI_API_KEY` dla `openai/*`, `FAL_KEY` dla `fal/*`). - - Jeśli zostanie pominięty, `image_generate` nadal może wywnioskować domyślnego dostawcę z uwierzytelnianiem. Najpierw próbuje bieżącego domyślnego dostawcy, a potem pozostałych zarejestrowanych dostawców generowania obrazów w kolejności identyfikatorów dostawców. -- `musicGenerationModel`: akceptuje albo ciąg znaków (`"provider/model"`), albo obiekt (`{ primary, fallbacks }`). - - Używany przez współdzieloną możliwość generowania muzyki i wbudowane narzędzie `music_generate`. + - Jeśli pole zostanie pominięte, `image_generate` nadal może wywnioskować wartość domyślną dostawcy na podstawie uwierzytelnienia. Najpierw próbuje bieżącego domyślnego dostawcy, a potem pozostałych zarejestrowanych dostawców generowania obrazów w kolejności identyfikatorów dostawców. +- `musicGenerationModel`: akceptuje albo ciąg (`"provider/model"`), albo obiekt (`{ primary, fallbacks }`). + - Używany przez współdzieloną zdolność generowania muzyki oraz wbudowane narzędzie `music_generate`. - Typowe wartości: `google/lyria-3-clip-preview`, `google/lyria-3-pro-preview` lub `minimax/music-2.5+`. - - Jeśli zostanie pominięty, `music_generate` nadal może wywnioskować domyślnego dostawcę z uwierzytelnianiem. Najpierw próbuje bieżącego domyślnego dostawcy, a potem pozostałych zarejestrowanych dostawców generowania muzyki w kolejności identyfikatorów dostawców. + - Jeśli pole zostanie pominięte, `music_generate` nadal może wywnioskować wartość domyślną dostawcy na podstawie uwierzytelnienia. Najpierw próbuje bieżącego domyślnego dostawcy, a potem pozostałych zarejestrowanych dostawców generowania muzyki w kolejności identyfikatorów dostawców. - Jeśli wybierzesz bezpośrednio `provider/model`, skonfiguruj też pasujące uwierzytelnianie/klucz API dostawcy. -- `videoGenerationModel`: akceptuje albo ciąg znaków (`"provider/model"`), albo obiekt (`{ primary, fallbacks }`). - - Używany przez współdzieloną możliwość generowania wideo i wbudowane narzędzie `video_generate`. +- `videoGenerationModel`: akceptuje albo ciąg (`"provider/model"`), albo obiekt (`{ primary, fallbacks }`). + - Używany przez współdzieloną zdolność generowania wideo oraz wbudowane narzędzie `video_generate`. - Typowe wartości: `qwen/wan2.6-t2v`, `qwen/wan2.6-i2v`, `qwen/wan2.6-r2v`, `qwen/wan2.6-r2v-flash` lub `qwen/wan2.7-r2v`. - - Jeśli zostanie pominięty, `video_generate` nadal może wywnioskować domyślnego dostawcę z uwierzytelnianiem. Najpierw próbuje bieżącego domyślnego dostawcy, a potem pozostałych zarejestrowanych dostawców generowania wideo w kolejności identyfikatorów dostawców. + - Jeśli pole zostanie pominięte, `video_generate` nadal może wywnioskować wartość domyślną dostawcy na podstawie uwierzytelnienia. Najpierw próbuje bieżącego domyślnego dostawcy, a potem pozostałych zarejestrowanych dostawców generowania wideo w kolejności identyfikatorów dostawców. - Jeśli wybierzesz bezpośrednio `provider/model`, skonfiguruj też pasujące uwierzytelnianie/klucz API dostawcy. - Bundled dostawca generowania wideo Qwen obsługuje maksymalnie 1 wyjściowe wideo, 1 wejściowy obraz, 4 wejściowe wideo, czas trwania 10 sekund oraz opcje na poziomie dostawcy `size`, `aspectRatio`, `resolution`, `audio` i `watermark`. -- `pdfModel`: akceptuje albo ciąg znaków (`"provider/model"`), albo obiekt (`{ primary, fallbacks }`). +- `pdfModel`: akceptuje albo ciąg (`"provider/model"`), albo obiekt (`{ primary, fallbacks }`). - Używany przez narzędzie `pdf` do routingu modelu. - - Jeśli zostanie pominięty, narzędzie PDF przechodzi awaryjnie do `imageModel`, a następnie do rozwiązanego modelu sesji/domyslnego. -- `pdfMaxBytesMb`: domyślny limit rozmiaru PDF dla narzędzia `pdf`, gdy `maxBytesMb` nie jest przekazane przy wywołaniu. -- `pdfMaxPages`: domyślna maksymalna liczba stron uwzględnianych przez zapasowy tryb ekstrakcji w narzędziu `pdf`. -- `verboseDefault`: domyślny poziom szczegółowości dla agentów. Wartości: `"off"`, `"on"`, `"full"`. Domyślnie: `"off"`. -- `elevatedDefault`: domyślny poziom wyjścia elevated dla agentów. Wartości: `"off"`, `"on"`, `"ask"`, `"full"`. Domyślnie: `"on"`. -- `model.primary`: format `provider/model` (np. `openai/gpt-5.4`). Jeśli pominiesz dostawcę, OpenClaw najpierw próbuje aliasu, potem unikalnego dopasowania dokładnego identyfikatora modelu wśród skonfigurowanych dostawców, a dopiero potem przechodzi do skonfigurowanego dostawcy domyślnego (przestarzałe zachowanie zgodności, więc preferuj jawne `provider/model`). Jeśli ten dostawca nie udostępnia już skonfigurowanego modelu domyślnego, OpenClaw przechodzi awaryjnie do pierwszego skonfigurowanego dostawcy/modelu zamiast zgłaszać nieaktualną wartość domyślną usuniętego dostawcy. -- `models`: skonfigurowany katalog modeli i lista dozwolonych dla `/model`. Każdy wpis może zawierać `alias` (skrót) i `params` (specyficzne dla dostawcy, na przykład `temperature`, `maxTokens`, `cacheRetention`, `context1m`). + - Jeśli pole zostanie pominięte, narzędzie PDF wraca do `imageModel`, a potem do rozwiązanego modelu sesji/domyslnego. +- `pdfMaxBytesMb`: domyślny limit rozmiaru PDF dla narzędzia `pdf`, gdy `maxBytesMb` nie zostanie przekazane przy wywołaniu. +- `pdfMaxPages`: domyślna maksymalna liczba stron uwzględnianych przez awaryjny tryb ekstrakcji w narzędziu `pdf`. +- `verboseDefault`: domyślny poziom verbose dla agentów. Wartości: `"off"`, `"on"`, `"full"`. Domyślnie: `"off"`. +- `elevatedDefault`: domyślny poziom podwyższonych danych wyjściowych dla agentów. Wartości: `"off"`, `"on"`, `"ask"`, `"full"`. Domyślnie: `"on"`. +- `model.primary`: format `provider/model` (np. `openai/gpt-5.4`). Jeśli pominiesz dostawcę, OpenClaw najpierw próbuje aliasu, potem unikalnego dopasowania dokładnego identyfikatora modelu wśród skonfigurowanych dostawców, a dopiero potem wraca do skonfigurowanego dostawcy domyślnego (przestarzałe zachowanie zgodności, więc preferuj jawne `provider/model`). Jeśli ten dostawca nie udostępnia już skonfigurowanego modelu domyślnego, OpenClaw wraca do pierwszego skonfigurowanego dostawcy/modelu zamiast ujawniać nieaktualną wartość domyślną usuniętego dostawcy. +- `models`: skonfigurowany katalog modeli i lista dozwolonych dla `/model`. Każdy wpis może zawierać `alias` (skrót) oraz `params` (specyficzne dla dostawcy, na przykład `temperature`, `maxTokens`, `cacheRetention`, `context1m`). - `params`: globalne domyślne parametry dostawcy stosowane do wszystkich modeli. Ustawiane w `agents.defaults.params` (np. `{ cacheRetention: "long" }`). -- Kolejność scalania `params` (konfiguracja): `agents.defaults.params` (globalna baza) jest nadpisywane przez `agents.defaults.models["provider/model"].params` (per model), a następnie `agents.list[].params` (pasujący identyfikator agenta) nadpisuje według klucza. Szczegóły znajdziesz w [Prompt Caching](/pl/reference/prompt-caching). -- `embeddedHarness`: domyślna niskopoziomowa polityka runtime wbudowanego agenta. Użyj `runtime: "auto"`, aby zarejestrowane harnessy Pluginów mogły przejmować obsługiwane modele, `runtime: "pi"`, aby wymusić wbudowany harness PI, albo zarejestrowanego identyfikatora harnessu, takiego jak `runtime: "codex"`. Ustaw `fallback: "none"`, aby wyłączyć automatyczny zapasowy fallback PI. -- Zapisywacze konfiguracji, które modyfikują te pola (na przykład `/models set`, `/models set-image` oraz polecenia dodawania/usuwania fallbacków), zapisują kanoniczną formę obiektu i zachowują istniejące listy fallbacków, gdy to możliwe. +- Priorytet scalania `params` (konfiguracja): `agents.defaults.params` (globalna baza) jest nadpisywane przez `agents.defaults.models["provider/model"].params` (per model), a następnie `agents.list[].params` (pasujący identyfikator agenta) nadpisuje wartości per klucz. Szczegóły znajdziesz w [Prompt Caching](/pl/reference/prompt-caching). +- `embeddedHarness`: domyślna niskopoziomowa polityka środowiska uruchomieniowego osadzonego agenta. Użyj `runtime: "auto"`, aby zarejestrowane harnessy Pluginów mogły przejmować obsługiwane modele, `runtime: "pi"`, aby wymusić wbudowany harness PI, albo zarejestrowanego identyfikatora harnessu, takiego jak `runtime: "codex"`. Ustaw `fallback: "none"`, aby wyłączyć automatyczny zapasowy PI. +- Edytory konfiguracji modyfikujące te pola (na przykład `/models set`, `/models set-image` oraz polecenia dodawania/usuwania fallbacków) zapisują kanoniczną formę obiektu i w miarę możliwości zachowują istniejące listy fallbacków. - `maxConcurrent`: maksymalna liczba równoległych uruchomień agentów między sesjami (każda sesja nadal jest serializowana). Domyślnie: 4. ### `agents.defaults.embeddedHarness` -`embeddedHarness` steruje tym, który niskopoziomowy wykonawca uruchamia tury wbudowanego agenta. +`embeddedHarness` steruje tym, który niskopoziomowy wykonawca uruchamia osadzone tury agentów. W większości wdrożeń należy pozostawić wartość domyślną `{ runtime: "auto", fallback: "pi" }`. -Użyj tego, gdy zaufany Plugin udostępnia natywny harness, taki jak bundled +Użyj tego, gdy zaufany Plugin udostępnia natywny harness, na przykład bundled harness serwera aplikacji Codex. ```json5 @@ -1272,12 +1263,12 @@ harness serwera aplikacji Codex. ``` - `runtime`: `"auto"`, `"pi"` lub identyfikator zarejestrowanego harnessu Pluginu. Bundled Plugin Codex rejestruje `codex`. -- `fallback`: `"pi"` lub `"none"`. `"pi"` zachowuje wbudowany harness PI jako kompatybilny fallback. `"none"` powoduje, że brakujący lub nieobsługiwany wybór harnessu Pluginu kończy się błędem zamiast cichego użycia PI. -- Nadpisania środowiskowe: `OPENCLAW_AGENT_RUNTIME=` nadpisuje `runtime`; `OPENCLAW_AGENT_HARNESS_FALLBACK=none` wyłącza fallback PI dla tego procesu. +- `fallback`: `"pi"` lub `"none"`. `"pi"` zachowuje wbudowany harness PI jako zapas zgodności. `"none"` powoduje błąd przy braku lub nieobsługiwanym wyborze harnessu Pluginu zamiast cichego użycia PI. +- Nadpisania środowiskowe: `OPENCLAW_AGENT_RUNTIME=` nadpisuje `runtime`; `OPENCLAW_AGENT_HARNESS_FALLBACK=none` wyłącza zapasowy PI dla tego procesu. - Dla wdrożeń tylko z Codex ustaw `model: "codex/gpt-5.4"`, `embeddedHarness.runtime: "codex"` oraz `embeddedHarness.fallback: "none"`. -- To steruje tylko wbudowanym harness chat. Generowanie mediów, vision, PDF, muzyka, wideo i TTS nadal używają własnych ustawień dostawcy/modelu. +- To steruje tylko osadzonym harness do czatu. Generowanie mediów, vision, PDF, muzyka, wideo i TTS nadal używają swoich ustawień dostawcy/modelu. -**Wbudowane skróty aliasów** (mają zastosowanie tylko wtedy, gdy model znajduje się w `agents.defaults.models`): +**Wbudowane skróty aliasów** (obowiązują tylko wtedy, gdy model znajduje się w `agents.defaults.models`): | Alias | Model | | ------------------- | -------------------------------------- | @@ -1290,7 +1281,7 @@ harness serwera aplikacji Codex. | `gemini-flash` | `google/gemini-3-flash-preview` | | `gemini-flash-lite` | `google/gemini-3.1-flash-lite-preview` | -Twoje skonfigurowane aliasy zawsze mają pierwszeństwo przed domyślnymi. +Twoje skonfigurowane aliasy zawsze mają pierwszeństwo przed wartościami domyślnymi. Modele Z.AI GLM-4.x automatycznie włączają tryb thinking, chyba że ustawisz `--thinking off` lub samodzielnie zdefiniujesz `agents.defaults.models["zai/"].params.thinking`. Modele Z.AI domyślnie włączają `tool_stream` dla strumieniowania wywołań narzędzi. Ustaw `agents.defaults.models["zai/"].params.tool_stream` na `false`, aby to wyłączyć. @@ -1298,7 +1289,7 @@ Modele Anthropic Claude 4.6 domyślnie używają thinking `adaptive`, gdy nie us ### `agents.defaults.cliBackends` -Opcjonalne backendy CLI dla zapasowych uruchomień wyłącznie tekstowych (bez wywołań narzędzi). Przydatne jako kopia zapasowa, gdy dostawcy API zawodzą. +Opcjonalne backendy CLI dla zapasowych uruchomień tylko tekstowych (bez wywołań narzędzi). Przydatne jako kopia zapasowa, gdy dostawcy API zawodzą. ```json5 { @@ -1332,7 +1323,7 @@ Opcjonalne backendy CLI dla zapasowych uruchomień wyłącznie tekstowych (bez w ### `agents.defaults.systemPromptOverride` -Zastępuje cały system prompt złożony przez OpenClaw stałym ciągiem znaków. Ustawiane na poziomie domyślnym (`agents.defaults.systemPromptOverride`) lub per agent (`agents.list[].systemPromptOverride`). Wartości per agent mają pierwszeństwo; pusta wartość lub wartość składająca się wyłącznie z białych znaków jest ignorowana. Przydatne do kontrolowanych eksperymentów z promptami. +Zastępuje cały system prompt złożony przez OpenClaw stałym ciągiem. Ustawiane na poziomie domyślnym (`agents.defaults.systemPromptOverride`) lub per agent (`agents.list[].systemPromptOverride`). Wartości per agent mają pierwszeństwo; pusta wartość lub zawierająca tylko białe znaki jest ignorowana. Przydatne do kontrolowanych eksperymentów z promptami. ```json5 { @@ -1374,14 +1365,14 @@ Okresowe uruchomienia Heartbeat. ``` - `every`: ciąg czasu trwania (ms/s/m/h). Domyślnie: `30m` (uwierzytelnianie kluczem API) lub `1h` (uwierzytelnianie OAuth). Ustaw `0m`, aby wyłączyć. -- `includeSystemPromptSection`: gdy `false`, pomija sekcję Heartbeat w system prompt i pomija wstrzykiwanie `HEARTBEAT.md` do kontekstu bootstrap. Domyślnie: `true`. -- `suppressToolErrorWarnings`: gdy `true`, pomija ładunki ostrzeżeń o błędach narzędzi podczas uruchomień Heartbeat. -- `timeoutSeconds`: maksymalny czas w sekundach dozwolony dla tury agenta Heartbeat przed jej przerwaniem. Pozostaw nieustawione, aby użyć `agents.defaults.timeoutSeconds`. -- `directPolicy`: zasada bezpośredniego/dm dostarczania. `allow` (domyślnie) zezwala na dostarczanie do bezpośredniego celu. `block` blokuje dostarczanie do bezpośredniego celu i emituje `reason=dm-blocked`. -- `lightContext`: gdy `true`, uruchomienia Heartbeat używają lekkiego kontekstu bootstrap i zachowują tylko `HEARTBEAT.md` z plików bootstrap workspace. -- `isolatedSession`: gdy `true`, każdy Heartbeat działa w świeżej sesji bez wcześniejszej historii rozmowy. Ten sam wzorzec izolacji co Cron `sessionTarget: "isolated"`. Zmniejsza koszt tokenów na Heartbeat z około 100K do około 2-5K tokenów. -- Per agent: ustaw `agents.list[].heartbeat`. Gdy dowolny agent definiuje `heartbeat`, Heartbeat uruchamiają **tylko ci agenci**. -- Heartbeat uruchamia pełne tury agenta — krótsze interwały spalają więcej tokenów. +- `includeSystemPromptSection`: gdy ma wartość false, pomija sekcję Heartbeat w system prompt i pomija wstrzyknięcie `HEARTBEAT.md` do kontekstu bootstrap. Domyślnie: `true`. +- `suppressToolErrorWarnings`: gdy ma wartość true, tłumi ładunki ostrzeżeń o błędach narzędzi podczas uruchomień Heartbeat. +- `timeoutSeconds`: maksymalny czas w sekundach dozwolony dla tury agenta Heartbeat, zanim zostanie przerwana. Pozostaw nieustawione, aby użyć `agents.defaults.timeoutSeconds`. +- `directPolicy`: zasada dostarczania bezpośredniego/DM. `allow` (domyślnie) zezwala na dostarczanie do celu bezpośredniego. `block` tłumi dostarczanie do celu bezpośredniego i emituje `reason=dm-blocked`. +- `lightContext`: gdy ma wartość true, uruchomienia Heartbeat używają lekkiego kontekstu bootstrap i zachowują tylko `HEARTBEAT.md` z plików bootstrap workspace. +- `isolatedSession`: gdy ma wartość true, każde uruchomienie Heartbeat działa w świeżej sesji bez wcześniejszej historii rozmowy. Ten sam wzorzec izolacji co Cron `sessionTarget: "isolated"`. Zmniejsza koszt tokenów na Heartbeat z około 100K do około 2-5K tokenów. +- Per agent: ustaw `agents.list[].heartbeat`. Gdy którykolwiek agent definiuje `heartbeat`, Heartbeat uruchamiają **tylko ci agenci**. +- Heartbeat uruchamia pełne tury agentów — krótsze interwały zużywają więcej tokenów. ### `agents.defaults.compaction` @@ -1411,15 +1402,15 @@ Okresowe uruchomienia Heartbeat. } ``` -- `mode`: `default` lub `safeguard` (sumaryzacja porcjowana dla długich historii). Zobacz [Compaction](/pl/concepts/compaction). -- `provider`: identyfikator zarejestrowanego Pluginu dostawcy Compaction. Gdy jest ustawiony, zamiast wbudowanej sumaryzacji LLM wywoływane jest `summarize()` dostawcy. W razie błędu następuje fallback do wbudowanej implementacji. Ustawienie dostawcy wymusza `mode: "safeguard"`. Zobacz [Compaction](/pl/concepts/compaction). -- `timeoutSeconds`: maksymalna liczba sekund dozwolona dla pojedynczej operacji Compaction, po której OpenClaw ją przerwie. Domyślnie: `900`. -- `identifierPolicy`: `strict` (domyślnie), `off` lub `custom`. `strict` dodaje wstępnie wbudowane wskazówki dotyczące zachowania nieprzezroczystych identyfikatorów podczas sumaryzacji Compaction. +- `mode`: `default` lub `safeguard` (fragmentaryczne podsumowywanie dla długich historii). Zobacz [Compaction](/pl/concepts/compaction). +- `provider`: identyfikator zarejestrowanego Pluginu dostawcy Compaction. Gdy jest ustawiony, wywoływane jest `summarize()` dostawcy zamiast wbudowanego podsumowywania LLM. W razie błędu następuje powrót do wbudowanego mechanizmu. Ustawienie dostawcy wymusza `mode: "safeguard"`. Zobacz [Compaction](/pl/concepts/compaction). +- `timeoutSeconds`: maksymalna liczba sekund dozwolona dla pojedynczej operacji Compaction, zanim OpenClaw ją przerwie. Domyślnie: `900`. +- `identifierPolicy`: `strict` (domyślnie), `off` lub `custom`. `strict` dodaje na początku wbudowane wskazówki zachowywania nieprzezroczystych identyfikatorów podczas podsumowywania Compaction. - `identifierInstructions`: opcjonalny własny tekst zachowania identyfikatorów używany, gdy `identifierPolicy=custom`. -- `postCompactionSections`: opcjonalne nazwy sekcji H2/H3 z AGENTS.md do ponownego wstrzyknięcia po Compaction. Domyślnie `["Session Startup", "Red Lines"]`; ustaw `[]`, aby wyłączyć ponowne wstrzykiwanie. Gdy nie jest ustawione lub jest jawnie ustawione na tę domyślną parę, starsze nagłówki `Every Session`/`Safety` są również akceptowane jako starszy fallback. -- `model`: opcjonalne nadpisanie `provider/model-id` tylko dla sumaryzacji Compaction. Użyj tego, gdy główna sesja ma pozostać przy jednym modelu, ale podsumowania Compaction mają działać na innym; gdy nie jest ustawione, Compaction używa modelu podstawowego sesji. -- `notifyUser`: gdy `true`, wysyła krótkie powiadomienie do użytkownika przy rozpoczęciu Compaction (na przykład „Compacting context...”). Domyślnie wyłączone, aby Compaction pozostał cichy. -- `memoryFlush`: cicha tura agentowa przed automatycznym Compaction do zapisania trwałych wspomnień. Pomijana, gdy workspace jest tylko do odczytu. +- `postCompactionSections`: opcjonalne nazwy sekcji H2/H3 z AGENTS.md do ponownego wstrzyknięcia po Compaction. Domyślnie `["Session Startup", "Red Lines"]`; ustaw `[]`, aby wyłączyć ponowne wstrzykiwanie. Gdy nieustawione lub jawnie ustawione na tę domyślną parę, starsze nagłówki `Every Session`/`Safety` są również akceptowane jako zapas zgodności. +- `model`: opcjonalne nadpisanie `provider/model-id` tylko dla podsumowywania Compaction. Użyj tego, gdy główna sesja ma zachować jeden model, ale podsumowania Compaction powinny działać na innym; gdy nie jest ustawione, Compaction używa podstawowego modelu sesji. +- `notifyUser`: gdy `true`, wysyła krótkie powiadomienie do użytkownika przy rozpoczęciu Compaction (na przykład „Trwa kompaktowanie kontekstu...” ). Domyślnie wyłączone, aby Compaction pozostawało ciche. +- `memoryFlush`: cicha agentowa tura przed automatycznym Compaction w celu zapisania trwałych wspomnień. Pomijane, gdy workspace jest tylko do odczytu. ### `agents.defaults.contextPruning` @@ -1448,17 +1439,17 @@ Przycina **stare wyniki narzędzi** z kontekstu w pamięci przed wysłaniem do L - `mode: "cache-ttl"` włącza przebiegi przycinania. -- `ttl` określa, jak często przycinanie może zostać uruchomione ponownie (po ostatnim dotknięciu cache). -- Przycinanie najpierw miękko skraca zbyt duże wyniki narzędzi, a następnie w razie potrzeby twardo czyści starsze wyniki narzędzi. +- `ttl` określa, jak często przycinanie może zostać ponownie uruchomione (po ostatnim dotknięciu pamięci podręcznej). +- Przycinanie najpierw miękko skraca zbyt duże wyniki narzędzi, a potem w razie potrzeby całkowicie czyści starsze wyniki narzędzi. -**Miękkie skracanie** zachowuje początek i koniec oraz wstawia `...` pośrodku. +**Miękkie skracanie** zachowuje początek + koniec i wstawia `...` pośrodku. **Twarde czyszczenie** zastępuje cały wynik narzędzia placeholderem. Uwagi: - Bloki obrazów nigdy nie są skracane/czyszczone. -- Współczynniki są oparte na znakach (w przybliżeniu), a nie na dokładnej liczbie tokenów. +- Współczynniki są oparte na liczbie znaków (w przybliżeniu), a nie na dokładnej liczbie tokenów. - Jeśli istnieje mniej niż `keepLastAssistants` wiadomości asystenta, przycinanie jest pomijane. @@ -1482,10 +1473,10 @@ Szczegóły działania znajdziesz w [Session Pruning](/pl/concepts/session-pruni ``` - Kanały inne niż Telegram wymagają jawnego `*.blockStreaming: true`, aby włączyć odpowiedzi blokowe. -- Nadpisania kanałów: `channels..blockStreamingCoalesce` (oraz warianty per konto). Signal/Slack/Discord/Google Chat mają domyślnie `minChars: 1500`. -- `humanDelay`: losowa pauza między odpowiedziami blokowymi. `natural` = 800–2500 ms. Nadpisanie per agent: `agents.list[].humanDelay`. +- Nadpisania kanału: `channels..blockStreamingCoalesce` (oraz warianty per konto). Signal/Slack/Discord/Google Chat domyślnie używają `minChars: 1500`. +- `humanDelay`: losowa przerwa między odpowiedziami blokowymi. `natural` = 800–2500 ms. Nadpisanie per agent: `agents.list[].humanDelay`. -Szczegóły działania i porcjowania znajdziesz w [Streaming](/pl/concepts/streaming). +Szczegóły zachowania + fragmentowania znajdziesz w [Streaming](/pl/concepts/streaming). ### Wskaźniki pisania @@ -1500,7 +1491,7 @@ Szczegóły działania i porcjowania znajdziesz w [Streaming](/pl/concepts/strea } ``` -- Domyślnie: `instant` dla czatów bezpośrednich/wzmianek, `message` dla czatów grupowych bez wzmianki. +- Domyślne wartości: `instant` dla czatów bezpośrednich/wzmianek, `message` dla niewzmiankowanych czatów grupowych. - Nadpisania per sesja: `session.typingMode`, `session.typingIntervalSeconds`. Zobacz [Typing Indicators](/pl/concepts/typing-indicators). @@ -1509,7 +1500,7 @@ Zobacz [Typing Indicators](/pl/concepts/typing-indicators). ### `agents.defaults.sandbox` -Opcjonalny sandboxing dla wbudowanego agenta. Pełny przewodnik znajdziesz w [Sandboxing](/pl/gateway/sandboxing). +Opcjonalne sandboxing dla osadzonego agenta. Pełny przewodnik znajdziesz w [Sandboxing](/pl/gateway/sandboxing). ```json5 { @@ -1604,15 +1595,15 @@ Opcjonalny sandboxing dla wbudowanego agenta. Pełny przewodnik znajdziesz w [Sa } ``` - + **Backend:** -- `docker`: lokalny runtime Docker (domyślnie) -- `ssh`: ogólny zdalny runtime oparty na SSH -- `openshell`: runtime OpenShell +- `docker`: lokalne środowisko uruchomieniowe Docker (domyślnie) +- `ssh`: ogólne zdalne środowisko uruchomieniowe oparte na SSH +- `openshell`: środowisko uruchomieniowe OpenShell -Gdy wybrane jest `backend: "openshell"`, ustawienia specyficzne dla runtime przenoszą się do +Gdy wybrane jest `backend: "openshell"`, ustawienia specyficzne dla środowiska uruchomieniowego są przenoszone do `plugins.entries.openshell.config`. **Konfiguracja backendu SSH:** @@ -1621,35 +1612,35 @@ Gdy wybrane jest `backend: "openshell"`, ustawienia specyficzne dla runtime prze - `command`: polecenie klienta SSH (domyślnie: `ssh`) - `workspaceRoot`: bezwzględny zdalny katalog główny używany dla workspace per zakres - `identityFile` / `certificateFile` / `knownHostsFile`: istniejące lokalne pliki przekazywane do OpenSSH -- `identityData` / `certificateData` / `knownHostsData`: treść inline lub SecretRef, które OpenClaw materializuje do plików tymczasowych w runtime -- `strictHostKeyChecking` / `updateHostKeys`: ustawienia zasad kluczy hosta OpenSSH +- `identityData` / `certificateData` / `knownHostsData`: zawartość inline lub SecretRefs, które OpenClaw materializuje do plików tymczasowych w czasie działania +- `strictHostKeyChecking` / `updateHostKeys`: parametry polityki kluczy hosta OpenSSH **Priorytet uwierzytelniania SSH:** - `identityData` ma pierwszeństwo przed `identityFile` - `certificateData` ma pierwszeństwo przed `certificateFile` - `knownHostsData` ma pierwszeństwo przed `knownHostsFile` -- Wartości `*Data` oparte na SecretRef są rozwiązywane z aktywnej migawki runtime sekretów przed rozpoczęciem sesji sandboxa +- Wartości `*Data` oparte na SecretRef są rozwiązywane z aktywnej migawki środowiska uruchomieniowego sekretów przed rozpoczęciem sesji sandbox **Zachowanie backendu SSH:** -- inicjalizuje zdalny workspace raz po utworzeniu lub odtworzeniu +- zasiewa zdalny workspace raz po utworzeniu lub odtworzeniu - następnie utrzymuje zdalny workspace SSH jako kanoniczny -- kieruje `exec`, narzędzia plikowe i ścieżki mediów przez SSH +- kieruje `exec`, narzędzia plikowe i ścieżki multimediów przez SSH - nie synchronizuje automatycznie zmian zdalnych z powrotem do hosta -- nie obsługuje kontenerów przeglądarki sandboxa +- nie obsługuje kontenerów przeglądarki sandbox **Dostęp do workspace:** -- `none`: workspace sandboxa per zakres pod `~/.openclaw/sandboxes` -- `ro`: workspace sandboxa pod `/workspace`, workspace agenta montowany tylko do odczytu pod `/agent` -- `rw`: workspace agenta montowany do odczytu i zapisu pod `/workspace` +- `none`: workspace sandbox per zakres w `~/.openclaw/sandboxes` +- `ro`: workspace sandbox w `/workspace`, workspace agenta montowany tylko do odczytu w `/agent` +- `rw`: workspace agenta montowany do odczytu i zapisu w `/workspace` **Zakres:** - `session`: kontener + workspace per sesja -- `agent`: jeden kontener + workspace na agenta (domyślnie) -- `shared`: współdzielony kontener i workspace (brak izolacji między sesjami) +- `agent`: jeden kontener + workspace per agent (domyślnie) +- `shared`: współdzielony kontener i workspace (bez izolacji między sesjami) **Konfiguracja Pluginu OpenShell:** @@ -1679,30 +1670,30 @@ Gdy wybrane jest `backend: "openshell"`, ustawienia specyficzne dla runtime prze **Tryb OpenShell:** -- `mirror`: inicjalizuje zdalne z lokalnego przed `exec`, synchronizuje z powrotem po `exec`; lokalny workspace pozostaje kanoniczny -- `remote`: inicjalizuje zdalne raz przy tworzeniu sandboxa, a następnie utrzymuje zdalny workspace jako kanoniczny +- `mirror`: zasiewa zdalne środowisko z lokalnego przed `exec`, synchronizuje z powrotem po `exec`; lokalny workspace pozostaje kanoniczny +- `remote`: zasiewa zdalne środowisko raz przy tworzeniu sandbox, a następnie utrzymuje zdalny workspace jako kanoniczny -W trybie `remote` lokalne na hoście edycje wykonane poza OpenClaw nie są automatycznie synchronizowane do sandboxa po kroku inicjalizacji. -Transport odbywa się przez SSH do sandboxa OpenShell, ale Plugin zarządza cyklem życia sandboxa i opcjonalną synchronizacją mirror. +W trybie `remote` lokalne edycje hosta wykonane poza OpenClaw nie są automatycznie synchronizowane do sandbox po kroku zasiewania. +Transport odbywa się przez SSH do sandbox OpenShell, ale Plugin zarządza cyklem życia sandbox oraz opcjonalną synchronizacją mirror. -**`setupCommand`** uruchamia się raz po utworzeniu kontenera (przez `sh -lc`). Wymaga wychodzącego ruchu sieciowego, zapisywalnego katalogu głównego i użytkownika root. +**`setupCommand`** uruchamia się raz po utworzeniu kontenera (przez `sh -lc`). Wymaga wychodzącego dostępu sieciowego, zapisywalnego katalogu głównego i użytkownika root. -**Kontenery domyślnie używają `network: "none"`** — ustaw `"bridge"` (lub własną sieć bridge), jeśli agent potrzebuje dostępu wychodzącego. +**Kontenery domyślnie używają `network: "none"`** — ustaw `"bridge"` (lub niestandardową sieć bridge), jeśli agent potrzebuje dostępu wychodzącego. `"host"` jest blokowane. `"container:"` jest domyślnie blokowane, chyba że jawnie ustawisz `sandbox.docker.dangerouslyAllowContainerNamespaceJoin: true` (tryb break-glass). -**Przychodzące załączniki** są etapowane do `media/inbound/*` w aktywnym workspace. +**Załączniki przychodzące** są etapowane do `media/inbound/*` w aktywnym workspace. -**`docker.binds`** montuje dodatkowe katalogi hosta; globalne i per-agent bindy są scalane. +**`docker.binds`** montuje dodatkowe katalogi hosta; globalne i per agent powiązania są scalane. -**Przeglądarka sandboxa** (`sandbox.browser.enabled`): Chromium + CDP w kontenerze. Adres URL noVNC jest wstrzykiwany do system prompt. Nie wymaga `browser.enabled` w `openclaw.json`. -Dostęp obserwatora noVNC domyślnie używa uwierzytelniania VNC, a OpenClaw emituje adres URL z krótkotrwałym tokenem (zamiast ujawniać hasło we współdzielonym adresie URL). +**Przeglądarka w sandbox** (`sandbox.browser.enabled`): Chromium + CDP w kontenerze. Adres URL noVNC jest wstrzykiwany do system prompt. Nie wymaga `browser.enabled` w `openclaw.json`. +Dostęp obserwatora noVNC domyślnie używa uwierzytelniania VNC, a OpenClaw emituje URL z krótkotrwałym tokenem (zamiast ujawniać hasło we współdzielonym URL). -- `allowHostControl: false` (domyślnie) blokuje sesjom sandboxowanym kierowanie do przeglądarki hosta. -- `network` ma domyślnie wartość `openclaw-sandbox-browser` (dedykowana sieć bridge). Ustaw `bridge` tylko wtedy, gdy jawnie chcesz globalnej łączności bridge. -- `cdpSourceRange` opcjonalnie ogranicza wejściowy ruch CDP na krawędzi kontenera do zakresu CIDR (na przykład `172.21.0.1/32`). -- `sandbox.browser.binds` montuje dodatkowe katalogi hosta tylko do kontenera przeglądarki sandboxa. Gdy jest ustawione (w tym `[]`), zastępuje `docker.binds` dla kontenera przeglądarki. -- Domyślne parametry uruchamiania są zdefiniowane w `scripts/sandbox-browser-entrypoint.sh` i dostrojone do hostów kontenerowych: +- `allowHostControl: false` (domyślnie) blokuje sesjom w sandbox kierowanie do przeglądarki hosta. +- `network` domyślnie ma wartość `openclaw-sandbox-browser` (dedykowana sieć bridge). Ustaw `bridge` tylko wtedy, gdy jawnie chcesz globalnej łączności bridge. +- `cdpSourceRange` opcjonalnie ogranicza ruch przychodzący CDP na krawędzi kontenera do zakresu CIDR (na przykład `172.21.0.1/32`). +- `sandbox.browser.binds` montuje dodatkowe katalogi hosta tylko do kontenera przeglądarki sandbox. Gdy jest ustawione (w tym `[]`), zastępuje `docker.binds` dla kontenera przeglądarki. +- Domyślne opcje uruchamiania są zdefiniowane w `scripts/sandbox-browser-entrypoint.sh` i dostrojone pod hosty kontenerów: - `--remote-debugging-address=127.0.0.1` - `--remote-debugging-port=` - `--user-data-dir=${HOME}/.chrome` @@ -1723,24 +1714,24 @@ Dostęp obserwatora noVNC domyślnie używa uwierzytelniania VNC, a OpenClaw emi - `--disable-3d-apis`, `--disable-software-rasterizer` i `--disable-gpu` są domyślnie włączone i można je wyłączyć przez `OPENCLAW_BROWSER_DISABLE_GRAPHICS_FLAGS=0`, jeśli użycie WebGL/3D tego wymaga. - - `OPENCLAW_BROWSER_DISABLE_EXTENSIONS=0` ponownie włącza rozszerzenia, jeśli Twój przepływ pracy - ich wymaga. + - `OPENCLAW_BROWSER_DISABLE_EXTENSIONS=0` ponownie włącza rozszerzenia, jeśli + zależy od nich Twój workflow. - `--renderer-process-limit=2` można zmienić przez `OPENCLAW_BROWSER_RENDERER_PROCESS_LIMIT=`; ustaw `0`, aby użyć domyślnego limitu procesów Chromium. - - dodatkowo `--no-sandbox` i `--disable-setuid-sandbox`, gdy włączone jest `noSandbox`. - - Wartości domyślne są bazą obrazu kontenera; aby zmienić domyślne ustawienia kontenera, użyj własnego obrazu przeglądarki z własnym - entrypoint. + - plus `--no-sandbox` i `--disable-setuid-sandbox`, gdy `noSandbox` jest włączone. + - Wartości domyślne są bazą obrazu kontenera; aby zmienić domyślne ustawienia kontenera, użyj niestandardowego + obrazu przeglądarki z niestandardowym entrypoint. -Sandboxing przeglądarki i `sandbox.docker.binds` są dostępne tylko dla Dockera. +Sandboxing przeglądarki i `sandbox.docker.binds` są dostępne tylko dla Docker. -Zbuduj obrazy: +Budowanie obrazów: ```bash -scripts/sandbox-setup.sh # główny obraz sandboxa -scripts/sandbox-browser-setup.sh # opcjonalny obraz przeglądarki +scripts/sandbox-setup.sh # main sandbox image +scripts/sandbox-browser-setup.sh # optional browser image ``` ### `agents.list` (nadpisania per agent) @@ -1793,20 +1784,20 @@ scripts/sandbox-browser-setup.sh # opcjonalny obraz przeglądarki ``` - `id`: stabilny identyfikator agenta (wymagany). -- `default`: gdy ustawiono wiele, wygrywa pierwszy (zapisywane jest ostrzeżenie). Jeśli nie ustawiono żadnego, domyślny jest pierwszy wpis na liście. +- `default`: gdy ustawionych jest wiele, wygrywa pierwszy (zapisywane jest ostrzeżenie). Jeśli żaden nie jest ustawiony, domyślny jest pierwszy wpis listy. - `model`: forma ciągu nadpisuje tylko `primary`; forma obiektu `{ primary, fallbacks }` nadpisuje oba (`[]` wyłącza globalne fallbacki). Zadania Cron, które nadpisują tylko `primary`, nadal dziedziczą domyślne fallbacki, chyba że ustawisz `fallbacks: []`. -- `params`: parametry strumienia per agent scalane na wpis wybranego modelu w `agents.defaults.models`. Użyj tego do nadpisań specyficznych dla agenta, takich jak `cacheRetention`, `temperature` lub `maxTokens`, bez powielania całego katalogu modeli. +- `params`: parametry strumienia per agent scalane ponad wybranym wpisem modelu w `agents.defaults.models`. Użyj tego do nadpisań specyficznych dla agenta, takich jak `cacheRetention`, `temperature` lub `maxTokens`, bez duplikowania całego katalogu modeli. - `skills`: opcjonalna lista dozwolonych Skills per agent. Jeśli pominięta, agent dziedziczy `agents.defaults.skills`, gdy jest ustawione; jawna lista zastępuje wartości domyślne zamiast się z nimi scalać, a `[]` oznacza brak Skills. -- `thinkingDefault`: opcjonalny domyślny poziom thinking per agent (`off | minimal | low | medium | high | xhigh | adaptive`). Nadpisuje `agents.defaults.thinkingDefault` dla tego agenta, gdy nie ustawiono nadpisania per wiadomość ani per sesję. -- `reasoningDefault`: opcjonalna domyślna widoczność reasoning per agent (`on | off | stream`). Ma zastosowanie, gdy nie ustawiono nadpisania reasoning per wiadomość ani per sesję. -- `fastModeDefault`: opcjonalna wartość domyślna trybu fast per agent (`true | false`). Ma zastosowanie, gdy nie ustawiono nadpisania trybu fast per wiadomość ani per sesję. -- `embeddedHarness`: opcjonalne nadpisanie niskopoziomowej polityki harness per agent. Użyj `{ runtime: "codex", fallback: "none" }`, aby jeden agent był tylko Codex, podczas gdy inni agenci zachowają domyślny fallback PI. -- `runtime`: opcjonalny deskryptor runtime per agent. Użyj `type: "acp"` z ustawieniami domyślnymi `runtime.acp` (`agent`, `backend`, `mode`, `cwd`), gdy agent ma domyślnie używać sesji harness ACP. -- `identity.avatar`: ścieżka względem workspace, adres URL `http(s)` lub URI `data:`. +- `thinkingDefault`: opcjonalny domyślny poziom thinking per agent (`off | minimal | low | medium | high | xhigh | adaptive`). Nadpisuje `agents.defaults.thinkingDefault` dla tego agenta, gdy nie ustawiono nadpisania per wiadomość lub sesję. +- `reasoningDefault`: opcjonalna domyślna widoczność reasoning per agent (`on | off | stream`). Stosowane, gdy nie ustawiono nadpisania reasoning per wiadomość lub sesję. +- `fastModeDefault`: opcjonalna wartość domyślna trybu fast per agent (`true | false`). Stosowane, gdy nie ustawiono nadpisania trybu fast per wiadomość lub sesję. +- `embeddedHarness`: opcjonalne nadpisanie polityki niskopoziomowego harness per agent. Użyj `{ runtime: "codex", fallback: "none" }`, aby jeden agent był tylko Codex, podczas gdy inni agenci zachowują domyślny zapasowy PI. +- `runtime`: opcjonalny deskryptor środowiska uruchomieniowego per agent. Użyj `type: "acp"` z wartościami domyślnymi `runtime.acp` (`agent`, `backend`, `mode`, `cwd`), gdy agent ma domyślnie używać sesji harness ACP. +- `identity.avatar`: ścieżka względna względem workspace, URL `http(s)` lub URI `data:`. - `identity` wyprowadza wartości domyślne: `ackReaction` z `emoji`, `mentionPatterns` z `name`/`emoji`. - `subagents.allowAgents`: lista dozwolonych identyfikatorów agentów dla `sessions_spawn` (`["*"]` = dowolny; domyślnie: tylko ten sam agent). -- Ochrona dziedziczenia sandboxa: jeśli sesja żądająca działa w sandboxie, `sessions_spawn` odrzuca cele, które działałyby bez sandboxa. -- `subagents.requireAgentId`: gdy `true`, blokuje wywołania `sessions_spawn`, które pomijają `agentId` (wymusza jawny wybór profilu; domyślnie: false). +- Ochrona dziedziczenia sandbox: jeśli sesja żądająca działa w sandbox, `sessions_spawn` odrzuca cele, które działałyby bez sandbox. +- `subagents.requireAgentId`: gdy true, blokuje wywołania `sessions_spawn`, które pomijają `agentId` (wymusza jawny wybór profilu; domyślnie: false). --- @@ -1829,14 +1820,14 @@ Uruchamiaj wielu izolowanych agentów w jednym Gateway. Zobacz [Multi-Agent](/pl } ``` -### Pola dopasowania binding +### Pola dopasowania powiązań -- `type` (opcjonalne): `route` dla zwykłego routingu (brakujący typ domyślnie oznacza route), `acp` dla trwałych bindingów konwersacji ACP. +- `type` (opcjonalne): `route` dla zwykłego routingu (brak typu oznacza domyślnie route), `acp` dla trwałych powiązań konwersacji ACP. - `match.channel` (wymagane) - `match.accountId` (opcjonalne; `*` = dowolne konto; pominięte = konto domyślne) - `match.peer` (opcjonalne; `{ kind: direct|group|channel, id }`) - `match.guildId` / `match.teamId` (opcjonalne; specyficzne dla kanału) -- `acp` (opcjonalne; tylko dla `type: "acp"`): `{ mode, label, cwd, backend }` +- `acp` (opcjonalne; tylko dla wpisów `type: "acp"`): `{ mode, label, cwd, backend }` **Deterministyczna kolejność dopasowania:** @@ -1847,13 +1838,13 @@ Uruchamiaj wielu izolowanych agentów w jednym Gateway. Zobacz [Multi-Agent](/pl 5. `match.accountId: "*"` (dla całego kanału) 6. Agent domyślny -W obrębie każdego poziomu wygrywa pierwszy pasujący wpis `bindings`. +W obrębie każdej warstwy wygrywa pierwszy pasujący wpis `bindings`. -Dla wpisów `type: "acp"` OpenClaw rozwiązuje po dokładnej tożsamości konwersacji (`match.channel` + konto + `match.peer.id`) i nie używa powyższej kolejności poziomów binding route. +Dla wpisów `type: "acp"` OpenClaw rozwiązuje na podstawie dokładnej tożsamości konwersacji (`match.channel` + konto + `match.peer.id`) i nie używa kolejności warstw routingu powyżej. ### Profile dostępu per agent - + ```json5 { @@ -1999,35 +1990,35 @@ Szczegóły priorytetów znajdziesz w [Multi-Agent Sandbox & Tools](/pl/tools/mu -- **`scope`**: bazowa strategia grupowania sesji dla kontekstów czatów grupowych. - - `per-sender` (domyślnie): każdy nadawca otrzymuje izolowaną sesję w ramach kontekstu kanału. +- **`scope`**: bazowa strategia grupowania sesji dla kontekstów czatu grupowego. + - `per-sender` (domyślnie): każdy nadawca otrzymuje izolowaną sesję w obrębie kontekstu kanału. - `global`: wszyscy uczestnicy w kontekście kanału współdzielą jedną sesję (używaj tylko wtedy, gdy współdzielony kontekst jest zamierzony). - **`dmScope`**: sposób grupowania DM. - `main`: wszystkie DM współdzielą główną sesję. - `per-peer`: izolacja według identyfikatora nadawcy między kanałami. - `per-channel-peer`: izolacja per kanał + nadawca (zalecane dla skrzynek odbiorczych wielu użytkowników). - `per-account-channel-peer`: izolacja per konto + kanał + nadawca (zalecane dla wielu kont). -- **`identityLinks`**: mapuje kanoniczne identyfikatory na peery z prefiksem dostawcy dla współdzielenia sesji między kanałami. -- **`reset`**: główna zasada resetu. `daily` resetuje o `atHour` czasu lokalnego; `idle` resetuje po `idleMinutes`. Gdy skonfigurowano oba, wygrywa to, co wygaśnie wcześniej. -- **`resetByType`**: nadpisania per typ (`direct`, `group`, `thread`). Starsze `dm` jest akceptowane jako alias dla `direct`. -- **`parentForkMaxTokens`**: maksymalna wartość `totalTokens` sesji nadrzędnej dozwolona przy tworzeniu rozwidlonej sesji wątku (domyślnie `100000`). - - Jeśli nadrzędne `totalTokens` przekracza tę wartość, OpenClaw rozpoczyna nową sesję wątku zamiast dziedziczyć historię transkryptu sesji nadrzędnej. - - Ustaw `0`, aby wyłączyć to zabezpieczenie i zawsze zezwalać na rozwidlanie od rodzica. -- **`mainKey`**: starsze pole. Runtime zawsze używa `"main"` dla głównego koszyka czatu bezpośredniego. -- **`agentToAgent.maxPingPongTurns`**: maksymalna liczba tur odpowiedzi zwrotnych między agentami podczas wymian agent-do-agenta (liczba całkowita, zakres: `0`–`5`). `0` wyłącza łańcuch ping-pong. -- **`sendPolicy`**: dopasowanie według `channel`, `chatType` (`direct|group|channel`, ze starszym aliasem `dm`), `keyPrefix` lub `rawKeyPrefix`. Pierwsza odmowa wygrywa. +- **`identityLinks`**: mapuje kanoniczne identyfikatory do peerów z prefiksem dostawcy w celu współdzielenia sesji między kanałami. +- **`reset`**: podstawowa zasada resetu. `daily` resetuje o `atHour` czasu lokalnego; `idle` resetuje po `idleMinutes`. Gdy skonfigurowane są oba, wygrywa ten, który wygaśnie pierwszy. +- **`resetByType`**: nadpisania per typ (`direct`, `group`, `thread`). Starsze `dm` jest akceptowane jako alias `direct`. +- **`parentForkMaxTokens`**: maksymalna liczba `totalTokens` sesji nadrzędnej dozwolona przy tworzeniu rozwidlonej sesji wątku (domyślnie `100000`). + - Jeśli `totalTokens` sesji nadrzędnej przekracza tę wartość, OpenClaw rozpoczyna nową sesję wątku zamiast dziedziczyć historię transkryptu sesji nadrzędnej. + - Ustaw `0`, aby wyłączyć to zabezpieczenie i zawsze zezwalać na rozwidlanie od sesji nadrzędnej. +- **`mainKey`**: starsze pole. Środowisko uruchomieniowe zawsze używa `"main"` dla głównego zasobnika czatu bezpośredniego. +- **`agentToAgent.maxPingPongTurns`**: maksymalna liczba tur odpowiedzi zwrotnych między agentami podczas wymian agent-agent (liczba całkowita, zakres: `0`–`5`). `0` wyłącza łańcuchy ping-pong. +- **`sendPolicy`**: dopasowanie według `channel`, `chatType` (`direct|group|channel`, ze starszym aliasem `dm`), `keyPrefix` lub `rawKeyPrefix`. Pierwsze odmówienie wygrywa. - **`maintenance`**: kontrola czyszczenia + retencji magazynu sesji. - `mode`: `warn` emituje tylko ostrzeżenia; `enforce` stosuje czyszczenie. - - `pruneAfter`: granica wieku dla nieaktualnych wpisów (domyślnie `30d`). + - `pruneAfter`: próg wieku dla nieaktualnych wpisów (domyślnie `30d`). - `maxEntries`: maksymalna liczba wpisów w `sessions.json` (domyślnie `500`). - `rotateBytes`: rotuje `sessions.json`, gdy przekroczy ten rozmiar (domyślnie `10mb`). - - `resetArchiveRetention`: retencja dla archiwów transkryptów `*.reset.`. Domyślnie taka sama jak `pruneAfter`; ustaw `false`, aby wyłączyć. - - `maxDiskBytes`: opcjonalny budżet dyskowy katalogu sesji. W trybie `warn` zapisuje ostrzeżenia; w trybie `enforce` najpierw usuwa najstarsze artefakty/sesje. - - `highWaterBytes`: opcjonalny cel po czyszczeniu budżetu. Domyślnie `80%` wartości `maxDiskBytes`. -- **`threadBindings`**: globalne wartości domyślne dla funkcji sesji powiązanych z wątkami. + - `resetArchiveRetention`: retencja dla archiwów transkryptów `*.reset.`. Domyślnie równa `pruneAfter`; ustaw `false`, aby wyłączyć. + - `maxDiskBytes`: opcjonalny limit dyskowy katalogu sesji. W trybie `warn` zapisuje ostrzeżenia; w trybie `enforce` najpierw usuwa najstarsze artefakty/sesje. + - `highWaterBytes`: opcjonalny cel po czyszczeniu do limitu. Domyślnie `80%` z `maxDiskBytes`. +- **`threadBindings`**: globalne wartości domyślne dla funkcji sesji związanych z wątkami. - `enabled`: główny domyślny przełącznik (dostawcy mogą nadpisywać; Discord używa `channels.discord.threadBindings.enabled`) - `idleHours`: domyślne automatyczne odfokusowanie po bezczynności w godzinach (`0` wyłącza; dostawcy mogą nadpisywać) - - `maxAgeHours`: domyślny twardy maksymalny wiek w godzinach (`0` wyłącza; dostawcy mogą nadpisywać) + - `maxAgeHours`: domyślny sztywny maksymalny wiek w godzinach (`0` wyłącza; dostawcy mogą nadpisywać) @@ -2067,17 +2058,17 @@ Szczegóły priorytetów znajdziesz w [Multi-Agent Sandbox & Tools](/pl/tools/mu Nadpisania per kanał/konto: `channels..responsePrefix`, `channels..accounts..responsePrefix`. -Rozstrzyganie (wygrywa najbardziej szczegółowe): konto → kanał → globalne. `""` wyłącza i zatrzymuje kaskadę. `"auto"` wyprowadza `[{identity.name}]`. +Rozstrzyganie (wygrywa najbardziej specyficzne): konto → kanał → globalne. `""` wyłącza i zatrzymuje kaskadę. `"auto"` wyprowadza `[{identity.name}]`. **Zmienne szablonu:** -| Zmienna | Opis | Przykład | -| ---------------- | ------------------------- | --------------------------- | -| `{model}` | Krótka nazwa modelu | `claude-opus-4-6` | -| `{modelFull}` | Pełny identyfikator modelu | `anthropic/claude-opus-4-6` | -| `{provider}` | Nazwa dostawcy | `anthropic` | -| `{thinkingLevel}` | Bieżący poziom thinking | `high`, `low`, `off` | -| `{identity.name}` | Nazwa tożsamości agenta | (to samo co `"auto"`) | +| Zmienna | Opis | Przykład | +| ---------------- | ---------------------- | --------------------------- | +| `{model}` | Krótka nazwa modelu | `claude-opus-4-6` | +| `{modelFull}` | Pełny identyfikator modelu | `anthropic/claude-opus-4-6` | +| `{provider}` | Nazwa dostawcy | `anthropic` | +| `{thinkingLevel}` | Bieżący poziom thinking | `high`, `low`, `off` | +| `{identity.name}` | Nazwa tożsamości agenta | (tak samo jak `"auto"`) | Zmienne nie rozróżniają wielkości liter. `{think}` jest aliasem dla `{thinkingLevel}`. @@ -2085,16 +2076,16 @@ Zmienne nie rozróżniają wielkości liter. `{think}` jest aliasem dla `{thinki - Domyślnie używa `identity.emoji` aktywnego agenta, w przeciwnym razie `"👀"`. Ustaw `""`, aby wyłączyć. - Nadpisania per kanał: `channels..ackReaction`, `channels..accounts..ackReaction`. -- Kolejność rozstrzygania: konto → kanał → `messages.ackReaction` → fallback tożsamości. +- Kolejność rozstrzygania: konto → kanał → `messages.ackReaction` → zapas z tożsamości. - Zakres: `group-mentions` (domyślnie), `group-all`, `direct`, `all`. - `removeAckAfterReply`: usuwa ack po odpowiedzi w Slack, Discord i Telegram. - `messages.statusReactions.enabled`: włącza reakcje statusu cyklu życia w Slack, Discord i Telegram. - W Slack i Discord pozostawienie bez ustawienia zachowuje włączone reakcje statusu, gdy aktywne są reakcje ack. - W Telegram ustaw to jawnie na `true`, aby włączyć reakcje statusu cyklu życia. + W Slack i Discord brak ustawienia zachowuje reakcje statusu włączone, gdy aktywne są reakcje ack. + W Telegram ustaw jawnie `true`, aby włączyć reakcje statusu cyklu życia. ### Debounce wejściowy -Łączy szybkie wiadomości tekstowe od tego samego nadawcy w jedną turę agenta. Media/załączniki są opróżniane natychmiast. Polecenia sterujące omijają debounce. +Łączy szybkie wiadomości tekstowe od tego samego nadawcy w jedną turę agenta. Multimedia/załączniki są opróżniane natychmiast. Polecenia sterujące omijają debounce. ### TTS (text-to-speech) @@ -2139,10 +2130,10 @@ Zmienne nie rozróżniają wielkości liter. `{think}` jest aliasem dla `{thinki - `auto` steruje domyślnym trybem auto-TTS: `off`, `always`, `inbound` lub `tagged`. `/tts on|off` może nadpisywać lokalne preferencje, a `/tts status` pokazuje stan efektywny. - `summaryModel` nadpisuje `agents.defaults.model.primary` dla automatycznego podsumowania. -- `modelOverrides` jest domyślnie włączone; `modelOverrides.allowProvider` ma domyślnie wartość `false` (opt-in). +- `modelOverrides` jest domyślnie włączone; `modelOverrides.allowProvider` domyślnie ma wartość `false` (opt-in). - Klucze API używają wartości zapasowych `ELEVENLABS_API_KEY`/`XI_API_KEY` oraz `OPENAI_API_KEY`. -- `openai.baseUrl` nadpisuje punkt końcowy TTS OpenAI. Kolejność rozstrzygania to konfiguracja, potem `OPENAI_TTS_BASE_URL`, potem `https://api.openai.com/v1`. -- Gdy `openai.baseUrl` wskazuje na punkt końcowy inny niż OpenAI, OpenClaw traktuje go jako serwer TTS zgodny z OpenAI i łagodzi walidację modelu/głosu. +- `openai.baseUrl` nadpisuje punkt końcowy OpenAI TTS. Kolejność rozstrzygania to konfiguracja, następnie `OPENAI_TTS_BASE_URL`, a potem `https://api.openai.com/v1`. +- Gdy `openai.baseUrl` wskazuje punkt końcowy inny niż OpenAI, OpenClaw traktuje go jako serwer TTS zgodny z OpenAI i łagodzi walidację modelu/głosu. --- @@ -2173,12 +2164,12 @@ Ustawienia domyślne dla trybu Talk (macOS/iOS/Android). ``` - `talk.provider` musi odpowiadać kluczowi w `talk.providers`, gdy skonfigurowano wielu dostawców Talk. -- Starsze płaskie klucze Talk (`talk.voiceId`, `talk.voiceAliases`, `talk.modelId`, `talk.outputFormat`, `talk.apiKey`) służą wyłącznie zgodności i są automatycznie migrowane do `talk.providers.`. -- Identyfikatory głosów używają wartości zapasowych `ELEVENLABS_VOICE_ID` lub `SAG_VOICE_ID`. -- `providers.*.apiKey` akceptuje zwykłe ciągi znaków lub obiekty SecretRef. -- Zapasowa wartość `ELEVENLABS_API_KEY` ma zastosowanie tylko wtedy, gdy nie skonfigurowano żadnego klucza API Talk. +- Starsze płaskie klucze Talk (`talk.voiceId`, `talk.voiceAliases`, `talk.modelId`, `talk.outputFormat`, `talk.apiKey`) są przeznaczone wyłącznie do zgodności i są automatycznie migrowane do `talk.providers.`. +- Identyfikatory głosu używają wartości zapasowych `ELEVENLABS_VOICE_ID` lub `SAG_VOICE_ID`. +- `providers.*.apiKey` akceptuje zwykłe ciągi tekstowe lub obiekty SecretRef. +- Wartość zapasowa `ELEVENLABS_API_KEY` ma zastosowanie tylko wtedy, gdy nie skonfigurowano żadnego klucza API Talk. - `providers.*.voiceAliases` pozwala dyrektywom Talk używać przyjaznych nazw. -- `silenceTimeoutMs` określa, jak długo tryb Talk czeka po ciszy użytkownika, zanim wyśle transkrypt. Brak ustawienia zachowuje domyślne okno pauzy platformy (`700 ms na macOS i Androidzie, 900 ms na iOS`). +- `silenceTimeoutMs` określa, jak długo tryb Talk czeka po ciszy użytkownika, zanim wyśle transkrypt. Brak ustawienia zachowuje domyślne okno pauzy platformy (`700 ms na macOS i Android, 900 ms na iOS`). --- @@ -2190,7 +2181,7 @@ Ustawienia domyślne dla trybu Talk (macOS/iOS/Android). Lokalny onboarding domyślnie ustawia nowe lokalne konfiguracje na `tools.profile: "coding"`, gdy wartość nie jest ustawiona (istniejące jawne profile są zachowywane). -| Profil | Zawiera | +| Profil | Obejmuje | | ----------- | ------------------------------------------------------------------------------------------------------------------------------- | | `minimal` | tylko `session_status` | | `coding` | `group:fs`, `group:runtime`, `group:web`, `group:sessions`, `group:memory`, `cron`, `image`, `image_generate`, `video_generate` | @@ -2201,7 +2192,7 @@ Lokalny onboarding domyślnie ustawia nowe lokalne konfiguracje na `tools.profil | Grupa | Narzędzia | | ------------------ | ----------------------------------------------------------------------------------------------------------------------- | -| `group:runtime` | `exec`, `process`, `code_execution` (`bash` jest akceptowane jako alias `exec`) | +| `group:runtime` | `exec`, `process`, `code_execution` (`bash` jest akceptowane jako alias dla `exec`) | | `group:fs` | `read`, `write`, `edit`, `apply_patch` | | `group:sessions` | `sessions_list`, `sessions_history`, `sessions_send`, `sessions_spawn`, `sessions_yield`, `subagents`, `session_status` | | `group:memory` | `memory_search`, `memory_get` | @@ -2212,11 +2203,11 @@ Lokalny onboarding domyślnie ustawia nowe lokalne konfiguracje na `tools.profil | `group:nodes` | `nodes` | | `group:agents` | `agents_list` | | `group:media` | `image`, `image_generate`, `video_generate`, `tts` | -| `group:openclaw` | Wszystkie wbudowane narzędzia (bez Pluginów dostawców) | +| `group:openclaw` | Wszystkie wbudowane narzędzia (z wyłączeniem Pluginów dostawców) | ### `tools.allow` / `tools.deny` -Globalna zasada dozwalania/zabraniania narzędzi (odmowa wygrywa). Bez rozróżniania wielkości liter, obsługuje wildcardy `*`. Stosowana nawet wtedy, gdy sandbox Docker jest wyłączony. +Globalna polityka zezwalania/zabraniania narzędzi (zabronienie ma pierwszeństwo). Bez rozróżniania wielkości liter, obsługuje symbole wieloznaczne `*`. Stosowana nawet wtedy, gdy sandbox Docker jest wyłączony. ```json5 { @@ -2242,7 +2233,7 @@ Dodatkowo ogranicza narzędzia dla określonych dostawców lub modeli. Kolejnoś ### `tools.elevated` -Steruje dostępem do elevated exec poza sandboxem: +Steruje podwyższonym dostępem `exec` poza sandbox: ```json5 { @@ -2260,7 +2251,7 @@ Steruje dostępem do elevated exec poza sandboxem: - Nadpisanie per agent (`agents.list[].tools.elevated`) może tylko dalej ograniczać. - `/elevated on|off|ask|full` zapisuje stan per sesja; dyrektywy inline mają zastosowanie do pojedynczej wiadomości. -- Elevated `exec` omija sandboxing i używa skonfigurowanej ścieżki ucieczki (`gateway` domyślnie lub `node`, gdy celem exec jest `node`). +- Podwyższone `exec` omija sandboxing i używa skonfigurowanej ścieżki wyjścia (`gateway` domyślnie lub `node`, gdy celem `exec` jest `node`). ### `tools.exec` @@ -2307,13 +2298,13 @@ Ustawienia można definiować globalnie w `tools.loopDetection` i nadpisywać pe ``` - `historySize`: maksymalna historia wywołań narzędzi zachowywana do analizy pętli. -- `warningThreshold`: próg ostrzeżeń dla powtarzających się wzorców bez postępu. -- `criticalThreshold`: wyższy próg powtórzeń do blokowania krytycznych pętli. -- `globalCircuitBreakerThreshold`: próg twardego zatrzymania dla każdego przebiegu bez postępu. -- `detectors.genericRepeat`: ostrzegaj o powtarzanych wywołaniach tego samego narzędzia z tymi samymi argumentami. -- `detectors.knownPollNoProgress`: ostrzegaj/blokuj znane narzędzia odpytywania (`process.poll`, `command_status` itp.). -- `detectors.pingPong`: ostrzegaj/blokuj naprzemienne wzorce par bez postępu. -- Jeśli `warningThreshold >= criticalThreshold` lub `criticalThreshold >= globalCircuitBreakerThreshold`, walidacja kończy się błędem. +- `warningThreshold`: próg powtarzającego się wzorca bez postępu dla ostrzeżeń. +- `criticalThreshold`: wyższy próg powtarzania do blokowania krytycznych pętli. +- `globalCircuitBreakerThreshold`: próg twardego zatrzymania dla dowolnego przebiegu bez postępu. +- `detectors.genericRepeat`: ostrzegaj przy powtarzanych wywołaniach tego samego narzędzia z tymi samymi argumentami. +- `detectors.knownPollNoProgress`: ostrzegaj/blokuj dla znanych narzędzi odpytywania (`process.poll`, `command_status` itd.). +- `detectors.pingPong`: ostrzegaj/blokuj dla naprzemiennych wzorców par bez postępu. +- Jeśli `warningThreshold >= criticalThreshold` lub `criticalThreshold >= globalCircuitBreakerThreshold`, walidacja kończy się niepowodzeniem. ### `tools.web` @@ -2383,24 +2374,24 @@ Konfiguruje rozumienie mediów przychodzących (obraz/audio/wideo): **Wpis dostawcy** (`type: "provider"` lub pominięte): -- `provider`: identyfikator dostawcy API (`openai`, `anthropic`, `google`/`gemini`, `groq` itp.) +- `provider`: identyfikator dostawcy API (`openai`, `anthropic`, `google`/`gemini`, `groq` itd.) - `model`: nadpisanie identyfikatora modelu - `profile` / `preferredProfile`: wybór profilu z `auth-profiles.json` **Wpis CLI** (`type: "cli"`): - `command`: wykonywalne polecenie do uruchomienia -- `args`: argumenty szablonowe (obsługuje `{{MediaPath}}`, `{{Prompt}}`, `{{MaxChars}}` itp.) +- `args`: sparametryzowane argumenty (obsługuje `{{MediaPath}}`, `{{Prompt}}`, `{{MaxChars}}` itd.) **Pola wspólne:** - `capabilities`: opcjonalna lista (`image`, `audio`, `video`). Domyślnie: `openai`/`anthropic`/`minimax` → image, `google` → image+audio+video, `groq` → audio. - `prompt`, `maxChars`, `maxBytes`, `timeoutSeconds`, `language`: nadpisania per wpis. -- W przypadku błędów następuje fallback do kolejnego wpisu. +- W przypadku błędów następuje przejście do następnego wpisu. -Uwierzytelnianie dostawców używa standardowej kolejności: `auth-profiles.json` → zmienne środowiskowe → `models.providers.*.apiKey`. +Uwierzytelnianie dostawcy używa standardowej kolejności: `auth-profiles.json` → zmienne środowiskowe → `models.providers.*.apiKey`. -**Pola asynchronicznego zakończenia:** +**Pola async completion:** - `asyncCompletion.directSend`: gdy `true`, ukończone asynchroniczne zadania `music_generate` i `video_generate` najpierw próbują bezpośredniego dostarczenia do kanału. Domyślnie: `false` @@ -2423,7 +2414,7 @@ Uwierzytelnianie dostawców używa standardowej kolejności: `auth-profiles.json ### `tools.sessions` -Steruje tym, które sesje mogą być celem dla narzędzi sesji (`sessions_list`, `sessions_history`, `sessions_send`). +Steruje tym, które sesje mogą być celem narzędzi sesji (`sessions_list`, `sessions_history`, `sessions_send`). Domyślnie: `tree` (bieżąca sesja + sesje utworzone przez nią, takie jak subagenci). @@ -2442,9 +2433,9 @@ Uwagi: - `self`: tylko bieżący klucz sesji. - `tree`: bieżąca sesja + sesje utworzone przez bieżącą sesję (subagenci). -- `agent`: dowolna sesja należąca do bieżącego identyfikatora agenta (może obejmować innych użytkowników, jeśli używasz sesji per-sender pod tym samym identyfikatorem agenta). +- `agent`: dowolna sesja należąca do bieżącego identyfikatora agenta (może obejmować innych użytkowników, jeśli używasz sesji per nadawca pod tym samym identyfikatorem agenta). - `all`: dowolna sesja. Kierowanie między agentami nadal wymaga `tools.agentToAgent`. -- Ograniczenie sandboxa: gdy bieżąca sesja działa w sandboxie i `agents.defaults.sandbox.sessionToolsVisibility="spawned"`, widoczność jest wymuszana na `tree`, nawet jeśli `tools.sessions.visibility="all"`. +- Ograniczenie sandbox: gdy bieżąca sesja działa w sandbox i `agents.defaults.sandbox.sessionToolsVisibility="spawned"`, widoczność jest wymuszana na `tree`, nawet jeśli `tools.sessions.visibility="all"`. ### `tools.sessions_spawn` @@ -2468,16 +2459,16 @@ Steruje obsługą załączników inline dla `sessions_spawn`. Uwagi: -- Załączniki są obsługiwane tylko dla `runtime: "subagent"`. Runtime ACP je odrzuca. -- Pliki są materializowane w workspace potomnym pod `.openclaw/attachments//` wraz z `.manifest.json`. -- Zawartość załączników jest automatycznie redagowana z trwałego zapisu transkryptu. -- Wejścia base64 są walidowane przy użyciu ścisłych kontroli alfabetu/dopełnienia i zabezpieczenia rozmiaru przed dekodowaniem. +- Załączniki są obsługiwane tylko dla `runtime: "subagent"`. Środowisko uruchomieniowe ACP je odrzuca. +- Pliki są materializowane w workspace podrzędnym w `.openclaw/attachments//` wraz z `.manifest.json`. +- Zawartość załączników jest automatycznie redagowana z trwałości transkryptu. +- Wejścia base64 są walidowane z użyciem ścisłej kontroli alfabetu/dopełnienia oraz zabezpieczenia rozmiaru przed dekodowaniem. - Uprawnienia plików to `0700` dla katalogów i `0600` dla plików. -- Czyszczenie podąża za zasadą `cleanup`: `delete` zawsze usuwa załączniki; `keep` zachowuje je tylko wtedy, gdy `retainOnSessionKeep: true`. +- Czyszczenie podąża za polityką `cleanup`: `delete` zawsze usuwa załączniki; `keep` zachowuje je tylko wtedy, gdy `retainOnSessionKeep: true`. ### `tools.experimental` -Eksperymentalne flagi wbudowanych narzędzi. Domyślnie wyłączone, chyba że obowiązuje reguła automatycznego włączania dla strict-agentic GPT-5. +Flagi eksperymentalnych wbudowanych narzędzi. Domyślnie wyłączone, chyba że obowiązuje reguła automatycznego włączania strict-agentic GPT-5. ```json5 { @@ -2491,9 +2482,9 @@ Eksperymentalne flagi wbudowanych narzędzi. Domyślnie wyłączone, chyba że o Uwagi: -- `planTool`: włącza strukturalne narzędzie `update_plan` do śledzenia nietrywialnych prac wieloetapowych. -- Domyślnie: `false`, chyba że `agents.defaults.embeddedPi.executionContract` (lub nadpisanie per agent) jest ustawione na `"strict-agentic"` dla przebiegu OpenAI lub OpenAI Codex z rodziny GPT-5. Ustaw `true`, aby wymusić włączenie narzędzia poza tym zakresem, lub `false`, aby pozostawić je wyłączone nawet dla przebiegów strict-agentic GPT-5. -- Gdy jest włączone, system prompt dodaje także wskazówki użycia, aby model używał go tylko do znaczących prac i utrzymywał najwyżej jeden krok `in_progress`. +- `planTool`: włącza strukturalne narzędzie `update_plan` do śledzenia nietrywialnej pracy wieloetapowej. +- Domyślnie: `false`, chyba że `agents.defaults.embeddedPi.executionContract` (lub nadpisanie per agent) jest ustawione na `"strict-agentic"` dla przebiegu OpenAI lub OpenAI Codex z rodziny GPT-5. Ustaw `true`, aby wymusić włączenie narzędzia poza tym zakresem, albo `false`, aby pozostawić je wyłączone nawet dla przebiegów strict-agentic GPT-5. +- Gdy jest włączone, system prompt dodaje także wskazówki użycia, aby model używał go tylko do istotnej pracy i utrzymywał co najwyżej jeden krok `in_progress`. ### `agents.defaults.subagents` @@ -2513,16 +2504,16 @@ Uwagi: } ``` -- `model`: domyślny model dla uruchamianych subagentów. Jeśli pominięte, subagenci dziedziczą model wywołującego. +- `model`: domyślny model dla utworzonych subagentów. Jeśli pominięty, subagenci dziedziczą model wywołującego. - `allowAgents`: domyślna lista dozwolonych docelowych identyfikatorów agentów dla `sessions_spawn`, gdy agent żądający nie ustawia własnego `subagents.allowAgents` (`["*"]` = dowolny; domyślnie: tylko ten sam agent). - `runTimeoutSeconds`: domyślny limit czasu (sekundy) dla `sessions_spawn`, gdy wywołanie narzędzia pomija `runTimeoutSeconds`. `0` oznacza brak limitu czasu. -- Zasada narzędzi per subagent: `tools.subagents.tools.allow` / `tools.subagents.tools.deny`. +- Polityka narzędzi per subagent: `tools.subagents.tools.allow` / `tools.subagents.tools.deny`. --- -## Niestandardowi dostawcy i bazowe adresy URL +## Niestandardowi dostawcy i base URL -OpenClaw używa wbudowanego katalogu modeli. Dodaj niestandardowych dostawców przez `models.providers` w konfiguracji lub `~/.openclaw/agents//agent/models.json`. +OpenClaw używa wbudowanego katalogu modeli. Dodawaj niestandardowych dostawców przez `models.providers` w konfiguracji lub `~/.openclaw/agents//agent/models.json`. ```json5 { @@ -2554,43 +2545,43 @@ OpenClaw używa wbudowanego katalogu modeli. Dodaj niestandardowych dostawców p - Użyj `authHeader: true` + `headers` dla niestandardowych potrzeb uwierzytelniania. - Nadpisz katalog główny konfiguracji agenta przez `OPENCLAW_AGENT_DIR` (lub `PI_CODING_AGENT_DIR`, starszy alias zmiennej środowiskowej). - Priorytet scalania dla pasujących identyfikatorów dostawców: - - Niepuste wartości `baseUrl` z `models.json` agenta mają pierwszeństwo. - - Niepuste wartości `apiKey` agenta mają pierwszeństwo tylko wtedy, gdy ten dostawca nie jest zarządzany przez SecretRef w bieżącym kontekście konfiguracji/profilu auth. - - Wartości `apiKey` dostawcy zarządzane przez SecretRef są odświeżane na podstawie znaczników źródła (`ENV_VAR_NAME` dla odwołań env, `secretref-managed` dla odwołań file/exec) zamiast utrwalania rozwiązanych sekretów. - - Wartości nagłówków dostawcy zarządzane przez SecretRef są odświeżane na podstawie znaczników źródła (`secretref-env:ENV_VAR_NAME` dla odwołań env, `secretref-managed` dla odwołań file/exec). - - Puste lub brakujące `apiKey`/`baseUrl` agenta przechodzą awaryjnie do `models.providers` w konfiguracji. - - Dla pasujących modeli `contextWindow`/`maxTokens` używana jest wyższa wartość spośród jawnej konfiguracji i domyślnych wartości katalogu. - - Dla pasujących modeli `contextTokens` zachowuje jawny limit runtime, gdy jest obecny; użyj go, aby ograniczyć efektywny kontekst bez zmiany natywnych metadanych modelu. + - Niepuste wartości `baseUrl` z agenta `models.json` mają pierwszeństwo. + - Niepuste wartości `apiKey` z agenta mają pierwszeństwo tylko wtedy, gdy ten dostawca nie jest zarządzany przez SecretRef w bieżącym kontekście konfiguracji/profilu auth. + - Wartości `apiKey` dostawców zarządzanych przez SecretRef są odświeżane ze znaczników źródła (`ENV_VAR_NAME` dla odwołań env, `secretref-managed` dla odwołań file/exec) zamiast utrwalania rozwiązanych sekretów. + - Wartości nagłówków dostawców zarządzanych przez SecretRef są odświeżane ze znaczników źródła (`secretref-env:ENV_VAR_NAME` dla odwołań env, `secretref-managed` dla odwołań file/exec). + - Puste lub brakujące `apiKey`/`baseUrl` w agencie używają wartości zapasowych z `models.providers` w konfiguracji. + - Pasujące modele `contextWindow`/`maxTokens` używają wyższej wartości między jawnie skonfigurowaną a niejawną wartością katalogową. + - Pasujące modele `contextTokens` zachowują jawny limit środowiska uruchomieniowego, gdy jest obecny; użyj go, aby ograniczyć efektywny kontekst bez zmiany natywnych metadanych modelu. - Użyj `models.mode: "replace"`, gdy chcesz, aby konfiguracja całkowicie przepisała `models.json`. - - Utrwalanie znaczników jest autorytatywne względem źródła: znaczniki są zapisywane z aktywnej migawki konfiguracji źródłowej (przed rozwiązaniem), a nie z rozwiązanych wartości sekretów runtime. + - Trwałość znaczników jest źródłowo autorytatywna: znaczniki są zapisywane z aktywnej migawki konfiguracji źródłowej (przed rozwiązaniem), a nie z rozwiązanych wartości sekretów środowiska uruchomieniowego. ### Szczegóły pól dostawcy - `models.mode`: zachowanie katalogu dostawców (`merge` lub `replace`). - `models.providers`: mapa niestandardowych dostawców kluczowana identyfikatorem dostawcy. -- `models.providers.*.api`: adapter żądań (`openai-completions`, `openai-responses`, `anthropic-messages`, `google-generative-ai` itp.). -- `models.providers.*.apiKey`: poświadczenie dostawcy (preferuj SecretRef/podstawianie env). +- `models.providers.*.api`: adapter żądań (`openai-completions`, `openai-responses`, `anthropic-messages`, `google-generative-ai` itd.). +- `models.providers.*.apiKey`: poświadczenie dostawcy (preferuj SecretRef/podstawienie env). - `models.providers.*.auth`: strategia uwierzytelniania (`api-key`, `token`, `oauth`, `aws-sdk`). - `models.providers.*.injectNumCtxForOpenAICompat`: dla Ollama + `openai-completions` wstrzykuje `options.num_ctx` do żądań (domyślnie: `true`). - `models.providers.*.authHeader`: wymusza przesyłanie poświadczenia w nagłówku `Authorization`, gdy jest to wymagane. -- `models.providers.*.baseUrl`: bazowy adres URL nadrzędnego API. -- `models.providers.*.headers`: dodatkowe statyczne nagłówki dla routingu proxy/tenant. +- `models.providers.*.baseUrl`: bazowy URL nadrzędnego API. +- `models.providers.*.headers`: dodatkowe statyczne nagłówki dla routingu proxy/dzierżawy. - `models.providers.*.request`: nadpisania transportu dla żądań HTTP dostawcy modeli. - `request.headers`: dodatkowe nagłówki (scalane z domyślnymi dostawcy). Wartości akceptują SecretRef. - `request.auth`: nadpisanie strategii uwierzytelniania. Tryby: `"provider-default"` (użyj wbudowanego uwierzytelniania dostawcy), `"authorization-bearer"` (z `token`), `"header"` (z `headerName`, `value`, opcjonalnym `prefix`). - - `request.proxy`: nadpisanie serwera proxy HTTP. Tryby: `"env-proxy"` (użyj zmiennych środowiskowych `HTTP_PROXY`/`HTTPS_PROXY`), `"explicit-proxy"` (z `url`). Oba tryby akceptują opcjonalny pod-obiekt `tls`. + - `request.proxy`: nadpisanie proxy HTTP. Tryby: `"env-proxy"` (użyj zmiennych środowiskowych `HTTP_PROXY`/`HTTPS_PROXY`), `"explicit-proxy"` (z `url`). Oba tryby akceptują opcjonalny podobiekt `tls`. - `request.tls`: nadpisanie TLS dla połączeń bezpośrednich. Pola: `ca`, `cert`, `key`, `passphrase` (wszystkie akceptują SecretRef), `serverName`, `insecureSkipVerify`. - - `request.allowPrivateNetwork`: gdy `true`, zezwala na HTTPS do `baseUrl`, gdy DNS rozwiązuje się do zakresów prywatnych, CGNAT lub podobnych, przez ochronę fetch HTTP dostawcy przed SSRF (operator opt-in dla zaufanych, samohostowanych punktów końcowych zgodnych z OpenAI). WebSocket używa tego samego `request` dla nagłówków/TLS, ale nie tej ochrony fetch przed SSRF. Domyślnie `false`. + - `request.allowPrivateNetwork`: gdy `true`, zezwala na HTTPS do `baseUrl`, gdy DNS rozwiązuje się do zakresów prywatnych, CGNAT lub podobnych, przez ochronę pobierania HTTP dostawcy przed SSRF (opt-in operatora dla zaufanych, self-hosted punktów końcowych zgodnych z OpenAI). WebSocket używa tego samego `request` dla nagłówków/TLS, ale nie tej ochrony pobierania SSRF. Domyślnie `false`. - `models.providers.*.models`: jawne wpisy katalogu modeli dostawcy. -- `models.providers.*.models.*.contextWindow`: metadane natywnego okna kontekstu modelu. -- `models.providers.*.models.*.contextTokens`: opcjonalny limit kontekstu runtime. Użyj tego, gdy chcesz mieć mniejszy efektywny budżet kontekstu niż natywne `contextWindow` modelu. -- `models.providers.*.models.*.compat.supportsDeveloperRole`: opcjonalna wskazówka zgodności. Dla `api: "openai-completions"` z niepustym, nienatywnym `baseUrl` (host inny niż `api.openai.com`) OpenClaw wymusza tę wartość na `false` w runtime. Puste/pominięte `baseUrl` zachowuje domyślne zachowanie OpenAI. -- `models.providers.*.models.*.compat.requiresStringContent`: opcjonalna wskazówka zgodności dla zgodnych z OpenAI punktów końcowych czatu obsługujących wyłącznie ciągi znaków. Gdy `true`, OpenClaw spłaszcza czysto tekstowe tablice `messages[].content` do zwykłych ciągów przed wysłaniem żądania. -- `plugins.entries.amazon-bedrock.config.discovery`: główny poziom ustawień automatycznego wykrywania Bedrock. +- `models.providers.*.models.*.contextWindow`: natywne metadane okna kontekstu modelu. +- `models.providers.*.models.*.contextTokens`: opcjonalny limit kontekstu środowiska uruchomieniowego. Użyj tego, gdy chcesz mniejszy efektywny budżet kontekstu niż natywne `contextWindow` modelu. +- `models.providers.*.models.*.compat.supportsDeveloperRole`: opcjonalna wskazówka zgodności. Dla `api: "openai-completions"` z niepustym, nienatywnym `baseUrl` (host inny niż `api.openai.com`), OpenClaw wymusza w czasie działania wartość `false`. Puste/pominięte `baseUrl` zachowuje domyślne zachowanie OpenAI. +- `models.providers.*.models.*.compat.requiresStringContent`: opcjonalna wskazówka zgodności dla punktów końcowych czatu zgodnych z OpenAI obsługujących tylko ciągi. Gdy `true`, OpenClaw spłaszcza czysto tekstowe tablice `messages[].content` do zwykłych ciągów przed wysłaniem żądania. +- `plugins.entries.amazon-bedrock.config.discovery`: główny katalog ustawień auto-discovery Bedrock. - `plugins.entries.amazon-bedrock.config.discovery.enabled`: włącza/wyłącza niejawne wykrywanie. - `plugins.entries.amazon-bedrock.config.discovery.region`: region AWS dla wykrywania. - `plugins.entries.amazon-bedrock.config.discovery.providerFilter`: opcjonalny filtr identyfikatora dostawcy dla ukierunkowanego wykrywania. -- `plugins.entries.amazon-bedrock.config.discovery.refreshInterval`: interwał odpytywania dla odświeżania wykrywania. +- `plugins.entries.amazon-bedrock.config.discovery.refreshInterval`: interwał odpytywania odświeżania wykrywania. - `plugins.entries.amazon-bedrock.config.discovery.defaultContextWindow`: zapasowe okno kontekstu dla wykrytych modeli. - `plugins.entries.amazon-bedrock.config.discovery.defaultMaxTokens`: zapasowa maksymalna liczba tokenów wyjściowych dla wykrytych modeli. @@ -2647,7 +2638,7 @@ Użyj `cerebras/zai-glm-4.7` dla Cerebras; `zai/glm-4.7` dla bezpośredniego Z.A } ``` -Ustaw `OPENCODE_API_KEY` (lub `OPENCODE_ZEN_API_KEY`). Używaj odwołań `opencode/...` dla katalogu Zen lub `opencode-go/...` dla katalogu Go. Skrót: `openclaw onboard --auth-choice opencode-zen` lub `openclaw onboard --auth-choice opencode-go`. +Ustaw `OPENCODE_API_KEY` (lub `OPENCODE_ZEN_API_KEY`). Używaj odwołań `opencode/...` dla katalogu Zen lub odwołań `opencode-go/...` dla katalogu Go. Skrót: `openclaw onboard --auth-choice opencode-zen` lub `openclaw onboard --auth-choice opencode-go`. @@ -2709,9 +2700,9 @@ Ustaw `ZAI_API_KEY`. `z.ai/*` i `z-ai/*` są akceptowanymi aliasami. Skrót: `op Dla punktu końcowego w Chinach: `baseUrl: "https://api.moonshot.cn/v1"` lub `openclaw onboard --auth-choice moonshot-api-key-cn`. -Natywne punkty końcowe Moonshot reklamują zgodność użycia strumieniowania we współdzielonym -transporcie `openai-completions`, a OpenClaw opiera się tutaj na możliwościach punktu końcowego, -a nie wyłącznie na wbudowanym identyfikatorze dostawcy. +Natywne punkty końcowe Moonshot deklarują zgodność użycia strumieniowania na współdzielonym +transporcie `openai-completions`, a OpenClaw opiera się na możliwościach punktu końcowego, +a nie wyłącznie na identyfikatorze wbudowanego dostawcy. @@ -2729,7 +2720,7 @@ a nie wyłącznie na wbudowanym identyfikatorze dostawcy. } ``` -Wbudowany dostawca zgodny z Anthropic. Skrót: `openclaw onboard --auth-choice kimi-code-api-key`. +Zgodny z Anthropic, wbudowany dostawca. Skrót: `openclaw onboard --auth-choice kimi-code-api-key`. @@ -2768,7 +2759,7 @@ Wbudowany dostawca zgodny z Anthropic. Skrót: `openclaw onboard --auth-choice k } ``` -Base URL powinien pomijać `/v1` (klient Anthropic sam go dopisuje). Skrót: `openclaw onboard --auth-choice synthetic-api-key`. +Base URL powinien pomijać `/v1` (klient Anthropic dopisuje je sam). Skrót: `openclaw onboard --auth-choice synthetic-api-key`. @@ -2811,9 +2802,9 @@ Base URL powinien pomijać `/v1` (klient Anthropic sam go dopisuje). Skrót: `op Ustaw `MINIMAX_API_KEY`. Skróty: `openclaw onboard --auth-choice minimax-global-api` lub `openclaw onboard --auth-choice minimax-cn-api`. -Domyślnie katalog modeli zawiera tylko M2.7. +Katalog modeli domyślnie zawiera tylko M2.7. Na ścieżce strumieniowania zgodnej z Anthropic OpenClaw domyślnie wyłącza thinking MiniMax, -chyba że jawnie ustawisz `thinking`. `/fast on` lub +chyba że jawnie ustawisz `thinking` samodzielnie. `/fast on` lub `params.fastMode: true` przepisuje `MiniMax-M2.7` na `MiniMax-M2.7-highspeed`. @@ -2821,7 +2812,7 @@ chyba że jawnie ustawisz `thinking`. `/fast on` lub -Zobacz [Modele lokalne](/pl/gateway/local-models). W skrócie: uruchom duży model lokalny przez LM Studio Responses API na mocnym sprzęcie; zachowaj scalone modele hostowane jako fallback. +Zobacz [Modele lokalne](/pl/gateway/local-models). W skrócie: uruchom duży model lokalny przez LM Studio Responses API na wydajnym sprzęcie; zachowaj scalone modele hostowane jako fallback. @@ -2852,14 +2843,14 @@ Zobacz [Modele lokalne](/pl/gateway/local-models). W skrócie: uruchom duży mod } ``` -- `allowBundled`: opcjonalna lista dozwolonych tylko dla bundled Skills (Skills zarządzane/w workspace pozostają bez wpływu). +- `allowBundled`: opcjonalna lista dozwolonych tylko dla bundled Skills (zarządzane/workspace Skills pozostają bez wpływu). - `load.extraDirs`: dodatkowe współdzielone katalogi główne Skills (najniższy priorytet). - `install.preferBrew`: gdy true, preferuje instalatory Homebrew, jeśli `brew` jest - dostępne, zanim przejdzie do innych rodzajów instalatorów. -- `install.nodeManager`: preferencja instalatora Node dla specyfikacji `metadata.openclaw.install` + dostępne, zanim nastąpi przejście do innych rodzajów instalatorów. +- `install.nodeManager`: preferencja instalatora node dla specyfikacji `metadata.openclaw.install` (`npm` | `pnpm` | `yarn` | `bun`). -- `entries..enabled: false` wyłącza Skill nawet jeśli jest bundled/zainstalowany. -- `entries..apiKey`: ułatwienie dla Skills deklarujących podstawową zmienną env (zwykły ciąg znaków lub obiekt SecretRef). +- `entries..enabled: false` wyłącza Skill nawet wtedy, gdy jest bundled/zainstalowany. +- `entries..apiKey`: wygodne ustawienie dla Skills deklarujących podstawową zmienną środowiskową (zwykły ciąg tekstowy lub obiekt SecretRef). --- @@ -2888,37 +2879,37 @@ Zobacz [Modele lokalne](/pl/gateway/local-models). W skrócie: uruchom duży mod ``` - Ładowane z `~/.openclaw/extensions`, `/.openclaw/extensions` oraz `plugins.load.paths`. -- Wykrywanie akceptuje natywne Pluginy OpenClaw oraz zgodne bundli Codex i Claude, w tym bundli Claude z domyślnym układem bez manifestu. -- **Zmiany konfiguracji wymagają restartu gateway.** -- `allow`: opcjonalna lista dozwolonych (ładują się tylko wymienione Pluginy). `deny` ma pierwszeństwo. +- Wykrywanie akceptuje natywne Pluginy OpenClaw oraz zgodne bundled Codex i Claude, w tym bundled Claude bez manifestu w domyślnym układzie. +- **Zmiany konfiguracji wymagają restartu Gateway.** +- `allow`: opcjonalna lista dozwolonych (ładowane są tylko wymienione Pluginy). `deny` ma pierwszeństwo. - `plugins.entries..apiKey`: wygodne pole klucza API na poziomie Pluginu (gdy obsługiwane przez Plugin). -- `plugins.entries..env`: mapa zmiennych env o zakresie Pluginu. -- `plugins.entries..hooks.allowPromptInjection`: gdy `false`, core blokuje `before_prompt_build` i ignoruje pola modyfikujące prompt ze starszego `before_agent_start`, zachowując jednocześnie starsze `modelOverride` i `providerOverride`. Dotyczy natywnych hooków Pluginu i obsługiwanych katalogów hooków dostarczanych przez bundle. -- `plugins.entries..subagent.allowModelOverride`: jawnie ufa temu Pluginowi, że może żądać nadpisań `provider` i `model` per uruchomienie dla uruchomień subagenta w tle. -- `plugins.entries..subagent.allowedModels`: opcjonalna lista dozwolonych kanonicznych celów `provider/model` dla zaufanych nadpisań subagenta. Używaj `"*"` tylko wtedy, gdy świadomie chcesz zezwolić na dowolny model. -- `plugins.entries..config`: obiekt konfiguracji zdefiniowany przez Plugin (walidowany przez natywny schemat Pluginu OpenClaw, gdy jest dostępny). -- `plugins.entries.firecrawl.config.webFetch`: ustawienia dostawcy pobierania web Firecrawl. +- `plugins.entries..env`: mapa zmiennych środowiskowych o zakresie Pluginu. +- `plugins.entries..hooks.allowPromptInjection`: gdy `false`, rdzeń blokuje `before_prompt_build` i ignoruje pola modyfikujące prompt ze starszego `before_agent_start`, zachowując starsze `modelOverride` i `providerOverride`. Dotyczy natywnych hooków Pluginów i obsługiwanych katalogów hooków dostarczanych przez bundled. +- `plugins.entries..subagent.allowModelOverride`: jawnie ufa temu Pluginowi, że może żądać nadpisań `provider` i `model` per uruchomienie dla przebiegów subagentów w tle. +- `plugins.entries..subagent.allowedModels`: opcjonalna lista dozwolonych kanonicznych celów `provider/model` dla zaufanych nadpisań subagentów. Użyj `"*"` tylko wtedy, gdy celowo chcesz zezwolić na dowolny model. +- `plugins.entries..config`: obiekt konfiguracji zdefiniowany przez Plugin (walidowany przez schemat natywnego Pluginu OpenClaw, jeśli jest dostępny). +- `plugins.entries.firecrawl.config.webFetch`: ustawienia dostawcy web-fetch Firecrawl. - `apiKey`: klucz API Firecrawl (akceptuje SecretRef). Używa wartości zapasowej z `plugins.entries.firecrawl.config.webSearch.apiKey`, starszego `tools.web.fetch.firecrawl.apiKey` lub zmiennej środowiskowej `FIRECRAWL_API_KEY`. - - `baseUrl`: bazowy adres URL API Firecrawl (domyślnie: `https://api.firecrawl.dev`). + - `baseUrl`: bazowy URL API Firecrawl (domyślnie: `https://api.firecrawl.dev`). - `onlyMainContent`: wyodrębnia tylko główną treść stron (domyślnie: `true`). - - `maxAgeMs`: maksymalny wiek cache w milisekundach (domyślnie: `172800000` / 2 dni). + - `maxAgeMs`: maksymalny wiek pamięci podręcznej w milisekundach (domyślnie: `172800000` / 2 dni). - `timeoutSeconds`: limit czasu żądania scrape w sekundach (domyślnie: `60`). - `plugins.entries.xai.config.xSearch`: ustawienia xAI X Search (wyszukiwanie web Grok). - `enabled`: włącza dostawcę X Search. - `model`: model Grok używany do wyszukiwania (np. `"grok-4-1-fast"`). -- `plugins.entries.memory-core.config.dreaming`: ustawienia memory dreaming. Informacje o fazach i progach znajdziesz w [Dreaming](/pl/concepts/dreaming). +- `plugins.entries.memory-core.config.dreaming`: ustawienia memory dreaming. Fazy i progi opisano w [Dreaming](/pl/concepts/dreaming). - `enabled`: główny przełącznik dreaming (domyślnie `false`). - `frequency`: harmonogram Cron dla każdego pełnego przebiegu dreaming (domyślnie `"0 3 * * *"`). - - zasady faz i progi są szczegółami implementacyjnymi (nie są kluczami konfiguracji skierowanymi do użytkownika). + - polityka faz i progi są szczegółami implementacyjnymi (nie są kluczami konfiguracji przeznaczonymi dla użytkownika). - Pełna konfiguracja pamięci znajduje się w [Odwołaniu do konfiguracji pamięci](/pl/reference/memory-config): - `agents.defaults.memorySearch.*` - `memory.backend` - `memory.citations` - `memory.qmd.*` - `plugins.entries.memory-core.config.dreaming` -- Włączone Pluginy Claude bundle mogą również wnosić osadzone ustawienia domyślne Pi z `settings.json`; OpenClaw stosuje je jako zsanityzowane ustawienia agenta, a nie jako surowe łatki konfiguracji OpenClaw. -- `plugins.slots.memory`: wybierz identyfikator aktywnego Pluginu pamięci lub `"none"`, aby wyłączyć Pluginy pamięci. -- `plugins.slots.contextEngine`: wybierz identyfikator aktywnego Pluginu silnika kontekstu; domyślnie `"legacy"`, chyba że zainstalujesz i wybierzesz inny silnik. +- Włączone Pluginy bundled Claude mogą także dostarczać osadzone wartości domyślne Pi z `settings.json`; OpenClaw stosuje je jako oczyszczone ustawienia agentów, a nie jako surowe poprawki konfiguracji OpenClaw. +- `plugins.slots.memory`: wybiera identyfikator aktywnego Pluginu pamięci albo `"none"`, aby wyłączyć Pluginy pamięci. +- `plugins.slots.contextEngine`: wybiera identyfikator aktywnego Pluginu silnika kontekstu; domyślnie `"legacy"`, chyba że zainstalujesz i wybierzesz inny silnik. - `plugins.installs`: metadane instalacji zarządzane przez CLI, używane przez `openclaw plugins update`. - Obejmuje `source`, `spec`, `sourcePath`, `installPath`, `version`, `resolvedName`, `resolvedVersion`, `resolvedSpec`, `integrity`, `shasum`, `resolvedAt`, `installedAt`. - Traktuj `plugins.installs.*` jako stan zarządzany; preferuj polecenia CLI zamiast ręcznych edycji. @@ -2927,7 +2918,7 @@ Zobacz [Pluginy](/pl/tools/plugin). --- -## Browser +## Przeglądarka ```json5 { @@ -2964,28 +2955,29 @@ Zobacz [Pluginy](/pl/tools/plugin). ``` - `evaluateEnabled: false` wyłącza `act:evaluate` i `wait --fn`. -- `ssrfPolicy.dangerouslyAllowPrivateNetwork` jest wyłączone, gdy nie jest ustawione, więc nawigacja Browser pozostaje domyślnie ścisła. -- Ustaw `ssrfPolicy.dangerouslyAllowPrivateNetwork: true` tylko wtedy, gdy świadomie ufasz nawigacji Browser po sieci prywatnej. -- W trybie ścisłym zdalne punkty końcowe profilów CDP (`profiles.*.cdpUrl`) podlegają temu samemu blokowaniu sieci prywatnej podczas kontroli osiągalności/wykrywania. -- `ssrfPolicy.allowPrivateNetwork` pozostaje obsługiwane jako starszy alias. +- `ssrfPolicy.dangerouslyAllowPrivateNetwork` jest wyłączone, gdy nie jest ustawione, więc nawigacja przeglądarki domyślnie pozostaje ścisła. +- Ustaw `ssrfPolicy.dangerouslyAllowPrivateNetwork: true` tylko wtedy, gdy celowo ufasz nawigacji przeglądarki do sieci prywatnej. +- W trybie ścisłym zdalne punkty końcowe profili CDP (`profiles.*.cdpUrl`) podlegają temu samemu blokowaniu sieci prywatnej podczas kontroli osiągalności/wykrywania. +- `ssrfPolicy.allowPrivateNetwork` nadal jest obsługiwane jako starszy alias. - W trybie ścisłym używaj `ssrfPolicy.hostnameAllowlist` i `ssrfPolicy.allowedHostnames` dla jawnych wyjątków. - Profile zdalne są tylko do podłączania (start/stop/reset są wyłączone). - `profiles.*.cdpUrl` akceptuje `http://`, `https://`, `ws://` i `wss://`. - Używaj HTTP(S), gdy chcesz, aby OpenClaw wykrył `/json/version`; używaj WS(S), - gdy dostawca daje bezpośredni adres URL DevTools WebSocket. -- Profile `existing-session` są dostępne tylko na hoście i używają Chrome MCP zamiast CDP. -- Profile `existing-session` mogą ustawiać `userDataDir`, aby kierować do konkretnego - profilu przeglądarki opartej na Chromium, takiej jak Brave lub Edge. -- Profile `existing-session` zachowują obecne ograniczenia trasy Chrome MCP: - działania oparte na snapshot/ref zamiast targetowania selektorami CSS, hooki + Użyj HTTP(S), gdy chcesz, aby OpenClaw wykrył `/json/version`; użyj WS(S), + gdy dostawca podaje bezpośredni URL WebSocket DevTools. +- Profile `existing-session` używają Chrome MCP zamiast CDP i mogą podłączać się na + wybranym hoście lub przez podłączony browser node. +- Profile `existing-session` mogą ustawiać `userDataDir`, aby kierować na konkretny + profil przeglądarki opartej na Chromium, takiej jak Brave lub Edge. +- Profile `existing-session` zachowują bieżące ograniczenia ścieżki Chrome MCP: + działania oparte na snapshot/ref zamiast kierowania przez selektory CSS, hooki przesyłania jednego pliku, brak nadpisań limitu czasu dialogów, brak - `wait --load networkidle`, a także brak `responsebody`, eksportu PDF, przechwytywania pobrań - czy działań wsadowych. -- Lokalne zarządzane profile `openclaw` automatycznie przypisują `cdpPort` i `cdpUrl`; jawnie - ustawiaj `cdpUrl` tylko dla zdalnego CDP. -- Kolejność automatycznego wykrywania: domyślna przeglądarka, jeśli oparta na Chromium → Chrome → Brave → Edge → Chromium → Chrome Canary. -- Usługa sterująca: tylko loopback (port wyprowadzany z `gateway.port`, domyślnie `18791`). -- `extraArgs` dodaje dodatkowe flagi uruchamiania do lokalnego startu Chromium (na przykład + `wait --load networkidle` oraz brak `responsebody`, eksportu PDF, przechwytywania + pobrań i działań wsadowych. +- Lokalne zarządzane profile `openclaw` automatycznie przypisują `cdpPort` i `cdpUrl`; `cdpUrl` + ustawiaj jawnie tylko dla zdalnego CDP. +- Kolejność auto-wykrywania: domyślna przeglądarka, jeśli oparta na Chromium → Chrome → Brave → Edge → Chromium → Chrome Canary. +- Usługa sterowania: tylko loopback (port wyprowadzany z `gateway.port`, domyślnie `18791`). +- `extraArgs` dołącza dodatkowe flagi uruchamiania do lokalnego startu Chromium (na przykład `--disable-gpu`, rozmiar okna lub flagi debugowania). --- @@ -3004,8 +2996,8 @@ Zobacz [Pluginy](/pl/tools/plugin). } ``` -- `seamColor`: kolor akcentu dla chromu natywnego UI aplikacji (odcień dymka trybu Talk itd.). -- `assistant`: nadpisanie tożsamości Control UI. Wartość zapasowa pochodzi z tożsamości aktywnego agenta. +- `seamColor`: kolor akcentu dla chrome natywnego interfejsu aplikacji (odcień dymku trybu Talk itd.). +- `assistant`: nadpisanie tożsamości Control UI. Używa wartości zapasowej z aktywnej tożsamości agenta. --- @@ -3074,43 +3066,43 @@ Zobacz [Pluginy](/pl/tools/plugin). -- `mode`: `local` (uruchom gateway) lub `remote` (połącz ze zdalnym gateway). Gateway odmawia uruchomienia, jeśli nie jest `local`. +- `mode`: `local` (uruchom Gateway) lub `remote` (połącz ze zdalnym Gateway). Gateway odmawia uruchomienia, jeśli nie jest ustawione `local`. - `port`: pojedynczy multipleksowany port dla WS + HTTP. Priorytet: `--port` > `OPENCLAW_GATEWAY_PORT` > `gateway.port` > `18789`. - `bind`: `auto`, `loopback` (domyślnie), `lan` (`0.0.0.0`), `tailnet` (tylko adres IP Tailscale) lub `custom`. - **Starsze aliasy bind**: używaj wartości trybu bind w `gateway.bind` (`auto`, `loopback`, `lan`, `tailnet`, `custom`), a nie aliasów hosta (`0.0.0.0`, `127.0.0.1`, `localhost`, `::`, `::1`). -- **Uwaga dotycząca Dockera**: domyślne powiązanie `loopback` nasłuchuje na `127.0.0.1` wewnątrz kontenera. Przy sieci bridge Dockera (`-p 18789:18789`) ruch przychodzi przez `eth0`, więc gateway jest nieosiągalny. Użyj `--network host` albo ustaw `bind: "lan"` (lub `bind: "custom"` z `customBindHost: "0.0.0.0"`), aby nasłuchiwać na wszystkich interfejsach. -- **Auth**: domyślnie wymagane. Powiązania inne niż loopback wymagają auth gateway. W praktyce oznacza to współdzielony token/hasło albo reverse proxy świadome tożsamości z `gateway.auth.mode: "trusted-proxy"`. Kreator onboardingu domyślnie generuje token. -- Jeśli skonfigurowane są jednocześnie `gateway.auth.token` i `gateway.auth.password` (w tym SecretRef), ustaw jawnie `gateway.auth.mode` na `token` lub `password`. Uruchamianie oraz przepływy instalacji/naprawy usługi kończą się błędem, gdy oba są skonfigurowane, a tryb nie jest ustawiony. -- `gateway.auth.mode: "none"`: jawny tryb bez auth. Używaj tylko dla zaufanych lokalnych konfiguracji local loopback; ta opcja celowo nie jest oferowana w promptach onboardingu. -- `gateway.auth.mode: "trusted-proxy"`: deleguje auth do reverse proxy świadomego tożsamości i ufa nagłówkom tożsamości z `gateway.trustedProxies` (zobacz [Trusted Proxy Auth](/pl/gateway/trusted-proxy-auth)). Ten tryb oczekuje źródła proxy **innego niż loopback**; reverse proxy loopback na tym samym hoście nie spełniają wymagań auth trusted-proxy. -- `gateway.auth.allowTailscale`: gdy `true`, nagłówki tożsamości Tailscale Serve mogą spełniać auth dla Control UI/WebSocket (weryfikowane przez `tailscale whois`). Punkty końcowe HTTP API **nie** używają tego auth nagłówków Tailscale; zamiast tego stosują zwykły tryb auth HTTP gateway. Ten przepływ bez tokena zakłada, że host gateway jest zaufany. Domyślnie `true`, gdy `tailscale.mode = "serve"`. -- `gateway.auth.rateLimit`: opcjonalny ogranicznik nieudanych prób auth. Stosowany per IP klienta i per zakres auth (współdzielony sekret i token urządzenia są śledzone niezależnie). Zablokowane próby zwracają `429` + `Retry-After`. - - W asynchronicznej ścieżce Tailscale Serve Control UI nieudane próby dla tego samego `{scope, clientIp}` są serializowane przed zapisem błędu. Współbieżne błędne próby od tego samego klienta mogą więc wyzwolić ogranicznik przy drugim żądaniu zamiast obu przejść wyścigowo jako zwykłe niedopasowania. - - `gateway.auth.rateLimit.exemptLoopback` ma domyślnie wartość `true`; ustaw `false`, gdy świadomie chcesz ograniczać również ruch localhost (dla konfiguracji testowych lub ścisłych wdrożeń proxy). -- Próby auth WS pochodzące z przeglądarki są zawsze ograniczane z wyłączonym wyjątkiem loopback (defense-in-depth przeciw brutalnemu łamaniu localhost z poziomu przeglądarki). +- **Uwaga dotycząca Docker**: domyślne powiązanie `loopback` nasłuchuje na `127.0.0.1` wewnątrz kontenera. W przypadku sieci Docker bridge (`-p 18789:18789`) ruch przychodzi na `eth0`, więc Gateway jest nieosiągalny. Użyj `--network host` albo ustaw `bind: "lan"` (lub `bind: "custom"` z `customBindHost: "0.0.0.0"`), aby nasłuchiwać na wszystkich interfejsach. +- **Auth**: domyślnie wymagane. Powiązania inne niż loopback wymagają uwierzytelniania Gateway. W praktyce oznacza to współdzielony token/hasło albo reverse proxy świadome tożsamości z `gateway.auth.mode: "trusted-proxy"`. Kreator onboardingu domyślnie generuje token. +- Jeśli skonfigurowano jednocześnie `gateway.auth.token` i `gateway.auth.password` (w tym SecretRefs), ustaw jawnie `gateway.auth.mode` na `token` lub `password`. Uruchamianie oraz przepływy instalacji/naprawy usługi kończą się błędem, gdy oba są skonfigurowane, a tryb nie jest ustawiony. +- `gateway.auth.mode: "none"`: jawny tryb bez auth. Używaj tylko dla zaufanych lokalnych konfiguracji loopback; ten tryb celowo nie jest oferowany w promptach onboardingu. +- `gateway.auth.mode: "trusted-proxy"`: deleguje auth do reverse proxy świadomego tożsamości i ufa nagłówkom tożsamości z `gateway.trustedProxies` (zobacz [Trusted Proxy Auth](/pl/gateway/trusted-proxy-auth)). Ten tryb oczekuje **źródła proxy spoza loopback**; reverse proxy loopback na tym samym hoście nie spełniają wymagań auth trusted-proxy. +- `gateway.auth.allowTailscale`: gdy `true`, nagłówki tożsamości Tailscale Serve mogą spełniać wymagania auth dla Control UI/WebSocket (weryfikowane przez `tailscale whois`). Punkty końcowe HTTP API **nie** używają tego auth z nagłówków Tailscale; zamiast tego stosują zwykły tryb auth HTTP Gateway. Ten przepływ bez tokena zakłada, że host Gateway jest zaufany. Domyślnie `true`, gdy `tailscale.mode = "serve"`. +- `gateway.auth.rateLimit`: opcjonalny limiter nieudanych prób auth. Stosowany per IP klienta i per zakres auth (współdzielony sekret i token urządzenia są śledzone niezależnie). Zablokowane próby zwracają `429` + `Retry-After`. + - Na asynchronicznej ścieżce Tailscale Serve Control UI nieudane próby dla tego samego `{scope, clientIp}` są serializowane przed zapisem niepowodzenia. Równoległe błędne próby od tego samego klienta mogą więc uruchomić limiter przy drugim żądaniu zamiast przejść obie jako zwykłe niedopasowania. + - `gateway.auth.rateLimit.exemptLoopback` domyślnie ma wartość `true`; ustaw `false`, gdy celowo chcesz objąć limitem również ruch localhost (dla konfiguracji testowych lub restrykcyjnych wdrożeń proxy). +- Próby auth WS pochodzące z przeglądarki są zawsze ograniczane z wyłączonym wyjątkiem dla loopback (ochrona warstwowa przed brute force localhost z przeglądarki). - W loopback te blokady pochodzące z przeglądarki są izolowane per znormalizowana - wartość `Origin`, więc powtarzające się błędy z jednego pochodzenia localhost nie - blokują automatycznie innego pochodzenia. -- `tailscale.mode`: `serve` (tylko tailnet, bind loopback) lub `funnel` (publiczny, wymaga auth). -- `controlUi.allowedOrigins`: jawna lista dozwolonych pochodzeń przeglądarki dla połączeń Gateway WebSocket. Wymagana, gdy oczekiwani są klienci przeglądarkowi z pochodzeń innych niż loopback. -- `controlUi.dangerouslyAllowHostHeaderOriginFallback`: niebezpieczny tryb, który włącza zapasowy fallback pochodzenia na podstawie nagłówka Host dla wdrożeń świadomie opierających się na polityce pochodzenia z nagłówka Host. + wartość `Origin`, więc powtarzające się błędy z jednego źródła localhost nie + blokują automatycznie innego źródła. +- `tailscale.mode`: `serve` (tylko tailnet, powiązanie loopback) lub `funnel` (publiczne, wymaga auth). +- `controlUi.allowedOrigins`: jawna lista dozwolonych źródeł przeglądarki dla połączeń WebSocket Gateway. Wymagana, gdy oczekiwani są klienci przeglądarkowi ze źródeł innych niż loopback. +- `controlUi.dangerouslyAllowHostHeaderOriginFallback`: niebezpieczny tryb, który włącza zapasowe pochodzenie z nagłówka Host dla wdrożeń celowo opierających się na polityce pochodzenia z nagłówka Host. - `remote.transport`: `ssh` (domyślnie) lub `direct` (ws/wss). Dla `direct` `remote.url` musi być `ws://` lub `wss://`. -- `OPENCLAW_ALLOW_INSECURE_PRIVATE_WS=1`: awaryjne nadpisanie po stronie klienta, które zezwala na jawny `ws://` do zaufanych prywatnych adresów IP; domyślnie jawny tekst pozostaje dozwolony tylko dla loopback. -- `gateway.remote.token` / `.password` to pola poświadczeń klienta zdalnego. Same w sobie nie konfigurują auth gateway. -- `gateway.push.apns.relay.baseUrl`: bazowy adres HTTPS zewnętrznego przekaźnika APNs używanego przez oficjalne/TestFlight buildy iOS po opublikowaniu przez nie rejestracji opartych na przekaźniku do gateway. Ten adres URL musi odpowiadać adresowi przekaźnika skompilowanemu w buildzie iOS. -- `gateway.push.apns.relay.timeoutMs`: limit czasu wysyłki gateway-do-przekaźnika w milisekundach. Domyślnie `10000`. -- Rejestracje oparte na przekaźniku są delegowane do określonej tożsamości gateway. Sparowana aplikacja iOS pobiera `gateway.identity.get`, uwzględnia tę tożsamość w rejestracji przekaźnika i przekazuje do gateway uprawnienie wysyłki o zakresie rejestracji. Inny gateway nie może ponownie użyć tej zapisanej rejestracji. -- `OPENCLAW_APNS_RELAY_BASE_URL` / `OPENCLAW_APNS_RELAY_TIMEOUT_MS`: tymczasowe nadpisania env dla powyższej konfiguracji przekaźnika. -- `OPENCLAW_APNS_RELAY_ALLOW_HTTP=true`: wyłącznie deweloperska furtka dla adresów URL przekaźnika HTTP na loopback. Produkcyjne adresy URL przekaźników powinny pozostać przy HTTPS. -- `gateway.channelHealthCheckMinutes`: interwał monitora zdrowia kanałów w minutach. Ustaw `0`, aby globalnie wyłączyć restarty monitora zdrowia. Domyślnie: `5`. -- `gateway.channelStaleEventThresholdMinutes`: próg nieaktualnego gniazda w minutach. Zachowaj tę wartość większą lub równą `gateway.channelHealthCheckMinutes`. Domyślnie: `30`. -- `gateway.channelMaxRestartsPerHour`: maksymalna liczba restartów monitora zdrowia per kanał/konto w przesuwającym się oknie godzinnym. Domyślnie: `10`. -- `channels..healthMonitor.enabled`: rezygnacja per kanał z restartów monitora zdrowia przy zachowaniu globalnego monitora. +- `OPENCLAW_ALLOW_INSECURE_PRIVATE_WS=1`: zapasowe przełamanie po stronie klienta, które zezwala na jawny `ws://` do zaufanych adresów IP sieci prywatnej; domyślnie jawny tekst pozostaje dozwolony tylko dla loopback. +- `gateway.remote.token` / `.password` to pola poświadczeń klienta zdalnego. Same w sobie nie konfigurują auth Gateway. +- `gateway.push.apns.relay.baseUrl`: bazowy URL HTTPS zewnętrznego przekaźnika APNs używanego przez oficjalne/TestFlight buildy iOS po opublikowaniu przez nie rejestracji opartych na przekaźniku do Gateway. Ten URL musi odpowiadać URL przekaźnika skompilowanemu w buildzie iOS. +- `gateway.push.apns.relay.timeoutMs`: limit czasu wysyłania Gateway-do-przekaźnika w milisekundach. Domyślnie `10000`. +- Rejestracje oparte na przekaźniku są delegowane do określonej tożsamości Gateway. Sparowana aplikacja iOS pobiera `gateway.identity.get`, uwzględnia tę tożsamość w rejestracji przekaźnika i przekazuje do Gateway uprawnienie wysyłania o zakresie rejestracji. Inny Gateway nie może ponownie użyć tej zapisanej rejestracji. +- `OPENCLAW_APNS_RELAY_BASE_URL` / `OPENCLAW_APNS_RELAY_TIMEOUT_MS`: tymczasowe nadpisania środowiskowe dla powyższej konfiguracji przekaźnika. +- `OPENCLAW_APNS_RELAY_ALLOW_HTTP=true`: wyłącznie deweloperska furtka dla URL przekaźnika HTTP loopback. Produkcyjne URL przekaźnika powinny pozostać przy HTTPS. +- `gateway.channelHealthCheckMinutes`: interwał monitora stanu kanałów w minutach. Ustaw `0`, aby globalnie wyłączyć restarty monitora stanu. Domyślnie: `5`. +- `gateway.channelStaleEventThresholdMinutes`: próg nieaktualnego gniazda w minutach. Zachowaj wartość większą lub równą `gateway.channelHealthCheckMinutes`. Domyślnie: `30`. +- `gateway.channelMaxRestartsPerHour`: maksymalna liczba restartów monitora stanu na kanał/konto w ruchomej godzinie. Domyślnie: `10`. +- `channels..healthMonitor.enabled`: rezygnacja per kanał z restartów monitora stanu przy zachowaniu globalnego monitora. - `channels..accounts..healthMonitor.enabled`: nadpisanie per konto dla kanałów wielokontowych. Gdy ustawione, ma pierwszeństwo przed nadpisaniem na poziomie kanału. -- Lokalne ścieżki wywołań gateway mogą używać `gateway.remote.*` jako wartości zapasowej tylko wtedy, gdy `gateway.auth.*` nie jest ustawione. -- Jeśli `gateway.auth.token` / `gateway.auth.password` są jawnie skonfigurowane przez SecretRef i nierozwiązane, rozwiązywanie kończy się fail-closed (bez maskowania przez fallback zdalny). -- `trustedProxies`: adresy IP reverse proxy, które kończą TLS lub wstrzykują nagłówki klienta przekazanego dalej. Wymieniaj tylko proxy, którymi zarządzasz. Wpisy loopback pozostają prawidłowe dla konfiguracji proxy na tym samym hoście / wykrywania lokalnego (na przykład Tailscale Serve lub lokalne reverse proxy), ale **nie** czynią żądań loopback kwalifikującymi się do `gateway.auth.mode: "trusted-proxy"`. -- `allowRealIpFallback`: gdy `true`, gateway akceptuje `X-Real-IP`, jeśli brakuje `X-Forwarded-For`. Domyślnie `false` dla zachowania fail-closed. +- Lokalne ścieżki wywołań Gateway mogą używać `gateway.remote.*` jako wartości zapasowej tylko wtedy, gdy `gateway.auth.*` nie jest ustawione. +- Jeśli `gateway.auth.token` / `gateway.auth.password` są jawnie skonfigurowane przez SecretRef i nierozwiązane, rozwiązywanie kończy się fail-closed (bez maskującego zdalnego fallbacku). +- `trustedProxies`: adresy IP reverse proxy, które kończą TLS lub wstrzykują nagłówki klienta przekazywanego dalej. Wymieniaj tylko proxy, które kontrolujesz. Wpisy loopback nadal są prawidłowe dla konfiguracji proxy na tym samym hoście / wykrywania lokalnego (na przykład Tailscale Serve lub lokalne reverse proxy), ale **nie** sprawiają, że żądania loopback kwalifikują się do `gateway.auth.mode: "trusted-proxy"`. +- `allowRealIpFallback`: gdy `true`, Gateway akceptuje `X-Real-IP`, jeśli brakuje `X-Forwarded-For`. Domyślnie `false` dla zachowania fail-closed. - `gateway.tools.deny`: dodatkowe nazwy narzędzi blokowane dla HTTP `POST /tools/invoke` (rozszerza domyślną listę blokad). - `gateway.tools.allow`: usuwa nazwy narzędzi z domyślnej listy blokad HTTP. @@ -3120,18 +3112,18 @@ Zobacz [Pluginy](/pl/tools/plugin). - Chat Completions: domyślnie wyłączone. Włącz przez `gateway.http.endpoints.chatCompletions.enabled: true`. - Responses API: `gateway.http.endpoints.responses.enabled`. -- Utwardzanie wejść URL dla Responses: +- Utwardzanie wejścia URL dla Responses: - `gateway.http.endpoints.responses.maxUrlParts` - `gateway.http.endpoints.responses.files.urlAllowlist` - `gateway.http.endpoints.responses.images.urlAllowlist` - Puste listy dozwolonych są traktowane jak brak ustawienia; użyj `gateway.http.endpoints.responses.files.allowUrl=false` + Puste listy dozwolonych są traktowane jak nieustawione; użyj `gateway.http.endpoints.responses.files.allowUrl=false` i/lub `gateway.http.endpoints.responses.images.allowUrl=false`, aby wyłączyć pobieranie URL. -- Opcjonalny nagłówek utwardzania odpowiedzi: - - `gateway.http.securityHeaders.strictTransportSecurity` (ustawiaj tylko dla kontrolowanych przez siebie pochodzeń HTTPS; zobacz [Trusted Proxy Auth](/pl/gateway/trusted-proxy-auth#tls-termination-and-hsts)) +- Opcjonalny nagłówek utwardzający odpowiedzi: + - `gateway.http.securityHeaders.strictTransportSecurity` (ustawiaj tylko dla kontrolowanych przez siebie źródeł HTTPS; zobacz [Trusted Proxy Auth](/pl/gateway/trusted-proxy-auth#tls-termination-and-hsts)) ### Izolacja wielu instancji -Uruchamiaj wiele gateway na jednym hoście z unikalnymi portami i katalogami stanu: +Uruchamiaj wiele Gateway na jednym hoście z unikalnymi portami i katalogami stanu: ```bash OPENCLAW_CONFIG_PATH=~/.openclaw/a.json \ @@ -3139,9 +3131,9 @@ OPENCLAW_STATE_DIR=~/.openclaw-a \ openclaw gateway --port 19001 ``` -Wygodne flagi: `--dev` (używa `~/.openclaw-dev` + portu `19001`), `--profile ` (używa `~/.openclaw-`). +Wygodne flagi: `--dev` (używa `~/.openclaw-dev` + port `19001`), `--profile ` (używa `~/.openclaw-`). -Zobacz [Wiele gateway](/pl/gateway/multiple-gateways). +Zobacz [Wiele Gateway](/pl/gateway/multiple-gateways). ### `gateway.tls` @@ -3159,11 +3151,11 @@ Zobacz [Wiele gateway](/pl/gateway/multiple-gateways). } ``` -- `enabled`: włącza zakończenie TLS na nasłuchującym gateway (HTTPS/WSS) (domyślnie: `false`). -- `autoGenerate`: automatycznie generuje lokalną parę samopodpisanego certyfikatu/klucza, gdy nie skonfigurowano jawnych plików; tylko do użytku lokalnego/deweloperskiego. +- `enabled`: włącza kończenie TLS na nasłuchującym Gateway (HTTPS/WSS) (domyślnie: `false`). +- `autoGenerate`: automatycznie generuje lokalną parę samopodpisanego certyfikatu/klucza, gdy jawne pliki nie są skonfigurowane; tylko do użytku lokalnego/deweloperskiego. - `certPath`: ścieżka systemu plików do pliku certyfikatu TLS. - `keyPath`: ścieżka systemu plików do pliku klucza prywatnego TLS; zachowaj ograniczone uprawnienia. -- `caPath`: opcjonalna ścieżka do pakietu CA dla weryfikacji klienta lub niestandardowych łańcuchów zaufania. +- `caPath`: opcjonalna ścieżka pakietu CA do weryfikacji klienta lub niestandardowych łańcuchów zaufania. ### `gateway.reload` @@ -3179,11 +3171,11 @@ Zobacz [Wiele gateway](/pl/gateway/multiple-gateways). } ``` -- `mode`: steruje sposobem stosowania edycji konfiguracji w runtime. +- `mode`: steruje sposobem stosowania edycji konfiguracji w czasie działania. - `"off"`: ignoruj edycje na żywo; zmiany wymagają jawnego restartu. - - `"restart"`: zawsze restartuj proces gateway przy zmianie konfiguracji. + - `"restart"`: zawsze restartuj proces Gateway po zmianie konfiguracji. - `"hot"`: stosuj zmiany w procesie bez restartu. - - `"hybrid"` (domyślnie): najpierw spróbuj hot reload; jeśli to wymagane, przejdź do restartu. + - `"hybrid"` (domyślnie): najpierw spróbuj hot reload; w razie potrzeby przejdź do restartu. - `debounceMs`: okno debounce w ms przed zastosowaniem zmian konfiguracji (nieujemna liczba całkowita). - `deferralTimeoutMs`: maksymalny czas w ms oczekiwania na operacje w toku przed wymuszeniem restartu (domyślnie: `300000` = 5 minut). @@ -3228,8 +3220,8 @@ Tokeny hooków w query string są odrzucane. Uwagi dotyczące walidacji i bezpieczeństwa: - `hooks.enabled=true` wymaga niepustego `hooks.token`. -- `hooks.token` musi być **różny** od `gateway.auth.token`; ponowne użycie tokenu Gateway jest odrzucane. -- `hooks.path` nie może być `/`; użyj dedykowanej podścieżki, takiej jak `/hooks`. +- `hooks.token` musi być **odrębne** od `gateway.auth.token`; ponowne użycie tokenu Gateway jest odrzucane. +- `hooks.path` nie może być `/`; używaj dedykowanej podścieżki, takiej jak `/hooks`. - Jeśli `hooks.allowRequestSessionKey=true`, ogranicz `hooks.allowedSessionKeyPrefixes` (na przykład `["hook:"]`). **Punkty końcowe:** @@ -3243,16 +3235,16 @@ Uwagi dotyczące walidacji i bezpieczeństwa: - `match.path` dopasowuje podścieżkę po `/hooks` (np. `/hooks/gmail` → `gmail`). - `match.source` dopasowuje pole ładunku dla ścieżek ogólnych. -- Szablony takie jak `{{messages[0].subject}}` odczytują wartości z ładunku. +- Szablony takie jak `{{messages[0].subject}}` odczytują dane z ładunku. - `transform` może wskazywać moduł JS/TS zwracający akcję hooka. - - `transform.module` musi być ścieżką względną i pozostawać w obrębie `hooks.transformsDir` (ścieżki bezwzględne i traversal są odrzucane). -- `agentId` kieruje do konkretnego agenta; nieznane identyfikatory przechodzą awaryjnie do agenta domyślnego. -- `allowedAgentIds`: ogranicza jawne routowanie (`*` lub pominięte = zezwól na wszystkie, `[]` = zabroń wszystkim). -- `defaultSessionKey`: opcjonalny stały klucz sesji dla uruchomień hooków agenta bez jawnego `sessionKey`. -- `allowRequestSessionKey`: pozwala wywołującym `/hooks/agent` ustawiać `sessionKey` (domyślnie: `false`). + - `transform.module` musi być ścieżką względną i pozostawać w obrębie `hooks.transformsDir` (ścieżki bezwzględne i przejścia katalogów są odrzucane). +- `agentId` kieruje do określonego agenta; nieznane identyfikatory wracają do domyślnego. +- `allowedAgentIds`: ogranicza jawne kierowanie (`*` lub pominięte = zezwalaj na wszystko, `[]` = zabroń wszystkiego). +- `defaultSessionKey`: opcjonalny stały klucz sesji dla przebiegów agenta hooka bez jawnego `sessionKey`. +- `allowRequestSessionKey`: pozwala wywołującym `/hooks/agent` ustawić `sessionKey` (domyślnie: `false`). - `allowedSessionKeyPrefixes`: opcjonalna lista dozwolonych prefiksów dla jawnych wartości `sessionKey` (żądanie + mapowanie), np. `["hook:"]`. - `deliver: true` wysyła końcową odpowiedź do kanału; `channel` domyślnie ma wartość `last`. -- `model` nadpisuje LLM dla tego uruchomienia hooka (musi być dozwolony, jeśli ustawiono katalog modeli). +- `model` nadpisuje LLM dla tego przebiegu hooka (musi być dozwolone, jeśli ustawiono katalog modeli). @@ -3279,8 +3271,8 @@ Uwagi dotyczące walidacji i bezpieczeństwa: } ``` -- Gateway automatycznie uruchamia `gog gmail watch serve` przy starcie, gdy jest skonfigurowane. Ustaw `OPENCLAW_SKIP_GMAIL_WATCHER=1`, aby to wyłączyć. -- Nie uruchamiaj osobno `gog gmail watch serve` równolegle z Gateway. +- Gateway automatycznie uruchamia `gog gmail watch serve` przy starcie, gdy jest skonfigurowany. Ustaw `OPENCLAW_SKIP_GMAIL_WATCHER=1`, aby wyłączyć. +- Nie uruchamiaj osobnego `gog gmail watch serve` równolegle z Gateway. --- @@ -3296,22 +3288,22 @@ Uwagi dotyczące walidacji i bezpieczeństwa: } ``` -- Udostępnia edytowalne przez agenta HTML/CSS/JS i A2UI przez HTTP pod portem Gateway: +- Udostępnia edytowalne przez agenta HTML/CSS/JS oraz A2UI przez HTTP pod portem Gateway: - `http://:/__openclaw__/canvas/` - `http://:/__openclaw__/a2ui/` - Tylko lokalnie: zachowaj `gateway.bind: "loopback"` (domyślnie). - Powiązania inne niż loopback: trasy canvas wymagają auth Gateway (token/hasło/trusted-proxy), tak samo jak inne powierzchnie HTTP Gateway. -- Node WebViews zwykle nie wysyłają nagłówków auth; po sparowaniu i połączeniu node Gateway anonsuje adresy URL możliwości o zakresie node dla dostępu do canvas/A2UI. -- Adresy URL możliwości są powiązane z aktywną sesją WS node i szybko wygasają. Nie używa się fallbacku opartego na IP. +- Node WebViews zazwyczaj nie wysyłają nagłówków auth; po sparowaniu i połączeniu node Gateway reklamuje URL zdolności o zakresie node do dostępu do canvas/A2UI. +- URL zdolności są powiązane z aktywną sesją WS node i szybko wygasają. Nie jest używany fallback oparty na IP. - Wstrzykuje klienta live-reload do serwowanego HTML. -- Automatycznie tworzy początkowy `index.html`, gdy katalog jest pusty. -- Udostępnia także A2UI pod `/__openclaw__/a2ui/`. -- Zmiany wymagają restartu gateway. +- Automatycznie tworzy startowy `index.html`, gdy katalog jest pusty. +- Serwuje też A2UI pod `/__openclaw__/a2ui/`. +- Zmiany wymagają restartu Gateway. - Wyłącz live reload dla dużych katalogów lub przy błędach `EMFILE`. --- -## Discovery +## Wykrywanie ### mDNS (Bonjour) @@ -3339,7 +3331,7 @@ Uwagi dotyczące walidacji i bezpieczeństwa: } ``` -Zapisuje strefę unicast DNS-SD pod `~/.openclaw/dns/`. Do wykrywania między sieciami połącz to z serwerem DNS (zalecany CoreDNS) + Tailscale split DNS. +Zapisuje strefę unicast DNS-SD w `~/.openclaw/dns/`. Dla wykrywania między sieciami połącz to z serwerem DNS (zalecany CoreDNS) + Tailscale split DNS. Konfiguracja: `openclaw dns setup --apply`. @@ -3347,7 +3339,7 @@ Konfiguracja: `openclaw dns setup --apply`. ## Środowisko -### `env` (zmienne env inline) +### `env` (wbudowane zmienne środowiskowe) ```json5 { @@ -3364,14 +3356,14 @@ Konfiguracja: `openclaw dns setup --apply`. } ``` -- Zmienne env inline są stosowane tylko wtedy, gdy w env procesu brakuje danego klucza. -- Pliki `.env`: `.env` z bieżącego katalogu roboczego + `~/.openclaw/.env` (żaden z nich nie nadpisuje istniejących zmiennych). -- `shellEnv`: importuje brakujące oczekiwane klucze z profilu login shell. -- Pełny priorytet znajdziesz w [Środowisko](/pl/help/environment). +- Wbudowane zmienne środowiskowe są stosowane tylko wtedy, gdy w środowisku procesu brakuje danego klucza. +- Pliki `.env`: `.env` bieżącego katalogu roboczego + `~/.openclaw/.env` (żaden nie nadpisuje istniejących zmiennych). +- `shellEnv`: importuje brakujące oczekiwane klucze z profilu logowania powłoki. +- Pełny priorytet znajdziesz w [Environment](/pl/help/environment). -### Podstawianie zmiennych env +### Podstawianie zmiennych środowiskowych -Odwołuj się do zmiennych env w dowolnym ciągu konfiguracji przez `${VAR_NAME}`: +Odwołuj się do zmiennych środowiskowych w dowolnym ciągu konfiguracji za pomocą `${VAR_NAME}`: ```json5 { @@ -3381,20 +3373,20 @@ Odwołuj się do zmiennych env w dowolnym ciągu konfiguracji przez `${VAR_NAME} } ``` -- Dopasowywane są tylko nazwy pisane wielkimi literami: `[A-Z_][A-Z0-9_]*`. +- Dopasowywane są tylko nazwy wielkimi literami: `[A-Z_][A-Z0-9_]*`. - Brakujące/puste zmienne powodują błąd przy ładowaniu konfiguracji. -- Ucieknij przez `$${VAR}`, aby uzyskać dosłowne `${VAR}`. +- Użyj `$${VAR}`, aby otrzymać literał `${VAR}`. - Działa z `$include`. --- ## Sekrety -Odwołania do sekretów są addytywne: wartości jawne nadal działają. +Odwołania do sekretów są addytywne: zwykłe wartości tekstowe nadal działają. ### `SecretRef` -Użyj jednej postaci obiektu: +Użyj jednego kształtu obiektu: ```json5 { source: "env" | "file" | "exec", provider: "default", id: "..." } @@ -3404,15 +3396,15 @@ Walidacja: - wzorzec `provider`: `^[a-z][a-z0-9_-]{0,63}$` - wzorzec `id` dla `source: "env"`: `^[A-Z][A-Z0-9_]{0,127}$` -- `id` dla `source: "file"`: bezwzględny wskaźnik JSON (na przykład `"/providers/openai/apiKey"`) +- `id` dla `source: "file"`: bezwzględny wskaźnik JSON pointer (na przykład `"/providers/openai/apiKey"`) - wzorzec `id` dla `source: "exec"`: `^[A-Za-z0-9][A-Za-z0-9._:/-]{0,255}$` -- `id` dla `source: "exec"` nie może zawierać segmentów ścieżki `.` ani `..` oddzielonych ukośnikami (na przykład `a/../b` jest odrzucane) +- identyfikatory `source: "exec"` nie mogą zawierać segmentów ścieżki rozdzielonych ukośnikiem `.` ani `..` (na przykład `a/../b` jest odrzucane) ### Obsługiwana powierzchnia poświadczeń - Kanoniczna macierz: [Powierzchnia poświadczeń SecretRef](/pl/reference/secretref-credential-surface) - `secrets apply` kieruje do obsługiwanych ścieżek poświadczeń `openclaw.json`. -- Odwołania w `auth-profiles.json` są uwzględniane w rozwiązywaniu runtime i pokryciu audytu. +- Odwołania `auth-profiles.json` są uwzględniane w rozwiązywaniu środowiska uruchomieniowego i pokryciu audytu. ### Konfiguracja dostawców sekretów @@ -3446,11 +3438,11 @@ Uwagi: - Dostawca `file` obsługuje `mode: "json"` i `mode: "singleValue"` (`id` musi mieć wartość `"value"` w trybie singleValue). - Dostawca `exec` wymaga bezwzględnej ścieżki `command` i używa ładunków protokołu na stdin/stdout. -- Domyślnie ścieżki poleceń będące dowiązaniami symbolicznymi są odrzucane. Ustaw `allowSymlinkCommand: true`, aby zezwolić na ścieżki dowiązań przy jednoczesnej walidacji ścieżki rozwiązanej. -- Jeśli skonfigurowano `trustedDirs`, kontrola zaufanego katalogu dotyczy rozwiązanej ścieżki docelowej. -- Środowisko potomne `exec` jest domyślnie minimalne; przekazuj wymagane zmienne jawnie przez `passEnv`. -- Odwołania do sekretów są rozwiązywane przy aktywacji do migawki w pamięci, a następnie ścieżki żądań odczytują tylko tę migawkę. -- Podczas aktywacji stosowane jest filtrowanie aktywnej powierzchni: nierozwiązane odwołania na włączonych powierzchniach powodują błąd uruchomienia/przeładowania, a nieaktywne powierzchnie są pomijane z diagnostyką. +- Domyślnie ścieżki poleceń będące dowiązaniami symbolicznymi są odrzucane. Ustaw `allowSymlinkCommand: true`, aby zezwolić na ścieżki dowiązań symbolicznych przy jednoczesnej walidacji ścieżki rozwiązanego celu. +- Jeśli skonfigurowano `trustedDirs`, kontrola zaufanych katalogów jest stosowana do ścieżki rozwiązanego celu. +- Środowisko podrzędne `exec` jest domyślnie minimalne; wymagane zmienne przekazuj jawnie przez `passEnv`. +- Odwołania do sekretów są rozwiązywane w czasie aktywacji do migawki w pamięci, a ścieżki żądań odczytują potem tylko tę migawkę. +- Filtrowanie aktywnej powierzchni jest stosowane podczas aktywacji: nierozwiązane odwołania na włączonych powierzchniach powodują błąd startu/reloadu, a nieaktywne powierzchnie są pomijane z diagnostyką. --- @@ -3475,10 +3467,10 @@ Uwagi: - Profile per agent są przechowywane w `/auth-profiles.json`. - `auth-profiles.json` obsługuje odwołania na poziomie wartości (`keyRef` dla `api_key`, `tokenRef` dla `token`) dla statycznych trybów poświadczeń. - Profile w trybie OAuth (`auth.profiles..mode = "oauth"`) nie obsługują poświadczeń profilu auth opartych na SecretRef. -- Statyczne poświadczenia runtime pochodzą z rozwiązanych migawek w pamięci; starsze statyczne wpisy `auth.json` są czyszczone po wykryciu. +- Statyczne poświadczenia środowiska uruchomieniowego pochodzą z rozwiązanych migawek w pamięci; starsze statyczne wpisy `auth.json` są czyszczone po wykryciu. - Starsze importy OAuth pochodzą z `~/.openclaw/credentials/oauth.json`. - Zobacz [OAuth](/pl/concepts/oauth). -- Zachowanie runtime sekretów oraz narzędzia `audit/configure/apply`: [Zarządzanie sekretami](/pl/gateway/secrets). +- Zachowanie środowiska uruchomieniowego sekretów oraz narzędzia `audit/configure/apply`: [Secrets Management](/pl/gateway/secrets). ### `auth.cooldowns` @@ -3500,20 +3492,20 @@ Uwagi: } ``` -- `billingBackoffHours`: bazowy backoff w godzinach, gdy profil zawiedzie z powodu rzeczywistych - błędów rozliczeń/braku środków (domyślnie: `5`). Jawny tekst rozliczeniowy może +- `billingBackoffHours`: bazowy backoff w godzinach, gdy profil kończy się niepowodzeniem z powodu rzeczywistych + błędów rozliczeniowych/niewystarczających środków (domyślnie: `5`). Jawny tekst rozliczeniowy może nadal trafić tutaj nawet przy odpowiedziach `401`/`403`, ale dopasowania tekstu - specyficzne dla dostawcy pozostają ograniczone do dostawcy, który nimi zarządza (na przykład OpenRouter - `Key limit exceeded`). Odpowiedzi retryable HTTP `402` dotyczące okna użycia lub - komunikatów o limicie wydatków organizacji/workspace pozostają zamiast tego w ścieżce `rate_limit`. -- `billingBackoffHoursByProvider`: opcjonalne nadpisania per dostawca dla godzin backoff rozliczeń. -- `billingMaxHours`: limit w godzinach dla wykładniczego wzrostu backoff rozliczeń (domyślnie: `24`). + specyficzne dla dostawcy pozostają ograniczone do dostawcy, który je obsługuje (na przykład OpenRouter + `Key limit exceeded`). Możliwe do ponowienia komunikaty HTTP `402` dotyczące okna użycia lub + limitu wydatków organizacji/workspace pozostają zamiast tego na ścieżce `rate_limit`. +- `billingBackoffHoursByProvider`: opcjonalne nadpisania backoffu rozliczeniowego per dostawca w godzinach. +- `billingMaxHours`: ograniczenie w godzinach dla wykładniczego wzrostu backoffu rozliczeniowego (domyślnie: `24`). - `authPermanentBackoffMinutes`: bazowy backoff w minutach dla błędów `auth_permanent` o wysokiej pewności (domyślnie: `10`). -- `authPermanentMaxMinutes`: limit w minutach dla wzrostu backoff `auth_permanent` (domyślnie: `60`). -- `failureWindowHours`: przesuwające się okno w godzinach używane dla liczników backoff (domyślnie: `24`). -- `overloadedProfileRotations`: maksymalna liczba rotacji auth-profile tego samego dostawcy dla błędów przeciążenia przed przejściem do fallbacku modelu (domyślnie: `1`). Kształty zajętości dostawcy takie jak `ModelNotReadyException` trafiają tutaj. +- `authPermanentMaxMinutes`: ograniczenie w minutach dla wzrostu backoffu `auth_permanent` (domyślnie: `60`). +- `failureWindowHours`: ruchome okno w godzinach używane dla liczników backoffu (domyślnie: `24`). +- `overloadedProfileRotations`: maksymalna liczba rotacji profili auth tego samego dostawcy dla błędów przeciążenia przed przejściem do fallbacku modelu (domyślnie: `1`). Kształty zajętości dostawcy, takie jak `ModelNotReadyException`, trafiają tutaj. - `overloadedBackoffMs`: stałe opóźnienie przed ponowną próbą rotacji przeciążonego dostawcy/profilu (domyślnie: `0`). -- `rateLimitedProfileRotations`: maksymalna liczba rotacji auth-profile tego samego dostawcy dla błędów limitu szybkości przed przejściem do fallbacku modelu (domyślnie: `1`). Ten koszyk limitu szybkości obejmuje teksty o kształcie dostawcy, takie jak `Too many concurrent requests`, `ThrottlingException`, `concurrency limit reached`, `workers_ai ... quota limit exceeded` i `resource exhausted`. +- `rateLimitedProfileRotations`: maksymalna liczba rotacji profili auth tego samego dostawcy dla błędów limitu szybkości przed przejściem do fallbacku modelu (domyślnie: `1`). Ten koszyk limitu szybkości obejmuje teksty specyficzne dla dostawcy, takie jak `Too many concurrent requests`, `ThrottlingException`, `concurrency limit reached`, `workers_ai ... quota limit exceeded` i `resource exhausted`. --- @@ -3533,9 +3525,9 @@ Uwagi: ``` - Domyślny plik logu: `/tmp/openclaw/openclaw-YYYY-MM-DD.log`. -- Ustaw `logging.file`, aby używać stałej ścieżki. -- `consoleLevel` zwiększa się do `debug` przy `--verbose`. -- `maxFileBytes`: maksymalny rozmiar pliku logu w bajtach, po którym zapisy są wstrzymywane (dodatnia liczba całkowita; domyślnie: `524288000` = 500 MB). W środowiskach produkcyjnych używaj zewnętrznej rotacji logów. +- Ustaw `logging.file` dla stabilnej ścieżki. +- `consoleLevel` podnosi się do `debug` przy `--verbose`. +- `maxFileBytes`: maksymalny rozmiar pliku logu w bajtach, po przekroczeniu którego zapisy są wstrzymywane (dodatnia liczba całkowita; domyślnie: `524288000` = 500 MB). W środowiskach produkcyjnych używaj zewnętrznej rotacji logów. --- @@ -3572,20 +3564,20 @@ Uwagi: } ``` -- `enabled`: główny przełącznik wyjścia instrumentacji (domyślnie: `true`). -- `flags`: tablica ciągów flag włączających ukierunkowane wyjście logów (obsługuje wildcardy takie jak `"telegram.*"` lub `"*"`). -- `stuckSessionWarnMs`: próg wieku w ms do emitowania ostrzeżeń o zablokowanej sesji, gdy sesja pozostaje w stanie przetwarzania. +- `enabled`: główny przełącznik dla wyjścia instrumentacji (domyślnie: `true`). +- `flags`: tablica ciągów flag włączających ukierunkowane wyjście logów (obsługuje symbole wieloznaczne, takie jak `"telegram.*"` lub `"*"`). +- `stuckSessionWarnMs`: próg wieku w ms dla emitowania ostrzeżeń o zawieszonych sesjach, gdy sesja pozostaje w stanie przetwarzania. - `otel.enabled`: włącza potok eksportu OpenTelemetry (domyślnie: `false`). -- `otel.endpoint`: adres URL collectora dla eksportu OTel. +- `otel.endpoint`: URL kolektora dla eksportu OTel. - `otel.protocol`: `"http/protobuf"` (domyślnie) lub `"grpc"`. -- `otel.headers`: dodatkowe nagłówki metadanych HTTP/gRPC wysyłane z żądaniami eksportu OTel. +- `otel.headers`: dodatkowe nagłówki metadanych HTTP/gRPC wysyłane wraz z żądaniami eksportu OTel. - `otel.serviceName`: nazwa usługi dla atrybutów zasobu. -- `otel.traces` / `otel.metrics` / `otel.logs`: włącza eksport śladów, metryk lub logów. -- `otel.sampleRate`: współczynnik próbkowania śladów `0`–`1`. -- `otel.flushIntervalMs`: okresowy interwał flush telemetrii w ms. -- `cacheTrace.enabled`: loguje migawki śladu cache dla uruchomień wbudowanych (domyślnie: `false`). -- `cacheTrace.filePath`: ścieżka wyjściowa dla JSONL śladu cache (domyślnie: `$OPENCLAW_STATE_DIR/logs/cache-trace.jsonl`). -- `cacheTrace.includeMessages` / `includePrompt` / `includeSystem`: sterują tym, co jest uwzględniane w wyjściu śladu cache (wszystkie domyślnie: `true`). +- `otel.traces` / `otel.metrics` / `otel.logs`: włączają eksport trace, metrics lub logs. +- `otel.sampleRate`: współczynnik próbkowania trace `0`–`1`. +- `otel.flushIntervalMs`: okresowy interwał opróżniania telemetrii w ms. +- `cacheTrace.enabled`: zapisuje migawki śledzenia cache dla przebiegów osadzonych (domyślnie: `false`). +- `cacheTrace.filePath`: ścieżka wyjściowa dla JSONL śledzenia cache (domyślnie: `$OPENCLAW_STATE_DIR/logs/cache-trace.jsonl`). +- `cacheTrace.includeMessages` / `includePrompt` / `includeSystem`: sterują tym, co jest uwzględniane w wyjściu śledzenia cache (wszystkie domyślnie: `true`). --- @@ -3608,11 +3600,11 @@ Uwagi: ``` - `channel`: kanał wydań dla instalacji npm/git — `"stable"`, `"beta"` lub `"dev"`. -- `checkOnStart`: sprawdza aktualizacje npm przy uruchamianiu gateway (domyślnie: `true`). +- `checkOnStart`: sprawdza aktualizacje npm przy uruchomieniu Gateway (domyślnie: `true`). - `auto.enabled`: włącza automatyczne aktualizacje w tle dla instalacji pakietów (domyślnie: `false`). -- `auto.stableDelayHours`: minimalne opóźnienie w godzinach przed automatycznym zastosowaniem w kanale stable (domyślnie: `6`; maks.: `168`). -- `auto.stableJitterHours`: dodatkowe okno rozłożenia wdrożenia kanału stable w godzinach (domyślnie: `12`; maks.: `168`). -- `auto.betaCheckIntervalHours`: jak często uruchamiane są sprawdzenia kanału beta w godzinach (domyślnie: `1`; maks.: `24`). +- `auto.stableDelayHours`: minimalne opóźnienie w godzinach przed automatycznym zastosowaniem na kanale stable (domyślnie: `6`; maks.: `168`). +- `auto.stableJitterHours`: dodatkowe okno rozproszenia wdrożenia kanału stable w godzinach (domyślnie: `12`; maks.: `168`). +- `auto.betaCheckIntervalHours`: jak często uruchamiane są kontrole kanału beta, w godzinach (domyślnie: `1`; maks.: `24`). --- @@ -3646,21 +3638,21 @@ Uwagi: ``` - `enabled`: globalna bramka funkcji ACP (domyślnie: `false`). -- `dispatch.enabled`: niezależna bramka dla dyspozycji tur sesji ACP (domyślnie: `true`). Ustaw `false`, aby pozostawić polecenia ACP dostępne przy jednoczesnym blokowaniu wykonania. -- `backend`: domyślny identyfikator backendu runtime ACP (musi pasować do zarejestrowanego Pluginu runtime ACP). -- `defaultAgent`: zapasowy identyfikator docelowego agenta ACP, gdy uruchomienia nie określają jawnego celu. -- `allowedAgents`: lista dozwolonych identyfikatorów agentów dla sesji runtime ACP; pusta oznacza brak dodatkowych ograniczeń. +- `dispatch.enabled`: niezależna bramka dla dyspozycji tur sesji ACP (domyślnie: `true`). Ustaw `false`, aby polecenia ACP pozostały dostępne przy jednoczesnym blokowaniu wykonania. +- `backend`: identyfikator domyślnego backendu środowiska uruchomieniowego ACP (musi odpowiadać zarejestrowanemu Pluginowi środowiska uruchomieniowego ACP). +- `defaultAgent`: zapasowy identyfikator docelowego agenta ACP, gdy spawny nie określają jawnego celu. +- `allowedAgents`: lista dozwolonych identyfikatorów agentów dla sesji środowiska uruchomieniowego ACP; pusta oznacza brak dodatkowego ograniczenia. - `maxConcurrentSessions`: maksymalna liczba jednocześnie aktywnych sesji ACP. -- `stream.coalesceIdleMs`: okno opróżniania po bezczynności w ms dla tekstu strumieniowanego. -- `stream.maxChunkChars`: maksymalny rozmiar chunku przed podziałem projekcji strumieniowanego bloku. -- `stream.repeatSuppression`: tłumi powtarzające się linie statusu/narzędzi per tura (domyślnie: `true`). -- `stream.deliveryMode`: `"live"` strumieniuje przyrostowo; `"final_only"` buforuje do terminalnych zdarzeń tury. +- `stream.coalesceIdleMs`: okno opróżniania po bezczynności w ms dla strumieniowanego tekstu. +- `stream.maxChunkChars`: maksymalny rozmiar fragmentu przed podziałem projekcji strumieniowanego bloku. +- `stream.repeatSuppression`: tłumi powtarzające się linie statusu/narzędzi na turę (domyślnie: `true`). +- `stream.deliveryMode`: `"live"` strumieniuje przyrostowo; `"final_only"` buforuje do końcowych zdarzeń tury. - `stream.hiddenBoundarySeparator`: separator przed widocznym tekstem po ukrytych zdarzeniach narzędzi (domyślnie: `"paragraph"`). -- `stream.maxOutputChars`: maksymalna liczba znaków wyjścia asystenta projektowanych per tura ACP. +- `stream.maxOutputChars`: maksymalna liczba znaków wyjścia asystenta projektowana na turę ACP. - `stream.maxSessionUpdateChars`: maksymalna liczba znaków dla projektowanych linii statusu/aktualizacji ACP. -- `stream.tagVisibility`: zapis nazw tagów do logicznych nadpisań widoczności dla zdarzeń strumieniowanych. -- `runtime.ttlMinutes`: bezczynny TTL w minutach dla workerów sesji ACP przed możliwością ich wyczyszczenia. -- `runtime.installCommand`: opcjonalne polecenie instalacji do uruchomienia przy bootstrapowaniu środowiska runtime ACP. +- `stream.tagVisibility`: zapis mapowania nazw tagów na logiczne nadpisania widoczności dla zdarzeń strumieniowanych. +- `runtime.ttlMinutes`: bezczynne TTL w minutach dla workerów sesji ACP, po którym kwalifikują się do czyszczenia. +- `runtime.installCommand`: opcjonalne polecenie instalacji uruchamiane przy bootstrapie środowiska uruchomieniowego ACP. --- @@ -3676,17 +3668,17 @@ Uwagi: } ``` -- `cli.banner.taglineMode` steruje stylem sloganu banera: - - `"random"` (domyślnie): rotujące zabawne/sezonowe slogany. - - `"default"`: stały neutralny slogan (`All your chats, one OpenClaw.`). - - `"off"`: brak tekstu sloganu (tytuł/wersja banera nadal są pokazywane). -- Aby ukryć cały baner (nie tylko slogany), ustaw env `OPENCLAW_HIDE_BANNER=1`. +- `cli.banner.taglineMode` steruje stylem hasła na banerze: + - `"random"` (domyślnie): rotujące zabawne/sezonowe hasła. + - `"default"`: stałe neutralne hasło (`Wszystkie Twoje czaty, jeden OpenClaw.`). + - `"off"`: bez tekstu hasła (tytuł/wersja banera nadal są wyświetlane). +- Aby ukryć cały baner (nie tylko hasła), ustaw zmienną środowiskową `OPENCLAW_HIDE_BANNER=1`. --- ## Wizard -Metadane zapisywane przez przepływy konfiguracji prowadzonej CLI (`onboard`, `configure`, `doctor`): +Metadane zapisywane przez przepływy konfiguracji prowadzone przez CLI (`onboard`, `configure`, `doctor`): ```json5 { @@ -3704,13 +3696,13 @@ Metadane zapisywane przez przepływy konfiguracji prowadzonej CLI (`onboard`, `c ## Tożsamość -Zobacz pola tożsamości `agents.list` w sekcji [Domyślne ustawienia agenta](#agent-defaults). +Zobacz pola tożsamości `agents.list` w sekcji [Ustawienia domyślne agentów](#agent-defaults). --- ## Bridge (starsze, usunięte) -Bieżące buildy nie zawierają już mostu TCP. Node łączą się przez Gateway WebSocket. Klucze `bridge.*` nie są już częścią schematu konfiguracji (walidacja kończy się błędem, dopóki nie zostaną usunięte; `openclaw doctor --fix` może usunąć nieznane klucze). +Bieżące buildy nie zawierają już TCP bridge. Nodes łączą się przez WebSocket Gateway. Klucze `bridge.*` nie są już częścią schematu konfiguracji (walidacja kończy się błędem, dopóki nie zostaną usunięte; `openclaw doctor --fix` może usunąć nieznane klucze). @@ -3751,10 +3743,10 @@ Bieżące buildy nie zawierają już mostu TCP. Node łączą się przez Gateway ``` - `sessionRetention`: jak długo zachowywać ukończone izolowane sesje uruchomień Cron przed usunięciem z `sessions.json`. Steruje także czyszczeniem zarchiwizowanych usuniętych transkryptów Cron. Domyślnie: `24h`; ustaw `false`, aby wyłączyć. -- `runLog.maxBytes`: maksymalny rozmiar pliku logu na uruchomienie (`cron/runs/.jsonl`) przed przycięciem. Domyślnie: `2_000_000` bajtów. -- `runLog.keepLines`: liczba najnowszych linii zachowywanych po uruchomieniu przycinania logu uruchomienia. Domyślnie: `2000`. -- `webhookToken`: token bearer używany do dostarczania Cron Webhook przez POST (`delivery.mode = "webhook"`); jeśli pominięty, nie jest wysyłany nagłówek auth. -- `webhook`: przestarzały starszy zapasowy adres URL Webhook (http/https) używany tylko dla zapisanych zadań, które nadal mają `notify: true`. +- `runLog.maxBytes`: maksymalny rozmiar pliku logu pojedynczego uruchomienia (`cron/runs/.jsonl`) przed przycięciem. Domyślnie: `2_000_000` bajtów. +- `runLog.keepLines`: liczba najnowszych wierszy zachowywanych po uruchomieniu przycinania logu uruchomienia. Domyślnie: `2000`. +- `webhookToken`: token bearer używany do dostarczania webhooków Cron przez POST (`delivery.mode = "webhook"`); jeśli pominięty, nagłówek auth nie jest wysyłany. +- `webhook`: przestarzały starszy zapasowy URL webhooka (http/https) używany tylko dla zapisanych zadań, które nadal mają `notify: true`. ### `cron.retry` @@ -3770,9 +3762,9 @@ Bieżące buildy nie zawierają już mostu TCP. Node łączą się przez Gateway } ``` -- `maxAttempts`: maksymalna liczba ponowień dla zadań jednorazowych przy błędach przejściowych (domyślnie: `3`; zakres: `0`–`10`). -- `backoffMs`: tablica opóźnień backoff w ms dla każdej próby ponowienia (domyślnie: `[30000, 60000, 300000]`; 1–10 wpisów). -- `retryOn`: typy błędów wyzwalające ponowienia — `"rate_limit"`, `"overloaded"`, `"network"`, `"timeout"`, `"server_error"`. Pomiń, aby ponawiać dla wszystkich typów przejściowych. +- `maxAttempts`: maksymalna liczba ponownych prób dla zadań jednorazowych przy błędach przejściowych (domyślnie: `3`; zakres: `0`–`10`). +- `backoffMs`: tablica opóźnień backoff w ms dla każdej ponownej próby (domyślnie: `[30000, 60000, 300000]`; 1–10 wpisów). +- `retryOn`: typy błędów wyzwalające ponowne próby — `"rate_limit"`, `"overloaded"`, `"network"`, `"timeout"`, `"server_error"`. Pomiń, aby ponawiać wszystkie typy przejściowe. Dotyczy tylko jednorazowych zadań Cron. Zadania cykliczne używają oddzielnej obsługi błędów. @@ -3793,10 +3785,10 @@ Dotyczy tylko jednorazowych zadań Cron. Zadania cykliczne używają oddzielnej ``` - `enabled`: włącza alerty o błędach dla zadań Cron (domyślnie: `false`). -- `after`: liczba kolejnych błędów, po której uruchamia się alert (dodatnia liczba całkowita, min.: `1`). +- `after`: liczba kolejnych błędów, po których uruchamiany jest alert (dodatnia liczba całkowita, min.: `1`). - `cooldownMs`: minimalna liczba milisekund między powtarzającymi się alertami dla tego samego zadania (nieujemna liczba całkowita). -- `mode`: tryb dostarczania — `"announce"` wysyła przez wiadomość kanałową; `"webhook"` publikuje do skonfigurowanego Webhook. -- `accountId`: opcjonalny identyfikator konta lub kanału do ograniczenia dostarczania alertu. +- `mode`: tryb dostarczania — `"announce"` wysyła przez wiadomość kanałową; `"webhook"` wysyła POST do skonfigurowanego webhooka. +- `accountId`: opcjonalny identyfikator konta lub kanału do ograniczenia zakresu dostarczania alertów. ### `cron.failureDestination` @@ -3813,13 +3805,13 @@ Dotyczy tylko jednorazowych zadań Cron. Zadania cykliczne używają oddzielnej } ``` -- Domyślne miejsce docelowe dla powiadomień o błędach Cron we wszystkich zadaniach. -- `mode`: `"announce"` lub `"webhook"`; domyślnie `"announce"`, gdy istnieją wystarczające dane docelowe. +- Domyślny cel powiadomień o błędach Cron dla wszystkich zadań. +- `mode`: `"announce"` lub `"webhook"`; domyślnie `"announce"`, gdy istnieje wystarczająca ilość danych docelowych. - `channel`: nadpisanie kanału dla dostarczania announce. `"last"` ponownie używa ostatniego znanego kanału dostarczania. -- `to`: jawny cel announce lub adres URL Webhook. Wymagane dla trybu Webhook. +- `to`: jawny cel announce lub URL webhooka. Wymagane dla trybu webhook. - `accountId`: opcjonalne nadpisanie konta dla dostarczania. - `delivery.failureDestination` per zadanie nadpisuje tę globalną wartość domyślną. -- Gdy nie ustawiono ani globalnego, ani per-zadanie miejsca docelowego błędu, zadania już dostarczające przez `announce` przechodzą awaryjnie do tego podstawowego celu announce przy błędzie. +- Gdy nie ustawiono globalnego ani per zadanie celu błędów, zadania, które już dostarczają przez `announce`, przy błędzie wracają do tego podstawowego celu announce. - `delivery.failureDestination` jest obsługiwane tylko dla zadań `sessionTarget="isolated"`, chyba że podstawowe `delivery.mode` zadania ma wartość `"webhook"`. Zobacz [Zadania Cron](/pl/automation/cron-jobs). Izolowane wykonania Cron są śledzone jako [zadania w tle](/pl/automation/tasks). @@ -3828,30 +3820,30 @@ Zobacz [Zadania Cron](/pl/automation/cron-jobs). Izolowane wykonania Cron są ś ## Zmienne szablonu modelu mediów -Placeholdery szablonu rozwijane w `tools.media.models[].args`: +Placeholdery szablonów rozwijane w `tools.media.models[].args`: | Zmienna | Opis | | ----------------- | ------------------------------------------------- | -| `{{Body}}` | Pełna treść przychodzącej wiadomości | -| `{{RawBody}}` | Surowa treść (bez opakowań historii/nadawcy) | -| `{{BodyStripped}}` | Treść z usuniętymi wzmiankami grupowymi | -| `{{From}}` | Identyfikator nadawcy | -| `{{To}}` | Identyfikator celu | -| `{{MessageSid}}` | Identyfikator wiadomości kanału | -| `{{SessionId}}` | UUID bieżącej sesji | -| `{{IsNewSession}}` | `"true"`, gdy utworzono nową sesję | -| `{{MediaUrl}}` | Pseudo-URL przychodzącego medium | -| `{{MediaPath}}` | Lokalna ścieżka medium | -| `{{MediaType}}` | Typ medium (image/audio/document/…) | -| `{{Transcript}}` | Transkrypt audio | -| `{{Prompt}}` | Rozwiązany prompt medium dla wpisów CLI | -| `{{MaxChars}}` | Rozwiązana maksymalna liczba znaków wyjściowych dla wpisów CLI | -| `{{ChatType}}` | `"direct"` lub `"group"` | -| `{{GroupSubject}}` | Temat grupy (best effort) | -| `{{GroupMembers}}` | Podgląd członków grupy (best effort) | -| `{{SenderName}}` | Wyświetlana nazwa nadawcy (best effort) | -| `{{SenderE164}}` | Numer telefonu nadawcy (best effort) | -| `{{Provider}}` | Wskazówka dostawcy (whatsapp, telegram, discord itd.) | +| `{{Body}}` | Pełna treść wiadomości przychodzącej | +| `{{RawBody}}` | Surowa treść (bez opakowań historii/nadawcy) | +| `{{BodyStripped}}`| Treść z usuniętymi wzmiankami grupowymi | +| `{{From}}` | Identyfikator nadawcy | +| `{{To}}` | Identyfikator odbiorcy | +| `{{MessageSid}}` | Identyfikator wiadomości kanału | +| `{{SessionId}}` | UUID bieżącej sesji | +| `{{IsNewSession}}`| `"true"` po utworzeniu nowej sesji | +| `{{MediaUrl}}` | Pseudo-URL mediów przychodzących | +| `{{MediaPath}}` | Lokalna ścieżka mediów | +| `{{MediaType}}` | Typ mediów (image/audio/document/…) | +| `{{Transcript}}` | Transkrypt audio | +| `{{Prompt}}` | Rozwiązany prompt mediów dla wpisów CLI | +| `{{MaxChars}}` | Rozwiązana maksymalna liczba znaków wyjściowych dla wpisów CLI | +| `{{ChatType}}` | `"direct"` lub `"group"` | +| `{{GroupSubject}}`| Temat grupy (best effort) | +| `{{GroupMembers}}`| Podgląd członków grupy (best effort) | +| `{{SenderName}}` | Wyświetlana nazwa nadawcy (best effort) | +| `{{SenderE164}}` | Numer telefonu nadawcy (best effort) | +| `{{Provider}}` | Wskazówka dostawcy (whatsapp, telegram, discord itp.) | --- @@ -3873,11 +3865,11 @@ Podziel konfigurację na wiele plików: **Zachowanie scalania:** - Pojedynczy plik: zastępuje zawierający go obiekt. -- Tablica plików: głęboko scalana w kolejności (późniejsze nadpisują wcześniejsze). -- Klucze rodzeństwa: scalane po include'ach (nadpisują dołączone wartości). -- Zagnieżdżone include'y: do 10 poziomów głębokości. -- Ścieżki: rozwiązywane względem pliku dołączającego, ale muszą pozostać wewnątrz katalogu konfiguracji najwyższego poziomu (`dirname` dla `openclaw.json`). Formy bezwzględne/`../` są dozwolone tylko wtedy, gdy nadal rozwiązują się wewnątrz tej granicy. -- Błędy: jasne komunikaty dla brakujących plików, błędów parsowania i cyklicznych include'ów. +- Tablica plików: głębokie scalanie w kolejności (późniejsze nadpisują wcześniejsze). +- Klucze sąsiednie: scalane po include (nadpisują wartości z include). +- Zagnieżdżone include: do 10 poziomów głębokości. +- Ścieżki: rozwiązywane względem pliku zawierającego, ale muszą pozostawać wewnątrz katalogu konfiguracji najwyższego poziomu (`dirname` dla `openclaw.json`). Formy bezwzględne/`../` są dozwolone tylko wtedy, gdy nadal rozwiązują się w obrębie tej granicy. +- Błędy: czytelne komunikaty dla brakujących plików, błędów parsowania i cyklicznych include. --- diff --git a/docs/pl/gateway/doctor.md b/docs/pl/gateway/doctor.md index 4fa987018..f61941ee2 100644 --- a/docs/pl/gateway/doctor.md +++ b/docs/pl/gateway/doctor.md @@ -1,22 +1,21 @@ --- read_when: - - Dodajesz lub modyfikujesz migracje Doctor - - Wprowadzasz niekompatybilne zmiany konfiguracji -summary: 'Komenda Doctor: kontrole kondycji, migracje konfiguracji i kroki naprawcze' + - Dodawanie lub modyfikowanie migracji doctor + - Wprowadzanie niezgodnych zmian konfiguracji +summary: 'Polecenie doctor: kontrole stanu, migracje konfiguracji i kroki naprawcze' title: Doctor x-i18n: - generated_at: "2026-04-09T01:29:21Z" + generated_at: "2026-04-20T09:58:28Z" model: gpt-5.4 provider: openai - source_hash: 75d321bd1ad0e16c29f2382e249c51edfc3a8d33b55bdceea39e7dbcd4901fce + source_hash: 61a5e01a306058c49be6095f7c8082d779a55d63cf3b5f4c4096173943faf51b source_path: gateway/doctor.md workflow: 15 --- # Doctor -`openclaw doctor` to narzędzie naprawy i migracji dla OpenClaw. Naprawia nieaktualną -konfigurację i stan, sprawdza kondycję oraz podaje konkretne kroki naprawcze. +`openclaw doctor` to narzędzie naprawcze + migracyjne dla OpenClaw. Naprawia nieaktualną konfigurację/stan, sprawdza kondycję systemu i podaje konkretne kroki naprawcze. ## Szybki start @@ -30,13 +29,13 @@ openclaw doctor openclaw doctor --yes ``` -Akceptuje wartości domyślne bez pytania (w tym kroki naprawy restartu/usługi/sandboxa, gdy mają zastosowanie). +Akceptuje wartości domyślne bez pytań (w tym kroki naprawy restartu/usługi/sandboxa, gdy mają zastosowanie). ```bash openclaw doctor --repair ``` -Stosuje zalecane naprawy bez pytania (naprawy + restarty tam, gdzie to bezpieczne). +Stosuje zalecane naprawy bez pytań (naprawy + restarty tam, gdzie jest to bezpieczne). ```bash openclaw doctor --repair --force @@ -48,16 +47,16 @@ Stosuje także agresywne naprawy (nadpisuje niestandardowe konfiguracje supervis openclaw doctor --non-interactive ``` -Uruchamia bez monitów i stosuje tylko bezpieczne migracje (normalizacja konfiguracji + przenoszenie stanu na dysku). Pomija działania restartu/usługi/sandboxa wymagające potwierdzenia człowieka. -Migracje starszego stanu uruchamiają się automatycznie po ich wykryciu. +Uruchamia bez pytań i stosuje tylko bezpieczne migracje (normalizacja konfiguracji + przenoszenie stanu na dysku). Pomija działania restartu/usługi/sandboxa wymagające potwierdzenia człowieka. +Migracje starszego stanu są uruchamiane automatycznie po wykryciu. ```bash openclaw doctor --deep ``` -Skanuje usługi systemowe w poszukiwaniu dodatkowych instalacji gateway (launchd/systemd/schtasks). +Skanuje usługi systemowe pod kątem dodatkowych instalacji Gateway (launchd/systemd/schtasks). -Jeśli chcesz przejrzeć zmiany przed zapisaniem, najpierw otwórz plik konfiguracji: +Jeśli chcesz przejrzeć zmiany przed zapisaniem, najpierw otwórz plik konfiguracyjny: ```bash cat ~/.openclaw/openclaw.json @@ -66,105 +65,89 @@ cat ~/.openclaw/openclaw.json ## Co robi (podsumowanie) - Opcjonalna aktualizacja przed uruchomieniem dla instalacji git (tylko interaktywnie). -- Kontrola aktualności protokołu UI (przebudowuje Control UI, gdy schemat protokołu jest nowszy). -- Kontrola kondycji + monit o restart. -- Podsumowanie stanu Skills (kwalifikujące się/brakujące/zablokowane) i stanu pluginów. +- Sprawdzenie aktualności protokołu UI (przebudowuje Control UI, gdy schemat protokołu jest nowszy). +- Kontrola stanu + monit o restart. +- Podsumowanie stanu Skills (dostępne/brakujące/zablokowane) i stanu Plugin. - Normalizacja konfiguracji dla starszych wartości. - Migracja konfiguracji Talk ze starszych płaskich pól `talk.*` do `talk.provider` + `talk.providers.`. - Kontrole migracji przeglądarki dla starszych konfiguracji rozszerzenia Chrome i gotowości Chrome MCP. - Ostrzeżenia o nadpisaniach dostawcy OpenCode (`models.providers.opencode` / `models.providers.opencode-go`). -- Ostrzeżenia o przysłanianiu OAuth Codex (`models.providers.openai-codex`). -- Kontrola wymagań wstępnych TLS dla profili OAuth OpenAI Codex. -- Migracja starszego stanu na dysku (sessions/agent dir/uwierzytelnianie WhatsApp). -- Migracja starszych kluczy kontraktów manifestu pluginów (`speechProviders`, `realtimeTranscriptionProviders`, `realtimeVoiceProviders`, `mediaUnderstandingProviders`, `imageGenerationProviders`, `videoGenerationProviders`, `webFetchProviders`, `webSearchProviders` → `contracts`). -- Migracja starszego magazynu cron (`jobId`, `schedule.cron`, pola delivery/payload na najwyższym poziomie, `provider` w payload, proste zadania zapasowe webhook z `notify: true`). -- Kontrola plików blokady sesji i czyszczenie przeterminowanych blokad. -- Kontrole integralności i uprawnień stanu (sessions, transcripts, katalog stanu). -- Kontrole uprawnień pliku konfiguracji (`chmod 600`) przy uruchamianiu lokalnie. -- Kondycja uwierzytelniania modeli: sprawdza wygaśnięcie OAuth, może odświeżać tokeny bliskie wygaśnięcia i raportuje stany cooldown/wyłączenia profilów uwierzytelniania. +- Ostrzeżenia o przesłanianiu OAuth Codex (`models.providers.openai-codex`). +- Sprawdzenie wymagań TLS dla profili OAuth OpenAI Codex. +- Migracja starszego stanu na dysku (sesje/katalog agenta/uwierzytelnianie WhatsApp). +- Migracja starszych kluczy kontraktu manifestu pluginu (`speechProviders`, `realtimeTranscriptionProviders`, `realtimeVoiceProviders`, `mediaUnderstandingProviders`, `imageGenerationProviders`, `videoGenerationProviders`, `webFetchProviders`, `webSearchProviders` → `contracts`). +- Migracja starszego magazynu Cron (`jobId`, `schedule.cron`, pola delivery/payload na najwyższym poziomie, `provider` w payload, proste zadania zapasowe Webhook z `notify: true`). +- Inspekcja plików blokady sesji i czyszczenie nieaktualnych blokad. +- Kontrole integralności stanu i uprawnień (sesje, transkrypcje, katalog stanu). +- Kontrole uprawnień pliku konfiguracyjnego (`chmod 600`) przy uruchomieniu lokalnym. +- Stan uwierzytelniania modelu: sprawdza wygaśnięcie OAuth, może odświeżyć tokeny bliskie wygaśnięcia i raportuje stany cooldown/disabled profilu uwierzytelniania. - Wykrywanie dodatkowego katalogu workspace (`~/openclaw`). - Naprawa obrazu sandboxa, gdy sandboxing jest włączony. -- Migracja starszych usług i wykrywanie dodatkowych gateway. +- Migracja starszej usługi i wykrywanie dodatkowych Gateway. - Migracja starszego stanu kanału Matrix (w trybie `--fix` / `--repair`). -- Kontrole runtime gateway (usługa zainstalowana, ale nieuruchomiona; zapisany w pamięci podręcznej label launchd). -- Ostrzeżenia o stanie kanałów (sprawdzane z działającego gateway). +- Kontrole środowiska wykonawczego Gateway (usługa zainstalowana, ale nieuruchomiona; zbuforowana etykieta launchd). +- Ostrzeżenia o stanie kanałów (sprawdzane z działającego Gateway). - Audyt konfiguracji supervisora (launchd/systemd/schtasks) z opcjonalną naprawą. -- Kontrole dobrych praktyk runtime gateway (Node vs Bun, ścieżki menedżera wersji). -- Diagnostyka konfliktów portu gateway (domyślnie `18789`). -- Ostrzeżenia bezpieczeństwa dla otwartych polityk DM. -- Kontrole uwierzytelniania gateway dla lokalnego trybu tokena (oferuje wygenerowanie tokena, gdy nie istnieje jego źródło; nie nadpisuje konfiguracji tokenów SecretRef). -- Kontrola `systemd linger` w Linuxie. -- Kontrola rozmiaru plików bootstrap workspace (ostrzeżenia o obcięciu / blisko limitu dla plików kontekstu). -- Kontrola stanu shell completion oraz automatyczna instalacja/aktualizacja. -- Kontrola gotowości dostawcy embeddingów do wyszukiwania pamięci (model lokalny, zdalny klucz API lub binarka QMD). -- Kontrole instalacji ze źródeł (niezgodność workspace pnpm, brakujące zasoby UI, brakująca binarka tsx). +- Kontrole dobrych praktyk środowiska uruchomieniowego Gateway (Node vs Bun, ścieżki menedżera wersji). +- Diagnostyka konfliktu portu Gateway (domyślnie `18789`). +- Ostrzeżenia bezpieczeństwa dla otwartych zasad DM. +- Kontrole uwierzytelniania Gateway dla lokalnego trybu tokenu (oferuje generowanie tokenu, gdy nie istnieje źródło tokenu; nie nadpisuje konfiguracji tokenu SecretRef). +- Wykrywanie problemów z parowaniem urządzeń (oczekujące żądania pierwszego parowania, oczekujące podniesienia roli/zakresu, nieaktualny dryf lokalnej pamięci podręcznej tokenu urządzenia i dryf uwierzytelniania sparowanych rekordów). +- Kontrola `linger` systemd w Linuksie. +- Kontrola rozmiaru pliku bootstrap workspace (ostrzeżenia o przycięciu/bliskości limitu dla plików kontekstowych). +- Kontrola stanu uzupełniania powłoki i automatyczna instalacja/aktualizacja. +- Kontrola gotowości dostawcy embeddingów wyszukiwania pamięci (model lokalny, zdalny klucz API lub binarka QMD). +- Kontrole instalacji ze źródeł (niedopasowanie workspace pnpm, brakujące zasoby UI, brakująca binarka tsx). - Zapisuje zaktualizowaną konfigurację + metadane kreatora. -## Backfill i reset Dreams UI +## Uzupełnianie i resetowanie Dreams UI -Scena Dreams w Control UI zawiera działania **Backfill**, **Reset** i **Clear Grounded** -dla ugruntowanego przepływu dreaming. Te działania używają metod RPC -w stylu doctor gateway, ale **nie** są częścią naprawy/migracji w CLI `openclaw doctor`. +Scena Dreams w Control UI zawiera działania **Backfill**, **Reset** i **Clear Grounded** dla przepływu grounded dreaming. Działania te używają metod RPC w stylu doctor dla Gateway, ale **nie** są częścią naprawy/migracji w CLI `openclaw doctor`. Co robią: -- **Backfill** skanuje historyczne pliki `memory/YYYY-MM-DD.md` w aktywnym - workspace, uruchamia ugruntowany przebieg dziennika REM i zapisuje odwracalne wpisy - backfill do `DREAMS.md`. -- **Reset** usuwa z `DREAMS.md` tylko te oznaczone wpisy dziennika backfill. -- **Clear Grounded** usuwa tylko przygotowane wpisy krótkoterminowe typu grounded-only, - które pochodzą z historycznego odtworzenia i nie zgromadziły jeszcze aktywnego wsparcia - z przypomnień ani z dziennych danych. +- **Backfill** skanuje historyczne pliki `memory/YYYY-MM-DD.md` w aktywnym workspace, uruchamia grounded REM diary pass i zapisuje odwracalne wpisy backfill do `DREAMS.md`. +- **Reset** usuwa z `DREAMS.md` tylko te oznaczone wpisy diary backfill. +- **Clear Grounded** usuwa tylko przygotowane krótkoterminowe wpisy wyłącznie grounded, które pochodzą z historycznego odtworzenia i nie zgromadziły jeszcze live recall ani dziennego wsparcia. Czego same z siebie **nie** robią: - nie edytują `MEMORY.md` - nie uruchamiają pełnych migracji doctor -- nie przygotowują automatycznie ugruntowanych kandydatów w aktywnym magazynie - promocji krótkoterminowej, chyba że najpierw jawnie uruchomisz ścieżkę CLI z przygotowaniem +- nie przenoszą automatycznie kandydatów grounded do aktywnego magazynu promocji krótkoterminowej, chyba że najpierw jawnie uruchomisz przygotowaną ścieżkę CLI -Jeśli chcesz, aby ugruntowane historyczne odtworzenie wpływało na zwykłą ścieżkę -promocji deep, użyj zamiast tego przepływu CLI: +Jeśli chcesz, aby grounded historical replay wpływał na normalną ścieżkę deep promotion, użyj zamiast tego przepływu CLI: ```bash openclaw memory rem-backfill --path ./memory --stage-short-term ``` -To przygotowuje ugruntowanych trwałych kandydatów w krótkoterminowym magazynie dreaming, pozostawiając -`DREAMS.md` jako powierzchnię do przeglądu. +To przygotowuje grounded durable candidates w magazynie short-term dreaming, pozostawiając `DREAMS.md` jako powierzchnię przeglądu. -## Szczegółowe zachowanie i uzasadnienie +## Szczegółowe działanie i uzasadnienie ### 0) Opcjonalna aktualizacja (instalacje git) -Jeśli jest to checkout git, a doctor działa interaktywnie, oferuje -aktualizację (fetch/rebase/build) przed uruchomieniem doctor. +Jeśli to checkout git i doctor działa interaktywnie, oferuje aktualizację (fetch/rebase/build) przed uruchomieniem doctor. ### 1) Normalizacja konfiguracji -Jeśli konfiguracja zawiera starsze kształty wartości (na przykład `messages.ackReaction` -bez nadpisania specyficznego dla kanału), doctor normalizuje je do bieżącego -schematu. +Jeśli konfiguracja zawiera starsze kształty wartości (na przykład `messages.ackReaction` bez nadpisania specyficznego dla kanału), doctor normalizuje je do bieżącego schematu. -Obejmuje to starsze płaskie pola Talk. Bieżąca publiczna konfiguracja Talk to -`talk.provider` + `talk.providers.`. Doctor przepisuje stare -kształty `talk.voiceId` / `talk.voiceAliases` / `talk.modelId` / `talk.outputFormat` / -`talk.apiKey` do mapy dostawcy. +Obejmuje to starsze płaskie pola Talk. Bieżąca publiczna konfiguracja Talk to `talk.provider` + `talk.providers.`. Doctor przepisuje stare kształty `talk.voiceId` / `talk.voiceAliases` / `talk.modelId` / `talk.outputFormat` / `talk.apiKey` do mapy dostawców. ### 2) Migracje starszych kluczy konfiguracji -Gdy konfiguracja zawiera przestarzałe klucze, inne polecenia odmawiają uruchomienia i proszą -o uruchomienie `openclaw doctor`. +Gdy konfiguracja zawiera przestarzałe klucze, inne polecenia odmawiają uruchomienia i proszą o uruchomienie `openclaw doctor`. -Doctor: +Doctor wykona wtedy: -- Wyjaśnia, które starsze klucze zostały znalezione. -- Pokazuje zastosowaną migrację. -- Przepisuje `~/.openclaw/openclaw.json` z użyciem zaktualizowanego schematu. +- Wyjaśni, które starsze klucze zostały znalezione. +- Pokaże zastosowaną migrację. +- Przepisze `~/.openclaw/openclaw.json` z użyciem zaktualizowanego schematu. -Gateway także automatycznie uruchamia migracje doctor przy starcie, gdy wykryje -starszy format konfiguracji, więc nieaktualne konfiguracje są naprawiane bez ręcznej interwencji. -Migracje magazynu zadań cron są obsługiwane przez `openclaw doctor --fix`. +Gateway również automatycznie uruchamia migracje doctor przy starcie, gdy wykryje starszy format konfiguracji, więc nieaktualne konfiguracje są naprawiane bez ręcznej interwencji. +Migracje magazynu zadań Cron są obsługiwane przez `openclaw doctor --fix`. Bieżące migracje: @@ -173,7 +156,7 @@ Bieżące migracje: - `routing.groupChat.historyLimit` → `messages.groupChat.historyLimit` - `routing.groupChat.mentionPatterns` → `messages.groupChat.mentionPatterns` - `routing.queue` → `messages.queue` -- `routing.bindings` → najwyższy poziom `bindings` +- `routing.bindings` → `bindings` na najwyższym poziomie - `routing.agents`/`routing.defaultAgentId` → `agents.list` + `agents.list[].default` - starsze `talk.voiceId`/`talk.voiceAliases`/`talk.modelId`/`talk.outputFormat`/`talk.apiKey` → `talk.provider` + `talk.providers.` - `routing.agentToAgent` → `tools.agentToAgent` @@ -188,86 +171,69 @@ Bieżące migracje: - `plugins.entries.voice-call.config.streaming.openaiApiKey|sttModel|silenceDurationMs|vadThreshold` → `plugins.entries.voice-call.config.streaming.providers.openai.*` - `bindings[].match.accountID` → `bindings[].match.accountId` -- Dla kanałów z nazwanymi `accounts`, ale z pozostawionymi na najwyższym poziomie wartościami kanału dla pojedynczego konta, przenieś te wartości ograniczone do konta do promowanego konta wybranego dla tego kanału (`accounts.default` dla większości kanałów; Matrix może zachować istniejący pasujący nazwany/domyślny cel) +- Dla kanałów z nazwanymi `accounts`, ale z pozostawionymi jednokontowymi wartościami kanału na najwyższym poziomie, przenosi te wartości o zakresie konta do promowanego konta wybranego dla tego kanału (`accounts.default` dla większości kanałów; Matrix może zachować istniejący pasujący nazwany/domyślny cel) - `identity` → `agents.list[].identity` - `agent.*` → `agents.defaults` + `tools.*` (tools/elevated/exec/sandbox/subagents) - `agent.model`/`allowedModels`/`modelAliases`/`modelFallbacks`/`imageModelFallbacks` → `agents.defaults.models` + `agents.defaults.model.primary/fallbacks` + `agents.defaults.imageModel.primary/fallbacks` - `browser.ssrfPolicy.allowPrivateNetwork` → `browser.ssrfPolicy.dangerouslyAllowPrivateNetwork` - `browser.profiles.*.driver: "extension"` → `"existing-session"` -- usuń `browser.relayBindHost` (starsze ustawienie relay rozszerzenia) +- usuwa `browser.relayBindHost` (starsze ustawienie relay rozszerzenia) -Ostrzeżenia doctor obejmują także wskazówki dotyczące domyślnego konta dla kanałów wielokontowych: +Ostrzeżenia doctor obejmują także wskazówki dotyczące kont domyślnych dla kanałów wielokontowych: -- Jeśli skonfigurowano co najmniej dwa wpisy `channels..accounts` bez `channels..defaultAccount` lub `accounts.default`, doctor ostrzega, że routowanie zapasowe może wybrać nieoczekiwane konto. +- Jeśli skonfigurowano dwa lub więcej wpisów `channels..accounts` bez `channels..defaultAccount` albo `accounts.default`, doctor ostrzega, że routowanie zapasowe może wybrać nieoczekiwane konto. - Jeśli `channels..defaultAccount` jest ustawione na nieznany identyfikator konta, doctor ostrzega i wypisuje skonfigurowane identyfikatory kont. ### 2b) Nadpisania dostawcy OpenCode -Jeśli ręcznie dodano `models.providers.opencode`, `opencode-zen` lub `opencode-go`, -nadpisuje to wbudowany katalog OpenCode z `@mariozechner/pi-ai`. -Może to wymusić przypisanie modeli do niewłaściwego API albo wyzerować koszty. Doctor ostrzega, aby można było -usunąć nadpisanie i przywrócić routowanie API oraz koszty per model. +Jeśli ręcznie dodano `models.providers.opencode`, `opencode-zen` lub `opencode-go`, nadpisuje to wbudowany katalog OpenCode z `@mariozechner/pi-ai`. +Może to wymusić użycie niewłaściwego API dla modeli albo wyzerować koszty. Doctor ostrzega, aby można było usunąć nadpisanie i przywrócić routowanie API oraz koszty per model. ### 2c) Migracja przeglądarki i gotowość Chrome MCP -Jeśli konfiguracja przeglądarki nadal wskazuje usuniętą ścieżkę rozszerzenia Chrome, doctor -normalizuje ją do obecnego modelu dołączania Chrome MCP host-local: +Jeśli konfiguracja przeglądarki nadal wskazuje na usuniętą ścieżkę rozszerzenia Chrome, doctor normalizuje ją do bieżącego modelu dołączania Chrome MCP hostowanego lokalnie: -- `browser.profiles.*.driver: "extension"` zmienia się na `"existing-session"` +- `browser.profiles.*.driver: "extension"` staje się `"existing-session"` - `browser.relayBindHost` jest usuwane -Doctor audytuje też ścieżkę Chrome MCP host-local, gdy używasz `defaultProfile: -"user"` lub skonfigurowanego profilu `existing-session`: +Doctor audytuje także lokalną ścieżkę Chrome MCP na hoście, gdy używasz `defaultProfile:"user"` lub skonfigurowanego profilu `existing-session`: -- sprawdza, czy Google Chrome jest zainstalowane na tym samym hoście dla domyślnych - profili auto-connect +- sprawdza, czy Google Chrome jest zainstalowany na tym samym hoście dla domyślnych profili auto-connect - sprawdza wykrytą wersję Chrome i ostrzega, gdy jest niższa niż Chrome 144 -- przypomina o włączeniu zdalnego debugowania na stronie inspect przeglądarki (na - przykład `chrome://inspect/#remote-debugging`, `brave://inspect/#remote-debugging`, - lub `edge://inspect/#remote-debugging`) +- przypomina o włączeniu zdalnego debugowania na stronie inspect przeglądarki (na przykład `chrome://inspect/#remote-debugging`, `brave://inspect/#remote-debugging` lub `edge://inspect/#remote-debugging`) -Doctor nie może włączyć za Ciebie ustawienia po stronie Chrome. Chrome MCP host-local -nadal wymaga: +Doctor nie może włączyć tego ustawienia po stronie Chrome za Ciebie. Lokalny Chrome MCP nadal wymaga: - przeglądarki opartej na Chromium 144+ na hoście gateway/node - lokalnie uruchomionej przeglądarki - włączonego zdalnego debugowania w tej przeglądarce -- zatwierdzenia pierwszego monitu o zgodę na połączenie w przeglądarce +- zaakceptowania pierwszego monitu o zgodę na dołączenie w przeglądarce -Gotowość tutaj dotyczy wyłącznie lokalnych wymagań wstępnych dołączenia. Existing-session zachowuje -bieżące ograniczenia tras Chrome MCP; zaawansowane trasy, takie jak `responsebody`, eksport PDF, -przechwytywanie pobierania i działania wsadowe, nadal wymagają zarządzanej -przeglądarki lub surowego profilu CDP. +Gotowość w tym miejscu dotyczy wyłącznie lokalnych warunków wstępnych dołączenia. Existing-session zachowuje bieżące ograniczenia tras Chrome MCP; zaawansowane trasy, takie jak `responsebody`, eksport PDF, przechwytywanie pobierania i działania wsadowe, nadal wymagają zarządzanej przeglądarki albo surowego profilu CDP. -Ta kontrola **nie** dotyczy Docker, sandbox, remote-browser ani innych -przepływów bezgłowych. Nadal używają one surowego CDP. +Ta kontrola **nie** dotyczy Docker, sandbox, remote-browser ani innych przepływów bezgłowych. One nadal używają surowego CDP. ### 2d) Wymagania wstępne OAuth TLS -Gdy skonfigurowany jest profil OAuth OpenAI Codex, doctor sonduje endpoint -autoryzacji OpenAI, aby sprawdzić, czy lokalny stos TLS Node/OpenSSL potrafi -zweryfikować łańcuch certyfikatów. Jeśli sonda kończy się błędem certyfikatu (na -przykład `UNABLE_TO_GET_ISSUER_CERT_LOCALLY`, wygasły certyfikat lub certyfikat samopodpisany), -doctor wypisuje wskazówki naprawy specyficzne dla platformy. W macOS z Node z Homebrew -naprawą jest zwykle `brew postinstall ca-certificates`. Z `--deep` sonda uruchamia się -nawet wtedy, gdy gateway jest w dobrym stanie. +Gdy skonfigurowany jest profil OAuth OpenAI Codex, doctor sonduje punkt autoryzacji OpenAI, aby sprawdzić, czy lokalny stos TLS Node/OpenSSL potrafi zweryfikować łańcuch certyfikatów. Jeśli sonda kończy się błędem certyfikatu (na przykład `UNABLE_TO_GET_ISSUER_CERT_LOCALLY`, wygasły certyfikat lub certyfikat samopodpisany), doctor wyświetla wskazówki naprawy specyficzne dla platformy. W systemie macOS z Node z Homebrew naprawa zwykle polega na uruchomieniu `brew postinstall ca-certificates`. Z `--deep` sonda jest uruchamiana nawet wtedy, gdy Gateway jest w dobrym stanie. -### 2c) Nadpisania dostawcy OAuth Codex +### 2c) Nadpisania dostawcy Codex OAuth Jeśli wcześniej dodano starsze ustawienia transportu OpenAI w -`models.providers.openai-codex`, mogą one przysłaniać wbudowaną ścieżkę dostawcy -Codex OAuth, której nowsze wydania używają automatycznie. Doctor ostrzega, gdy widzi -te stare ustawienia transportu obok Codex OAuth, aby można było usunąć lub przepisać -nieaktualne nadpisanie transportu i odzyskać wbudowane zachowanie routingu/fallbacków. -Niestandardowe proxy i nadpisania tylko nagłówków są nadal wspierane i nie -wywołują tego ostrzeżenia. +`models.providers.openai-codex`, mogą one przesłaniać wbudowaną ścieżkę +dostawcy Codex OAuth, której nowsze wydania używają automatycznie. Doctor +ostrzega, gdy wykryje te stare ustawienia transportu obok Codex OAuth, aby +umożliwić usunięcie lub przepisanie nieaktualnego nadpisania transportu i +przywrócenie wbudowanego routingu/zachowania fallback. Niestandardowe proxy i +nadpisania wyłącznie nagłówków są nadal obsługiwane i nie wywołują tego +ostrzeżenia. ### 3) Migracje starszego stanu (układ na dysku) Doctor może migrować starsze układy na dysku do bieżącej struktury: -- Magazyn sessions + transcripts: +- Magazyn sesji + transkrypcje: - z `~/.openclaw/sessions/` do `~/.openclaw/agents//sessions/` - Katalog agenta: - z `~/.openclaw/agent/` do `~/.openclaw/agents//agent/` @@ -275,264 +241,283 @@ Doctor może migrować starsze układy na dysku do bieżącej struktury: - ze starszego `~/.openclaw/credentials/*.json` (z wyjątkiem `oauth.json`) - do `~/.openclaw/credentials/whatsapp//...` (domyślny identyfikator konta: `default`) -Te migracje są wykonywane w trybie best-effort i są idempotentne; doctor będzie emitować ostrzeżenia, gdy -pozostawi jakiekolwiek starsze foldery jako kopie zapasowe. Gateway/CLI także automatycznie migruje -starsze sessions + katalog agenta przy starcie, dzięki czemu historia/uwierzytelnianie/modele trafiają do -ścieżki per agent bez ręcznego uruchamiania doctor. Uwierzytelnianie WhatsApp jest celowo migrowane wyłącznie -przez `openclaw doctor`. Normalizacja Talk provider/provider-map porównuje teraz -według równości strukturalnej, więc różnice wyłącznie w kolejności kluczy nie wywołują już -powtarzających się, pustych zmian `doctor --fix`. +Te migracje są wykonywane na zasadzie best-effort i są idempotentne; doctor emituje ostrzeżenia, gdy pozostawi starsze foldery jako kopie zapasowe. Gateway/CLI również automatycznie migruje starsze sesje + katalog agenta przy starcie, dzięki czemu historia/uwierzytelnianie/modele trafiają do ścieżki per-agent bez ręcznego uruchamiania doctor. Uwierzytelnianie WhatsApp jest celowo migrowane wyłącznie przez `openclaw doctor`. Normalizacja dostawcy Talk/mapy dostawców porównuje teraz według równości strukturalnej, więc różnice wyłącznie w kolejności kluczy nie wywołują już powtarzających się zmian bez efektu przy `doctor --fix`. ### 3a) Migracje starszych manifestów pluginów -Doctor skanuje wszystkie zainstalowane manifesty pluginów pod kątem przestarzałych kluczy -możliwości na najwyższym poziomie (`speechProviders`, `realtimeTranscriptionProviders`, +Doctor skanuje wszystkie zainstalowane manifesty pluginów pod kątem przestarzałych kluczy możliwości na najwyższym poziomie (`speechProviders`, `realtimeTranscriptionProviders`, `realtimeVoiceProviders`, `mediaUnderstandingProviders`, `imageGenerationProviders`, `videoGenerationProviders`, `webFetchProviders`, -`webSearchProviders`). Gdy je znajdzie, oferuje przeniesienie ich do obiektu `contracts` -i przepisanie pliku manifestu na miejscu. Ta migracja jest idempotentna; +`webSearchProviders`). Po wykryciu oferuje przeniesienie ich do obiektu `contracts` +i przepisanie pliku manifestu w miejscu. Ta migracja jest idempotentna; jeśli klucz `contracts` zawiera już te same wartości, starszy klucz jest usuwany bez duplikowania danych. -### 3b) Migracje starszego magazynu cron +### 3b) Migracje starszego magazynu Cron -Doctor sprawdza też magazyn zadań cron (`~/.openclaw/cron/jobs.json` domyślnie, -lub `cron.store`, jeśli został nadpisany) pod kątem starych kształtów zadań, które scheduler nadal +Doctor sprawdza także magazyn zadań Cron (`~/.openclaw/cron/jobs.json` domyślnie, +lub `cron.store`, jeśli został nadpisany) pod kątem starych kształtów zadań, które harmonogram nadal akceptuje dla zgodności. -Bieżące porządki cron obejmują: +Bieżące porządki w Cron obejmują: - `jobId` → `id` - `schedule.cron` → `schedule.expr` - pola payload na najwyższym poziomie (`message`, `model`, `thinking`, ...) → `payload` - pola delivery na najwyższym poziomie (`deliver`, `channel`, `to`, `provider`, ...) → `delivery` - aliasy delivery `provider` w payload → jawne `delivery.channel` -- proste starsze zadania zapasowe webhook z `notify: true` → jawne `delivery.mode="webhook"` z `delivery.to=cron.webhook` +- proste starsze zadania zapasowe Webhook z `notify: true` → jawne `delivery.mode="webhook"` z `delivery.to=cron.webhook` -Doctor automatycznie migruje zadania `notify: true` tylko wtedy, gdy może to zrobić bez -zmiany zachowania. Jeśli zadanie łączy starszy fallback notify z istniejącym -trybem delivery innym niż webhook, doctor ostrzega i pozostawia to zadanie do ręcznego przeglądu. +Doctor automatycznie migruje zadania `notify: true` tylko wtedy, gdy może to zrobić +bez zmiany zachowania. Jeśli zadanie łączy starszy mechanizm zapasowy notify z istniejącym +trybem delivery innym niż webhook, doctor ostrzega i pozostawia takie zadanie do ręcznego przeglądu. ### 3c) Czyszczenie blokad sesji -Doctor skanuje każdy katalog sesji agenta w poszukiwaniu przeterminowanych plików blokad zapisu — plików pozostawionych -po nienormalnym zakończeniu sesji. Dla każdego znalezionego pliku blokady raportuje: -ścieżkę, PID, czy PID nadal żyje, wiek blokady oraz czy jest -uznawana za przeterminowaną (martwy PID lub starsza niż 30 minut). W trybie `--fix` / `--repair` -automatycznie usuwa przeterminowane pliki blokad; w przeciwnym razie wypisuje uwagę i +Doctor skanuje każdy katalog sesji agenta pod kątem nieaktualnych plików blokady zapisu — plików pozostawionych +po nieprawidłowym zakończeniu sesji. Dla każdego znalezionego pliku blokady raportuje: +ścieżkę, PID, czy PID nadal działa, wiek blokady oraz czy jest +uznawana za nieaktualną (martwy PID lub starsza niż 30 minut). W trybie `--fix` / `--repair` +automatycznie usuwa nieaktualne pliki blokady; w przeciwnym razie wyświetla uwagę i poleca ponowne uruchomienie z `--fix`. ### 4) Kontrole integralności stanu (trwałość sesji, routing i bezpieczeństwo) -Katalog stanu to operacyjny pień mózgu. Jeśli zniknie, tracisz -sessions, credentials, logi i konfigurację (chyba że masz kopie zapasowe gdzie indziej). +Katalog stanu to operacyjny pień mózgu systemu. Jeśli zniknie, tracisz +sesje, poświadczenia, logi i konfigurację (chyba że masz kopie zapasowe gdzie indziej). Doctor sprawdza: -- **Brak katalogu stanu**: ostrzega o katastrofalnej utracie stanu, prosi o odtworzenie +- **Brak katalogu stanu**: ostrzega o katastrofalnej utracie stanu, proponuje odtworzenie katalogu i przypomina, że nie może odzyskać brakujących danych. - **Uprawnienia katalogu stanu**: weryfikuje możliwość zapisu; oferuje naprawę uprawnień - (i emituje wskazówkę `chown`, gdy wykryje niezgodność właściciela/grupy). -- **Katalog stanu synchronizowany przez chmurę w macOS**: ostrzega, gdy stan rozwiązuje się do iCloud Drive + (i podaje wskazówkę `chown`, gdy wykryje niezgodność właściciela/grupy). +- **Katalog stanu synchronizowany z chmurą w macOS**: ostrzega, gdy stan znajduje się w iCloud Drive (`~/Library/Mobile Documents/com~apple~CloudDocs/...`) lub - `~/Library/CloudStorage/...`, ponieważ ścieżki oparte na synchronizacji mogą powodować wolniejsze I/O - i wyścigi blokad/synchronizacji. -- **Katalog stanu na SD lub eMMC w Linuxie**: ostrzega, gdy stan rozwiązuje się do źródła montowania `mmcblk*`, - ponieważ losowe I/O na nośnikach SD lub eMMC może być wolniejsze i szybciej zużywać nośnik - przy zapisach sesji i credentials. + `~/Library/CloudStorage/...`, ponieważ ścieżki wspierane synchronizacją mogą powodować wolniejsze I/O + oraz wyścigi blokad/synchronizacji. +- **Katalog stanu na SD lub eMMC w Linuksie**: ostrzega, gdy stan znajduje się na źródle montowania `mmcblk*`, + ponieważ losowe I/O oparte na SD lub eMMC może być wolniejsze i szybciej zużywać nośnik przy zapisach sesji i poświadczeń. - **Brak katalogów sesji**: `sessions/` i katalog magazynu sesji są - wymagane do utrwalenia historii i unikania awarii `ENOENT`. -- **Niezgodność transcript**: ostrzega, gdy ostatnie wpisy sesji mają brakujące - pliki transcript. -- **Główna sesja „1-line JSONL”**: oznacza sytuację, gdy główny transcript ma tylko jedną + wymagane do zachowania historii i uniknięcia awarii `ENOENT`. +- **Niezgodność transkrypcji**: ostrzega, gdy ostatnie wpisy sesji nie mają + odpowiadających plików transkrypcji. +- **Główna sesja „1-line JSONL”**: sygnalizuje, gdy główna transkrypcja ma tylko jedną linię (historia się nie kumuluje). - **Wiele katalogów stanu**: ostrzega, gdy istnieje wiele folderów `~/.openclaw` w różnych katalogach domowych lub gdy `OPENCLAW_STATE_DIR` wskazuje inne miejsce (historia może - zostać rozdzielona między instalacje). -- **Przypomnienie o trybie zdalnym**: jeśli `gateway.mode=remote`, doctor przypomina o jego uruchomieniu - na zdalnym hoście (tam znajduje się stan). -- **Uprawnienia pliku konfiguracji**: ostrzega, jeśli `~/.openclaw/openclaw.json` jest + dzielić się między instalacjami). +- **Przypomnienie o trybie zdalnym**: jeśli `gateway.mode=remote`, doctor przypomina, aby uruchomić + go na hoście zdalnym (tam znajduje się stan). +- **Uprawnienia pliku konfiguracyjnego**: ostrzega, jeśli `~/.openclaw/openclaw.json` jest czytelny dla grupy/świata, i oferuje zaostrzenie do `600`. -### 5) Kondycja uwierzytelniania modeli (wygaśnięcie OAuth) +### 5) Stan uwierzytelniania modelu (wygaśnięcie OAuth) Doctor sprawdza profile OAuth w magazynie uwierzytelniania, ostrzega, gdy tokeny wygasają lub wygasły, i może je odświeżyć, gdy jest to bezpieczne. Jeśli profil -OAuth/token Anthropic jest nieaktualny, sugeruje klucz API Anthropic lub +OAuth/token Anthropic jest nieaktualny, sugeruje klucz API Anthropic albo ścieżkę setup-token Anthropic. Monity o odświeżenie pojawiają się tylko w trybie interaktywnym (TTY); `--non-interactive` pomija próby odświeżania. -Gdy odświeżenie OAuth kończy się trwałym niepowodzeniem (na przykład `refresh_token_reused`, -`invalid_grant` lub dostawca informuje, że trzeba zalogować się ponownie), doctor zgłasza, -że wymagana jest ponowna autoryzacja, i wypisuje dokładną komendę `openclaw models auth login --provider ...`, -którą należy uruchomić. +Gdy odświeżenie OAuth kończy się trwałym błędem (na przykład `refresh_token_reused`, +`invalid_grant` albo dostawca informuje, że trzeba zalogować się ponownie), doctor zgłasza, +że wymagana jest ponowna autoryzacja, i wyświetla dokładne polecenie `openclaw models auth login --provider ...`, +które należy uruchomić. -Doctor raportuje także profile uwierzytelniania, które są tymczasowo nieużywalne z powodu: +Doctor raportuje także profile uwierzytelniania, które są tymczasowo niedostępne z powodu: -- krótkich cooldownów (limity szybkości/timeouty/błędy uwierzytelniania) +- krótkich okresów cooldown (limity szybkości/timeouty/błędy uwierzytelniania) - dłuższych wyłączeń (problemy z rozliczeniami/kredytami) -### 6) Walidacja modelu hooks +### 6) Walidacja modelu Hooks -Jeśli ustawiono `hooks.gmail.model`, doctor waliduje odwołanie do modelu względem -katalogu i listy dozwolonych modeli oraz ostrzega, gdy nie będzie się rozwiązywać lub jest niedozwolone. +Jeśli ustawiono `hooks.gmail.model`, doctor weryfikuje odwołanie do modelu względem +katalogu i allowlisty oraz ostrzega, gdy nie zostanie rozwiązane albo jest niedozwolone. ### 7) Naprawa obrazu sandboxa -Gdy sandboxing jest włączony, doctor sprawdza obrazy Docker i oferuje ich zbudowanie lub -przełączenie na starsze nazwy, jeśli bieżący obraz jest niedostępny. +Gdy sandboxing jest włączony, doctor sprawdza obrazy Docker i proponuje zbudowanie ich lub +przełączenie na starsze nazwy, jeśli bieżący obraz nie istnieje. -### 7b) Zależności runtime bundlowanych pluginów +### 7b) Runtime dependencies bundlowanych pluginów -Doctor weryfikuje, czy zależności runtime bundlowanych pluginów (na przykład -pakiety runtime pluginu Discord) są obecne w katalogu głównym instalacji OpenClaw. -Jeśli którychkolwiek brakuje, doctor raportuje pakiety i instaluje je w -trybie `openclaw doctor --fix` / `openclaw doctor --repair`. +Doctor weryfikuje, czy runtime dependencies bundlowanych pluginów (na przykład pakiety +runtime pluginu Discord) są obecne w katalogu głównym instalacji OpenClaw. +Jeśli jakichkolwiek brakuje, doctor zgłasza pakiety i instaluje je w trybie +`openclaw doctor --fix` / `openclaw doctor --repair`. -### 8) Migracje usług gateway i wskazówki czyszczenia +### 8) Migracje usług Gateway i wskazówki czyszczenia -Doctor wykrywa starsze usługi gateway (launchd/systemd/schtasks) i -oferuje ich usunięcie oraz instalację usługi OpenClaw z użyciem bieżącego portu gateway. -Może też skanować w poszukiwaniu dodatkowych usług podobnych do gateway i wypisywać wskazówki czyszczenia. -Usługi gateway OpenClaw nazwane profilem są traktowane jako pełnoprawne i nie są -oznaczane jako „dodatkowe”. +Doctor wykrywa starsze usługi Gateway (launchd/systemd/schtasks) i +oferuje ich usunięcie oraz zainstalowanie usługi OpenClaw przy użyciu bieżącego portu Gateway. +Może także skanować w poszukiwaniu dodatkowych usług podobnych do Gateway i wyświetlać wskazówki czyszczenia. +Usługi Gateway OpenClaw nazwane profilem są traktowane jako pełnoprawne i nie są oznaczane jako „dodatkowe”. -### 8b) Migracja Matrix przy uruchamianiu +### 8b) Migracja Matrix przy starcie Gdy konto kanału Matrix ma oczekującą lub możliwą do wykonania migrację starszego stanu, doctor (w trybie `--fix` / `--repair`) tworzy snapshot przed migracją, a następnie -uruchamia kroki migracji w trybie best-effort: migrację starszego stanu Matrix i przygotowanie starszego stanu szyfrowanego. Oba kroki nie są krytyczne; błędy są logowane i +uruchamia kroki migracji best-effort: migrację starszego stanu Matrix i przygotowanie starszego stanu szyfrowanego. Oba kroki nie są krytyczne; błędy są logowane, a uruchamianie trwa dalej. W trybie tylko do odczytu (`openclaw doctor` bez `--fix`) ta kontrola jest całkowicie pomijana. +### 8c) Parowanie urządzeń i dryf uwierzytelniania + +Doctor sprawdza teraz stan parowania urządzeń w ramach normalnego przebiegu kontroli stanu. + +Co raportuje: + +- oczekujące żądania pierwszego parowania +- oczekujące podniesienia ról dla już sparowanych urządzeń +- oczekujące podniesienia zakresów dla już sparowanych urządzeń +- naprawy niezgodności klucza publicznego, gdy identyfikator urządzenia nadal się zgadza, ale tożsamość urządzenia + nie odpowiada już zatwierdzonemu rekordowi +- sparowane rekordy bez aktywnego tokenu dla zatwierdzonej roli +- sparowane tokeny, których zakresy odbiegają od zatwierdzonej bazy parowania +- lokalne wpisy pamięci podręcznej tokenu urządzenia dla bieżącej maszyny, które poprzedzają + rotację tokenu po stronie gateway lub zawierają nieaktualne metadane zakresu + +Doctor nie zatwierdza automatycznie żądań parowania ani nie rotuje automatycznie tokenów urządzeń. Zamiast tego +wyświetla dokładne kolejne kroki: + +- sprawdź oczekujące żądania za pomocą `openclaw devices list` +- zatwierdź konkretne żądanie za pomocą `openclaw devices approve ` +- zrotuj nowy token za pomocą `openclaw devices rotate --device --role ` +- usuń nieaktualny rekord i zatwierdź go ponownie za pomocą `openclaw devices remove ` + +To zamyka częstą lukę „już sparowane, ale nadal pojawia się pairing required”: +doctor rozróżnia teraz pierwsze parowanie od oczekujących podniesień roli/zakresu +oraz od nieaktualnego dryfu tokenu/tożsamości urządzenia. + ### 9) Ostrzeżenia bezpieczeństwa -Doctor emituje ostrzeżenia, gdy dostawca jest otwarty na DM bez listy dozwolonych, -lub gdy polityka jest skonfigurowana w niebezpieczny sposób. +Doctor emituje ostrzeżenia, gdy dostawca jest otwarty na DM bez allowlisty lub +gdy polityka jest skonfigurowana w niebezpieczny sposób. ### 10) systemd linger (Linux) -Jeśli działa jako usługa użytkownika systemd, doctor upewnia się, że lingering jest włączony, aby +Jeśli działa jako usługa użytkownika systemd, doctor upewnia się, że linger jest włączony, aby gateway pozostał aktywny po wylogowaniu. ### 11) Stan workspace (Skills, pluginy i starsze katalogi) -Doctor wypisuje podsumowanie stanu workspace dla domyślnego agenta: +Doctor wyświetla podsumowanie stanu workspace dla domyślnego agenta: -- **Stan Skills**: liczba Skills kwalifikujących się, z brakującymi wymaganiami i zablokowanych przez allowlist. +- **Stan Skills**: liczba Skills dostępnych, missing-requirements i allowlist-blocked. - **Starsze katalogi workspace**: ostrzega, gdy `~/openclaw` lub inne starsze katalogi workspace istnieją obok bieżącego workspace. -- **Stan pluginów**: liczby pluginów załadowanych/wyłączonych/z błędami; wypisuje identyfikatory pluginów dla - błędów; raportuje możliwości bundle plugin. -- **Ostrzeżenia o zgodności pluginów**: oznacza pluginy, które mają problemy zgodności z +- **Stan pluginów**: liczba pluginów loaded/disabled/errored; wypisuje identyfikatory pluginów dla + błędów; raportuje możliwości bundlowanych pluginów. +- **Ostrzeżenia zgodności pluginów**: oznacza pluginy mające problemy zgodności z bieżącym runtime. -- **Diagnostyka pluginów**: pokazuje wszelkie ostrzeżenia lub błędy z czasu ładowania emitowane przez +- **Diagnostyka pluginów**: pokazuje ostrzeżenia lub błędy z czasu ładowania emitowane przez rejestr pluginów. ### 11b) Rozmiar pliku bootstrap Doctor sprawdza, czy pliki bootstrap workspace (na przykład `AGENTS.md`, -`CLAUDE.md` lub inne wstrzykiwane pliki kontekstowe) są blisko lub powyżej skonfigurowanego -budżetu znaków. Raportuje dla każdego pliku liczbę znaków surowych vs. wstrzykniętych, procent -obcięcia, przyczynę obcięcia (`max/file` lub `max/total`) oraz łączną liczbę wstrzykniętych -znaków jako ułamek całkowitego budżetu. Gdy pliki są obcięte lub blisko limitu, doctor wypisuje wskazówki -dotyczące dostrajania `agents.defaults.bootstrapMaxChars` +`CLAUDE.md` lub inne wstrzykiwane pliki kontekstowe) są blisko lub przekraczają +skonfigurowany budżet znaków. Raportuje dla każdego pliku liczbę znaków raw vs. injected, procent +przycięcia, przyczynę przycięcia (`max/file` lub `max/total`) oraz łączną liczbę wstrzykniętych +znaków jako ułamek całkowitego budżetu. Gdy pliki są przycinane lub zbliżają się do limitu, +doctor wyświetla wskazówki dotyczące strojenia `agents.defaults.bootstrapMaxChars` i `agents.defaults.bootstrapTotalMaxChars`. -### 11c) Shell completion +### 11c) Uzupełnianie powłoki -Doctor sprawdza, czy autouzupełnianie jest zainstalowane dla bieżącej powłoki +Doctor sprawdza, czy uzupełnianie tabulatorem jest zainstalowane dla bieżącej powłoki (zsh, bash, fish lub PowerShell): -- Jeśli profil powłoki używa wolnego wzorca dynamic completion +- Jeśli profil powłoki używa wolnego dynamicznego wzorca uzupełniania (`source <(openclaw completion ...)`), doctor aktualizuje go do szybszego - wariantu z buforowanym plikiem. -- Jeśli completion jest skonfigurowane w profilu, ale brakuje pliku cache, + wariantu z plikiem cache. +- Jeśli uzupełnianie jest skonfigurowane w profilu, ale brakuje pliku cache, doctor automatycznie regeneruje cache. -- Jeśli completion w ogóle nie jest skonfigurowane, doctor pyta o instalację - (tylko w trybie interaktywnym; pomijane przy `--non-interactive`). +- Jeśli uzupełnianie w ogóle nie jest skonfigurowane, doctor proponuje jego instalację + (tylko tryb interaktywny; pomijane z `--non-interactive`). Uruchom `openclaw completion --write-state`, aby ręcznie zregenerować cache. -### 12) Kontrole uwierzytelniania gateway (lokalny token) +### 12) Kontrole uwierzytelniania Gateway (token lokalny) -Doctor sprawdza gotowość uwierzytelniania lokalnego tokena gateway. +Doctor sprawdza gotowość uwierzytelniania tokenem lokalnego Gateway. -- Jeśli tryb tokena wymaga tokena, a nie istnieje jego źródło, doctor oferuje jego wygenerowanie. +- Jeśli tryb tokenu wymaga tokenu i nie istnieje żadne jego źródło, doctor proponuje jego wygenerowanie. - Jeśli `gateway.auth.token` jest zarządzany przez SecretRef, ale niedostępny, doctor ostrzega i nie nadpisuje go jawnym tekstem. -- `openclaw doctor --generate-gateway-token` wymusza generowanie tylko wtedy, gdy nie skonfigurowano SecretRef tokena. +- `openclaw doctor --generate-gateway-token` wymusza generowanie tylko wtedy, gdy nie skonfigurowano tokenu SecretRef. -### 12b) Naprawy tylko do odczytu uwzględniające SecretRef +### 12b) Naprawy tylko do odczytu z uwzględnieniem SecretRef -Niektóre przepływy naprawcze muszą sprawdzać skonfigurowane credentials bez osłabiania zachowania fail-fast w runtime. +Niektóre przepływy naprawcze muszą sprawdzać skonfigurowane poświadczenia bez osłabiania zachowania fail-fast w runtime. -- `openclaw doctor --fix` używa teraz tego samego modelu podsumowania SecretRef tylko do odczytu, co polecenia z rodziny status, do ukierunkowanych napraw konfiguracji. -- Przykład: naprawa `allowFrom` / `groupAllowFrom` Telegram z `@username` próbuje użyć skonfigurowanych credentials bota, gdy są dostępne. -- Jeśli token bota Telegram jest skonfigurowany przez SecretRef, ale niedostępny w bieżącej ścieżce polecenia, doctor zgłasza, że credential jest skonfigurowany, ale niedostępny, i pomija automatyczne rozwiązywanie zamiast kończyć się awarią lub błędnie raportować brak tokena. +- `openclaw doctor --fix` używa teraz tego samego modelu podsumowania SecretRef tylko do odczytu co polecenia z rodziny status dla ukierunkowanych napraw konfiguracji. +- Przykład: naprawa Telegram `allowFrom` / `groupAllowFrom` z `@username` próbuje użyć skonfigurowanych poświadczeń bota, jeśli są dostępne. +- Jeśli token bota Telegram jest skonfigurowany przez SecretRef, ale niedostępny w bieżącej ścieżce polecenia, doctor zgłasza, że poświadczenie jest skonfigurowane-ale-niedostępne, i pomija automatyczne rozwiązywanie zamiast kończyć się awarią lub błędnie zgłaszać brak tokenu. -### 13) Kontrola kondycji gateway + restart +### 13) Kontrola stanu Gateway + restart -Doctor uruchamia kontrolę kondycji i oferuje restart gateway, gdy wygląda -na niezdrowy. +Doctor uruchamia kontrolę stanu i proponuje restart gateway, gdy wygląda +na niezdatny do pracy. ### 13b) Gotowość wyszukiwania pamięci -Doctor sprawdza, czy skonfigurowany dostawca embeddingów do wyszukiwania pamięci jest gotowy +Doctor sprawdza, czy skonfigurowany dostawca embeddingów wyszukiwania pamięci jest gotowy dla domyślnego agenta. Zachowanie zależy od skonfigurowanego backendu i dostawcy: -- **Backend QMD**: sonduje, czy binarka `qmd` jest dostępna i da się ją uruchomić. - Jeśli nie, wypisuje wskazówki naprawy, w tym pakiet npm i opcję ręcznej ścieżki do binarki. +- **Backend QMD**: sprawdza, czy binarka `qmd` jest dostępna i może się uruchomić. + Jeśli nie, wyświetla wskazówki naprawy, w tym pakiet npm i opcję ręcznej ścieżki do binarki. - **Jawny dostawca lokalny**: sprawdza obecność lokalnego pliku modelu lub rozpoznawanego zdalnego/pobieralnego URL modelu. Jeśli go brakuje, sugeruje przełączenie na zdalnego dostawcę. -- **Jawny dostawca zdalny** (`openai`, `voyage` itp.): sprawdza, czy klucz API jest - obecny w środowisku lub magazynie uwierzytelniania. W razie braku wypisuje konkretne wskazówki naprawy. +- **Jawny dostawca zdalny** (`openai`, `voyage` itd.): weryfikuje, czy klucz API jest + obecny w środowisku lub magazynie uwierzytelniania. Jeśli go brakuje, wyświetla praktyczne wskazówki naprawy. - **Dostawca auto**: najpierw sprawdza dostępność modelu lokalnego, a następnie próbuje każdego zdalnego - dostawcy w kolejności automatycznego wyboru. + dostawcę w kolejności automatycznego wyboru. Gdy wynik sondy gateway jest dostępny (gateway był zdrowy w momencie -kontroli), doctor porównuje go z konfiguracją widoczną dla CLI i odnotowuje +sprawdzenia), doctor porównuje jego wynik z konfiguracją widoczną dla CLI i wskazuje wszelkie rozbieżności. Użyj `openclaw memory status --deep`, aby zweryfikować gotowość embeddingów w runtime. ### 14) Ostrzeżenia o stanie kanałów -Jeśli gateway jest zdrowy, doctor uruchamia sondę stanu kanałów i zgłasza -ostrzeżenia wraz z proponowanymi poprawkami. +Jeśli gateway jest w dobrym stanie, doctor uruchamia sondę stanu kanałów i zgłasza +ostrzeżenia wraz z sugerowanymi poprawkami. ### 15) Audyt konfiguracji supervisora + naprawa Doctor sprawdza zainstalowaną konfigurację supervisora (launchd/systemd/schtasks) pod kątem -brakujących lub nieaktualnych wartości domyślnych (np. zależności systemd od network-online oraz -opóźnienia restartu). Gdy znajdzie niezgodność, zaleca aktualizację i może -przepisać plik usługi/zadanie do bieżących wartości domyślnych. +brakujących lub nieaktualnych ustawień domyślnych (np. zależności systemd network-online i +opóźnienia restartu). Gdy wykryje niezgodność, zaleca aktualizację i może +przepisać plik usługi/zadanie do bieżących ustawień domyślnych. Uwagi: - `openclaw doctor` pyta przed przepisaniem konfiguracji supervisora. - `openclaw doctor --yes` akceptuje domyślne monity naprawy. -- `openclaw doctor --repair` stosuje zalecane poprawki bez monitów. +- `openclaw doctor --repair` stosuje zalecane poprawki bez pytań. - `openclaw doctor --repair --force` nadpisuje niestandardowe konfiguracje supervisora. -- Jeśli uwierzytelnianie tokenem wymaga tokena, a `gateway.auth.token` jest zarządzany przez SecretRef, doctor przy instalacji/naprawie usługi waliduje SecretRef, ale nie zapisuje rozwiązanych wartości tokena w jawnym tekście w metadanych środowiska usługi supervisora. -- Jeśli uwierzytelnianie tokenem wymaga tokena, a skonfigurowany SecretRef tokena nie jest rozwiązany, doctor blokuje ścieżkę instalacji/naprawy i podaje konkretne wskazówki. -- Jeśli skonfigurowano zarówno `gateway.auth.token`, jak i `gateway.auth.password`, a `gateway.auth.mode` nie jest ustawione, doctor blokuje instalację/naprawę do czasu jawnego ustawienia trybu. -- W przypadku jednostek user-systemd w Linuxie kontrole dryfu tokena w doctor obejmują teraz zarówno źródła `Environment=`, jak i `EnvironmentFile=` przy porównywaniu metadanych uwierzytelniania usługi. +- Jeśli uwierzytelnianie tokenem wymaga tokenu, a `gateway.auth.token` jest zarządzany przez SecretRef, instalacja/naprawa usługi doctor weryfikuje SecretRef, ale nie zapisuje rozwiązanego tokenu w jawnym tekście do metadanych środowiska usługi supervisora. +- Jeśli uwierzytelnianie tokenem wymaga tokenu, a skonfigurowany token SecretRef nie jest rozwiązany, doctor blokuje ścieżkę instalacji/naprawy i podaje praktyczne wskazówki. +- Jeśli skonfigurowano zarówno `gateway.auth.token`, jak i `gateway.auth.password`, a `gateway.auth.mode` nie jest ustawione, doctor blokuje instalację/naprawę, dopóki tryb nie zostanie ustawiony jawnie. +- W przypadku jednostek user-systemd w Linuksie kontrole dryfu tokenu doctor uwzględniają teraz zarówno źródła `Environment=`, jak i `EnvironmentFile=` przy porównywaniu metadanych uwierzytelniania usługi. - Zawsze możesz wymusić pełne przepisanie przez `openclaw gateway install --force`. -### 16) Diagnostyka runtime gateway i portu +### 16) Diagnostyka runtime Gateway + portu Doctor sprawdza runtime usługi (PID, ostatni status wyjścia) i ostrzega, gdy -usługa jest zainstalowana, ale faktycznie nie działa. Sprawdza też konflikty portu +usługa jest zainstalowana, ale faktycznie nie działa. Sprawdza także konflikty portów na porcie gateway (domyślnie `18789`) i raportuje prawdopodobne przyczyny (gateway już działa, tunel SSH). -### 17) Dobre praktyki runtime gateway +### 17) Dobre praktyki runtime Gateway Doctor ostrzega, gdy usługa gateway działa na Bun lub na ścieżce Node zarządzanej przez menedżer wersji -(`nvm`, `fnm`, `volta`, `asdf` itd.). Kanały WhatsApp i Telegram wymagają Node, +(`nvm`, `fnm`, `volta`, `asdf` itd.). Kanały WhatsApp + Telegram wymagają Node, a ścieżki menedżera wersji mogą przestać działać po aktualizacjach, ponieważ usługa nie -ładuje inicjalizacji powłoki. Doctor oferuje migrację do systemowej instalacji Node, gdy +ładuje inicjalizacji powłoki. Doctor proponuje migrację do systemowej instalacji Node, gdy jest dostępna (Homebrew/apt/choco). ### 18) Zapis konfiguracji + metadane kreatora @@ -540,10 +525,9 @@ jest dostępna (Homebrew/apt/choco). Doctor zapisuje wszelkie zmiany konfiguracji i oznacza metadane kreatora, aby zarejestrować uruchomienie doctor. -### 19) Wskazówki dotyczące workspace (backup + system pamięci) +### 19) Wskazówki dotyczące workspace (kopia zapasowa + system pamięci) -Doctor sugeruje system pamięci workspace, jeśli go brakuje, i wypisuje wskazówkę dotyczącą backupu, +Doctor sugeruje system pamięci workspace, jeśli go brakuje, i wyświetla wskazówkę dotyczącą kopii zapasowej, jeśli workspace nie jest już pod kontrolą git. -Zobacz [/concepts/agent-workspace](/pl/concepts/agent-workspace), aby przeczytać pełny przewodnik po -strukturze workspace i backupie git (zalecany prywatny GitHub lub GitLab). +Zobacz pełny przewodnik po strukturze workspace i kopii zapasowej git na stronie [/concepts/agent-workspace](/pl/concepts/agent-workspace) (zalecane prywatne GitHub lub GitLab). diff --git a/docs/pl/gateway/index.md b/docs/pl/gateway/index.md index c6f7f1764..0e808d761 100644 --- a/docs/pl/gateway/index.md +++ b/docs/pl/gateway/index.md @@ -1,33 +1,33 @@ --- read_when: - - Uruchamiasz lub debugujesz proces gateway -summary: Runbook dla usługi Gateway, jej cyklu życia i operacji -title: Runbook Gateway + - Uruchamianie lub debugowanie procesu Gateway +summary: Instrukcja operacyjna dla usługi Gateway, jej cyklu życia i operacji +title: Instrukcja operacyjna Gateway x-i18n: - generated_at: "2026-04-07T09:45:29Z" + generated_at: "2026-04-20T09:58:22Z" model: gpt-5.4 provider: openai - source_hash: fd2c21036e88612861ef2195b8ff7205aca31386bb11558614ade8d1a54fdebd + source_hash: e1004cdd43b1db6794f3ca83da38dbdb231a1976329d9d6d851e2b02405278d8 source_path: gateway/index.md workflow: 15 --- -# Runbook Gateway +# Instrukcja operacyjna Gateway -Używaj tej strony do uruchomienia usługi Gateway w pierwszym dniu oraz do operacji w kolejnych dniach. +Użyj tej strony do uruchamiania usługi Gateway w pierwszym dniu oraz do operacji eksploatacyjnych w kolejnych dniach. - + Diagnostyka oparta na objawach z dokładnymi sekwencjami poleceń i sygnaturami logów. - Przewodnik konfiguracji zorientowany na zadania + pełna dokumentacja konfiguracji. + Przewodnik konfiguracji zorientowany na zadania + pełne odniesienie do konfiguracji. - Kontrakt SecretRef, zachowanie snapshotów w czasie wykonywania oraz operacje migracji/przeładowania. + Kontrakt SecretRef, zachowanie snapshotów w czasie działania oraz operacje migracji/przeładowania. - Dokładne reguły target/path dla `secrets apply` oraz zachowanie profilu uwierzytelniania tylko z referencjami. + Dokładne reguły `secrets apply` dotyczące celu/ścieżki oraz zachowanie profilu uwierzytelniania tylko z referencjami. @@ -38,9 +38,9 @@ Używaj tej strony do uruchomienia usługi Gateway w pierwszym dniu oraz do oper ```bash openclaw gateway --port 18789 -# debug/trace odbijane do stdio +# debug/trace odzwierciedlane do stdio openclaw gateway --port 18789 --verbose -# wymuś zabicie procesu nasłuchującego na wybranym porcie, a następnie uruchom +# wymuś zakończenie nasłuchu na wybranym porcie, a następnie uruchom openclaw gateway --force ``` @@ -54,7 +54,7 @@ openclaw status openclaw logs --follow ``` -Prawidłowa baza: `Runtime: running` i `RPC probe: ok`. +Prawidłowy stan bazowy: `Runtime: running`, `Connectivity probe: ok` oraz `Capability: ...` zgodne z oczekiwaniami. Użyj `openclaw gateway status --require-rpc`, gdy potrzebujesz potwierdzenia RPC w zakresie odczytu, a nie tylko osiągalności. @@ -64,35 +64,35 @@ Prawidłowa baza: `Runtime: running` i `RPC probe: ok`. openclaw channels status --probe ``` -Przy osiągalnym gateway to polecenie uruchamia aktywne sondy kanałów dla każdego konta oraz opcjonalne audyty. -Jeśli gateway jest nieosiągalny, CLI przełącza się na podsumowania kanałów oparte wyłącznie na konfiguracji zamiast -wyświetlać wynik aktywnego sondowania. +Przy osiągalnym Gateway uruchamia to aktywne sondy kanałów dla każdego konta oraz opcjonalne audyty. +Jeśli Gateway jest nieosiągalny, CLI przechodzi awaryjnie do podsumowań kanałów opartych wyłącznie na konfiguracji +zamiast wyjścia z aktywnej sondy. -Przeładowanie konfiguracji gateway obserwuje ścieżkę aktywnego pliku konfiguracji (ustalaną na podstawie wartości domyślnych profilu/stanu lub `OPENCLAW_CONFIG_PATH`, jeśli jest ustawione). +Przeładowanie konfiguracji Gateway obserwuje ścieżkę aktywnego pliku konfiguracji (ustaloną na podstawie domyślnych ustawień profilu/stanu albo `OPENCLAW_CONFIG_PATH`, jeśli jest ustawione). Tryb domyślny to `gateway.reload.mode="hybrid"`. -Po pierwszym udanym wczytaniu działający proces udostępnia aktywny snapshot konfiguracji w pamięci; udane przeładowanie podmienia ten snapshot atomowo. +Po pierwszym pomyślnym wczytaniu działający proces obsługuje aktywny snapshot konfiguracji w pamięci; pomyślne przeładowanie atomowo podmienia ten snapshot. -## Model działania w czasie wykonywania +## Model działania -- Jeden stale uruchomiony proces do routingu, control plane i połączeń kanałów. +- Jeden zawsze uruchomiony proces do routingu, płaszczyzny sterowania i połączeń kanałów. - Jeden multipleksowany port dla: - - control/RPC przez WebSocket - - API HTTP, zgodnych z OpenAI (`/v1/models`, `/v1/embeddings`, `/v1/chat/completions`, `/v1/responses`, `/tools/invoke`) + - sterowania/RPC przez WebSocket + - interfejsów HTTP API zgodnych z OpenAI (`/v1/models`, `/v1/embeddings`, `/v1/chat/completions`, `/v1/responses`, `/tools/invoke`) - Control UI i hooków - Domyślny tryb bindowania: `loopback`. - Uwierzytelnianie jest domyślnie wymagane. Konfiguracje ze współdzielonym sekretem używają `gateway.auth.token` / `gateway.auth.password` (lub - `OPENCLAW_GATEWAY_TOKEN` / `OPENCLAW_GATEWAY_PASSWORD`), a konfiguracje reverse proxy - poza `loopback` mogą używać `gateway.auth.mode: "trusted-proxy"`. + `OPENCLAW_GATEWAY_TOKEN` / `OPENCLAW_GATEWAY_PASSWORD`), a konfiguracje + reverse proxy spoza loopback mogą używać `gateway.auth.mode: "trusted-proxy"`. -## Punkty końcowe zgodne z OpenAI +## Endpointy zgodne z OpenAI -Najważniejsza powierzchnia zgodności OpenClaw to obecnie: +Najważniejsza warstwa zgodności OpenClaw to obecnie: - `GET /v1/models` - `GET /v1/models/{id}` @@ -100,24 +100,24 @@ Najważniejsza powierzchnia zgodności OpenClaw to obecnie: - `POST /v1/chat/completions` - `POST /v1/responses` -Dlaczego ten zestaw ma znaczenie: +Dlaczego ten zestaw jest istotny: - Większość integracji Open WebUI, LobeChat i LibreChat najpierw sonduje `/v1/models`. -- Wiele pipeline’ów RAG i pamięci oczekuje `/v1/embeddings`. -- Klienci natywnie agentowi coraz częściej preferują `/v1/responses`. +- Wiele potoków RAG i pamięci oczekuje `/v1/embeddings`. +- Klienci natywni dla agentów coraz częściej preferują `/v1/responses`. Uwaga planistyczna: -- `/v1/models` jest zorientowane agentowo: zwraca `openclaw`, `openclaw/default` i `openclaw/`. -- `openclaw/default` to stabilny alias, który zawsze mapuje się do skonfigurowanego agenta domyślnego. -- Użyj `x-openclaw-model`, jeśli chcesz nadpisać dostawcę/model po stronie backendu; w przeciwnym razie kontrolę zachowuje zwykła konfiguracja modelu i embeddingów wybranego agenta. +- `/v1/models` jest agent-first: zwraca `openclaw`, `openclaw/default` i `openclaw/`. +- `openclaw/default` to stabilny alias, który zawsze mapuje na skonfigurowanego domyślnego agenta. +- Użyj `x-openclaw-model`, gdy chcesz wymusić nadpisanie dostawcy/modelu zaplecza; w przeciwnym razie kontrolę zachowują zwykłe ustawienia modelu i embeddingów wybranego agenta. -Wszystkie te punkty końcowe działają na głównym porcie Gateway i używają tej samej granicy uwierzytelniania zaufanego operatora co reszta HTTP API Gateway. +Wszystkie te endpointy działają na głównym porcie Gateway i używają tej samej granicy uwierzytelniania zaufanego operatora co reszta HTTP API Gateway. ### Priorytet portu i trybu bindowania -| Ustawienie | Kolejność ustalania | -| ------------- | -------------------------------------------------------------- | +| Ustawienie | Kolejność rozstrzygania | +| ------------- | ------------------------------------------------------------- | | Port Gateway | `--port` → `OPENCLAW_GATEWAY_PORT` → `gateway.port` → `18789` | | Tryb bindowania | CLI/override → `gateway.bind` → `loopback` | @@ -127,8 +127,8 @@ Wszystkie te punkty końcowe działają na głównym porcie Gateway i używają | --------------------- | ------------------------------------------ | | `off` | Brak przeładowania konfiguracji | | `hot` | Zastosuj tylko zmiany bezpieczne dla hot reload | -| `restart` | Restart przy zmianach wymagających przeładowania | -| `hybrid` (domyślny) | Zastosuj na gorąco, gdy jest bezpiecznie, restartuj, gdy to wymagane | +| `restart` | Restart przy zmianach wymagających restartu | +| `hybrid` (domyślny) | Zastosuj na gorąco, gdy to bezpieczne, restartuj, gdy to wymagane | ## Zestaw poleceń operatora @@ -144,37 +144,37 @@ openclaw logs --follow openclaw doctor ``` -`gateway status --deep` służy do dodatkowego wykrywania usług (jednostki systemowe LaunchDaemons/systemd/schtasks), -a nie do głębszego sondowania stanu RPC. +`gateway status --deep` służy do dodatkowego wykrywania usług (LaunchDaemons/systemowe +jednostki systemd/schtasks), a nie do głębszej sondy stanu RPC. -## Wiele gateway na jednym hoście +## Wiele Gatewayów (ten sam host) -Większość instalacji powinna uruchamiać jeden gateway na maszynę. Jeden gateway może hostować wielu -agentów i kanały. +W większości instalacji należy uruchamiać jeden Gateway na maszynę. Jeden Gateway może obsługiwać wielu +agentów i wiele kanałów. -Wiele gateway jest potrzebnych tylko wtedy, gdy celowo chcesz izolacji lub bota ratunkowego. +Wiele Gatewayów jest potrzebnych tylko wtedy, gdy celowo chcesz izolacji albo bota ratunkowego. -Przydatne sprawdzenia: +Przydatne kontrole: ```bash openclaw gateway status --deep openclaw gateway probe ``` -Czego oczekiwać: +Czego się spodziewać: - `gateway status --deep` może zgłosić `Other gateway-like services detected (best effort)` - i wyświetlić wskazówki czyszczenia, gdy nadal istnieją stare instalacje launchd/systemd/schtasks. -- `gateway probe` może ostrzec o `multiple reachable gateways`, gdy odpowiada + i wyświetlić wskazówki czyszczenia, gdy nadal istnieją przestarzałe instalacje launchd/systemd/schtasks. +- `gateway probe` może ostrzegać o `multiple reachable gateways`, gdy odpowiada więcej niż jeden cel. -- Jeśli jest to zamierzone, izoluj porty, konfigurację/stan oraz katalogi workspace dla każdego gateway. +- Jeśli jest to zamierzone, odizoluj porty, konfigurację/stany i katalogi workspace dla każdego Gateway. Szczegółowa konfiguracja: [/gateway/multiple-gateways](/pl/gateway/multiple-gateways). ## Dostęp zdalny -Preferowane: Tailscale/VPN. -Zapasowo: tunel SSH. +Zalecane: Tailscale/VPN. +Awaryjnie: tunel SSH. ```bash ssh -N -L 18789:127.0.0.1:18789 user@host @@ -183,16 +183,17 @@ ssh -N -L 18789:127.0.0.1:18789 user@host Następnie połącz klientów lokalnie z `ws://127.0.0.1:18789`. -Tunele SSH nie omijają uwierzytelniania gateway. W przypadku uwierzytelniania współdzielonym sekretem klienci nadal +Tunele SSH nie omijają uwierzytelniania Gateway. W przypadku uwierzytelniania +współdzielonym sekretem klienci nadal muszą wysyłać `token`/`password` nawet przez tunel. W trybach opartych na tożsamości -żądanie nadal musi spełniać tę ścieżkę uwierzytelniania. +żądanie nadal musi spełniać wymagania tej ścieżki uwierzytelniania. -Zobacz: [Gateway zdalny](/pl/gateway/remote), [Uwierzytelnianie](/pl/gateway/authentication), [Tailscale](/pl/gateway/tailscale). +Zobacz: [Remote Gateway](/pl/gateway/remote), [Authentication](/pl/gateway/authentication), [Tailscale](/pl/gateway/tailscale). ## Nadzór i cykl życia usługi -W przypadku niezawodności zbliżonej do produkcyjnej używaj uruchomień nadzorowanych. +Dla niezawodności zbliżonej do produkcyjnej używaj uruchomień nadzorowanych. @@ -204,7 +205,7 @@ openclaw gateway restart openclaw gateway stop ``` -Etykiety LaunchAgent to `ai.openclaw.gateway` (domyślna) lub `ai.openclaw.` (profil nazwany). `openclaw doctor` audytuje i naprawia dryf konfiguracji usługi. +Etykiety LaunchAgent to `ai.openclaw.gateway` (domyślna) albo `ai.openclaw.` (profil nazwany). `openclaw doctor` audytuje i naprawia dryf konfiguracji usługi. @@ -245,7 +246,7 @@ WantedBy=default.target - + ```powershell openclaw gateway install @@ -254,16 +255,16 @@ openclaw gateway restart openclaw gateway stop ``` -Natywne zarządzane uruchamianie w Windows używa Harmonogramu zadań o nazwie `OpenClaw Gateway` -(lub `OpenClaw Gateway ()` dla nazwanych profili). Jeśli tworzenie zadania Harmonogramu zadań -zostanie odrzucone, OpenClaw przełącza się na launcher per użytkownik w folderze Autostart, +Natywne zarządzane uruchamianie w Windows używa Zadania Harmonogramu o nazwie `OpenClaw Gateway` +(albo `OpenClaw Gateway ()` dla nazwanych profili). Jeśli utworzenie Zadania Harmonogramu +zostanie odrzucone, OpenClaw przechodzi awaryjnie do programu uruchamiającego w folderze Startup dla użytkownika, który wskazuje na `gateway.cmd` w katalogu stanu. - + -Użyj jednostki systemowej dla hostów wieloużytkownikowych/zawsze włączonych. +Użyj jednostki systemowej dla hostów wieloużytkownikowych lub zawsze włączonych. ```bash sudo systemctl daemon-reload @@ -277,14 +278,14 @@ Użyj tej samej treści usługi co dla jednostki użytkownika, ale zainstaluj j -## Wiele gateway na jednym hoście +## Wiele Gatewayów na jednym hoście -Większość konfiguracji powinna uruchamiać **jeden** Gateway. -Używaj wielu tylko dla ścisłej izolacji/nadmiarowości (na przykład profil ratunkowy). +W większości konfiguracji należy uruchamiać **jeden** Gateway. +Wielu używaj tylko dla ścisłej izolacji/nadmiarowości (na przykład profil ratunkowy). Lista kontrolna dla każdej instancji: -- Unikalny `gateway.port` +- Unikalne `gateway.port` - Unikalne `OPENCLAW_CONFIG_PATH` - Unikalne `OPENCLAW_STATE_DIR` - Unikalne `agents.defaults.workspace` @@ -296,7 +297,7 @@ OPENCLAW_CONFIG_PATH=~/.openclaw/a.json OPENCLAW_STATE_DIR=~/.openclaw-a opencla OPENCLAW_CONFIG_PATH=~/.openclaw/b.json OPENCLAW_STATE_DIR=~/.openclaw-b openclaw gateway --port 19002 ``` -Zobacz: [Wiele gateway](/pl/gateway/multiple-gateways). +Zobacz: [Multiple gateways](/pl/gateway/multiple-gateways). ### Szybka ścieżka dla profilu deweloperskiego @@ -306,25 +307,25 @@ openclaw --dev gateway --allow-unconfigured openclaw --dev status ``` -Wartości domyślne obejmują odizolowany stan/konfigurację oraz bazowy port gateway `19001`. +Domyślne ustawienia obejmują odizolowany stan/konfigurację oraz bazowy port Gateway `19001`. -## Szybka dokumentacja protokołu (widok operatora) +## Szybkie odniesienie do protokołu (widok operatora) -- Pierwsza ramka klienta musi być `connect`. -- Gateway zwraca snapshot `hello-ok` (`presence`, `health`, `stateVersion`, `uptimeMs`, limity/politykę). -- `hello-ok.features.methods` / `events` to zachowawcza lista wykrywania, a nie +- Pierwszą ramką klienta musi być `connect`. +- Gateway zwraca snapshot `hello-ok` (`presence`, `health`, `stateVersion`, `uptimeMs`, limits/policy). +- `hello-ok.features.methods` / `events` to konserwatywna lista wykrywania, a nie wygenerowany zrzut każdej wywoływalnej ścieżki pomocniczej. - Żądania: `req(method, params)` → `res(ok/payload|error)`. - Typowe zdarzenia obejmują `connect.challenge`, `agent`, `chat`, `session.message`, `session.tool`, `sessions.changed`, `presence`, `tick`, `health`, `heartbeat`, zdarzenia cyklu życia parowania/akceptacji oraz `shutdown`. -Uruchomienia agenta są dwuetapowe: +Uruchomienia agentów są dwuetapowe: 1. Natychmiastowe potwierdzenie przyjęcia (`status:"accepted"`) -2. Ostateczna odpowiedź zakończenia (`status:"ok"|"error"`), z przesyłanymi strumieniowo zdarzeniami `agent` pomiędzy nimi. +2. Ostateczna odpowiedź zakończenia (`status:"ok"|"error"`), ze strumieniowanymi zdarzeniami `agent` pomiędzy nimi. -Zobacz pełną dokumentację protokołu: [Protokół Gateway](/pl/gateway/protocol). +Pełna dokumentacja protokołu: [Gateway Protocol](/pl/gateway/protocol). ## Kontrole operacyjne @@ -343,32 +344,32 @@ openclaw health ### Odtwarzanie po lukach -Zdarzenia nie są odtwarzane ponownie. Przy lukach sekwencji odśwież stan (`health`, `system-presence`) przed kontynuacją. +Zdarzenia nie są odtwarzane. Przy lukach w sekwencji odśwież stan (`health`, `system-presence`) przed kontynuacją. ## Typowe sygnatury awarii -| Sygnatura | Prawdopodobny problem | -| ------------------------------------------------------------- | --------------------------------------------------------------------------------- | -| `refusing to bind gateway ... without auth` | Bindowanie poza loopback bez prawidłowej ścieżki uwierzytelniania gateway | +| Sygnatura | Prawdopodobny problem | +| ------------------------------------------------------------- | -------------------------------------------------------------------------------- | +| `refusing to bind gateway ... without auth` | Bindowanie poza loopback bez prawidłowej ścieżki uwierzytelniania Gateway | | `another gateway instance is already listening` / `EADDRINUSE` | Konflikt portu | -| `Gateway start blocked: set gateway.mode=local` | Konfiguracja ustawiona na tryb zdalny lub brak znacznika trybu lokalnego w uszkodzonej konfiguracji | -| `unauthorized` during connect | Niezgodność uwierzytelniania między klientem a gateway | +| `Gateway start blocked: set gateway.mode=local` | Konfiguracja ustawiona na tryb zdalny albo brakuje stempla trybu lokalnego w uszkodzonej konfiguracji | +| `unauthorized` during connect | Niezgodność uwierzytelniania między klientem a Gateway | -Aby uzyskać pełne sekwencje diagnostyczne, użyj [Rozwiązywanie problemów z Gateway](/pl/gateway/troubleshooting). +Pełne sekwencje diagnostyczne znajdziesz w [Gateway Troubleshooting](/pl/gateway/troubleshooting). ## Gwarancje bezpieczeństwa -- Klienci protokołu Gateway kończą działanie szybko, gdy Gateway jest niedostępny (bez niejawnego bezpośredniego fallbacku kanału). -- Nieprawidłowe/pierwsze ramki inne niż `connect` są odrzucane i połączenie jest zamykane. -- Uprzejme zamknięcie emituje zdarzenie `shutdown` przed zamknięciem gniazda. +- Klienci protokołu Gateway szybko kończą pracę, gdy Gateway jest niedostępny (bez domyślnego awaryjnego przejścia bezpośrednio do kanału). +- Nieprawidłowe pierwsze ramki inne niż `connect` są odrzucane, a połączenie zamykane. +- Przy łagodnym zamknięciu emitowane jest zdarzenie `shutdown` przed zamknięciem gniazda. --- Powiązane: -- [Rozwiązywanie problemów](/pl/gateway/troubleshooting) -- [Proces w tle](/pl/gateway/background-process) -- [Konfiguracja](/pl/gateway/configuration) -- [Stan zdrowia](/pl/gateway/health) +- [Troubleshooting](/pl/gateway/troubleshooting) +- [Background Process](/pl/gateway/background-process) +- [Configuration](/pl/gateway/configuration) +- [Health](/pl/gateway/health) - [Doctor](/pl/gateway/doctor) -- [Uwierzytelnianie](/pl/gateway/authentication) +- [Authentication](/pl/gateway/authentication) diff --git a/docs/pl/gateway/troubleshooting.md b/docs/pl/gateway/troubleshooting.md index 2604ff67d..214ce062c 100644 --- a/docs/pl/gateway/troubleshooting.md +++ b/docs/pl/gateway/troubleshooting.md @@ -1,24 +1,24 @@ --- read_when: - - Centrum rozwiązywania problemów skierowało Cię tutaj po dokładniejszą diagnozę - - Potrzebujesz stabilnych sekcji runbooka opartych na objawach z dokładnymi poleceniami -summary: Szczegółowy runbook rozwiązywania problemów dla gateway, kanałów, automatyzacji, węzłów i przeglądarki + - Centrum rozwiązywania problemów skierowało Cię tutaj w celu przeprowadzenia głębszej diagnostyki. + - Potrzebujesz stabilnych sekcji podręcznika opartych na objawach z dokładnymi poleceniami. +summary: Szczegółowy podręcznik rozwiązywania problemów dla Gateway, kanałów, automatyzacji, Node i przeglądarki title: Rozwiązywanie problemów x-i18n: - generated_at: "2026-04-11T02:45:08Z" + generated_at: "2026-04-20T09:58:27Z" model: gpt-5.4 provider: openai - source_hash: 7ef2faccba26ede307861504043a6415bc1f12dc64407771106f63ddc5b107f5 + source_hash: d93a82407dbb1314b91a809ff9433114e1e9a3b56d46547ef53a8196bac06260 source_path: gateway/troubleshooting.md workflow: 15 --- -# Rozwiązywanie problemów z gateway +# Rozwiązywanie problemów z Gateway -Ta strona to szczegółowy runbook. -Jeśli najpierw chcesz skorzystać z szybkiego przepływu triage, zacznij od [/help/troubleshooting](/pl/help/troubleshooting). +Ta strona jest szczegółowym podręcznikiem. +Zacznij od [/help/troubleshooting](/pl/help/troubleshooting), jeśli najpierw chcesz skorzystać z szybkiego przepływu triage. -## Drabina poleceń +## Drabinka poleceń Uruchom najpierw te polecenia, w tej kolejności: @@ -32,9 +32,10 @@ openclaw channels status --probe Oczekiwane sygnały zdrowego działania: -- `openclaw gateway status` pokazuje `Runtime: running` i `RPC probe: ok`. -- `openclaw doctor` nie zgłasza blokujących problemów z konfiguracją ani usługami. -- `openclaw channels status --probe` pokazuje aktywny stan transportu dla każdego konta oraz, tam gdzie jest to obsługiwane, wyniki probe/audytu, takie jak `works` lub `audit ok`. +- `openclaw gateway status` pokazuje `Runtime: running`, `Connectivity probe: ok` oraz wiersz `Capability: ...`. +- `openclaw doctor` nie zgłasza blokujących problemów z konfiguracją/usługą. +- `openclaw channels status --probe` pokazuje bieżący status transportu dla każdego konta oraz, + tam gdzie jest to obsługiwane, wyniki probe/audit, takie jak `works` lub `audit ok`. ## Anthropic 429: wymagane dodatkowe użycie dla długiego kontekstu @@ -51,12 +52,12 @@ Szukaj: - Wybrany model Anthropic Opus/Sonnet ma `params.context1m: true`. - Bieżące poświadczenie Anthropic nie kwalifikuje się do użycia długiego kontekstu. -- Żądania kończą się błędem tylko w długich sesjach/uruchomieniach modelu, które wymagają ścieżki beta 1M. +- Żądania kończą się niepowodzeniem tylko w długich sesjach/uruchomieniach modelu, które wymagają ścieżki beta 1M. Opcje naprawy: 1. Wyłącz `context1m` dla tego modelu, aby wrócić do zwykłego okna kontekstu. -2. Użyj poświadczenia Anthropic, które kwalifikuje się do żądań długiego kontekstu, albo przełącz się na klucz API Anthropic. +2. Użyj poświadczenia Anthropic, które kwalifikuje się do żądań z długim kontekstem, albo przełącz się na klucz API Anthropic. 3. Skonfiguruj modele zapasowe, aby uruchomienia były kontynuowane, gdy żądania Anthropic z długim kontekstem są odrzucane. Powiązane: @@ -65,13 +66,13 @@ Powiązane: - [/reference/token-use](/pl/reference/token-use) - [/help/faq#why-am-i-seeing-http-429-ratelimiterror-from-anthropic](/pl/help/faq#why-am-i-seeing-http-429-ratelimiterror-from-anthropic) -## Lokalny backend zgodny z OpenAI przechodzi bezpośrednie probe, ale uruchomienia agenta kończą się błędem +## Lokalny backend zgodny z OpenAI przechodzi bezpośrednie probe, ale uruchomienia agenta kończą się niepowodzeniem Użyj tego, gdy: - `curl ... /v1/models` działa - małe bezpośrednie wywołania `/v1/chat/completions` działają -- uruchomienia modeli OpenClaw kończą się błędem tylko podczas zwykłych tur agenta +- uruchomienia modeli OpenClaw kończą się niepowodzeniem tylko podczas zwykłych tur agenta ```bash curl http://127.0.0.1:1234/v1/models @@ -84,22 +85,33 @@ openclaw logs --follow Szukaj: -- małe bezpośrednie wywołania kończą się sukcesem, ale uruchomienia OpenClaw kończą się błędem tylko przy większych promptach -- błędów backendu o `messages[].content`, które oczekuje ciągu znaków -- awarii backendu, które pojawiają się tylko przy większej liczbie tokenów promptu lub pełnych promptach środowiska uruchomieniowego agenta +- małe bezpośrednie wywołania kończą się powodzeniem, ale uruchomienia OpenClaw kończą się niepowodzeniem tylko przy większych promptach +- błędów backendu mówiących, że `messages[].content` oczekuje ciągu znaków +- awarii backendu, które pojawiają się tylko przy większej liczbie tokenów promptu lub pełnych promptach środowiska wykonawczego agenta Typowe sygnatury: -- `messages[...].content: invalid type: sequence, expected a string` → backend odrzuca strukturalne części treści Chat Completions. Naprawa: ustaw `models.providers..models[].compat.requiresStringContent: true`. -- małe bezpośrednie żądania kończą się sukcesem, ale uruchomienia agenta OpenClaw kończą się błędami backendu/modelu (na przykład Gemma w niektórych buildach `inferrs`) → transport OpenClaw najprawdopodobniej jest już poprawny; backend nie radzi sobie z większym kształtem promptu środowiska uruchomieniowego agenta. -- błędy zmniejszają się po wyłączeniu narzędzi, ale nie znikają → schematy narzędzi były częścią obciążenia, ale pozostały problem nadal leży po stronie upstream modelu/serwera albo jest błędem backendu. +- `messages[...].content: invalid type: sequence, expected a string` → backend + odrzuca strukturalne części zawartości Chat Completions. Naprawa: ustaw + `models.providers..models[].compat.requiresStringContent: true`. +- małe bezpośrednie żądania kończą się powodzeniem, ale uruchomienia agenta OpenClaw kończą się awariami backendu/modelu + (na przykład Gemma w niektórych buildach `inferrs`) → transport OpenClaw + prawdopodobnie jest już poprawny; to backend zawodzi na większym kształcie promptu + środowiska wykonawczego agenta. +- awarie zmniejszają się po wyłączeniu narzędzi, ale nie znikają → schematy narzędzi + były częścią obciążenia, ale pozostały problem nadal leży po stronie upstream: + pojemności modelu/serwera albo błędu backendu. Opcje naprawy: -1. Ustaw `compat.requiresStringContent: true` dla backendów Chat Completions obsługujących wyłącznie treść tekstową. -2. Ustaw `compat.supportsTools: false` dla modeli/backendów, które nie potrafią niezawodnie obsłużyć powierzchni schematu narzędzi OpenClaw. -3. Tam, gdzie to możliwe, zmniejsz obciążenie promptu: mniejszy bootstrap workspace, krótsza historia sesji, lżejszy model lokalny albo backend z lepszym wsparciem dla długiego kontekstu. -4. Jeśli małe bezpośrednie żądania nadal przechodzą, a tury agenta OpenClaw wciąż powodują awarie w backendzie, potraktuj to jako ograniczenie upstream serwera/modelu i zgłoś tam reprodukcję z zaakceptowanym kształtem payloadu. +1. Ustaw `compat.requiresStringContent: true` dla backendów Chat Completions obsługujących wyłącznie ciągi znaków. +2. Ustaw `compat.supportsTools: false` dla modeli/backendów, które nie potrafią + niezawodnie obsłużyć powierzchni schematu narzędzi OpenClaw. +3. Zmniejsz obciążenie promptu tam, gdzie to możliwe: mniejszy bootstrap workspace, krótsza + historia sesji, lżejszy model lokalny albo backend z lepszym wsparciem dla długiego kontekstu. +4. Jeśli małe bezpośrednie żądania nadal przechodzą, a tury agenta OpenClaw wciąż powodują awarie + wewnątrz backendu, potraktuj to jako ograniczenie upstream serwera/modelu i zgłoś + tam reprodukcję z zaakceptowanym kształtem ładunku. Powiązane: @@ -109,7 +121,7 @@ Powiązane: ## Brak odpowiedzi -Jeśli kanały działają, ale nic nie odpowiada, sprawdź routing i politykę, zanim cokolwiek ponownie połączysz. +Jeśli kanały działają, ale nic nie odpowiada, sprawdź routing i politykę, zanim ponownie połączysz cokolwiek. ```bash openclaw status @@ -121,13 +133,13 @@ openclaw logs --follow Szukaj: -- Oczekującego parowania dla nadawców wiadomości prywatnych. -- Wymogu wzmianki w grupie (`requireMention`, `mentionPatterns`). -- Niezgodności listy dozwolonych kanałów/grup. +- Oczekiwania na parowanie dla nadawców wiadomości prywatnych. +- Wymuszania wzmianek w grupach (`requireMention`, `mentionPatterns`). +- Niezgodności list dozwolonych kanałów/grup. Typowe sygnatury: -- `drop guild message (mention required` → wiadomość grupowa została zignorowana do momentu wzmianki. +- `drop guild message (mention required` → wiadomość grupowa jest ignorowana do czasu wzmianki. - `pairing request` → nadawca wymaga zatwierdzenia. - `blocked` / `allowlist` → nadawca/kanał został odfiltrowany przez politykę. @@ -139,7 +151,7 @@ Powiązane: ## Łączność dashboard/control UI -Gdy dashboard/control UI nie może się połączyć, zweryfikuj URL, tryb uwierzytelniania i założenia dotyczące bezpiecznego kontekstu. +Gdy dashboard/control UI nie może się połączyć, sprawdź adres URL, tryb uwierzytelniania i założenia dotyczące bezpiecznego kontekstu. ```bash openclaw gateway status @@ -152,35 +164,48 @@ openclaw gateway status --json Szukaj: - Poprawnego probe URL i dashboard URL. -- Niezgodności trybu/tokena uwierzytelniania między klientem a gateway. +- Niezgodności trybu uwierzytelniania/tokenu między klientem a Gateway. - Użycia HTTP tam, gdzie wymagana jest tożsamość urządzenia. Typowe sygnatury: -- `device identity required` → niezabezpieczony kontekst lub brak uwierzytelniania urządzenia. -- `origin not allowed` → przeglądarkowe `Origin` nie znajduje się w `gateway.controlUi.allowedOrigins` (albo łączysz się z pochodzenia przeglądarki innego niż loopback bez jawnej listy dozwolonych). -- `device nonce required` / `device nonce mismatch` → klient nie kończy przepływu uwierzytelniania urządzenia opartego na wyzwaniu (`connect.challenge` + `device.nonce`). -- `device signature invalid` / `device signature expired` → klient podpisał nieprawidłowy payload (albo użył nieaktualnego znacznika czasu) dla bieżącego handshake. -- `AUTH_TOKEN_MISMATCH` z `canRetryWithDeviceToken=true` → klient może wykonać jedną zaufaną ponowną próbę z użyciem buforowanego tokena urządzenia. -- Ta ponowna próba z buforowanym tokenem używa ponownie zestawu zakresów przechowywanego wraz z tokenem sparowanego urządzenia. Wywołania z jawnym `deviceToken` / jawnymi `scopes` zachowują swój żądany zestaw zakresów. -- Poza tą ścieżką ponownej próby pierwszeństwo uwierzytelniania połączenia jest następujące: najpierw jawny współdzielony token/hasło, potem jawny `deviceToken`, potem zapisany token urządzenia, a na końcu token bootstrap. -- W asynchronicznej ścieżce Tailscale Serve Control UI nieudane próby dla tego samego `{scope, ip}` są serializowane, zanim limiter zapisze niepowodzenie. Dwie błędne równoległe ponowne próby od tego samego klienta mogą więc spowodować `retry later` przy drugiej próbie zamiast dwóch zwykłych niezgodności. -- `too many failed authentication attempts (retry later)` z klienta loopback o pochodzeniu przeglądarkowym → powtarzające się niepowodzenia z tego samego znormalizowanego `Origin` są tymczasowo blokowane; inne pochodzenie localhost używa osobnego kubełka. -- powtarzające się `unauthorized` po tej ponownej próbie → rozjazd współdzielonego tokena/tokena urządzenia; odśwież konfigurację tokena i w razie potrzeby ponownie zatwierdź/obróć token urządzenia. +- `device identity required` → kontekst nie jest bezpieczny albo brakuje uwierzytelnienia urządzenia. +- `origin not allowed` → `Origin` przeglądarki nie znajduje się w `gateway.controlUi.allowedOrigins` + (albo łączysz się z pochodzenia przeglądarki innego niż loopback bez jawnej + listy dozwolonych źródeł). +- `device nonce required` / `device nonce mismatch` → klient nie kończy + opartego na wyzwaniu przepływu uwierzytelniania urządzenia (`connect.challenge` + `device.nonce`). +- `device signature invalid` / `device signature expired` → klient podpisał niewłaściwy + ładunek (albo użył nieaktualnego znacznika czasu) dla bieżącego handshake. +- `AUTH_TOKEN_MISMATCH` z `canRetryWithDeviceToken=true` → klient może wykonać jedną zaufaną ponowną próbę z użyciem pamiętanego tokenu urządzenia. +- Ta ponowna próba z użyciem pamiętanego tokenu ponownie wykorzystuje przechowywany zestaw zakresów powiązany ze sparowanym + tokenem urządzenia. Wywołania z jawnym `deviceToken` / jawnymi `scopes` zachowują + natomiast żądany zestaw zakresów. +- Poza tą ścieżką ponownej próby, pierwszeństwo uwierzytelniania przy łączeniu wygląda tak: jawny współdzielony + token/hasło, potem jawny `deviceToken`, potem zapisany token urządzenia, + a na końcu token bootstrap. +- Na asynchronicznej ścieżce Tailscale Serve Control UI nieudane próby dla tego samego + `{scope, ip}` są serializowane, zanim limiter zarejestruje niepowodzenie. Dwie błędne + równoległe ponowne próby od tego samego klienta mogą więc spowodować odpowiedź `retry later` + przy drugiej próbie zamiast dwóch zwykłych niedopasowań. +- `too many failed authentication attempts (retry later)` z klienta loopback o pochodzeniu przeglądarki + → powtarzające się niepowodzenia z tego samego znormalizowanego `Origin` powodują + tymczasową blokadę; inne pochodzenie localhost używa osobnego bucketu. +- powtarzające się `unauthorized` po tej ponownej próbie → rozjazd współdzielonego tokenu/tokenu urządzenia; odśwież konfigurację tokenu i w razie potrzeby ponownie zatwierdź/obróć token urządzenia. - `gateway connect failed:` → nieprawidłowy host/port/docelowy URL. -### Krótka mapa kodów szczegółów uwierzytelniania +### Szybka mapa kodów szczegółów uwierzytelniania -Użyj `error.details.code` z nieudanego wyniku `connect`, aby wybrać kolejne działanie: +Użyj `error.details.code` z nieudanego `connect`, aby wybrać następne działanie: -| Kod szczegółu | Znaczenie | Zalecane działanie | -| ---------------------------- | ------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| `AUTH_TOKEN_MISSING` | Klient nie wysłał wymaganego współdzielonego tokena. | Wklej/ustaw token w kliencie i spróbuj ponownie. Dla ścieżek dashboard: `openclaw config get gateway.auth.token`, a następnie wklej go w ustawieniach Control UI. | -| `AUTH_TOKEN_MISMATCH` | Współdzielony token nie zgadzał się z tokenem gateway auth. | Jeśli `canRetryWithDeviceToken=true`, pozwól na jedną zaufaną ponowną próbę. Ponowne próby z buforowanym tokenem używają zapisanych zatwierdzonych zakresów; wywołania z jawnym `deviceToken` / `scopes` zachowują żądane zakresy. Jeśli nadal się nie udaje, wykonaj [listę kontrolną odzyskiwania po rozjeździe tokena](/cli/devices#token-drift-recovery-checklist). | -| `AUTH_DEVICE_TOKEN_MISMATCH` | Buforowany token dla urządzenia jest nieaktualny lub cofnięty. | Obróć/ponownie zatwierdź token urządzenia za pomocą [CLI devices](/cli/devices), a następnie połącz się ponownie. | -| `PAIRING_REQUIRED` | Tożsamość urządzenia jest znana, ale niezatwierdzona dla tej roli. | Zatwierdź oczekujące żądanie: `openclaw devices list`, a następnie `openclaw devices approve `. | +| Kod szczegółu | Znaczenie | Zalecane działanie | +| --------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `AUTH_TOKEN_MISSING` | Klient nie wysłał wymaganego współdzielonego tokenu. | Wklej/ustaw token w kliencie i spróbuj ponownie. Dla ścieżek dashboard: `openclaw config get gateway.auth.token`, a następnie wklej go w ustawieniach Control UI. | +| `AUTH_TOKEN_MISMATCH` | Współdzielony token nie pasował do tokenu uwierzytelniania Gateway. | Jeśli `canRetryWithDeviceToken=true`, dopuść jedną zaufaną ponowną próbę. Ponowne próby z pamiętanym tokenem używają zapisanych zatwierdzonych zakresów; wywołania z jawnym `deviceToken` / `scopes` zachowują żądane zakresy. Jeśli nadal się nie uda, wykonaj [listę kontrolną odzyskiwania po rozjeździe tokenów](/cli/devices#token-drift-recovery-checklist). | +| `AUTH_DEVICE_TOKEN_MISMATCH` | Pamiętany token dla urządzenia jest nieaktualny albo cofnięty. | Obróć/ponownie zatwierdź token urządzenia przy użyciu [CLI urządzeń](/cli/devices), a następnie połącz się ponownie. | +| `PAIRING_REQUIRED` | Tożsamość urządzenia wymaga zatwierdzenia. Sprawdź `error.details.reason`, czy jest to `not-paired`, `scope-upgrade`, `role-upgrade` lub `metadata-upgrade`, i użyj `requestId` / `remediationHint`, jeśli są obecne. | Zatwierdź oczekujące żądanie: `openclaw devices list`, a następnie `openclaw devices approve `. Podwyższenia zakresu/roli używają tego samego przepływu po przejrzeniu żądanego dostępu. | -Kontrola migracji do device auth v2: +Kontrola migracji device auth v2: ```bash openclaw --version @@ -188,26 +213,28 @@ openclaw doctor openclaw gateway status ``` -Jeśli logi pokazują błędy nonce/podpisu, zaktualizuj łączącego się klienta i zweryfikuj, że: +Jeśli logi pokazują błędy nonce/podpisu, zaktualizuj łączącego się klienta i sprawdź, czy: 1. czeka na `connect.challenge` -2. podpisuje payload powiązany z wyzwaniem +2. podpisuje ładunek powiązany z wyzwaniem 3. wysyła `connect.params.device.nonce` z tym samym nonce wyzwania -Jeśli `openclaw devices rotate` / `revoke` / `remove` jest niespodziewanie odrzucane: +Jeśli `openclaw devices rotate` / `revoke` / `remove` jest nieoczekiwanie odrzucane: -- sesje tokenów sparowanych urządzeń mogą zarządzać tylko **własnym** urządzeniem, chyba że wywołujący ma również `operator.admin` -- `openclaw devices rotate --scope ...` może żądać tylko takich zakresów operatora, które sesja wywołująca już posiada +- sesje tokenów sparowanych urządzeń mogą zarządzać tylko **własnym** urządzeniem, chyba że + wywołujący ma także `operator.admin` +- `openclaw devices rotate --scope ...` może żądać tylko tych zakresów operatora, + które sesja wywołująca już posiada Powiązane: - [/web/control-ui](/web/control-ui) -- [/gateway/configuration](/pl/gateway/configuration) (tryby gateway auth) +- [/gateway/configuration](/pl/gateway/configuration) (tryby uwierzytelniania Gateway) - [/gateway/trusted-proxy-auth](/pl/gateway/trusted-proxy-auth) - [/gateway/remote](/pl/gateway/remote) - [/cli/devices](/cli/devices) -## Usługa gateway nie działa +## Usługa Gateway nie działa Użyj tego, gdy usługa jest zainstalowana, ale proces nie utrzymuje się w działaniu. @@ -221,18 +248,18 @@ openclaw gateway status --deep # skanuje też usługi na poziomie systemu Szukaj: -- `Runtime: stopped` z podpowiedziami dotyczącymi zakończenia. +- `Runtime: stopped` ze wskazówkami dotyczącymi zakończenia. - Niezgodności konfiguracji usługi (`Config (cli)` vs `Config (service)`). -- Konfliktów portów/listenerów. +- Konfliktów portów/nasłuchu. - Dodatkowych instalacji launchd/systemd/schtasks przy użyciu `--deep`. -- Podpowiedzi czyszczenia `Other gateway-like services detected (best effort)`. +- Wskazówek czyszczenia `Other gateway-like services detected (best effort)`. Typowe sygnatury: -- `Gateway start blocked: set gateway.mode=local` lub `existing config is missing gateway.mode` → lokalny tryb gateway nie jest włączony albo plik konfiguracyjny został nadpisany i utracił `gateway.mode`. Naprawa: ustaw `gateway.mode="local"` w konfiguracji albo ponownie uruchom `openclaw onboard --mode local` / `openclaw setup`, aby ponownie zapisać oczekiwaną konfigurację trybu lokalnego. Jeśli uruchamiasz OpenClaw przez Podman, domyślną ścieżką konfiguracji jest `~/.openclaw/openclaw.json`. -- `refusing to bind gateway ... without auth` → powiązanie inne niż loopback bez prawidłowej ścieżki gateway auth (token/hasło albo trusted-proxy, jeśli skonfigurowano). +- `Gateway start blocked: set gateway.mode=local` lub `existing config is missing gateway.mode` → tryb lokalny Gateway nie jest włączony albo plik konfiguracyjny został nadpisany i utracił `gateway.mode`. Naprawa: ustaw `gateway.mode="local"` w swojej konfiguracji albo ponownie uruchom `openclaw onboard --mode local` / `openclaw setup`, aby ponownie odcisnąć oczekiwaną konfigurację trybu lokalnego. Jeśli uruchamiasz OpenClaw przez Podman, domyślna ścieżka konfiguracji to `~/.openclaw/openclaw.json`. +- `refusing to bind gateway ... without auth` → dowiązanie do adresu innego niż loopback bez prawidłowej ścieżki uwierzytelniania Gateway (token/hasło albo `trusted-proxy`, jeśli jest skonfigurowane). - `another gateway instance is already listening` / `EADDRINUSE` → konflikt portu. -- `Other gateway-like services detected (best effort)` → istnieją przestarzałe lub równoległe jednostki launchd/systemd/schtasks. W większości konfiguracji należy utrzymywać jeden gateway na maszynę; jeśli rzeczywiście potrzebujesz więcej niż jednego, odizoluj porty oraz config/state/workspace. Zobacz [/gateway#multiple-gateways-same-host](/pl/gateway#multiple-gateways-same-host). +- `Other gateway-like services detected (best effort)` → istnieją przestarzałe lub równoległe jednostki launchd/systemd/schtasks. W większości konfiguracji powinien działać jeden Gateway na maszynę; jeśli rzeczywiście potrzebujesz więcej niż jednego, odizoluj porty + konfigurację/stan/workspace. Zobacz [/gateway#multiple-gateways-same-host](/pl/gateway#multiple-gateways-same-host). Powiązane: @@ -240,9 +267,9 @@ Powiązane: - [/gateway/configuration](/pl/gateway/configuration) - [/gateway/doctor](/pl/gateway/doctor) -## Ostrzeżenia probe gateway +## Ostrzeżenia probe Gateway -Użyj tego, gdy `openclaw gateway probe` dociera do jakiegoś celu, ale nadal wyświetla blok ostrzeżeń. +Użyj tego, gdy `openclaw gateway probe` dociera do celu, ale nadal wyświetla blok ostrzeżenia. ```bash openclaw gateway probe @@ -253,14 +280,15 @@ openclaw gateway probe --ssh user@gateway-host Szukaj: - `warnings[].code` i `primaryTargetId` w wyjściu JSON. -- Czy ostrzeżenie dotyczy fallbacku SSH, wielu gateway, brakujących zakresów czy nierozwiązanych odwołań auth. +- Czy ostrzeżenie dotyczy fallback SSH, wielu Gateway, brakujących zakresów czy nierozwiązanych auth ref. Typowe sygnatury: - `SSH tunnel failed to start; falling back to direct probes.` → konfiguracja SSH nie powiodła się, ale polecenie nadal próbowało bezpośrednich skonfigurowanych/celów loopback. -- `multiple reachable gateways detected` → odpowiedział więcej niż jeden cel. Zwykle oznacza to zamierzoną konfigurację wielogatewayową albo nieaktualne/zduplikowane listenery. -- `Probe diagnostics are limited by gateway scopes (missing operator.read)` → połączenie zadziałało, ale szczegółowe RPC jest ograniczone zakresem; sparuj tożsamość urządzenia albo użyj poświadczeń z `operator.read`. -- nierozwiązany tekst ostrzeżenia `gateway.auth.*` / `gateway.remote.*` SecretRef → materiał uwierzytelniający nie był dostępny w tej ścieżce polecenia dla nieudanego celu. +- `multiple reachable gateways detected` → odpowiedział więcej niż jeden cel. Zwykle oznacza to zamierzoną konfigurację z wieloma Gateway albo przestarzałe/zduplikowane nasłuchujące procesy. +- `Read-probe diagnostics are limited by gateway scopes (missing operator.read)` → połączenie zadziałało, ale szczegółowe RPC są ograniczone zakresem; sparuj tożsamość urządzenia albo użyj poświadczeń z `operator.read`. +- `Capability: pairing-pending` lub `gateway closed (1008): pairing required` → Gateway odpowiedział, ale ten klient nadal wymaga parowania/zatwierdzenia przed uzyskaniem zwykłego dostępu operatora. +- nierozwiązany tekst ostrzeżenia `gateway.auth.*` / `gateway.remote.*` SecretRef → materiał uwierzytelniający był niedostępny w tej ścieżce polecenia dla nieudanego celu. Powiązane: @@ -268,9 +296,9 @@ Powiązane: - [/gateway#multiple-gateways-same-host](/pl/gateway#multiple-gateways-same-host) - [/gateway/remote](/pl/gateway/remote) -## Kanał połączony, ale wiadomości nie przepływają +## Kanał jest połączony, ale wiadomości nie przepływają -Jeśli stan kanału jest połączony, ale przepływ wiadomości nie działa, skup się na polityce, uprawnieniach i regułach dostarczania specyficznych dla kanału. +Jeśli stan kanału to connected, ale przepływ wiadomości nie działa, skup się na polityce, uprawnieniach i regułach dostarczania specyficznych dla kanału. ```bash openclaw channels status --probe @@ -283,13 +311,13 @@ openclaw config get channels Szukaj: - Polityki DM (`pairing`, `allowlist`, `open`, `disabled`). -- Listy dozwolonych grup i wymagań wzmianki. +- Listy dozwolonych grup i wymagań dotyczących wzmianek. - Brakujących uprawnień/zakresów API kanału. Typowe sygnatury: -- `mention required` → wiadomość została zignorowana przez politykę wzmianki w grupie. -- ślady `pairing` / oczekującego zatwierdzenia → nadawca nie został zatwierdzony. +- `mention required` → wiadomość została zignorowana przez politykę wymuszającą wzmianki w grupie. +- ślady `pairing` / oczekującego zatwierdzenia → nadawca nie jest zatwierdzony. - `missing_scope`, `not_in_channel`, `Forbidden`, `401/403` → problem z uwierzytelnianiem/uprawnieniami kanału. Powiązane: @@ -299,9 +327,9 @@ Powiązane: - [/channels/telegram](/pl/channels/telegram) - [/channels/discord](/pl/channels/discord) -## Dostarczanie cron i heartbeat +## Dostarczanie Cron i Heartbeat -Jeśli cron lub heartbeat nie uruchomiły się albo nic nie dostarczyły, najpierw zweryfikuj stan harmonogramu, a potem cel dostarczania. +Jeśli Cron lub Heartbeat nie uruchomił się albo nie dostarczył wyniku, najpierw zweryfikuj stan harmonogramu, a potem cel dostarczenia. ```bash openclaw cron status @@ -313,19 +341,19 @@ openclaw logs --follow Szukaj: -- Włączonego cron i obecnego następnego wybudzenia. -- Stanu historii uruchomień zadania (`ok`, `skipped`, `error`). -- Powodów pominięcia heartbeat (`quiet-hours`, `requests-in-flight`, `alerts-disabled`, `empty-heartbeat-file`, `no-tasks-due`). +- Czy Cron jest włączony i czy obecny jest następny czas wybudzenia. +- Statusu historii uruchomień zadania (`ok`, `skipped`, `error`). +- Powodów pominięcia Heartbeat (`quiet-hours`, `requests-in-flight`, `alerts-disabled`, `empty-heartbeat-file`, `no-tasks-due`). Typowe sygnatury: -- `cron: scheduler disabled; jobs will not run automatically` → cron jest wyłączony. -- `cron: timer tick failed` → tick harmonogramu zakończył się błędem; sprawdź błędy plików/logów/runtime. +- `cron: scheduler disabled; jobs will not run automatically` → Cron jest wyłączony. +- `cron: timer tick failed` → niepowodzenie tyknięcia harmonogramu; sprawdź błędy plików/logów/runtime. - `heartbeat skipped` z `reason=quiet-hours` → poza oknem aktywnych godzin. -- `heartbeat skipped` z `reason=empty-heartbeat-file` → `HEARTBEAT.md` istnieje, ale zawiera tylko puste linie / nagłówki markdown, więc OpenClaw pomija wywołanie modelu. -- `heartbeat skipped` z `reason=no-tasks-due` → `HEARTBEAT.md` zawiera blok `tasks:`, ale żadne zadania nie są zaplanowane na ten tick. -- `heartbeat: unknown accountId` → nieprawidłowy account id dla celu dostarczania heartbeat. -- `heartbeat skipped` z `reason=dm-blocked` → cel heartbeat został rozwiązany jako miejsce docelowe w stylu DM, podczas gdy `agents.defaults.heartbeat.directPolicy` (lub nadpisanie dla konkretnego agenta) ma wartość `block`. +- `heartbeat skipped` z `reason=empty-heartbeat-file` → `HEARTBEAT.md` istnieje, ale zawiera tylko puste wiersze / nagłówki markdown, więc OpenClaw pomija wywołanie modelu. +- `heartbeat skipped` z `reason=no-tasks-due` → `HEARTBEAT.md` zawiera blok `tasks:`, ale żadne z zadań nie przypada na to tyknięcie. +- `heartbeat: unknown accountId` → nieprawidłowy account id dla celu dostarczenia Heartbeat. +- `heartbeat skipped` z `reason=dm-blocked` → cel Heartbeat został rozwiązany do miejsca docelowego w stylu DM, podczas gdy `agents.defaults.heartbeat.directPolicy` (lub nadpisanie per agent) ma wartość `block`. Powiązane: @@ -333,9 +361,9 @@ Powiązane: - [/automation/cron-jobs](/pl/automation/cron-jobs) - [/gateway/heartbeat](/pl/gateway/heartbeat) -## Sparowane narzędzie węzła kończy się błędem +## Narzędzie sparowanego Node kończy się niepowodzeniem -Jeśli węzeł jest sparowany, ale narzędzia nie działają, odizoluj stan pierwszego planu, uprawnień i zatwierdzeń. +Jeśli Node jest sparowany, ale narzędzia kończą się niepowodzeniem, odizoluj stan pierwszego planu, uprawnień i zatwierdzeń. ```bash openclaw nodes status @@ -347,16 +375,16 @@ openclaw status Szukaj: -- Węzła online z oczekiwanymi możliwościami. -- Przyznanych przez system operacyjny uprawnień do kamery/mikrofonu/lokalizacji/ekranu. +- Czy Node jest online z oczekiwanymi możliwościami. +- Przyznania uprawnień systemu operacyjnego dla kamery/mikrofonu/lokalizacji/ekranu. - Stanu zatwierdzeń exec i listy dozwolonych. Typowe sygnatury: -- `NODE_BACKGROUND_UNAVAILABLE` → aplikacja węzła musi być na pierwszym planie. -- `*_PERMISSION_REQUIRED` / `LOCATION_PERMISSION_REQUIRED` → brakuje uprawnienia systemowego. -- `SYSTEM_RUN_DENIED: approval required` → oczekuje zatwierdzenie exec. -- `SYSTEM_RUN_DENIED: allowlist miss` → polecenie zablokowane przez listę dozwolonych. +- `NODE_BACKGROUND_UNAVAILABLE` → aplikacja Node musi być na pierwszym planie. +- `*_PERMISSION_REQUIRED` / `LOCATION_PERMISSION_REQUIRED` → brak wymaganego uprawnienia systemu operacyjnego. +- `SYSTEM_RUN_DENIED: approval required` → oczekujące zatwierdzenie exec. +- `SYSTEM_RUN_DENIED: allowlist miss` → polecenie zablokowane przez allowlist. Powiązane: @@ -364,9 +392,9 @@ Powiązane: - [/nodes/index](/pl/nodes/index) - [/tools/exec-approvals](/pl/tools/exec-approvals) -## Narzędzie przeglądarki kończy się błędem +## Narzędzie przeglądarki kończy się niepowodzeniem -Użyj tego, gdy działania narzędzia przeglądarki kończą się błędem, mimo że sam gateway działa prawidłowo. +Użyj tego, gdy działania narzędzia przeglądarki kończą się niepowodzeniem, mimo że sam Gateway działa prawidłowo. ```bash openclaw browser status @@ -385,23 +413,23 @@ Szukaj: Typowe sygnatury: -- `unknown command "browser"` lub `unknown command 'browser'` → wbudowany plugin przeglądarki jest wykluczony przez `plugins.allow`. -- brak / niedostępność narzędzia przeglądarki przy `browser.enabled=true` → `plugins.allow` wyklucza `browser`, więc plugin nigdy się nie załadował. -- `Failed to start Chrome CDP on port` → proces przeglądarki nie uruchomił się. +- `unknown command "browser"` lub `unknown command 'browser'` → dołączony Plugin przeglądarki jest wykluczony przez `plugins.allow`. +- brak/niedostępność narzędzia przeglądarki przy `browser.enabled=true` → `plugins.allow` wyklucza `browser`, więc Plugin nigdy się nie załadował. +- `Failed to start Chrome CDP on port` → nie udało się uruchomić procesu przeglądarki. - `browser.executablePath not found` → skonfigurowana ścieżka jest nieprawidłowa. - `browser.cdpUrl must be http(s) or ws(s)` → skonfigurowany URL CDP używa nieobsługiwanego schematu, takiego jak `file:` lub `ftp:`. -- `browser.cdpUrl has invalid port` → skonfigurowany URL CDP ma nieprawidłowy port lub port spoza zakresu. -- `No Chrome tabs found for profile="user"` → profil podłączenia Chrome MCP nie ma otwartych lokalnych kart Chrome. -- `Remote CDP for profile "" is not reachable` → skonfigurowany zdalny endpoint CDP nie jest osiągalny z hosta gateway. -- `Browser attachOnly is enabled ... not reachable` lub `Browser attachOnly is enabled and CDP websocket ... is not reachable` → profil tylko-dołączenia nie ma osiągalnego celu albo endpoint HTTP odpowiedział, ale nadal nie udało się otworzyć WebSocket CDP. -- `Playwright is not available in this gateway build; '' is unsupported.` → bieżąca instalacja gateway nie zawiera pełnego pakietu Playwright; migawki ARIA i podstawowe zrzuty ekranu strony nadal mogą działać, ale nawigacja, migawki AI, zrzuty ekranu elementów według selektorów CSS i eksport PDF pozostają niedostępne. -- `fullPage is not supported for element screenshots` → żądanie zrzutu ekranu łączy `--full-page` z `--ref` lub `--element`. -- `element screenshots are not supported for existing-session profiles; use ref from snapshot.` → wywołania zrzutów ekranu Chrome MCP / `existing-session` muszą używać przechwycenia strony albo `--ref` z migawki, a nie CSS `--element`. -- `existing-session file uploads do not support element selectors; use ref/inputRef.` → hooki przesyłania plików Chrome MCP wymagają odwołań do migawki, a nie selektorów CSS. -- `existing-session file uploads currently support one file at a time.` → dla profili Chrome MCP wysyłaj jeden upload na wywołanie. -- `existing-session dialog handling does not support timeoutMs.` → hooki dialogów w profilach Chrome MCP nie obsługują nadpisania timeout. +- `browser.cdpUrl has invalid port` → skonfigurowany URL CDP ma nieprawidłowy port albo port spoza zakresu. +- `No Chrome tabs found for profile="user"` → profil dołączania Chrome MCP nie ma otwartych lokalnych kart Chrome. +- `Remote CDP for profile "" is not reachable` → skonfigurowany zdalny endpoint CDP nie jest osiągalny z hosta Gateway. +- `Browser attachOnly is enabled ... not reachable` lub `Browser attachOnly is enabled and CDP websocket ... is not reachable` → profil wyłącznie dołączany nie ma osiągalnego celu albo endpoint HTTP odpowiedział, ale nadal nie udało się otworzyć WebSocket CDP. +- `Playwright is not available in this gateway build; '' is unsupported.` → bieżąca instalacja Gateway nie ma pełnego pakietu Playwright; snapshoty ARIA i podstawowe zrzuty ekranu stron nadal mogą działać, ale nawigacja, snapshoty AI, zrzuty ekranu elementów według selektora CSS oraz eksport PDF pozostają niedostępne. +- `fullPage is not supported for element screenshots` → żądanie zrzutu ekranu łączyło `--full-page` z `--ref` lub `--element`. +- `element screenshots are not supported for existing-session profiles; use ref from snapshot.` → wywołania zrzutów ekranu Chrome MCP / `existing-session` muszą używać przechwytywania strony albo `--ref` ze snapshotu, a nie CSS `--element`. +- `existing-session file uploads do not support element selectors; use ref/inputRef.` → hooki przesyłania plików Chrome MCP wymagają referencji snapshotu, a nie selektorów CSS. +- `existing-session file uploads currently support one file at a time.` → w profilach Chrome MCP wysyłaj jedno przesłanie na jedno wywołanie. +- `existing-session dialog handling does not support timeoutMs.` → hooki okien dialogowych w profilach Chrome MCP nie obsługują nadpisania limitu czasu. - `response body is not supported for existing-session profiles yet.` → `responsebody` nadal wymaga zarządzanej przeglądarki albo surowego profilu CDP. -- nieaktualne nadpisania viewport / dark-mode / locale / offline w profilach tylko-dołączenia lub zdalnych CDP → uruchom `openclaw browser stop --browser-profile `, aby zamknąć aktywną sesję sterowania i zwolnić stan emulacji Playwright/CDP bez restartowania całego gateway. +- nieaktualne nadpisania viewport/dark-mode/locale/offline w profilach wyłącznie dołączanych albo zdalnych CDP → uruchom `openclaw browser stop --browser-profile `, aby zamknąć aktywną sesję sterowania i zwolnić stan emulacji Playwright/CDP bez ponownego uruchamiania całego Gateway. Powiązane: @@ -410,9 +438,9 @@ Powiązane: ## Jeśli po aktualizacji coś nagle przestało działać -Większość problemów po aktualizacji wynika z rozjazdu konfiguracji albo z bardziej rygorystycznie egzekwowanych ustawień domyślnych. +Większość problemów po aktualizacji to rozjazd konfiguracji albo bardziej rygorystyczne domyślne ustawienia, które są teraz egzekwowane. -### 1) Zmieniło się zachowanie auth i nadpisywania URL +### 1) Zmieniło się zachowanie uwierzytelniania i nadpisywania URL ```bash openclaw gateway status @@ -423,15 +451,15 @@ openclaw config get gateway.auth.mode Co sprawdzić: -- Jeśli `gateway.mode=remote`, wywołania CLI mogą kierować ruch do zdalnego celu, mimo że lokalna usługa działa prawidłowo. -- Jawne wywołania `--url` nie wracają do zapisanych poświadczeń. +- Jeśli `gateway.mode=remote`, wywołania CLI mogą kierować ruch do zdalnego celu, podczas gdy lokalna usługa działa poprawnie. +- Jawne wywołania `--url` nie przełączają się awaryjnie na zapisane poświadczenia. Typowe sygnatury: - `gateway connect failed:` → nieprawidłowy docelowy URL. -- `unauthorized` → endpoint jest osiągalny, ale auth jest nieprawidłowe. +- `unauthorized` → endpoint jest osiągalny, ale uwierzytelnianie jest nieprawidłowe. -### 2) Reguły bind i auth są bardziej rygorystyczne +### 2) Ograniczenia bind i auth są bardziej rygorystyczne ```bash openclaw config get gateway.bind @@ -443,13 +471,13 @@ openclaw logs --follow Co sprawdzić: -- Powiązania inne niż loopback (`lan`, `tailnet`, `custom`) wymagają prawidłowej ścieżki gateway auth: współdzielonego uwierzytelniania tokenem/hasłem albo poprawnie skonfigurowanego wdrożenia `trusted-proxy` innego niż loopback. +- Dowiązania inne niż loopback (`lan`, `tailnet`, `custom`) wymagają prawidłowej ścieżki uwierzytelniania Gateway: współdzielonego tokenu/hasła albo poprawnie skonfigurowanego wdrożenia `trusted-proxy` poza loopback. - Starsze klucze, takie jak `gateway.token`, nie zastępują `gateway.auth.token`. Typowe sygnatury: -- `refusing to bind gateway ... without auth` → powiązanie inne niż loopback bez prawidłowej ścieżki gateway auth. -- `RPC probe: failed` przy działającym runtime → gateway działa, ale jest niedostępny przy bieżącym auth/url. +- `refusing to bind gateway ... without auth` → dowiązanie inne niż loopback bez prawidłowej ścieżki uwierzytelniania Gateway. +- `Connectivity probe: failed` przy działającym runtime → Gateway działa, ale jest niedostępny przy bieżącym auth/url. ### 3) Zmienił się stan parowania i tożsamości urządzenia @@ -463,14 +491,14 @@ openclaw doctor Co sprawdzić: - Oczekujące zatwierdzenia urządzeń dla dashboard/nodes. -- Oczekujące zatwierdzenia parowania DM po zmianach polityki lub tożsamości. +- Oczekujące zatwierdzenia parowania DM po zmianach polityki albo tożsamości. Typowe sygnatury: - `device identity required` → uwierzytelnianie urządzenia nie zostało spełnione. - `pairing required` → nadawca/urządzenie musi zostać zatwierdzone. -Jeśli konfiguracja usługi i runtime nadal się nie zgadzają po tych kontrolach, ponownie zainstaluj metadane usługi z tego samego katalogu profile/state: +Jeśli po tych kontrolach konfiguracja usługi i runtime nadal się różnią, ponownie zainstaluj metadane usługi z tego samego katalogu profilu/stanu: ```bash openclaw gateway install --force diff --git a/docs/pl/help/faq.md b/docs/pl/help/faq.md index b4b2789f3..4d84661fc 100644 --- a/docs/pl/help/faq.md +++ b/docs/pl/help/faq.md @@ -1,31 +1,31 @@ --- read_when: - - Odpowiadanie na typowe pytania dotyczące konfiguracji, instalacji, wdrożenia lub działania w czasie wykonywania - - Wstępna ocena problemów zgłaszanych przez użytkowników przed głębszym debugowaniem -summary: Często zadawane pytania dotyczące konfiguracji, ustawień i korzystania z OpenClaw + - Odpowiedzi na typowe pytania dotyczące konfiguracji, instalacji, wdrażania lub działania w czasie wykonywania + - Wstępna analiza problemów zgłaszanych przez użytkowników przed głębszym debugowaniem +summary: Najczęściej zadawane pytania dotyczące konfiguracji, ustawień i używania OpenClaw title: FAQ x-i18n: - generated_at: "2026-04-19T09:34:11Z" + generated_at: "2026-04-20T09:59:01Z" model: gpt-5.4 provider: openai - source_hash: f569fb0412797314a11c41a1bbfa14f5892d2d368544fa67800823a6457000e6 + source_hash: ae8efda399e34f59f22f6ea8ce218eaf7b872e4117d8596ec19c09891d70813b source_path: help/faq.md workflow: 15 --- # FAQ -Szybkie odpowiedzi oraz bardziej szczegółowe rozwiązywanie problemów dla rzeczywistych konfiguracji (lokalny development, VPS, środowisko wieloagentowe, klucze OAuth/API, przełączanie awaryjne modeli). Informacje o diagnostyce środowiska uruchomieniowego znajdziesz w [Rozwiązywanie problemów](/pl/gateway/troubleshooting). Pełne informacje referencyjne o konfiguracji znajdziesz w [Konfiguracja](/pl/gateway/configuration). +Szybkie odpowiedzi oraz głębsze wskazówki diagnostyczne dla rzeczywistych konfiguracji (lokalne środowisko deweloperskie, VPS, multi-agent, OAuth/klucze API, failover modeli). Informacje o diagnostyce działania znajdziesz w [Rozwiązywaniu problemów](/pl/gateway/troubleshooting). Pełne informacje o konfiguracji znajdziesz w [Konfiguracji](/pl/gateway/configuration). -## Pierwsze 60 sekund, gdy coś nie działa +## Pierwsze 60 sekund, jeśli coś nie działa -1. **Szybki status (pierwsza kontrola)** +1. **Szybki status (pierwsze sprawdzenie)** ```bash openclaw status ``` - Szybkie lokalne podsumowanie: system operacyjny + aktualizacja, dostępność Gateway/usługi, agenci/sesje, konfiguracja dostawców + problemy środowiska uruchomieniowego (gdy Gateway jest osiągalny). + Szybkie lokalne podsumowanie: system operacyjny + aktualizacja, dostępność gateway/usługi, agenci/sesje, konfiguracja dostawcy + problemy środowiska uruchomieniowego (gdy Gateway jest osiągalny). 2. **Raport do wklejenia (bezpieczny do udostępnienia)** @@ -33,7 +33,7 @@ Szybkie odpowiedzi oraz bardziej szczegółowe rozwiązywanie problemów dla rze openclaw status --all ``` - Diagnoza tylko do odczytu z końcówką logu (tokeny zredagowane). + Diagnoza tylko do odczytu z końcówką logu (tokeny są ukryte). 3. **Stan demona + portu** @@ -41,16 +41,16 @@ Szybkie odpowiedzi oraz bardziej szczegółowe rozwiązywanie problemów dla rze openclaw gateway status ``` - Pokazuje stan supervisora w środowisku uruchomieniowym względem osiągalności RPC, docelowy adres URL sondy oraz której konfiguracji usługa prawdopodobnie użyła. + Pokazuje stan supervisora podczas działania względem osiągalności RPC, docelowy adres URL sondy oraz konfigurację, której usługa prawdopodobnie użyła. -4. **Dogłębne sondy** +4. **Głębokie sondy** ```bash openclaw status --deep ``` - Uruchamia aktywną sondę kondycji Gateway, w tym sondy kanałów, gdy są obsługiwane - (wymaga osiągalnego Gateway). Zobacz [Kondycja](/pl/gateway/health). + Uruchamia aktywną sondę stanu Gateway, w tym sondy kanałów, gdy są obsługiwane + (wymaga osiągalnego Gateway). Zobacz [Stan zdrowia](/pl/gateway/health). 5. **Podgląd najnowszego logu** @@ -58,21 +58,21 @@ Szybkie odpowiedzi oraz bardziej szczegółowe rozwiązywanie problemów dla rze openclaw logs --follow ``` - Jeśli RPC nie działa, użyj awaryjnie: + Jeśli RPC nie działa, użyj: ```bash tail -f "$(ls -t /tmp/openclaw/openclaw-*.log | head -1)" ``` - Logi plikowe są oddzielne od logów usługi; zobacz [Rejestrowanie](/pl/logging) i [Rozwiązywanie problemów](/pl/gateway/troubleshooting). + Logi plikowe są oddzielone od logów usługi; zobacz [Logowanie](/pl/logging) i [Rozwiązywanie problemów](/pl/gateway/troubleshooting). -6. **Uruchom Doctor (naprawy)** +6. **Uruchom doctor (naprawy)** ```bash openclaw doctor ``` - Naprawia/migruje konfigurację i stan + uruchamia kontrole kondycji. Zobacz [Doctor](/pl/gateway/doctor). + Naprawia/migruje konfigurację i stan + uruchamia kontrole stanu. Zobacz [Doctor](/pl/gateway/doctor). 7. **Migawka Gateway** @@ -81,35 +81,35 @@ Szybkie odpowiedzi oraz bardziej szczegółowe rozwiązywanie problemów dla rze openclaw health --verbose # pokazuje docelowy URL + ścieżkę konfiguracji przy błędach ``` - Prosi uruchomiony Gateway o pełną migawkę (tylko WS). Zobacz [Kondycja](/pl/gateway/health). + Prosi uruchomiony Gateway o pełną migawkę (tylko WS). Zobacz [Stan zdrowia](/pl/gateway/health). ## Szybki start i konfiguracja przy pierwszym uruchomieniu - - Użyj lokalnego agenta AI, który potrafi **widzieć Twój komputer**. To jest znacznie skuteczniejsze niż pytanie - na Discordzie, ponieważ większość przypadków „utknąłem/utknęłam” to **lokalne problemy z konfiguracją lub środowiskiem**, - których zdalni pomocnicy nie mogą sprawdzić. + + Użyj lokalnego agenta AI, który może **widzieć Twój komputer**. To jest znacznie skuteczniejsze niż pytanie + na Discord, ponieważ większość przypadków typu „utknąłem/utknęłam” to **lokalne problemy z konfiguracją lub środowiskiem**, + których zdalni pomagający nie mogą sprawdzić. - **Claude Code**: [https://www.anthropic.com/claude-code/](https://www.anthropic.com/claude-code/) - **OpenAI Codex**: [https://openai.com/codex/](https://openai.com/codex/) - Te narzędzia mogą odczytać repozytorium, uruchamiać polecenia, sprawdzać logi i pomagać naprawić konfigurację - na poziomie komputera (PATH, usługi, uprawnienia, pliki uwierzytelniania). Udostępnij im **pełne checkout źródeł** - przez instalację hackable (git): + Te narzędzia potrafią czytać repozytorium, uruchamiać polecenia, sprawdzać logi i pomagać naprawić konfigurację + na poziomie komputera (PATH, usługi, uprawnienia, pliki uwierzytelniania). Udostępnij im **pełny checkout kodu źródłowego** + przez instalację hackowalną (git): ```bash curl -fsSL https://openclaw.ai/install.sh | bash -s -- --install-method git ``` - To instaluje OpenClaw **z checkoutu git**, dzięki czemu agent może odczytać kod + dokumentację i + To instaluje OpenClaw **z checkoutu git**, dzięki czemu agent może czytać kod + dokumentację i analizować dokładnie tę wersję, której używasz. Zawsze możesz później wrócić do wersji stabilnej, ponownie uruchamiając instalator bez `--install-method git`. - Wskazówka: poproś agenta, aby **zaplanował i nadzorował** naprawę (krok po kroku), a następnie wykonał tylko - niezbędne polecenia. Dzięki temu zmiany są niewielkie i łatwiejsze do audytu. + Wskazówka: poproś agenta, aby **zaplanował i nadzorował** naprawę (krok po kroku), a potem wykonał tylko + niezbędne polecenia. Dzięki temu zmiany są małe i łatwiejsze do sprawdzenia. - Jeśli odkryjesz prawdziwy błąd lub poprawkę, zgłoś proszę issue na GitHubie albo wyślij PR: + Jeśli odkryjesz prawdziwy błąd lub poprawkę, zgłoś issue na GitHub albo wyślij PR: [https://github.com/openclaw/openclaw/issues](https://github.com/openclaw/openclaw/issues) [https://github.com/openclaw/openclaw/pulls](https://github.com/openclaw/openclaw/pulls) @@ -123,45 +123,44 @@ Szybkie odpowiedzi oraz bardziej szczegółowe rozwiązywanie problemów dla rze Co robią: - - `openclaw status`: szybka migawka kondycji gateway/agenta + podstawowej konfiguracji. - - `openclaw models status`: sprawdza uwierzytelnianie dostawców + dostępność modeli. - - `openclaw doctor`: weryfikuje i naprawia typowe problemy z konfiguracją/stanem. + - `openclaw status`: szybka migawka stanu gateway/agenta + podstawowej konfiguracji. + - `openclaw models status`: sprawdza uwierzytelnianie dostawcy + dostępność modeli. + - `openclaw doctor`: weryfikuje i naprawia typowe problemy z konfiguracją i stanem. - Inne przydatne kontrole w CLI: `openclaw status --all`, `openclaw logs --follow`, + Inne przydatne kontrole CLI: `openclaw status --all`, `openclaw logs --follow`, `openclaw gateway status`, `openclaw health --verbose`. - Szybka pętla debugowania: [Pierwsze 60 sekund, gdy coś nie działa](#pierwsze-60-sekund-gdy-coś-nie-działa). - Dokumentacja instalacji: [Instalacja](/pl/install), [Flagi instalatora](/pl/install/installer), [Aktualizacja](/pl/install/updating). + Szybka pętla debugowania: [Pierwsze 60 sekund, jeśli coś nie działa](#pierwsze-60-sekund-jeśli-coś-nie-działa). + Dokumentacja instalacji: [Instalacja](/pl/install), [Flagi instalatora](/pl/install/installer), [Aktualizowanie](/pl/install/updating). - Najczęstsze powody pomijania Heartbeat: + Typowe powody pomijania Heartbeat: - - `quiet-hours`: poza skonfigurowanym oknem active-hours - - `empty-heartbeat-file`: plik `HEARTBEAT.md` istnieje, ale zawiera tylko pusty/nagłówkowy szablon - - `no-tasks-due`: tryb zadań `HEARTBEAT.md` jest aktywny, ale żaden z interwałów zadań nie jest jeszcze wymagalny + - `quiet-hours`: poza skonfigurowanym oknem aktywnych godzin + - `empty-heartbeat-file`: `HEARTBEAT.md` istnieje, ale zawiera tylko pusty szkielet lub same nagłówki + - `no-tasks-due`: tryb zadań `HEARTBEAT.md` jest aktywny, ale żaden z interwałów zadań jeszcze nie jest wymagalny - `alerts-disabled`: cała widoczność heartbeat jest wyłączona (`showOk`, `showAlerts` i `useIndicator` są wyłączone) - W trybie zadań znaczniki czasu wymagalności są przesuwane dopiero po - zakończeniu rzeczywistego uruchomienia heartbeat. Pominięte uruchomienia - nie oznaczają zadań jako ukończonych. + W trybie zadań znaczniki czasu wymagalności są przesuwane dopiero po zakończeniu + rzeczywistego uruchomienia heartbeat. Pominięte uruchomienia nie oznaczają zadań jako ukończonych. Dokumentacja: [Heartbeat](/pl/gateway/heartbeat), [Automatyzacja i zadania](/pl/automation). - Repozytorium zaleca uruchamianie ze źródeł i użycie onboardingu: + Repozytorium zaleca uruchamianie ze źródeł i użycie wdrażania: ```bash curl -fsSL https://openclaw.ai/install.sh | bash openclaw onboard --install-daemon ``` - Kreator może także automatycznie zbudować zasoby interfejsu użytkownika. Po onboardingu zwykle uruchamiasz Gateway na porcie **18789**. + Kreator może również automatycznie zbudować zasoby interfejsu. Po wdrożeniu zwykle uruchamiasz Gateway na porcie **18789**. - Ze źródeł (współtwórcy/development): + Ze źródeł (współtwórcy/deweloperzy): ```bash git clone https://github.com/openclaw/openclaw.git @@ -176,50 +175,50 @@ Szybkie odpowiedzi oraz bardziej szczegółowe rozwiązywanie problemów dla rze - - Kreator otwiera przeglądarkę z czystym (bez tokena) adresem URL dashboardu zaraz po onboardingu i wypisuje też link w podsumowaniu. Zachowaj tę kartę otwartą; jeśli się nie uruchomiła, skopiuj/wklej wypisany adres URL na tym samym komputerze. + + Kreator otwiera przeglądarkę z czystym (bez tokena w URL) adresem dashboard zaraz po wdrożeniu i wyświetla też link w podsumowaniu. Nie zamykaj tej karty; jeśli nie została otwarta, skopiuj/wklej wyświetlony adres URL na tym samym komputerze. **Localhost (ten sam komputer):** - Otwórz `http://127.0.0.1:18789/`. - - Jeśli poprosi o uwierzytelnianie wspólnym sekretem, wklej skonfigurowany token lub hasło w ustawieniach Control UI. + - Jeśli pojawi się prośba o uwierzytelnianie wspólnym sekretem, wklej skonfigurowany token lub hasło w ustawieniach Control UI. - Źródło tokena: `gateway.auth.token` (lub `OPENCLAW_GATEWAY_TOKEN`). - Źródło hasła: `gateway.auth.password` (lub `OPENCLAW_GATEWAY_PASSWORD`). - Jeśli wspólny sekret nie jest jeszcze skonfigurowany, wygeneruj token poleceniem `openclaw doctor --generate-gateway-token`. **Poza localhost:** - - **Tailscale Serve** (zalecane): pozostaw bind loopback, uruchom `openclaw gateway --tailscale serve`, otwórz `https:///`. Jeśli `gateway.auth.allowTailscale` ma wartość `true`, nagłówki tożsamości spełniają wymagania uwierzytelniania Control UI/WebSocket (bez wklejanego wspólnego sekretu, przy założeniu zaufanego hosta gateway); interfejsy API HTTP nadal wymagają uwierzytelniania wspólnym sekretem, chyba że celowo używasz prywatnego ingress `none` lub uwierzytelniania HTTP trusted-proxy. - Nieprawidłowe równoczesne próby uwierzytelniania Serve z tego samego klienta są serializowane, zanim ogranicznik nieudanych uwierzytelnień je zarejestruje, więc druga nieudana próba może już pokazać `retry later`. - - **Bind tailnet**: uruchom `openclaw gateway --bind tailnet --token ""` (lub skonfiguruj uwierzytelnianie hasłem), otwórz `http://:18789/`, a następnie wklej pasujący wspólny sekret w ustawieniach dashboardu. - - **Reverse proxy ze świadomością tożsamości**: pozostaw Gateway za zaufanym proxy innym niż loopback, skonfiguruj `gateway.auth.mode: "trusted-proxy"`, a następnie otwórz URL proxy. - - **Tunel SSH**: `ssh -N -L 18789:127.0.0.1:18789 user@host`, a następnie otwórz `http://127.0.0.1:18789/`. Uwierzytelnianie wspólnym sekretem nadal obowiązuje przez tunel; po wyświetleniu monitu wklej skonfigurowany token lub hasło. + - **Tailscale Serve** (zalecane): pozostaw powiązanie z loopback, uruchom `openclaw gateway --tailscale serve`, otwórz `https:///`. Jeśli `gateway.auth.allowTailscale` ma wartość `true`, nagłówki tożsamości spełniają wymagania uwierzytelniania Control UI/WebSocket (bez wklejania wspólnego sekretu, przy założeniu zaufanego hosta gateway); interfejsy HTTP API nadal wymagają uwierzytelniania wspólnym sekretem, chyba że celowo używasz prywatnego ingress `none` lub uwierzytelniania HTTP zaufanego proxy. + Nieudane równoległe próby uwierzytelniania Serve z tego samego klienta są serializowane, zanim ogranicznik nieudanych uwierzytelnień je zapisze, więc przy drugiej błędnej próbie może już pojawić się komunikat `retry later`. + - **Powiązanie tailnet**: uruchom `openclaw gateway --bind tailnet --token ""` (lub skonfiguruj uwierzytelnianie hasłem), otwórz `http://:18789/`, a następnie wklej pasujący wspólny sekret w ustawieniach dashboard. + - **Reverse proxy ze świadomością tożsamości**: pozostaw Gateway za zaufanym proxy innym niż loopback, skonfiguruj `gateway.auth.mode: "trusted-proxy"`, a następnie otwórz adres URL proxy. + - **Tunel SSH**: `ssh -N -L 18789:127.0.0.1:18789 user@host`, a następnie otwórz `http://127.0.0.1:18789/`. Uwierzytelnianie wspólnym sekretem nadal obowiązuje przez tunel; jeśli pojawi się prośba, wklej skonfigurowany token lub hasło. - Szczegółowe informacje o trybach bind i uwierzytelnianiu znajdziesz w [Dashboard](/web/dashboard) i [Powierzchnie webowe](/web). + Zobacz [Dashboard](/web/dashboard) i [Powierzchnie webowe](/web), aby poznać szczegóły trybów powiązania i uwierzytelniania. Sterują różnymi warstwami: - - `approvals.exec`: przekazuje monity o zatwierdzenie do miejsc docelowych czatu + - `approvals.exec`: przekazuje prośby o zatwierdzenie do miejsc docelowych na czacie - `channels..execApprovals`: sprawia, że dany kanał działa jako natywny klient zatwierdzeń exec - Zasada exec po stronie hosta nadal jest właściwą bramką zatwierdzania. Konfiguracja czatu kontroluje tylko to, gdzie pojawiają się - monity o zatwierdzenie i jak ludzie mogą na nie odpowiadać. + Zasada hosta dla exec nadal jest rzeczywistą bramką zatwierdzania. Konfiguracja czatu steruje tylko tym, + gdzie pojawiają się prośby o zatwierdzenie i jak ludzie mogą na nie odpowiadać. W większości konfiguracji **nie** potrzebujesz obu: - - Jeśli czat już obsługuje polecenia i odpowiedzi, `/approve` w tym samym czacie działa przez współdzieloną ścieżkę. - - Jeśli obsługiwany kanał natywny potrafi bezpiecznie wywnioskować osoby zatwierdzające, OpenClaw teraz automatycznie włącza natywne zatwierdzenia DM-first, gdy `channels..execApprovals.enabled` jest nieustawione albo ma wartość `"auto"`. - - Gdy dostępne są natywne karty/przyciski zatwierdzania, ta natywna warstwa UI jest główną ścieżką; agent powinien dołączać ręczne polecenie `/approve` tylko wtedy, gdy wynik narzędzia mówi, że zatwierdzenia na czacie są niedostępne albo ręczne zatwierdzenie jest jedyną ścieżką. - - Używaj `approvals.exec` tylko wtedy, gdy monity muszą być także przekazywane do innych czatów lub jawnych pokojów operacyjnych. - - Używaj `channels..execApprovals.target: "channel"` albo `"both"` tylko wtedy, gdy wyraźnie chcesz, aby monity o zatwierdzenie były publikowane z powrotem do pokoju/tematu, z którego pochodzą. - - Zatwierdzenia Plugin są jeszcze oddzielne: domyślnie używają `/approve` w tym samym czacie, opcjonalnego przekazywania `approvals.plugin`, a tylko niektóre kanały natywne dodatkowo utrzymują natywną obsługę zatwierdzania Plugin. + - Jeśli czat obsługuje już polecenia i odpowiedzi, `/approve` w tym samym czacie działa przez współdzieloną ścieżkę. + - Jeśli obsługiwany kanał natywny może bezpiecznie wywnioskować osoby zatwierdzające, OpenClaw automatycznie włącza teraz natywne zatwierdzenia wiadomości prywatnych w pierwszej kolejności, gdy `channels..execApprovals.enabled` jest nieustawione lub ma wartość `"auto"`. + - Gdy dostępne są natywne karty/przyciski zatwierdzania, ta natywna ścieżka UI jest podstawową drogą; agent powinien dołączać ręczne polecenie `/approve` tylko wtedy, gdy wynik narzędzia mówi, że zatwierdzenia na czacie są niedostępne albo ręczne zatwierdzenie jest jedyną drogą. + - Używaj `approvals.exec` tylko wtedy, gdy prośby muszą być również przekazywane do innych czatów lub jawnych pokojów operacyjnych. + - Używaj `channels..execApprovals.target: "channel"` albo `"both"` tylko wtedy, gdy chcesz jawnie publikować prośby o zatwierdzenie z powrotem w pokoju/wątku, z którego pochodzą. + - Zatwierdzenia Plugin są znowu osobne: domyślnie używają `/approve` w tym samym czacie, opcjonalnego przekazywania `approvals.plugin`, a tylko niektóre kanały natywne zachowują dodatkową natywną obsługę zatwierdzania Plugin. - W skrócie: przekazywanie służy do routingu, a konfiguracja klienta natywnego — do bogatszego, specyficznego dla kanału UX. + Krótko: forwarding służy do routingu, a konfiguracja natywnego klienta do bogatszego, specyficznego dla kanału UX. Zobacz [Zatwierdzenia Exec](/pl/tools/exec-approvals). @@ -229,33 +228,33 @@ Szybkie odpowiedzi oraz bardziej szczegółowe rozwiązywanie problemów dla rze - Tak. Gateway jest lekki — dokumentacja podaje, że do użytku osobistego wystarczy **512 MB–1 GB RAM**, **1 rdzeń** i około **500 MB** + Tak. Gateway jest lekki — dokumentacja podaje, że do użytku osobistego wystarczy **512 MB-1 GB RAM**, **1 rdzeń** i około **500 MB** miejsca na dysku, oraz zaznacza, że **Raspberry Pi 4 może go uruchomić**. - Jeśli chcesz mieć większy zapas (logi, multimedia, inne usługi), zalecane są **2 GB**, - ale nie jest to sztywne minimum. + Jeśli chcesz mieć większy zapas (logi, multimedia, inne usługi), zalecane jest **2 GB**, + ale nie jest to twarde minimum. - Wskazówka: mały Pi/VPS może hostować Gateway, a Ty możesz sparować **nodes** na laptopie/telefonie do - lokalnego ekranu/kamery/canvas albo wykonywania poleceń. Zobacz [Nodes](/pl/nodes). + Wskazówka: mały Pi/VPS może hostować Gateway, a Ty możesz sparować **Node** na laptopie/telefonie do + lokalnego ekranu/kamery/canvas albo wykonywania poleceń. Zobacz [Node](/pl/nodes). - - W skrócie: działa, ale spodziewaj się pewnych niedoskonałości. + + Krótko: działa, ale spodziewaj się nierówności. - - Używaj systemu **64-bitowego** i zachowaj Node >= 22. - - Preferuj **instalację hackable (git)**, aby mieć wgląd w logi i szybko aktualizować. - - Zacznij bez kanałów/Skills, a potem dodawaj je po jednym. - - Jeśli trafisz na dziwne problemy z binariami, zwykle chodzi o **zgodność z ARM**. + - Używaj systemu **64-bitowego** i trzymaj Node w wersji >= 22. + - Preferuj **instalację hackowalną (git)**, aby móc przeglądać logi i szybko aktualizować. + - Zacznij bez kanałów/Skills, a następnie dodawaj je po jednym. + - Jeśli trafisz na dziwne problemy binarne, zwykle chodzi o problem **zgodności ARM**. Dokumentacja: [Linux](/pl/platforms/linux), [Instalacja](/pl/install). - - Ten ekran zależy od tego, czy Gateway jest osiągalny i uwierzytelniony. TUI także automatycznie wysyła - „Wake up, my friend!” przy pierwszym wykluciu. Jeśli widzisz tę linię **bez odpowiedzi** - i liczba tokenów pozostaje na 0, agent nigdy się nie uruchomił. + + Ten ekran zależy od tego, czy Gateway jest osiągalny i uwierzytelniony. TUI również automatycznie wysyła + „Wake up, my friend!” przy pierwszym wykluciu. Jeśli widzisz ten wiersz i **brak odpowiedzi**, + a liczba tokenów pozostaje na 0, agent nigdy się nie uruchomił. 1. Uruchom ponownie Gateway: @@ -277,63 +276,63 @@ Szybkie odpowiedzi oraz bardziej szczegółowe rozwiązywanie problemów dla rze openclaw doctor ``` - Jeśli Gateway jest zdalny, upewnij się, że tunel/połączenie Tailscale działa oraz że interfejs UI + Jeśli Gateway jest zdalny, upewnij się, że tunel/połączenie Tailscale działa i że interfejs UI jest skierowany na właściwy Gateway. Zobacz [Dostęp zdalny](/pl/gateway/remote). - - Tak. Skopiuj **katalog stanu** i **workspace**, a następnie uruchom Doctor jeden raz. To - zachowa Twojego bota „dokładnie takiego samego” (pamięć, historię sesji, uwierzytelnianie i + + Tak. Skopiuj **katalog stanu** i **workspace**, a potem uruchom Doctor jeden raz. To + zachowuje Twojego bota „dokładnie takiego samego” (pamięć, historia sesji, uwierzytelnianie i stan kanałów), o ile skopiujesz **obie** lokalizacje: 1. Zainstaluj OpenClaw na nowym komputerze. 2. Skopiuj `$OPENCLAW_STATE_DIR` (domyślnie: `~/.openclaw`) ze starego komputera. 3. Skopiuj swój workspace (domyślnie: `~/.openclaw/workspace`). - 4. Uruchom `openclaw doctor` i zrestartuj usługę Gateway. + 4. Uruchom `openclaw doctor` i ponownie uruchom usługę Gateway. - To zachowuje konfigurację, profile uwierzytelniania, poświadczenia WhatsApp, sesje i pamięć. Jeśli jesteś w - trybie zdalnym, pamiętaj, że host Gateway jest właścicielem magazynu sesji i workspace. + To zachowuje konfigurację, profile uwierzytelniania, dane logowania WhatsApp, sesje i pamięć. Jeśli pracujesz w + trybie zdalnym, pamiętaj, że host gateway zarządza magazynem sesji i workspace. - **Ważne:** jeśli tylko commitujesz/wypychasz swój workspace do GitHub, tworzysz kopię zapasową - **pamięci + plików bootstrap**, ale **nie** historii sesji ani uwierzytelniania. One znajdują się + **Ważne:** jeśli tylko commitujesz/wypychasz swój workspace do GitHub, tworzysz kopię + zapasową **pamięci + plików bootstrap**, ale **nie** historii sesji ani uwierzytelniania. One znajdują się w `~/.openclaw/` (na przykład `~/.openclaw/agents//sessions/`). - Powiązane: [Migracja](/pl/install/migrating), [Gdzie rzeczy znajdują się na dysku](#gdzie-rzeczy-znajdują-się-na-dysku), + Powiązane: [Migracja](/pl/install/migrating), [Gdzie co jest przechowywane na dysku](#gdzie-co-jest-przechowywane-na-dysku), [Workspace agenta](/pl/concepts/agent-workspace), [Doctor](/pl/gateway/doctor), [Tryb zdalny](/pl/gateway/remote). - - Sprawdź changelog na GitHubie: + + Sprawdź changelog na GitHub: [https://github.com/openclaw/openclaw/blob/main/CHANGELOG.md](https://github.com/openclaw/openclaw/blob/main/CHANGELOG.md) Najnowsze wpisy są na górze. Jeśli najwyższa sekcja jest oznaczona jako **Unreleased**, następna sekcja - z datą to najnowsza opublikowana wersja. Wpisy są pogrupowane według **Highlights**, **Changes** i - **Fixes** (plus sekcje dokumentacji/inne, gdy są potrzebne). + z datą to najnowsza wydana wersja. Wpisy są pogrupowane według **Highlights**, **Changes** i + **Fixes** (oraz sekcji dokumentacji/innych, gdy są potrzebne). - Niektóre połączenia Comcast/Xfinity nieprawidłowo blokują `docs.openclaw.ai` przez Xfinity - Advanced Security. Wyłącz tę funkcję lub dodaj `docs.openclaw.ai` do allowlisty, a następnie spróbuj ponownie. - Pomóż nam to odblokować, zgłaszając problem tutaj: [https://spa.xfinity.com/check_url_status](https://spa.xfinity.com/check_url_status). + Niektóre połączenia Comcast/Xfinity błędnie blokują `docs.openclaw.ai` przez Xfinity + Advanced Security. Wyłącz tę funkcję albo dodaj `docs.openclaw.ai` do listy dozwolonych, a potem spróbuj ponownie. + Pomóż nam odblokować tę domenę, zgłaszając problem tutaj: [https://spa.xfinity.com/check_url_status](https://spa.xfinity.com/check_url_status). - Jeśli nadal nie możesz połączyć się ze stroną, dokumentacja jest mirrorowana na GitHubie: + Jeśli nadal nie możesz otworzyć strony, dokumentacja jest mirrorowana na GitHub: [https://github.com/openclaw/openclaw/tree/main/docs](https://github.com/openclaw/openclaw/tree/main/docs) - **Stable** i **beta** to **npm dist-tags**, a nie oddzielne linie kodu: + **Stable** i **beta** to tagi dystrybucyjne **npm dist-tags**, a nie oddzielne linie kodu: - `latest` = stable - `beta` = wczesna kompilacja do testów - Zwykle stabilne wydanie trafia najpierw na **beta**, a potem jawny + Zwykle wydanie stable najpierw trafia do **beta**, a potem jawny krok promocji przenosi tę samą wersję do `latest`. Maintainerzy mogą też - w razie potrzeby publikować bezpośrednio do `latest`. Dlatego beta i stable mogą + opublikować bezpośrednio do `latest`, gdy jest to potrzebne. Dlatego beta i stable mogą wskazywać na **tę samą wersję** po promocji. Zobacz, co się zmieniło: @@ -344,10 +343,10 @@ Szybkie odpowiedzi oraz bardziej szczegółowe rozwiązywanie problemów dla rze - **Beta** to npm dist-tag `beta` (po promocji może odpowiadać `latest`). - **Dev** to ruchoma główka `main` (git); po publikacji używa npm dist-tag `dev`. + **Beta** to tag dystrybucyjny npm `beta` (po promocji może być taki sam jak `latest`). + **Dev** to ruchoma główna gałąź `main` (git); po publikacji używa tagu dystrybucyjnego npm `dev`. - Jednolinijkowce (macOS/Linux): + Jednolinijkowe polecenia (macOS/Linux): ```bash curl -fsSL --proto '=https' --tlsv1.2 https://openclaw.ai/install.sh | bash -s -- --beta @@ -357,7 +356,7 @@ Szybkie odpowiedzi oraz bardziej szczegółowe rozwiązywanie problemów dla rze curl -fsSL --proto '=https' --tlsv1.2 https://openclaw.ai/install.sh | bash -s -- --install-method git ``` - Instalator Windows (PowerShell): + Instalator dla Windows (PowerShell): [https://openclaw.ai/install.ps1](https://openclaw.ai/install.ps1) Więcej szczegółów: [Kanały deweloperskie](/pl/install/development-channels) i [Flagi instalatora](/pl/install/installer). @@ -365,7 +364,7 @@ Szybkie odpowiedzi oraz bardziej szczegółowe rozwiązywanie problemów dla rze - Dwie opcje: + Są dwie opcje: 1. **Kanał dev (checkout git):** @@ -375,13 +374,13 @@ Szybkie odpowiedzi oraz bardziej szczegółowe rozwiązywanie problemów dla rze To przełącza na gałąź `main` i aktualizuje ze źródeł. - 2. **Instalacja hackable (ze strony instalatora):** + 2. **Instalacja hackowalna (ze strony instalatora):** ```bash curl -fsSL https://openclaw.ai/install.sh | bash -s -- --install-method git ``` - To daje lokalne repozytorium, które możesz edytować, a następnie aktualizować przez git. + Dzięki temu masz lokalne repozytorium, które możesz edytować, a potem aktualizować przez git. Jeśli wolisz ręcznie wykonać czysty clone, użyj: @@ -397,31 +396,31 @@ Szybkie odpowiedzi oraz bardziej szczegółowe rozwiązywanie problemów dla rze - - Orientacyjnie: + + Przybliżone wartości: - - **Instalacja:** 2–5 minut - - **Onboarding:** 5–15 minut w zależności od liczby skonfigurowanych kanałów/modeli + - **Instalacja:** 2-5 minut + - **Wdrażanie:** 5-15 minut w zależności od liczby konfigurowanych kanałów/modeli - Jeśli proces się zawiesza, użyj [Instalator utknął](#szybki-start-i-konfiguracja-przy-pierwszym-uruchomieniu) - oraz szybkiej pętli debugowania z [Utknąłem/utknęłam](#szybki-start-i-konfiguracja-przy-pierwszym-uruchomieniu). + Jeśli proces się zawiesza, skorzystaj z [Instalator się zawiesił](#quick-start-and-first-run-setup) + oraz szybkiej pętli debugowania w [Utknąłem/utknęłam](#quick-start-and-first-run-setup). - - Uruchom instalator ponownie z **pełnym wyjściem diagnostycznym**: + + Uruchom instalator ponownie z **szczegółowym wyjściem**: ```bash curl -fsSL https://openclaw.ai/install.sh | bash -s -- --verbose ``` - Instalacja beta z pełnym wyjściem: + Instalacja beta z trybem verbose: ```bash curl -fsSL https://openclaw.ai/install.sh | bash -s -- --beta --verbose ``` - Dla instalacji hackable (git): + Dla instalacji hackowalnej (git): ```bash curl -fsSL https://openclaw.ai/install.sh | bash -s -- --install-method git --verbose @@ -440,33 +439,33 @@ Szybkie odpowiedzi oraz bardziej szczegółowe rozwiązywanie problemów dla rze - - Dwa częste problemy w Windows: + + Dwa częste problemy na Windows: - **1) błąd npm spawn git / nie znaleziono git** + **1) błąd npm spawn git / git not found** - - Zainstaluj **Git for Windows** i upewnij się, że `git` znajduje się w PATH. - - Zamknij i ponownie otwórz PowerShell, a następnie ponownie uruchom instalator. + - Zainstaluj **Git for Windows** i upewnij się, że `git` jest w PATH. + - Zamknij i ponownie otwórz PowerShell, a potem ponownie uruchom instalator. - **2) openclaw nie jest rozpoznawany po instalacji** + **2) openclaw is not recognized po instalacji** - - Twój globalny katalog bin npm nie znajduje się w PATH. + - Globalny katalog bin npm nie jest w PATH. - Sprawdź ścieżkę: ```powershell npm config get prefix ``` - - Dodaj ten katalog do swojego użytkownika PATH (w Windows nie jest potrzebny sufiks `\bin`; w większości systemów jest to `%AppData%\npm`). - - Zamknij i ponownie otwórz PowerShell po aktualizacji PATH. + - Dodaj ten katalog do PATH użytkownika (na Windows nie potrzeba przyrostka `\bin`; na większości systemów jest to `%AppData%\npm`). + - Zamknij i ponownie otwórz PowerShell po zaktualizowaniu PATH. - Jeśli chcesz uzyskać możliwie najpłynniejszą konfigurację w Windows, użyj **WSL2** zamiast natywnego Windows. + Jeśli chcesz mieć możliwie najpłynniejszą konfigurację na Windows, użyj **WSL2** zamiast natywnego Windows. Dokumentacja: [Windows](/pl/platforms/windows). - - Zwykle jest to niedopasowanie strony kodowej konsoli w natywnych powłokach Windows. + + Zwykle jest to problem z niedopasowaniem strony kodowej konsoli w natywnych powłokach Windows. Objawy: @@ -482,21 +481,21 @@ Szybkie odpowiedzi oraz bardziej szczegółowe rozwiązywanie problemów dla rze $OutputEncoding = [System.Text.UTF8Encoding]::new($false) ``` - Następnie zrestartuj Gateway i ponów polecenie: + Następnie uruchom ponownie Gateway i spróbuj ponownie wykonać polecenie: ```powershell openclaw gateway restart ``` - Jeśli nadal możesz odtworzyć ten problem w najnowszym OpenClaw, śledź/zgłoś go tutaj: + Jeśli nadal odtwarzasz ten problem w najnowszym OpenClaw, śledź/zgłoś go tutaj: - [Issue #30640](https://github.com/openclaw/openclaw/issues/30640) - Użyj **instalacji hackable (git)**, aby mieć lokalnie pełne źródła i dokumentację, a następnie zapytaj - swojego bota (lub Claude/Codex) _z tego folderu_, aby mógł odczytać repozytorium i odpowiedzieć precyzyjnie. + Użyj **instalacji hackowalnej (git)**, aby mieć lokalnie pełny kod źródłowy i dokumentację, a potem zapytaj + swojego bota (lub Claude/Codex) _z tego folderu_, aby mógł czytać repozytorium i odpowiedzieć precyzyjnie. ```bash curl -fsSL https://openclaw.ai/install.sh | bash -s -- --install-method git @@ -506,25 +505,25 @@ Szybkie odpowiedzi oraz bardziej szczegółowe rozwiązywanie problemów dla rze - - Krótka odpowiedź: postępuj zgodnie z przewodnikiem dla Linuxa, a następnie uruchom onboarding. + + Krótka odpowiedź: postępuj zgodnie z przewodnikiem dla Linux, a potem uruchom wdrażanie. - - Szybka ścieżka dla Linuxa + instalacja usługi: [Linux](/pl/platforms/linux). + - Szybka ścieżka dla Linux + instalacja usługi: [Linux](/pl/platforms/linux). - Pełny przewodnik: [Pierwsze kroki](/pl/start/getting-started). - Instalator + aktualizacje: [Instalacja i aktualizacje](/pl/install/updating). - Każdy VPS z Linuxem działa. Zainstaluj na serwerze, a następnie użyj SSH/Tailscale, aby uzyskać dostęp do Gateway. + Każdy VPS z Linux będzie działać. Zainstaluj system na serwerze, a potem użyj SSH/Tailscale, aby uzyskać dostęp do Gateway. Przewodniki: [exe.dev](/pl/install/exe-dev), [Hetzner](/pl/install/hetzner), [Fly.io](/pl/install/fly). - Dostęp zdalny: [Gateway zdalnie](/pl/gateway/remote). + Dostęp zdalny: [Gateway remote](/pl/gateway/remote). - Utrzymujemy **centrum hostingu** z najpopularniejszymi dostawcami. Wybierz jednego i postępuj zgodnie z przewodnikiem: + Utrzymujemy **hub hostingowy** z najczęściej używanymi dostawcami. Wybierz jednego i postępuj zgodnie z przewodnikiem: - [Hosting VPS](/pl/vps) (wszyscy dostawcy w jednym miejscu) - [Fly.io](/pl/install/fly) @@ -532,22 +531,22 @@ Szybkie odpowiedzi oraz bardziej szczegółowe rozwiązywanie problemów dla rze - [exe.dev](/pl/install/exe-dev) Jak to działa w chmurze: **Gateway działa na serwerze**, a Ty uzyskujesz do niego dostęp - z laptopa/telefonu przez Control UI (lub Tailscale/SSH). Twój stan + workspace - znajdują się na serwerze, więc traktuj hosta jako źródło prawdy i twórz jego kopie zapasowe. + z laptopa/telefonu przez Control UI (albo Tailscale/SSH). Twój stan + workspace + znajdują się na serwerze, więc traktuj host jako źródło prawdy i twórz jego kopie zapasowe. - Możesz sparować **nodes** (Mac/iOS/Android/headless) z tym chmurowym Gateway, aby uzyskać dostęp - do lokalnego ekranu/kamery/canvas lub uruchamiać polecenia na laptopie, jednocześnie trzymając + Możesz sparować **Node** (Mac/iOS/Android/headless) z tym chmurowym Gateway, aby uzyskać dostęp do + lokalnego ekranu/kamery/canvas albo uruchamiać polecenia na laptopie, jednocześnie trzymając Gateway w chmurze. - Centrum: [Platformy](/pl/platforms). Dostęp zdalny: [Gateway zdalnie](/pl/gateway/remote). - Nodes: [Nodes](/pl/nodes), [CLI Nodes](/cli/nodes). + Hub: [Platformy](/pl/platforms). Dostęp zdalny: [Gateway remote](/pl/gateway/remote). + Node: [Node](/pl/nodes), [CLI Node](/cli/nodes). - Krótka odpowiedź: **to możliwe, ale niezalecane**. Proces aktualizacji może zrestartować - Gateway (co kończy aktywną sesję), może wymagać czystego checkoutu git i - może prosić o potwierdzenie. Bezpieczniej: uruchamiaj aktualizacje z powłoki jako operator. + Krótka odpowiedź: **to możliwe, ale niezalecane**. Proces aktualizacji może ponownie uruchomić + Gateway (co przerywa aktywną sesję), może wymagać czystego checkoutu git i + może poprosić o potwierdzenie. Bezpieczniej: uruchamiaj aktualizacje z powłoki jako operator. Użyj CLI: @@ -570,39 +569,39 @@ Szybkie odpowiedzi oraz bardziej szczegółowe rozwiązywanie problemów dla rze - - `openclaw onboard` to zalecana ścieżka konfiguracji. W **trybie lokalnym** prowadzi Cię przez: + + `openclaw onboard` to zalecana ścieżka konfiguracji. W **trybie lokalnym** przeprowadza Cię przez: - - **Konfigurację modeli/uwierzytelniania** (OAuth dostawców, klucze API, setup-token Anthropic oraz opcje modeli lokalnych, takie jak LM Studio) + - **Konfigurację modelu/uwierzytelniania** (OAuth dostawcy, klucze API, Anthropic setup-token oraz opcje modeli lokalnych, takie jak LM Studio) - Lokalizację **workspace** + pliki bootstrap - **Ustawienia Gateway** (bind/port/auth/tailscale) - - **Kanały** (WhatsApp, Telegram, Discord, Mattermost, Signal, iMessage oraz dołączone Plugin kanałów, takie jak QQ Bot) - - **Instalację demona** (LaunchAgent w macOS; jednostka użytkownika systemd w Linux/WSL2) - - **Kontrole kondycji** i wybór **Skills** + - **Kanały** (WhatsApp, Telegram, Discord, Mattermost, Signal, iMessage oraz dołączone channel plugins, takie jak QQ Bot) + - **Instalację demona** (LaunchAgent na macOS; jednostka użytkownika systemd na Linux/WSL2) + - **Kontrole stanu** oraz wybór **Skills** - Ostrzega także, jeśli skonfigurowany model jest nieznany lub brakuje dla niego uwierzytelniania. + Ostrzega też, jeśli skonfigurowany model jest nieznany albo brakuje dla niego uwierzytelniania. - Nie. Możesz uruchamiać OpenClaw za pomocą **kluczy API** (Anthropic/OpenAI/inne) albo - z użyciem **wyłącznie modeli lokalnych**, aby Twoje dane pozostawały na urządzeniu. Subskrypcje (Claude - Pro/Max lub OpenAI Codex) są opcjonalnymi sposobami uwierzytelniania tych dostawców. + Nie. Możesz uruchamiać OpenClaw z użyciem **kluczy API** (Anthropic/OpenAI/innych) albo + **wyłącznie modeli lokalnych**, dzięki czemu Twoje dane pozostają na urządzeniu. Subskrypcje (Claude + Pro/Max lub OpenAI Codex) to opcjonalne sposoby uwierzytelniania tych dostawców. - W praktyce dla Anthropic w OpenClaw podział wygląda tak: + W przypadku Anthropic w OpenClaw praktyczny podział wygląda tak: - **Klucz API Anthropic**: standardowe rozliczanie API Anthropic - - **Uwierzytelnianie Claude CLI / subskrypcją Claude w OpenClaw**: pracownicy Anthropic - poinformowali nas, że ten sposób użycia jest znowu dozwolony, a OpenClaw traktuje użycie `claude -p` - jako usankcjonowane dla tej integracji, chyba że Anthropic opublikuje nową + - **Claude CLI / uwierzytelnianie subskrypcją Claude w OpenClaw**: pracownicy Anthropic + poinformowali nas, że to użycie jest ponownie dozwolone, a OpenClaw traktuje użycie `claude -p` + jako sankcjonowane dla tej integracji, chyba że Anthropic opublikuje nową politykę - Dla długotrwale działających hostów Gateway klucze API Anthropic nadal są + Dla długotrwale działających hostów gateway klucze API Anthropic pozostają jednak bardziej przewidywalną konfiguracją. OAuth OpenAI Codex jest jawnie obsługiwany dla zewnętrznych narzędzi takich jak OpenClaw. - OpenClaw obsługuje także inne hostowane opcje w stylu subskrypcyjnym, w tym - **Qwen Cloud Coding Plan**, **MiniMax Coding Plan** i + OpenClaw obsługuje też inne hostowane opcje w stylu subskrypcyjnym, w tym + **Qwen Cloud Coding Plan**, **MiniMax Coding Plan** oraz **Z.AI / GLM Coding Plan**. Dokumentacja: [Anthropic](/pl/providers/anthropic), [OpenAI](/pl/providers/openai), @@ -616,7 +615,7 @@ Szybkie odpowiedzi oraz bardziej szczegółowe rozwiązywanie problemów dla rze Tak. Pracownicy Anthropic powiedzieli nam, że użycie Claude CLI w stylu OpenClaw jest znowu dozwolone, więc - OpenClaw traktuje uwierzytelnianie subskrypcją Claude oraz użycie `claude -p` jako usankcjonowane + OpenClaw traktuje uwierzytelnianie subskrypcją Claude i użycie `claude -p` jako sankcjonowane dla tej integracji, chyba że Anthropic opublikuje nową politykę. Jeśli chcesz najbardziej przewidywalnej konfiguracji po stronie serwera, użyj zamiast tego klucza API Anthropic. @@ -625,67 +624,67 @@ Szybkie odpowiedzi oraz bardziej szczegółowe rozwiązywanie problemów dla rze Tak. - Pracownicy Anthropic powiedzieli nam, że ten sposób użycia jest znowu dozwolony, więc OpenClaw traktuje - ponowne użycie Claude CLI oraz użycie `claude -p` jako usankcjonowane dla tej integracji, + Pracownicy Anthropic powiedzieli nam, że to użycie jest znowu dozwolone, więc OpenClaw traktuje + ponowne użycie Claude CLI i użycie `claude -p` jako sankcjonowane dla tej integracji, chyba że Anthropic opublikuje nową politykę. - Setup-token Anthropic nadal jest dostępny jako obsługiwana ścieżka tokena OpenClaw, ale OpenClaw teraz preferuje ponowne użycie Claude CLI i `claude -p`, gdy są dostępne. - Dla środowisk produkcyjnych lub wieloużytkownikowych uwierzytelnianie kluczem API Anthropic pozostaje - bezpieczniejszym i bardziej przewidywalnym wyborem. Jeśli chcesz innych hostowanych - opcji w stylu subskrypcyjnym w OpenClaw, zobacz [OpenAI](/pl/providers/openai), [Qwen / Model - Cloud](/pl/providers/qwen), [MiniMax](/pl/providers/minimax) oraz [Modele + Anthropic setup-token jest nadal dostępny jako obsługiwana ścieżka tokena OpenClaw, ale OpenClaw preferuje teraz ponowne użycie Claude CLI i `claude -p`, gdy są dostępne. + Dla środowisk produkcyjnych lub obciążeń wieloużytkownikowych uwierzytelnianie kluczem API Anthropic nadal jest + bezpieczniejszym i bardziej przewidywalnym wyborem. Jeśli chcesz inne hostowane + opcje w stylu subskrypcji w OpenClaw, zobacz [OpenAI](/pl/providers/openai), [Qwen / Model + Cloud](/pl/providers/qwen), [MiniMax](/pl/providers/minimax) i [Modele GLM](/pl/providers/glm). - -To oznacza, że Twój **limit/rate limit Anthropic** został wyczerpany w bieżącym oknie. Jeśli + +Oznacza to, że Twój **limit/rate limit Anthropic** został wyczerpany w bieżącym oknie. Jeśli używasz **Claude CLI**, poczekaj na reset okna albo podnieś plan. Jeśli -używasz **klucza API Anthropic**, sprawdź konsolę Anthropic -pod kątem użycia/rozliczeń i zwiększ limity w razie potrzeby. +używasz **klucza API Anthropic**, sprawdź Anthropic Console +pod kątem użycia/rozliczeń i w razie potrzeby zwiększ limity. Jeśli komunikat brzmi konkretnie: `Extra usage is required for long context requests`, żądanie próbuje użyć - bety kontekstu 1M Anthropic (`context1m: true`). Działa to tylko wtedy, gdy Twoje - poświadczenie kwalifikuje się do rozliczania długiego kontekstu (rozliczanie kluczem API albo + wersji beta 1M kontekstu Anthropic (`context1m: true`). Działa to tylko wtedy, gdy Twoje + dane uwierzytelniające kwalifikują się do rozliczania long-context (rozliczanie kluczem API lub ścieżka logowania Claude w OpenClaw z włączonym Extra Usage). - Wskazówka: ustaw **model zapasowy**, aby OpenClaw mógł nadal odpowiadać, gdy dostawca ma rate limit. - Zobacz [Modele](/cli/models), [OAuth](/pl/concepts/oauth) oraz + Wskazówka: ustaw **model zapasowy**, aby OpenClaw mógł nadal odpowiadać, gdy dostawca jest ograniczany przez rate limit. + Zobacz [Modele](/cli/models), [OAuth](/pl/concepts/oauth) i [/gateway/troubleshooting#anthropic-429-extra-usage-required-for-long-context](/pl/gateway/troubleshooting#anthropic-429-extra-usage-required-for-long-context). - Tak. OpenClaw ma dołączonego dostawcę **Amazon Bedrock (Converse)**. Przy obecnych znacznikach środowiskowych AWS OpenClaw może automatycznie wykrywać katalog Bedrock dla streamingu/tekstu i scalać go jako niejawnego dostawcę `amazon-bedrock`; w przeciwnym razie możesz jawnie włączyć `plugins.entries.amazon-bedrock.config.discovery.enabled` albo dodać ręczny wpis dostawcy. Zobacz [Amazon Bedrock](/pl/providers/bedrock) i [Dostawcy modeli](/pl/providers/models). Jeśli wolisz zarządzany przepływ kluczy, proxy zgodne z OpenAI przed Bedrock nadal jest prawidłową opcją. + Tak. OpenClaw ma dołączonego dostawcę **Amazon Bedrock (Converse)**. Gdy obecne są znaczniki środowiska AWS, OpenClaw może automatycznie wykryć katalog Bedrock dla streamingu/tekstu i scalić go jako niejawnego dostawcę `amazon-bedrock`; w przeciwnym razie możesz jawnie włączyć `plugins.entries.amazon-bedrock.config.discovery.enabled` albo dodać ręczny wpis dostawcy. Zobacz [Amazon Bedrock](/pl/providers/bedrock) i [Dostawcy modeli](/pl/providers/models). Jeśli wolisz zarządzany przepływ kluczy, zgodny z OpenAI proxy przed Bedrock nadal jest prawidłową opcją. - OpenClaw obsługuje **OpenAI Code (Codex)** przez OAuth (logowanie ChatGPT). Onboarding może uruchomić przepływ OAuth i ustawi domyślny model na `openai-codex/gpt-5.4`, gdy będzie to odpowiednie. Zobacz [Dostawcy modeli](/pl/concepts/model-providers) i [Onboarding (CLI)](/pl/start/wizard). + OpenClaw obsługuje **OpenAI Code (Codex)** przez OAuth (logowanie do ChatGPT). Wdrażanie może uruchomić przepływ OAuth i ustawi domyślny model na `openai-codex/gpt-5.4`, gdy będzie to odpowiednie. Zobacz [Dostawcy modeli](/pl/concepts/model-providers) i [Wdrażanie (CLI)](/pl/start/wizard). - OpenClaw traktuje te dwie ścieżki osobno: + OpenClaw traktuje te dwie ścieżki oddzielnie: - `openai-codex/gpt-5.4` = OAuth ChatGPT/Codex - - `openai/gpt-5.4` = bezpośrednie API platformy OpenAI + - `openai/gpt-5.4` = bezpośrednie API OpenAI Platform W OpenClaw logowanie ChatGPT/Codex jest podłączone do ścieżki `openai-codex/*`, - a nie do bezpośredniej ścieżki `openai/*`. Jeśli chcesz bezpośredniej ścieżki API w - OpenClaw, ustaw `OPENAI_API_KEY` (lub równoważną konfigurację dostawcy OpenAI). - Jeśli chcesz logowania ChatGPT/Codex w OpenClaw, użyj `openai-codex/*`. + a nie bezpośredniej ścieżki `openai/*`. Jeśli chcesz w + OpenClaw korzystać z bezpośredniej ścieżki API, ustaw `OPENAI_API_KEY` (lub równoważną konfigurację dostawcy OpenAI). + Jeśli chcesz w OpenClaw używać logowania ChatGPT/Codex, użyj `openai-codex/*`. - `openai-codex/*` używa ścieżki OAuth Codex, a jej użyteczne okna limitów są - zarządzane przez OpenAI i zależne od planu. W praktyce te limity mogą różnić się od - doświadczenia w witrynie/aplikacji ChatGPT, nawet jeśli oba są powiązane z tym samym kontem. + `openai-codex/*` używa ścieżki OAuth Codex, a jej dostępne okna limitów + są zarządzane przez OpenAI i zależne od planu. W praktyce te limity mogą różnić się od + doświadczenia na stronie/aplikacji ChatGPT, nawet gdy oba są powiązane z tym samym kontem. - OpenClaw może pokazać aktualnie widoczne okna użycia/limitu dostawcy w - `openclaw models status`, ale nie tworzy ani nie normalizuje uprawnień ChatGPT-web - do bezpośredniego dostępu API. Jeśli chcesz bezpośredniej ścieżki rozliczeń/limitów OpenAI Platform, + OpenClaw może pokazywać obecnie widoczne okna użycia/limitów dostawcy w + `openclaw models status`, ale nie wymyśla ani nie normalizuje uprawnień ChatGPT-web + do bezpośredniego dostępu API. Jeśli chcesz bezpośrednią ścieżkę rozliczeń/limitów OpenAI Platform, użyj `openai/*` z kluczem API. @@ -693,79 +692,79 @@ pod kątem użycia/rozliczeń i zwiększ limity w razie potrzeby. Tak. OpenClaw w pełni obsługuje **subskrypcyjny OAuth OpenAI Code (Codex)**. OpenAI jawnie zezwala na użycie subskrypcyjnego OAuth w zewnętrznych narzędziach/przepływach pracy - takich jak OpenClaw. Onboarding może uruchomić dla Ciebie przepływ OAuth. + takich jak OpenClaw. Wdrażanie może przeprowadzić ten przepływ OAuth za Ciebie. - Zobacz [OAuth](/pl/concepts/oauth), [Dostawcy modeli](/pl/concepts/model-providers) i [Onboarding (CLI)](/pl/start/wizard). + Zobacz [OAuth](/pl/concepts/oauth), [Dostawcy modeli](/pl/concepts/model-providers) i [Wdrażanie (CLI)](/pl/start/wizard). - Gemini CLI używa **przepływu uwierzytelniania Plugin**, a nie client id ani secret w `openclaw.json`. + Gemini CLI używa **przepływu uwierzytelniania Plugin**, a nie identyfikatora klienta ani sekretu w `openclaw.json`. Kroki: - 1. Zainstaluj lokalnie Gemini CLI, aby `gemini` było dostępne w `PATH` + 1. Zainstaluj Gemini CLI lokalnie, tak aby `gemini` było w `PATH` - Homebrew: `brew install gemini-cli` - npm: `npm install -g @google/gemini-cli` 2. Włącz Plugin: `openclaw plugins enable google` 3. Zaloguj się: `openclaw models auth login --provider google-gemini-cli --set-default` 4. Domyślny model po zalogowaniu: `google-gemini-cli/gemini-3-flash-preview` - 5. Jeśli żądania się nie powiodą, ustaw `GOOGLE_CLOUD_PROJECT` lub `GOOGLE_CLOUD_PROJECT_ID` na hoście gateway + 5. Jeśli żądania kończą się niepowodzeniem, ustaw `GOOGLE_CLOUD_PROJECT` albo `GOOGLE_CLOUD_PROJECT_ID` na hoście gateway - To zapisuje tokeny OAuth w profilach uwierzytelniania na hoście gateway. Szczegóły: [Dostawcy modeli](/pl/concepts/model-providers). + To przechowuje tokeny OAuth w profilach uwierzytelniania na hoście gateway. Szczegóły: [Dostawcy modeli](/pl/concepts/model-providers). - - Zwykle nie. OpenClaw potrzebuje dużego kontekstu + silnych zabezpieczeń; małe karty obcinają i przeciekają. Jeśli musisz, uruchom lokalnie **największą** kompilację modelu, jaką możesz (LM Studio), i zobacz [/gateway/local-models](/pl/gateway/local-models). Mniejsze/kwantyzowane modele zwiększają ryzyko prompt injection — zobacz [Bezpieczeństwo](/pl/gateway/security). + + Zwykle nie. OpenClaw potrzebuje dużego kontekstu + silnych zabezpieczeń; małe karty obcinają kontekst i przeciekają. Jeśli musisz, uruchom lokalnie **największą** kompilację modelu, jaką możesz (LM Studio), i zobacz [/gateway/local-models](/pl/gateway/local-models). Mniejsze/kwantyzowane modele zwiększają ryzyko prompt injection — zobacz [Bezpieczeństwo](/pl/gateway/security). - - Wybierz endpointy przypięte do regionu. OpenRouter udostępnia opcje hostowane w USA dla MiniMax, Kimi i GLM; wybierz wariant hostowany w USA, aby utrzymać dane w regionie. Nadal możesz wymieniać obok nich Anthropic/OpenAI, używając `models.mode: "merge"`, aby modele zapasowe pozostawały dostępne przy jednoczesnym poszanowaniu wybranego dostawcy regionalnego. + + Wybierz endpointy przypięte do regionu. OpenRouter udostępnia opcje hostowane w USA dla MiniMax, Kimi i GLM; wybierz wariant hostowany w USA, aby utrzymać dane w regionie. Nadal możesz umieszczać Anthropic/OpenAI obok nich, używając `models.mode: "merge"`, aby modele zapasowe pozostawały dostępne przy jednoczesnym respektowaniu wybranego dostawcy regionalnego. - - Nie. OpenClaw działa na macOS lub Linuxie (Windows przez WSL2). Mac mini jest opcjonalny — niektórzy - kupują go jako host działający cały czas, ale mały VPS, domowy serwer lub urządzenie klasy Raspberry Pi też się sprawdzi. + + Nie. OpenClaw działa na macOS albo Linux (Windows przez WSL2). Mac mini jest opcjonalny — niektórzy + kupują go jako zawsze włączony host, ale mały VPS, serwer domowy albo urządzenie klasy Raspberry Pi też się sprawdzą. - Mac jest potrzebny tylko dla **narzędzi wyłącznie macOS**. Dla iMessage używaj [BlueBubbles](/pl/channels/bluebubbles) (zalecane) — serwer BlueBubbles działa na dowolnym Macu, a Gateway może działać na Linuxie lub gdzie indziej. Jeśli chcesz innych narzędzi tylko dla macOS, uruchom Gateway na Macu albo sparuj node macOS. + Potrzebujesz Maca tylko do **narzędzi dostępnych wyłącznie na macOS**. Dla iMessage użyj [BlueBubbles](/pl/channels/bluebubbles) (zalecane) — serwer BlueBubbles działa na dowolnym Macu, a Gateway może działać na Linux lub gdzie indziej. Jeśli chcesz innych narzędzi tylko dla macOS, uruchom Gateway na Macu albo sparuj Node macOS. - Dokumentacja: [BlueBubbles](/pl/channels/bluebubbles), [Nodes](/pl/nodes), [Tryb zdalny Mac](/pl/platforms/mac/remote). + Dokumentacja: [BlueBubbles](/pl/channels/bluebubbles), [Node](/pl/nodes), [Tryb zdalny na Mac](/pl/platforms/mac/remote). - Potrzebujesz **jakiegoś urządzenia macOS** zalogowanego do Wiadomości. To **nie** musi być Mac mini — - dowolny Mac wystarczy. Dla iMessage **używaj [BlueBubbles](/pl/channels/bluebubbles)** (zalecane) — serwer BlueBubbles działa na macOS, a Gateway może działać na Linuxie lub gdzie indziej. + Potrzebujesz **jakiegoś urządzenia z macOS** zalogowanego do Messages. To **nie** musi być Mac mini — + wystarczy dowolny Mac. Dla iMessage **użyj [BlueBubbles](/pl/channels/bluebubbles)** (zalecane) — serwer BlueBubbles działa na macOS, podczas gdy Gateway może działać na Linux lub gdzie indziej. Typowe konfiguracje: - - Uruchom Gateway na Linuxie/VPS i serwer BlueBubbles na dowolnym Macu zalogowanym do Wiadomości. - - Uruchom wszystko na Macu, jeśli chcesz najprostszą konfigurację na jednym komputerze. + - Uruchom Gateway na Linux/VPS, a serwer BlueBubbles na dowolnym Macu zalogowanym do Messages. + - Uruchom wszystko na Macu, jeśli chcesz najprostszej konfiguracji na jednym komputerze. - Dokumentacja: [BlueBubbles](/pl/channels/bluebubbles), [Nodes](/pl/nodes), - [Tryb zdalny Mac](/pl/platforms/mac/remote). + Dokumentacja: [BlueBubbles](/pl/channels/bluebubbles), [Node](/pl/nodes), + [Tryb zdalny na Mac](/pl/platforms/mac/remote). - - Tak. **Mac mini może uruchamiać Gateway**, a Twój MacBook Pro może połączyć się jako - **node** (urządzenie towarzyszące). Nodes nie uruchamiają Gateway — zapewniają dodatkowe - możliwości, takie jak screen/camera/canvas i `system.run` na tym urządzeniu. + + Tak. **Mac mini może uruchamiać Gateway**, a Twój MacBook Pro może łączyć się jako + **Node** (urządzenie towarzyszące). Node nie uruchamiają Gateway — zapewniają dodatkowe + możliwości, takie jak ekran/kamera/canvas i `system.run` na tym urządzeniu. Typowy wzorzec: - - Gateway na Macu mini (zawsze włączony). - - MacBook Pro uruchamia aplikację macOS albo hosta node i paruje się z Gateway. + - Gateway na Mac mini (zawsze włączony). + - MacBook Pro uruchamia aplikację macOS albo hosta Node i paruje się z Gateway. - Użyj `openclaw nodes status` / `openclaw nodes list`, aby to zobaczyć. - Dokumentacja: [Nodes](/pl/nodes), [CLI Nodes](/cli/nodes). + Dokumentacja: [Node](/pl/nodes), [CLI Node](/cli/nodes). - Bun **nie jest zalecany**. Widzimy błędy środowiska uruchomieniowego, zwłaszcza z WhatsApp i Telegram. - Do stabilnych gateway używaj **Node**. + Bun **nie jest zalecany**. Widzimy błędy środowiska uruchomieniowego, szczególnie z WhatsApp i Telegram. + Dla stabilnych gateway używaj **Node**. Jeśli mimo to chcesz eksperymentować z Bun, rób to na nieprodukcyjnym gateway bez WhatsApp/Telegram. @@ -773,36 +772,36 @@ pod kątem użycia/rozliczeń i zwiększ limity w razie potrzeby. - `channels.telegram.allowFrom` to **Telegram user ID nadawcy będącego człowiekiem** (liczbowe). To nie jest nazwa użytkownika bota. + `channels.telegram.allowFrom` to **identyfikator użytkownika Telegram nadawcy** (liczbowy). To nie jest nazwa użytkownika bota. - Onboarding akceptuje dane wejściowe `@username` i rozwiązuje je do numerycznego ID, ale autoryzacja OpenClaw używa wyłącznie numerycznych ID. + Konfiguracja prosi tylko o liczbowe identyfikatory użytkowników. Jeśli masz już w konfiguracji starsze wpisy `@username`, `openclaw doctor --fix` może spróbować je rozwiązać. - Bezpieczniej (bez bota zewnętrznego): + Bezpieczniejsza metoda (bez zewnętrznego bota): - - Wyślij DM do swojego bota, a następnie uruchom `openclaw logs --follow` i odczytaj `from.id`. + - Wyślij wiadomość prywatną do swojego bota, a następnie uruchom `openclaw logs --follow` i odczytaj `from.id`. Oficjalne Bot API: - - Wyślij DM do swojego bota, a następnie wywołaj `https://api.telegram.org/bot/getUpdates` i odczytaj `message.from.id`. + - Wyślij wiadomość prywatną do swojego bota, a następnie wywołaj `https://api.telegram.org/bot/getUpdates` i odczytaj `message.from.id`. - Zewnętrzne narzędzia (mniej prywatne): + Zewnętrzne narzędzie (mniej prywatne): - - Wyślij DM do `@userinfobot` lub `@getidsbot`. + - Wyślij wiadomość prywatną do `@userinfobot` albo `@getidsbot`. Zobacz [/channels/telegram](/pl/channels/telegram#access-control-and-activation). - Tak, przez **routing wieloagentowy**. Przypisz DM WhatsApp każdego nadawcy (**peer** `kind: "direct"`, E.164 nadawcy, np. `+15551234567`) do innego `agentId`, aby każda osoba miała własny workspace i magazyn sesji. Odpowiedzi nadal będą pochodzić z **tego samego konta WhatsApp**, a kontrola dostępu DM (`channels.whatsapp.dmPolicy` / `channels.whatsapp.allowFrom`) jest globalna dla danego konta WhatsApp. Zobacz [Routing wieloagentowy](/pl/concepts/multi-agent) i [WhatsApp](/pl/channels/whatsapp). + Tak, przez **routing multi-agent**. Przypisz wiadomości prywatne WhatsApp każdego nadawcy **DM** (peer `kind: "direct"`, nadawca E.164, np. `+15551234567`) do innego `agentId`, aby każda osoba miała własny workspace i magazyn sesji. Odpowiedzi nadal będą wychodziły z **tego samego konta WhatsApp**, a kontrola dostępu DM (`channels.whatsapp.dmPolicy` / `channels.whatsapp.allowFrom`) jest globalna dla danego konta WhatsApp. Zobacz [Routing Multi-Agent](/pl/concepts/multi-agent) i [WhatsApp](/pl/channels/whatsapp). - - Tak. Użyj routingu wieloagentowego: nadaj każdemu agentowi własny model domyślny, a następnie przypisz trasy przychodzące (konto dostawcy lub konkretnych peerów) do każdego agenta. Przykładowa konfiguracja znajduje się w [Routing wieloagentowy](/pl/concepts/multi-agent). Zobacz też [Modele](/pl/concepts/models) i [Konfiguracja](/pl/gateway/configuration). + + Tak. Użyj routingu multi-agent: nadaj każdemu agentowi własny model domyślny, a następnie przypisz trasy przychodzące (konto dostawcy albo konkretne peery) do każdego agenta. Przykładowa konfiguracja znajduje się w [Routingu Multi-Agent](/pl/concepts/multi-agent). Zobacz też [Modele](/pl/concepts/models) i [Konfiguracja](/pl/gateway/configuration). - - Tak. Homebrew obsługuje Linuxa (Linuxbrew). Szybka konfiguracja: + + Tak. Homebrew obsługuje Linux (Linuxbrew). Szybka konfiguracja: ```bash /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" @@ -811,27 +810,27 @@ pod kątem użycia/rozliczeń i zwiększ limity w razie potrzeby. brew install ``` - Jeśli uruchamiasz OpenClaw przez systemd, upewnij się, że PATH usługi zawiera `/home/linuxbrew/.linuxbrew/bin` (lub Twój prefiks brew), aby narzędzia zainstalowane przez `brew` były rozpoznawane w nieinteraktywnych powłokach. - Najnowsze kompilacje dodają też na początku typowe katalogi bin użytkownika w usługach Linux systemd (na przykład `~/.local/bin`, `~/.npm-global/bin`, `~/.local/share/pnpm`, `~/.bun/bin`) i uwzględniają `PNPM_HOME`, `NPM_CONFIG_PREFIX`, `BUN_INSTALL`, `VOLTA_HOME`, `ASDF_DATA_DIR`, `NVM_DIR` i `FNM_DIR`, gdy są ustawione. + Jeśli uruchamiasz OpenClaw przez systemd, upewnij się, że PATH usługi zawiera `/home/linuxbrew/.linuxbrew/bin` (albo Twój prefiks brew), aby narzędzia zainstalowane przez `brew` były dostępne w powłokach niebędących powłokami logowania. + Nowsze kompilacje dodają też na początku typowe katalogi bin użytkownika w usługach systemd na Linux (na przykład `~/.local/bin`, `~/.npm-global/bin`, `~/.local/share/pnpm`, `~/.bun/bin`) i honorują `PNPM_HOME`, `NPM_CONFIG_PREFIX`, `BUN_INSTALL`, `VOLTA_HOME`, `ASDF_DATA_DIR`, `NVM_DIR` oraz `FNM_DIR`, jeśli są ustawione. - - - **Instalacja hackable (git):** pełny checkout źródeł, możliwość edycji, najlepsza dla współtwórców. - Uruchamiasz buildy lokalnie i możesz poprawiać kod/dokumentację. - - **npm install:** globalna instalacja CLI, bez repozytorium, najlepsza, gdy chcesz „po prostu to uruchomić”. - Aktualizacje pochodzą z npm dist-tags. + + - **Instalacja hackowalna (git):** pełny checkout kodu źródłowego, możliwość edycji, najlepsza dla współtwórców. + Budujesz lokalnie i możesz poprawiać kod/dokumentację. + - **npm install:** globalna instalacja CLI, bez repozytorium, najlepsza, jeśli chcesz „po prostu to uruchomić”. + Aktualizacje pochodzą z tagów dystrybucyjnych npm. Dokumentacja: [Pierwsze kroki](/pl/start/getting-started), [Aktualizowanie](/pl/install/updating). - - Tak. Zainstaluj drugi wariant, a następnie uruchom Doctor, aby usługa gateway wskazywała nowy entrypoint. + + Tak. Zainstaluj drugi wariant, a następnie uruchom Doctor, aby usługa gateway wskazywała nowy punkt wejścia. To **nie usuwa Twoich danych** — zmienia tylko instalację kodu OpenClaw. Twój stan (`~/.openclaw`) i workspace (`~/.openclaw/workspace`) pozostają nienaruszone. - Z npm na git: + Z npm do git: ```bash git clone https://github.com/openclaw/openclaw.git @@ -842,7 +841,7 @@ pod kątem użycia/rozliczeń i zwiększ limity w razie potrzeby. openclaw gateway restart ``` - Z git na npm: + Z git do npm: ```bash npm install -g openclaw@latest @@ -850,15 +849,15 @@ pod kątem użycia/rozliczeń i zwiększ limity w razie potrzeby. openclaw gateway restart ``` - Doctor wykrywa niedopasowanie entrypoint usługi gateway i proponuje przepisanie konfiguracji usługi tak, aby odpowiadała bieżącej instalacji (w automatyzacji użyj `--repair`). + Doctor wykrywa niezgodność punktu wejścia usługi gateway i proponuje przepisanie konfiguracji usługi tak, aby odpowiadała bieżącej instalacji (w automatyzacji użyj `--repair`). - Wskazówki dotyczące kopii zapasowych: zobacz [Strategia kopii zapasowych](#gdzie-rzeczy-znajdują-się-na-dysku). + Wskazówki dotyczące kopii zapasowych: zobacz [Strategia kopii zapasowych](#where-things-live-on-disk). Krótka odpowiedź: **jeśli chcesz niezawodności 24/7, użyj VPS**. Jeśli chcesz - najmniej tarcia i akceptujesz usypianie/restarty, uruchamiaj lokalnie. + najmniejszego tarcia i nie przeszkadza Ci usypianie/restarty, uruchamiaj go lokalnie. **Laptop (lokalny Gateway)** @@ -867,23 +866,23 @@ pod kątem użycia/rozliczeń i zwiększ limity w razie potrzeby. **VPS / chmura** - - **Zalety:** zawsze włączony, stabilna sieć, brak problemów z usypianiem laptopa, łatwiej utrzymać działanie. - - **Wady:** często działa bez interfejsu graficznego (używaj zrzutów ekranu), tylko zdalny dostęp do plików, aktualizacje wymagają SSH. + - **Zalety:** działa cały czas, stabilna sieć, brak problemów z usypianiem laptopa, łatwiej utrzymać go w działaniu. + - **Wady:** często działa bez interfejsu (używaj zrzutów ekranu), tylko zdalny dostęp do plików, aktualizacje wymagają SSH. - **Uwaga specyficzna dla OpenClaw:** WhatsApp/Telegram/Slack/Mattermost/Discord działają dobrze z VPS. Jedyny realny kompromis to **przeglądarka bez interfejsu graficznego** kontra widoczne okno. Zobacz [Przeglądarka](/pl/tools/browser). + **Uwaga specyficzna dla OpenClaw:** WhatsApp/Telegram/Slack/Mattermost/Discord działają bez problemu z VPS. Jedyny realny kompromis to **przeglądarka headless** kontra widoczne okno. Zobacz [Przeglądarka](/pl/tools/browser). - **Zalecana opcja domyślna:** VPS, jeśli wcześniej występowały rozłączenia gateway. Lokalnie jest świetnie, gdy aktywnie używasz Maca i chcesz lokalnego dostępu do plików lub automatyzacji UI z widoczną przeglądarką. + **Zalecane ustawienie domyślne:** VPS, jeśli wcześniej zdarzały Ci się rozłączenia gateway. Lokalne uruchomienie jest świetne, gdy aktywnie używasz Maca i chcesz mieć lokalny dostęp do plików albo automatyzację UI z widoczną przeglądarką. - + Nie jest to wymagane, ale **zalecane ze względu na niezawodność i izolację**. - - **Dedykowany host (VPS/Mac mini/Pi):** zawsze włączony, mniej przerw z powodu uśpienia/restartów, czystsze uprawnienia, łatwiej utrzymać działanie. - - **Współdzielony laptop/desktop:** całkowicie w porządku do testów i aktywnego użycia, ale spodziewaj się przerw, gdy komputer przechodzi w stan uśpienia lub się aktualizuje. + - **Dedykowany host (VPS/Mac mini/Pi):** zawsze włączony, mniej przerw przez usypianie/restarty, czystsze uprawnienia, łatwiej utrzymać działanie. + - **Współdzielony laptop/desktop:** całkowicie w porządku do testów i aktywnego używania, ale spodziewaj się przerw, gdy komputer przejdzie w stan uśpienia albo się zaktualizuje. - Jeśli chcesz mieć to, co najlepsze z obu światów, trzymaj Gateway na dedykowanym hoście i sparuj laptop jako **node** dla lokalnych narzędzi screen/camera/exec. Zobacz [Nodes](/pl/nodes). - Wskazówki dotyczące bezpieczeństwa znajdziesz w [Bezpieczeństwo](/pl/gateway/security). + Jeśli chcesz połączyć najlepsze cechy obu rozwiązań, trzymaj Gateway na dedykowanym hoście i sparuj laptop jako **Node** dla lokalnych narzędzi ekranu/kamery/exec. Zobacz [Node](/pl/nodes). + Wskazówki dotyczące bezpieczeństwa znajdziesz w [Bezpieczeństwie](/pl/gateway/security). @@ -891,27 +890,27 @@ pod kątem użycia/rozliczeń i zwiększ limity w razie potrzeby. OpenClaw jest lekki. Dla podstawowego Gateway + jednego kanału czatu: - **Absolutne minimum:** 1 vCPU, 1 GB RAM, ~500 MB miejsca na dysku. - - **Zalecane:** 1–2 vCPU, 2 GB RAM lub więcej dla zapasu (logi, multimedia, wiele kanałów). Narzędzia Node i automatyzacja przeglądarki mogą zużywać sporo zasobów. + - **Zalecane:** 1-2 vCPU, 2 GB RAM lub więcej zapasu (logi, multimedia, wiele kanałów). Narzędzia Node i automatyzacja przeglądarki mogą zużywać dużo zasobów. - System operacyjny: używaj **Ubuntu LTS** (lub dowolnego nowoczesnego Debian/Ubuntu). Ścieżka instalacji dla Linuxa jest tam najlepiej przetestowana. + System operacyjny: używaj **Ubuntu LTS** (albo dowolnego nowoczesnego Debian/Ubuntu). Ścieżka instalacji na Linux jest tam najlepiej przetestowana. Dokumentacja: [Linux](/pl/platforms/linux), [Hosting VPS](/pl/vps). - - Tak. Traktuj VM tak samo jak VPS: musi być zawsze włączona, osiągalna i mieć wystarczająco - dużo RAM dla Gateway oraz wszystkich włączonych kanałów. + + Tak. Traktuj VM tak samo jak VPS: musi być zawsze włączona, osiągalna i mieć dość + RAM dla Gateway oraz wszystkich włączonych kanałów. - Podstawowe wskazówki: + Podstawowe wytyczne: - **Absolutne minimum:** 1 vCPU, 1 GB RAM. - - **Zalecane:** 2 GB RAM lub więcej, jeśli uruchamiasz wiele kanałów, automatyzację przeglądarki lub narzędzia multimedialne. - - **System operacyjny:** Ubuntu LTS lub inny nowoczesny Debian/Ubuntu. + - **Zalecane:** 2 GB RAM lub więcej, jeśli uruchamiasz wiele kanałów, automatyzację przeglądarki albo narzędzia multimedialne. + - **System operacyjny:** Ubuntu LTS albo inny nowoczesny Debian/Ubuntu. Jeśli używasz Windows, **WSL2 to najłatwiejsza konfiguracja w stylu VM** i ma najlepszą zgodność narzędzi. Zobacz [Windows](/pl/platforms/windows), [Hosting VPS](/pl/vps). - Jeśli uruchamiasz macOS w VM, zobacz [VM macOS](/pl/install/macos-vm). + Jeśli uruchamiasz macOS w VM, zobacz [VM z macOS](/pl/install/macos-vm). @@ -919,82 +918,82 @@ pod kątem użycia/rozliczeń i zwiększ limity w razie potrzeby. ## Czym jest OpenClaw? - - OpenClaw to osobisty asystent AI, którego uruchamiasz na własnych urządzeniach. Odpowiada na używanych już przez Ciebie powierzchniach komunikacyjnych (WhatsApp, Telegram, Slack, Mattermost, Discord, Google Chat, Signal, iMessage, WebChat oraz dołączone Plugin kanałów, takie jak QQ Bot), a na obsługiwanych platformach oferuje także głos + Canvas na żywo. **Gateway** to zawsze aktywna płaszczyzna sterowania; asystent jest produktem. + + OpenClaw to osobisty asystent AI, którego uruchamiasz na własnych urządzeniach. Odpowiada na powierzchniach komunikacyjnych, których już używasz (WhatsApp, Telegram, Slack, Mattermost, Discord, Google Chat, Signal, iMessage, WebChat oraz dołączone channel plugins, takie jak QQ Bot), a na obsługiwanych platformach może też oferować głos + aktywny Canvas. **Gateway** to zawsze działająca płaszczyzna sterowania; produktem jest asystent. - OpenClaw nie jest „po prostu wrapperem dla Claude”. To **lokalna płaszczyzna sterowania local-first**, która pozwala uruchamiać - wydajnego asystenta na **własnym sprzęcie**, dostępnego z aplikacji czatowych, których już używasz, z - trwałymi sesjami, pamięcią i narzędziami — bez oddawania kontroli nad przepływami pracy hostowanemu - SaaS. + OpenClaw to nie jest „tylko wrapper Claude”. To **local-first control plane**, która pozwala uruchamiać + zaawansowanego asystenta na **własnym sprzęcie**, dostępnego z aplikacji czatowych, których już używasz, z + utrzymywanymi sesjami, pamięcią i narzędziami — bez oddawania kontroli nad własnymi przepływami pracy + hostowanemu SaaS. - Najważniejsze zalety: + Najważniejsze cechy: - - **Twoje urządzenia, Twoje dane:** uruchamiaj Gateway tam, gdzie chcesz (Mac, Linux, VPS), i trzymaj - lokalnie workspace + historię sesji. - - **Prawdziwe kanały, nie webowy sandbox:** WhatsApp/Telegram/Slack/Discord/Signal/iMessage itd., + - **Twoje urządzenia, Twoje dane:** uruchamiaj Gateway, gdzie chcesz (Mac, Linux, VPS), i trzymaj + workspace + historię sesji lokalnie. + - **Prawdziwe kanały, a nie sandbox webowy:** WhatsApp/Telegram/Slack/Discord/Signal/iMessage/etc., plus głos mobilny i Canvas na obsługiwanych platformach. - - **Niezależność od modelu:** używaj Anthropic, OpenAI, MiniMax, OpenRouter itd., z routingiem - i przełączaniem awaryjnym per agent. - - **Opcja wyłącznie lokalna:** uruchamiaj modele lokalne, aby **wszystkie dane mogły pozostać na Twoim urządzeniu**, jeśli chcesz. - - **Routing wieloagentowy:** oddzielni agenci per kanał, konto lub zadanie, każdy z własnym + - **Niezależność od modelu:** używaj Anthropic, OpenAI, MiniMax, OpenRouter itd., z routingiem per agent + i failover. + - **Opcja tylko lokalna:** uruchamiaj modele lokalne, aby **wszystkie dane mogły pozostać na Twoim urządzeniu**, jeśli tego chcesz. + - **Routing multi-agent:** oddzielni agenci dla kanału, konta albo zadania, każdy z własnym workspace i ustawieniami domyślnymi. - - **Open source i hackable:** sprawdzaj, rozszerzaj i hostuj samodzielnie bez vendor lock-in. + - **Open source i hackowalność:** sprawdzaj, rozszerzaj i hostuj samodzielnie bez uzależnienia od dostawcy. - Dokumentacja: [Gateway](/pl/gateway), [Kanały](/pl/channels), [Wieloagentowość](/pl/concepts/multi-agent), + Dokumentacja: [Gateway](/pl/gateway), [Kanały](/pl/channels), [Multi-agent](/pl/concepts/multi-agent), [Pamięć](/pl/concepts/memory). - + Dobre pierwsze projekty: - - Zbudować stronę internetową (WordPress, Shopify lub prostą statyczną stronę). - - Stworzyć prototyp aplikacji mobilnej (zarys, ekrany, plan API). - - Uporządkować pliki i foldery (czyszczenie, nazewnictwo, tagowanie). - - Połączyć Gmail i zautomatyzować podsumowania lub follow-upy. + - Zbudowanie strony internetowej (WordPress, Shopify albo prosta strona statyczna). + - Prototypowanie aplikacji mobilnej (zarys, ekrany, plan API). + - Organizowanie plików i folderów (porządki, nazewnictwo, tagowanie). + - Podłączenie Gmail i automatyzacja podsumowań albo działań następczych. - Potrafi obsługiwać duże zadania, ale najlepiej działa, gdy dzielisz je na etapy i - używasz subagentów do pracy równoległej. + Potrafi obsługiwać duże zadania, ale działa najlepiej, gdy podzielisz je na etapy i + użyjesz sub-agent do pracy równoległej. Codzienne korzyści zwykle wyglądają tak: - - **Osobiste briefingi:** podsumowania skrzynki odbiorczej, kalendarza i interesujących Cię wiadomości. - - **Research i tworzenie szkiców:** szybki research, podsumowania i pierwsze szkice maili lub dokumentów. - - **Przypomnienia i follow-upy:** Cron lub Heartbeat napędzające przypomnienia i checklisty. + - **Osobiste odprawy:** podsumowania skrzynki odbiorczej, kalendarza i interesujących Cię wiadomości. + - **Badania i redagowanie:** szybkie badania, podsumowania i pierwsze wersje e-maili albo dokumentów. + - **Przypomnienia i działania następcze:** ponaglenia i checklisty uruchamiane przez cron albo 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 z powrotem na czacie. - Tak, w zakresie **researchu, kwalifikacji i przygotowywania szkiców**. Może skanować strony, budować shortlisty, - podsumowywać potencjalnych klientów i pisać szkice wiadomości outreach lub tekstów reklamowych. + Tak, w zakresie **badań, kwalifikacji i redagowania**. Może skanować strony, budować krótkie listy, + podsumowywać potencjalnych klientów i pisać szkice wiadomości outreach albo copy reklamowego. - W przypadku **outreachu lub uruchamiania kampanii reklamowych** zachowaj 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ć szkic, a Ty go zatwierdzasz. + W przypadku **outreach albo uruchamiania reklam** zachowaj człowieka w pętli. Unikaj spamu, przestrzegaj lokalnych przepisów i + zasad platform oraz sprawdzaj wszystko przed wysłaniem. Najbezpieczniejszy wzorzec to taki, w którym + OpenClaw przygotowuje szkic, a Ty go zatwierdzasz. Dokumentacja: [Bezpieczeństwo](/pl/gateway/security). - + OpenClaw to **osobisty asystent** i warstwa koordynacji, a nie zamiennik IDE. Używaj - Claude Code lub Codex dla najszybszej bezpośredniej pętli programistycznej w repozytorium. Używaj OpenClaw, gdy - chcesz trwałej pamięci, dostępu między urządzeniami i orkiestracji narzędzi. + Claude Code albo Codex do najszybszej bezpośredniej pętli programowania wewnątrz repozytorium. Używaj OpenClaw, gdy + chcesz trwałej pamięci, dostępu z wielu urządzeń 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 aktywny Gateway** (uruchamiany na VPS, interakcja z dowolnego miejsca) - - **Nodes** dla lokalnej przeglądarki/ekranu/kamery/exec + - **Orkiestracja narzędzi** (przeglądarka, pliki, harmonogram, hooki) + - **Zawsze działający Gateway** (uruchomiony na VPS, interakcja z dowolnego miejsca) + - **Node** dla lokalnej przeglądarki/ekranu/kamery/exec Prezentacja: [https://openclaw.ai/showcase](https://openclaw.ai/showcase) @@ -1005,47 +1004,47 @@ pod kątem użycia/rozliczeń i zwiększ limity w razie potrzeby. - Używaj zarządzanych nadpisań zamiast edytować kopię w repozytorium. Umieść zmiany w `~/.openclaw/skills//SKILL.md` (lub dodaj folder przez `skills.load.extraDirs` w `~/.openclaw/openclaw.json`). Priorytet to `/skills` → `/.agents/skills` → `~/.agents/skills` → `~/.openclaw/skills` → dołączone → `skills.load.extraDirs`, więc zarządzane nadpisania nadal mają wyższy priorytet niż dołączone Skills bez dotykania git. Jeśli potrzebujesz Skill zainstalowanego globalnie, ale widocznego tylko dla niektórych agentów, trzymaj współdzieloną kopię w `~/.openclaw/skills` i kontroluj widoczność przez `agents.defaults.skills` oraz `agents.list[].skills`. Tylko zmiany warte wniesienia upstream powinny trafiać do repozytorium i wychodzić jako PR. + Używaj zarządzanych nadpisań zamiast edytowania kopii w repozytorium. Umieść zmiany w `~/.openclaw/skills//SKILL.md` (albo dodaj folder przez `skills.load.extraDirs` w `~/.openclaw/openclaw.json`). Priorytet to `/skills` → `/.agents/skills` → `~/.agents/skills` → `~/.openclaw/skills` → dołączone → `skills.load.extraDirs`, więc zarządzane nadpisania nadal mają pierwszeństwo przed dołączonymi Skills bez dotykania gita. Jeśli potrzebujesz Skill zainstalowanego globalnie, ale widocznego tylko dla niektórych agentów, trzymaj współdzieloną kopię w `~/.openclaw/skills` i kontroluj widoczność za pomocą `agents.defaults.skills` oraz `agents.list[].skills`. Tylko zmiany warte wniesienia upstream powinny trafiać do repozytorium i wychodzić jako PR. - Tak. Dodaj dodatkowe katalogi przez `skills.load.extraDirs` w `~/.openclaw/openclaw.json` (najniższy priorytet). Domyślny priorytet to `/skills` → `/.agents/skills` → `~/.agents/skills` → `~/.openclaw/skills` → dołączone → `skills.load.extraDirs`. `clawhub` domyślnie instaluje do `./skills`, co OpenClaw traktuje jako `/skills` przy 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`. + Tak. Dodaj dodatkowe katalogi przez `skills.load.extraDirs` w `~/.openclaw/openclaw.json` (najniższy priorytet). Domyślny priorytet to `/skills` → `/.agents/skills` → `~/.agents/skills` → `~/.openclaw/skills` → dołączone → `skills.load.extraDirs`. `clawhub` instaluje domyślnie do `./skills`, które OpenClaw traktuje jako `/skills` przy następnej sesji. Jeśli Skill ma być widoczny tylko dla określonych agentów, połącz to z `agents.defaults.skills` albo `agents.list[].skills`. - Dziś obsługiwane wzorce to: + Obecnie obsługiwane wzorce to: - - **Zadania Cron**: izolowane zadania mogą ustawić nadpisanie `model` dla każdego zadania. - - **Subagenci**: kieruj zadania do oddzielnych agentów z różnymi modelami domyślnymi. + - **Zadania Cron**: izolowane zadania mogą ustawiać nadpisanie `model` dla każdego zadania. + - **Sub-agenci**: 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](/pl/automation/cron-jobs), [Routing wieloagentowy](/pl/concepts/multi-agent) oraz [Polecenia slash](/pl/tools/slash-commands). + Zobacz [Zadania Cron](/pl/automation/cron-jobs), [Routing Multi-Agent](/pl/concepts/multi-agent) i [Polecenia slash](/pl/tools/slash-commands). - Używaj **subagentów** do długich lub równoległych zadań. Subagenci działają we własnej sesji, + Używaj **sub-agent** do długich albo równoległych zadań. Sub-agenci działają we własnej sesji, zwracają podsumowanie i utrzymują responsywność głównego czatu. - Poproś bota, aby „uruchomił subagenta dla tego zadania” albo użyj `/subagents`. + Poproś bota o „uruchomienie sub-agenta do tego zadania” albo użyj `/subagents`. Użyj `/status` na czacie, aby zobaczyć, co Gateway robi teraz (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`. + Wskazówka dotycząca tokenów: długie zadania i sub-agenci zużywają tokeny. Jeśli koszt ma znaczenie, ustaw + tańszy model dla sub-agent przez `agents.defaults.subagents.model`. - Dokumentacja: [Subagenci](/pl/tools/subagents), [Zadania w tle](/pl/automation/tasks). + Dokumentacja: [Sub-agenci](/pl/tools/subagents), [Zadania w tle](/pl/automation/tasks). - - Używaj powiązań wątków. Możesz powiązać wątek Discord z subagentem lub celem sesji, aby kolejne wiadomości w tym wątku pozostawały w tej powiązanej sesji. + + Używaj powiązań wątków. Możesz powiązać wątek Discord z sub-agentem albo celem sesji, tak aby kolejne wiadomości w tym wątku pozostawały na tej powiązanej sesji. Podstawowy przepływ: - - Uruchom przez `sessions_spawn` z `thread: true` (i opcjonalnie `mode: "session"` dla trwałej kontynuacji). + - Uruchom przez `sessions_spawn` z `thread: true` (i opcjonalnie `mode: "session"` dla trwałych wiadomości następczych). - Albo powiąż ręcznie przez `/focus `. - Użyj `/agents`, aby sprawdzić stan powiązania. - - Użyj `/session idle ` i `/session max-age `, aby sterować automatycznym odwiązywaniem. + - Użyj `/session idle ` oraz `/session max-age `, aby sterować automatycznym odpinaniem fokusu. - Użyj `/unfocus`, aby odłączyć wątek. Wymagana konfiguracja: @@ -1054,21 +1053,21 @@ pod kątem użycia/rozliczeń i zwiększ limity w razie potrzeby. - Nadpisania Discord: `channels.discord.threadBindings.enabled`, `channels.discord.threadBindings.idleHours`, `channels.discord.threadBindings.maxAgeHours`. - Automatyczne powiązanie przy uruchomieniu: ustaw `channels.discord.threadBindings.spawnSubagentSessions: true`. - Dokumentacja: [Subagenci](/pl/tools/subagents), [Discord](/pl/channels/discord), [Konfiguracja referencyjna](/pl/gateway/configuration-reference), [Polecenia slash](/pl/tools/slash-commands). + Dokumentacja: [Sub-agenci](/pl/tools/subagents), [Discord](/pl/channels/discord), [Odwołanie do konfiguracji](/pl/gateway/configuration-reference), [Polecenia slash](/pl/tools/slash-commands). - - Najpierw sprawdź rozwiązaną trasę requestera: + + Najpierw sprawdź rozstrzygniętą trasę żądającego: - - Dostarczanie completion-mode przez subagenta preferuje każdy powiązany wątek lub trasę rozmowy, jeśli taka istnieje. - - Jeśli źródło ukończenia zawiera tylko kanał, OpenClaw wraca do zapisanej trasy sesji requestera (`lastChannel` / `lastTo` / `lastAccountId`), aby bezpośrednie dostarczenie nadal mogło się powieść. + - Dostarczanie sub-agentów w trybie completion preferuje dowolny powiązany wątek lub trasę konwersacji, jeśli taka istnieje. + - Jeśli źródło completion 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 udać, a wynik wraca wtedy do dostarczenia przez kolejkę sesji zamiast natychmiastowej publikacji na czacie. - - Nieprawidłowe lub nieaktualne cele nadal mogą wymusić powrót do kolejki albo ostateczne niepowodzenie dostarczenia. - - Jeśli ostatnia widoczna odpowiedź asystenta podrzędnego to dokładnie cichy token `NO_REPLY` / `no_reply` albo dokładnie `ANNOUNCE_SKIP`, OpenClaw celowo tłumi ogłoszenie zamiast publikować wcześniejsze, nieaktualne postępy. - - Jeśli podrzędny proces przekroczył limit czasu po samych wywołaniach narzędzi, ogłoszenie może zwinąć to do krótkiego podsumowania częściowych postępów zamiast odtwarzać surowe dane wyjściowe narzędzi. + - Nieprawidłowe lub nieaktualne cele nadal mogą wymusić powrót do kolejki albo ostateczną awarię dostarczenia. + - Jeśli ostatnia widoczna odpowiedź asystenta potomnego to dokładnie cichy token `NO_REPLY` / `no_reply` albo dokładnie `ANNOUNCE_SKIP`, OpenClaw celowo pomija ogłoszenie zamiast publikować starszy, nieaktualny postęp. + - Jeśli proces potomny przekroczył 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 dane wyjściowe narzędzi. - Diagnostyka: + Debugowanie: ```bash openclaw tasks show @@ -1078,17 +1077,17 @@ pod kątem użycia/rozliczeń i zwiększ limity w razie potrzeby. - + Cron działa wewnątrz procesu Gateway. Jeśli Gateway nie działa nieprzerwanie, - zaplanowane zadania nie będą uruchamiane. + zaplanowane zadania nie będą się uruchamiać. 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). + - Potwierdź, że cron jest włączony (`cron.enabled`) i `OPENCLAW_SKIP_CRON` nie jest ustawione. + - Sprawdź, czy Gateway działa 24/7 (bez usypiania/restartów). - Zweryfikuj ustawienia strefy czasowej dla zadania (`--tz` względem strefy czasowej hosta). - Diagnostyka: + Debugowanie: ```bash openclaw cron run @@ -1102,17 +1101,17 @@ pod kątem użycia/rozliczeń i zwiększ limity w razie potrzeby. Najpierw sprawdź tryb dostarczania: - - `--no-deliver` / `delivery.mode: "none"` oznacza, że nie należy oczekiwać żadnej wiadomości zewnętrznej. - - Brakujący lub nieprawidłowy cel ogłoszenia (`channel` / `to`) oznacza, że runner pominął dostarczanie wychodzące. + - `--no-deliver` / `delivery.mode: "none"` oznacza, że nie należy oczekiwać żadnej zewnętrznej wiadomości. + - Brakujący albo nieprawidłowy cel ogłoszenia (`channel` / `to`) oznacza, że runner pominął dostarczenie wychodzące. - Błędy uwierzytelniania kanału (`unauthorized`, `Forbidden`) oznaczają, że runner próbował dostarczyć wiadomość, ale poświadczenia to zablokowały. - - Cichy wynik izolowany (`NO_REPLY` / `no_reply` i nic więcej) jest traktowany jako celowo nienadający się do dostarczenia, więc runner tłumi także awaryjne dostarczanie przez kolejkę. + - Cichy wynik izolowany (`NO_REPLY` / `no_reply`) jest traktowany jako celowo nienadający się do dostarczenia, więc runner również pomija awaryjne dostarczenie przez kolejkę. - Dla izolowanych zadań Cron runner odpowiada za końcowe dostarczenie. Od agenta - oczekuje się zwrócenia podsumowania w zwykłym tekście, które runner wyśle. `--no-deliver` zachowuje - ten wynik wewnętrznie; nie pozwala agentowi wysyłać bezpośrednio za pomocą + W przypadku izolowanych zadań cron runner odpowiada za końcowe dostarczenie. Od agenta + oczekuje się zwrócenia zwykłego podsumowania tekstowego, które runner wyśle. `--no-deliver` zachowuje + ten wynik wewnętrznie; nie pozwala agentowi wysyłać go bezpośrednio przy użyciu message tool. - Diagnostyka: + Debugowanie: ```bash openclaw cron runs --id --limit 50 @@ -1123,25 +1122,25 @@ pod kątem użycia/rozliczeń i zwiększ limity w razie potrzeby. - - Zwykle jest to ścieżka aktywnego przełączania modeli, a nie zduplikowane planowanie. + + Zwykle jest to ścieżka aktywnego przełączania modelu, a nie zduplikowane planowanie. - Izolowany Cron może utrwalić przekazanie modelu w środowisku uruchomieniowym i ponowić próbę, gdy aktywne - uruchomienie rzuci `LiveSessionModelSwitchError`. Ponowienie zachowuje przełączonego - dostawcę/model, a jeśli przełączenie zawierało nowe nadpisanie profilu uwierzytelniania, Cron - utrwala je również przed ponowieniem. + Izolowany cron może utrwalić przekazanie modelu w czasie działania i wykonać ponowienie, gdy aktywne + uruchomienie zwróci `LiveSessionModelSwitchError`. Ponowienie zachowuje przełączonego + dostawcę/model, a jeśli przełączenie zawierało nowe nadpisanie profilu uwierzytelniania, cron + również je utrwala przed ponowieniem. Powiązane reguły wyboru: - - Nadpisanie modelu hooka Gmail wygrywa jako pierwsze, gdy ma zastosowanie. + - Najpierw wygrywa nadpisanie modelu hooka Gmail, gdy ma zastosowanie. - Następnie `model` per zadanie. - - Następnie każde zapisane nadpisanie modelu sesji Cron. - - Następnie zwykły wybór modelu agenta/domyslnego. + - Następnie dowolne zapisane nadpisanie modelu sesji cron. + - Następnie zwykły wybór modelu agenta/domyślny. - Pętla ponowień jest ograniczona. Po próbie początkowej i 2 ponowieniach przełączenia - Cron przerywa zamiast zapętlać się w nieskończoność. + Pętla ponowień jest ograniczona. Po początkowej próbie i 2 ponowieniach przełączenia + cron przerywa działanie zamiast zapętlać się bez końca. - Diagnostyka: + Debugowanie: ```bash openclaw cron runs --id --limit 50 @@ -1152,8 +1151,8 @@ pod kątem użycia/rozliczeń i zwiększ limity w razie potrzeby. - - Używaj natywnych poleceń `openclaw skills` albo umieszczaj Skills w swoim workspace. Interfejs Skills UI dla macOS nie jest dostępny na Linuxie. + + Użyj natywnych poleceń `openclaw skills` albo umieść Skills w swoim workspace. Interfejs Skills dla macOS nie jest dostępny na Linux. Przeglądaj Skills na [https://clawhub.ai](https://clawhub.ai). ```bash @@ -1167,8 +1166,8 @@ pod kątem użycia/rozliczeń i zwiększ limity w razie potrzeby. openclaw skills check ``` - Natywne `openclaw skills install` zapisuje do aktywnego katalogu `skills/` - workspace. Oddzielne CLI `clawhub` instaluj tylko wtedy, gdy chcesz publikować lub + Natywne `openclaw skills install` zapisuje do aktywnego katalogu workspace `skills/`. + Osobny CLI `clawhub` instaluj tylko wtedy, gdy chcesz publikować albo synchronizować własne Skills. W przypadku współdzielonych instalacji między agentami umieść Skill w `~/.openclaw/skills` i użyj `agents.defaults.skills` albo `agents.list[].skills`, jeśli chcesz zawęzić, którzy agenci mogą go widzieć. @@ -1176,32 +1175,32 @@ pod kątem użycia/rozliczeń i zwiększ limity w razie potrzeby. - Tak. Użyj schedulera Gateway: + Tak. Użyj harmonogramu Gateway: - - **Zadania Cron** do zadań zaplanowanych lub cyklicznych (trwają po restartach). - - **Heartbeat** do okresowych kontroli „głównej sesji”. - - **Zadania izolowane** dla autonomicznych agentów, które publikują podsumowania lub dostarczają je do czatów. + - **Zadania Cron** do zadań planowanych albo cyklicznych (trwają po restartach). + - **Heartbeat** do okresowych kontroli „sesji głównej”. + - **Zadania izolowane** dla autonomicznych agentów, które publikują podsumowania albo dostarczają je na czaty. Dokumentacja: [Zadania Cron](/pl/automation/cron-jobs), [Automatyzacja i zadania](/pl/automation), [Heartbeat](/pl/gateway/heartbeat). - - Nie bezpośrednio. Skills macOS są ograniczane przez `metadata.openclaw.os` oraz wymagane binaria, a Skills pojawiają się w system prompt tylko wtedy, gdy kwalifikują się na **hoście Gateway**. Na Linuxie Skills tylko dla `darwin` (takie jak `apple-notes`, `apple-reminders`, `things-mac`) nie zostaną załadowane, chyba że nadpiszesz te ograniczenia. + + Nie bezpośrednio. Skills macOS są ograniczane przez `metadata.openclaw.os` oraz wymagane binaria, a Skills pojawiają się w prompt systemowym tylko wtedy, gdy kwalifikują się na **hoście Gateway**. Na Linux Skills tylko dla `darwin` (takie jak `apple-notes`, `apple-reminders`, `things-mac`) nie zostaną załadowane, chyba że nadpiszesz te ograniczenia. Masz trzy obsługiwane wzorce: **Opcja A - uruchom Gateway na Macu (najprostsze).** - Uruchom Gateway tam, gdzie istnieją binaria macOS, a następnie łącz się z Linuxa w [trybie zdalnym](#gateway-ports-already-running-and-remote-mode) lub przez Tailscale. Skills ładują się normalnie, ponieważ host Gateway to macOS. + Uruchom Gateway tam, gdzie istnieją binaria macOS, a następnie łącz się z Linux w [trybie zdalnym](#gateway-ports-already-running-and-remote-mode) albo przez Tailscale. Skills ładują się normalnie, ponieważ host Gateway to macOS. - **Opcja B - użyj node macOS (bez SSH).** - Uruchom Gateway na Linuxie, sparuj node macOS (aplikacja paska menu) i ustaw **Node Run Commands** na „Always Ask” lub „Always Allow” na Macu. OpenClaw może traktować Skills tylko dla macOS jako kwalifikujące się, gdy wymagane binaria istnieją na node. Agent uruchamia te Skills przez narzędzie `nodes`. Jeśli wybierzesz „Always Ask”, zatwierdzenie „Always Allow” w monicie doda to polecenie do allowlisty. + **Opcja B - użyj Node macOS (bez SSH).** + Uruchom Gateway na Linux, sparuj Node macOS (aplikacja paska menu) i ustaw **Node Run Commands** na „Always Ask” albo „Always Allow” na Macu. OpenClaw może traktować Skills tylko dla macOS jako kwalifikujące się, gdy wymagane binaria istnieją na Node. Agent uruchamia te Skills przez narzędzie `nodes`. Jeśli wybierzesz „Always Ask”, zatwierdzenie „Always Allow” w monicie doda to polecenie do listy dozwolonych. - **Opcja C - pośrednicz binaria macOS przez SSH (zaawansowane).** - Trzymaj Gateway na Linuxie, ale spraw, aby wymagane binaria CLI były rozwiązywane do wrapperów SSH uruchamianych na Macu. Następnie nadpisz Skill tak, aby dopuszczał Linux, dzięki czemu pozostanie kwalifikujący się. + **Opcja C - przekazuj binaria macOS przez SSH (zaawansowane).** + Pozostaw Gateway na Linux, ale spraw, aby wymagane binaria CLI rozwiązywały się do wrapperów SSH uruchamianych na Macu. Następnie nadpisz Skill, aby zezwolić na Linux, dzięki czemu pozostanie kwalifikujący się. - 1. Utwórz wrapper SSH dla binarnego pliku (przykład: `memo` dla Apple Notes): + 1. Utwórz wrapper SSH dla binarium (przykład: `memo` dla Apple Notes): ```bash #!/usr/bin/env bash @@ -1210,35 +1209,35 @@ pod kątem użycia/rozliczeń i zwiększ limity w razie potrzeby. ``` 2. Umieść wrapper w `PATH` na hoście Linux (na przykład `~/bin/memo`). - 3. Nadpisz metadane Skill (workspace lub `~/.openclaw/skills`), aby dopuścić Linux: + 3. Nadpisz metadane Skill (workspace albo `~/.openclaw/skills`), aby zezwolić na Linux: ```markdown --- name: apple-notes - description: Manage Apple Notes via the memo CLI on macOS. + description: Zarządzanie Apple Notes przez CLI memo na macOS. metadata: { "openclaw": { "os": ["darwin", "linux"], "requires": { "bins": ["memo"] } } } --- ``` - 4. Uruchom nową sesję, aby odświeżyć migawkę Skills. + 4. Rozpocznij nową sesję, aby odświeżyć snapshot Skills. - - Obecnie nie jako wbudowaną. + + Obecnie nie jako funkcję wbudowaną. Opcje: - - **Niestandardowy Skill / Plugin:** najlepsze do niezawodnego dostępu do API (zarówno Notion, jak i HeyGen mają API). + - **Niestandardowy Skill / Plugin:** najlepsze rozwiązanie dla niezawodnego dostępu do API (zarówno Notion, jak i HeyGen mają API). - **Automatyzacja przeglądarki:** działa bez kodu, ale jest wolniejsza i bardziej podatna na błędy. - Jeśli chcesz utrzymywać kontekst per klient (przepływy pracy agencji), prosty wzorzec to: + Jeśli chcesz utrzymywać kontekst dla każdego klienta (przepływy pracy agencji), prosty wzorzec to: - Jedna strona Notion na klienta (kontekst + preferencje + aktywna praca). - - Poproś agenta, aby pobierał tę stronę na początku sesji. + - Poproś agenta o pobranie tej strony na początku sesji. - Jeśli chcesz natywnej integracji, otwórz prośbę o funkcję albo zbuduj Skill - dla tych API. + Jeśli chcesz natywną integrację, otwórz zgłoszenie funkcji albo zbuduj Skill + kierowany do tych API. Instalowanie Skills: @@ -1247,11 +1246,11 @@ pod kątem użycia/rozliczeń i zwiększ limity w razie potrzeby. openclaw skills update --all ``` - Natywne instalacje trafiają do aktywnego katalogu `skills/` w workspace. W przypadku współdzielonych Skills między agentami umieść je w `~/.openclaw/skills//SKILL.md`. Jeśli tylko niektórzy agenci mają widzieć współdzieloną instalację, skonfiguruj `agents.defaults.skills` albo `agents.list[].skills`. Niektóre Skills oczekują binariów instalowanych przez Homebrew; na Linuxie oznacza to Linuxbrew (zobacz wpis FAQ o Homebrew na Linuxie powyżej). Zobacz [Skills](/pl/tools/skills), [Konfiguracja Skills](/pl/tools/skills-config) i [ClawHub](/pl/tools/clawhub). + Natywne instalacje trafiają do aktywnego katalogu workspace `skills/`. W przypadku współdzielonych Skills między agentami umieszczaj je w `~/.openclaw/skills//SKILL.md`. Jeśli tylko niektórzy agenci mają widzieć współdzieloną instalację, skonfiguruj `agents.defaults.skills` albo `agents.list[].skills`. Niektóre Skills oczekują binariów zainstalowanych przez Homebrew; na Linux oznacza to Linuxbrew (zobacz wpis FAQ o Homebrew na Linux powyżej). Zobacz [Skills](/pl/tools/skills), [Konfiguracja Skills](/pl/tools/skills-config) i [ClawHub](/pl/tools/clawhub). - + Użyj wbudowanego profilu przeglądarki `user`, który łączy się przez Chrome DevTools MCP: ```bash @@ -1259,20 +1258,20 @@ pod kątem użycia/rozliczeń i zwiększ limity w razie potrzeby. openclaw browser --browser-profile user snapshot ``` - Jeśli chcesz niestandardowej nazwy, utwórz jawny profil MCP: + Jeśli chcesz własnej nazwy, utwórz jawny profil MCP: ```bash openclaw browser create-profile --name chrome-live --driver existing-session openclaw browser --browser-profile chrome-live tabs ``` - Ta ścieżka jest lokalna dla hosta. Jeśli Gateway działa gdzie indziej, uruchom hosta node na komputerze z przeglądarką albo użyj zdalnego CDP. + Ta ścieżka może używać lokalnej przeglądarki hosta albo podłączonego browser node. Jeśli Gateway działa gdzie indziej, uruchom hosta node na komputerze z przeglądarką albo użyj zdalnego CDP. Obecne ograniczenia `existing-session` / `user`: - - działania są oparte na ref, a nie na selektorach CSS - - upload wymaga `ref` / `inputRef` i obecnie obsługuje jeden plik naraz - - `responsebody`, eksport PDF, przechwytywanie pobrań i działania wsadowe nadal wymagają zarządzanej przeglądarki albo surowego profilu CDP + - akcje są oparte na `ref`, a nie na selektorach CSS + - przesyłanie plików wymaga `ref` / `inputRef` i obecnie obsługuje jeden plik naraz + - `responsebody`, eksport PDF, przechwytywanie pobierania i działania wsadowe nadal wymagają zarządzanej przeglądarki albo surowego profilu CDP @@ -1281,16 +1280,16 @@ pod kątem użycia/rozliczeń i zwiększ limity w razie potrzeby. - Tak. Zobacz [Sandboxing](/pl/gateway/sandboxing). Konfigurację specyficzną dla Docker (pełny gateway w Docker albo obrazy sandbox) znajdziesz w [Docker](/pl/install/docker). + Tak. Zobacz [Sandboxing](/pl/gateway/sandboxing). W przypadku konfiguracji specyficznej dla Docker (pełny gateway w Docker albo obrazy sandbox) zobacz [Docker](/pl/install/docker). - Domyślny obraz stawia bezpieczeństwo na pierwszym miejscu i działa jako użytkownik `node`, więc nie + Domyślny obraz stawia na bezpieczeństwo 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łączone CLI: + - Utrwal `/home/node` za pomocą `OPENCLAW_HOME_VOLUME`, aby cache przetrwał. + - Dodaj zależności systemowe do obrazu przez `OPENCLAW_DOCKER_APT_PACKAGES`. + - Zainstaluj przeglądarki Playwright przy użyciu dołączonego CLI: `node /app/node_modules/playwright-core/cli.js install chromium` - Ustaw `PLAYWRIGHT_BROWSERS_PATH` i upewnij się, że ta ścieżka jest utrwalana. @@ -1298,21 +1297,21 @@ pod kątem użycia/rozliczeń i zwiększ limity w razie potrzeby. - - Tak — jeśli Twój ruch prywatny to **DM**, a publiczny to **grupy**. + + Tak — jeśli Twój ruch prywatny to **DM**, a ruch publiczny to **grupy**. - Użyj `agents.defaults.sandbox.mode: "non-main"`, aby sesje grupowe/kanałowe (klucze inne niż główne) działały w Docker, podczas gdy główna sesja DM pozostaje na hoście. Następnie ogranicz, jakie narzędzia są dostępne w sesjach sandboxowanych przez `tools.sandbox.tools`. + Użyj `agents.defaults.sandbox.mode: "non-main"`, aby sesje grup/kanałów (klucze inne niż główne) działały w Docker, podczas gdy główna sesja DM pozostaje na hoście. Następnie ogranicz, które narzędzia są dostępne w sesjach sandboxowanych, przez `tools.sandbox.tools`. - Instrukcja konfiguracji + przykładowa konfiguracja: [Grupy: prywatne DM + publiczne grupy](/pl/channels/groups#pattern-personal-dms-public-groups-single-agent) + Opis konfiguracji krok po kroku + przykładowa konfiguracja: [Grupy: prywatne DM + publiczne grupy](/pl/channels/groups#pattern-personal-dms-public-groups-single-agent) - Referencja kluczowej konfiguracji: [Konfiguracja Gateway](/pl/gateway/configuration-reference#agentsdefaultssandbox) + Kluczowe odwołanie do konfiguracji: [Konfiguracja Gateway](/pl/gateway/configuration-reference#agentsdefaultssandbox) - Ustaw `agents.defaults.sandbox.docker.binds` na `["host:path:mode"]` (np. `"/home/user/src:/src:ro"`). Powiązania globalne + 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. + 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 weryfikuje źródła bind względem zarówno znormalizowanej ścieżki, jak i ścieżki kanonicznej rozwiązanej przez najgłębszego istniejącego przodka. Oznacza to, że ucieczki przez rodzica będącego symlinkiem nadal kończą się bezpiecznym odrzuceniem nawet wtedy, gdy ostatni segment ścieżki jeszcze nie istnieje, a kontrole dozwolonego katalogu głównego nadal obowiązują po rozwiązaniu symlinków. + OpenClaw weryfikuje źródła bind zarówno względem znormalizowanej ścieżki, jak i ścieżki kanonicznej rozwiązanej przez najgłębszego istniejącego przodka. Oznacza to, że ucieczki przez rodzica będącego symlinkiem nadal kończą się bezpiecznym domknięciem nawet wtedy, gdy ostatni segment ścieżki jeszcze nie istnieje, a kontrole dozwolonego katalogu głównego nadal obowiązują po rozwiązaniu symlinka. Przykłady i uwagi dotyczące bezpieczeństwa znajdziesz w [Sandboxing](/pl/gateway/sandboxing#custom-bind-mounts) oraz [Sandbox vs Tool Policy vs Elevated](/pl/gateway/sandbox-vs-tool-policy-vs-elevated#bind-mounts-security-quick-check). @@ -1321,49 +1320,48 @@ pod kątem użycia/rozliczeń i zwiększ limity w razie potrzeby. Pamięć OpenClaw to po prostu pliki Markdown w workspace agenta: - - Dzienne notatki w `memory/YYYY-MM-DD.md` - - Kuratorowane notatki długoterminowe w `MEMORY.md` (tylko sesje główne/prywatne) + - Codzienne notatki w `memory/YYYY-MM-DD.md` + - Wyselekcjonowane notatki długoterminowe w `MEMORY.md` (tylko sesje główne/prywatne) - OpenClaw uruchamia też **ciche opróżnienie pamięci przed Compaction**, aby przypomnieć modelowi, - żeby zapisywał trwałe notatki przed automatycznym Compaction. Działa to tylko wtedy, gdy workspace + OpenClaw uruchamia też **cichy flush pamięci przed Compaction**, aby przypomnieć modelowi + o zapisaniu trwałych notatek przed automatycznym Compaction. To działa tylko wtedy, gdy workspace jest zapisywalny (sandboxy tylko do odczytu pomijają ten krok). Zobacz [Pamięć](/pl/concepts/memory). - + Poproś bota, aby **zapisał fakt do pamięci**. Notatki długoterminowe powinny trafiać do `MEMORY.md`, - a krótkoterminowy kontekst do `memory/YYYY-MM-DD.md`. + a kontekst krótkoterminowy do `memory/YYYY-MM-DD.md`. - To nadal obszar, który ulepszamy. Pomaga przypominanie modelowi, aby zapisywał wspomnienia; - będzie wiedział, co zrobić. Jeśli nadal zapomina, sprawdź, czy Gateway używa tego samego - workspace przy każdym uruchomieniu. + To nadal obszar, który ulepszamy. Pomaga przypominanie modelowi o zapisywaniu wspomnień; + będzie wiedział, co zrobić. Jeśli nadal zapomina, sprawdź, czy Gateway przy każdym + uruchomieniu korzysta z tego samego workspace. Dokumentacja: [Pamięć](/pl/concepts/memory), [Workspace agenta](/pl/concepts/agent-workspace). - + Pliki pamięci znajdują się na dysku i pozostają tam, dopóki ich nie usuniesz. Ograniczeniem jest miejsce na dysku, a nie model. **Kontekst sesji** nadal jest ograniczony przez okno kontekstu - modelu, więc długie rozmowy mogą zostać poddane compaction albo obcięte. Dlatego - istnieje wyszukiwanie pamięci — przywraca do kontekstu tylko istotne fragmenty. + modelu, więc długie rozmowy mogą zostać poddane Compaction albo obcięte. Dlatego istnieje + wyszukiwanie pamięci — przywraca do kontekstu tylko odpowiednie fragmenty. Dokumentacja: [Pamięć](/pl/concepts/memory), [Kontekst](/pl/concepts/context). - Tylko jeśli używasz **embeddingów OpenAI**. OAuth Codex obejmuje czat/completions i + Tylko jeśli używasz **embeddingów OpenAI**. OAuth Codex obejmuje czat/uzupełnienia i **nie** daje dostępu do embeddingów, więc **logowanie przez Codex (OAuth albo - logowanie CLI Codex)** nie pomaga w semantycznym wyszukiwaniu pamięci. Embeddingi OpenAI + logowanie przez Codex CLI)** nie pomaga w semantycznym wyszukiwaniu pamięci. 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 + Jeśli jawnie nie ustawisz dostawcy, OpenClaw automatycznie wybiera dostawcę, gdy potrafi rozwiązać klucz API (profile uwierzytelniania, `models.providers.*.apiKey` albo zmienne środowiskowe). - Preferuje OpenAI, jeśli można rozwiązać klucz OpenAI, w przeciwnym razie Gemini, jeśli można rozwiązać klucz Gemini, - potem Voyage, potem Mistral. Jeśli żaden zdalny klucz nie jest dostępny, wyszukiwanie pamięci - pozostaje wyłączone do czasu jego skonfigurowania. Jeśli masz skonfigurowaną i obecną ścieżkę - lokalnego modelu, OpenClaw + Preferuje OpenAI, jeśli uda się rozwiązać klucz OpenAI, w przeciwnym razie Gemini, jeśli uda się rozwiązać klucz Gemini, + następnie Voyage, a potem 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ę do modelu lokalnego, OpenClaw preferuje `local`. Ollama jest obsługiwana, gdy jawnie ustawisz `memorySearch.provider = "ollama"`. @@ -1371,24 +1369,24 @@ pod kątem użycia/rozliczeń i zwiększ limity w razie potrzeby. `memorySearch.fallback = "none"`). Jeśli chcesz 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 lub local** — - szczegóły konfiguracji znajdziesz w [Pamięć](/pl/concepts/memory). + szczegóły konfiguracji znajdziesz w [Pamięci](/pl/concepts/memory). -## Gdzie rzeczy znajdują się na dysku +## Gdzie co jest przechowywane na dysku 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 workspace znajdują się na hoście Gateway - (`~/.openclaw` + katalog Twojego workspace). - - **Zdalnie z konieczności:** wiadomości wysyłane do dostawców modeli (Anthropic/OpenAI/itd.) trafiają do + - **Domyślnie lokalne:** sesje, pliki pamięci, konfiguracja i workspace znajdują się na hoście Gateway + (`~/.openclaw` + katalog workspace). + - **Zdalne z konieczności:** 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łów nadal przechodzi przez serwery danego kanału. + - **Ty kontrolujesz zakres:** używanie modeli lokalnych utrzymuje prompty na Twoim komputerze, ale ruch kanałów + nadal przechodzi przez serwery danego kanału. Powiązane: [Workspace agenta](/pl/concepts/agent-workspace), [Pamięć](/pl/concepts/memory). @@ -1400,16 +1398,16 @@ pod kątem użycia/rozliczeń i zwiększ limity w razie potrzeby. | Path | Purpose | | --------------------------------------------------------------- | ------------------------------------------------------------------ | | `$OPENCLAW_STATE_DIR/openclaw.json` | Główna konfiguracja (JSON5) | - | `$OPENCLAW_STATE_DIR/credentials/oauth.json` | Import zgodności ze starszym OAuth (kopiowany do profili uwierzytelniania przy pierwszym użyciu) | + | `$OPENCLAW_STATE_DIR/credentials/oauth.json` | Starszy import OAuth (kopiowany do profili uwierzytelniania przy pierwszym użyciu) | | `$OPENCLAW_STATE_DIR/agents//agent/auth-profiles.json` | Profile uwierzytelniania (OAuth, klucze API oraz opcjonalne `keyRef`/`tokenRef`) | - | `$OPENCLAW_STATE_DIR/secrets.json` | Opcjonalny ładunek sekretów opartych na pliku dla dostawców `file` SecretRef | - | `$OPENCLAW_STATE_DIR/agents//agent/auth.json` | Plik zgodności ze starszym systemem (statyczne wpisy `api_key` są czyszczone) | - | `$OPENCLAW_STATE_DIR/credentials/` | Stan dostawców (np. `whatsapp//creds.json`) | + | `$OPENCLAW_STATE_DIR/secrets.json` | Opcjonalny ładunek sekretów oparty na pliku dla dostawców `file` SecretRef | + | `$OPENCLAW_STATE_DIR/agents//agent/auth.json` | Starszy plik zgodności (statyczne wpisy `api_key` są czyszczone) | + | `$OPENCLAW_STATE_DIR/credentials/` | Stan dostawcy (np. `whatsapp//creds.json`) | | `$OPENCLAW_STATE_DIR/agents/` | Stan per agent (agentDir + sesje) | - | `$OPENCLAW_STATE_DIR/agents//sessions/` | Historia rozmów i stan (per agent) | + | `$OPENCLAW_STATE_DIR/agents//sessions/` | Historia konwersacji i stan (per agent) | | `$OPENCLAW_STATE_DIR/agents//sessions/sessions.json` | Metadane sesji (per agent) | - Starsza ścieżka jednoagentowa: `~/.openclaw/agent/*` (migrowana przez `openclaw doctor`). + Starsza ścieżka single-agent: `~/.openclaw/agent/*` (migrowana przez `openclaw doctor`). Twój **workspace** (`AGENTS.md`, pliki pamięci, Skills itd.) jest oddzielny i konfigurowany przez `agents.defaults.workspace` (domyślnie: `~/.openclaw/workspace`). @@ -1421,7 +1419,7 @@ pod kątem użycia/rozliczeń i zwiększ limity w razie potrzeby. - **Workspace (per agent):** `AGENTS.md`, `SOUL.md`, `IDENTITY.md`, `USER.md`, `MEMORY.md` (albo starszy fallback `memory.md`, gdy `MEMORY.md` nie istnieje), `memory/YYYY-MM-DD.md`, opcjonalnie `HEARTBEAT.md`. - - **Katalog stanu (`~/.openclaw`)**: konfiguracja, stan kanałów/dostawców, profile uwierzytelniania, sesje, logi + - **Katalog stanu (`~/.openclaw`)**: konfiguracja, stan kanału/dostawcy, profile uwierzytelniania, sesje, logi oraz współdzielone Skills (`~/.openclaw/skills`). Domyślny workspace to `~/.openclaw/workspace`, konfigurowany przez: @@ -1432,11 +1430,11 @@ pod kątem użycia/rozliczeń i zwiększ limity w razie potrzeby. } ``` - Jeśli bot „zapomina” po restarcie, upewnij się, że Gateway używa tego samego - workspace przy każdym uruchomieniu (i pamiętaj: tryb zdalny używa **workspace hosta gateway**, + Jeśli bot „zapomina” po restarcie, upewnij się, że Gateway przy każdym uruchomieniu używa tego samego + workspace (i pamiętaj: tryb zdalny używa workspace **hosta gateway**, a nie Twojego lokalnego laptopa). - Wskazówka: jeśli chcesz trwałego zachowania lub preferencji, poproś bota, aby **zapisał je w + Wskazówka: jeśli chcesz trwałego zachowania lub preferencji, poproś bota, aby **zapisał to w AGENTS.md albo MEMORY.md**, zamiast polegać na historii czatu. Zobacz [Workspace agenta](/pl/concepts/agent-workspace) i [Pamięć](/pl/concepts/memory). @@ -1444,12 +1442,12 @@ pod kątem użycia/rozliczeń i zwiększ limity w razie potrzeby. - Umieść swój **workspace agenta** w **prywatnym** repozytorium git i twórz kopie zapasowe - w prywatnym miejscu (na przykład w prywatnym GitHub). Dzięki temu zachowasz pamięć + pliki AGENTS/SOUL/USER - i później odtworzysz „umysł” asystenta. + Umieść swój **workspace agenta** w **prywatnym** repozytorium git i twórz jego kopie zapasowe w + prywatnym miejscu (na przykład prywatny GitHub). To obejmuje 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, twórz osobne kopie zapasowe zarówno workspace, jak i katalogu stanu + Jeśli potrzebujesz pełnego odtworzenia, twórz oddzielne kopie zapasowe zarówno workspace, jak i katalogu stanu (zobacz pytanie o migrację powyżej). Dokumentacja: [Workspace agenta](/pl/concepts/agent-workspace). @@ -1463,13 +1461,13 @@ pod kątem użycia/rozliczeń i zwiększ limity w razie potrzeby. Tak. Workspace to **domyślny cwd** i kotwica pamięci, a nie twardy sandbox. Ścieżki względne są rozwiązywane wewnątrz workspace, ale ścieżki bezwzględne mogą uzyskiwać dostęp do innych - lokalizacji hosta, chyba że włączony jest sandboxing. Jeśli potrzebujesz izolacji, użyj - [`agents.defaults.sandbox`](/pl/gateway/sandboxing) albo ustawień sandbox per agent. Jeśli chcesz, aby - repozytorium było domyślnym katalogiem roboczym, ustaw `workspace` + lokalizacji hosta, chyba że sandboxing jest włączony. Jeśli potrzebujesz izolacji, użyj + [`agents.defaults.sandbox`](/pl/gateway/sandboxing) albo ustawień sandbox per agent. Jeśli + chcesz, by repozytorium było domyślnym katalogiem roboczym, wskaż `workspace` tego agenta na katalog główny repozytorium. Repozytorium OpenClaw to tylko kod źródłowy; trzymaj - workspace osobno, chyba że celowo chcesz, aby agent pracował wewnątrz niego. + workspace osobno, chyba że celowo chcesz, by agent w nim pracował. - Przykład (repo jako domyślny cwd): + Przykład (repozytorium jako domyślny cwd): ```json5 { @@ -1484,29 +1482,29 @@ pod kątem użycia/rozliczeń i zwiększ limity w razie potrzeby. - Stan sesji należy do **hosta gateway**. Jeśli jesteś w trybie zdalnym, interesujący Cię magazyn sesji jest na maszynie zdalnej, a nie na Twoim lokalnym laptopie. Zobacz [Zarządzanie sesjami](/pl/concepts/session). + Stan sesji należy do **hosta gateway**. Jeśli jesteś w trybie zdalnym, interesujący Cię magazyn sesji znajduje się na zdalnej maszynie, a nie na Twoim lokalnym laptopie. Zobacz [Zarządzanie sesjami](/pl/concepts/session). ## Podstawy konfiguracji - + OpenClaw odczytuje opcjonalną konfigurację **JSON5** z `$OPENCLAW_CONFIG_PATH` (domyślnie: `~/.openclaw/openclaw.json`): ``` $OPENCLAW_CONFIG_PATH ``` - Jeśli plik nie istnieje, używane są dość bezpieczne wartości domyślne (w tym domyślny workspace `~/.openclaw/workspace`). + Jeśli plik nie istnieje, używane są dość bezpieczne ustawienia domyślne (w tym domyślny workspace `~/.openclaw/workspace`). - - Powiązania nie-loopback **wymagają prawidłowej ścieżki uwierzytelniania gateway**. W praktyce oznacza to: + + Powią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 reverse proxy ze świadomością tożsamości, działającym poza loopback + - `gateway.auth.mode: "trusted-proxy"` za poprawnie skonfigurowanym, świadomym tożsamości reverse proxy innym niż loopback ```json5 { @@ -1524,25 +1522,25 @@ pod kątem użycia/rozliczeń i zwiększ limity w razie potrzeby. - `gateway.remote.token` / `.password` same z siebie **nie** włączają lokalnego uwierzytelniania gateway. - Lokalne ścieżki wywołań mogą używać `gateway.remote.*` jako fallback tylko wtedy, gdy `gateway.auth.*` nie jest ustawione. - - Dla 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 nierozwiązane, rozwiązywanie kończy się bezpiecznym odrzuceniem (brak maskującego zdalnego fallbacku). - - 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. - - Przy `gateway.auth.mode: "trusted-proxy"` reverse proxy loopback na tym samym hoście nadal **nie** spełniają wymagań uwierzytelniania trusted-proxy. Zaufane proxy musi być skonfigurowanym źródłem spoza loopback. + - Dla uwierzytelniania hasłem ustaw zamiast tego `gateway.auth.mode: "password"` wraz z `gateway.auth.password` (lub `OPENCLAW_GATEWAY_PASSWORD`). + - Jeśli `gateway.auth.token` / `gateway.auth.password` jest jawnie skonfigurowane przez SecretRef i nie może zostać rozwiązane, rozwiązanie kończy się bezpiecznym domknięciem (bez maskującego fallbacku zdalnego). + - Konfiguracje wspólnego sekretu Control UI uwierzytelniają się przez `connect.params.auth.token` albo `connect.params.auth.password` (przechowywane w ustawieniach aplikacji/UI). Tryby oparte na tożsamości, takie jak Tailscale Serve albo `trusted-proxy`, używają zamiast tego nagłówków żądań. Unikaj umieszczania wspólnych sekretów w adresach URL. + - Przy `gateway.auth.mode: "trusted-proxy"` reverse proxy loopback na tym samym hoście nadal **nie** spełniają wymagań uwierzytelniania trusted-proxy. Zaufane proxy musi być skonfigurowanym źródłem innym niż loopback. - OpenClaw domyślnie wymusza uwierzytelnianie gateway, również dla loopback. W normalnej domyślnej ścieżce oznacza to uwierzytelnianie tokenem: jeśli nie skonfigurowano jawnej ścieżki uwierzytelniania, uruchomienie gateway przechodzi w tryb tokena i automatycznie go generuje, zapisując go w `gateway.auth.token`, więc **lokalni klienci WS muszą się uwierzytelnić**. To blokuje innym lokalnym procesom możliwość wywoływania Gateway. + OpenClaw domyślnie wymusza uwierzytelnianie gateway, także dla loopback. W normalnej domyślnej ścieżce oznacza to uwierzytelnianie tokenem: jeśli nie skonfigurowano jawnej ścieżki uwierzytelniania, uruchomienie gateway przechodzi w tryb tokena i automatycznie go generuje, zapisując do `gateway.auth.token`, więc **lokalni klienci WS muszą się uwierzytelnić**. To blokuje innym lokalnym procesom wywoływanie Gateway. - Jeśli wolisz inną ścieżkę uwierzytelniania, możesz jawnie wybrać tryb hasła (albo, dla reverse proxy ze świadomością tożsamości spoza loopback, `trusted-proxy`). Jeśli **naprawdę** chcesz otwarty loopback, ustaw jawnie `gateway.auth.mode: "none"` w konfiguracji. Doctor może w dowolnym momencie wygenerować dla Ciebie token: `openclaw doctor --generate-gateway-token`. + Jeśli wolisz inną ścieżkę uwierzytelniania, możesz jawnie wybrać tryb hasła (albo, dla reverse proxy innych niż loopback i świadomych tożsamości, `trusted-proxy`). Jeśli **naprawdę** chcesz otwarty loopback, jawnie ustaw w konfiguracji `gateway.auth.mode: "none"`. Doctor może wygenerować token w dowolnym momencie: `openclaw doctor --generate-gateway-token`. - + Gateway obserwuje konfigurację i obsługuje hot-reload: - - `gateway.reload.mode: "hybrid"` (domyślnie): bezpieczne zmiany stosowane na gorąco, krytyczne wymagają restartu - - obsługiwane są też `hot`, `restart`, `off` + - `gateway.reload.mode: "hybrid"` (domyślnie): bezpieczne zmiany stosowane na gorąco, restart dla zmian krytycznych + - Obsługiwane są też `hot`, `restart`, `off` @@ -1559,9 +1557,9 @@ pod kątem użycia/rozliczeń i zwiększ limity w razie potrzeby. } ``` - - `off`: ukrywa tekst sloganu, ale pozostawia linię tytułu/wersji banera. + - `off`: ukrywa tekst sloganu, ale zachowuje tytuł banera/wiersz wersji. - `default`: za każdym razem używa `All your chats, one OpenClaw.`. - - `random`: rotujące zabawne/sezonowe slogany (domyślne zachowanie). + - `random`: rotujące zabawne/sezonowe slogany (zachowanie domyślne). - Jeśli nie chcesz żadnego banera, ustaw zmienną środowiskową `OPENCLAW_HIDE_BANNER=1`. @@ -1570,7 +1568,7 @@ pod kątem użycia/rozliczeń i zwiększ limity w razie potrzeby. `web_fetch` działa bez klucza API. `web_search` zależy od wybranego dostawcy: - - Dostawcy opierający się na API, tacy jak Brave, Exa, Firecrawl, Gemini, Grok, Kimi, MiniMax Search, Perplexity i Tavily, wymagają standardowej konfiguracji klucza API. + - Dostawcy oparci na API, tacy jak Brave, Exa, Firecrawl, Gemini, Grok, Kimi, MiniMax Search, Perplexity i Tavily, wymagają standardowej 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 to nieoficjalna integracja oparta na HTML. - SearXNG nie wymaga klucza/jest self-hosted; skonfiguruj `SEARXNG_BASE_URL` albo `plugins.entries.searxng.config.webSearch.baseUrl`. @@ -1611,66 +1609,66 @@ pod kątem użycia/rozliczeń i zwiększ limity w razie potrzeby. }, fetch: { enabled: true, - provider: "firecrawl", // opcjonalne; pomiń dla automatycznego wykrywania + provider: "firecrawl", // opcjonalne; pomiń, aby użyć automatycznego wykrywania }, }, }, } ``` - Konfiguracja wyszukiwania w sieci specyficzna dla dostawcy znajduje się teraz pod `plugins.entries..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 web-search specyficzna dla dostawcy znajduje się teraz pod `plugins.entries..config.webSearch.*`. + Starsze ścieżki dostawcy `tools.web.search.*` są jeszcze tymczasowo ładowane dla zgodności, ale nie należy ich używać w nowych konfiguracjach. Konfiguracja fallbacku web-fetch dla Firecrawl znajduje się pod `plugins.entries.firecrawl.config.webFetch.*`. Uwagi: - - Jeśli używasz allowlist, dodaj `web_search`/`web_fetch`/`x_search` albo `group:web`. + - Jeśli używasz list dozwolonych, dodaj `web_search`/`web_fetch`/`x_search` albo `group:web`. - `web_fetch` jest domyślnie włączone (chyba że zostanie jawnie wyłączone). - - Jeśli `tools.web.fetch.provider` zostanie pominięte, OpenClaw automatycznie wykrywa pierwszego gotowego dostawcę fallbacku fetch na podstawie dostępnych poświadczeń. Obecnie dołączonym dostawcą jest Firecrawl. + - Jeśli `tools.web.fetch.provider` zostanie pominięte, OpenClaw automatycznie wykrywa pierwszego gotowego dostawcę fallback dla fetch na podstawie dostępnych poświadczeń. Obecnie dołączonym dostawcą jest Firecrawl. - Demony odczytują zmienne środowiskowe z `~/.openclaw/.env` (albo ze środowiska usługi). Dokumentacja: [Narzędzia webowe](/pl/tools/web). - + `config.apply` zastępuje **całą konfigurację**. Jeśli wyślesz obiekt częściowy, wszystko inne zostanie usunięte. Odzyskiwanie: - - Przywróć z kopii zapasowej (git albo skopiowany `~/.openclaw/openclaw.json`). - - Jeśli nie masz kopii zapasowej, uruchom ponownie `openclaw doctor` i ponownie skonfiguruj kanały/modele. - - Jeśli było to nieoczekiwane, zgłoś błąd i dołącz ostatnią znaną konfigurację albo jakąkolwiek kopię zapasową. - - Lokalny agent kodujący często potrafi odtworzyć działającą konfigurację z logów albo historii. + - Przywróć z kopii zapasowej (git albo skopiowane `~/.openclaw/openclaw.json`). + - Jeśli nie masz kopii zapasowej, ponownie uruchom `openclaw doctor` i skonfiguruj kanały/modele na nowo. + - Jeśli to było nieoczekiwane, zgłoś błąd i dołącz ostatnią znaną konfigurację albo dowolną kopię zapasową. + - Lokalny agent programistyczny często potrafi odtworzyć działającą konfigurację z logów albo historii. - Jak tego unikać: + Jak tego uniknąć: - Używaj `openclaw config set` do małych zmian. - - Używaj `openclaw configure` do interaktywnych edycji. - - Najpierw użyj `config.schema.lookup`, gdy nie masz pewności co do dokładnej ścieżki lub kształtu pola; zwraca płytki węzeł schematu oraz podsumowania bezpośrednich elementów podrzędnych do dalszej analizy. - - Używaj `config.patch` do częściowych edycji przez RPC; zachowaj `config.apply` wyłącznie do pełnej wymiany konfiguracji. - - Jeśli używasz narzędzia `gateway` dostępnego tylko dla ownera z poziomu uruchomienia 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 exec). + - Używaj `openclaw configure` do edycji interaktywnych. + - Najpierw użyj `config.schema.lookup`, gdy nie masz pewności co do dokładnej ścieżki lub kształtu pola; zwraca płytki węzeł schematu oraz podsumowania bezpośrednich elementów podrzędnych do dalszego zagłębiania. + - Używaj `config.patch` do częściowych edycji RPC; `config.apply` zostaw wyłącznie do pełnej wymiany konfiguracji. + - Jeśli używasz narzędzia `gateway` tylko dla właściciela z poziomu uruchomienia 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 exec). - Dokumentacja: [Konfiguracja](/cli/config), [Configure](/cli/configure), [Doctor](/pl/gateway/doctor). + Dokumentacja: [Config](/cli/config), [Configure](/cli/configure), [Doctor](/pl/gateway/doctor). - Typowy wzorzec to **jeden Gateway** (np. Raspberry Pi) plus **nodes** i **agenci**: + Typowy wzorzec to **jeden Gateway** (np. Raspberry Pi) plus **Node** i **agenci**: - **Gateway (centralny):** zarządza kanałami (Signal/WhatsApp), routingiem i sesjami. - - **Nodes (urządzenia):** komputery Mac/iOS/Android łączą się jako urządzenia peryferyjne i udostępniają lokalne narzędzia (`system.run`, `canvas`, `camera`). - - **Agenci (workery):** oddzielne „mózgi”/workspace dla wyspecjalizowanych ról (np. „Hetzner ops”, „Dane osobiste”). + - **Node (urządzenia):** Mac/iOS/Android łączą się jako urządzenia peryferyjne i udostępniają lokalne narzędzia (`system.run`, `canvas`, `camera`). + - **Agenci (workery):** oddzielne „mózgi”/workspace do wyspecjalizowanych ról (np. „Hetzner ops”, „Dane osobiste”). - **Sub-agenci:** uruchamiają pracę w tle z głównego agenta, gdy potrzebujesz równoległości. - **TUI:** łączy się z Gateway i przełącza agentów/sesje. - Dokumentacja: [Nodes](/pl/nodes), [Dostęp zdalny](/pl/gateway/remote), [Routing wieloagentowy](/pl/concepts/multi-agent), [Sub-agenci](/pl/tools/subagents), [TUI](/web/tui). + Dokumentacja: [Node](/pl/nodes), [Dostęp zdalny](/pl/gateway/remote), [Routing Multi-Agent](/pl/concepts/multi-agent), [Sub-agenci](/pl/tools/subagents), [TUI](/web/tui). - - Tak. To opcja konfiguracyjna: + + Tak. To opcja konfiguracji: ```json5 { @@ -1683,9 +1681,9 @@ pod kątem użycia/rozliczeń i zwiększ limity w razie potrzeby. } ``` - Wartość domyślna to `false` (z interfejsem graficznym). Tryb bez interfejsu graficznego częściej uruchamia mechanizmy antybotowe na niektórych stronach. Zobacz [Przeglądarka](/pl/tools/browser). + Domyślnie jest `false` (z interfejsem). Tryb headless częściej uruchamia kontrole antybotowe na niektórych stronach. Zobacz [Przeglądarka](/pl/tools/browser). - Tryb headless używa **tego samego silnika Chromium** i działa przy większości automatyzacji (formularze, kliknięcia, scraping, logowania). Główne różnice: + 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 (jeśli potrzebujesz obrazu, używaj zrzutów ekranu). - Niektóre strony są bardziej restrykcyjne wobec automatyzacji w trybie headless (CAPTCHA, antybot). @@ -1694,48 +1692,48 @@ pod kątem użycia/rozliczeń i zwiększ limity w razie potrzeby. - Ustaw `browser.executablePath` na binarkę Brave (lub dowolnej przeglądarki opartej na Chromium) i uruchom ponownie Gateway. - Pełne przykłady konfiguracji znajdziesz w [Przeglądarka](/pl/tools/browser#use-brave-or-another-chromium-based-browser). + Ustaw `browser.executablePath` na plik binarny Brave (lub dowolnej przeglądarki opartej na Chromium) i uruchom ponownie Gateway. + Pełne przykłady konfiguracji znajdziesz w [Przeglądarce](/pl/tools/browser#use-brave-or-another-chromium-based-browser). -## Zdalne gateway i nodes +## Zdalne gateway i Node - + Wiadomości Telegram są obsługiwane przez **gateway**. Gateway uruchamia agenta i - dopiero potem wywołuje nodes przez **Gateway WebSocket**, gdy potrzebne jest narzędzie node: + dopiero potem wywołuje Node przez **Gateway WebSocket**, gdy potrzebne jest narzędzie Node: Telegram → Gateway → Agent → `node.*` → Node → Gateway → Telegram - Nodes nie widzą przychodzącego ruchu dostawców; otrzymują tylko wywołania RPC node. + Node nie widzą ruchu przychodzącego od dostawców; otrzymują tylko wywołania RPC Node. - Krótka odpowiedź: **sparuj swój komputer jako node**. Gateway działa gdzie indziej, ale może - wywoływać narzędzia `node.*` (ekran, kamera, system) na Twoim lokalnym komputerze przez Gateway WebSocket. + Krótka odpowiedź: **sparuj swój komputer jako Node**. Gateway działa gdzie indziej, ale może + wywoływać narzędzia `node.*` (ekran, kamera, system) na Twojej lokalnej maszynie przez Gateway WebSocket. Typowa konfiguracja: - 1. Uruchom Gateway na stale działającym hoście (VPS/serwer domowy). - 2. Umieść host Gateway i swój komputer w tym samym tailnet. - 3. Upewnij się, że Gateway WS jest osiągalny (bind tailnet albo tunel SSH). + 1. Uruchom Gateway na zawsze włączonym hoście (VPS/serwer domowy). + 2. Umieść host gateway i swój komputer w tej samej tailnet. + 3. Upewnij się, że WS Gateway jest osiągalny (bind tailnet albo tunel SSH). 4. Otwórz lokalnie aplikację macOS i połącz się w trybie **Remote over SSH** (albo bezpośrednio przez tailnet), - aby mogła zarejestrować się jako node. - 5. Zatwierdź node na Gateway: + aby mogła zarejestrować się jako Node. + 5. Zatwierdź Node na Gateway: ```bash openclaw devices list openclaw devices approve ``` - Oddzielny most TCP nie jest wymagany; nodes łączą się przez Gateway WebSocket. + Nie jest wymagany osobny most TCP; Node łączą się przez Gateway WebSocket. - Przypomnienie o bezpieczeństwie: sparowanie node macOS pozwala na `system.run` na tej maszynie. Paryj - tylko zaufane urządzenia i zapoznaj się z [Bezpieczeństwo](/pl/gateway/security). + Przypomnienie o bezpieczeństwie: sparowanie Node macOS pozwala na `system.run` na tej maszynie. Paryj + tylko zaufane urządzenia i zapoznaj się z [Bezpieczeństwem](/pl/gateway/security). - Dokumentacja: [Nodes](/pl/nodes), [Protokół Gateway](/pl/gateway/protocol), [tryb zdalny macOS](/pl/platforms/mac/remote), [Bezpieczeństwo](/pl/gateway/security). + Dokumentacja: [Node](/pl/nodes), [Protokół Gateway](/pl/gateway/protocol), [Tryb zdalny macOS](/pl/platforms/mac/remote), [Bezpieczeństwo](/pl/gateway/security). @@ -1743,14 +1741,14 @@ pod kątem użycia/rozliczeń i zwiększ limity w razie potrzeby. Sprawdź podstawy: - Gateway działa: `openclaw gateway status` - - Kondycja Gateway: `openclaw status` - - Kondycja kanałów: `openclaw channels status` + - Stan gateway: `openclaw status` + - Stan kanałów: `openclaw channels status` - Następnie sprawdź uwierzytelnianie i routing: + Następnie zweryfikuj uwierzytelnianie i routing: - 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 allowlisty (DM albo grupa) obejmują Twoje konto. + - Potwierdź, że Twoje listy dozwolonych (DM albo grupowe) obejmują Twoje konto. Dokumentacja: [Tailscale](/pl/gateway/tailscale), [Dostęp zdalny](/pl/gateway/remote), [Kanały](/pl/channels). @@ -1761,58 +1759,59 @@ pod kątem użycia/rozliczeń i zwiększ limity w razie potrzeby. 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. + Niech Bot A wyśle wiadomość do Bota B, a następnie Bot B odpowie jak zwykle. - **Most CLI (ogólny):** uruchom skrypt, który wywołuje drugi Gateway przez - `openclaw agent --message ... --deliver`, kierując wiadomość do czatu, na którym drugi bot + **Most CLI (generyczny):** uruchom skrypt, który wywołuje drugi Gateway przez + `openclaw agent --message ... --deliver`, kierując wiadomość na czat, którego drugi bot nasłuchuje. Jeśli jeden bot działa na zdalnym VPS, skieruj swoje CLI na ten zdalny Gateway przez SSH/Tailscale (zobacz [Dostęp zdalny](/pl/gateway/remote)). - Przykładowy wzorzec (uruchamiany z maszyny, która może osiągnąć docelowy Gateway): + Przykładowy wzorzec (uruchamiany z maszyny, która może połączyć się z docelowym Gateway): ```bash openclaw agent --message "Hello from local bot" --deliver --channel telegram --reply-to ``` - Wskazówka: dodaj ograniczenie ochronne, aby oba boty nie zapętliły się bez końca (tylko wzmianki, allowlisty kanałów albo reguła „nie odpowiadaj na wiadomości botów”). + Wskazówka: dodaj ograniczenie, aby oba boty nie zapętliły się bez końca (tylko wzmianki, listy dozwolonych kanałów + albo reguła „nie odpowiadaj na wiadomości botów”). - Dokumentacja: [Dostęp zdalny](/pl/gateway/remote), [CLI Agent](/cli/agent), [Wysyłanie przez agenta](/pl/tools/agent-send). + Dokumentacja: [Dostęp zdalny](/pl/gateway/remote), [CLI agenta](/cli/agent), [Wysyłanie przez agenta](/pl/tools/agent-send). Nie. Jeden Gateway może hostować wielu agentów, z których każdy ma własny workspace, domyślne modele - i routing. To normalna konfiguracja i jest znacznie tańsza oraz prostsza niż uruchamianie + i routing. To jest normalna konfiguracja i jest znacznie tańsza oraz prostsza niż uruchamianie jednego VPS na agenta. - Używaj oddzielnych VPS tylko wtedy, gdy potrzebujesz twardej izolacji (granice bezpieczeństwa) albo bardzo - różnych konfiguracji, których nie chcesz współdzielić. W przeciwnym razie zachowaj jeden Gateway i + Używaj oddzielnych VPS tylko wtedy, gdy potrzebujesz twardej izolacji (granic bezpieczeństwa) albo bardzo + różnych konfiguracji, których nie chcesz współdzielić. W przeciwnym razie trzymaj jeden Gateway i używaj wielu agentów albo sub-agentów. - - Tak — nodes to podstawowy sposób uzyskania dostępu do laptopa ze zdalnego Gateway i - dają więcej niż tylko 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 aż nadto), więc częsta - konfiguracja to stale działający host plus Twój laptop jako node. + + Tak — Node to podstawowy sposób na dotarcie do laptopa ze zdalnego Gateway i + oferują więcej niż sam dostęp do powłoki. Gateway działa na macOS/Linux (Windows przez WSL2) i jest + lekki (wystarczy mały VPS albo urządzenie klasy Raspberry Pi; 4 GB RAM to dużo), więc typowa + konfiguracja to zawsze włączony host plus laptop jako Node. - - **Bez przychodzącego SSH.** Nodes łączą się wychodząco z Gateway WebSocket i używają parowania urządzeń. - - **Bezpieczniejsza kontrola wykonywania.** `system.run` jest ograniczane przez allowlisty/zatwierdzenia node na tym laptopie. - - **Więcej narzędzi urządzenia.** Nodes udostępniają `canvas`, `camera` i `screen` oprócz `system.run`. - - **Lokalna automatyzacja przeglądarki.** Zachowaj Gateway na VPS, ale uruchamiaj Chrome lokalnie przez hosta node na laptopie albo podłącz się do lokalnego Chrome na hoście przez Chrome MCP. + - **Bez przychodzącego SSH.** Node łączą się wychodząco z Gateway WebSocket i używają parowania urządzeń. + - **Bezpieczniejsza kontrola wykonywania.** `system.run` jest kontrolowane przez listy dozwolonych/zatwierdzenia Node na tym laptopie. + - **Więcej narzędzi urządzenia.** Node udostępniają `canvas`, `camera` i `screen` oprócz `system.run`. + - **Lokalna automatyzacja przeglądarki.** Trzymaj Gateway na VPS, ale uruchamiaj Chrome lokalnie przez hosta node na laptopie albo dołącz do lokalnego Chrome na hoście przez Chrome MCP. - SSH jest w porządku do doraźnego dostępu do powłoki, ale nodes są prostsze dla ciągłych przepływów pracy agenta i - automatyzacji urządzenia. + SSH nadaje się do doraźnego dostępu do powłoki, ale Node są prostsze w bieżących przepływach pracy agenta i + automatyzacji urządzeń. - Dokumentacja: [Nodes](/pl/nodes), [CLI Nodes](/cli/nodes), [Przeglądarka](/pl/tools/browser). + Dokumentacja: [Node](/pl/nodes), [CLI Node](/cli/nodes), [Przeglądarka](/pl/tools/browser). - - Nie. Na hoście powinien działać tylko **jeden gateway**, chyba że celowo uruchamiasz izolowane profile (zobacz [Wiele gateway](/pl/gateway/multiple-gateways)). Nodes to urządzenia peryferyjne, które łączą - się z gateway (nodes iOS/Android albo tryb „node mode” macOS w aplikacji paska menu). Informacje o bezgłowych - hostach node i sterowaniu z CLI znajdziesz w [CLI hosta node](/cli/node). + + Nie. Na hoście powinien działać tylko **jeden gateway**, chyba że celowo uruchamiasz izolowane profile (zobacz [Wiele gateway](/pl/gateway/multiple-gateways)). Node to urządzenia peryferyjne łączące się + z gateway (Node iOS/Android albo „tryb node” macOS w aplikacji paska menu). Informacje o headless hostach node + i sterowaniu przez CLI znajdziesz w [CLI hosta Node](/cli/node). Pełny restart jest wymagany przy zmianach `gateway`, `discovery` i `canvasHost`. @@ -1823,9 +1822,9 @@ pod kątem użycia/rozliczeń i zwiększ limity w razie potrzeby. - `config.schema.lookup`: sprawdza jedno poddrzewo konfiguracji wraz z jego płytkim węzłem schematu, dopasowaną wskazówką UI i podsumowaniami bezpośrednich elementów podrzędnych przed zapisem - `config.get`: pobiera bieżącą migawkę + hash - - `config.patch`: bezpieczna częściowa aktualizacja (preferowana dla większości edycji RPC); stosuje hot-reload, gdy to możliwe, i restartuje, gdy to wymagane - - `config.apply`: weryfikuje + zastępuje pełną konfigurację; stosuje hot-reload, gdy to możliwe, i restartuje, gdy to wymagane - - Narzędzie środowiska uruchomieniowego `gateway`, dostępne tylko dla ownera, nadal odmawia przepisywania `tools.exec.ask` / `tools.exec.security`; starsze aliasy `tools.bash.*` normalizują się do tych samych chronionych ścieżek exec + - `config.patch`: bezpieczna częściowa aktualizacja (preferowana dla większości edycji RPC); stosuje hot-reload, gdy to możliwe, i wykonuje restart, gdy jest wymagany + - `config.apply`: waliduje + zastępuje całą konfigurację; stosuje hot-reload, gdy to możliwe, i wykonuje restart, gdy jest wymagany + - Narzędzie runtime `gateway`, dostępne tylko dla właściciela, nadal odmawia nadpisywania `tools.exec.ask` / `tools.exec.security`; starsze aliasy `tools.bash.*` normalizują się do tych samych chronionych ścieżek exec @@ -1837,22 +1836,22 @@ pod kątem użycia/rozliczeń i zwiększ limity w razie potrzeby. } ``` - To ustawia Twój workspace i ogranicza, kto może wywołać bota. + To ustawia Twój workspace i ogranicza, kto może uruchamiać bota. - + Minimalne kroki: - 1. **Zainstaluj + zaloguj się na VPS** + 1. **Zainstaluj i zaloguj się na VPS** ```bash curl -fsSL https://tailscale.com/install.sh | sh sudo tailscale up ``` - 2. **Zainstaluj + zaloguj się na swoim Macu** - - Użyj aplikacji Tailscale i zaloguj się do tego samego tailnet. + 2. **Zainstaluj i zaloguj się na Macu** + - Użyj aplikacji Tailscale i zaloguj się do tej samej tailnet. 3. **Włącz MagicDNS (zalecane)** - W konsoli administracyjnej Tailscale włącz MagicDNS, aby VPS miał stabilną nazwę. 4. **Użyj nazwy hosta tailnet** @@ -1865,53 +1864,53 @@ pod kątem użycia/rozliczeń i zwiększ limity w razie potrzeby. openclaw gateway --tailscale serve ``` - Dzięki temu gateway pozostaje zbindowany do loopback i jest udostępniany przez HTTPS przez Tailscale. Zobacz [Tailscale](/pl/gateway/tailscale). + To pozostawia gateway powiązany z loopback i udostępnia HTTPS przez Tailscale. Zobacz [Tailscale](/pl/gateway/tailscale). - - Serve udostępnia **Control UI + WS Gateway**. Nodes łączą się przez ten sam endpoint Gateway WS. + + Serve udostępnia **Gateway Control UI + WS**. Node łączą się przez ten sam endpoint Gateway WS. Zalecana konfiguracja: - 1. **Upewnij się, że VPS i Mac są w tym samym tailnet**. - 2. **Użyj aplikacji macOS w trybie Remote** (cel SSH może być nazwą hosta tailnet). - Aplikacja utworzy tunel portu Gateway i połączy się jako node. - 3. **Zatwierdź node** na gateway: + 1. **Upewnij się, że VPS i Mac są w tej samej tailnet**. + 2. **Użyj aplikacji macOS w trybie Remote** (celem SSH może być nazwa hosta tailnet). + Aplikacja zestawi tunel do portu Gateway i połączy się jako Node. + 3. **Zatwierdź Node** na gateway: ```bash openclaw devices list openclaw devices approve ``` - Dokumentacja: [Protokół Gateway](/pl/gateway/protocol), [Discovery](/pl/gateway/discovery), [tryb zdalny macOS](/pl/platforms/mac/remote). + Dokumentacja: [Protokół Gateway](/pl/gateway/protocol), [Discovery](/pl/gateway/discovery), [Tryb zdalny macOS](/pl/platforms/mac/remote). - - Jeśli potrzebujesz tylko **lokalnych narzędzi** (screen/camera/exec) na drugim laptopie, dodaj go jako - **node**. Pozwala to zachować jeden Gateway i unika zduplikowanej konfiguracji. Lokalne narzędzia node są - obecnie dostępne tylko dla macOS, ale planujemy rozszerzyć je na inne systemy operacyjne. + + Jeśli potrzebujesz tylko **lokalnych narzędzi** (ekran/kamera/exec) na drugim laptopie, dodaj go jako + **Node**. Dzięki temu zachowujesz jeden Gateway i unikasz duplikowania konfiguracji. Lokalne narzędzia node są + obecnie dostępne tylko na macOS, ale planujemy rozszerzyć je na inne systemy operacyjne. - Drugi Gateway instaluj tylko wtedy, gdy potrzebujesz **twardej izolacji** albo dwóch całkowicie oddzielnych botów. + Instaluj drugi Gateway tylko wtedy, gdy potrzebujesz **twardej izolacji** albo dwóch całkowicie oddzielnych botów. - Dokumentacja: [Nodes](/pl/nodes), [CLI Nodes](/cli/nodes), [Wiele gateway](/pl/gateway/multiple-gateways). + Dokumentacja: [Node](/pl/nodes), [CLI Node](/cli/nodes), [Wiele gateway](/pl/gateway/multiple-gateways). -## Zmienne środowiskowe i ładowanie .env +## Zmienne środowiskowe i ładowanie `.env` OpenClaw odczytuje zmienne środowiskowe z procesu nadrzędnego (powłoka, launchd/systemd, CI itd.) i dodatkowo ładuje: - `.env` z bieżącego katalogu roboczego - - globalny awaryjny `.env` z `~/.openclaw/.env` (czyli `$OPENCLAW_STATE_DIR/.env`) + - globalny zapasowy `.env` z `~/.openclaw/.env` (czyli `$OPENCLAW_STATE_DIR/.env`) - Żaden plik `.env` nie nadpisuje istniejących zmiennych środowiskowych. + Żaden z plików `.env` nie nadpisuje istniejących zmiennych środowiskowych. - Możesz też definiować inline zmienne środowiskowe w konfiguracji (stosowane tylko wtedy, gdy brakuje ich w env procesu): + Możesz też zdefiniować zmienne inline w konfiguracji (stosowane tylko wtedy, gdy brakuje ich w środowisku procesu): ```json5 { @@ -1922,15 +1921,15 @@ pod kątem użycia/rozliczeń i zwiększ limity w razie potrzeby. } ``` - Pełny priorytet i źródła znajdziesz w [/environment](/pl/help/environment). + Pełną kolejność pierwszeństwa i źródła znajdziesz w [/environment](/pl/help/environment). - Dwie częste poprawki: + Dwa częste rozwiązania: - 1. Umieść brakujące klucze w `~/.openclaw/.env`, aby były pobierane nawet wtedy, gdy usługa nie dziedziczy env Twojej powłoki. - 2. Włącz import powłoki (wygoda opt-in): + 1. Umieść brakujące klucze w `~/.openclaw/.env`, aby były pobierane nawet wtedy, gdy usługa nie dziedziczy środowiska Twojej powłoki. + 2. Włącz import powłoki (opcjonalne ułatwienie): ```json5 { @@ -1943,18 +1942,18 @@ pod kątem użycia/rozliczeń i zwiększ limity w razie potrzeby. } ``` - To uruchamia Twoją login shell i importuje tylko brakujące oczekiwane klucze (nigdy nie nadpisuje). Odpowiedniki w zmiennych środowiskowych: + To uruchamia Twoją powłokę logowania i importuje tylko brakujące oczekiwane klucze (nigdy nie nadpisuje). Odpowiedniki w zmiennych środowiskowych: `OPENCLAW_LOAD_SHELL_ENV=1`, `OPENCLAW_SHELL_ENV_TIMEOUT_MS=15000`. - - `openclaw models status` raportuje, czy **import env z powłoki** jest włączony. „Shell env: off” + + `openclaw models status` informuje, czy **import środowiska powłoki** jest włączony. „Shell env: off” **nie** oznacza, że brakuje Twoich zmiennych środowiskowych — oznacza tylko, że OpenClaw nie będzie - automatycznie ładować Twojej login shell. + automatycznie ładować Twojej powłoki logowania. - Jeśli Gateway działa jako usługa (launchd/systemd), nie odziedziczy środowiska - Twojej powłoki. Napraw to na jeden z tych sposobów: + Jeśli Gateway działa jako usługa (launchd/systemd), nie będzie dziedziczyć środowiska + Twojej powłoki. Napraw to w jeden z tych sposobów: 1. Umieść token w `~/.openclaw/.env`: @@ -1963,16 +1962,16 @@ pod kątem użycia/rozliczeń i zwiększ limity w razie potrzeby. ``` 2. Albo włącz import powłoki (`env.shellEnv.enabled: true`). - 3. Albo dodaj go do bloku `env` w konfiguracji (stosowane tylko, jeśli go brakuje). + 3. Albo dodaj go do bloku `env` w konfiguracji (stosuje się tylko, gdy go brakuje). - Następnie zrestartuj gateway i sprawdź ponownie: + Następnie uruchom ponownie gateway i sprawdź ponownie: ```bash openclaw models status ``` Tokeny Copilot są odczytywane z `COPILOT_GITHUB_TOKEN` (również `GH_TOKEN` / `GITHUB_TOKEN`). - Zobacz [/concepts/model-providers](/pl/concepts/model-providers) i [/environment](/pl/help/environment). + Zobacz [/concepts/model-providers](/pl/concepts/model-providers) oraz [/environment](/pl/help/environment). @@ -1981,14 +1980,14 @@ pod kątem użycia/rozliczeń i zwiększ limity w razie potrzeby. - Wyślij `/new` lub `/reset` jako samodzielną wiadomość. Zobacz [Zarządzanie sesjami](/pl/concepts/session). + Wyślij `/new` albo `/reset` jako samodzielną wiadomość. Zobacz [Zarządzanie sesjami](/pl/concepts/session). - Sesje mogą wygasać po `session.idleMinutes`, ale ta funkcja jest **domyślnie wyłączona** (wartość domyślna **0**). - Ustaw wartość dodatnią, aby włączyć wygasanie bezczynności. Gdy jest włączone, **następna** + Sesje mogą wygasać po `session.idleMinutes`, ale jest to **domyślnie wyłączone** (domyślnie **0**). + Ustaw wartość dodatnią, aby włączyć wygaszanie po bezczynności. Gdy jest włączone, **następna** wiadomość po okresie bezczynności rozpoczyna nowy identyfikator sesji dla tego klucza czatu. - Nie usuwa to transkryptów — po prostu rozpoczyna nową sesję. + To nie usuwa transkrypcji — po prostu rozpoczyna nową sesję. ```json5 { @@ -2001,40 +2000,40 @@ pod kątem użycia/rozliczeń i zwiększ limity w razie potrzeby. - Tak, przez **routing wieloagentowy** i **sub-agentów**. Możesz utworzyć jednego koordynującego - agenta i kilku agentów roboczych z własnymi workspace i modelami. + Tak, przez **routing multi-agent** i **sub-agentów**. Możesz utworzyć jednego agenta + koordynującego i kilku agentów roboczych z własnymi workspace i modelami. Mimo to najlepiej traktować to jako **zabawny 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 - sobie wyobrażamy, to jeden bot, z którym rozmawiasz, z różnymi sesjami do pracy równoległej. Taki + jest mniej efektywne niż używanie jednego bota z oddzielnymi sesjami. Typowy model, który + sobie wyobrażamy, to jeden bot, z którym rozmawiasz, z różnymi sesjami do pracy równoległej. Ten bot może też w razie potrzeby uruchamiać sub-agentów. - Dokumentacja: [Routing wieloagentowy](/pl/concepts/multi-agent), [Sub-agenci](/pl/tools/subagents), [CLI Agents](/cli/agents). + Dokumentacja: [Routing multi-agent](/pl/concepts/multi-agent), [Sub-agenci](/pl/tools/subagents), [CLI agentów](/cli/agents). Kontekst sesji jest ograniczony przez okno modelu. Długie czaty, duże dane wyjściowe narzędzi albo wiele - plików mogą wywołać compaction albo obcięcie. + plików mogą wywołać Compaction albo obcięcie. Co pomaga: - - Poproś bota, aby podsumował bieżący stan i zapisał go do pliku. - - Używaj `/compact` przed długimi zadaniami i `/new` przy zmianie tematu. + - Poproś bota o podsumowanie bieżącego stanu i zapisanie go do pliku. + - Użyj `/compact` przed długimi zadaniami i `/new` przy zmianie tematu. - Trzymaj ważny kontekst w workspace i poproś bota, aby go ponownie odczytał. - - Używaj sub-agentów do długiej lub równoległej pracy, aby główny czat pozostawał mniejszy. + - Używaj sub-agentów do długiej albo równoległej pracy, aby główny czat pozostawał mniejszy. - Wybierz model z większym oknem kontekstu, jeśli to zdarza się często. - + Użyj polecenia reset: ```bash openclaw reset ``` - Nieinteraktywny pełny reset: + Pełny reset nieinteraktywny: ```bash openclaw reset --scope full --yes --non-interactive @@ -2048,14 +2047,14 @@ pod kątem użycia/rozliczeń i zwiększ limity w razie potrzeby. Uwagi: - - Onboarding oferuje też **Reset**, jeśli wykryje istniejącą konfigurację. Zobacz [Onboarding (CLI)](/pl/start/wizard). - - Jeśli używałeś/używałaś profili (`--profile` / `OPENCLAW_PROFILE`), zresetuj każdy katalog stanu (domyślne to `~/.openclaw-`). - - Reset dla developmentu: `openclaw gateway --dev --reset` (tylko development; czyści konfigurację deweloperską + poświadczenia + sesje + workspace). + - Wdrażanie oferuje też **Reset**, jeśli wykryje istniejącą konfigurację. Zobacz [Wdrażanie (CLI)](/pl/start/wizard). + - Jeśli używasz profili (`--profile` / `OPENCLAW_PROFILE`), zresetuj każdy katalog stanu (domyślnie to `~/.openclaw-`). + - Reset deweloperski: `openclaw gateway --dev --reset` (tylko dla środowiska deweloperskiego; czyści konfigurację dev + poświadczenia + sesje + workspace). - - Użyj jednej z tych opcji: + + Użyj jednego z tych sposobów: - **Compaction** (zachowuje rozmowę, ale podsumowuje starsze tury): @@ -2072,26 +2071,26 @@ pod kątem użycia/rozliczeń i zwiększ limity w razie potrzeby. /reset ``` - Jeśli to się powtarza: + Jeśli problem się powtarza: - - Włącz lub dostrój **pruning sesji** (`agents.defaults.contextPruning`), aby przycinać stare dane wyjściowe narzędzi. - - Używaj modelu z większym oknem kontekstu. + - Włącz albo dostrój **przycinanie sesji** (`agents.defaults.contextPruning`), aby obcinać stare dane wyjściowe narzędzi. + - Użyj modelu z większym oknem kontekstu. - Dokumentacja: [Compaction](/pl/concepts/compaction), [Pruning sesji](/pl/concepts/session-pruning), [Zarządzanie sesjami](/pl/concepts/session). + Dokumentacja: [Compaction](/pl/concepts/compaction), [Przycinanie sesji](/pl/concepts/session-pruning), [Zarządzanie sesjami](/pl/concepts/session). - - To błąd walidacji dostawcy: model zwrócił blok `tool_use` bez wymaganego - `input`. Zwykle oznacza to, że historia sesji jest nieaktualna lub uszkodzona (często po długich wątkach + + To błąd walidacji dostawcy: model wygenerował blok `tool_use` bez wymaganego + `input`. Zwykle oznacza to, że historia sesji jest nieaktualna albo uszkodzona (często po długich wątkach albo zmianie narzędzia/schematu). - Naprawa: rozpocznij nową sesję za pomocą `/new` (samodzielna wiadomość). + Rozwiązanie: rozpocznij nową sesję przez `/new` (samodzielna wiadomość). - - Heartbeat uruchamia się domyślnie co **30 min** (**1 h** przy użyciu uwierzytelniania OAuth). Dostosuj lub wyłącz go: + + Heartbeat uruchamia się domyślnie co **30m** (**1h** przy użyciu uwierzytelniania OAuth). Dostosuj albo wyłącz: ```json5 { @@ -2105,9 +2104,9 @@ pod kątem użycia/rozliczeń i zwiększ limity w razie potrzeby. } ``` - Jeśli `HEARTBEAT.md` istnieje, ale jest w praktyce pusty (tylko puste linie i nagłówki - Markdown, takie jak `# Heading`), OpenClaw pomija uruchomienie heartbeat, aby oszczędzać wywołania API. - Jeśli pliku nie ma, heartbeat nadal działa i model decyduje, co zrobić. + Jeśli `HEARTBEAT.md` istnieje, ale jest w praktyce puste (tylko puste linie i nagłówki + markdown, takie jak `# Heading`), OpenClaw pomija uruchomienie heartbeat, aby oszczędzić wywołania API. + Jeśli pliku nie ma, heartbeat nadal się uruchamia, a model decyduje, co zrobić. Nadpisania per agent używają `agents.list[].heartbeat`. Dokumentacja: [Heartbeat](/pl/gateway/heartbeat). @@ -2115,9 +2114,9 @@ pod kątem użycia/rozliczeń i zwiększ limity w razie potrzeby. 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 do czasu zezwolenia nadawcom (`groupPolicy: "allowlist"`). + Domyślnie odpowiedzi grupowe są blokowane, dopóki nie zezwolisz nadawcom (`groupPolicy: "allowlist"`). - Jeśli chcesz, aby tylko **Ty** móc wywoływać odpowiedzi w grupie: + Jeśli chcesz, aby tylko **Ty** móc uruchamiać odpowiedzi grupowe: ```json5 { @@ -2133,16 +2132,16 @@ pod kątem użycia/rozliczeń i zwiększ limity w razie potrzeby. - Opcja 1 (najszybciej): śledź logi i wyślij wiadomość testową w grupie: + Opcja 1 (najszybsza): śledź logi i wyślij wiadomość testową w grupie: ```bash openclaw logs --follow --json ``` - Szukaj `chatId` (lub `from`) kończącego się na `@g.us`, na przykład: + Szukaj `chatId` (albo `from`) kończącego się na `@g.us`, na przykład: `1234567890-1234567890@g.us`. - Opcja 2 (jeśli już skonfigurowane/na allowlist): wylistuj grupy z konfiguracji: + Opcja 2 (jeśli już skonfigurowano/dodano do listy dozwolonych): wyświetl grupy z konfiguracji: ```bash openclaw directory groups list --channel whatsapp @@ -2155,54 +2154,54 @@ pod kątem użycia/rozliczeń i zwiększ limity w razie potrzeby. Dwie częste przyczyny: - - Ograniczanie przez wzmianki jest włączone (domyślnie). Musisz oznaczyć bota przez @mention (albo dopasować `mentionPatterns`). - - Skonfigurowałeś/-aś `channels.whatsapp.groups` bez `"*"`, a grupa nie znajduje się na allowliście. + - Włączone jest blokowanie przez wzmianki (domyślnie). Musisz oznaczyć bota przez @mention (albo dopasować `mentionPatterns`). + - Skonfigurowano `channels.whatsapp.groups` bez `"*"`, a grupa nie znajduje się na liście dozwolonych. Zobacz [Grupy](/pl/channels/groups) i [Wiadomości grupowe](/pl/channels/group-messages). - Czaty bezpośrednie są domyślnie zwijane do głównej sesji. Grupy/kanały mają własne klucze sesji, a tematy Telegram / wątki Discord to oddzielne sesje. Zobacz [Grupy](/pl/channels/groups) i [Wiadomości grupowe](/pl/channels/group-messages). + Czaty bezpośrednie są domyślnie zwijane do sesji głównej. Grupy/kanały mają własne klucze sesji, a tematy Telegram / wątki Discord są oddzielnymi sesjami. Zobacz [Grupy](/pl/channels/groups) i [Wiadomości grupowe](/pl/channels/group-messages). - Brak sztywnych limitów. Dziesiątki (a nawet setki) są w porządku, ale zwracaj uwagę na: + Nie ma twardych limitów. Dziesiątki (a nawet setki) są w porządku, ale zwracaj uwagę na: - - **Przyrost danych na dysku:** sesje + transkrypty znajdują się w `~/.openclaw/agents//sessions/`. - - **Koszt tokenów:** więcej agentów oznacza większe równoległe użycie modeli. + - **Przyrost miejsca na dysku:** sesje + transkrypcje znajdują się w `~/.openclaw/agents//sessions/`. + - **Koszt tokenów:** więcej agentów oznacza większe równoczesne użycie modeli. - **Narzut operacyjny:** profile uwierzytelniania per agent, workspace i routing kanałów. Wskazówki: - - Zachowaj jeden **aktywny** workspace na agenta (`agents.defaults.workspace`). - - Przycinaj stare sesje (usuwaj wpisy JSONL lub wpisy magazynu), jeśli zużycie dysku rośnie. - - Używaj `openclaw doctor`, aby wykrywać osierocone workspace i niedopasowania profili. + - Zachowuj jeden **aktywny** workspace na agenta (`agents.defaults.workspace`). + - Czyść stare sesje (usuń wpisy JSONL albo wpisy magazynu), jeśli rośnie zużycie dysku. + - Używaj `openclaw doctor`, aby wykrywać zbędne workspace i niezgodności profili. - - Tak. Użyj **routingu wieloagentowego**, aby uruchamiać wiele odizolowanych agentów i kierować wiadomości przychodzące według - kanału/konta/peer. Slack jest obsługiwany jako kanał i może być przypisywany do określonych agentów. + + Tak. Użyj **Routingu Multi-Agent**, aby uruchamiać wiele izolowanych agentów i kierować wiadomości przychodzące według + kanału/konta/peer. Slack jest obsługiwany jako kanał i może być przypisywany do konkretnych agentów. - Dostęp do przeglądarki jest potężny, ale nie oznacza „zrób wszystko, co może człowiek” — mechanizmy antybotowe, CAPTCHA i MFA nadal mogą + Dostęp do przeglądarki jest potężny, ale nie oznacza „zrób wszystko, co potrafi człowiek” — antyboty, CAPTCHA i MFA nadal mogą blokować automatyzację. Aby uzyskać najbardziej niezawodne sterowanie przeglądarką, używaj lokalnego Chrome MCP na hoście albo CDP na maszynie, która faktycznie uruchamia przeglądarkę. Konfiguracja zgodna z dobrymi praktykami: - - Host Gateway działający zawsze (VPS/Mac mini). + - Zawsze włączony host Gateway (VPS/Mac mini). - Jeden agent na rolę (powiązania). - Kanały Slack przypisane do tych agentów. - - Lokalna przeglądarka przez Chrome MCP albo node, gdy jest potrzebna. + - Lokalna przeglądarka przez Chrome MCP albo Node, gdy jest potrzebna. - Dokumentacja: [Routing wieloagentowy](/pl/concepts/multi-agent), [Slack](/pl/channels/slack), - [Przeglądarka](/pl/tools/browser), [Nodes](/pl/nodes). + Dokumentacja: [Routing Multi-Agent](/pl/concepts/multi-agent), [Slack](/pl/channels/slack), + [Przeglądarka](/pl/tools/browser), [Node](/pl/nodes). -## Modele: wartości domyślne, wybór, aliasy, przełączanie +## Modele: ustawienia domyślne, wybór, aliasy, przełączanie @@ -2212,46 +2211,46 @@ pod kątem użycia/rozliczeń i zwiększ limity w razie potrzeby. agents.defaults.model.primary ``` - Do modeli odwołuje się jako `provider/model` (przykład: `openai/gpt-5.4`). Jeśli pominiesz dostawcę, OpenClaw najpierw próbuje aliasu, potem unikalnego dopasowania skonfigurowanego dostawcy dla tego dokładnego identyfikatora modelu, a dopiero potem wraca do skonfigurowanego dostawcy domyślnego jako przestarzałej ścieżki zgodności. Jeśli ten dostawca nie udostępnia już skonfigurowanego modelu domyślnego, OpenClaw wraca do pierwszego skonfigurowanego dostawcy/modelu zamiast pokazywać nieaktualny domyślny model z usuniętego dostawcy. Nadal powinieneś/powinnaś **jawnie** ustawiać `provider/model`. + Modele są wskazywane jako `provider/model` (przykład: `openai/gpt-5.4`). Jeśli pominiesz dostawcę, OpenClaw najpierw spróbuje aliasu, potem jednoznacznego dopasowania do skonfigurowanego dostawcy dla tego dokładnego identyfikatora modelu, a dopiero potem użyje skonfigurowanego domyślnego dostawcy jako przestarzałej ścieżki zgodności. Jeśli ten dostawca nie udostępnia już skonfigurowanego modelu domyślnego, OpenClaw przechodzi do pierwszego skonfigurowanego dostawcy/modelu zamiast pokazywać nieaktualny domyślny model z usuniętego dostawcy. Nadal jednak powinno się **jawnie** ustawiać `provider/model`. - **Zalecany model domyślny:** używaj najmocniejszego modelu najnowszej generacji dostępnego w Twoim stosie dostawców. - **Dla agentów z narzędziami lub z niezaufanym wejściem:** stawiaj siłę modelu ponad koszt. - **Do rutynowego/niskiego ryzyka czatu:** używaj tańszych modeli zapasowych i kieruj według roli agenta. + **Zalecany domyślny wybór:** używaj najsilniejszego modelu najnowszej generacji dostępnego w Twoim stosie dostawców. + **Dla agentów z włączonymi narzędziami albo z niezaufanym wejściem:** stawiaj siłę modelu ponad koszt. + **Do rutynowego/niskiego ryzyka czatu:** używaj tańszych modeli zapasowych i kieruj ruchem według roli agenta. MiniMax ma własną dokumentację: [MiniMax](/pl/providers/minimax) oraz [Modele lokalne](/pl/gateway/local-models). - Zasada praktyczna: używaj **najlepszego modelu, na jaki Cię stać** do zadań wysokiej stawki, a tańszego - modelu do rutynowego czatu lub podsumowań. Możesz kierować modele per agent i używać sub-agentów do - równoległego wykonywania długich zadań (każdy sub-agent zużywa tokeny). Zobacz [Modele](/pl/concepts/models) i - [Sub-agenci](/pl/tools/subagents). + Zasada praktyczna: używaj **najlepszego modelu, na jaki Cię stać** do zadań wysokiej wagi, a tańszego + modelu do rutynowego czatu albo podsumowań. Możesz routować modele per agent i używać sub-agentów do + pracy równoległej przy długich zadaniach (każdy sub-agent zużywa tokeny). Zobacz [Modele](/pl/concepts/models) oraz + [Sub-agentów](/pl/tools/subagents). - Mocne ostrzeżenie: słabsze/nadmiernie skwantyzowane modele są bardziej podatne na prompt - injection i niebezpieczne zachowania. Zobacz [Bezpieczeństwo](/pl/gateway/security). + Mocne ostrzeżenie: słabsze/nadmiernie kwantyzowane modele są bardziej podatne na prompt + injection i niebezpieczne zachowanie. Zobacz [Bezpieczeństwo](/pl/gateway/security). Więcej kontekstu: [Modele](/pl/concepts/models). - - Używaj **poleceń modelu** albo edytuj tylko pola **modelu**. Unikaj pełnej wymiany konfiguracji. + + Używaj **poleceń modeli** albo edytuj tylko pola **modelu**. Unikaj pełnej wymiany konfiguracji. Bezpieczne opcje: - `/model` na czacie (szybko, per sesja) - `openclaw models set ...` (aktualizuje tylko konfigurację modelu) - `openclaw configure --section model` (interaktywnie) - - edytuj `agents.defaults.model` w `~/.openclaw/openclaw.json` + - edycja `agents.defaults.model` w `~/.openclaw/openclaw.json` - Unikaj `config.apply` z obiektem częściowym, chyba że chcesz zastąpić całą konfigurację. - W przypadku edycji RPC najpierw sprawdzaj przez `config.schema.lookup` i preferuj `config.patch`. Ładunek lookup zawiera znormalizowaną ścieżkę, płytką dokumentację/ograniczenia schematu oraz podsumowania bezpośrednich elementów podrzędnych + Unikaj `config.apply` z obiektem częściowym, chyba że zamierzasz zastąpić całą konfigurację. + W przypadku edycji RPC najpierw sprawdź przez `config.schema.lookup` i preferuj `config.patch`. Ładunek lookup zwraca znormalizowaną ścieżkę, płytką dokumentację/ograniczenia schematu oraz podsumowania bezpośrednich elementów podrzędnych dla częściowych aktualizacji. - Jeśli nadpisałeś/-aś konfigurację, przywróć ją z kopii zapasowej albo ponownie uruchom `openclaw doctor`, aby ją naprawić. + Jeśli nadpisałeś/nadpisałaś konfigurację, przywróć ją z kopii zapasowej albo ponownie uruchom `openclaw doctor`, aby ją naprawić. - Dokumentacja: [Modele](/pl/concepts/models), [Configure](/cli/configure), [Konfiguracja](/cli/config), [Doctor](/pl/gateway/doctor). + Dokumentacja: [Modele](/pl/concepts/models), [Configure](/cli/configure), [Config](/cli/config), [Doctor](/pl/gateway/doctor). @@ -2261,20 +2260,20 @@ pod kątem użycia/rozliczeń i zwiększ limity w razie potrzeby. Najszybsza konfiguracja: 1. Zainstaluj Ollama z `https://ollama.com/download` - 2. Pobierz lokalny model, na przykład `ollama pull gemma4` - 3. Jeśli chcesz też modele chmurowe, uruchom `ollama signin` + 2. Pobierz model lokalny, na przykład `ollama pull gemma4` + 3. Jeśli chcesz również modeli chmurowych, uruchom `ollama signin` 4. Uruchom `openclaw onboard` i wybierz `Ollama` 5. Wybierz `Local` albo `Cloud + Local` Uwagi: - - `Cloud + Local` daje Ci modele chmurowe plus Twoje lokalne modele Ollama - - modele chmurowe, takie jak `kimi-k2.5:cloud`, nie wymagają lokalnego pobrania - - do ręcznego przełączania używaj `openclaw models list` oraz `openclaw models set ollama/` + - `Cloud + Local` daje Ci modele chmurowe oraz lokalne modele Ollama + - modele chmurowe, takie jak `kimi-k2.5:cloud`, nie wymagają lokalnego pobierania + - do ręcznego przełączania użyj `openclaw models list` i `openclaw models set ollama/` - Uwaga dotycząca bezpieczeństwa: mniejsze lub mocno skwantyzowane modele są bardziej podatne na prompt + Uwaga dotycząca bezpieczeństwa: mniejsze albo silnie kwantyzowane modele są bardziej podatne na prompt injection. Zdecydowanie zalecamy **duże modele** dla każdego bota, który może używać narzędzi. - Jeśli mimo to chcesz małych modeli, włącz sandboxing i ścisłe allowlisty narzędzi. + Jeśli mimo to chcesz małych modeli, włącz sandboxing i ścisłe listy dozwolonych narzędzi. Dokumentacja: [Ollama](/pl/providers/ollama), [Modele lokalne](/pl/gateway/local-models), [Dostawcy modeli](/pl/concepts/model-providers), [Bezpieczeństwo](/pl/gateway/security), @@ -2285,7 +2284,7 @@ pod kątem użycia/rozliczeń i zwiększ limity w razie potrzeby. - Te wdrożenia mogą się różnić i zmieniać w czasie; nie ma stałej rekomendacji dostawcy. - Sprawdź bieżące ustawienie środowiska uruchomieniowego na każdym gateway przez `openclaw models status`. - - W przypadku agentów wrażliwych na bezpieczeństwo/z włączonymi narzędziami używaj najmocniejszego modelu najnowszej generacji. + - W przypadku agentów wrażliwych na bezpieczeństwo/z włączonymi narzędziami używaj najsilniejszego modelu najnowszej generacji. @@ -2301,11 +2300,11 @@ pod kątem użycia/rozliczeń i zwiększ limity w razie potrzeby. /model gemini-flash-lite ``` - To są wbudowane aliasy. Niestandardowe aliasy można dodać przez `agents.defaults.models`. + To są wbudowane aliasy. Własne aliasy można dodać przez `agents.defaults.models`. Dostępne modele możesz wyświetlić przez `/model`, `/model list` albo `/model status`. - `/model` (oraz `/model list`) pokazuje zwięzły, numerowany selektor. Wybieraj po numerze: + `/model` (i `/model list`) pokazuje kompaktowy numerowany wybierak. Wybierz po numerze: ``` /model 3 @@ -2318,28 +2317,28 @@ pod kątem użycia/rozliczeń i zwiększ limity w razie potrzeby. /model opus@anthropic:work ``` - Wskazówka: `/model status` pokazuje, który agent jest aktywny, który plik `auth-profiles.json` jest używany i który profil uwierzytelniania zostanie wypróbowany jako następny. - Pokazuje też skonfigurowany endpoint dostawcy (`baseUrl`) oraz tryb API (`api`), gdy są dostępne. + Wskazówka: `/model status` pokazuje, który agent jest aktywny, który plik `auth-profiles.json` jest używany oraz który profil uwierzytelniania zostanie wypróbowany jako następny. + Pokazuje też skonfigurowany endpoint dostawcy (`baseUrl`) i tryb API (`api`), gdy są dostępne. **Jak odpiąć profil ustawiony przez @profile?** - Uruchom ponownie `/model` **bez** sufiksu `@profile`: + Ponownie uruchom `/model` **bez** przyrostka `@profile`: ``` /model anthropic/claude-opus-4-6 ``` - Jeśli chcesz wrócić do wartości domyślnej, wybierz ją z `/model` (albo wyślij `/model `). + Jeśli chcesz wrócić do domyślnego ustawienia, wybierz je z `/model` (albo wyślij `/model `). Użyj `/model status`, aby potwierdzić, który profil uwierzytelniania jest aktywny. - + Tak. Ustaw jeden jako domyślny i przełączaj w razie potrzeby: - - **Szybkie przełączanie (per sesja):** `/model gpt-5.4` do codziennych zadań, `/model openai-codex/gpt-5.4` do kodowania z Codex OAuth. - - **Domyślny + przełączanie:** ustaw `agents.defaults.model.primary` na `openai/gpt-5.4`, a potem przełączaj na `openai-codex/gpt-5.4` podczas kodowania (albo odwrotnie). - - **Sub-agenci:** kieruj zadania kodowania do sub-agentów z innym modelem domyślnym. + - **Szybkie przełączanie (per sesja):** `/model gpt-5.4` do codziennych zadań, `/model openai-codex/gpt-5.4` do programowania z Codex OAuth. + - **Domyślny + przełączanie:** ustaw `agents.defaults.model.primary` na `openai/gpt-5.4`, a następnie przełącz na `openai-codex/gpt-5.4` podczas programowania (albo odwrotnie). + - **Sub-agenci:** kieruj zadania programistyczne do sub-agentów z innym modelem domyślnym. Zobacz [Modele](/pl/concepts/models) i [Polecenia slash](/pl/tools/slash-commands). @@ -2350,7 +2349,7 @@ pod kątem użycia/rozliczeń i zwiększ limity w razie potrzeby. - **Per sesja:** wyślij `/fast on`, gdy sesja używa `openai/gpt-5.4` albo `openai-codex/gpt-5.4`. - **Domyślnie per model:** ustaw `agents.defaults.models["openai/gpt-5.4"].params.fastMode` na `true`. - - **Także dla Codex OAuth:** jeśli używasz również `openai-codex/gpt-5.4`, ustaw tam tę samą flagę. + - **Również dla Codex OAuth:** jeśli używasz też `openai-codex/gpt-5.4`, ustaw tam tę samą flagę. Przykład: @@ -2375,36 +2374,36 @@ pod kątem użycia/rozliczeń i zwiększ limity w razie potrzeby. } ``` - Dla OpenAI fast mode mapuje się na `service_tier = "priority"` przy obsługiwanych natywnych żądaniach Responses. Sesyjne nadpisania `/fast` mają wyższy priorytet niż wartości domyślne z konfiguracji. + W przypadku OpenAI fast mode mapuje się do `service_tier = "priority"` przy obsługiwanych natywnych żądaniach Responses. Sesyjne nadpisania `/fast` mają pierwszeństwo przed ustawieniami domyślnymi z konfiguracji. Zobacz [Thinking i fast mode](/pl/tools/thinking) oraz [OpenAI fast mode](/pl/providers/openai#openai-fast-mode). - - Jeśli ustawione jest `agents.defaults.models`, staje się ono **allowlistą** dla `/model` i wszelkich + + Jeśli ustawiono `agents.defaults.models`, staje się to **listą dozwolonych** dla `/model` i wszystkich nadpisań sesji. Wybranie modelu, którego nie ma na tej liście, zwraca: ``` Model "provider/model" is not allowed. Use /model to list available models. ``` - Ten błąd jest zwracany **zamiast** normalnej odpowiedzi. Naprawa: dodaj model do - `agents.defaults.models`, usuń allowlistę albo wybierz model z `/model list`. + Ten błąd jest zwracany **zamiast** zwykłej odpowiedzi. Rozwiązanie: dodaj model do + `agents.defaults.models`, usuń listę dozwolonych albo wybierz model z `/model list`. - - To oznacza, że **dostawca nie jest skonfigurowany** (nie znaleziono konfiguracji dostawcy MiniMax ani - profilu uwierzytelniania), więc modelu nie da się rozwiązać. + + To oznacza, że **dostawca nie jest skonfigurowany** (nie znaleziono konfiguracji dostawcy MiniMax ani profilu + uwierzytelniania), więc modelu nie da się rozwiązać. Lista kontrolna naprawy: - 1. Zaktualizuj do bieżącej wersji OpenClaw (albo uruchamiaj ze źródła `main`), a następnie zrestartuj gateway. + 1. Zaktualizuj do bieżącej wersji OpenClaw (albo uruchamiaj ze źródeł z `main`), a następnie uruchom ponownie gateway. 2. Upewnij się, że MiniMax jest skonfigurowany (kreator albo JSON) albo że uwierzytelnianie MiniMax - istnieje w env/profilach uwierzytelniania, aby pasujący dostawca mógł zostać wstrzyknięty - (`MINIMAX_API_KEY` dla `minimax`, `MINIMAX_OAUTH_TOKEN` albo zapisane OAuth MiniMax - dla `minimax-portal`). + istnieje w env/profilach uwierzytelniania, tak aby pasujący dostawca mógł zostać wstrzyknięty + (`MINIMAX_API_KEY` dla `minimax`, `MINIMAX_OAUTH_TOKEN` albo zapisane MiniMax + OAuth dla `minimax-portal`). 3. Użyj dokładnego identyfikatora modelu (z rozróżnieniem wielkości liter) dla swojej ścieżki uwierzytelniania: `minimax/MiniMax-M2.7` albo `minimax/MiniMax-M2.7-highspeed` dla konfiguracji z kluczem API, albo `minimax-portal/MiniMax-M2.7` / @@ -2422,8 +2421,8 @@ pod kątem użycia/rozliczeń i zwiększ limity w razie potrzeby. - Tak. Użyj **MiniMax jako domyślnego** i przełączaj modele **per sesja** w razie potrzeby. - Fallbacki są dla **błędów**, a nie dla „trudnych zadań”, więc używaj `/model` albo osobnego agenta. + Tak. Używaj **MiniMax jako domyślnego** i przełączaj modele **per sesja** w razie potrzeby. + Fallbacki służą do **błędów**, a nie do „trudnych zadań”, więc używaj `/model` albo osobnego agenta. **Opcja A: przełączanie per sesja** @@ -2450,16 +2449,16 @@ pod kątem użycia/rozliczeń i zwiększ limity w razie potrzeby. **Opcja B: oddzielni agenci** - - Agent A domyślnie: MiniMax - - Agent B domyślnie: OpenAI - - Kieruj według agenta albo użyj `/agent`, aby przełączyć + - Domyślny Agent A: MiniMax + - Domyślny Agent B: OpenAI + - Kieruj ruchem według agenta albo użyj `/agent` do przełączania - Dokumentacja: [Modele](/pl/concepts/models), [Routing wieloagentowy](/pl/concepts/multi-agent), [MiniMax](/pl/providers/minimax), [OpenAI](/pl/providers/openai). + Dokumentacja: [Modele](/pl/concepts/models), [Routing Multi-Agent](/pl/concepts/multi-agent), [MiniMax](/pl/providers/minimax), [OpenAI](/pl/providers/openai). - - Tak. OpenClaw dostarcza kilka domyślnych skrótów (stosowanych tylko wtedy, gdy model istnieje w `agents.defaults.models`): + + Tak. OpenClaw zawiera kilka domyślnych skrótów (stosowanych tylko wtedy, gdy model istnieje w `agents.defaults.models`): - `opus` → `anthropic/claude-opus-4-6` - `sonnet` → `anthropic/claude-sonnet-4-6` @@ -2474,7 +2473,7 @@ pod kątem użycia/rozliczeń i zwiększ limity w razie potrzeby. - + Aliasy pochodzą z `agents.defaults.models..alias`. Przykład: ```json5 @@ -2496,7 +2495,7 @@ pod kątem użycia/rozliczeń i zwiększ limity w razie potrzeby. - + OpenRouter (płatność za token; wiele modeli): ```json5 @@ -2525,9 +2524,9 @@ pod kątem użycia/rozliczeń i zwiększ limity w razie potrzeby. } ``` - Jeśli odwołujesz się do `provider/model`, ale brakuje wymaganego klucza dostawcy, dostaniesz błąd uwierzytelniania w środowisku uruchomieniowym (np. `No API key found for provider "zai"`). + Jeśli odwołasz się do `provider/model`, ale zabraknie wymaganego klucza dostawcy, pojawi się błąd uwierzytelniania w czasie działania (np. `No API key found for provider "zai"`). - **Nie znaleziono klucza API dla dostawcy po dodaniu nowego agenta** + **Po dodaniu nowego agenta nie znaleziono klucza API dla dostawcy** Zwykle oznacza to, że **nowy agent** ma pusty magazyn uwierzytelniania. Uwierzytelnianie jest per agent i jest przechowywane w: @@ -2538,10 +2537,10 @@ pod kątem użycia/rozliczeń i zwiększ limity w razie potrzeby. Opcje naprawy: - - Uruchom `openclaw agents add ` i skonfiguruj uwierzytelnianie podczas działania kreatora. + - Uruchom `openclaw agents add ` i skonfiguruj uwierzytelnianie w kreatorze. - Albo skopiuj `auth-profiles.json` z `agentDir` głównego agenta do `agentDir` nowego agenta. - **Nie** używaj ponownie `agentDir` między agentami; powoduje to kolizje uwierzytelniania/sesji. + **Nie** używaj tego samego `agentDir` dla wielu agentów; powoduje to kolizje uwierzytelniania/sesji. @@ -2550,76 +2549,75 @@ pod kątem użycia/rozliczeń i zwiększ limity w razie potrzeby. - Failover odbywa się dwuetapowo: + Failover przebiega w dwóch etapach: - 1. **Rotacja profili uwierzytelniania** w obrębie tego samego dostawcy. + 1. **Rotacja profilu uwierzytelniania** w obrębie tego samego dostawcy. 2. **Fallback modelu** do następnego modelu w `agents.defaults.model.fallbacks`. - Dla nieudanych profili stosowane są cooldowny (wykładniczy backoff), dzięki czemu OpenClaw może nadal odpowiadać nawet wtedy, gdy dostawca ma rate limit albo tymczasowo zawodzi. + Dla zawodnych profili obowiązują okresy cooldown (wykładniczy backoff), dzięki czemu OpenClaw może nadal odpowiadać, nawet gdy dostawca ma rate limit albo chwilowo nie działa. - Koszyk rate limit obejmuje więcej niż zwykłe odpowiedzi `429`. OpenClaw - traktuje również komunikaty takie jak `Too many concurrent requests`, + Segment rate limit obejmuje więcej niż zwykłe odpowiedzi `429`. OpenClaw + traktuje też komunikaty takie jak `Too many concurrent requests`, `ThrottlingException`, `concurrency limit reached`, `workers_ai ... quota limit exceeded`, `resource exhausted` oraz okresowe - limity okien użycia (`weekly/monthly limit reached`) jako - rate limit kwalifikujący się do failover. + limity okna użycia (`weekly/monthly limit reached`) jako + rate limit warte failover. - Niektóre odpowiedzi wyglądające na rozliczeniowe nie mają kodu `402`, a niektóre odpowiedzi HTTP `402` - również pozostają w tym przejściowym koszyku. Jeśli dostawca zwróci - jawny tekst rozliczeniowy przy `401` albo `403`, OpenClaw nadal może trzymać to + Niektóre odpowiedzi wyglądające na problemy rozliczeniowe nie są `402`, a niektóre odpowiedzi HTTP `402` + również pozostają w tym przejściowym segmencie. Jeśli dostawca zwróci + jawny tekst rozliczeniowy przy `401` albo `403`, OpenClaw nadal może zachować to w ścieżce rozliczeniowej, ale dopasowania tekstu specyficzne dla dostawcy pozostają ograniczone do - dostawcy, który jest ich właścicielem (na przykład OpenRouter `Key limit exceeded`). Jeśli komunikat `402` - wygląda natomiast jak ponawialne okno użycia albo + dostawcy, który je posiada (na przykład OpenRouter `Key limit exceeded`). Jeśli komunikat `402` + wygląda raczej na możliwe do ponowienia okno użycia albo limit wydatków organizacji/workspace (`daily limit reached, resets tomorrow`, `organization spending limit exceeded`), OpenClaw traktuje to jako - `rate_limit`, a nie długotrwałe wyłączenie rozliczeń. + `rate_limit`, a nie długotrwałe wyłączenie rozliczeniowe. Błędy przepełnienia kontekstu są inne: sygnatury takie jak `request_too_large`, `input exceeds the maximum number of tokens`, `input token count exceeds the maximum number of input tokens`, `input is too long for the model` albo `ollama error: context length - exceeded` pozostają na ścieżce compaction/retry zamiast uruchamiać - fallback modelu. + exceeded` pozostają na ścieżce Compaction/ponowienia zamiast przechodzić do + fallbacku modelu. - Ogólny tekst błędu serwera jest celowo węższy niż „wszystko, co - zawiera unknown/error”. OpenClaw traktuje jednak przejściowe wzorce zależne od dostawcy, - takie jak samo `An unknown error occurred` z Anthropic, samo - `Provider returned error` z OpenRouter, błędy z powodem zatrzymania typu `Unhandled stop reason: - error`, ładunki JSON `api_error` z przejściowym tekstem błędu serwera + Tekst ogólnych błędów serwera jest celowo węższy niż „cokolwiek z + unknown/error w treści”. OpenClaw traktuje jako warte failover przejściowe kształty specyficzne dla dostawcy, + takie jak Anthropic z samym `An unknown error occurred`, OpenRouter z samym + `Provider returned error`, błędy stop-reason takie jak `Unhandled stop reason: + error`, ładunki JSON `api_error` z przejściowym tekstem serwera (`internal server error`, `unknown error, 520`, `upstream error`, `backend - error`) oraz błędy zajętości dostawcy, takie jak `ModelNotReadyException`, jako - sygnały timeout/przeciążenia kwalifikujące się do failover, gdy kontekst dostawcy - pasuje. - Ogólny wewnętrzny tekst fallbacku, taki jak `LLM request failed with an unknown - error.`, pozostaje zachowawczy i sam z siebie nie wywołuje fallbacku modelu. + error`) oraz błędy zajętości dostawcy takie jak `ModelNotReadyException`, gdy + pasuje kontekst dostawcy. + Ogólny wewnętrzny tekst fallback, taki jak `LLM request failed with an unknown + error.`, pozostaje konserwatywny i sam w sobie nie uruchamia fallbacku modelu. - + Oznacza to, że system próbował użyć identyfikatora profilu uwierzytelniania `anthropic:default`, ale nie znalazł dla niego poświadczeń w oczekiwanym magazynie uwierzytelniania. **Lista kontrolna naprawy:** - - **Potwierdź, gdzie znajdują się profile uwierzytelniania** (nowe vs starsze ścieżki) + - **Sprawdź, gdzie znajdują się profile uwierzytelniania** (nowe vs starsze ścieżki) - Obecnie: `~/.openclaw/agents//agent/auth-profiles.json` - Starsze: `~/.openclaw/agent/*` (migrowane przez `openclaw doctor`) - - **Potwierdź, że zmienna środowiskowa jest ładowana przez Gateway** + - **Sprawdź, czy Gateway załadował Twoją zmienną środowiskową** - Jeśli ustawisz `ANTHROPIC_API_KEY` w swojej powłoce, ale uruchamiasz Gateway przez systemd/launchd, może jej nie odziedziczyć. Umieść ją w `~/.openclaw/.env` albo włącz `env.shellEnv`. - **Upewnij się, że edytujesz właściwego agenta** - - W konfiguracjach wieloagentowych może istnieć wiele plików `auth-profiles.json`. - - **Sprawdź poprawność stanu modelu/uwierzytelniania** + - Konfiguracje multi-agent oznaczają, że może istnieć wiele plików `auth-profiles.json`. + - **Kontrola poprawności stanu modelu/uwierzytelniania** - Użyj `openclaw models status`, aby zobaczyć skonfigurowane modele i to, czy dostawcy są uwierzytelnieni. - **Lista kontrolna naprawy dla „No credentials found for profile anthropic”** + **Lista kontrolna naprawy dla "No credentials found for profile anthropic"** Oznacza to, że uruchomienie jest przypięte do profilu uwierzytelniania Anthropic, ale Gateway - nie może znaleźć go w swoim magazynie uwierzytelniania. + nie może go znaleźć w swoim magazynie uwierzytelniania. - **Użyj Claude CLI** - Uruchom `openclaw models auth login --provider anthropic --method cli --set-default` na hoście gateway. - **Jeśli zamiast tego chcesz używać klucza API** - Umieść `ANTHROPIC_API_KEY` w `~/.openclaw/.env` na **hoście gateway**. - - Wyczyść każde przypięte uporządkowanie, które wymusza brakujący profil: + - Wyczyść wszelkie przypięte kolejności wymuszające brakujący profil: ```bash openclaw models auth order clear --provider anthropic @@ -2630,17 +2628,17 @@ pod kątem użycia/rozliczeń i zwiększ limity w razie potrzeby. - - Jeśli konfiguracja modelu zawiera Google Gemini jako fallback (albo przełączyłeś/-aś się na skrót Gemini), OpenClaw spróbuje go podczas fallbacku modelu. Jeśli nie skonfigurowałeś/-aś poświadczeń Google, zobaczysz `No API key found for provider "google"`. + + Jeśli konfiguracja modelu obejmuje Google Gemini jako fallback (albo przełączyłeś/przełączyłaś się na skrót Gemini), OpenClaw spróbuje go podczas fallbacku modelu. Jeśli nie skonfigurowałeś/skonfigurowałaś poświadczeń Google, zobaczysz `No API key found for provider "google"`. - Naprawa: albo podaj uwierzytelnianie Google, albo usuń/unikaj modeli Google w `agents.defaults.model.fallbacks` / aliasach, aby fallback tam nie kierował. + Rozwiązanie: albo podaj uwierzytelnianie Google, albo usuń/unikaj modeli Google w `agents.defaults.model.fallbacks` / aliasach, aby fallback tam nie kierował. **LLM request rejected: thinking signature required (Google Antigravity)** - Przyczyna: historia sesji zawiera **bloki thinking bez sygnatur** (często z - przerwanego/częściowego strumienia). Google Antigravity wymaga sygnatur dla bloków thinking. + Przyczyna: historia sesji zawiera **bloki thinking bez sygnatur** (często po + przerwanym/częściowym streamie). Google Antigravity wymaga sygnatur dla bloków thinking. - Naprawa: OpenClaw teraz usuwa niepodpisane bloki thinking dla Claude Google Antigravity. Jeśli nadal się pojawia, rozpocznij **nową sesję** albo ustaw `/thinking off` dla tego agenta. + Rozwiązanie: OpenClaw usuwa teraz niepodpisane bloki thinking dla Google Antigravity Claude. Jeśli nadal to widzisz, rozpocznij **nową sesję** albo ustaw `/thinking off` dla tego agenta. @@ -2664,23 +2662,23 @@ Powiązane: [/concepts/oauth](/pl/concepts/oauth) (przepływy OAuth, przechowywa - `anthropic:default` (częste, gdy nie istnieje tożsamość e-mail) - `anthropic:` dla tożsamości OAuth - - niestandardowe identyfikatory wybrane przez Ciebie (np. `anthropic:work`) + - własne identyfikatory, które wybierzesz (np. `anthropic:work`) - Tak. Konfiguracja obsługuje opcjonalne metadane profili i kolejność per dostawca (`auth.order.`). To **nie** przechowuje sekretów; mapuje identyfikatory na dostawcę/tryb i ustawia kolejność rotacji. + Tak. Konfiguracja obsługuje opcjonalne metadane dla profili oraz kolejność per dostawca (`auth.order.`). To **nie** przechowuje sekretów; mapuje identyfikatory na dostawcę/tryb i ustawia kolejność rotacji. - OpenClaw może tymczasowo pominąć profil, jeśli jest w krótkim **cooldownie** (rate limit, timeouty, błędy uwierzytelniania) albo w dłuższym stanie **disabled** (rozliczenia/niewystarczające środki). Aby to sprawdzić, uruchom `openclaw models status --json` i sprawdź `auth.unusableProfiles`. Strojenie: `auth.cooldowns.billingBackoffHours*`. + OpenClaw może tymczasowo pominąć profil, jeśli jest on w krótkim **cooldownie** (rate limity/timeouty/błędy uwierzytelniania) albo w dłuższym stanie **disabled** (rozliczenia/niewystarczające środki). Aby to sprawdzić, uruchom `openclaw models status --json` i sprawdź `auth.unusableProfiles`. Strojenie: `auth.cooldowns.billingBackoffHours*`. - Cooldowny rate limit mogą być ograniczone do modelu. Profil, który jest w cooldownie - dla jednego modelu, może nadal nadawać się do użycia dla sąsiedniego modelu u tego samego dostawcy, + Cooldown rate limit może być ograniczony do modelu. Profil, który jest w cooldownie + dla jednego modelu, może nadal nadawać się do użycia dla modelu pokrewnego u tego samego dostawcy, podczas gdy okna billing/disabled nadal blokują cały profil. - Możesz także ustawić nadpisanie kolejności **per agent** (przechowywane w `auth-state.json` tego agenta) przez CLI: + Możesz też ustawić nadpisanie kolejności **per agent** (przechowywane w `auth-state.json` tego agenta) przez CLI: ```bash - # Domyślnie dotyczy skonfigurowanego agenta domyślnego (pomiń --agent) + # Domyślnie dla skonfigurowanego domyślnego agenta (pomiń --agent) openclaw models auth order get --provider anthropic # Zablokuj rotację do jednego profilu (próbuj tylko tego) @@ -2705,18 +2703,18 @@ Powiązane: [/concepts/oauth](/pl/concepts/oauth) (przepływy OAuth, przechowywa openclaw models status --probe ``` - Jeśli zapisany profil zostanie pominięty w jawnym porządku, probe raportuje + Jeśli zapisany profil zostanie pominięty w jawnej kolejności, sonda zgłosi `excluded_by_auth_order` dla tego profilu zamiast próbować go po cichu. - OpenClaw obsługuje oba warianty: + OpenClaw obsługuje oba rozwiązania: - - **OAuth** często wykorzystuje dostęp subskrypcyjny (tam, gdzie ma zastosowanie). - - **Klucze API** używają rozliczania za token. + - **OAuth** często wykorzystuje dostęp subskrypcyjny (tam, gdzie ma to zastosowanie). + - **Klucze API** korzystają z rozliczania za token. - Kreator jawnie obsługuje Anthropic Claude CLI, OpenAI Codex OAuth oraz klucze API. + Kreator jawnie obsługuje Anthropic Claude CLI, OpenAI Codex OAuth i klucze API. @@ -2735,19 +2733,19 @@ Powiązane: [/concepts/oauth](/pl/concepts/oauth) (przepływy OAuth, przechowywa - - Ponieważ „running” to widok **supervisora** (launchd/systemd/schtasks). Sonda RPC to CLI, które faktycznie łączy się z gateway WebSocket i wywołuje `status`. + + Ponieważ „running” to widok **supervisora** (launchd/systemd/schtasks). Sonda łączności polega natomiast na tym, że CLI faktycznie łączy się z gateway WebSocket. - Użyj `openclaw gateway status` i ufaj tym liniom: + Użyj `openclaw gateway status` i ufaj tym wierszom: - `Probe target:` (URL, którego sonda faktycznie użyła) - - `Listening:` (co jest faktycznie zbindowane na porcie) - - `Last gateway error:` (częsta przyczyna źródłowa, gdy proces działa, ale port nie nasłuchuje) + - `Listening:` (co faktycznie jest powiązane z portem) + - `Last gateway error:` (częsta przyczyna źródłowa, gdy proces żyje, ale port nie nasłuchuje) - - Edytujesz jeden plik konfiguracyjny, podczas gdy usługa działa na innym (często chodzi o niedopasowanie `--profile` / `OPENCLAW_STATE_DIR`). + + Edytujesz jeden plik konfiguracji, podczas gdy usługa działa na innym (często jest to niezgodność `--profile` / `OPENCLAW_STATE_DIR`). Naprawa: @@ -2759,15 +2757,15 @@ Powiązane: [/concepts/oauth](/pl/concepts/oauth) (przepływy OAuth, przechowywa - - OpenClaw wymusza blokadę środowiska uruchomieniowego przez natychmiastowe zbindowanie listenera WebSocket przy starcie (domyślnie `ws://127.0.0.1:18789`). Jeśli bind zwróci błąd `EADDRINUSE`, rzucany jest `GatewayLockError`, wskazujący, że inna instancja już nasłuchuje. + + OpenClaw wymusza blokadę środowiska uruchomieniowego przez natychmiastowe powiązanie nasłuchu WebSocket przy starcie (domyślnie `ws://127.0.0.1:18789`). Jeśli powiązanie nie powiedzie się z `EADDRINUSE`, zgłaszany jest `GatewayLockError`, informujący, że inna instancja już nasłuchuje. - Naprawa: zatrzymaj drugą instancję, zwolnij port albo uruchom z `openclaw gateway --port `. + Rozwiązanie: zatrzymaj drugą instancję, zwolnij port albo uruchom z `openclaw gateway --port `. - Ustaw `gateway.mode: "remote"` i wskaż zdalny URL WebSocket, opcjonalnie ze zdalnymi poświadczeniami wspólnego sekretu: + Ustaw `gateway.mode: "remote"` i wskaż zdalny adres URL WebSocket, opcjonalnie ze wspólnymi poświadczeniami zdalnymi: ```json5 { @@ -2785,53 +2783,53 @@ Powiązane: [/concepts/oauth](/pl/concepts/oauth) (przepływy OAuth, przechowywa Uwagi: - `openclaw gateway` uruchamia się tylko wtedy, gdy `gateway.mode` ma wartość `local` (albo przekażesz flagę nadpisania). - - Aplikacja macOS obserwuje plik konfiguracyjny 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 z siebie nie włączają lokalnego uwierzytelniania gateway. + - Aplikacja macOS obserwuje plik konfiguracji i przełącza tryby na żywo, gdy te wartości się zmieniają. + - `gateway.remote.token` / `.password` to wyłącznie poświadczenia zdalne po stronie klienta; same z siebie nie włączają lokalnego uwierzytelniania gateway. - - Ścieżka uwierzytelniania Twojego gateway i metoda uwierzytelniania UI nie pasują do siebie. + + Ś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 URL gateway, więc odświeżenia tej samej karty nadal działają bez przywracania trwałego przechowywania tokena w localStorage. - - Przy `AUTH_TOKEN_MISMATCH` zaufani klienci mogą wykonać jedną ograniczoną ponowną próbę z użyciem zbuforowanego tokena urządzenia, gdy gateway zwraca wskazówki ponowienia (`canRetryWithDeviceToken=true`, `recommendedNextStep=retry_with_device_token`). - - To ponowienie z użyciem zbuforowanego tokena wykorzystuje teraz ponownie zbuforowane zatwierdzone zakresy przechowywane z tokenem urządzenia. Wywołania z jawnym `deviceToken` / jawnymi `scopes` nadal zachowują żądany zestaw zakresów zamiast dziedziczyć zakresy z pamięci podręcznej. - - Poza tą ścieżką ponowienia priorytet uwierzytelniania połączenia wygląda następująco: najpierw jawny współdzielony token/hasło, potem jawny `deviceToken`, potem zapisany token urządzenia, a na końcu token bootstrap. - - Kontrole zakresu tokena bootstrap mają prefiksy ról. Wbudowana allowlista operatora bootstrap spełnia tylko żądania operatora; node lub inne role niebędące operatorem nadal wymagają zakresów pod własnym prefiksem roli. + - Control UI przechowuje token w `sessionStorage` dla bieżącej sesji karty przeglądarki i wybranego adresu URL gateway, więc odświeżenie w tej samej karcie nadal działa bez przywracania długotrwałego utrwalania tokenu w localStorage. + - Przy `AUTH_TOKEN_MISMATCH` zaufani klienci mogą wykonać jedno ograniczone ponowienie z użyciem zbuforowanego tokenu urządzenia, gdy gateway zwraca wskazówki ponowienia (`canRetryWithDeviceToken=true`, `recommendedNextStep=retry_with_device_token`). + - To ponowienie z użyciem zbuforowanego tokenu używa teraz ponownie zbuforowanych zatwierdzonych zakresów przechowywanych z tokenem urządzenia. Wywołania z jawnym `deviceToken` / jawnymi `scopes` nadal zachowują żądany zestaw zakresów zamiast dziedziczyć zbuforowane zakresy. + - Poza tą ścieżką ponowienia pierwszeństwo uwierzytelniania połączenia wygląda następująco: jawny współdzielony token/hasło, potem jawny `deviceToken`, potem zapisany token urządzenia, a na końcu token bootstrap. + - Kontrole zakresów tokenu bootstrap są prefiksowane rolą. Wbudowana lista dozwolonych operatora bootstrap spełnia tylko żądania operatora; Node albo inne role niebędące operatorem nadal potrzebują zakresów pod własnym prefiksem roli. - Naprawa: + Rozwiązanie: - - Najszybciej: `openclaw dashboard` (wypisuje + kopiuje URL dashboardu, próbuje otworzyć; pokazuje wskazówkę SSH, jeśli działa bez interfejsu graficznego). - - Jeśli nie masz jeszcze tokena: `openclaw doctor --generate-gateway-token`. - - Jeśli zdalnie, najpierw utwórz tunel: `ssh -N -L 18789:127.0.0.1:18789 user@host`, a następnie otwórz `http://127.0.0.1:18789/`. + - Najszybciej: `openclaw dashboard` (wyświetla + kopiuje adres URL dashboard, próbuje otworzyć; pokazuje wskazówkę SSH, jeśli działa bez interfejsu). + - Jeśli nie masz jeszcze tokenu: `openclaw doctor --generate-gateway-token`. + - Jeśli jest zdalnie, najpierw zestaw tunel: `ssh -N -L 18789:127.0.0.1:18789 user@host`, a potem otwórz `http://127.0.0.1:18789/`. - Tryb wspólnego sekretu: ustaw `gateway.auth.token` / `OPENCLAW_GATEWAY_TOKEN` albo `gateway.auth.password` / `OPENCLAW_GATEWAY_PASSWORD`, a następnie wklej pasujący sekret w ustawieniach Control UI. - - Tryb Tailscale Serve: upewnij się, że `gateway.auth.allowTailscale` jest włączone i że otwierasz URL Serve, a nie surowy URL loopback/tailnet omijający nagłówki tożsamości Tailscale. - - Tryb trusted-proxy: upewnij się, że ruch przechodzi przez skonfigurowane proxy ze świadomością tożsamości spoza loopback, a nie przez proxy loopback na tym samym hoście ani surowy URL gateway. - - Jeśli niedopasowanie utrzymuje się po jednej próbie ponowienia, obróć/ponownie zatwierdź sparowany token urządzenia: + - Tryb Tailscale Serve: upewnij się, że `gateway.auth.allowTailscale` jest włączone i otwierasz adres URL Serve, a nie surowy adres loopback/tailnet, który omija nagłówki tożsamości Tailscale. + - Tryb trusted-proxy: upewnij się, że wchodzisz przez skonfigurowane, świadome tożsamości proxy inne niż loopback, a nie przez proxy loopback na tym samym hoście albo surowy adres URL gateway. + - Jeśli niezgodność utrzymuje się po jednym ponowieniu, obróć/ponownie zatwierdź sparowany token urządzenia: - `openclaw devices list` - `openclaw devices rotate --device --role operator` - - Jeśli to polecenie rotate mówi, że zostało odrzucone, sprawdź dwie rzeczy: + - Jeśli wywołanie rotate mówi, że zostało odrzucone, sprawdź dwie rzeczy: - sesje sparowanych urządzeń mogą obracać tylko **własne** urządzenie, chyba że mają też `operator.admin` - - jawne wartości `--scope` nie mogą wykraczać poza bieżące zakresy operatora wywołującego - - Nadal utknąłeś/utknęłaś? Uruchom `openclaw status --all` i postępuj zgodnie z [Rozwiązywanie problemów](/pl/gateway/troubleshooting). Szczegóły uwierzytelniania znajdziesz w [Dashboard](/web/dashboard). + - jawne wartości `--scope` nie mogą przekraczać bieżących zakresów operatora wywołującego + - Nadal utknąłeś/utknęłaś? Uruchom `openclaw status --all` i skorzystaj z [Rozwiązywania problemów](/pl/gateway/troubleshooting). Szczegóły uwierzytelniania znajdziesz w [Dashboard](/web/dashboard). - - Bind `tailnet` wybiera adres IP Tailscale z interfejsów sieciowych (100.64.0.0/10). Jeśli maszyna nie jest w Tailscale (albo interfejs nie działa), nie ma do czego się zbindować. + + Powią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 do czego się powiązać. - Naprawa: + Rozwiązanie: - Uruchom Tailscale na tym hoście (tak 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 bind tylko do tailnet. + Uwaga: `tailnet` jest jawne. `auto` preferuje loopback; użyj `gateway.bind: "tailnet"`, gdy chcesz powiązania tylko z tailnet. - + Zwykle nie — jeden Gateway może obsługiwać wiele kanałów komunikacyjnych i agentów. Używaj wielu Gateway tylko wtedy, gdy potrzebujesz redundancji (np. rescue bot) albo twardej izolacji. Tak, ale musisz odizolować: @@ -2844,7 +2842,7 @@ Powiązane: [/concepts/oauth](/pl/concepts/oauth) (przepływy OAuth, przechowywa Szybka konfiguracja (zalecana): - Używaj `openclaw --profile ...` dla każdej instancji (automatycznie tworzy `~/.openclaw-`). - - Ustaw unikalny `gateway.port` w konfiguracji każdego profilu (albo przekaż `--port` dla uruchomień ręcznych). + - Ustaw unikalne `gateway.port` w konfiguracji każdego profilu (albo przekaż `--port` przy uruchamianiu ręcznym). - Zainstaluj usługę per profil: `openclaw --profile gateway install`. Profile dodają też sufiksy do nazw usług (`ai.openclaw.`; starsze `com.openclaw.*`, `openclaw-gateway-.service`, `OpenClaw Gateway ()`). @@ -2852,24 +2850,24 @@ Powiązane: [/concepts/oauth](/pl/concepts/oauth) (przepływy OAuth, przechowywa - - Gateway jest **serwerem WebSocket** i oczekuje, że pierwsza wiadomość będzie - ramką `connect`. Jeśli otrzyma coś innego, zamyka połączenie - kodem **1008** (naruszenie zasad). + + Gateway to **serwer WebSocket** i oczekuje, że pierwszą wiadomością + będzie ramka `connect`. Jeśli otrzyma coś innego, zamyka połączenie + z **kodem 1008** (naruszenie zasad). Typowe przyczyny: - - Otworzyłeś/-aś adres **HTTP** w przeglądarce (`http://...`) zamiast klienta WS. - - Użyto niewłaściwego portu lub ścieżki. - - Proxy lub tunel usunęły nagłówki uwierzytelniania albo wysłały żądanie niebędące żądaniem Gateway. + - Otworzyłeś/otworzyłaś adres URL **HTTP** w przeglądarce (`http://...`) zamiast klienta WS. + - Użyto niewłaściwego portu albo ścieżki. + - Proxy albo tunel usunęły nagłówki uwierzytelniania albo wysłały żądanie nieprzeznaczone dla Gateway. - Szybkie poprawki: + Szybkie rozwiązania: - 1. Użyj URL WS: `ws://:18789` (albo `wss://...`, jeśli HTTPS). + 1. Użyj adresu URL WS: `ws://:18789` (albo `wss://...`, jeśli używasz 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 albo TUI, URL powinien wyglądać tak: + Jeśli używasz CLI albo TUI, adres URL powinien wyglądać tak: ``` openclaw tui --url ws://:18789 --token @@ -2880,7 +2878,7 @@ Powiązane: [/concepts/oauth](/pl/concepts/oauth) (przepływy OAuth, przechowywa -## Rejestrowanie i debugowanie +## Logowanie i debugowanie @@ -2890,9 +2888,9 @@ Powiązane: [/concepts/oauth](/pl/concepts/oauth) (przepływy OAuth, przechowywa /tmp/openclaw/openclaw-YYYY-MM-DD.log ``` - Możesz ustawić stałą ścieżkę przez `logging.file`. Poziom logów plikowych jest sterowany przez `logging.level`. Szczegółowość konsoli jest sterowana przez `--verbose` i `logging.consoleLevel`. + Możesz ustawić stabilną ścieżkę przez `logging.file`. Poziom logowania plikowego jest kontrolowany przez `logging.level`. Szczegółowość konsoli kontrolują `--verbose` i `logging.consoleLevel`. - Najszybsze śledzenie logu: + Najszybsze śledzenie logów: ```bash openclaw logs --follow @@ -2904,28 +2902,28 @@ Powiązane: [/concepts/oauth](/pl/concepts/oauth) (przepływy OAuth, przechowywa - Linux: `journalctl --user -u openclaw-gateway[-].service -n 200 --no-pager` - Windows: `schtasks /Query /TN "OpenClaw Gateway ()" /V /FO LIST` - Więcej informacji znajdziesz w [Rozwiązywanie problemów](/pl/gateway/troubleshooting). + Więcej informacji znajdziesz w [Rozwiązywaniu problemów](/pl/gateway/troubleshooting). - - Użyj pomocniczych poleceń gateway: + + Użyj pomocników gateway: ```bash openclaw gateway status openclaw gateway restart ``` - Jeśli uruchamiasz gateway ręcznie, `openclaw gateway --force` może przejąć port. Zobacz [Gateway](/pl/gateway). + Jeśli uruchamiasz gateway ręcznie, `openclaw gateway --force` może odzyskać port. Zobacz [Gateway](/pl/gateway). - - Istnieją **dwa tryby instalacji w Windows**: + + Istnieją **dwa tryby instalacji na Windows**: - **1) WSL2 (zalecane):** Gateway działa wewnątrz Linuxa. + **1) WSL2 (zalecane):** Gateway działa wewnątrz Linux. - Otwórz PowerShell, wejdź do WSL, a następnie zrestartuj: + Otwórz PowerShell, wejdź do WSL, a następnie uruchom ponownie: ```powershell wsl @@ -2933,13 +2931,13 @@ Powiązane: [/concepts/oauth](/pl/concepts/oauth) (przepływy OAuth, przechowywa openclaw gateway restart ``` - Jeśli nigdy nie instalowałeś/-aś usługi, uruchom ją na pierwszym planie: + Jeśli nigdy nie zainstalowałeś/zainstalowałaś usługi, uruchom ją na pierwszym planie: ```bash openclaw gateway run ``` - **2) Natywny Windows (niezalecane):** Gateway działa bezpośrednio w Windows. + **2) Natywny Windows (niezalecane):** Gateway działa bezpośrednio na Windows. Otwórz PowerShell i uruchom: @@ -2958,8 +2956,8 @@ Powiązane: [/concepts/oauth](/pl/concepts/oauth) (przepływy OAuth, przechowywa - - Zacznij od szybkiego przeglądu kondycji: + + Zacznij od szybkiego przeglądu stanu: ```bash openclaw status @@ -2971,10 +2969,10 @@ Powiązane: [/concepts/oauth](/pl/concepts/oauth) (przepływy OAuth, przechowywa Typowe przyczyny: - Uwierzytelnianie modelu nie zostało załadowane na **hoście gateway** (sprawdź `models status`). - - Parowanie kanału/allowlista blokuje odpowiedzi (sprawdź konfigurację kanału + logi). - - WebChat/Dashboard jest otwarty bez właściwego tokena. + - Parowanie kanału/lista dozwolonych blokują odpowiedzi (sprawdź konfigurację kanału + logi). + - WebChat/Dashboard jest otwarty bez właściwego tokenu. - Jeśli działasz zdalnie, potwierdź, że tunel/połączenie Tailscale działa i że + Jeśli działasz zdalnie, upewnij się, że tunel/połączenie Tailscale działa i że Gateway WebSocket jest osiągalny. Dokumentacja: [Kanały](/pl/channels), [Rozwiązywanie problemów](/pl/gateway/troubleshooting), [Dostęp zdalny](/pl/gateway/remote). @@ -2982,12 +2980,12 @@ Powiązane: [/concepts/oauth](/pl/concepts/oauth) (przepływy OAuth, przechowywa - Zwykle oznacza to, że UI utracił połączenie WebSocket. Sprawdź: + Zwykle oznacza to, że UI utraciło połączenie WebSocket. Sprawdź: 1. Czy Gateway działa? `openclaw gateway status` 2. Czy Gateway jest zdrowy? `openclaw status` 3. Czy UI ma właściwy token? `openclaw dashboard` - 4. Jeśli zdalnie, czy tunel/połączenie Tailscale działa? + 4. Jeśli działa zdalnie, czy tunel/łącze Tailscale działa? Następnie śledź logi: @@ -2999,7 +2997,7 @@ Powiązane: [/concepts/oauth](/pl/concepts/oauth) (przepływy OAuth, przechowywa - + Zacznij od logów i statusu kanału: ```bash @@ -3009,8 +3007,8 @@ Powiązane: [/concepts/oauth](/pl/concepts/oauth) (przepływy OAuth, przechowywa Następnie dopasuj błąd: - - `BOT_COMMANDS_TOO_MUCH`: menu Telegram ma zbyt wiele wpisów. OpenClaw już przycina je do limitu Telegram i ponawia próbę z mniejszą liczbą poleceń, ale niektóre wpisy menu nadal trzeba usunąć. Ogranicz polecenia Plugin/Skill/niestandardowe albo wyłącz `channels.telegram.commands.native`, jeśli nie potrzebujesz menu. - - `TypeError: fetch failed`, `Network request for 'setMyCommands' failed!` albo podobne błędy sieciowe: jeśli jesteś na VPS albo za proxy, potwierdź, że wychodzące HTTPS jest dozwolone i DNS działa dla `api.telegram.org`. + - `BOT_COMMANDS_TOO_MUCH`: menu Telegram ma zbyt wiele wpisów. OpenClaw już przycina je do limitu Telegram i ponawia próbę z mniejszą liczbą poleceń, ale niektóre pozycje menu nadal trzeba usunąć. Ogranicz polecenia Plugin/Skill/niestandardowe albo wyłącz `channels.telegram.commands.native`, jeśli nie potrzebujesz menu. + - `TypeError: fetch failed`, `Network request for 'setMyCommands' failed!` albo podobne błędy sieciowe: jeśli jesteś na VPS albo za proxy, upewnij się, że wychodzący HTTPS jest dozwolony, a DNS działa dla `api.telegram.org`. Jeśli Gateway jest zdalny, upewnij się, że sprawdzasz logi na hoście Gateway. @@ -3027,25 +3025,25 @@ Powiązane: [/concepts/oauth](/pl/concepts/oauth) (przepływy OAuth, przechowywa 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`). + 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](/web/tui), [Polecenia slash](/pl/tools/slash-commands). - Jeśli zainstalowałeś/-aś usługę: + Jeśli zainstalowałeś/zainstalowałaś usługę: ```bash openclaw gateway stop openclaw gateway start ``` - To zatrzymuje/uruchamia **nadzorowaną usługę** (launchd w macOS, systemd w Linuxie). + To zatrzymuje/uruchamia **nadzorowaną usługę** (launchd na macOS, systemd na Linux). Używaj tego, gdy Gateway działa w tle jako demon. - Jeśli uruchamiasz w pierwszym planie, zatrzymaj przez Ctrl-C, a następnie: + Jeśli uruchamiasz w trybie pierwszoplanowym, zatrzymaj przez Ctrl-C, a następnie: ```bash openclaw gateway run @@ -3056,11 +3054,11 @@ Powiązane: [/concepts/oauth](/pl/concepts/oauth) (przepływy OAuth, przechowywa - - `openclaw gateway restart`: restartuje **usługę działającą w tle** (launchd/systemd). - - `openclaw gateway`: uruchamia gateway **w pierwszym planie** dla tej sesji terminala. + - `openclaw gateway restart`: ponownie uruchamia **usługę działającą w tle** (launchd/systemd). + - `openclaw gateway`: uruchamia gateway **na pierwszym planie** dla tej sesji terminala. - Jeśli masz zainstalowaną usługę, używaj poleceń gateway. Używaj `openclaw gateway`, gdy - chcesz jednorazowego uruchomienia w pierwszym planie. + Jeśli zainstalowałeś/zainstalowałaś usługę, używaj poleceń gateway. Użyj `openclaw gateway`, gdy + chcesz jednorazowego uruchomienia na pierwszym planie. @@ -3073,7 +3071,7 @@ Powiązane: [/concepts/oauth](/pl/concepts/oauth) (przepływy OAuth, przechowywa - Wychodzące załączniki od agenta muszą zawierać linię `MEDIA:` (w osobnej linii). Zobacz [Konfiguracja asystenta OpenClaw](/pl/start/openclaw) i [Wysyłanie przez agenta](/pl/tools/agent-send). + Wychodzące załączniki od agenta muszą zawierać wiersz `MEDIA:` (we własnym wierszu). Zobacz [Konfiguracja asystenta OpenClaw](/pl/start/openclaw) i [Wysyłanie przez agenta](/pl/tools/agent-send). Wysyłanie przez CLI: @@ -3083,10 +3081,10 @@ Powiązane: [/concepts/oauth](/pl/concepts/oauth) (przepływy OAuth, przechowywa Sprawdź też: - - Kanał docelowy obsługuje wysyłanie multimediów i nie jest blokowany przez allowlisty. - - Plik mieści się w limitach rozmiaru dostawcy (obrazy są zmniejszane maksymalnie do 2048 px). - - `tools.fs.workspaceOnly=true` ogranicza wysyłanie ścieżek lokalnych do workspace, temp/media-store i plików zweryfikowanych przez sandbox. - - `tools.fs.workspaceOnly=false` pozwala `MEDIA:` wysyłać lokalne pliki hosta, które agent już może odczytać, ale tylko dla multimediów oraz bezpiecznych typów dokumentów (obrazy, audio, wideo, PDF i dokumenty Office). Zwykły tekst i pliki przypominające sekrety są nadal blokowane. + - Docelowy kanał obsługuje wychodzące multimedia i nie jest blokowany przez listy dozwolonych. + - Plik mieści się w limitach rozmiaru dostawcy (obrazy są skalowane do maks. 2048 px). + - `tools.fs.workspaceOnly=true` ogranicza wysyłanie lokalnych ścieżek 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 już może odczytać, ale tylko dla multimediów oraz bezpiecznych typów dokumentów (obrazy, audio, wideo, PDF i dokumenty Office). Zwykły tekst i pliki przypominające sekrety nadal są blokowane. Zobacz [Obrazy](/pl/nodes/images). @@ -3097,111 +3095,111 @@ Powiązane: [/concepts/oauth](/pl/concepts/oauth) (przepływy OAuth, przechowywa - Traktuj przychodzące DM jako niezaufane dane wejściowe. Wartości domyślne są zaprojektowane tak, aby zmniejszać ryzyko: + Traktuj przychodzące DM jako niezaufane dane wejściowe. Ustawienia domyślne zaprojektowano tak, aby ograniczać ryzyko: - - Domyślne zachowanie na kanałach obsługujących DM to **pairing**: - - Nieznani nadawcy otrzymują kod pairing; bot nie przetwarza ich wiadomości. - - Zatwierdź przez: `openclaw pairing approve --channel [--account ] ` - - Oczekujące żądania są ograniczone do **3 na kanał**; sprawdź `openclaw pairing list --channel [--account ]`, jeśli kod nie dotarł. - - Publiczne otwarcie DM wymaga jawnego opt-in (`dmPolicy: "open"` i allowlista `"*"`). + - Domyślne zachowanie na kanałach obsługujących DM to **parowanie**: + - Nieznani nadawcy dostają kod parowania; bot nie przetwarza ich wiadomości. + - Zatwierdzenie przez: `openclaw pairing approve --channel [--account ] ` + - Oczekujące prośby są ograniczone do **3 na kanał**; sprawdź `openclaw pairing list --channel [--account ]`, jeśli kod nie dotarł. + - Publiczne otwarcie DM wymaga jawnego opt-in (`dmPolicy: "open"` i lista dozwolonych `"*"`). Uruchom `openclaw doctor`, aby wykryć ryzykowne zasady DM. - - Nie. Prompt injection dotyczy **niezaufanej treści**, a nie tylko tego, kto może wysłać DM do bota. - Jeśli Twój asystent odczytuje zewnętrzne treści (web search/fetch, strony w przeglądarce, e-maile, - dokumenty, załączniki, wklejone logi), ta treść może zawierać instrukcje próbujące - przejąć model. Może się to zdarzyć, nawet jeśli **Ty jesteś jedynym nadawcą**. + + Nie. Prompt injection dotyczy **niezaufanej treści**, a nie tylko tego, kto może wysyłać DM do bota. + Jeśli asystent odczytuje treści zewnętrzne (web search/fetch, strony w przeglądarce, 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 **Ty jesteś jedynym nadawcą**. - Największe ryzyko pojawia się wtedy, gdy włączone są narzędzia: model może zostać nakłoniony do - wyprowadzania kontekstu albo wywoływania narzędzi w Twoim imieniu. Ogranicz promień rażenia przez: + Największe ryzyko występuje wtedy, gdy włączone są narzędzia: model może zostać nakłoniony do + wyeksfiltrowania kontekstu albo wywołania narzędzi w Twoim imieniu. Ogranicz skutki przez: - - używanie agenta „czytelnika” tylko do odczytu lub z wyłączonymi narzędziami do podsumowywania niezaufanych treści - - utrzymywanie `web_search` / `web_fetch` / `browser` wyłączonych dla agentów z włączonymi narzędziami + - używanie agenta „reader” tylko do odczytu albo bez narzędzi do podsumowywania niezaufanych treści + - wyłączanie `web_search` / `web_fetch` / `browser` dla agentów z włączonymi narzędziami - traktowanie zdekodowanego tekstu plików/dokumentów również jako niezaufanego: OpenResponses - `input_file` oraz ekstrakcja z 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 allowlisty narzędzi + `input_file` i ekstrakcja z załączników multimedialnych opakowują wyodrębniony tekst w + jawne znaczniki granicy treści zewnętrznej zamiast przekazywać surowy tekst pliku + - sandboxing i ścisłe listy dozwolonych narzędzi Szczegóły: [Bezpieczeństwo](/pl/gateway/security). - - Tak, w większości konfiguracji. Izolowanie bota za pomocą osobnych kont i numerów telefonów - zmniejsza promień rażenia, jeśli coś pójdzie nie tak. Ułatwia to też rotację - poświadczeń lub cofnięcie dostępu bez wpływu na Twoje osobiste konta. + + Tak, w większości konfiguracji. Izolowanie bota przez oddzielne konta i numery telefonów + ogranicza skutki, jeśli coś pójdzie nie tak. Ułatwia to również rotację + poświadczeń albo cofnięcie dostępu bez wpływu na Twoje osobiste konta. - Zacznij od małej skali. Daj dostęp tylko do narzędzi i kont, których naprawdę potrzebujesz, i rozszerzaj - później, jeśli będzie to wymagane. + Zacznij od małego zakresu. Daj dostęp tylko do narzędzi i kont, których rzeczywiście potrzebujesz, i rozszerzaj + później, jeśli będzie to konieczne. - Dokumentacja: [Bezpieczeństwo](/pl/gateway/security), [Pairing](/pl/channels/pairing). + Dokumentacja: [Bezpieczeństwo](/pl/gateway/security), [Parowanie](/pl/channels/pairing). - **Nie** zalecamy pełnej autonomii nad Twoimi osobistymi wiadomościami. Najbezpieczniejszy wzorzec to: + **Nie** zalecamy pełnej autonomii nad Twoimi prywatnymi wiadomościami. Najbezpieczniejszy wzorzec to: - - Trzymaj DM w **trybie pairing** albo na ścisłej allowliście. - - Używaj **oddzielnego numeru lub konta**, jeśli chcesz, aby wysyłał wiadomości w Twoim imieniu. + - Utrzymuj DM w **trybie parowania** albo na ścisłej liście dozwolonych. + - Używaj **oddzielnego numeru lub konta**, jeśli chcesz, by wysyłał wiadomości w Twoim imieniu. - Pozwól mu przygotować szkic, a potem **zatwierdź przed wysłaniem**. - Jeśli chcesz eksperymentować, rób to na dedykowanym koncie i zachowaj izolację. Zobacz + Jeśli chcesz eksperymentować, rób to na dedykowanym koncie i utrzymuj izolację. Zobacz [Bezpieczeństwo](/pl/gateway/security). - Tak, **jeśli** agent służy tylko do czatu, a dane wejściowe są zaufane. Mniejsze poziomy są - bardziej podatne na przejmowanie instrukcji, więc unikaj ich dla agentów z włączonymi narzędziami - albo przy odczytywaniu niezaufanych treści. Jeśli musisz używać mniejszego modelu, zablokuj + Tak, **jeśli** agent służy tylko do czatu, a dane wejściowe są zaufane. Mniejsze warianty + są bardziej podatne na przejmowanie przez instrukcje, więc unikaj ich dla agentów z włączonymi narzędziami + albo podczas odczytywania niezaufanych treści. Jeśli musisz użyć mniejszego modelu, zablokuj narzędzia i uruchamiaj wewnątrz sandboxa. Zobacz [Bezpieczeństwo](/pl/gateway/security). - - Kody pairing są wysyłane **tylko** wtedy, gdy nieznany nadawca napisze do bota i - `dmPolicy: "pairing"` jest włączone. Samo `/start` nie generuje kodu. + + Kody parowania są wysyłane **tylko** wtedy, gdy nieznany nadawca napisze do bota i + włączone jest `dmPolicy: "pairing"`. Samo `/start` nie generuje kodu. - Sprawdź oczekujące żądania: + Sprawdź oczekujące prośby: ```bash openclaw pairing list telegram ``` - Jeśli chcesz natychmiastowego dostępu, dodaj swój sender id do allowlisty albo ustaw `dmPolicy: "open"` + Jeśli chcesz natychmiastowego dostępu, dodaj identyfikator nadawcy do listy dozwolonych albo ustaw `dmPolicy: "open"` dla tego konta. - - Nie. Domyślna zasada DM WhatsApp to **pairing**. Nieznani nadawcy dostają tylko kod pairing, a ich wiadomość **nie jest przetwarzana**. OpenClaw odpowiada tylko na czaty, które otrzymuje, albo na jawne wysyłki, które sam wywołasz. + + Nie. Domyślna zasada DM w WhatsApp to **parowanie**. Nieznani nadawcy dostają tylko kod parowania, a ich wiadomość **nie jest przetwarzana**. OpenClaw odpowiada tylko na czaty, które otrzymuje, albo na jawne wysyłki, które samodzielnie uruchomisz. - Zatwierdzanie pairing: + Zatwierdzanie parowania: ```bash openclaw pairing approve whatsapp ``` - Lista oczekujących żądań: + Wyświetlanie oczekujących próśb: ```bash openclaw pairing list whatsapp ``` - Monit kreatora o numer telefonu: służy do ustawienia Twojej **allowlisty/ownera**, aby Twoje własne DM były dozwolone. Nie służy do automatycznego wysyłania. Jeśli uruchamiasz na własnym numerze WhatsApp, użyj tego numeru i włącz `channels.whatsapp.selfChatMode`. + Monit kreatora o numer telefonu: służy do ustawienia Twojej **listy dozwolonych/właściciela**, aby Twoje własne DM były dozwolone. Nie jest używany do automatycznego wysyłania. Jeśli uruchamiasz system na swoim osobistym numerze WhatsApp, użyj tego numeru i włącz `channels.whatsapp.selfChatMode`. -## Polecenia czatu, przerywanie zadań i „to nie chce się zatrzymać” +## Polecenia czatu, przerywanie zadań i „nie chce się zatrzymać” - Większość komunikatów wewnętrznych lub narzędziowych pojawia się tylko wtedy, gdy dla tej sesji włączone są **verbose**, **trace** lub **reasoning**. + Większość komunikatów wewnętrznych albo komunikatów narzędzi pojawia się tylko wtedy, gdy dla tej sesji włączone są **verbose**, **trace** albo **reasoning**. - Napraw to na czacie, na którym to widzisz: + Rozwiązanie na czacie, na którym to widzisz: ``` /verbose off @@ -3210,7 +3208,7 @@ Powiązane: [/concepts/oauth](/pl/concepts/oauth) (przepływy OAuth, przechowywa ``` Jeśli nadal jest zbyt głośno, sprawdź ustawienia sesji w Control UI i ustaw verbose - na **inherit**. Potwierdź też, że nie używasz profilu bota z ustawionym `verboseDefault` + na **inherit**. Potwierdź też, że nie używasz profilu bota z `verboseDefault` ustawionym na `on` w konfiguracji. Dokumentacja: [Thinking i verbose](/pl/tools/thinking), [Bezpieczeństwo](/pl/gateway/security#reasoning-verbose-output-in-groups). @@ -3218,7 +3216,7 @@ Powiązane: [/concepts/oauth](/pl/concepts/oauth) (przepływy OAuth, przechowywa - Wyślij dowolne z tych poleceń **jako samodzielną wiadomość** (bez ukośnika): + Wyślij dowolne z poniższych **jako samodzielną wiadomość** (bez ukośnika): ``` stop @@ -3242,23 +3240,23 @@ Powiązane: [/concepts/oauth](/pl/concepts/oauth) (przepływy OAuth, przechowywa interrupt ``` - To są wyzwalacze przerwania (nie polecenia slash). + Są to wyzwalacze przerwania (nie polecenia slash). - Dla procesów w tle (z narzędzia exec) możesz poprosić agenta o uruchomienie: + W przypadku procesów w tle (z narzędzia exec) możesz poprosić agenta o uruchomienie: ``` process action:kill sessionId:XXX ``` - Przegląd poleceń slash: zobacz [Polecenia slash](/pl/tools/slash-commands). + Omówienie poleceń slash: zobacz [Polecenia slash](/pl/tools/slash-commands). - Większość poleceń musi być wysłana jako **samodzielna** wiadomość zaczynająca się od `/`, ale kilka skrótów (jak `/status`) działa także inline dla nadawców z allowlisty. + Większość poleceń musi zostać wysłana jako **samodzielna** wiadomość zaczynająca się od `/`, ale kilka skrótów (np. `/status`) działa też inline dla nadawców z listy dozwolonych. - + OpenClaw domyślnie blokuje wiadomości **między dostawcami**. Jeśli wywołanie narzędzia jest powiązane - z Telegramem, nie wyśle na Discord, chyba że jawnie na to zezwolisz. + z Telegram, nie wyśle do Discord, chyba że jawnie na to zezwolisz. Włącz wiadomości między dostawcami dla agenta: @@ -3275,18 +3273,18 @@ Powiązane: [/concepts/oauth](/pl/concepts/oauth) (przepływy OAuth, przechowywa } ``` - Po edycji konfiguracji zrestartuj gateway. + Po edycji konfiguracji uruchom ponownie gateway. - - Tryb kolejki kontroluje, jak nowe wiadomości wchodzą w interakcję z trwającym uruchomieniem. Użyj `/queue`, aby zmienić tryby: + + Tryb kolejki steruje tym, jak nowe wiadomości wchodzą w interakcję z aktualnie wykonywanym zadaniem. Użyj `/queue`, aby zmienić tryby: - `steer` - nowe wiadomości przekierowują bieżące zadanie - - `followup` - uruchamia wiadomości jedna po drugiej - - `collect` - grupuje wiadomości i odpowiada raz (domyślnie) - - `steer-backlog` - przekierowuje teraz, potem przetwarza backlog - - `interrupt` - przerywa bieżące uruchomienie i zaczyna od nowa + - `followup` - wiadomości są wykonywane jedna po drugiej + - `collect` - wiadomości są grupowane i odpowiedź przychodzi raz (domyślnie) + - `steer-backlog` - przekierowanie teraz, potem przetwarzanie backlogu + - `interrupt` - przerwanie bieżącego uruchomienia i rozpoczęcie od nowa Możesz dodać opcje takie jak `debounce:2s cap:25 drop:summarize` dla trybów followup. @@ -3297,10 +3295,10 @@ Powiązane: [/concepts/oauth](/pl/concepts/oauth) (przepływy OAuth, przechowywa - W OpenClaw poświadczenia i wybór modelu są od siebie oddzielone. Ustawienie `ANTHROPIC_API_KEY` (albo zapisanie klucza API Anthropic w profilach uwierzytelniania) włącza uwierzytelnianie, ale faktyczny model domyślny to ten, który skonfigurujesz w `agents.defaults.model.primary` (na przykład `anthropic/claude-sonnet-4-6` albo `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 `auth-profiles.json` dla uruchomionego agenta. + W OpenClaw poświadczenia i wybór modelu są oddzielne. Ustawienie `ANTHROPIC_API_KEY` (albo zapisanie klucza API Anthropic w profilach uwierzytelniania) włącza uwierzytelnianie, ale rzeczywisty model domyślny to ten skonfigurowany w `agents.defaults.model.primary` (na przykład `anthropic/claude-sonnet-4-6` albo `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 `auth-profiles.json` dla aktualnie uruchomionego agenta. --- -Nadal utknąłeś/utknęłaś? Zapytaj na [Discord](https://discord.com/invite/clawd) albo otwórz [dyskusję na GitHubie](https://github.com/openclaw/openclaw/discussions). +Nadal utknąłeś/utknęłaś? Zapytaj na [Discord](https://discord.com/invite/clawd) albo otwórz [dyskusję na GitHub](https://github.com/openclaw/openclaw/discussions). diff --git a/docs/pl/help/testing.md b/docs/pl/help/testing.md index 4fa7e012c..d712e3e22 100644 --- a/docs/pl/help/testing.md +++ b/docs/pl/help/testing.md @@ -3,13 +3,13 @@ read_when: - Uruchamianie testów lokalnie lub w CI - Dodawanie testów regresji dla błędów modeli/dostawców - Debugowanie zachowania Gateway + agenta -summary: 'Zestaw testowy: pakiety unit/e2e/live, uruchamianie w Dockerze i zakres poszczególnych testów' +summary: 'Zestaw testowy: pakiety testów unit/e2e/live, uruchamianie w Dockerze i zakres pokrycia każdego testu' title: Testowanie x-i18n: - generated_at: "2026-04-18T09:34:52Z" + generated_at: "2026-04-20T09:58:58Z" model: gpt-5.4 provider: openai - source_hash: 7cdd2048ba58e606fd68703977c2b33000abdb1826b6589ce25a35c53468726a + source_hash: 88457038e2e2c7940d0348762d0ece187111a8c61fa9bad54b39eade4217ddbc source_path: help/testing.md workflow: 15 --- @@ -18,89 +18,93 @@ x-i18n: OpenClaw ma trzy pakiety Vitest (unit/integration, e2e, live) oraz niewielki zestaw uruchomień w Dockerze. -Ten dokument to przewodnik „jak testujemy”: +Ten dokument jest przewodnikiem „jak testujemy”: - Co obejmuje każdy pakiet (i czego celowo _nie_ obejmuje) -- Jakie polecenia uruchamiać w typowych przepływach pracy (lokalnie, przed wypchnięciem, debugowanie) -- Jak testy live wykrywają poświadczenia oraz wybierają modele/dostawców -- Jak dodawać testy regresji dla rzeczywistych problemów z modelami/dostawcami +- Jakie polecenia uruchamiać w typowych przepływach pracy (lokalnie, przed pushem, debugowanie) +- Jak testy live wykrywają poświadczenia i wybierają modele/dostawców +- Jak dodawać regresje dla rzeczywistych problemów z modelami/dostawcami ## Szybki start W większość dni: -- Pełna bramka (oczekiwana przed wypchnięciem): `pnpm build && pnpm check && pnpm test` +- Pełna bramka (oczekiwana przed pushem): `pnpm build && pnpm check && pnpm test` - Szybsze lokalne uruchomienie pełnego pakietu na wydajnej maszynie: `pnpm test:max` -- Bezpośrednia pętla watch Vitest: `pnpm test:watch` -- Bezpośrednie wskazywanie plików obsługuje teraz także ścieżki rozszerzeń/kanałów: `pnpm test extensions/discord/src/monitor/message-handler.preflight.test.ts` -- Gdy iterujesz nad pojedynczym błędem, najpierw preferuj uruchomienia zawężone do celu. +- Bezpośrednia pętla obserwacji Vitest: `pnpm test:watch` +- Bezpośrednie wskazanie pliku obsługuje teraz także ścieżki rozszerzeń/kanałów: `pnpm test extensions/discord/src/monitor/message-handler.preflight.test.ts` +- Gdy iterujesz nad pojedynczą awarią, najpierw wybieraj uruchomienia celowane. - Witryna QA oparta na Dockerze: `pnpm qa:lab:up` - Ścieżka QA oparta na maszynie wirtualnej Linux: `pnpm openclaw qa suite --runner multipass --scenario channel-chat-baseline` -Gdy modyfikujesz testy lub chcesz mieć większą pewność: +Gdy modyfikujesz testy lub chcesz większej pewności: - Bramka pokrycia: `pnpm test:coverage` - Pakiet E2E: `pnpm test:e2e` Podczas debugowania rzeczywistych dostawców/modeli (wymaga prawdziwych poświadczeń): -- Pakiet live (modele + sondy narzędzi/obrazów Gateway): `pnpm test:live` +- Pakiet live (modele + testy Gateway dla narzędzi/obrazów): `pnpm test:live` - Ciche uruchomienie jednego pliku live: `pnpm test:live -- src/agents/models.profiles.live.test.ts` -Wskazówka: jeśli potrzebujesz tylko jednego nieudanego przypadku, preferuj zawężanie testów live za pomocą zmiennych środowiskowych allowlist opisanych poniżej. +Wskazówka: gdy potrzebujesz tylko jednego nieudanego przypadku, zawężaj testy live za pomocą zmiennych środowiskowych allowlist opisanych poniżej. ## Uruchomienia specyficzne dla QA -Te polecenia znajdują się obok głównych pakietów testowych, gdy potrzebujesz realizmu QA-lab: +Te polecenia działają obok głównych pakietów testów, gdy potrzebujesz realizmu QA-lab: - `pnpm openclaw qa suite` - Uruchamia scenariusze QA oparte na repozytorium bezpośrednio na hoście. - - Domyślnie uruchamia równolegle wiele wybranych scenariuszy z odizolowanymi workerami Gateway, do 64 workerów lub liczby wybranych scenariuszy. Użyj `--concurrency `, aby dostroić liczbę workerów, albo `--concurrency 1` dla starszej ścieżki sekwencyjnej. + - Domyślnie uruchamia wiele wybranych scenariuszy równolegle z odizolowanymi workerami Gateway. `qa-channel` domyślnie używa współbieżności 4 (ograniczonej liczbą wybranych scenariuszy). Użyj `--concurrency `, aby dostroić liczbę workerów, albo `--concurrency 1`, aby wrócić do starszej ścieżki szeregowej. + - Zwraca kod różny od zera, gdy dowolny scenariusz zakończy się niepowodzeniem. Użyj `--allow-failures`, gdy chcesz uzyskać artefakty bez kodu błędu. - Obsługuje tryby dostawców `live-frontier`, `mock-openai` i `aimock`. - `aimock` uruchamia lokalny serwer dostawcy oparty na AIMock do eksperymentalnego testowania fixture i mocków protokołu bez zastępowania ścieżki `mock-openai` świadomej scenariuszy. + `aimock` uruchamia lokalny serwer dostawcy oparty na AIMock do eksperymentalnego pokrycia fixture i mocków protokołu bez zastępowania świadomej scenariuszy ścieżki `mock-openai`. - `pnpm openclaw qa suite --runner multipass` - - Uruchamia ten sam pakiet QA wewnątrz tymczasowej maszyny wirtualnej Multipass Linux. + - Uruchamia ten sam pakiet QA wewnątrz jednorazowej maszyny wirtualnej Linux Multipass. - Zachowuje ten sam sposób wyboru scenariuszy co `qa suite` na hoście. - Ponownie wykorzystuje te same flagi wyboru dostawcy/modelu co `qa suite`. - - Uruchomienia live przekazują obsługiwane wejścia autoryzacyjne QA, które są praktyczne dla gościa: - klucze dostawców oparte na zmiennych środowiskowych, ścieżkę konfiguracji dostawcy QA live oraz `CODEX_HOME`, jeśli jest obecne. - - Katalogi wyjściowe muszą pozostawać pod katalogiem głównym repozytorium, aby gość mógł zapisywać dane z powrotem przez zamontowany obszar roboczy. + - Uruchomienia live przekazują obsługiwane wejścia uwierzytelniania QA, które są praktyczne dla gościa: + klucze dostawców oparte na zmiennych środowiskowych, ścieżkę konfiguracji dostawcy live QA oraz `CODEX_HOME`, jeśli jest obecne. + - Katalogi wyjściowe muszą pozostać pod katalogiem głównym repozytorium, aby gość mógł zapisywać z powrotem przez zamontowany obszar roboczy. - Zapisuje standardowy raport i podsumowanie QA oraz logi Multipass w `.artifacts/qa-e2e/...`. - `pnpm qa:lab:up` - - Uruchamia witrynę QA opartą na Dockerze do pracy QA w stylu operatora. + - Uruchamia witrynę QA opartą na Dockerze do pracy QA w stylu operatorskim. - `pnpm openclaw qa aimock` - - Uruchamia tylko lokalny serwer dostawcy AIMock do bezpośredniego smoke testu protokołu. + - Uruchamia tylko lokalny serwer dostawcy AIMock do bezpośredniego smoke testowania protokołu. - `pnpm openclaw qa matrix` - - Uruchamia ścieżkę QA live dla Matrix względem tymczasowego homeserwera Tuwunel opartego na Dockerze. - - Ten host QA jest dziś przeznaczony tylko dla repozytorium/deweloperów. Spakowane instalacje OpenClaw nie dostarczają `qa-lab`, więc nie udostępniają `openclaw qa`. - - Check-outy repozytorium ładują dołączony runner bezpośrednio; nie jest potrzebny osobny krok instalacji Plugin. - - Tworzy trzy tymczasowe konta użytkowników Matrix (`driver`, `sut`, `observer`) oraz jeden prywatny pokój, a następnie uruchamia podrzędny proces QA Gateway z rzeczywistym Plugin Matrix jako transportem SUT. - - Domyślnie używa przypiętego stabilnego obrazu Tuwunel `ghcr.io/matrix-construct/tuwunel:v1.5.1`. Nadpisz przez `OPENCLAW_QA_MATRIX_TUWUNEL_IMAGE`, gdy potrzebujesz przetestować inny obraz. - - Matrix nie udostępnia współdzielonych flag źródła poświadczeń, ponieważ ta ścieżka tworzy tymczasowych użytkowników lokalnie. - - Zapisuje raport QA Matrix, podsumowanie, artefakt obserwowanych zdarzeń oraz połączony log stdout/stderr w `.artifacts/qa-e2e/...`. + - Uruchamia ścieżkę live QA Matrix względem jednorazowego homeservera Tuwunel opartego na Dockerze. + - Ten host QA jest dziś przeznaczony tylko dla repozytorium/deweloperów. Spakowane instalacje OpenClaw nie zawierają `qa-lab`, więc nie udostępniają `openclaw qa`. + - Klony repozytorium ładują wbudowany runner bezpośrednio; nie jest potrzebny osobny krok instalacji Plugin. + - Provisionuje trzech tymczasowych użytkowników Matrix (`driver`, `sut`, `observer`) oraz jeden prywatny pokój, a następnie uruchamia potomny proces QA Gateway z prawdziwym Plugin Matrix jako transportem SUT. + - Domyślnie używa przypiętego stabilnego obrazu Tuwunel `ghcr.io/matrix-construct/tuwunel:v1.5.1`. Nadpisz przez `OPENCLAW_QA_MATRIX_TUWUNEL_IMAGE`, gdy musisz przetestować inny obraz. + - Matrix nie udostępnia współdzielonych flag źródeł poświadczeń, ponieważ ta ścieżka provisionuje tymczasowych użytkowników lokalnie. + - Zapisuje raport QA Matrix, podsumowanie, artefakt observed-events oraz połączony log wyjścia stdout/stderr w `.artifacts/qa-e2e/...`. - `pnpm openclaw qa telegram` - - Uruchamia ścieżkę QA live dla Telegram względem rzeczywistej prywatnej grupy, używając tokenów bota driver i SUT ze zmiennych środowiskowych. - - Wymaga `OPENCLAW_QA_TELEGRAM_GROUP_ID`, `OPENCLAW_QA_TELEGRAM_DRIVER_BOT_TOKEN` i `OPENCLAW_QA_TELEGRAM_SUT_BOT_TOKEN`. Identyfikator grupy musi być numerycznym identyfikatorem czatu Telegram. + - Uruchamia ścieżkę live QA Telegram względem rzeczywistej prywatnej grupy z użyciem tokenów bota driver i SUT z env. + - Wymaga `OPENCLAW_QA_TELEGRAM_GROUP_ID`, `OPENCLAW_QA_TELEGRAM_DRIVER_BOT_TOKEN` oraz `OPENCLAW_QA_TELEGRAM_SUT_BOT_TOKEN`. Id grupy musi być numerycznym identyfikatorem czatu Telegram. - Obsługuje `--credential-source convex` dla współdzielonych poświadczeń z puli. Domyślnie używaj trybu env albo ustaw `OPENCLAW_QA_CREDENTIAL_SOURCE=convex`, aby włączyć dzierżawy z puli. + - Zwraca kod różny od zera, gdy dowolny scenariusz zakończy się niepowodzeniem. Użyj `--allow-failures`, gdy chcesz uzyskać artefakty bez kodu błędu. - Wymaga dwóch różnych botów w tej samej prywatnej grupie, przy czym bot SUT musi udostępniać nazwę użytkownika Telegram. - - Aby obserwacja bot-do-bot była stabilna, włącz Bot-to-Bot Communication Mode w `@BotFather` dla obu botów i upewnij się, że bot driver może obserwować ruch botów w grupie. - - Zapisuje raport QA Telegram, podsumowanie oraz artefakt obserwowanych wiadomości w `.artifacts/qa-e2e/...`. + - Aby zapewnić stabilną obserwację bot-do-bot, włącz Bot-to-Bot Communication Mode w `@BotFather` dla obu botów i upewnij się, że bot driver może obserwować ruch botów w grupie. + - Zapisuje raport QA Telegram, podsumowanie i artefakt observed-messages w `.artifacts/qa-e2e/...`. -Ścieżki live transport współdzielą jeden standardowy kontrakt, aby nowe transporty nie ulegały rozjechaniu: +Ścieżki transportu live współdzielą jeden standardowy kontrakt, aby nowe transporty nie zaczęły się rozjeżdżać: -`qa-channel` pozostaje szerokim syntetycznym pakietem QA i nie jest częścią macierzy pokrycia live transport. +`qa-channel` pozostaje szerokim syntetycznym pakietem QA i nie jest częścią macierzy pokrycia transportów live. -| Ścieżka | Canary | Bramka wzmianek | Blokada allowlist | Odpowiedź najwyższego poziomu | Wznowienie po restarcie | Dalszy ciąg wątku | Izolacja wątku | Obserwacja reakcji | Polecenie help | -| -------- | ------ | --------------- | ----------------- | ----------------------------- | ----------------------- | ----------------- | -------------- | ------------------ | -------------- | -| Matrix | x | x | x | x | x | x | x | x | | -| Telegram | x | | | | | | | | x | +| Ścieżka | Canary | Blokowanie przez wzmianki | Blokada allowlist | Odpowiedź najwyższego poziomu | Wznowienie po restarcie | Dalszy ciąg wątku | Izolacja wątku | Obserwacja reakcji | Polecenie pomocy | +| -------- | ------ | ------------------------- | ----------------- | ----------------------------- | ----------------------- | ----------------- | -------------- | ------------------ | ---------------- | +| Matrix | x | x | x | x | x | x | x | x | | +| Telegram | x | | | | | | | | x | ### Współdzielone poświadczenia Telegram przez Convex (v1) -Gdy dla `openclaw qa telegram` włączone jest `--credential-source convex` (lub `OPENCLAW_QA_CREDENTIAL_SOURCE=convex`), QA lab pobiera wyłączną dzierżawę z puli opartej na Convex, wysyła Heartbeat tej dzierżawy podczas działania ścieżki i zwalnia dzierżawę przy zamykaniu. +Gdy `--credential-source convex` (lub `OPENCLAW_QA_CREDENTIAL_SOURCE=convex`) jest włączone dla +`openclaw qa telegram`, QA lab pobiera wyłączną dzierżawę z puli opartej na Convex, wysyła +Heartbeat tej dzierżawy podczas działania ścieżki i zwalnia dzierżawę przy zamknięciu. -Referencyjny szablon projektu Convex: +Referencyjny szkielet projektu Convex: - `qa/convex-credential-broker/` @@ -112,7 +116,7 @@ Wymagane zmienne środowiskowe: - `OPENCLAW_QA_CONVEX_SECRET_CI` dla `ci` - Wybór roli poświadczeń: - CLI: `--credential-role maintainer|ci` - - Domyślnie z env: `OPENCLAW_QA_CREDENTIAL_ROLE` (domyślnie `maintainer`) + - Domyślnie z env: `OPENCLAW_QA_CREDENTIAL_ROLE` (domyślnie `ci` w CI, w przeciwnym razie `maintainer`) Opcjonalne zmienne środowiskowe: @@ -121,10 +125,10 @@ Opcjonalne zmienne środowiskowe: - `OPENCLAW_QA_CREDENTIAL_ACQUIRE_TIMEOUT_MS` (domyślnie `90000`) - `OPENCLAW_QA_CREDENTIAL_HTTP_TIMEOUT_MS` (domyślnie `15000`) - `OPENCLAW_QA_CONVEX_ENDPOINT_PREFIX` (domyślnie `/qa-credentials/v1`) -- `OPENCLAW_QA_CREDENTIAL_OWNER_ID` (opcjonalny trace id) -- `OPENCLAW_QA_ALLOW_INSECURE_HTTP=1` pozwala na URL-e Convex `http://` na loopback wyłącznie do lokalnego developmentu. +- `OPENCLAW_QA_CREDENTIAL_OWNER_ID` (opcjonalny identyfikator śledzenia) +- `OPENCLAW_QA_ALLOW_INSECURE_HTTP=1` pozwala na adresy Convex `http://` typu loopback tylko do lokalnego rozwoju. -`OPENCLAW_QA_CONVEX_SITE_URL` powinien w normalnym działaniu używać `https://`. +`OPENCLAW_QA_CONVEX_SITE_URL` powinno używać `https://` w normalnym działaniu. Polecenia administracyjne maintainera (dodawanie/usuwanie/listowanie puli) wymagają konkretnie `OPENCLAW_QA_CONVEX_SECRET_MAINTAINER`. @@ -137,9 +141,9 @@ pnpm openclaw qa credentials list --kind telegram pnpm openclaw qa credentials remove --credential-id ``` -Użyj `--json`, aby uzyskać dane wyjściowe czytelne maszynowo w skryptach i narzędziach CI. +Użyj `--json`, aby uzyskać wynik czytelny maszynowo w skryptach i narzędziach CI. -Domyślny kontrakt endpointów (`OPENCLAW_QA_CONVEX_SITE_URL` + `/qa-credentials/v1`): +Domyślny kontrakt endpointu (`OPENCLAW_QA_CONVEX_SITE_URL` + `/qa-credentials/v1`): - `POST /acquire` - Żądanie: `{ kind, ownerId, actorRole, leaseTtlMs, heartbeatIntervalMs }` @@ -166,16 +170,17 @@ Kształt payload dla rodzaju Telegram: - `{ groupId: string, driverToken: string, sutToken: string }` - `groupId` musi być ciągiem będącym numerycznym identyfikatorem czatu Telegram. -- `admin/add` waliduje ten kształt dla `kind: "telegram"` i odrzuca nieprawidłowy payload. +- `admin/add` waliduje ten kształt dla `kind: "telegram"` i odrzuca nieprawidłowe payloady. ### Dodawanie kanału do QA Dodanie kanału do systemu markdown QA wymaga dokładnie dwóch rzeczy: 1. Adaptera transportu dla kanału. -2. Pakietu scenariuszy, który sprawdza kontrakt kanału. +2. Pakietu scenariuszy, który testuje kontrakt kanału. -Nie dodawaj nowego głównego korzenia poleceń QA, gdy współdzielony host `qa-lab` może obsłużyć ten przepływ. +Nie dodawaj nowego głównego korzenia poleceń QA, gdy współdzielony host `qa-lab` może +obsłużyć ten przepływ. `qa-lab` odpowiada za współdzieloną mechanikę hosta: @@ -187,35 +192,35 @@ Nie dodawaj nowego głównego korzenia poleceń QA, gdy współdzielony host `qa - wykonywanie scenariuszy - aliasy zgodności dla starszych scenariuszy `qa-channel` -Pluginy runnerów odpowiadają za kontrakt transportu: +Plugin runnerów odpowiadają za kontrakt transportu: - jak `openclaw qa ` jest montowane pod współdzielonym korzeniem `qa` - jak konfigurowany jest Gateway dla tego transportu - jak sprawdzana jest gotowość - jak wstrzykiwane są zdarzenia przychodzące - jak obserwowane są wiadomości wychodzące -- jak udostępniane są transkrypcje i znormalizowany stan transportu -- jak wykonywane są akcje oparte na transporcie +- jak udostępniane są transkrypty i znormalizowany stan transportu +- jak wykonywane są działania oparte na transporcie - jak obsługiwany jest reset lub czyszczenie specyficzne dla transportu Minimalny próg wdrożenia dla nowego kanału to: 1. Zachować `qa-lab` jako właściciela współdzielonego korzenia `qa`. -2. Zaimplementować runner transportu na współdzielonym interfejsie hosta `qa-lab`. -3. Utrzymać mechanikę specyficzną dla transportu wewnątrz Plugin runnera lub harnessu Plugin. -4. Montować runner jako `openclaw qa ` zamiast rejestrować konkurencyjny korzeń poleceń. - Pluginy runnerów powinny deklarować `qaRunners` w `openclaw.plugin.json` i eksportować pasującą tablicę `qaRunnerCliRegistrations` z `runtime-api.ts`. - Utrzymuj `runtime-api.ts` lekkie; leniwe wykonywanie CLI i runnera powinno pozostać za oddzielnymi punktami wejścia. +2. Zaimplementować runner transportu na współdzielonym styku hosta `qa-lab`. +3. Zachować mechanikę specyficzną dla transportu wewnątrz Plugin runnera lub harnessu kanału. +4. Zamontować runner jako `openclaw qa ` zamiast rejestrować konkurencyjny główny korzeń poleceń. + Plugin runnera powinien deklarować `qaRunners` w `openclaw.plugin.json` i eksportować pasującą tablicę `qaRunnerCliRegistrations` z `runtime-api.ts`. + Zachowaj lekkość `runtime-api.ts`; leniwe wykonywanie CLI i runnera powinno pozostać za osobnymi entrypointami. 5. Tworzyć lub dostosowywać scenariusze markdown w tematycznych katalogach `qa/scenarios/`. -6. Dla nowych scenariuszy używać generycznych helperów scenariuszy. -7. Utrzymać działanie istniejących aliasów zgodności, chyba że repozytorium przeprowadza celową migrację. +6. Używać generycznych helperów scenariuszy dla nowych scenariuszy. +7. Zachować działanie istniejących aliasów zgodności, chyba że repozytorium przechodzi celową migrację. Reguła decyzyjna jest ścisła: -- Jeśli zachowanie da się wyrazić jednokrotnie w `qa-lab`, umieść je w `qa-lab`. -- Jeśli zachowanie zależy od jednego transportu kanału, utrzymuj je w tym Plugin runnera lub harnessie Plugin. +- Jeśli zachowanie można wyrazić raz w `qa-lab`, umieść je w `qa-lab`. +- Jeśli zachowanie zależy od jednego transportu kanału, pozostaw je w tym Plugin runnera lub harnessie Plugin. - Jeśli scenariusz potrzebuje nowej możliwości, z której może skorzystać więcej niż jeden kanał, dodaj helper generyczny zamiast gałęzi specyficznej dla kanału w `suite.ts`. -- Jeśli zachowanie ma sens tylko dla jednego transportu, zachowaj specyfikę transportową scenariusza i wyraź to jawnie w kontrakcie scenariusza. +- Jeśli zachowanie ma znaczenie tylko dla jednego transportu, pozostaw scenariusz specyficzny dla tego transportu i zaznacz to wyraźnie w kontrakcie scenariusza. Preferowane nazwy generycznych helperów dla nowych scenariuszy to: @@ -241,63 +246,63 @@ Aliasy zgodności pozostają dostępne dla istniejących scenariuszy, w tym: - `resetBus` Nowe prace nad kanałami powinny używać generycznych nazw helperów. -Aliasy zgodności istnieją po to, aby uniknąć migracji typu flag day, a nie jako model -dla tworzenia nowych scenariuszy. +Aliasy zgodności istnieją po to, aby uniknąć migracji typu flag day, a nie jako model dla +tworzenia nowych scenariuszy. ## Pakiety testów (co uruchamia się gdzie) -Potraktuj pakiety jako „rosnący realizm” (i rosnącą niestabilność/koszt): +Myśl o pakietach jako o „rosnącym realizmie” (i rosnącej zawodności/koszcie): -### Unit / integration (domyślne) +### Unit / integration (domyślnie) - Polecenie: `pnpm test` -- Konfiguracja: dziesięć sekwencyjnych shardów (`vitest.full-*.config.ts`) uruchamianych na istniejących zakresowych projektach Vitest -- Pliki: inwentarze core/unit w `src/**/*.test.ts`, `packages/**/*.test.ts`, `test/**/*.test.ts` oraz dopuszczone testy node w `ui`, objęte przez `vitest.unit.config.ts` +- Konfiguracja: dziesięć sekwencyjnych uruchomień shardów (`vitest.full-*.config.ts`) na istniejących zakresowych projektach Vitest +- Pliki: zasoby core/unit w `src/**/*.test.ts`, `packages/**/*.test.ts`, `test/**/*.test.ts` oraz dopuszczone testy node w `ui`, objęte przez `vitest.unit.config.ts` - Zakres: - - Czyste testy jednostkowe - - Testy integracyjne w jednym procesie (autoryzacja Gateway, routing, narzędzia, parsowanie, konfiguracja) - - Deterministyczne testy regresji dla znanych błędów + - Czyste testy unit + - Testy integracyjne w procesie (uwierzytelnianie Gateway, routing, narzędzia, parsowanie, konfiguracja) + - Deterministyczne regresje dla znanych błędów - Oczekiwania: - - Uruchamiane w CI - - Nie wymagają prawdziwych kluczy - - Powinny być szybkie i stabilne + - Uruchamia się w CI + - Nie wymaga prawdziwych kluczy + - Powinno być szybkie i stabilne - Uwaga o projektach: - - Niezawężone `pnpm test` uruchamia teraz jedenaście mniejszych konfiguracji shardów (`core-unit-src`, `core-unit-security`, `core-unit-ui`, `core-unit-support`, `core-support-boundary`, `core-contracts`, `core-bundled`, `core-runtime`, `agentic`, `auto-reply`, `extensions`) zamiast jednego ogromnego natywnego procesu root-project. Ogranicza to szczytowe RSS na obciążonych maszynach i zapobiega sytuacji, w której prace `auto-reply`/rozszerzeń zagładzają niezwiązane pakiety. - - `pnpm test --watch` nadal używa natywnego grafu projektów root `vitest.config.ts`, ponieważ pętla watch z wieloma shardami nie jest praktyczna. - - `pnpm test`, `pnpm test:watch` i `pnpm test:perf:imports` najpierw kierują jawne cele plików/katalogów do zakresowych ścieżek, więc `pnpm test extensions/discord/src/monitor/message-handler.preflight.test.ts` unika kosztu uruchamiania całego root project. - - `pnpm test:changed` rozwija zmienione ścieżki git do tych samych zakresowych ścieżek, gdy diff dotyka wyłącznie routowalnych plików źródłowych/testowych; edycje konfiguracji/ustawień nadal wracają do szerokiego ponownego uruchomienia root-project. - - Lekkie importowo testy jednostkowe z obszarów agentów, poleceń, Plugin, helperów auto-reply, `plugin-sdk` i podobnych czysto narzędziowych miejsc są kierowane do ścieżki `unit-fast`, która pomija `test/setup-openclaw-runtime.ts`; pliki stanowe/ciężkie runtime pozostają w istniejących ścieżkach. - - Wybrane pliki źródłowe helperów `plugin-sdk` i `commands` również mapują uruchomienia w trybie changed do jawnych testów sąsiednich w tych lekkich ścieżkach, dzięki czemu zmiany helperów nie wymagają ponownego uruchamiania całego ciężkiego pakietu dla tego katalogu. - - `auto-reply` ma teraz trzy dedykowane koszyki: helpery core najwyższego poziomu, testy integracyjne najwyższego poziomu `reply.*` oraz poddrzewo `src/auto-reply/reply/**`. Dzięki temu najcięższe prace harnessu reply są odseparowane od tanich testów status/chunk/token. -- Uwaga o wbudowanym runnerze: - - Gdy zmieniasz wejścia wykrywania narzędzi wiadomości lub kontekst runtime Compaction, + - Niezawężone `pnpm test` uruchamia teraz jedenaście mniejszych konfiguracji shardów (`core-unit-src`, `core-unit-security`, `core-unit-ui`, `core-unit-support`, `core-support-boundary`, `core-contracts`, `core-bundled`, `core-runtime`, `agentic`, `auto-reply`, `extensions`) zamiast jednego ogromnego natywnego procesu projektu root. To obniża szczytowe RSS na obciążonych maszynach i zapobiega temu, by prace auto-reply/extension zagłodziły niezwiązane pakiety. + - `pnpm test --watch` nadal używa natywnego grafu projektów root z `vitest.config.ts`, ponieważ pętla watch z wieloma shardami nie jest praktyczna. + - `pnpm test`, `pnpm test:watch` i `pnpm test:perf:imports` kierują jawne cele plików/katalogów najpierw przez zakresowe ścieżki, więc `pnpm test extensions/discord/src/monitor/message-handler.preflight.test.ts` unika kosztu uruchamiania pełnego projektu root. + - `pnpm test:changed` rozwija zmienione ścieżki git do tych samych zakresowych ścieżek, gdy diff dotyczy tylko routowalnych plików źródłowych/testowych; edycje konfiguracji/setup nadal wracają do szerokiego ponownego uruchomienia projektu root. + - Lekkie importowo testy unit z agents, commands, plugins, helperów auto-reply, `plugin-sdk` i podobnych czysto narzędziowych obszarów przechodzą przez ścieżkę `unit-fast`, która pomija `test/setup-openclaw-runtime.ts`; pliki stanowe/ciężkie runtime pozostają na istniejących ścieżkach. + - Wybrane pliki źródłowe helperów `plugin-sdk` i `commands` także mapują uruchomienia w trybie changed na jawne testy sąsiednie w tych lekkich ścieżkach, aby edycje helperów nie wymuszały ponownego uruchamiania pełnego ciężkiego pakietu dla tego katalogu. + - `auto-reply` ma teraz trzy dedykowane koszyki: helpery core najwyższego poziomu, testy integracyjne najwyższego poziomu `reply.*` oraz poddrzewo `src/auto-reply/reply/**`. Dzięki temu najcięższa praca harnessu reply nie trafia do tanich testów status/chunk/token. +- Uwaga o embedded runner: + - Gdy zmieniasz wejścia wykrywania message-tool lub kontekst runtime Compaction, utrzymuj oba poziomy pokrycia. - - Dodawaj skupione testy regresji helperów dla czystych granic routingu/normalizacji. - - Utrzymuj też zdrowy stan pakietów integracyjnych wbudowanego runnera: + - Dodawaj ukierunkowane regresje helperów dla czystych granic routingu/normalizacji. + - Utrzymuj też w dobrej kondycji pakiety integracyjne embedded runner: `src/agents/pi-embedded-runner/compact.hooks.test.ts`, `src/agents/pi-embedded-runner/run.overflow-compaction.test.ts` oraz `src/agents/pi-embedded-runner/run.overflow-compaction.loop.test.ts`. - - Te pakiety weryfikują, że zakresowe identyfikatory i zachowanie Compaction nadal przepływają + - Te pakiety weryfikują, że zakresowe identyfikatory i zachowanie Compaction nadal przechodzą przez rzeczywiste ścieżki `run.ts` / `compact.ts`; same testy helperów nie są - wystarczającym zamiennikiem tych ścieżek integracyjnych. + wystarczającym zamiennikiem dla tych ścieżek integracyjnych. - Uwaga o puli: - Bazowa konfiguracja Vitest domyślnie używa teraz `threads`. - - Współdzielona konfiguracja Vitest ustawia również na stałe `isolate: false` i używa nieizolowanego runnera we wszystkich root projects, konfiguracjach e2e i live. - - Główna ścieżka UI zachowuje ustawienia `jsdom` i optimizer, ale teraz także działa na współdzielonym nieizolowanym runnerze. + - Współdzielona konfiguracja Vitest ustawia również `isolate: false` i używa nieizolowanego runnera we wszystkich projektach root, konfiguracjach e2e i live. + - Główna ścieżka UI zachowuje konfigurację `jsdom` i optymalizator, ale teraz również działa na współdzielonym nieizolowanym runnerze. - Każdy shard `pnpm test` dziedziczy te same domyślne ustawienia `threads` + `isolate: false` ze współdzielonej konfiguracji Vitest. - - Współdzielony launcher `scripts/run-vitest.mjs` dodaje teraz domyślnie także `--no-maglev` dla podrzędnych procesów Node Vitest, aby ograniczyć churn kompilacji V8 podczas dużych lokalnych uruchomień. Ustaw `OPENCLAW_VITEST_ENABLE_MAGLEV=1`, jeśli chcesz porównać zachowanie ze standardowym V8. + - Współdzielony launcher `scripts/run-vitest.mjs` domyślnie dodaje teraz także `--no-maglev` dla podrzędnych procesów Node Vitest, aby ograniczyć churn kompilacji V8 podczas dużych lokalnych uruchomień. Ustaw `OPENCLAW_VITEST_ENABLE_MAGLEV=1`, jeśli chcesz porównać zachowanie ze standardowym V8. - Uwaga o szybkiej lokalnej iteracji: - - `pnpm test:changed` kieruje do zakresowych ścieżek, gdy zmienione ścieżki da się czysto odwzorować na mniejszy pakiet. - - `pnpm test:max` i `pnpm test:changed:max` zachowują ten sam sposób routingu, tylko z wyższym limitem workerów. - - Automatyczne skalowanie lokalnych workerów jest teraz celowo konserwatywne i dodatkowo zmniejsza intensywność działania, gdy średnie obciążenie hosta jest już wysokie, dzięki czemu wiele równoczesnych uruchomień Vitest domyślnie powoduje mniej szkód. - - Bazowa konfiguracja Vitest oznacza pliki projektów/konfiguracji jako `forceRerunTriggers`, aby ponowne uruchomienia w trybie changed pozostawały poprawne po zmianach w okablowaniu testów. - - Konfiguracja utrzymuje włączone `OPENCLAW_VITEST_FS_MODULE_CACHE` na obsługiwanych hostach; ustaw `OPENCLAW_VITEST_FS_MODULE_CACHE_PATH=/abs/path`, jeśli chcesz mieć jedną jawną lokalizację cache do bezpośredniego profilowania. + - `pnpm test:changed` kieruje przez zakresowe ścieżki, gdy zmienione ścieżki da się czysto odwzorować na mniejszy pakiet. + - `pnpm test:max` i `pnpm test:changed:max` zachowują to samo routowanie, tylko z wyższym limitem workerów. + - Automatyczne skalowanie lokalnych workerów jest teraz celowo konserwatywne i dodatkowo wycofuje się, gdy średnie obciążenie hosta jest już wysokie, więc wiele równoczesnych uruchomień Vitest domyślnie szkodzi mniej. + - Bazowa konfiguracja Vitest oznacza projekty/pliki konfiguracyjne jako `forceRerunTriggers`, aby ponowne uruchomienia w trybie changed pozostawały poprawne przy zmianach w okablowaniu testów. + - Konfiguracja utrzymuje włączone `OPENCLAW_VITEST_FS_MODULE_CACHE` na obsługiwanych hostach; ustaw `OPENCLAW_VITEST_FS_MODULE_CACHE_PATH=/abs/path`, jeśli chcesz jedną jawną lokalizację cache do bezpośredniego profilowania. - Uwaga o debugowaniu wydajności: - - `pnpm test:perf:imports` włącza raportowanie czasu importów w Vitest oraz dane wyjściowe z rozbiciem importów. + - `pnpm test:perf:imports` włącza raportowanie czasu importu Vitest oraz wyjście z rozbiciem importów. - `pnpm test:perf:imports:changed` zawęża ten sam widok profilowania do plików zmienionych od `origin/main`. -- `pnpm test:perf:changed:bench -- --ref ` porównuje routowane `test:changed` ze ścieżką natywnego root-project dla tego zatwierdzonego diffu i wypisuje czas ścienny oraz maksymalne RSS na macOS. -- `pnpm test:perf:changed:bench -- --worktree` wykonuje benchmark bieżącego brudnego drzewa, kierując listę zmienionych plików przez `scripts/test-projects.mjs` i główną konfigurację Vitest. - - `pnpm test:perf:profile:main` zapisuje profil CPU głównego wątku dla kosztów uruchamiania i transformacji Vitest/Vite. +- `pnpm test:perf:changed:bench -- --ref ` porównuje kierowane `test:changed` ze ścieżką natywnego projektu root dla tego zatwierdzonego diffu i wypisuje wall time oraz maksymalne RSS na macOS. +- `pnpm test:perf:changed:bench -- --worktree` benchmarkuje bieżące brudne drzewo, kierując listę zmienionych plików przez `scripts/test-projects.mjs` i główną konfigurację Vitest. + - `pnpm test:perf:profile:main` zapisuje profil CPU głównego wątku dla narzutu uruchamiania i transformacji Vitest/Vite. - `pnpm test:perf:profile:runner` zapisuje profile CPU+heap runnera dla pakietu unit z wyłączoną równoległością plików. ### E2E (smoke Gateway) @@ -308,17 +313,17 @@ Potraktuj pakiety jako „rosnący realizm” (i rosnącą niestabilność/koszt - Domyślne ustawienia runtime: - Używa `threads` Vitest z `isolate: false`, zgodnie z resztą repozytorium. - Używa adaptacyjnych workerów (CI: do 2, lokalnie: domyślnie 1). - - Domyślnie działa w trybie cichym, aby ograniczyć narzut I/O konsoli. + - Domyślnie działa w trybie silent, aby ograniczyć narzut I/O konsoli. - Przydatne nadpisania: - - `OPENCLAW_E2E_WORKERS=` aby wymusić liczbę workerów (maksymalnie 16). - - `OPENCLAW_E2E_VERBOSE=1` aby ponownie włączyć szczegółowe dane wyjściowe konsoli. + - `OPENCLAW_E2E_WORKERS=` aby wymusić liczbę workerów (limit 16). + - `OPENCLAW_E2E_VERBOSE=1` aby ponownie włączyć szczegółowe wyjście konsoli. - Zakres: - Zachowanie end-to-end Gateway z wieloma instancjami - - Powierzchnie WebSocket/HTTP, parowanie Node i cięższe scenariusze sieciowe + - Powierzchnie WebSocket/HTTP, parowanie Node i cięższa komunikacja sieciowa - Oczekiwania: - - Uruchamiane w CI (gdy włączone w pipeline) - - Nie wymagają prawdziwych kluczy - - Mają więcej ruchomych części niż testy jednostkowe (mogą być wolniejsze) + - Uruchamia się w CI (gdy jest włączone w pipeline) + - Nie wymaga prawdziwych kluczy + - Ma więcej ruchomych części niż testy unit (może być wolniejsze) ### E2E: smoke backendu OpenShell @@ -332,10 +337,10 @@ Potraktuj pakiety jako „rosnący realizm” (i rosnącą niestabilność/koszt - Oczekiwania: - Tylko opt-in; nie jest częścią domyślnego uruchomienia `pnpm test:e2e` - Wymaga lokalnego CLI `openshell` oraz działającego demona Docker - - Używa odizolowanych `HOME` / `XDG_CONFIG_HOME`, a następnie niszczy testowy Gateway i sandbox + - Używa odizolowanego `HOME` / `XDG_CONFIG_HOME`, a następnie niszczy testowy Gateway i sandbox - Przydatne nadpisania: - - `OPENCLAW_E2E_OPENSHELL=1` aby włączyć test przy ręcznym uruchamianiu szerszego pakietu e2e - - `OPENCLAW_E2E_OPENSHELL_COMMAND=/path/to/openshell` aby wskazać niestandardowe binarium CLI lub skrypt wrappera + - `OPENCLAW_E2E_OPENSHELL=1`, aby włączyć test przy ręcznym uruchamianiu szerszego pakietu e2e + - `OPENCLAW_E2E_OPENSHELL_COMMAND=/path/to/openshell`, aby wskazać niestandardowe binarium CLI lub skrypt wrappera ### Live (rzeczywiści dostawcy + rzeczywiste modele) @@ -344,115 +349,115 @@ Potraktuj pakiety jako „rosnący realizm” (i rosnącą niestabilność/koszt - Pliki: `src/**/*.live.test.ts` - Domyślnie: **włączone** przez `pnpm test:live` (ustawia `OPENCLAW_LIVE_TEST=1`) - Zakres: - - „Czy ten dostawca/model rzeczywiście działa _dzisiaj_ z prawdziwymi poświadczeniami?” - - Wykrywanie zmian formatu dostawcy, osobliwości wywoływania narzędzi, problemów z autoryzacją i zachowania limitów szybkości + - „Czy ten dostawca/model faktycznie działa _dzisiaj_ z prawdziwymi poświadczeniami?” + - Wykrywanie zmian formatu dostawcy, specyfiki wywoływania narzędzi, problemów z uwierzytelnianiem i zachowania limitów szybkości - Oczekiwania: - - Z założenia niestabilne w CI (prawdziwe sieci, prawdziwe polityki dostawców, limity, awarie) - - Kosztują pieniądze / zużywają limity szybkości + - Z założenia nie jest stabilne w CI (prawdziwe sieci, prawdziwe polityki dostawców, limity, awarie) + - Kosztuje pieniądze / zużywa limity - Lepiej uruchamiać zawężone podzbiory zamiast „wszystkiego” -- Uruchomienia live pobierają `~/.profile`, aby uzupełnić brakujące klucze API. -- Domyślnie uruchomienia live nadal izolują `HOME` i kopiują materiały config/auth do tymczasowego testowego katalogu domowego, tak aby fixture unit nie mogły modyfikować prawdziwego `~/.openclaw`. -- Ustaw `OPENCLAW_LIVE_USE_REAL_HOME=1` tylko wtedy, gdy celowo chcesz, aby testy live używały twojego rzeczywistego katalogu domowego. -- `pnpm test:live` domyślnie działa teraz w cichszym trybie: zachowuje dane wyjściowe postępu `[live] ...`, ale ukrywa dodatkowy komunikat o `~/.profile` i wycisza logi bootstrapu Gateway oraz hałas Bonjour. Ustaw `OPENCLAW_LIVE_TEST_QUIET=0`, jeśli chcesz ponownie zobaczyć pełne logi uruchamiania. -- Rotacja kluczy API (specyficzna dla dostawcy): ustaw `*_API_KEYS` w formacie rozdzielanym przecinkami/średnikami lub `*_API_KEY_1`, `*_API_KEY_2` (na przykład `OPENAI_API_KEYS`, `ANTHROPIC_API_KEYS`, `GEMINI_API_KEYS`) albo nadpisanie per-live przez `OPENCLAW_LIVE_*_KEY`; testy ponawiają próby przy odpowiedziach z limitem szybkości. -- Dane wyjściowe postępu/Heartbeat: - - Pakiety live emitują teraz linie postępu do stderr, dzięki czemu długie wywołania dostawców są widocznie aktywne nawet wtedy, gdy przechwytywanie konsoli Vitest jest ciche. - - `vitest.live.config.ts` wyłącza przechwytywanie konsoli Vitest, aby linie postępu dostawcy/Gateway były strumieniowane natychmiast podczas uruchomień live. +- Uruchomienia live pobierają `~/.profile`, aby przechwycić brakujące klucze API. +- Domyślnie uruchomienia live nadal izolują `HOME` i kopiują materiał konfiguracyjny/auth do tymczasowego katalogu testowego, aby fixture unit nie mogły modyfikować prawdziwego `~/.openclaw`. +- Ustaw `OPENCLAW_LIVE_USE_REAL_HOME=1` tylko wtedy, gdy celowo potrzebujesz, aby testy live używały prawdziwego katalogu domowego. +- `pnpm test:live` domyślnie działa teraz ciszej: zachowuje wyjście postępu `[live] ...`, ale ukrywa dodatkowy komunikat o `~/.profile` i wycisza logi bootstrapu Gateway / chatter Bonjour. Ustaw `OPENCLAW_LIVE_TEST_QUIET=0`, jeśli chcesz odzyskać pełne logi startowe. +- Rotacja kluczy API (specyficzna dla dostawcy): ustaw `*_API_KEYS` w formacie przecinki/średniki lub `*_API_KEY_1`, `*_API_KEY_2` (na przykład `OPENAI_API_KEYS`, `ANTHROPIC_API_KEYS`, `GEMINI_API_KEYS`) albo nadpisanie per-live przez `OPENCLAW_LIVE_*_KEY`; testy ponawiają przy odpowiedziach z limitem szybkości. +- Wyjście postępu/Heartbeat: + - Pakiety live emitują teraz linie postępu na stderr, aby długie wywołania dostawców były widocznie aktywne nawet wtedy, gdy przechwytywanie konsoli Vitest jest wyciszone. + - `vitest.live.config.ts` wyłącza przechwytywanie konsoli Vitest, więc linie postępu dostawcy/Gateway są przesyłane natychmiast podczas uruchomień live. - Dostosuj Heartbeat bezpośredniego modelu przez `OPENCLAW_LIVE_HEARTBEAT_MS`. - - Dostosuj Heartbeat Gateway/sond przez `OPENCLAW_LIVE_GATEWAY_HEARTBEAT_MS`. + - Dostosuj Heartbeat Gateway/testów przez `OPENCLAW_LIVE_GATEWAY_HEARTBEAT_MS`. ## Który pakiet powinienem uruchomić? Użyj tej tabeli decyzyjnej: -- Edytujesz logikę/testy: uruchom `pnpm test` (oraz `pnpm test:coverage`, jeśli zmieniło się dużo) -- Dotykasz sieci Gateway / protokołu WS / parowania: dodaj `pnpm test:e2e` -- Debugujesz „mój bot nie działa” / błędy specyficzne dla dostawcy / wywoływanie narzędzi: uruchom zawężone `pnpm test:live` +- Edycja logiki/testów: uruchom `pnpm test` (oraz `pnpm test:coverage`, jeśli zmieniłeś dużo) +- Zmiany w sieci Gateway / protokole WS / parowaniu: dodaj `pnpm test:e2e` +- Debugowanie „mój bot nie działa” / awarii specyficznych dla dostawcy / wywoływania narzędzi: uruchom zawężone `pnpm test:live` ## Live: przegląd możliwości Node Android - Test: `src/gateway/android-node.capabilities.live.test.ts` - Skrypt: `pnpm android:test:integration` -- Cel: wywołać **każde obecnie reklamowane polecenie** przez podłączony Node Android i sprawdzić zachowanie kontraktu poleceń. +- Cel: wywołać **każde polecenie aktualnie reklamowane** przez podłączony Node Android i sprawdzić zachowanie kontraktu polecenia. - Zakres: - - Wstępnie przygotowana/ręczna konfiguracja (pakiet nie instaluje, nie uruchamia ani nie paruje aplikacji). - - Walidacja `node.invoke` Gateway polecenie po poleceniu dla wybranego Node Android. + - Konfiguracja wstępna/ręczna (pakiet nie instaluje, nie uruchamia ani nie paruje aplikacji). + - Walidacja Gateway `node.invoke` polecenie po poleceniu dla wybranego Node Android. - Wymagana wcześniejsza konfiguracja: - Aplikacja Android jest już połączona i sparowana z Gateway. - Aplikacja pozostaje na pierwszym planie. - - Uprawnienia/zgody na przechwytywanie są nadane dla możliwości, które mają przejść. + - Przyznane uprawnienia/zgody przechwytywania dla możliwości, które mają przejść. - Opcjonalne nadpisania celu: - `OPENCLAW_ANDROID_NODE_ID` lub `OPENCLAW_ANDROID_NODE_NAME`. - `OPENCLAW_ANDROID_GATEWAY_URL` / `OPENCLAW_ANDROID_GATEWAY_TOKEN` / `OPENCLAW_ANDROID_GATEWAY_PASSWORD`. -- Pełne szczegóły konfiguracji Androida: [Android App](/pl/platforms/android) +- Pełne szczegóły konfiguracji Android: [Android App](/pl/platforms/android) -## Live: smoke modeli (klucze profili) +## Live: smoke modelu (klucze profilu) Testy live są podzielone na dwie warstwy, aby można było izolować awarie: -- „Direct model” mówi nam, czy dostawca/model potrafi w ogóle odpowiedzieć przy danym kluczu. -- „Gateway smoke” mówi nam, czy działa pełny potok gateway+agent dla tego modelu (sesje, historia, narzędzia, polityka sandboxa itd.). +- „Direct model” mówi nam, czy dostawca/model w ogóle potrafi odpowiedzieć przy danym kluczu. +- „Gateway smoke” mówi nam, czy pełny pipeline gateway+agent działa dla tego modelu (sesje, historia, narzędzia, polityka sandboxa itp.). -### Warstwa 1: bezpośrednie uzupełnianie modelu (bez Gateway) +### Warstwa 1: bezpośrednie uzupełnienie modelu (bez Gateway) - Test: `src/agents/models.profiles.live.test.ts` - Cel: - Wyliczyć wykryte modele - - Użyć `getApiKeyForModel`, aby wybrać modele, do których masz poświadczenia + - Użyć `getApiKeyForModel` do wyboru modeli, dla których masz poświadczenia - Uruchomić małe uzupełnienie dla każdego modelu (oraz ukierunkowane regresje tam, gdzie to potrzebne) - Jak włączyć: - - `pnpm test:live` (lub `OPENCLAW_LIVE_TEST=1`, jeśli wywołujesz Vitest bezpośrednio) -- Ustaw `OPENCLAW_LIVE_MODELS=modern` (lub `all`, alias dla `modern`), aby rzeczywiście uruchomić ten pakiet; w przeciwnym razie zostanie pominięty, aby `pnpm test:live` pozostawało skupione na smoke testach Gateway + - `pnpm test:live` (lub `OPENCLAW_LIVE_TEST=1`, jeśli uruchamiasz Vitest bezpośrednio) +- Ustaw `OPENCLAW_LIVE_MODELS=modern` (lub `all`, alias dla `modern`), aby faktycznie uruchomić ten pakiet; w przeciwnym razie zostanie pominięty, aby `pnpm test:live` pozostało skupione na smoke testach Gateway - Jak wybierać modele: - - `OPENCLAW_LIVE_MODELS=modern`, aby uruchomić nowoczesną allowlistę (Opus/Sonnet 4.6+, GPT-5.x + Codex, Gemini 3, GLM 4.7, MiniMax M2.7, Grok 4) - - `OPENCLAW_LIVE_MODELS=all` jest aliasem dla nowoczesnej allowlisty - - albo `OPENCLAW_LIVE_MODELS="openai/gpt-5.4,anthropic/claude-opus-4-6,..."` (allowlista rozdzielana przecinkami) - - Przebiegi modern/all domyślnie używają dobranego limitu o wysokim sygnale; ustaw `OPENCLAW_LIVE_MAX_MODELS=0` dla pełnego przebiegu modern albo dodatnią liczbę dla mniejszego limitu. + - `OPENCLAW_LIVE_MODELS=modern`, aby uruchomić nowoczesną allowlist (Opus/Sonnet 4.6+, GPT-5.x + Codex, Gemini 3, GLM 4.7, MiniMax M2.7, Grok 4) + - `OPENCLAW_LIVE_MODELS=all` jest aliasem dla nowoczesnej allowlist + - albo `OPENCLAW_LIVE_MODELS="openai/gpt-5.4,anthropic/claude-opus-4-6,..."` (allowlist rozdzielana przecinkami) + - Przebiegi modern/all domyślnie używają starannie dobranego limitu o wysokim sygnale; ustaw `OPENCLAW_LIVE_MAX_MODELS=0` dla wyczerpującego przebiegu modern albo dodatnią liczbę dla mniejszego limitu. - Jak wybierać dostawców: - - `OPENCLAW_LIVE_PROVIDERS="google,google-antigravity,google-gemini-cli"` (allowlista rozdzielana przecinkami) + - `OPENCLAW_LIVE_PROVIDERS="google,google-antigravity,google-gemini-cli"` (allowlist rozdzielana przecinkami) - Skąd pochodzą klucze: - - Domyślnie: magazyn profili i awaryjne wartości z env - - Ustaw `OPENCLAW_LIVE_REQUIRE_PROFILE_KEYS=1`, aby wymusić użycie wyłącznie **magazynu profili** + - Domyślnie: magazyn profili i zapasowe wartości z env + - Ustaw `OPENCLAW_LIVE_REQUIRE_PROFILE_KEYS=1`, aby wymusić użycie **wyłącznie magazynu profili** - Dlaczego to istnieje: - - Oddziela „API dostawcy jest zepsute / klucz jest nieprawidłowy” od „potok agenta Gateway jest zepsuty” - - Zawiera małe, odizolowane regresje (przykład: przepływy OpenAI Responses/Codex Responses reasoning replay + tool-call) + - Rozdziela „API dostawcy jest zepsute / klucz jest nieprawidłowy” od „pipeline Gateway agenta jest zepsuty” + - Zawiera małe, odizolowane regresje (przykład: OpenAI Responses/Codex Responses reasoning replay + przepływy tool-call) -### Warstwa 2: Gateway + smoke agenta dev (to, co naprawdę robi „@openclaw”) +### Warstwa 2: smoke Gateway + agenta dev (to, co faktycznie robi „@openclaw”) - Test: `src/gateway/gateway-models.profiles.live.test.ts` - Cel: - Uruchomić Gateway w procesie - - Utworzyć/zmodyfikować sesję `agent:dev:*` (nadpisanie modelu dla każdego uruchomienia) - - Iterować po modelach z kluczami i sprawdzać: + - Utworzyć/zaaktualizować sesję `agent:dev:*` (nadpisanie modelu dla każdego uruchomienia) + - Iterować po modelach-z-kluczami i sprawdzić: - „znaczącą” odpowiedź (bez narzędzi) - - że rzeczywiste wywołanie narzędzia działa (sonda odczytu) - - opcjonalne dodatkowe sondy narzędzi (sonda exec+read) - - że ścieżki regresji OpenAI (tylko tool-call → dalszy ciąg) nadal działają -- Szczegóły sond (aby można było szybko wyjaśniać błędy): - - sonda `read`: test zapisuje plik nonce w obszarze roboczym i prosi agenta o jego `read` oraz zwrócenie nonce. - - sonda `exec+read`: test prosi agenta o zapisanie nonce przez `exec` do pliku tymczasowego, a następnie odczytanie go przez `read`. - - sonda obrazu: test dołącza wygenerowany PNG (kot + losowy kod) i oczekuje, że model zwróci `cat `. - - Odniesienie do implementacji: `src/gateway/gateway-models.profiles.live.test.ts` i `src/gateway/live-image-probe.ts`. + - że działa rzeczywiste wywołanie narzędzia (test `read`) + - opcjonalne dodatkowe testy narzędzi (test `exec+read`) + - że ścieżki regresji OpenAI (tylko tool-call → follow-up) nadal działają +- Szczegóły testów (aby można było szybko wyjaśniać awarie): + - test `read`: test zapisuje plik z nonce w obszarze roboczym i prosi agenta o jego `read` i odesłanie nonce. + - test `exec+read`: test prosi agenta o zapisanie nonce do pliku tymczasowego przez `exec`, a następnie odczytanie go przez `read`. + - test obrazu: test dołącza wygenerowany PNG (kot + losowy kod) i oczekuje, że model zwróci `cat `. + - Referencja implementacji: `src/gateway/gateway-models.profiles.live.test.ts` oraz `src/gateway/live-image-probe.ts`. - Jak włączyć: - - `pnpm test:live` (lub `OPENCLAW_LIVE_TEST=1`, jeśli wywołujesz Vitest bezpośrednio) + - `pnpm test:live` (lub `OPENCLAW_LIVE_TEST=1`, jeśli uruchamiasz Vitest bezpośrednio) - Jak wybierać modele: - - Domyślnie: nowoczesna allowlista (Opus/Sonnet 4.6+, GPT-5.x + Codex, Gemini 3, GLM 4.7, MiniMax M2.7, Grok 4) - - `OPENCLAW_LIVE_GATEWAY_MODELS=all` jest aliasem dla nowoczesnej allowlisty + - Domyślnie: nowoczesna allowlist (Opus/Sonnet 4.6+, GPT-5.x + Codex, Gemini 3, GLM 4.7, MiniMax M2.7, Grok 4) + - `OPENCLAW_LIVE_GATEWAY_MODELS=all` jest aliasem dla nowoczesnej allowlist - Albo ustaw `OPENCLAW_LIVE_GATEWAY_MODELS="provider/model"` (lub listę rozdzielaną przecinkami), aby zawęzić - - Przebiegi gateway modern/all domyślnie używają dobranego limitu o wysokim sygnale; ustaw `OPENCLAW_LIVE_GATEWAY_MAX_MODELS=0` dla pełnego przebiegu modern albo dodatnią liczbę dla mniejszego limitu. -- Jak wybierać dostawców (unikaj „wszystkiego z OpenRouter”): - - `OPENCLAW_LIVE_GATEWAY_PROVIDERS="google,google-antigravity,google-gemini-cli,openai,anthropic,zai,minimax"` (allowlista rozdzielana przecinkami) -- Sondy narzędzi i obrazu są zawsze włączone w tym teście live: - - sonda `read` + sonda `exec+read` (obciążenie narzędzi) - - sonda obrazu uruchamia się, gdy model deklaruje obsługę wejścia obrazowego - - Przepływ (na wysokim poziomie): + - Przebiegi modern/all dla Gateway domyślnie używają starannie dobranego limitu o wysokim sygnale; ustaw `OPENCLAW_LIVE_GATEWAY_MAX_MODELS=0` dla wyczerpującego przebiegu modern albo dodatnią liczbę dla mniejszego limitu. +- Jak wybierać dostawców (unikaj „wszystko z OpenRouter”): + - `OPENCLAW_LIVE_GATEWAY_PROVIDERS="google,google-antigravity,google-gemini-cli,openai,anthropic,zai,minimax"` (allowlist rozdzielana przecinkami) +- Testy narzędzi + obrazu są zawsze włączone w tym teście live: + - test `read` + test `exec+read` (obciążenie narzędzi) + - test obrazu uruchamia się, gdy model deklaruje obsługę wejścia obrazowego + - Przepływ (wysoki poziom): - Test generuje mały PNG z napisem „CAT” + losowy kod (`src/gateway/live-image-probe.ts`) - Wysyła go przez `agent` `attachments: [{ mimeType: "image/png", content: "" }]` - Gateway parsuje załączniki do `images[]` (`src/gateway/server-methods/agent.ts` + `src/gateway/chat-attachments.ts`) - - Wbudowany agent przekazuje multimodalną wiadomość użytkownika do modelu - - Asercja: odpowiedź zawiera `cat` + kod (tolerancja OCR: drobne błędy są dopuszczalne) + - Embedded agent przekazuje multimodalną wiadomość użytkownika do modelu + - Asercja: odpowiedź zawiera `cat` + kod (tolerancja OCR: drobne błędy są dozwolone) -Wskazówka: aby zobaczyć, co możesz testować na swojej maszynie (i dokładne identyfikatory `provider/model`), uruchom: +Wskazówka: aby zobaczyć, co możesz testować na swojej maszynie (oraz dokładne identyfikatory `provider/model`), uruchom: ```bash openclaw models list @@ -462,12 +467,12 @@ openclaw models list --json ## Live: smoke backendu CLI (Claude, Codex, Gemini lub inne lokalne CLI) - Test: `src/gateway/gateway-cli-backend.live.test.ts` -- Cel: zweryfikować potok Gateway + agent przy użyciu lokalnego backendu CLI, bez naruszania domyślnej konfiguracji. +- Cel: zweryfikować pipeline Gateway + agenta z użyciem lokalnego backendu CLI, bez naruszania domyślnej konfiguracji. - Domyślne ustawienia smoke specyficzne dla backendu znajdują się w definicji `cli-backend.ts` należącej do odpowiedniego rozszerzenia. - Włączanie: - - `pnpm test:live` (lub `OPENCLAW_LIVE_TEST=1`, jeśli wywołujesz Vitest bezpośrednio) + - `pnpm test:live` (lub `OPENCLAW_LIVE_TEST=1`, jeśli uruchamiasz Vitest bezpośrednio) - `OPENCLAW_LIVE_CLI_BACKEND=1` -- Domyślne ustawienia: +- Domyślne: - Domyślny dostawca/model: `claude-cli/claude-sonnet-4-6` - Zachowanie command/args/image pochodzi z metadanych Plugin właściciela backendu CLI. - Nadpisania (opcjonalne): @@ -475,10 +480,10 @@ openclaw models list --json - `OPENCLAW_LIVE_CLI_BACKEND_COMMAND="/full/path/to/codex"` - `OPENCLAW_LIVE_CLI_BACKEND_ARGS='["exec","--json","--color","never","--sandbox","read-only","--skip-git-repo-check"]'` - `OPENCLAW_LIVE_CLI_BACKEND_IMAGE_PROBE=1`, aby wysłać rzeczywisty załącznik obrazu (ścieżki są wstrzykiwane do promptu). - - `OPENCLAW_LIVE_CLI_BACKEND_IMAGE_ARG="--image"`, aby przekazywać ścieżki plików obrazów jako argumenty CLI zamiast przez wstrzyknięcie do promptu. - - `OPENCLAW_LIVE_CLI_BACKEND_IMAGE_MODE="repeat"` (lub `"list"`), aby sterować sposobem przekazywania argumentów obrazów, gdy ustawione jest `IMAGE_ARG`. + - `OPENCLAW_LIVE_CLI_BACKEND_IMAGE_ARG="--image"`, aby przekazywać ścieżki plików obrazów jako argumenty CLI zamiast przez wstrzykiwanie do promptu. + - `OPENCLAW_LIVE_CLI_BACKEND_IMAGE_MODE="repeat"` (lub `"list"`), aby kontrolować sposób przekazywania argumentów obrazu, gdy ustawiono `IMAGE_ARG`. - `OPENCLAW_LIVE_CLI_BACKEND_RESUME_PROBE=1`, aby wysłać drugą turę i zweryfikować przepływ wznawiania. - - `OPENCLAW_LIVE_CLI_BACKEND_MODEL_SWITCH_PROBE=0`, aby wyłączyć domyślną sondę ciągłości tej samej sesji Claude Sonnet -> Opus (ustaw `1`, aby wymusić jej włączenie, gdy wybrany model obsługuje cel przełączenia). + - `OPENCLAW_LIVE_CLI_BACKEND_MODEL_SWITCH_PROBE=0`, aby wyłączyć domyślny test ciągłości tej samej sesji Claude Sonnet -> Opus (ustaw `1`, aby wymusić jego włączenie, gdy wybrany model obsługuje cel przełączenia). Przykład: @@ -506,27 +511,27 @@ pnpm test:docker:live-cli-backend:gemini Uwagi: - Runner Docker znajduje się w `scripts/test-live-cli-backend-docker.sh`. -- Uruchamia smoke live backendu CLI wewnątrz obrazu Docker repozytorium jako użytkownik `node` bez uprawnień roota. -- Rozwiązuje metadane smoke CLI z rozszerzenia właściciela, a następnie instaluje pasujący pakiet Linux CLI (`@anthropic-ai/claude-code`, `@openai/codex` lub `@google/gemini-cli`) do buforowanego zapisywalnego prefiksu pod `OPENCLAW_DOCKER_CLI_TOOLS_DIR` (domyślnie: `~/.cache/openclaw/docker-cli-tools`). -- `pnpm test:docker:live-cli-backend:claude-subscription` wymaga przenośnego OAuth subskrypcji Claude Code przez `~/.claude/.credentials.json` z `claudeAiOauth.subscriptionType` albo `CLAUDE_CODE_OAUTH_TOKEN` z `claude setup-token`. Najpierw potwierdza bezpośrednie `claude -p` w Dockerze, a następnie uruchamia dwie tury Gateway CLI-backend bez zachowywania zmiennych środowiskowych z kluczem API Anthropic. Ta ścieżka subskrypcji domyślnie wyłącza sondy Claude MCP/tool i image, ponieważ Claude obecnie rozlicza użycie aplikacji zewnętrznych przez billing extra-usage zamiast zwykłych limitów planu subskrypcji. -- Smoke live backendu CLI testuje teraz ten sam przepływ end-to-end dla Claude, Codex i Gemini: tura tekstowa, tura klasyfikacji obrazu, a następnie wywołanie narzędzia MCP `cron` zweryfikowane przez CLI Gateway. -- Domyślny smoke Claude dodatkowo modyfikuje sesję z Sonnet do Opus i weryfikuje, że wznowiona sesja nadal pamięta wcześniejszą notatkę. +- Uruchamia smoke test live CLI-backend wewnątrz obrazu Docker repozytorium jako nieuprzywilejowany użytkownik `node`. +- Rozpoznaje metadane smoke CLI z rozszerzenia właściciela, a następnie instaluje pasujący pakiet Linux CLI (`@anthropic-ai/claude-code`, `@openai/codex` lub `@google/gemini-cli`) do cache’owanego zapisywalnego prefiksu pod `OPENCLAW_DOCKER_CLI_TOOLS_DIR` (domyślnie: `~/.cache/openclaw/docker-cli-tools`). +- `pnpm test:docker:live-cli-backend:claude-subscription` wymaga przenośnego subskrypcyjnego OAuth Claude Code przez `~/.claude/.credentials.json` z `claudeAiOauth.subscriptionType` albo `CLAUDE_CODE_OAUTH_TOKEN` z `claude setup-token`. Najpierw potwierdza bezpośrednie `claude -p` w Dockerze, a potem uruchamia dwie tury Gateway CLI-backend bez zachowywania zmiennych środowiskowych klucza Anthropic API. Ta ścieżka subskrypcyjna domyślnie wyłącza testy Claude MCP/tool i obrazu, ponieważ Claude obecnie rozlicza użycie aplikacji firm trzecich przez dodatkowe opłaty zamiast normalnych limitów planu subskrypcji. +- Smoke test live CLI-backend sprawdza teraz ten sam przepływ end-to-end dla Claude, Codex i Gemini: tura tekstowa, tura klasyfikacji obrazu, a następnie wywołanie narzędzia MCP `cron` zweryfikowane przez CLI Gateway. +- Domyślny smoke dla Claude dodatkowo aktualizuje sesję z Sonnet do Opus i sprawdza, czy wznowiona sesja nadal pamięta wcześniejszą notatkę. -## Live: smoke powiązania ACP (`/acp spawn ... --bind here`) +## Live: smoke ACP bind (`/acp spawn ... --bind here`) - Test: `src/gateway/gateway-acp-bind.live.test.ts` -- Cel: zweryfikować rzeczywisty przepływ powiązania rozmowy ACP z aktywnym agentem ACP: +- Cel: zweryfikować rzeczywisty przepływ conversation-bind ACP z live agentem ACP: - wysłać `/acp spawn --bind here` - - powiązać syntetyczną rozmowę kanału wiadomości w miejscu - - wysłać zwykły dalszy ciąg w tej samej rozmowie - - zweryfikować, że dalszy ciąg trafia do transkryptu powiązanej sesji ACP + - związać syntetyczną rozmowę kanału wiadomości na miejscu + - wysłać zwykły follow-up w tej samej rozmowie + - zweryfikować, że follow-up trafia do transkryptu związanej sesji ACP - Włączanie: - `pnpm test:live src/gateway/gateway-acp-bind.live.test.ts` - `OPENCLAW_LIVE_ACP_BIND=1` -- Domyślne ustawienia: +- Domyślne: - Agenci ACP w Dockerze: `claude,codex,gemini` - Agent ACP dla bezpośredniego `pnpm test:live ...`: `claude` - - Syntetyczny kanał: kontekst rozmowy w stylu prywatnej wiadomości Slack + - Kanał syntetyczny: kontekst rozmowy w stylu Slack DM - Backend ACP: `acpx` - Nadpisania: - `OPENCLAW_LIVE_ACP_BIND_AGENT=claude` @@ -535,8 +540,8 @@ Uwagi: - `OPENCLAW_LIVE_ACP_BIND_AGENTS=claude,codex,gemini` - `OPENCLAW_LIVE_ACP_BIND_AGENT_COMMAND='npx -y @agentclientprotocol/claude-agent-acp@'` - Uwagi: - - Ta ścieżka używa powierzchni gateway `chat.send` z admin-only syntetycznymi polami originating-route, aby testy mogły dołączyć kontekst kanału wiadomości bez udawania zewnętrznego dostarczenia. - - Gdy `OPENCLAW_LIVE_ACP_BIND_AGENT_COMMAND` nie jest ustawione, test używa wbudowanego rejestru agentów Plugin `acpx` dla wybranego agenta harnessu ACP. + - Ta ścieżka używa powierzchni `chat.send` Gateway z syntetycznymi polami originating-route tylko dla administratora, aby testy mogły dołączać kontekst kanału wiadomości bez udawania zewnętrznego dostarczenia. + - Gdy `OPENCLAW_LIVE_ACP_BIND_AGENT_COMMAND` nie jest ustawione, test używa wbudowanego rejestru agentów Plugin `acpx` dla wybranego agenta harness ACP. Przykład: @@ -563,33 +568,33 @@ pnpm test:docker:live-acp-bind:gemini Uwagi dotyczące Dockera: - Runner Docker znajduje się w `scripts/test-live-acp-bind-docker.sh`. -- Domyślnie uruchamia smoke powiązania ACP sekwencyjnie dla wszystkich obsługiwanych agentów live CLI: `claude`, `codex`, a następnie `gemini`. +- Domyślnie uruchamia smoke test ACP bind dla wszystkich obsługiwanych live agentów CLI po kolei: `claude`, `codex`, a następnie `gemini`. - Użyj `OPENCLAW_LIVE_ACP_BIND_AGENTS=claude`, `OPENCLAW_LIVE_ACP_BIND_AGENTS=codex` lub `OPENCLAW_LIVE_ACP_BIND_AGENTS=gemini`, aby zawęzić macierz. -- Pobiera `~/.profile`, przygotowuje pasujące materiały autoryzacyjne CLI do kontenera, instaluje `acpx` do zapisywalnego prefiksu npm, a następnie instaluje żądane live CLI (`@anthropic-ai/claude-code`, `@openai/codex` lub `@google/gemini-cli`), jeśli go brakuje. -- Wewnątrz Dockera runner ustawia `OPENCLAW_LIVE_ACP_BIND_ACPX_COMMAND=$HOME/.npm-global/bin/acpx`, aby `acpx` zachowywał zmienne środowiskowe dostawcy z pobranego profilu dostępne dla podrzędnego CLI harnessu. +- Pobiera `~/.profile`, przenosi do kontenera odpowiedni materiał auth CLI, instaluje `acpx` do zapisywalnego prefiksu npm, a następnie instaluje żądane live CLI (`@anthropic-ai/claude-code`, `@openai/codex` lub `@google/gemini-cli`), jeśli go brakuje. +- Wewnątrz Dockera runner ustawia `OPENCLAW_LIVE_ACP_BIND_ACPX_COMMAND=$HOME/.npm-global/bin/acpx`, aby acpx zachował zmienne środowiskowe dostawców z pobranego profilu dostępne dla podrzędnego CLI harnessu. -## Live: smoke harnessu Codex app-server +## Live: smoke harnessu app-server Codex -- Cel: zweryfikować należący do Plugin harness Codex przez normalną metodę - gateway `agent`: - - załadować dołączony Plugin `codex` +- Cel: zweryfikować należący do Plugin harness Codex przez normalną + metodę Gateway `agent`: + - załadować wbudowany Plugin `codex` - wybrać `OPENCLAW_AGENT_RUNTIME=codex` - - wysłać pierwszą turę agenta gateway do `codex/gpt-5.4` + - wysłać pierwszą turę gateway agent do `codex/gpt-5.4` - wysłać drugą turę do tej samej sesji OpenClaw i zweryfikować, że wątek app-server - można wznowić + może zostać wznowiony - uruchomić `/codex status` i `/codex models` przez tę samą ścieżkę - poleceń gateway + polecenia Gateway - Test: `src/gateway/gateway-codex-harness.live.test.ts` - Włączanie: `OPENCLAW_LIVE_CODEX_HARNESS=1` - Domyślny model: `codex/gpt-5.4` -- Opcjonalna sonda obrazu: `OPENCLAW_LIVE_CODEX_HARNESS_IMAGE_PROBE=1` -- Opcjonalna sonda MCP/tool: `OPENCLAW_LIVE_CODEX_HARNESS_MCP_PROBE=1` -- Ten smoke ustawia `OPENCLAW_AGENT_HARNESS_FALLBACK=none`, aby uszkodzony harness Codex - nie mógł przejść testu przez ciche przełączenie awaryjne na PI. -- Autoryzacja: `OPENAI_API_KEY` z powłoki/profilu oraz opcjonalnie skopiowane +- Opcjonalny test obrazu: `OPENCLAW_LIVE_CODEX_HARNESS_IMAGE_PROBE=1` +- Opcjonalny test MCP/tool: `OPENCLAW_LIVE_CODEX_HARNESS_MCP_PROBE=1` +- Smoke test ustawia `OPENCLAW_AGENT_HARNESS_FALLBACK=none`, aby uszkodzony harness Codex + nie mógł przejść przez cichy fallback do PI. +- Auth: `OPENAI_API_KEY` z powłoki/profilu oraz opcjonalnie skopiowane `~/.codex/auth.json` i `~/.codex/config.toml` -Lokalna recepta: +Recepta lokalna: ```bash source ~/.profile @@ -610,19 +615,20 @@ pnpm test:docker:live-codex-harness Uwagi dotyczące Dockera: - Runner Docker znajduje się w `scripts/test-live-codex-harness-docker.sh`. -- Pobiera zamontowany `~/.profile`, przekazuje `OPENAI_API_KEY`, kopiuje pliki - autoryzacyjne CLI Codex, gdy są obecne, instaluje `@openai/codex` do zapisywalnego zamontowanego prefiksu npm, - przygotowuje drzewo źródeł, a następnie uruchamia tylko test live harnessu Codex. -- Docker domyślnie włącza sondy obrazu oraz MCP/tool. Ustaw - `OPENCLAW_LIVE_CODEX_HARNESS_IMAGE_PROBE=0` albo - `OPENCLAW_LIVE_CODEX_HARNESS_MCP_PROBE=0`, gdy potrzebujesz węższego uruchomienia debugującego. +- Pobiera zamontowane `~/.profile`, przekazuje `OPENAI_API_KEY`, kopiuje pliki + auth Codex CLI, jeśli są obecne, instaluje `@openai/codex` do zapisywalnego, + zamontowanego prefiksu npm, przygotowuje drzewo źródłowe, a następnie uruchamia + tylko test live harnessu Codex. +- Docker domyślnie włącza testy obrazu i MCP/tool. Ustaw + `OPENCLAW_LIVE_CODEX_HARNESS_IMAGE_PROBE=0` lub + `OPENCLAW_LIVE_CODEX_HARNESS_MCP_PROBE=0`, gdy potrzebujesz bardziej zawężonego przebiegu debugowania. - Docker eksportuje również `OPENCLAW_AGENT_HARNESS_FALLBACK=none`, zgodnie z konfiguracją - testu live, tak aby fallback `openai-codex/*` lub PI nie mógł ukryć regresji + testu live, aby fallback `openai-codex/*` lub PI nie mógł ukryć regresji harnessu Codex. ### Zalecane recepty live -Wąskie, jawne allowlisty są najszybsze i najmniej podatne na niestabilność: +Wąskie, jawne allowlist są najszybsze i najmniej podatne na niestabilność: - Pojedynczy model, direct (bez Gateway): - `OPENCLAW_LIVE_MODELS="openai/gpt-5.4" pnpm test:live src/agents/models.profiles.live.test.ts` @@ -639,12 +645,12 @@ Wąskie, jawne allowlisty są najszybsze i najmniej podatne na niestabilność: Uwagi: -- `google/...` używa API Gemini (klucz API). +- `google/...` używa Gemini API (klucz API). - `google-antigravity/...` używa mostu OAuth Antigravity (endpoint agenta w stylu Cloud Code Assist). -- `google-gemini-cli/...` używa lokalnego Gemini CLI na twojej maszynie (osobna autoryzacja + osobliwości narzędzi). +- `google-gemini-cli/...` używa lokalnego Gemini CLI na Twojej maszynie (osobne auth + specyficzne zachowania narzędzi). - Gemini API vs Gemini CLI: - - API: OpenClaw wywołuje hostowane API Gemini Google przez HTTP (autoryzacja kluczem API / profilem); to właśnie większość użytkowników ma na myśli, mówiąc „Gemini”. - - CLI: OpenClaw wywołuje lokalne binarium `gemini`; ma własną autoryzację i może zachowywać się inaczej (streaming/obsługa narzędzi/rozbieżność wersji). + - API: OpenClaw wywołuje hostowane Gemini API Google przez HTTP (klucz API / auth profilu); to właśnie większość użytkowników ma na myśli, mówiąc „Gemini”. + - CLI: OpenClaw wywołuje lokalne binarium `gemini`; ma ono własne auth i może zachowywać się inaczej (streaming/obsługa narzędzi/rozjazd wersji). ## Live: macierz modeli (co obejmujemy) @@ -652,12 +658,12 @@ Nie ma stałej „listy modeli CI” (live jest opt-in), ale to są **zalecane** ### Nowoczesny zestaw smoke (wywoływanie narzędzi + obraz) -To jest uruchomienie „typowych modeli”, które oczekujemy, że będzie nadal działać: +To jest przebieg „typowych modeli”, który powinien stale działać: - OpenAI (bez Codex): `openai/gpt-5.4` (opcjonalnie: `openai/gpt-5.4-mini`) - OpenAI Codex: `openai-codex/gpt-5.4` - Anthropic: `anthropic/claude-opus-4-6` (lub `anthropic/claude-sonnet-4-6`) -- Google (API Gemini): `google/gemini-3.1-pro-preview` i `google/gemini-3-flash-preview` (unikaj starszych modeli Gemini 2.x) +- Google (Gemini API): `google/gemini-3.1-pro-preview` i `google/gemini-3-flash-preview` (unikaj starszych modeli Gemini 2.x) - Google (Antigravity): `google-antigravity/claude-opus-4-6-thinking` i `google-antigravity/gemini-3-flash` - Z.AI (GLM): `zai/glm-4.7` - MiniMax: `minimax/MiniMax-M2.7` @@ -665,7 +671,7 @@ To jest uruchomienie „typowych modeli”, które oczekujemy, że będzie nadal Uruchom smoke Gateway z narzędziami + obrazem: `OPENCLAW_LIVE_GATEWAY_MODELS="openai/gpt-5.4,openai-codex/gpt-5.4,anthropic/claude-opus-4-6,google/gemini-3.1-pro-preview,google/gemini-3-flash-preview,google-antigravity/claude-opus-4-6-thinking,google-antigravity/gemini-3-flash,zai/glm-4.7,minimax/MiniMax-M2.7" pnpm test:live src/gateway/gateway-models.profiles.live.test.ts` -### Bazowy poziom: wywoływanie narzędzi (Read + opcjonalnie Exec) +### Bazowy zestaw: wywoływanie narzędzi (Read + opcjonalnie Exec) Wybierz co najmniej jeden model z każdej rodziny dostawców: @@ -675,44 +681,44 @@ Wybierz co najmniej jeden model z każdej rodziny dostawców: - Z.AI (GLM): `zai/glm-4.7` - MiniMax: `minimax/MiniMax-M2.7` -Opcjonalne dodatkowe pokrycie (warto mieć): +Opcjonalne dodatkowe pokrycie (mile widziane): - xAI: `xai/grok-4` (lub najnowszy dostępny) -- Mistral: `mistral/`… (wybierz jeden model z obsługą `tools`, który masz włączony) +- Mistral: `mistral/`… (wybierz jeden model zdolny do obsługi `tools`, który masz włączony) - Cerebras: `cerebras/`… (jeśli masz dostęp) - LM Studio: `lmstudio/`… (lokalnie; wywoływanie narzędzi zależy od trybu API) ### Vision: wysyłanie obrazu (załącznik → wiadomość multimodalna) -Uwzględnij co najmniej jeden model z obsługą obrazów w `OPENCLAW_LIVE_GATEWAY_MODELS` (Claude/Gemini/warianty OpenAI z obsługą vision itd.), aby przetestować sondę obrazu. +Uwzględnij co najmniej jeden model obsługujący obrazy w `OPENCLAW_LIVE_GATEWAY_MODELS` (Claude/Gemini/warianty OpenAI z obsługą vision itp.), aby uruchomić test obrazu. -### Agregatory / alternatywne bramki +### Agregatory / alternatywne Gateway -Jeśli masz włączone klucze, obsługujemy także testowanie przez: +Jeśli masz włączone klucze, obsługujemy też testowanie przez: -- OpenRouter: `openrouter/...` (setki modeli; użyj `openclaw models scan`, aby znaleźć kandydatów z obsługą narzędzi i obrazów) -- OpenCode: `opencode/...` dla Zen oraz `opencode-go/...` dla Go (autoryzacja przez `OPENCODE_API_KEY` / `OPENCODE_ZEN_API_KEY`) +- OpenRouter: `openrouter/...` (setki modeli; użyj `openclaw models scan`, aby znaleźć kandydatów obsługujących narzędzia+obrazy) +- OpenCode: `opencode/...` dla Zen i `opencode-go/...` dla Go (auth przez `OPENCODE_API_KEY` / `OPENCODE_ZEN_API_KEY`) Więcej dostawców, których możesz użyć w macierzy live (jeśli masz poświadczenia/konfigurację): - Wbudowani: `openai`, `openai-codex`, `anthropic`, `google`, `google-vertex`, `google-antigravity`, `google-gemini-cli`, `zai`, `openrouter`, `opencode`, `opencode-go`, `xai`, `groq`, `cerebras`, `mistral`, `github-copilot` -- Przez `models.providers` (niestandardowe endpointy): `minimax` (chmura/API) oraz każdy proxy zgodny z OpenAI/Anthropic (LM Studio, vLLM, LiteLLM itd.) +- Przez `models.providers` (własne endpointy): `minimax` (cloud/API) oraz dowolny proxy zgodny z OpenAI/Anthropic (LM Studio, vLLM, LiteLLM itp.) -Wskazówka: nie próbuj na sztywno wpisywać „wszystkich modeli” w dokumentacji. Źródłem prawdy jest lista zwracana przez `discoverModels(...)` na twojej maszynie + dostępne klucze. +Wskazówka: nie próbuj na sztywno wpisywać „wszystkich modeli” w dokumentacji. Autorytatywną listą jest to, co zwraca `discoverModels(...)` na Twojej maszynie + jakie klucze są dostępne. ## Poświadczenia (nigdy nie commituj) -Testy live wykrywają poświadczenia tak samo jak CLI. W praktyce oznacza to: +Testy live wykrywają poświadczenia tak samo jak CLI. Praktyczne konsekwencje: -- Jeśli działa CLI, testy live powinny znaleźć te same klucze. -- Jeśli test live mówi „brak poświadczeń”, debuguj to tak samo, jak debugowałbyś `openclaw models list` / wybór modelu. +- Jeśli CLI działa, testy live powinny znaleźć te same klucze. +- Jeśli test live zgłasza „no creds”, debuguj to tak samo, jak debugowałbyś `openclaw models list` / wybór modelu. -- Profile autoryzacji per agent: `~/.openclaw/agents//agent/auth-profiles.json` (to właśnie oznaczają „profile keys” w testach live) +- Profile auth per agent: `~/.openclaw/agents//agent/auth-profiles.json` (to właśnie oznaczają „profile keys” w testach live) - Konfiguracja: `~/.openclaw/openclaw.json` (lub `OPENCLAW_CONFIG_PATH`) -- Starszy katalog stanu: `~/.openclaw/credentials/` (kopiowany do przygotowanego katalogu domowego live, jeśli istnieje, ale nie jest głównym magazynem kluczy profili) -- Lokalne uruchomienia live domyślnie kopiują aktywną konfigurację, pliki `auth-profiles.json` per agent, starszy katalog `credentials/` oraz obsługiwane zewnętrzne katalogi autoryzacji CLI do tymczasowego testowego katalogu domowego; przygotowane katalogi domowe live pomijają `workspace/` i `sandboxes/`, a nadpisania ścieżek `agents.*.workspace` / `agentDir` są usuwane, aby sondy nie trafiały do twojego rzeczywistego obszaru roboczego hosta. +- Katalog stanu legacy: `~/.openclaw/credentials/` (kopiowany do przygotowanego katalogu live, jeśli istnieje, ale nie jest głównym magazynem kluczy profilu) +- Lokalne uruchomienia live domyślnie kopiują aktywną konfigurację, pliki `auth-profiles.json` per agent, legacy `credentials/` oraz obsługiwane zewnętrzne katalogi auth CLI do tymczasowego katalogu domowego testu; przygotowane katalogi live pomijają `workspace/` i `sandboxes/`, a nadpisania ścieżek `agents.*.workspace` / `agentDir` są usuwane, aby testy nie dotykały rzeczywistego workspace hosta. -Jeśli chcesz polegać na kluczach z env (na przykład wyeksportowanych w `~/.profile`), uruchamiaj testy lokalne po `source ~/.profile` albo użyj uruchomień Docker poniżej (mogą zamontować `~/.profile` do kontenera). +Jeśli chcesz polegać na kluczach z env (np. eksportowanych w `~/.profile`), uruchamiaj lokalne testy po `source ~/.profile` albo użyj poniższych runnerów Docker (mogą zamontować `~/.profile` do kontenera). ## Live Deepgram (transkrypcja audio) @@ -725,14 +731,14 @@ Jeśli chcesz polegać na kluczach z env (na przykład wyeksportowanych w `~/.pr - Włączanie: `BYTEPLUS_API_KEY=... BYTEPLUS_LIVE_TEST=1 pnpm test:live src/agents/byteplus.live.test.ts` - Opcjonalne nadpisanie modelu: `BYTEPLUS_CODING_MODEL=ark-code-latest` -## Live mediów dla workflow ComfyUI +## Live mediów workflow ComfyUI - Test: `extensions/comfy/comfy.live.test.ts` - Włączanie: `OPENCLAW_LIVE_TEST=1 COMFY_LIVE_TEST=1 pnpm test:live -- extensions/comfy/comfy.live.test.ts` - Zakres: - - Testuje dołączone ścieżki obrazu, wideo i `music_generate` comfy + - Testuje wbudowane ścieżki obrazu, wideo i `music_generate` Comfy - Pomija każdą możliwość, jeśli `models.providers.comfy.` nie jest skonfigurowane - - Przydatne po zmianach w przesyłaniu workflow comfy, odpytywaniu, pobieraniu lub rejestracji Plugin + - Przydatne po zmianach w wysyłaniu workflow Comfy, odpytywaniu, pobieraniu lub rejestracji Plugin ## Live generowania obrazów @@ -741,23 +747,23 @@ Jeśli chcesz polegać na kluczach z env (na przykład wyeksportowanych w `~/.pr - Harness: `pnpm test:live:media image` - Zakres: - Wylicza każdy zarejestrowany Plugin dostawcy generowania obrazów - - Przed sondowaniem ładuje brakujące zmienne środowiskowe dostawców z powłoki logowania (`~/.profile`) - - Domyślnie używa kluczy API live/env przed zapisanymi profilami autoryzacji, dzięki czemu nieaktualne testowe klucze w `auth-profiles.json` nie maskują rzeczywistych poświadczeń powłoki - - Pomija dostawców bez użytecznej autoryzacji/profilu/modelu + - Przed testami ładuje brakujące zmienne środowiskowe dostawców z powłoki logowania (`~/.profile`) + - Domyślnie używa kluczy API live/env przed zapisanymi profilami auth, aby przestarzałe klucze testowe w `auth-profiles.json` nie maskowały rzeczywistych poświadczeń z powłoki + - Pomija dostawców bez używalnego auth/profilu/modelu - Uruchamia standardowe warianty generowania obrazów przez współdzieloną możliwość runtime: - `google:flash-generate` - `google:pro-generate` - `google:pro-edit` - `openai:default-generate` -- Obecnie objęci dołączeni dostawcy: +- Aktualnie objęci wbudowani dostawcy: - `openai` - `google` -- Opcjonalne zawężenie: +- Opcjonalne zawężanie: - `OPENCLAW_LIVE_IMAGE_GENERATION_PROVIDERS="openai,google"` - `OPENCLAW_LIVE_IMAGE_GENERATION_MODELS="openai/gpt-image-1,google/gemini-3.1-flash-image-preview"` - `OPENCLAW_LIVE_IMAGE_GENERATION_CASES="google:flash-generate,google:pro-edit"` -- Opcjonalne zachowanie autoryzacji: - - `OPENCLAW_LIVE_REQUIRE_PROFILE_KEYS=1`, aby wymusić autoryzację z magazynu profili i ignorować nadpisania tylko z env +- Opcjonalne zachowanie auth: + - `OPENCLAW_LIVE_REQUIRE_PROFILE_KEYS=1`, aby wymusić auth z magazynu profili i ignorować nadpisania tylko z env ## Live generowania muzyki @@ -765,23 +771,23 @@ Jeśli chcesz polegać na kluczach z env (na przykład wyeksportowanych w `~/.pr - Włączanie: `OPENCLAW_LIVE_TEST=1 pnpm test:live -- extensions/music-generation-providers.live.test.ts` - Harness: `pnpm test:live:media music` - Zakres: - - Testuje współdzieloną dołączoną ścieżkę dostawcy generowania muzyki + - Testuje współdzieloną wbudowaną ścieżkę dostawców generowania muzyki - Obecnie obejmuje Google i MiniMax - - Przed sondowaniem ładuje zmienne środowiskowe dostawców z powłoki logowania (`~/.profile`) - - Domyślnie używa kluczy API live/env przed zapisanymi profilami autoryzacji, dzięki czemu nieaktualne testowe klucze w `auth-profiles.json` nie maskują rzeczywistych poświadczeń powłoki - - Pomija dostawców bez użytecznej autoryzacji/profilu/modelu - - Uruchamia oba zadeklarowane tryby runtime, gdy są dostępne: + - Przed testami ładuje zmienne środowiskowe dostawców z powłoki logowania (`~/.profile`) + - Domyślnie używa kluczy API live/env przed zapisanymi profilami auth, aby przestarzałe klucze testowe w `auth-profiles.json` nie maskowały rzeczywistych poświadczeń z powłoki + - Pomija dostawców bez używalnego auth/profilu/modelu + - Uruchamia oba zadeklarowane tryby runtime, jeśli są dostępne: - `generate` z wejściem opartym wyłącznie na prompcie - `edit`, gdy dostawca deklaruje `capabilities.edit.enabled` - - Obecne pokrycie współdzielonej ścieżki: + - Aktualne pokrycie we współdzielonej ścieżce: - `google`: `generate`, `edit` - `minimax`: `generate` - `comfy`: osobny plik live Comfy, nie ten współdzielony przebieg -- Opcjonalne zawężenie: +- Opcjonalne zawężanie: - `OPENCLAW_LIVE_MUSIC_GENERATION_PROVIDERS="google,minimax"` - `OPENCLAW_LIVE_MUSIC_GENERATION_MODELS="google/lyria-3-clip-preview,minimax/music-2.5+"` -- Opcjonalne zachowanie autoryzacji: - - `OPENCLAW_LIVE_REQUIRE_PROFILE_KEYS=1`, aby wymusić autoryzację z magazynu profili i ignorować nadpisania tylko z env +- Opcjonalne zachowanie auth: + - `OPENCLAW_LIVE_REQUIRE_PROFILE_KEYS=1`, aby wymusić auth z magazynu profili i ignorować nadpisania tylko z env ## Live generowania wideo @@ -789,42 +795,42 @@ Jeśli chcesz polegać na kluczach z env (na przykład wyeksportowanych w `~/.pr - Włączanie: `OPENCLAW_LIVE_TEST=1 pnpm test:live -- extensions/video-generation-providers.live.test.ts` - Harness: `pnpm test:live:media video` - Zakres: - - Testuje współdzieloną dołączoną ścieżkę dostawcy generowania wideo - - Domyślnie używa bezpiecznej dla wydań ścieżki smoke: dostawcy inni niż FAL, jedno żądanie text-to-video na dostawcę, jednosekundowy prompt z lobster oraz limit czasu operacji na dostawcę z `OPENCLAW_LIVE_VIDEO_GENERATION_TIMEOUT_MS` (domyślnie `180000`) - - Domyślnie pomija FAL, ponieważ opóźnienia kolejki po stronie dostawcy mogą zdominować czas wydania; przekaż `--video-providers fal` lub `OPENCLAW_LIVE_VIDEO_GENERATION_PROVIDERS="fal"`, aby uruchomić go jawnie - - Przed sondowaniem ładuje zmienne środowiskowe dostawców z twojej powłoki logowania (`~/.profile`) - - Domyślnie używa kluczy API live/env przed zapisanymi profilami autoryzacji, dzięki czemu nieaktualne testowe klucze w `auth-profiles.json` nie maskują rzeczywistych poświadczeń powłoki - - Pomija dostawców bez użytecznej autoryzacji/profilu/modelu + - Testuje współdzieloną wbudowaną ścieżkę dostawców generowania wideo + - Domyślnie używa bezpiecznej dla wydań ścieżki smoke: dostawcy inni niż FAL, jedno żądanie text-to-video na dostawcę, jednosekundowy prompt z homarem oraz limit operacji na dostawcę z `OPENCLAW_LIVE_VIDEO_GENERATION_TIMEOUT_MS` (domyślnie `180000`) + - Domyślnie pomija FAL, ponieważ opóźnienie kolejki po stronie dostawcy może zdominować czas wydania; przekaż `--video-providers fal` lub `OPENCLAW_LIVE_VIDEO_GENERATION_PROVIDERS="fal"`, aby uruchomić go jawnie + - Przed testami ładuje zmienne środowiskowe dostawców z powłoki logowania (`~/.profile`) + - Domyślnie używa kluczy API live/env przed zapisanymi profilami auth, aby przestarzałe klucze testowe w `auth-profiles.json` nie maskowały rzeczywistych poświadczeń z powłoki + - Pomija dostawców bez używalnego auth/profilu/modelu - Domyślnie uruchamia tylko `generate` - Ustaw `OPENCLAW_LIVE_VIDEO_GENERATION_FULL_MODES=1`, aby uruchamiać także zadeklarowane tryby transformacji, gdy są dostępne: - - `imageToVideo`, gdy dostawca deklaruje `capabilities.imageToVideo.enabled` i wybrany dostawca/model akceptuje lokalne wejście obrazu oparte na buforze we współdzielonym przebiegu - - `videoToVideo`, gdy dostawca deklaruje `capabilities.videoToVideo.enabled` i wybrany dostawca/model akceptuje lokalne wejście wideo oparte na buforze we współdzielonym przebiegu - - Obecnie zadeklarowani, ale pomijani dostawcy `imageToVideo` we współdzielonym przebiegu: - - `vydra`, ponieważ dołączony `veo3` jest tylko tekstowy, a dołączony `kling` wymaga zdalnego URL obrazu + - `imageToVideo`, gdy dostawca deklaruje `capabilities.imageToVideo.enabled`, a wybrany dostawca/model akceptuje lokalne wejście obrazu oparte na buforze we współdzielonym przebiegu + - `videoToVideo`, gdy dostawca deklaruje `capabilities.videoToVideo.enabled`, a wybrany dostawca/model akceptuje lokalne wejście wideo oparte na buforze we współdzielonym przebiegu + - Aktualni dostawcy `imageToVideo` zadeklarowani, ale pomijani we współdzielonym przebiegu: + - `vydra`, ponieważ wbudowany `veo3` obsługuje tylko tekst, a wbudowany `kling` wymaga zdalnego URL obrazu - Pokrycie specyficzne dla dostawcy Vydra: - `OPENCLAW_LIVE_TEST=1 OPENCLAW_LIVE_VYDRA_VIDEO=1 pnpm test:live -- extensions/vydra/vydra.live.test.ts` - - ten plik uruchamia `veo3` text-to-video oraz ścieżkę `kling`, która domyślnie używa fixture ze zdalnym URL obrazu - - Obecne pokrycie live `videoToVideo`: - - tylko `runway`, gdy wybrany model to `runway/gen4_aleph` - - Obecnie zadeklarowani, ale pomijani dostawcy `videoToVideo` we współdzielonym przebiegu: - - `alibaba`, `qwen`, `xai`, ponieważ te ścieżki obecnie wymagają zdalnych referencyjnych URL-i `http(s)` / MP4 - - `google`, ponieważ obecna współdzielona ścieżka Gemini/Veo używa lokalnego wejścia opartego na buforze, a ta ścieżka nie jest akceptowana we współdzielonym przebiegu - - `openai`, ponieważ obecna współdzielona ścieżka nie gwarantuje dostępu do funkcji org-specyficznych video inpaint/remix -- Opcjonalne zawężenie: + - ten plik uruchamia `veo3` text-to-video oraz ścieżkę `kling`, która domyślnie używa fixture zdalnego URL obrazu + - Aktualne pokrycie live `videoToVideo`: + - tylko `runway`, gdy wybranym modelem jest `runway/gen4_aleph` + - Aktualni dostawcy `videoToVideo` zadeklarowani, ale pomijani we współdzielonym przebiegu: + - `alibaba`, `qwen`, `xai`, ponieważ te ścieżki obecnie wymagają zdalnych referencyjnych URL `http(s)` / MP4 + - `google`, ponieważ bieżąca współdzielona ścieżka Gemini/Veo używa lokalnego wejścia opartego na buforze i ta ścieżka nie jest akceptowana we współdzielonym przebiegu + - `openai`, ponieważ bieżąca współdzielona ścieżka nie gwarantuje dostępu do specyficznych dla organizacji funkcji video inpaint/remix +- Opcjonalne zawężanie: - `OPENCLAW_LIVE_VIDEO_GENERATION_PROVIDERS="google,openai,runway"` - `OPENCLAW_LIVE_VIDEO_GENERATION_MODELS="google/veo-3.1-fast-generate-preview,openai/sora-2,runway/gen4_aleph"` - `OPENCLAW_LIVE_VIDEO_GENERATION_SKIP_PROVIDERS=""`, aby uwzględnić każdego dostawcę w domyślnym przebiegu, w tym FAL - - `OPENCLAW_LIVE_VIDEO_GENERATION_TIMEOUT_MS=60000`, aby zmniejszyć limit operacji dla każdego dostawcy w agresywnym przebiegu smoke -- Opcjonalne zachowanie autoryzacji: - - `OPENCLAW_LIVE_REQUIRE_PROFILE_KEYS=1`, aby wymusić autoryzację z magazynu profili i ignorować nadpisania tylko z env + - `OPENCLAW_LIVE_VIDEO_GENERATION_TIMEOUT_MS=60000`, aby obniżyć limit operacji dla każdego dostawcy na potrzeby agresywnego przebiegu smoke +- Opcjonalne zachowanie auth: + - `OPENCLAW_LIVE_REQUIRE_PROFILE_KEYS=1`, aby wymusić auth z magazynu profili i ignorować nadpisania tylko z env ## Harness live mediów - Polecenie: `pnpm test:live:media` - Cel: - - Uruchamia współdzielone pakiety live dla obrazów, muzyki i wideo przez jeden natywny dla repozytorium punkt wejścia + - Uruchamia współdzielone pakiety live dla obrazów, muzyki i wideo przez jeden natywny dla repozytorium entrypoint - Automatycznie ładuje brakujące zmienne środowiskowe dostawców z `~/.profile` - - Domyślnie automatycznie zawęża każdy pakiet do dostawców, którzy aktualnie mają użyteczną autoryzację + - Domyślnie automatycznie zawęża każdy pakiet do dostawców, którzy aktualnie mają używalne auth - Ponownie wykorzystuje `scripts/test-live.mjs`, dzięki czemu zachowanie Heartbeat i trybu cichego pozostaje spójne - Przykłady: - `pnpm test:live:media` @@ -832,129 +838,129 @@ Jeśli chcesz polegać na kluczach z env (na przykład wyeksportowanych w `~/.pr - `pnpm test:live:media video --video-providers openai,runway --all-providers` - `pnpm test:live:media music --quiet` -## Uruchomienia Docker (opcjonalne kontrole „działa w Linux”) +## Runnery Docker (opcjonalne kontrole typu „działa w Linuksie”) -Te uruchomienia Docker dzielą się na dwa koszyki: +Te runnery Docker dzielą się na dwie grupy: -- Uruchomienia live modeli: `test:docker:live-models` i `test:docker:live-gateway` uruchamiają tylko pasujący plik live z kluczami profili wewnątrz obrazu Docker repozytorium (`src/agents/models.profiles.live.test.ts` i `src/gateway/gateway-models.profiles.live.test.ts`), montując lokalny katalog config i obszar roboczy (oraz pobierając `~/.profile`, jeśli jest zamontowany). Odpowiadające lokalne punkty wejścia to `test:live:models-profiles` i `test:live:gateway-profiles`. -- Uruchomienia Docker live domyślnie używają mniejszego limitu smoke, aby pełny przebieg Docker pozostawał praktyczny: +- Runnery live-model: `test:docker:live-models` i `test:docker:live-gateway` uruchamiają tylko odpowiadający im plik live z kluczami profilu wewnątrz obrazu Docker repozytorium (`src/agents/models.profiles.live.test.ts` i `src/gateway/gateway-models.profiles.live.test.ts`), montując lokalny katalog config i workspace (oraz pobierając `~/.profile`, jeśli jest zamontowany). Odpowiadające im lokalne entrypointy to `test:live:models-profiles` i `test:live:gateway-profiles`. +- Runnery live Docker domyślnie używają mniejszego limitu smoke, aby pełny przebieg Docker pozostawał praktyczny: `test:docker:live-models` domyślnie ustawia `OPENCLAW_LIVE_MAX_MODELS=12`, a `test:docker:live-gateway` domyślnie ustawia `OPENCLAW_LIVE_GATEWAY_SMOKE=1`, `OPENCLAW_LIVE_GATEWAY_MAX_MODELS=8`, `OPENCLAW_LIVE_GATEWAY_STEP_TIMEOUT_MS=45000` oraz `OPENCLAW_LIVE_GATEWAY_MODEL_TIMEOUT_MS=90000`. Nadpisz te zmienne środowiskowe, gdy - jawnie chcesz większego, wyczerpującego skanowania. -- `test:docker:all` buduje obraz live Docker raz przez `test:docker:live-build`, a następnie używa go ponownie dla dwóch ścieżek Docker live. -- Uruchomienia smoke kontenerów: `test:docker:openwebui`, `test:docker:onboard`, `test:docker:gateway-network`, `test:docker:mcp-channels` i `test:docker:plugins` uruchamiają jeden lub więcej rzeczywistych kontenerów i weryfikują ścieżki integracyjne wyższego poziomu. + jawnie chcesz większego wyczerpującego skanu. +- `test:docker:all` buduje obraz live Docker raz przez `test:docker:live-build`, a następnie używa go ponownie dla dwóch ścieżek live Docker. +- Runnery smoke kontenerów: `test:docker:openwebui`, `test:docker:onboard`, `test:docker:gateway-network`, `test:docker:mcp-channels` oraz `test:docker:plugins` uruchamiają jeden lub więcej rzeczywistych kontenerów i weryfikują ścieżki integracji wyższego poziomu. -Uruchomienia Docker live modeli również montują tylko potrzebne katalogi domowe autoryzacji CLI (lub wszystkie obsługiwane, gdy uruchomienie nie jest zawężone), a następnie kopiują je do katalogu domowego kontenera przed uruchomieniem, aby OAuth zewnętrznego CLI mógł odświeżać tokeny bez modyfikowania magazynu autoryzacji hosta: +Runnery Docker live-model montują także tylko potrzebne katalogi auth CLI (albo wszystkie obsługiwane, gdy przebieg nie jest zawężony), a następnie kopiują je do katalogu domowego kontenera przed uruchomieniem, aby zewnętrzny OAuth CLI mógł odświeżać tokeny bez modyfikowania magazynu auth hosta: -- Modele direct: `pnpm test:docker:live-models` (skrypt: `scripts/test-live-models-docker.sh`) -- Smoke powiązania ACP: `pnpm test:docker:live-acp-bind` (skrypt: `scripts/test-live-acp-bind-docker.sh`) +- Direct models: `pnpm test:docker:live-models` (skrypt: `scripts/test-live-models-docker.sh`) +- Smoke ACP bind: `pnpm test:docker:live-acp-bind` (skrypt: `scripts/test-live-acp-bind-docker.sh`) - Smoke backendu CLI: `pnpm test:docker:live-cli-backend` (skrypt: `scripts/test-live-cli-backend-docker.sh`) -- Smoke harnessu Codex app-server: `pnpm test:docker:live-codex-harness` (skrypt: `scripts/test-live-codex-harness-docker.sh`) +- Smoke harnessu app-server Codex: `pnpm test:docker:live-codex-harness` (skrypt: `scripts/test-live-codex-harness-docker.sh`) - Gateway + agent dev: `pnpm test:docker:live-gateway` (skrypt: `scripts/test-live-gateway-models-docker.sh`) - Smoke live Open WebUI: `pnpm test:docker:openwebui` (skrypt: `scripts/e2e/openwebui-docker.sh`) -- Kreator onboardingu (TTY, pełne scaffolding): `pnpm test:docker:onboard` (skrypt: `scripts/e2e/onboard-docker.sh`) -- Sieć Gateway (dwa kontenery, autoryzacja WS + health): `pnpm test:docker:gateway-network` (skrypt: `scripts/e2e/gateway-network-docker.sh`) -- Most kanałów MCP (zasiany Gateway + most stdio + surowy smoke ramki powiadomień Claude): `pnpm test:docker:mcp-channels` (skrypt: `scripts/e2e/mcp-channels-docker.sh`) -- Pluginy (smoke instalacji + alias `/plugin` + semantyka restartu pakietu Claude): `pnpm test:docker:plugins` (skrypt: `scripts/e2e/plugins-docker.sh`) +- Kreator onboardingu (TTY, pełne rusztowanie): `pnpm test:docker:onboard` (skrypt: `scripts/e2e/onboard-docker.sh`) +- Networking Gateway (dwa kontenery, auth WS + health): `pnpm test:docker:gateway-network` (skrypt: `scripts/e2e/gateway-network-docker.sh`) +- Most kanału MCP (zasiany Gateway + most stdio + smoke surowej ramki powiadomień Claude): `pnpm test:docker:mcp-channels` (skrypt: `scripts/e2e/mcp-channels-docker.sh`) +- Plugins (smoke instalacji + alias `/plugin` + semantyka restartu pakietu Claude): `pnpm test:docker:plugins` (skrypt: `scripts/e2e/plugins-docker.sh`) -Uruchomienia Docker live modeli montują również bieżący check-out tylko do odczytu i +Runnery Docker live-model montują także bieżący checkout tylko do odczytu i przygotowują go w tymczasowym katalogu roboczym wewnątrz kontenera. Dzięki temu obraz runtime -pozostaje smukły, a jednocześnie Vitest działa na dokładnie twoim lokalnym źródle/config. -Krok przygotowania pomija duże lokalne cache i artefakty budowy aplikacji, takie jak +pozostaje lekki, a Vitest nadal działa względem dokładnie lokalnego źródła/konfiguracji. +Krok przygotowania pomija duże lokalne cache’e i wyniki budowania aplikacji, takie jak `.pnpm-store`, `.worktrees`, `__openclaw_vitest__` oraz lokalne dla aplikacji katalogi `.build` lub -katalogi wyjściowe Gradle, dzięki czemu uruchomienia Docker live nie tracą minut na kopiowanie +wyniki Gradle, aby uruchomienia live w Dockerze nie traciły minut na kopiowanie artefaktów specyficznych dla maszyny. -Ustawiają także `OPENCLAW_SKIP_CHANNELS=1`, aby sondy gateway live nie uruchamiały -rzeczywistych workerów kanałów Telegram/Discord/itd. wewnątrz kontenera. +Ustawiają one również `OPENCLAW_SKIP_CHANNELS=1`, aby testy live Gateway nie uruchamiały +rzeczywistych workerów kanałów Telegram/Discord/etc. wewnątrz kontenera. `test:docker:live-models` nadal uruchamia `pnpm test:live`, więc przekaż również -`OPENCLAW_LIVE_GATEWAY_*`, gdy potrzebujesz zawęzić lub wykluczyć pokrycie gateway +`OPENCLAW_LIVE_GATEWAY_*`, gdy potrzebujesz zawęzić lub wykluczyć pokrycie Gateway live z tej ścieżki Docker. -`test:docker:openwebui` to smoke zgodności wyższego poziomu: uruchamia kontener -Gateway OpenClaw z włączonymi endpointami HTTP zgodnymi z OpenAI, -uruchamia przypięty kontener Open WebUI względem tego gateway, loguje się przez +`test:docker:openwebui` to smoke zgodności wyższego poziomu: uruchamia +kontener Gateway OpenClaw z włączonymi endpointami HTTP zgodnymi z OpenAI, +uruchamia przypięty kontener Open WebUI względem tego Gateway, loguje się przez Open WebUI, weryfikuje, że `/api/models` udostępnia `openclaw/default`, a następnie wysyła rzeczywiste żądanie czatu przez proxy `/api/chat/completions` Open WebUI. Pierwsze uruchomienie może być zauważalnie wolniejsze, ponieważ Docker może potrzebować pobrać -obraz Open WebUI, a samo Open WebUI może potrzebować zakończyć własną konfigurację zimnego startu. -Ta ścieżka oczekuje użytecznego klucza modelu live, a `OPENCLAW_PROFILE_FILE` -(domyślnie `~/.profile`) jest podstawowym sposobem jego dostarczenia w uruchomieniach dockerowych. -Pomyślne uruchomienia wypisują niewielki payload JSON, taki jak `{ "ok": true, "model": +obraz Open WebUI, a samo Open WebUI może potrzebować dokończyć własną konfigurację cold-start. +Ta ścieżka oczekuje używalnego klucza modelu live, a `OPENCLAW_PROFILE_FILE` +(domyślnie `~/.profile`) jest głównym sposobem jego dostarczenia w uruchomieniach dockerowych. +Udane uruchomienia wypisują mały payload JSON, taki jak `{ "ok": true, "model": "openclaw/default", ... }`. `test:docker:mcp-channels` jest celowo deterministyczny i nie wymaga -rzeczywistego konta Telegram, Discord ani iMessage. Uruchamia zasiany kontener -Gateway, uruchamia drugi kontener, który wywołuje `openclaw mcp serve`, a następnie -weryfikuje routowane wykrywanie rozmów, odczyty transkryptów, metadane załączników, -zachowanie kolejki zdarzeń live, routing wysyłki wychodzącej oraz powiadomienia kanału + -uprawnień w stylu Claude przez rzeczywisty most stdio MCP. Kontrola powiadomień -sprawdza bezpośrednio surowe ramki stdio MCP, dzięki czemu smoke weryfikuje to, co +rzeczywistego konta Telegram, Discord ani iMessage. Uruchamia zasiany kontener Gateway, +startuje drugi kontener, który uruchamia `openclaw mcp serve`, a następnie +weryfikuje wykrywanie routowanych rozmów, odczyty transkryptów, metadane załączników, +zachowanie kolejki zdarzeń live, routing wysyłania wychodzącego oraz powiadomienia w stylu Claude o kanałach + +uprawnieniach przez rzeczywisty most stdio MCP. Kontrola powiadomień +sprawdza bezpośrednio surowe ramki stdio MCP, dzięki czemu smoke waliduje to, co most faktycznie emituje, a nie tylko to, co akurat udostępnia konkretny SDK klienta. -Ręczny smoke zwykłego języka wątku ACP (nie CI): +Ręczny smoke zwykłego języka dla wątku ACP (nie w CI): - `bun scripts/dev/discord-acp-plain-language-smoke.ts --channel ...` -- Zachowaj ten skrypt do przepływów regresji/debugowania. Może być ponownie potrzebny do walidacji routingu wątków ACP, więc nie usuwaj go. +- Zachowaj ten skrypt do przepływów regresji/debugowania. Może być znów potrzebny do walidacji routingu wątków ACP, więc go nie usuwaj. Przydatne zmienne środowiskowe: - `OPENCLAW_CONFIG_DIR=...` (domyślnie: `~/.openclaw`) montowane do `/home/node/.openclaw` - `OPENCLAW_WORKSPACE_DIR=...` (domyślnie: `~/.openclaw/workspace`) montowane do `/home/node/.openclaw/workspace` - `OPENCLAW_PROFILE_FILE=...` (domyślnie: `~/.profile`) montowane do `/home/node/.profile` i pobierane przed uruchomieniem testów -- `OPENCLAW_DOCKER_PROFILE_ENV_ONLY=1`, aby zweryfikować tylko zmienne środowiskowe pobrane z `OPENCLAW_PROFILE_FILE`, używając tymczasowych katalogów config/workspace i bez montowania zewnętrznej autoryzacji CLI -- `OPENCLAW_DOCKER_CLI_TOOLS_DIR=...` (domyślnie: `~/.cache/openclaw/docker-cli-tools`) montowane do `/home/node/.npm-global` dla buforowanych instalacji CLI wewnątrz Dockera -- Zewnętrzne katalogi/pliki autoryzacji CLI pod `$HOME` są montowane tylko do odczytu pod `/host-auth...`, a następnie kopiowane do `/home/node/...` przed rozpoczęciem testów +- `OPENCLAW_DOCKER_PROFILE_ENV_ONLY=1`, aby weryfikować tylko zmienne środowiskowe pobrane z `OPENCLAW_PROFILE_FILE`, używając tymczasowych katalogów config/workspace i bez montowania zewnętrznych auth CLI +- `OPENCLAW_DOCKER_CLI_TOOLS_DIR=...` (domyślnie: `~/.cache/openclaw/docker-cli-tools`) montowane do `/home/node/.npm-global` dla cache’owanych instalacji CLI w Dockerze +- Zewnętrzne katalogi/pliki auth CLI w `$HOME` są montowane tylko do odczytu pod `/host-auth...`, a następnie kopiowane do `/home/node/...` przed startem testów - Domyślne katalogi: `.minimax` - Domyślne pliki: `~/.codex/auth.json`, `~/.codex/config.toml`, `.claude.json`, `~/.claude/.credentials.json`, `~/.claude/settings.json`, `~/.claude/settings.local.json` - - Zawężone uruchomienia dostawców montują tylko potrzebne katalogi/pliki wywnioskowane z `OPENCLAW_LIVE_PROVIDERS` / `OPENCLAW_LIVE_GATEWAY_PROVIDERS` - - Nadpisz ręcznie przez `OPENCLAW_DOCKER_AUTH_DIRS=all`, `OPENCLAW_DOCKER_AUTH_DIRS=none` albo listę rozdzielaną przecinkami, taką jak `OPENCLAW_DOCKER_AUTH_DIRS=.claude,.codex` -- `OPENCLAW_LIVE_GATEWAY_MODELS=...` / `OPENCLAW_LIVE_MODELS=...`, aby zawęzić uruchomienie + - Zawężone przebiegi dostawców montują tylko potrzebne katalogi/pliki wywnioskowane z `OPENCLAW_LIVE_PROVIDERS` / `OPENCLAW_LIVE_GATEWAY_PROVIDERS` + - Nadpisz ręcznie przez `OPENCLAW_DOCKER_AUTH_DIRS=all`, `OPENCLAW_DOCKER_AUTH_DIRS=none` lub listę rozdzielaną przecinkami, np. `OPENCLAW_DOCKER_AUTH_DIRS=.claude,.codex` +- `OPENCLAW_LIVE_GATEWAY_MODELS=...` / `OPENCLAW_LIVE_MODELS=...`, aby zawęzić przebieg - `OPENCLAW_LIVE_GATEWAY_PROVIDERS=...` / `OPENCLAW_LIVE_PROVIDERS=...`, aby filtrować dostawców wewnątrz kontenera - `OPENCLAW_SKIP_DOCKER_BUILD=1`, aby ponownie użyć istniejącego obrazu `openclaw:local-live` przy ponownych uruchomieniach, które nie wymagają przebudowy - `OPENCLAW_LIVE_REQUIRE_PROFILE_KEYS=1`, aby upewnić się, że poświadczenia pochodzą z magazynu profili (a nie z env) -- `OPENCLAW_OPENWEBUI_MODEL=...`, aby wybrać model udostępniany przez gateway dla smoke Open WebUI -- `OPENCLAW_OPENWEBUI_PROMPT=...`, aby nadpisać prompt sprawdzający nonce używany przez smoke Open WebUI +- `OPENCLAW_OPENWEBUI_MODEL=...`, aby wybrać model udostępniany przez Gateway dla smoke Open WebUI +- `OPENCLAW_OPENWEBUI_PROMPT=...`, aby nadpisać prompt kontroli nonce używany przez smoke Open WebUI - `OPENWEBUI_IMAGE=...`, aby nadpisać przypięty tag obrazu Open WebUI ## Kontrola poprawności dokumentacji -Po edycji dokumentacji uruchom kontrole dokumentów: `pnpm check:docs`. -Uruchom pełną walidację anchorów Mintlify, gdy potrzebujesz także kontroli nagłówków w obrębie strony: `pnpm docs:check-links:anchors`. +Po edycji dokumentacji uruchom kontrole docs: `pnpm check:docs`. +Uruchom pełną walidację kotwic Mintlify, gdy potrzebujesz też sprawdzenia nagłówków w obrębie strony: `pnpm docs:check-links:anchors`. ## Regresja offline (bezpieczna dla CI) -To są regresje „rzeczywistego potoku” bez rzeczywistych dostawców: +To są regresje „rzeczywistego pipeline’u” bez rzeczywistych dostawców: -- Wywoływanie narzędzi Gateway (mock OpenAI, rzeczywista pętla gateway + agent): `src/gateway/gateway.test.ts` (przypadek: "runs a mock OpenAI tool call end-to-end via gateway agent loop") -- Kreator Gateway (WS `wizard.start`/`wizard.next`, zapis config + wymuszona autoryzacja): `src/gateway/gateway.test.ts` (przypadek: "runs wizard over ws and writes auth token config") +- Gateway tool calling (mock OpenAI, rzeczywista pętla Gateway + agent): `src/gateway/gateway.test.ts` (przypadek: "runs a mock OpenAI tool call end-to-end via gateway agent loop") +- Kreator Gateway (WS `wizard.start`/`wizard.next`, zapis config + wymuszone auth): `src/gateway/gateway.test.ts` (przypadek: "runs wizard over ws and writes auth token config") -## Evale niezawodności agentów (Skills) +## Ewaluacje niezawodności agenta (Skills) -Mamy już kilka bezpiecznych dla CI testów, które działają jak „evale niezawodności agentów”: +Mamy już kilka bezpiecznych dla CI testów, które zachowują się jak „ewaluacje niezawodności agenta”: -- Mock wywoływania narzędzi przez rzeczywistą pętlę gateway + agent (`src/gateway/gateway.test.ts`). -- Przepływy kreatora end-to-end, które walidują okablowanie sesji i skutki konfiguracji (`src/gateway/gateway.test.ts`). +- Mock wywoływania narzędzi przez rzeczywistą pętlę Gateway + agent (`src/gateway/gateway.test.ts`). +- Przepływy kreatora end-to-end, które walidują okablowanie sesji i efekty konfiguracji (`src/gateway/gateway.test.ts`). Czego nadal brakuje dla Skills (zobacz [Skills](/pl/tools/skills)): -- **Podejmowanie decyzji:** gdy Skills są wymienione w promcie, czy agent wybiera właściwy Skill (albo unika nieistotnych)? -- **Zgodność:** czy agent czyta `SKILL.md` przed użyciem i stosuje wymagane kroki/argumenty? +- **Decyzyjność:** gdy Skills są wymienione w prompcie, czy agent wybiera właściwy Skill (albo unika nieistotnych)? +- **Zgodność:** czy agent odczytuje `SKILL.md` przed użyciem i wykonuje wymagane kroki/argumenty? - **Kontrakty przepływu pracy:** scenariusze wieloturowe, które sprawdzają kolejność narzędzi, przenoszenie historii sesji i granice sandboxa. -Przyszłe evale powinny przede wszystkim pozostać deterministyczne: +Przyszłe ewaluacje powinny najpierw pozostać deterministyczne: -- Runner scenariuszy używający mockowanych dostawców do sprawdzania wywołań narzędzi + ich kolejności, odczytów plików skill i okablowania sesji. -- Mały pakiet scenariuszy skupionych na skills (użyj vs pomiń, bramkowanie, prompt injection). -- Opcjonalne evale live (opt-in, sterowane przez env) dopiero po wdrożeniu pakietu bezpiecznego dla CI. +- Runner scenariuszy używający mock dostawców do sprawdzania wywołań narzędzi + kolejności, odczytów plików Skill i okablowania sesji. +- Mały pakiet scenariuszy skoncentrowanych na Skills (użycie vs unikanie, gating, prompt injection). +- Opcjonalne ewaluacje live (opt-in, bramkowane przez env) dopiero po wdrożeniu pakietu bezpiecznego dla CI. ## Testy kontraktowe (kształt Plugin i kanałów) -Testy kontraktowe sprawdzają, czy każdy zarejestrowany Plugin i kanał jest zgodny -ze swoim kontraktem interfejsu. Iterują po wszystkich wykrytych Pluginach i uruchamiają pakiet -asercji dotyczących kształtu i zachowania. Domyślna ścieżka unit `pnpm test` -celowo pomija te współdzielone pliki seam i smoke; uruchamiaj polecenia kontraktowe jawnie, -gdy dotykasz współdzielonych powierzchni kanałów lub dostawców. +Testy kontraktowe sprawdzają, czy każdy zarejestrowany Plugin i kanał jest zgodny ze swoim +kontraktem interfejsu. Iterują po wszystkich wykrytych Plugin i uruchamiają pakiet asercji +dotyczących kształtu i zachowania. Domyślna ścieżka unit `pnpm test` celowo +pomija te współdzielone pliki seam i smoke; uruchamiaj polecenia kontraktowe jawnie, +gdy modyfikujesz współdzielone powierzchnie kanałów lub dostawców. ### Polecenia @@ -966,29 +972,29 @@ gdy dotykasz współdzielonych powierzchni kanałów lub dostawców. Znajdują się w `src/channels/plugins/contracts/*.contract.test.ts`: -- **plugin** - Podstawowy kształt Plugin (`id`, `name`, `capabilities`) +- **plugin** - Podstawowy kształt Plugin (id, nazwa, możliwości) - **setup** - Kontrakt kreatora konfiguracji - **session-binding** - Zachowanie wiązania sesji - **outbound-payload** - Struktura payload wiadomości - **inbound** - Obsługa wiadomości przychodzących - **actions** - Handlery akcji kanału - **threading** - Obsługa identyfikatorów wątków -- **directory** - API katalogu/listy użytkowników -- **group-policy** - Wymuszanie zasad grupowych +- **directory** - API katalogu/listy +- **group-policy** - Wymuszanie polityki grup ### Kontrakty statusu dostawców Znajdują się w `src/plugins/contracts/*.contract.test.ts`. -- **status** - Sondy statusu kanału +- **status** - Testy statusu kanału - **registry** - Kształt rejestru Plugin ### Kontrakty dostawców Znajdują się w `src/plugins/contracts/*.contract.test.ts`: -- **auth** - Kontrakt przepływu autoryzacji -- **auth-choice** - Wybór/selekcja autoryzacji +- **auth** - Kontrakt przepływu auth +- **auth-choice** - Wybór/selekcja auth - **catalog** - API katalogu modeli - **discovery** - Wykrywanie Plugin - **loader** - Ładowanie Plugin @@ -998,21 +1004,21 @@ Znajdują się w `src/plugins/contracts/*.contract.test.ts`: ### Kiedy uruchamiać -- Po zmianie eksportów `plugin-sdk` lub podścieżek -- Po dodaniu lub modyfikacji kanału albo Plugin dostawcy +- Po zmianie eksportów lub subścieżek plugin-sdk +- Po dodaniu albo modyfikacji kanału lub Plugin dostawcy - Po refaktoryzacji rejestracji lub wykrywania Plugin -Testy kontraktowe są uruchamiane w CI i nie wymagają prawdziwych kluczy API. +Testy kontraktowe uruchamiają się w CI i nie wymagają prawdziwych kluczy API. ## Dodawanie regresji (wskazówki) Gdy naprawiasz problem dostawcy/modelu wykryty w live: -- Dodaj regresję bezpieczną dla CI, jeśli to możliwe (mock/stub dostawcy albo uchwycenie dokładnej transformacji kształtu żądania) -- Jeśli problem z natury dotyczy tylko live (limity szybkości, polityki autoryzacji), utrzymaj test live wąski i opt-in przez zmienne środowiskowe -- Preferuj celowanie w najmniejszą warstwę, która wychwytuje błąd: - - błąd konwersji/powtórzenia żądania dostawcy → test direct models - - błąd potoku sesja/historia/narzędzia Gateway → smoke Gateway live albo bezpieczny dla CI mock test Gateway -- Ochrona traversalu SecretRef: - - `src/secrets/exec-secret-ref-id-parity.test.ts` wyprowadza jeden przykładowy cel na klasę SecretRef z metadanych rejestru (`listSecretTargetRegistryEntries()`), a następnie sprawdza, że identyfikatory exec segmentów traversalu są odrzucane. - - Jeśli dodasz nową rodzinę celów SecretRef `includeInPlan` w `src/secrets/target-registry-data.ts`, zaktualizuj `classifyTargetClass` w tym teście. Test celowo kończy się niepowodzeniem przy niesklasyfikowanych identyfikatorach celów, aby nie można było po cichu pominąć nowych klas. +- Jeśli to możliwe, dodaj regresję bezpieczną dla CI (mock/stub dostawcy albo przechwycenie dokładnej transformacji kształtu żądania) +- Jeśli z natury da się to testować tylko live (limity szybkości, polityki auth), utrzymuj test live wąski i opt-in przez zmienne środowiskowe +- Staraj się celować w najmniejszą warstwę, która wykrywa błąd: + - błąd konwersji/replay żądania dostawcy → test direct models + - błąd pipeline sesji/historii/narzędzi Gateway → smoke Gateway live albo bezpieczny dla CI mock test Gateway +- Guardrail przechodzenia SecretRef: + - `src/secrets/exec-secret-ref-id-parity.test.ts` wyprowadza jeden przykładowy cel na klasę SecretRef z metadanych rejestru (`listSecretTargetRegistryEntries()`), a następnie sprawdza, że identyfikatory exec segmentów przejścia są odrzucane. + - Jeśli dodasz nową rodzinę celów SecretRef `includeInPlan` w `src/secrets/target-registry-data.ts`, zaktualizuj `classifyTargetClass` w tym teście. Test celowo kończy się niepowodzeniem dla niesklasyfikowanych identyfikatorów celów, aby nowych klas nie można było pominąć po cichu. diff --git a/docs/pl/help/troubleshooting.md b/docs/pl/help/troubleshooting.md index 4656e5d42..f83a57241 100644 --- a/docs/pl/help/troubleshooting.md +++ b/docs/pl/help/troubleshooting.md @@ -1,25 +1,25 @@ --- read_when: - OpenClaw nie działa i potrzebujesz najszybszej drogi do rozwiązania problemu - - Chcesz przejść przez proces wstępnej diagnostyki, zanim zagłębisz się w szczegółowe instrukcje postępowania -summary: Hub rozwiązywania problemów dla OpenClaw według objawów + - Potrzebujesz procesu triage, zanim przejdziesz do szczegółowych instrukcji operacyjnych +summary: Centrum rozwiązywania problemów OpenClaw oparte na objawach title: Ogólne rozwiązywanie problemów x-i18n: - generated_at: "2026-04-11T02:45:34Z" + generated_at: "2026-04-20T09:59:13Z" model: gpt-5.4 provider: openai - source_hash: 16b38920dbfdc8d4a79bbb5d6fab2c67c9f218a97c36bb4695310d7db9c4614a + source_hash: cc5d8c9f804084985c672c5a003ce866e8142ab99fe81abb7a0d38e22aea4b88 source_path: help/troubleshooting.md workflow: 15 --- # Rozwiązywanie problemów -Jeśli masz tylko 2 minuty, użyj tej strony jako punktu wejścia do wstępnej diagnostyki. +Jeśli masz tylko 2 minuty, użyj tej strony jako punktu wejścia do triage. ## Pierwsze 60 sekund -Uruchom dokładnie tę sekwencję poleceń, w tej kolejności: +Uruchom dokładnie tę sekwencję poleceń w podanej kolejności: ```bash openclaw status @@ -31,17 +31,17 @@ openclaw channels status --probe openclaw logs --follow ``` -Prawidłowy wynik w jednym wierszu: +Prawidłowe wyjście w jednym wierszu: - `openclaw status` → pokazuje skonfigurowane kanały i brak oczywistych błędów uwierzytelniania. - `openclaw status --all` → pełny raport jest dostępny i nadaje się do udostępnienia. -- `openclaw gateway probe` → oczekiwany cel bramy jest osiągalny (`Reachable: yes`). `RPC: limited - missing scope: operator.read` oznacza ograniczoną diagnostykę, a nie błąd połączenia. -- `openclaw gateway status` → `Runtime: running` oraz `RPC probe: ok`. +- `openclaw gateway probe` → oczekiwany cel Gateway jest osiągalny (`Reachable: yes`). `Capability: ...` informuje, jaki poziom uwierzytelniania udało się potwierdzić sondą, a `Read probe: limited - missing scope: operator.read` oznacza pogorszoną diagnostykę, a nie błąd połączenia. +- `openclaw gateway status` → `Runtime: running`, `Connectivity probe: ok` i wiarygodny wiersz `Capability: ...`. Użyj `--require-rpc`, jeśli potrzebujesz także potwierdzenia RPC w zakresie odczytu. - `openclaw doctor` → brak blokujących błędów konfiguracji/usługi. -- `openclaw channels status --probe` → osiągalna brama zwraca stan transportu na żywo dla każdego konta +- `openclaw channels status --probe` → osiągalny Gateway zwraca aktywny stan transportu dla każdego konta oraz wyniki sondy/audytu, takie jak `works` lub `audit ok`; jeśli - brama jest nieosiągalna, polecenie przechodzi do podsumowań opartych tylko na konfiguracji. -- `openclaw logs --follow` → stabilna aktywność, bez powtarzających się krytycznych błędów. + Gateway jest nieosiągalny, polecenie przechodzi awaryjnie do podsumowań opartych wyłącznie na konfiguracji. +- `openclaw logs --follow` → stabilna aktywność, brak powtarzających się krytycznych błędów. ## Anthropic long context 429 @@ -51,29 +51,29 @@ przejdź do [/gateway/troubleshooting#anthropic-429-extra-usage-required-for-lon ## Lokalny backend zgodny z OpenAI działa bezpośrednio, ale nie działa w OpenClaw -Jeśli lokalny lub hostowany samodzielnie backend `/v1` odpowiada na małe -bezpośrednie sondy `/v1/chat/completions`, ale nie działa przy `openclaw infer model run` lub zwykłych +Jeśli lokalny lub self-hosted backend `/v1` odpowiada na małe bezpośrednie +sondy `/v1/chat/completions`, ale kończy się błędem przy `openclaw infer model run` lub zwykłych turach agenta: -1. Jeśli błąd wspomina o `messages[].content`, które ma oczekiwać ciągu znaków, ustaw +1. Jeśli błąd wspomina o oczekiwaniu ciągu znaków w `messages[].content`, ustaw `models.providers..models[].compat.requiresStringContent: true`. -2. Jeśli backend nadal nie działa tylko podczas tur agenta OpenClaw, ustaw +2. Jeśli backend nadal kończy się błędem tylko podczas tur agenta OpenClaw, ustaw `models.providers..models[].compat.supportsTools: false` i spróbuj ponownie. -3. Jeśli małe bezpośrednie wywołania nadal działają, ale większe monity OpenClaw powodują awarię +3. Jeśli małe bezpośrednie wywołania nadal działają, ale większe prompty OpenClaw powodują awarię backendu, potraktuj pozostały problem jako ograniczenie modelu/serwera po stronie upstream i - przejdź do szczegółowej instrukcji: + przejdź dalej do szczegółowej instrukcji operacyjnej: [/gateway/troubleshooting#local-openai-compatible-backend-passes-direct-probes-but-agent-runs-fail](/pl/gateway/troubleshooting#local-openai-compatible-backend-passes-direct-probes-but-agent-runs-fail) -## Instalacja pluginu kończy się niepowodzeniem z powodu braku rozszerzeń openclaw +## Instalacja Plugin kończy się błędem z brakującym openclaw extensions -Jeśli instalacja kończy się błędem `package.json missing openclaw.extensions`, pakiet pluginu -używa starego formatu, którego OpenClaw już nie akceptuje. +Jeśli instalacja kończy się błędem `package.json missing openclaw.extensions`, pakiet Plugin +używa starej struktury, której OpenClaw już nie akceptuje. -Poprawka w pakiecie pluginu: +Naprawa w pakiecie Plugin: 1. Dodaj `openclaw.extensions` do `package.json`. -2. Skieruj wpisy na zbudowane pliki środowiska uruchomieniowego (zwykle `./dist/index.js`). -3. Opublikuj plugin ponownie i uruchom `openclaw plugins install ` jeszcze raz. +2. Skieruj wpisy na zbudowane pliki runtime (zwykle `./dist/index.js`). +3. Opublikuj Plugin ponownie i uruchom `openclaw plugins install ` jeszcze raz. Przykład: @@ -87,27 +87,27 @@ Przykład: } ``` -Dokument referencyjny: [Architektura pluginów](/pl/plugins/architecture) +Odniesienie: [Architektura Plugin](/pl/plugins/architecture) -## Drzewo decyzyjne +## Drzewo decyzji ```mermaid flowchart TD A[OpenClaw nie działa] --> B{Co psuje się najpierw} B --> C[Brak odpowiedzi] B --> D[Dashboard lub Control UI nie może się połączyć] - B --> E[Brama nie uruchamia się lub usługa nie działa] - B --> F[Kanał się łączy, ale wiadomości nie przepływają] - B --> G[Cron lub heartbeat nie uruchomił się albo nic nie dostarczył] - B --> H[Węzeł jest sparowany, ale camera canvas screen exec nie działa] - B --> I[Narzędzie browser nie działa] + B --> E[Gateway nie uruchamia się lub usługa nie działa] + B --> F[Kanał łączy się, ale wiadomości nie przepływają] + B --> G[Cron lub Heartbeat nie uruchomił się albo nic nie dostarczył] + B --> H[Node jest sparowany, ale camera canvas screen exec kończy się błędem] + B --> I[Narzędzie Browser kończy się błędem] C --> C1[/Sekcja Brak odpowiedzi/] D --> D1[/Sekcja Control UI/] - E --> E1[/Sekcja Brama/] - F --> F1[/Sekcja Przepływ kanału/] - G --> G1[/Sekcja Automatyzacja/] - H --> H1[/Sekcja Narzędzia węzła/] + E --> E1[/Sekcja Gateway/] + F --> F1[/Sekcja przepływu kanałów/] + G --> G1[/Sekcja automatyzacji/] + H --> H1[/Sekcja narzędzi Node/] I --> I1[/Sekcja Browser/] ``` @@ -121,18 +121,19 @@ flowchart TD openclaw logs --follow ``` - Prawidłowy wynik wygląda tak: + Prawidłowe wyjście wygląda tak: - `Runtime: running` - - `RPC probe: ok` - - Kanał pokazuje połączony transport i, tam gdzie jest to obsługiwane, `works` lub `audit ok` w `channels status --probe` - - Nadawca wydaje się zatwierdzony (albo zasada DM jest otwarta/lista dozwolonych) + - `Connectivity probe: ok` + - `Capability: read-only`, `write-capable` lub `admin-capable` + - Twój kanał pokazuje podłączony transport i, tam gdzie to obsługiwane, `works` lub `audit ok` w `channels status --probe` + - Nadawca jest oznaczony jako zatwierdzony (albo polityka DM jest otwarta/lista dozwolonych) - Typowe sygnatury w logach: + Typowe sygnatury logów: - - `drop guild message (mention required` → blokada wzmianki zablokowała wiadomość w Discordzie. - - `pairing request` → nadawca nie jest zatwierdzony i czeka na zatwierdzenie parowania DM. - - `blocked` / `allowlist` w logach kanału → nadawca, pokój lub grupa jest filtrowana. + - `drop guild message (mention required` → wymóg wzmianki zablokował wiadomość w Discord. + - `pairing request` → nadawca nie jest zatwierdzony i czeka na zatwierdzenie parowania w DM. + - `blocked` / `allowlist` w logach kanału → nadawca, pokój lub grupa są filtrowane. Szczegółowe strony: @@ -151,29 +152,30 @@ flowchart TD openclaw channels status --probe ``` - Prawidłowy wynik wygląda tak: + Prawidłowe wyjście wygląda tak: - - `Dashboard: http://...` jest pokazywane w `openclaw gateway status` - - `RPC probe: ok` + - `Dashboard: http://...` jest pokazane w `openclaw gateway status` + - `Connectivity probe: ok` + - `Capability: read-only`, `write-capable` lub `admin-capable` - Brak pętli uwierzytelniania w logach - Typowe sygnatury w logach: + Typowe sygnatury logów: - - `device identity required` → kontekst HTTP/niezabezpieczony nie może ukończyć uwierzytelniania urządzenia. - - `origin not allowed` → przeglądarkowe `Origin` nie jest dozwolone dla - celu bramy Control UI. - - `AUTH_TOKEN_MISMATCH` ze wskazówkami ponowienia (`canRetryWithDeviceToken=true`) → jedna zaufana próba ponowienia z tokenem urządzenia może nastąpić automatycznie. - - To ponowienie z użyciem tokenu z pamięci podręcznej wykorzystuje zapisany wraz ze sparowanym - tokenem urządzenia zestaw zakresów. Wywołujący z jawnym `deviceToken` / jawnymi `scopes` zachowują - zamiast tego żądany zestaw zakresów. - - W asynchronicznej ścieżce Tailscale Serve Control UI nieudane próby dla tego samego - `{scope, ip}` są serializowane, zanim ogranicznik zarejestruje niepowodzenie, więc - drugie równoległe błędne ponowienie może już pokazać `retry later`. + - `device identity required` → HTTP/kontekst niezabezpieczony nie może zakończyć uwierzytelniania urządzenia. + - `origin not allowed` → `Origin` przeglądarki nie jest dozwolony dla + celu Gateway w Control UI. + - `AUTH_TOKEN_MISMATCH` z podpowiedziami ponowienia (`canRetryWithDeviceToken=true`) → automatycznie może zostać wykonana jedna ponowna próba z zaufanym tokenem urządzenia. + - Ta ponowna próba z tokenem z pamięci podręcznej używa tego samego zestawu zakresów zapisanego razem ze sparowanym + tokenem urządzenia. Wywołania z jawnym `deviceToken` / jawnymi `scopes` zachowują zamiast tego + żądany zestaw zakresów. + - W asynchronicznej ścieżce Tailscale Serve dla Control UI nieudane próby dla tego samego + `{scope, ip}` są serializowane, zanim limiter zarejestruje niepowodzenie, więc + druga równoległa błędna próba może już pokazać `retry later`. - `too many failed authentication attempts (retry later)` z lokalnego - pochodzenia przeglądarki localhost → powtarzające się nieudane próby z tego samego `Origin` są tymczasowo - blokowane; inne pochodzenie localhost używa osobnego przedziału. - - powtarzające się `unauthorized` po tej próbie ponowienia → zły token/hasło, niedopasowany tryb uwierzytelniania lub nieaktualny sparowany token urządzenia. - - `gateway connect failed:` → UI kieruje na zły URL/port lub nieosiągalną bramę. + źródła przeglądarki localhost → powtarzające się błędy z tego samego `Origin` są tymczasowo + blokowane; inne źródło localhost używa osobnego koszyka. + - powtarzające się `unauthorized` po tej ponownej próbie → zły token/hasło, niezgodność trybu uwierzytelniania lub nieaktualny sparowany token urządzenia. + - `gateway connect failed:` → UI wskazuje zły URL/port albo nieosiągalny Gateway. Szczegółowe strony: @@ -183,7 +185,7 @@ flowchart TD - + ```bash openclaw status openclaw gateway status @@ -192,16 +194,17 @@ flowchart TD openclaw channels status --probe ``` - Prawidłowy wynik wygląda tak: + Prawidłowe wyjście wygląda tak: - `Service: ... (loaded)` - `Runtime: running` - - `RPC probe: ok` + - `Connectivity probe: ok` + - `Capability: read-only`, `write-capable` lub `admin-capable` - Typowe sygnatury w logach: + Typowe sygnatury logów: - - `Gateway start blocked: set gateway.mode=local` lub `existing config is missing gateway.mode` → tryb bramy to remote albo w pliku konfiguracji brakuje oznaczenia trybu lokalnego i należy to naprawić. - - `refusing to bind gateway ... without auth` → powiązanie poza loopback bez prawidłowej ścieżki uwierzytelniania bramy (token/hasło albo zaufany serwer proxy, jeśli skonfigurowano). + - `Gateway start blocked: set gateway.mode=local` lub `existing config is missing gateway.mode` → tryb Gateway jest ustawiony na zdalny albo w pliku konfiguracji brakuje znacznika trybu lokalnego i należy go naprawić. + - `refusing to bind gateway ... without auth` → bindowanie poza loopback bez prawidłowej ścieżki uwierzytelniania Gateway (token/hasło lub `trusted-proxy`, jeśli skonfigurowano). - `another gateway instance is already listening` lub `EADDRINUSE` → port jest już zajęty. Szczegółowe strony: @@ -212,7 +215,7 @@ flowchart TD - + ```bash openclaw status openclaw gateway status @@ -221,15 +224,15 @@ flowchart TD openclaw channels status --probe ``` - Prawidłowy wynik wygląda tak: + Prawidłowe wyjście wygląda tak: - Transport kanału jest połączony. - Kontrole parowania/listy dozwolonych przechodzą pomyślnie. - Wzmianki są wykrywane tam, gdzie są wymagane. - Typowe sygnatury w logach: + Typowe sygnatury logów: - - `mention required` → blokada wymagająca wzmianki zablokowała przetwarzanie. + - `mention required` → blokada wymogu wzmianki w grupie zablokowała przetwarzanie. - `pairing` / `pending` → nadawca DM nie jest jeszcze zatwierdzony. - `not_in_channel`, `missing_scope`, `Forbidden`, `401/403` → problem z tokenem uprawnień kanału. @@ -240,7 +243,7 @@ flowchart TD - + ```bash openclaw status openclaw gateway status @@ -250,21 +253,21 @@ flowchart TD openclaw logs --follow ``` - Prawidłowy wynik wygląda tak: + Prawidłowe wyjście wygląda tak: - - `cron.status` pokazuje, że funkcja jest włączona i ma następne wybudzenie. + - `cron.status` pokazuje, że jest włączony i ma następne wybudzenie. - `cron runs` pokazuje ostatnie wpisy `ok`. - Heartbeat jest włączony i nie znajduje się poza aktywnymi godzinami. - Typowe sygnatury w logach: + Typowe sygnatury logów: - - `cron: scheduler disabled; jobs will not run automatically` → cron jest wyłączony. + - `cron: scheduler disabled; jobs will not run automatically` → Cron jest wyłączony. - `heartbeat skipped` z `reason=quiet-hours` → poza skonfigurowanymi aktywnymi godzinami. - - `heartbeat skipped` z `reason=empty-heartbeat-file` → `HEARTBEAT.md` istnieje, ale zawiera tylko pusty/nagłówkowy szkielet. - - `heartbeat skipped` z `reason=no-tasks-due` → tryb zadań `HEARTBEAT.md` jest aktywny, ale żaden z interwałów zadań nie jest jeszcze wymagalny. - - `heartbeat skipped` z `reason=alerts-disabled` → cała widoczność heartbeat jest wyłączona (`showOk`, `showAlerts` i `useIndicator` są wyłączone). - - `requests-in-flight` → główna ścieżka jest zajęta; wybudzenie heartbeat zostało odroczone. - - `unknown accountId` → docelowe konto dostarczania heartbeat nie istnieje. + - `heartbeat skipped` z `reason=empty-heartbeat-file` → `HEARTBEAT.md` istnieje, ale zawiera tylko pustą treść/szkielet nagłówków. + - `heartbeat skipped` z `reason=no-tasks-due` → tryb zadań `HEARTBEAT.md` jest aktywny, ale żaden z interwałów zadań jeszcze nie jest należny. + - `heartbeat skipped` z `reason=alerts-disabled` → cała widoczność Heartbeat jest wyłączona (`showOk`, `showAlerts` i `useIndicator` są wszystkie wyłączone). + - `requests-in-flight` → główny tor jest zajęty; wybudzenie Heartbeat zostało odroczone. + - `unknown accountId` → docelowe konto dostarczania Heartbeat nie istnieje. Szczegółowe strony: @@ -274,7 +277,7 @@ flowchart TD - + ```bash openclaw status openclaw gateway status @@ -283,18 +286,18 @@ flowchart TD openclaw logs --follow ``` - Prawidłowy wynik wygląda tak: + Prawidłowe wyjście wygląda tak: - - Węzeł jest widoczny jako połączony i sparowany dla roli `node`. - - Dla wywoływanego polecenia istnieje odpowiednia zdolność. - - Stan uprawnień dla narzędzia to granted. + - Node jest wymieniony jako połączony i sparowany dla roli `node`. + - Istnieje Capability dla wywoływanego polecenia. + - Stan uprawnień jest przyznany dla narzędzia. - Typowe sygnatury w logach: + Typowe sygnatury logów: - - `NODE_BACKGROUND_UNAVAILABLE` → przenieś aplikację węzła na pierwszy plan. - - `*_PERMISSION_REQUIRED` → uprawnienie systemowe zostało odrzucone lub nie istnieje. + - `NODE_BACKGROUND_UNAVAILABLE` → przenieś aplikację Node na pierwszy plan. + - `*_PERMISSION_REQUIRED` → uprawnienie systemowe zostało odrzucone/brakuje go. - `SYSTEM_RUN_DENIED: approval required` → zatwierdzenie exec oczekuje. - - `SYSTEM_RUN_DENIED: allowlist miss` → polecenia nie ma na liście dozwolonych exec. + - `SYSTEM_RUN_DENIED: allowlist miss` → polecenia nie ma na liście dozwolonych dla exec. Szczegółowe strony: @@ -304,7 +307,7 @@ flowchart TD - + ```bash openclaw config get tools.exec.host openclaw config get tools.exec.security @@ -315,13 +318,13 @@ flowchart TD Co się zmieniło: - Jeśli `tools.exec.host` nie jest ustawione, wartością domyślną jest `auto`. - - `host=auto` rozstrzyga na `sandbox`, gdy środowisko sandbox jest aktywne, w przeciwnym razie na `gateway`. - - `host=auto` odpowiada tylko za trasowanie; zachowanie „YOLO” bez pytań wynika z `security=full` oraz `ask=off` na gateway/node. - - W `gateway` i `node` brak ustawienia `tools.exec.security` oznacza domyślnie `full`. + - `host=auto` rozstrzyga się do `sandbox`, gdy aktywne jest środowisko sandbox, w przeciwnym razie do `gateway`. + - `host=auto` dotyczy tylko routingu; zachowanie bez potwierdzeń typu „YOLO” wynika z `security=full` wraz z `ask=off` na gateway/node. + - Dla `gateway` i `node` brak ustawienia `tools.exec.security` oznacza domyślnie `full`. - Brak ustawienia `tools.exec.ask` oznacza domyślnie `off`. - - Wynik: jeśli widzisz prośby o zatwierdzenie, jakaś lokalna dla hosta lub konkretnej sesji polityka exec została zaostrzona względem bieżących ustawień domyślnych. + - W rezultacie: jeśli widzisz żądania zatwierdzenia, jakaś lokalna dla hosta lub specyficzna dla sesji polityka zaostrzyła reguły exec względem obecnych ustawień domyślnych. - Przywrócenie bieżącego domyślnego zachowania bez zatwierdzania: + Przywróć bieżące domyślne zachowanie bez zatwierdzeń: ```bash openclaw config set tools.exec.host gateway @@ -332,14 +335,14 @@ flowchart TD Bezpieczniejsze alternatywy: - - Ustaw tylko `tools.exec.host=gateway`, jeśli chcesz po prostu stabilnego trasowania hosta. + - Ustaw tylko `tools.exec.host=gateway`, jeśli chcesz po prostu stabilnego routingu hosta. - Użyj `security=allowlist` z `ask=on-miss`, jeśli chcesz exec na hoście, ale nadal chcesz przeglądu przy brakach na liście dozwolonych. - - Włącz tryb sandbox, jeśli chcesz, aby `host=auto` ponownie rozstrzygało do `sandbox`. + - Włącz tryb sandbox, jeśli chcesz, aby `host=auto` ponownie rozstrzygał się do `sandbox`. - Typowe sygnatury w logach: + Typowe sygnatury logów: - `Approval required.` → polecenie czeka na `/approve ...`. - - `SYSTEM_RUN_DENIED: approval required` → zatwierdzenie exec na hoście węzła oczekuje. + - `SYSTEM_RUN_DENIED: approval required` → zatwierdzenie exec na hoście Node oczekuje. - `exec host=sandbox requires a sandbox runtime for this session` → niejawny/jawny wybór sandbox, ale tryb sandbox jest wyłączony. Szczegółowe strony: @@ -350,7 +353,7 @@ flowchart TD - + ```bash openclaw status openclaw gateway status @@ -359,22 +362,22 @@ flowchart TD openclaw doctor ``` - Prawidłowy wynik wygląda tak: + Prawidłowe wyjście wygląda tak: - - Status przeglądarki pokazuje `running: true` oraz wybraną przeglądarkę/profil. - - `openclaw` się uruchamia albo `user` widzi lokalne karty Chrome. + - Status Browser pokazuje `running: true` oraz wybraną przeglądarkę/profil. + - `openclaw` uruchamia się albo `user` widzi lokalne karty Chrome. - Typowe sygnatury w logach: + Typowe sygnatury logów: - `unknown command "browser"` lub `unknown command 'browser'` → ustawiono `plugins.allow` i nie zawiera ono `browser`. - `Failed to start Chrome CDP on port` → nie udało się uruchomić lokalnej przeglądarki. - - `browser.executablePath not found` → skonfigurowana ścieżka do pliku wykonywalnego jest nieprawidłowa. - - `browser.cdpUrl must be http(s) or ws(s)` → skonfigurowany adres URL CDP używa nieobsługiwanego schematu. - - `browser.cdpUrl has invalid port` → skonfigurowany adres URL CDP ma nieprawidłowy lub spoza zakresu port. - - `No Chrome tabs found for profile="user"` → profil do dołączania Chrome MCP nie ma otwartych lokalnych kart Chrome. - - `Remote CDP for profile "" is not reachable` → skonfigurowany zdalny punkt końcowy CDP nie jest osiągalny z tego hosta. - - `Browser attachOnly is enabled ... not reachable` lub `Browser attachOnly is enabled and CDP websocket ... is not reachable` → profil tylko-dołączania nie ma aktywnego celu CDP. - - nieaktualne nadpisania viewport / trybu ciemnego / ustawień regionalnych / trybu offline w profilach tylko-dołączania lub zdalnego CDP → uruchom `openclaw browser stop --browser-profile `, aby zamknąć aktywną sesję sterowania i zwolnić stan emulacji bez restartowania bramy. + - `browser.executablePath not found` → skonfigurowana ścieżka do binarki jest nieprawidłowa. + - `browser.cdpUrl must be http(s) or ws(s)` → skonfigurowany URL CDP używa nieobsługiwanego schematu. + - `browser.cdpUrl has invalid port` → skonfigurowany URL CDP ma nieprawidłowy lub spoza zakresu port. + - `No Chrome tabs found for profile="user"` → profil podłączania Chrome MCP nie ma otwartych lokalnych kart Chrome. + - `Remote CDP for profile "" is not reachable` → skonfigurowany zdalny endpoint CDP jest nieosiągalny z tego hosta. + - `Browser attachOnly is enabled ... not reachable` lub `Browser attachOnly is enabled and CDP websocket ... is not reachable` → profil tylko do podłączenia nie ma aktywnego celu CDP. + - nieaktualne nadpisania viewport / dark-mode / locale / offline na profilach tylko do podłączenia lub zdalnych CDP → uruchom `openclaw browser stop --browser-profile `, aby zamknąć aktywną sesję sterowania i zwolnić stan emulacji bez restartowania Gateway. Szczegółowe strony: @@ -390,7 +393,7 @@ flowchart TD ## Powiązane - [FAQ](/pl/help/faq) — często zadawane pytania -- [Rozwiązywanie problemów z bramą](/pl/gateway/troubleshooting) — problemy specyficzne dla bramy -- [Doctor](/pl/gateway/doctor) — automatyczne kontrole kondycji i naprawy -- [Rozwiązywanie problemów z kanałami](/pl/channels/troubleshooting) — problemy z łącznością kanałów -- [Rozwiązywanie problemów z automatyzacją](/pl/automation/cron-jobs#troubleshooting) — problemy z cronem i heartbeat +- [Gateway Troubleshooting](/pl/gateway/troubleshooting) — problemy specyficzne dla Gateway +- [Doctor](/pl/gateway/doctor) — zautomatyzowane kontrole kondycji i naprawy +- [Channel Troubleshooting](/pl/channels/troubleshooting) — problemy z łącznością kanałów +- [Automation Troubleshooting](/pl/automation/cron-jobs#troubleshooting) — problemy z Cron i Heartbeat diff --git a/docs/pl/tools/browser.md b/docs/pl/tools/browser.md index e542f48e6..0eb09b8f7 100644 --- a/docs/pl/tools/browser.md +++ b/docs/pl/tools/browser.md @@ -2,40 +2,40 @@ read_when: - Dodawanie automatyzacji przeglądarki sterowanej przez agenta - Debugowanie, dlaczego openclaw zakłóca działanie Twojej własnej przeglądarki Chrome - - Implementowanie ustawień przeglądarki i cyklu życia w aplikacji macOS + - Implementacja ustawień przeglądarki i cyklu życia w aplikacji macOS summary: Zintegrowana usługa sterowania przeglądarką + polecenia akcji title: Przeglądarka (zarządzana przez OpenClaw) x-i18n: - generated_at: "2026-04-14T09:50:55Z" + generated_at: "2026-04-20T09:59:20Z" model: gpt-5.4 provider: openai - source_hash: ae9ef725f544d4236d229f498c7187871c69bd18d31069b30a7e67fac53166a2 + source_hash: 3f7d37b34ba48dc7c38f8c2e77f8bb97af987eac6a874ebfc921f950fb59de4b source_path: tools/browser.md workflow: 15 --- # Przeglądarka (zarządzana przez openclaw) -OpenClaw może uruchamiać **dedykowany profil Chrome/Brave/Edge/Chromium**, którym steruje agent. -Jest on odizolowany od Twojej osobistej przeglądarki i zarządzany przez niewielką lokalną +OpenClaw może uruchamiać **dedykowany profil Chrome/Brave/Edge/Chromium**, który agent kontroluje. +Jest on odizolowany od Twojej osobistej przeglądarki i zarządzany przez małą lokalną usługę sterowania wewnątrz Gateway (tylko loopback). -Widok dla początkujących: +Perspektywa początkującego: -- Potraktuj to jako **oddzielną przeglądarkę tylko dla agenta**. -- Profil `openclaw` **nie** dotyka Twojego osobistego profilu przeglądarki. -- Agent może **otwierać karty, odczytywać strony, klikać i pisać** w bezpiecznym środowisku. +- Traktuj to jak **oddzielną przeglądarkę tylko dla agenta**. +- Profil `openclaw` **nie** dotyka profilu Twojej osobistej przeglądarki. +- Agent może **otwierać karty, czytać strony, klikać i wpisywać tekst** w bezpiecznej ścieżce. - Wbudowany profil `user` dołącza do Twojej prawdziwej zalogowanej sesji Chrome przez Chrome MCP. ## Co otrzymujesz - Oddzielny profil przeglądarki o nazwie **openclaw** (domyślnie z pomarańczowym akcentem). -- Deterministyczne sterowanie kartami (lista/otwieranie/ustawianie fokusu/zamykanie). -- Działania agenta (kliknięcie/pisanie/przeciąganie/zaznaczanie), snapshoty, zrzuty ekranu, pliki PDF. -- Opcjonalna obsługa wielu profili (`openclaw`, `work`, `remote`, ...). +- Deterministyczne sterowanie kartami (lista/otwieranie/fokus/zamykanie). +- Akcje agenta (kliknięcie/wpisywanie/przeciąganie/zaznaczanie), snapshoty, zrzuty ekranu, PDF-y. +- Opcjonalną obsługę wielu profili (`openclaw`, `work`, `remote`, ...). Ta przeglądarka **nie** jest Twoją codzienną przeglądarką. To bezpieczna, odizolowana powierzchnia do -automatyzacji i weryfikacji wykonywanych przez agenta. +automatyzacji i weryfikacji przez agenta. ## Szybki start @@ -46,16 +46,16 @@ openclaw browser --browser-profile openclaw open https://example.com openclaw browser --browser-profile openclaw snapshot ``` -Jeśli pojawi się komunikat „Browser disabled”, włącz przeglądarkę w konfiguracji (patrz niżej) i uruchom ponownie +Jeśli pojawi się komunikat „Browser disabled”, włącz ją w konfiguracji (patrz niżej) i uruchom ponownie Gateway. -Jeśli `openclaw browser` całkowicie zniknęło albo agent mówi, że narzędzie przeglądarki -jest niedostępne, przejdź do [Brak polecenia lub narzędzia przeglądarki](/pl/tools/browser#missing-browser-command-or-tool). +Jeśli całkowicie brakuje `openclaw browser` albo agent mówi, że narzędzie browser +jest niedostępne, przejdź do [Brak polecenia lub narzędzia browser](/pl/tools/browser#missing-browser-command-or-tool). ## Sterowanie Plugin -Domyślne narzędzie `browser` jest teraz dołączonym Plugin, który jest dostarczany jako włączony -domyślnie. Oznacza to, że możesz go wyłączyć lub zastąpić bez usuwania reszty +Domyślne narzędzie `browser` jest teraz dołączonym Plugin, który jest domyślnie +włączony. Oznacza to, że możesz go wyłączyć lub zastąpić bez usuwania reszty systemu Plugin OpenClaw: ```json5 @@ -70,30 +70,30 @@ systemu Plugin OpenClaw: } ``` -Wyłącz dołączony Plugin przed zainstalowaniem innego Plugin, który udostępnia tę -samą nazwę narzędzia `browser`. Domyślne środowisko przeglądarki wymaga obu warunków: +Wyłącz dołączony Plugin przed instalacją innego Plugin, który udostępnia tę samą +nazwę narzędzia `browser`. Domyślne środowisko browser wymaga obu elementów: - `plugins.entries.browser.enabled` nie może być wyłączone - `browser.enabled=true` -Jeśli wyłączysz tylko Plugin, dołączone CLI przeglądarki (`openclaw browser`), -metoda gateway (`browser.request`), narzędzie agenta i domyślna usługa sterowania -przeglądarką znikną razem. Twoja konfiguracja `browser.*` pozostanie nienaruszona, -aby mogła zostać ponownie użyta przez zastępczy Plugin. +Jeśli wyłączysz tylko Plugin, dołączone CLI browser (`openclaw browser`), +metoda Gateway (`browser.request`), narzędzie agenta i domyślna usługa sterowania browser +znikną razem. Twoja konfiguracja `browser.*` pozostanie nienaruszona, aby mogła zostać użyta +przez zastępczy Plugin. -Dołączony Plugin przeglądarki jest teraz również właścicielem implementacji środowiska wykonawczego przeglądarki. -Rdzeń zachowuje tylko współdzielone pomocniki Plugin SDK oraz kompatybilnościowe re-exporty dla -starszych wewnętrznych ścieżek importu. W praktyce usunięcie lub zastąpienie pakietu Plugin przeglądarki -usuwa zestaw funkcji przeglądarki zamiast pozostawiać drugie środowisko wykonawcze należące do rdzenia. +Dołączony Plugin browser jest teraz także właścicielem implementacji runtime przeglądarki. +Rdzeń zachowuje jedynie współdzielone helpery Plugin SDK oraz re-exporty zgodności dla +starszych wewnętrznych ścieżek importu. W praktyce usunięcie lub zastąpienie pakietu Plugin browser +usuwa zestaw funkcji browser zamiast pozostawiać drugi runtime należący do rdzenia. -Zmiany konfiguracji przeglądarki nadal wymagają ponownego uruchomienia Gateway, aby dołączony Plugin -mógł ponownie zarejestrować swoją usługę przeglądarki z nowymi ustawieniami. +Zmiany konfiguracji browser nadal wymagają restartu Gateway, aby dołączony Plugin +mógł ponownie zarejestrować swoją usługę browser z nowymi ustawieniami. -## Brak polecenia lub narzędzia przeglądarki +## Brak polecenia lub narzędzia browser -Jeśli po aktualizacji `openclaw browser` nagle stanie się nieznanym poleceniem albo -agent zgłasza, że brakuje narzędzia przeglądarki, najczęstszą przyczyną jest -restrykcyjna lista `plugins.allow`, która nie zawiera `browser`. +Jeśli po aktualizacji `openclaw browser` nagle staje się nieznanym poleceniem albo +agent zgłasza, że brakuje narzędzia browser, najczęstszą przyczyną jest restrykcyjna lista +`plugins.allow`, która nie zawiera `browser`. Przykład błędnej konfiguracji: @@ -105,7 +105,7 @@ Przykład błędnej konfiguracji: } ``` -Napraw to, dodając `browser` do listy dozwolonych Plugin: +Napraw to, dodając `browser` do allowlisty Plugin: ```json5 { @@ -117,48 +117,48 @@ Napraw to, dodając `browser` do listy dozwolonych Plugin: Ważne uwagi: -- Samo `browser.enabled=true` nie wystarczy, gdy ustawione jest `plugins.allow`. -- Samo `plugins.entries.browser.enabled=true` również nie wystarczy, gdy ustawione jest `plugins.allow`. -- `tools.alsoAllow: ["browser"]` **nie** ładuje dołączonego Plugin przeglądarki. Tylko dostosowuje politykę narzędzi po tym, jak Plugin został już załadowany. -- Jeśli nie potrzebujesz restrykcyjnej listy dozwolonych Plugin, usunięcie `plugins.allow` również przywraca domyślne zachowanie dołączonej przeglądarki. +- Samo `browser.enabled=true` nie wystarcza, gdy ustawione jest `plugins.allow`. +- Samo `plugins.entries.browser.enabled=true` także nie wystarcza, gdy ustawione jest `plugins.allow`. +- `tools.alsoAllow: ["browser"]` **nie** ładuje dołączonego Plugin browser. Dostosowuje jedynie politykę narzędzi po tym, jak Plugin jest już załadowany. +- Jeśli nie potrzebujesz restrykcyjnej allowlisty Plugin, usunięcie `plugins.allow` także przywróci domyślne zachowanie dołączonej przeglądarki. Typowe objawy: - `openclaw browser` jest nieznanym poleceniem. - Brakuje `browser.request`. -- Agent zgłasza, że narzędzie przeglądarki jest niedostępne lub go brakuje. +- Agent zgłasza narzędzie browser jako niedostępne lub brakujące. ## Profile: `openclaw` vs `user` - `openclaw`: zarządzana, odizolowana przeglądarka (nie wymaga rozszerzenia). -- `user`: wbudowany profil dołączania Chrome MCP do Twojej **prawdziwej zalogowanej sesji Chrome**. +- `user`: wbudowany profil dołączania Chrome MCP do Twojej **prawdziwej zalogowanej przeglądarki Chrome**. -Dla wywołań narzędzia przeglądarki przez agenta: +Dla wywołań narzędzia browser przez agenta: - Domyślnie: używaj odizolowanej przeglądarki `openclaw`. - Preferuj `profile="user"`, gdy znaczenie mają istniejące zalogowane sesje i użytkownik - jest przy komputerze, aby kliknąć/zatwierdzić ewentualny monit o dołączenie. -- `profile` jest jawnym nadpisaniem, gdy chcesz określonego trybu przeglądarki. + jest przy komputerze, aby kliknąć/zatwierdzić ewentualny prompt dołączenia. +- `profile` to jawne nadpisanie, gdy chcesz określony tryb przeglądarki. -Ustaw `browser.defaultProfile: "openclaw"`, jeśli chcesz domyślnie używać trybu zarządzanego. +Ustaw `browser.defaultProfile: "openclaw"`, jeśli chcesz, aby tryb zarządzany był domyślny. ## Konfiguracja -Ustawienia przeglądarki znajdują się w `~/.openclaw/openclaw.json`. +Ustawienia browser znajdują się w `~/.openclaw/openclaw.json`. ```json5 { browser: { - enabled: true, // domyślnie: true + enabled: true, // default: true ssrfPolicy: { - // dangerouslyAllowPrivateNetwork: true, // włącz tylko dla zaufanego dostępu do sieci prywatnej - // allowPrivateNetwork: true, // starszy alias + // dangerouslyAllowPrivateNetwork: true, // opt in only for trusted private-network access + // allowPrivateNetwork: true, // legacy alias // hostnameAllowlist: ["*.example.com", "example.com"], // allowedHostnames: ["localhost"], }, - // cdpUrl: "http://127.0.0.1:18792", // starsze nadpisanie pojedynczego profilu - remoteCdpTimeoutMs: 1500, // limit czasu HTTP zdalnego CDP (ms) - remoteCdpHandshakeTimeoutMs: 3000, // limit czasu handshake WebSocket zdalnego CDP (ms) + // cdpUrl: "http://127.0.0.1:18792", // legacy single-profile override + remoteCdpTimeoutMs: 1500, // remote CDP HTTP timeout (ms) + remoteCdpHandshakeTimeoutMs: 3000, // remote CDP WebSocket handshake timeout (ms) defaultProfile: "openclaw", color: "#FF4500", headless: false, @@ -187,21 +187,21 @@ Ustawienia przeglądarki znajdują się w `~/.openclaw/openclaw.json`. Uwagi: -- Usługa sterowania przeglądarką wiąże się z loopback na porcie wyprowadzonym z `gateway.port` +- Usługa sterowania browser nasłuchuje na loopback na porcie wyliczanym z `gateway.port` (domyślnie: `18791`, czyli gateway + 2). - Jeśli nadpiszesz port Gateway (`gateway.port` lub `OPENCLAW_GATEWAY_PORT`), - wyprowadzone porty przeglądarki przesuną się tak, aby pozostać w tej samej „rodzinie”. -- `cdpUrl` domyślnie wskazuje zarządzany lokalny port CDP, jeśli nie jest ustawiony. -- `remoteCdpTimeoutMs` ma zastosowanie do sprawdzania osiągalności zdalnego CDP (nie-loopback). -- `remoteCdpHandshakeTimeoutMs` ma zastosowanie do sprawdzania osiągalności handshake WebSocket zdalnego CDP. -- Nawigacja przeglądarki/otwieranie kart jest chronione przed SSRF przed nawigacją i ponownie sprawdzane metodą best-effort pod kątem końcowego adresu URL `http(s)` po nawigacji. -- W ścisłym trybie SSRF sprawdzane są także wykrywanie/sprawdzanie zdalnych punktów końcowych CDP (`cdpUrl`, w tym wyszukiwania `/json/version`). -- `browser.ssrfPolicy.dangerouslyAllowPrivateNetwork` jest domyślnie wyłączone. Ustaw `true` tylko wtedy, gdy świadomie ufasz dostępowi przeglądarki do sieci prywatnej. + wyliczone porty browser przesuną się, aby pozostać w tej samej „rodzinie”. +- `cdpUrl` domyślnie wskazuje zarządzany lokalny port CDP, gdy nie jest ustawione. +- `remoteCdpTimeoutMs` dotyczy sprawdzania osiągalności zdalnego (nie-loopback) CDP. +- `remoteCdpHandshakeTimeoutMs` dotyczy sprawdzania osiągalności handshake WebSocket dla zdalnego CDP. +- Nawigacja browser/otwieranie karty jest chronione przed SSRF przed nawigacją i ponownie sprawdzane metodą best-effort dla końcowego URL `http(s)` po nawigacji. +- W ścisłym trybie SSRF sprawdzane są także wykrywanie/proby zdalnych endpointów CDP (`cdpUrl`, w tym wyszukiwania `/json/version`). +- `browser.ssrfPolicy.dangerouslyAllowPrivateNetwork` jest domyślnie wyłączone. Ustaw `true` tylko wtedy, gdy celowo ufasz dostępowi browser do sieci prywatnej. - `browser.ssrfPolicy.allowPrivateNetwork` pozostaje obsługiwane jako starszy alias dla zgodności. -- `attachOnly: true` oznacza „nigdy nie uruchamiaj lokalnej przeglądarki; dołączaj tylko wtedy, gdy jest już uruchomiona”. -- `color` i per-profilowe `color` nadają odcień interfejsowi przeglądarki, aby było widać, który profil jest aktywny. -- Profilem domyślnym jest `openclaw` (samodzielna przeglądarka zarządzana przez OpenClaw). Użyj `defaultProfile: "user"`, aby wybrać przeglądarkę zalogowanego użytkownika. -- Kolejność automatycznego wykrywania: systemowa domyślna przeglądarka, jeśli jest oparta na Chromium; w przeciwnym razie Chrome → Brave → Edge → Chromium → Chrome Canary. +- `attachOnly: true` oznacza „nigdy nie uruchamiaj lokalnej przeglądarki; dołączaj tylko wtedy, gdy już działa”. +- `color` oraz `color` per profil barwią interfejs przeglądarki, aby było widać, który profil jest aktywny. +- Domyślnym profilem jest `openclaw` (samodzielna przeglądarka zarządzana przez OpenClaw). Użyj `defaultProfile: "user"`, aby przejść na zalogowaną przeglądarkę użytkownika. +- Kolejność automatycznego wykrywania: domyślna przeglądarka systemowa, jeśli oparta na Chromium; w przeciwnym razie Chrome → Brave → Edge → Chromium → Chrome Canary. - Lokalne profile `openclaw` automatycznie przypisują `cdpPort`/`cdpUrl` — ustawiaj je tylko dla zdalnego CDP. - `driver: "existing-session"` używa Chrome DevTools MCP zamiast surowego CDP. Nie ustawiaj `cdpUrl` dla tego sterownika. @@ -210,7 +210,7 @@ Uwagi: ## Używanie Brave (lub innej przeglądarki opartej na Chromium) -Jeśli Twoja **systemowa domyślna** przeglądarka jest oparta na Chromium (Chrome/Brave/Edge itd.), +Jeśli Twoją **domyślną przeglądarką systemową** jest przeglądarka oparta na Chromium (Chrome/Brave/Edge itd.), OpenClaw użyje jej automatycznie. Ustaw `browser.executablePath`, aby nadpisać automatyczne wykrywanie: @@ -245,49 +245,50 @@ openclaw config set browser.executablePath "/usr/bin/google-chrome" ## Sterowanie lokalne vs zdalne -- **Sterowanie lokalne (domyślne):** Gateway uruchamia usługę sterowania loopback i może uruchomić lokalną przeglądarkę. -- **Sterowanie zdalne (host Node):** uruchom hosta Node na komputerze, na którym jest przeglądarka; Gateway będzie przekazywać do niego działania przeglądarki. -- **Zdalny CDP:** ustaw `browser.profiles..cdpUrl` (lub `browser.cdpUrl`), aby +- **Sterowanie lokalne (domyślne):** Gateway uruchamia usługę sterowania na loopback i może uruchomić lokalną przeglądarkę. +- **Sterowanie zdalne (host Node):** uruchom hosta Node na maszynie, która ma przeglądarkę; Gateway będzie proxyfikować akcje browser do niego. +- **Zdalne CDP:** ustaw `browser.profiles..cdpUrl` (lub `browser.cdpUrl`), aby dołączyć do zdalnej przeglądarki opartej na Chromium. W takim przypadku OpenClaw nie uruchomi lokalnej przeglądarki. -Zachowanie przy zatrzymywaniu różni się w zależności od trybu profilu: +Zachowanie przy zatrzymaniu różni się zależnie od trybu profilu: -- lokalne zarządzane profile: `openclaw browser stop` zatrzymuje proces przeglądarki, - który uruchomił OpenClaw -- profile tylko-dołączane i zdalne profile CDP: `openclaw browser stop` zamyka aktywną +- lokalne profile zarządzane: `openclaw browser stop` zatrzymuje proces przeglądarki, który + został uruchomiony przez OpenClaw +- profile tylko-dołączane i profile zdalnego CDP: `openclaw browser stop` zamyka aktywną sesję sterowania i zwalnia nadpisania emulacji Playwright/CDP (viewport, - schemat kolorów, ustawienia regionalne, strefa czasowa, tryb offline i podobny stan), - mimo że żaden proces przeglądarki nie został uruchomiony przez OpenClaw + schemat kolorów, ustawienia regionalne, strefa czasowa, tryb offline i podobny stan), mimo że + żaden proces przeglądarki nie został uruchomiony przez OpenClaw -Zdalne adresy URL CDP mogą zawierać uwierzytelnianie: +Zdalne URL-e CDP mogą zawierać uwierzytelnianie: - Tokeny zapytania (np. `https://provider.example?token=`) -- Uwierzytelnianie HTTP Basic (np. `https://user:pass@provider.example`) +- HTTP Basic auth (np. `https://user:pass@provider.example`) -OpenClaw zachowuje dane uwierzytelniające przy wywoływaniu punktów końcowych `/json/*` oraz podczas łączenia -z WebSocket CDP. Zamiast zatwierdzać tokeny w plikach konfiguracyjnych, preferuj zmienne środowiskowe lub menedżery sekretów. +OpenClaw zachowuje uwierzytelnianie przy wywoływaniu endpointów `/json/*` oraz przy łączeniu +z WebSocket CDP. Preferuj zmienne środowiskowe lub menedżery sekretów dla +tokenów zamiast commitowania ich do plików konfiguracyjnych. -## Proxy przeglądarki Node (domyślnie bez konfiguracji) +## Proxy browser Node (domyślnie zero konfiguracji) -Jeśli uruchamiasz **hosta Node** na komputerze, na którym znajduje się Twoja przeglądarka, OpenClaw może -automatycznie kierować wywołania narzędzia przeglądarki do tego node bez dodatkowej konfiguracji przeglądarki. -To domyślna ścieżka dla zdalnych bram. +Jeśli uruchamiasz **hosta Node** na maszynie, która ma Twoją przeglądarkę, OpenClaw może +automatycznie przekierowywać wywołania narzędzia browser do tego node bez dodatkowej konfiguracji browser. +To domyślna ścieżka dla zdalnych Gateway. Uwagi: -- Host Node udostępnia swój lokalny serwer sterowania przeglądarką przez **polecenie proxy**. +- Host Node udostępnia swój lokalny serwer sterowania browser przez **polecenie proxy**. - Profile pochodzą z własnej konfiguracji `browser.profiles` node (takiej samej jak lokalnie). -- `nodeHost.browserProxy.allowProfiles` jest opcjonalne. Pozostaw puste, aby zachować starsze/domyslne zachowanie: wszystkie skonfigurowane profile pozostają osiągalne przez proxy, w tym trasy tworzenia/usuwania profili. -- Jeśli ustawisz `nodeHost.browserProxy.allowProfiles`, OpenClaw traktuje to jako granicę minimalnych uprawnień: tylko profile z listy dozwolonych mogą być wskazywane, a trasy trwałego tworzenia/usuwania profili są blokowane na powierzchni proxy. -- Wyłącz tę funkcję, jeśli jej nie chcesz: +- `nodeHost.browserProxy.allowProfiles` jest opcjonalne. Pozostaw puste dla starszego/dom yślnego zachowania: wszystkie skonfigurowane profile pozostają osiągalne przez proxy, w tym trasy tworzenia/usuwania profili. +- Jeśli ustawisz `nodeHost.browserProxy.allowProfiles`, OpenClaw traktuje to jako granicę najmniejszych uprawnień: tylko profile z allowlisty mogą być celem, a trasy tworzenia/usuwania trwałych profili są blokowane na powierzchni proxy. +- Wyłącz, jeśli tego nie chcesz: - Na node: `nodeHost.browserProxy.enabled=false` - Na gateway: `gateway.nodes.browser.mode="off"` -## Browserless (hostowany zdalny CDP) +## Browserless (hostowane zdalne CDP) [Browserless](https://browserless.io) to hostowana usługa Chromium, która udostępnia -adresy URL połączeń CDP przez HTTPS i WebSocket. OpenClaw może używać obu form, ale -dla zdalnego profilu przeglądarki najprostszą opcją jest bezpośredni adres WebSocket +URL-e połączeń CDP przez HTTPS i WebSocket. OpenClaw może używać obu form, ale +dla zdalnego profilu browser najprostszą opcją jest bezpośredni URL WebSocket z dokumentacji połączeń Browserless. Przykład: @@ -311,30 +312,44 @@ Przykład: Uwagi: -- Zastąp `` swoim prawdziwym tokenem Browserless. -- Wybierz punkt końcowy regionu zgodny z Twoim kontem Browserless (zobacz ich dokumentację). -- Jeśli Browserless podaje bazowy adres URL HTTPS, możesz albo przekształcić go na - `wss://` w celu bezpośredniego połączenia CDP, albo pozostawić adres HTTPS i pozwolić OpenClaw +- Zastąp `` swoim rzeczywistym tokenem Browserless. +- Wybierz endpoint regionu zgodny z Twoim kontem Browserless (szczegóły w ich dokumentacji). +- Jeśli Browserless podaje bazowy URL HTTPS, możesz albo przekonwertować go na + `wss://` dla bezpośredniego połączenia CDP, albo zachować URL HTTPS i pozwolić OpenClaw wykryć `/json/version`. -## Dostawcy bezpośredniego WebSocket CDP +## Bezpośredni dostawcy WebSocket CDP -Niektóre hostowane usługi przeglądarki udostępniają **bezpośredni punkt końcowy WebSocket** zamiast -standardowego wykrywania CDP opartego na HTTP (`/json/version`). OpenClaw obsługuje oba warianty: +Niektóre hostowane usługi przeglądarki udostępniają **bezpośredni endpoint WebSocket** +zamiast standardowego wykrywania CDP opartego na HTTP (`/json/version`). OpenClaw akceptuje trzy +kształty URL CDP i automatycznie wybiera właściwą strategię połączenia: -- **Punkty końcowe HTTP(S)** — OpenClaw wywołuje `/json/version`, aby wykryć - adres URL debuggera WebSocket, a następnie się łączy. -- **Punkty końcowe WebSocket** (`ws://` / `wss://`) — OpenClaw łączy się bezpośrednio, - pomijając `/json/version`. Używaj tego w usługach takich jak - [Browserless](https://browserless.io), - [Browserbase](https://www.browserbase.com) lub u dowolnego dostawcy, który przekazuje Ci - adres URL WebSocket. +- **Wykrywanie HTTP(S)** — `http://host[:port]` lub `https://host[:port]`. + OpenClaw wywołuje `/json/version`, aby wykryć URL debuggera WebSocket, a następnie + się łączy. Bez fallbacku WebSocket. +- **Bezpośrednie endpointy WebSocket** — `ws://host[:port]/devtools//` lub + `wss://...` ze ścieżką `/devtools/browser|page|worker|shared_worker|service_worker/`. + OpenClaw łączy się bezpośrednio przez handshake WebSocket i pomija + całkowicie `/json/version`. +- **Bazowe rooty WebSocket** — `ws://host[:port]` lub `wss://host[:port]` bez + ścieżki `/devtools/...` (np. [Browserless](https://browserless.io), + [Browserbase](https://www.browserbase.com)). OpenClaw najpierw próbuje wykrywania HTTP + `/json/version` (normalizując schemat do `http`/`https`); + jeśli wykrywanie zwróci `webSocketDebuggerUrl`, zostanie ono użyte, w przeciwnym razie OpenClaw + przejdzie do bezpośredniego handshake WebSocket na bazowym root. Obejmuje to + zarówno porty zdalnego debugowania w stylu Chrome, jak i dostawców tylko-WebSocket. + +Zwykłe `ws://host:port` / `wss://host:port` bez ścieżki `/devtools/...`, +wskazujące na lokalną instancję Chrome, są obsługiwane przez fallback z wykrywaniem najpierw — +Chrome akceptuje upgrade WebSocket tylko na konkretnej ścieżce per-browser +lub per-target zwracanej przez `/json/version`, więc sam handshake na bazowym root +zakończyłby się niepowodzeniem. ### Browserbase [Browserbase](https://www.browserbase.com) to platforma chmurowa do uruchamiania przeglądarek headless z wbudowanym rozwiązywaniem CAPTCHA, trybem stealth i -proxy rezydencyjnymi. +proxy rezydencjalnymi. ```json5 { @@ -357,61 +372,60 @@ Uwagi: - [Zarejestruj się](https://www.browserbase.com/sign-up) i skopiuj swój **API Key** z [panelu Overview](https://www.browserbase.com/overview). -- Zastąp `` swoim prawdziwym kluczem API Browserbase. +- Zastąp `` swoim rzeczywistym kluczem API Browserbase. - Browserbase automatycznie tworzy sesję przeglądarki przy połączeniu WebSocket, więc nie jest potrzebny ręczny krok tworzenia sesji. -- Warstwa darmowa pozwala na jedną współbieżną sesję i jedną godzinę przeglądarki miesięcznie. - Zobacz [cennik](https://www.browserbase.com/pricing), aby poznać limity planów płatnych. -- Zobacz [dokumentację Browserbase](https://docs.browserbase.com), aby uzyskać pełne - informacje referencyjne o API, przewodniki po SDK i przykłady integracji. +- Darmowy plan pozwala na jedną współbieżną sesję i jedną godzinę przeglądarki miesięcznie. + Zobacz [cennik](https://www.browserbase.com/pricing), aby sprawdzić limity płatnych planów. +- Pełne odniesienie do API, przewodniki SDK i przykłady integracji znajdziesz w [dokumentacji Browserbase](https://docs.browserbase.com). ## Bezpieczeństwo Kluczowe założenia: -- Sterowanie przeglądarką jest dostępne tylko przez loopback; dostęp odbywa się przez uwierzytelnianie Gateway lub parowanie node. -- Samodzielne loopback API HTTP przeglądarki używa **wyłącznie uwierzytelniania wspólnym sekretem**: - token bearer gateway, `x-openclaw-password` lub uwierzytelnianie HTTP Basic z - skonfigurowanym hasłem gateway. -- Nagłówki tożsamości Tailscale Serve i `gateway.auth.mode: "trusted-proxy"` **nie** - uwierzytelniają tego samodzielnego loopback API przeglądarki. -- Jeśli sterowanie przeglądarką jest włączone i nie skonfigurowano uwierzytelniania wspólnym sekretem, OpenClaw - automatycznie generuje `gateway.auth.token` przy uruchomieniu i zapisuje go w konfiguracji. -- OpenClaw **nie** generuje tego tokenu automatycznie, gdy `gateway.auth.mode` jest - już ustawione na `password`, `none` lub `trusted-proxy`. -- Utrzymuj Gateway i wszystkie hosty node w sieci prywatnej (Tailscale); unikaj publicznej ekspozycji. -- Traktuj zdalne adresy URL/tokeny CDP jako sekrety; preferuj zmienne środowiskowe lub menedżer sekretów. +- Sterowanie przeglądarką działa tylko przez loopback; dostęp przechodzi przez auth Gateway lub parowanie node. +- Samodzielne loopbackowe HTTP API przeglądarki używa **wyłącznie auth ze współdzielonym sekretem**: + bearer token Gateway, `x-openclaw-password` lub HTTP Basic auth z + skonfigurowanym hasłem Gateway. +- Nagłówki tożsamości Tailscale Serve i `gateway.auth.mode: "trusted-proxy"` + **nie** uwierzytelniają tego samodzielnego loopbackowego API przeglądarki. +- Jeśli sterowanie przeglądarką jest włączone i nie skonfigurowano auth ze współdzielonym sekretem, OpenClaw + automatycznie generuje `gateway.auth.token` przy starcie i zapisuje go do konfiguracji. +- OpenClaw **nie** generuje automatycznie tego tokenu, gdy `gateway.auth.mode` jest już ustawione na + `password`, `none` lub `trusted-proxy`. +- Trzymaj Gateway i wszelkie hosty node w sieci prywatnej (Tailscale); unikaj publicznego wystawiania. +- Traktuj zdalne URL-e/tokeny CDP jak sekrety; preferuj zmienne env lub menedżer sekretów. Wskazówki dotyczące zdalnego CDP: -- Jeśli to możliwe, preferuj szyfrowane punkty końcowe (HTTPS lub WSS) i tokeny o krótkim czasie życia. +- W miarę możliwości preferuj szyfrowane endpointy (HTTPS lub WSS) oraz tokeny krótkotrwałe. - Unikaj osadzania długowiecznych tokenów bezpośrednio w plikach konfiguracyjnych. ## Profile (wiele przeglądarek) OpenClaw obsługuje wiele nazwanych profili (konfiguracji routingu). Profile mogą być: -- **zarządzane przez OpenClaw**: dedykowana instancja przeglądarki opartej na Chromium z własnym katalogiem danych użytkownika i portem CDP -- **zdalne**: jawny adres URL CDP (przeglądarka oparta na Chromium uruchomiona gdzie indziej) -- **istniejąca sesja**: Twój istniejący profil Chrome przez automatyczne połączenie Chrome DevTools MCP +- **zarządzane przez openclaw**: dedykowana instancja przeglądarki opartej na Chromium z własnym katalogiem danych użytkownika + portem CDP +- **zdalne**: jawny URL CDP (przeglądarka oparta na Chromium uruchomiona gdzie indziej) +- **istniejąca sesja**: istniejący profil Chrome przez auto-connect Chrome DevTools MCP Ustawienia domyślne: - Profil `openclaw` jest tworzony automatycznie, jeśli go brakuje. -- Profil `user` jest wbudowany do dołączania istniejącej sesji Chrome MCP. -- Profile istniejącej sesji poza `user` są opcjonalne; utwórz je za pomocą `--driver existing-session`. +- Profil `user` jest wbudowany dla dołączania existing-session Chrome MCP. +- Profile existing-session poza `user` są typu opt-in; twórz je za pomocą `--driver existing-session`. - Lokalne porty CDP są domyślnie przydzielane z zakresu **18800–18899**. - Usunięcie profilu przenosi jego lokalny katalog danych do Kosza. -Wszystkie punkty końcowe sterowania akceptują `?profile=`; CLI używa `--browser-profile`. +Wszystkie endpointy sterowania akceptują `?profile=`; CLI używa `--browser-profile`. -## Istniejąca sesja przez Chrome DevTools MCP +## Existing-session przez Chrome DevTools MCP OpenClaw może także dołączyć do uruchomionego profilu przeglądarki opartej na Chromium przez -oficjalny serwer Chrome DevTools MCP. Pozwala to ponownie użyć kart i stanu logowania, -które są już otwarte w tym profilu przeglądarki. +oficjalny serwer Chrome DevTools MCP. Pozwala to ponownie wykorzystać karty i stan logowania +już otwarte w tym profilu przeglądarki. -Oficjalne materiały referencyjne i instrukcje konfiguracji: +Oficjalne materiały wprowadzające i konfiguracyjne: - [Chrome for Developers: Use Chrome DevTools MCP with your browser session](https://developer.chrome.com/blog/chrome-devtools-mcp-debug-your-browser-session) - [Chrome DevTools MCP README](https://github.com/ChromeDevTools/chrome-devtools-mcp) @@ -420,12 +434,12 @@ Wbudowany profil: - `user` -Opcjonalnie: utwórz własny niestandardowy profil istniejącej sesji, jeśli chcesz -innej nazwy, koloru lub katalogu danych przeglądarki. +Opcjonalnie: utwórz własny niestandardowy profil existing-session, jeśli chcesz mieć +inną nazwę, kolor lub katalog danych przeglądarki. -Domyślne zachowanie: +Zachowanie domyślne: -- Wbudowany profil `user` używa automatycznego połączenia Chrome MCP, które jest kierowane na +- Wbudowany profil `user` używa auto-connect Chrome MCP, który celuje w domyślny lokalny profil Google Chrome. Użyj `userDataDir` dla Brave, Edge, Chromium lub niestandardowego profilu Chrome: @@ -445,11 +459,11 @@ Użyj `userDataDir` dla Brave, Edge, Chromium lub niestandardowego profilu Chrom } ``` -Następnie w odpowiadającej przeglądarce: +Następnie w pasującej przeglądarce: 1. Otwórz stronę inspect tej przeglądarki dla zdalnego debugowania. 2. Włącz zdalne debugowanie. -3. Pozostaw przeglądarkę uruchomioną i zatwierdź monit o połączenie, gdy OpenClaw będzie się dołączać. +3. Pozostaw przeglądarkę uruchomioną i zaakceptuj prompt połączenia, gdy OpenClaw będzie się dołączać. Typowe strony inspect: @@ -457,7 +471,7 @@ Typowe strony inspect: - Brave: `brave://inspect/#remote-debugging` - Edge: `edge://inspect/#remote-debugging` -Test smoke dla aktywnego dołączania: +Test smoke dołączania live: ```bash openclaw browser --browser-profile user start @@ -472,68 +486,68 @@ Jak wygląda powodzenie: - `status` pokazuje `transport: chrome-mcp` - `status` pokazuje `running: true` - `tabs` wyświetla listę już otwartych kart przeglądarki -- `snapshot` zwraca refs z wybranej aktywnej karty +- `snapshot` zwraca referencje z wybranej karty live -Co sprawdzić, jeśli dołączenie nie działa: +Co sprawdzić, jeśli dołączanie nie działa: - docelowa przeglądarka oparta na Chromium ma wersję `144+` - zdalne debugowanie jest włączone na stronie inspect tej przeglądarki -- przeglądarka wyświetliła monit o zgodę na dołączenie i został on zaakceptowany -- `openclaw doctor` migruje starą konfigurację przeglądarki opartą na rozszerzeniu i sprawdza, - czy Chrome jest zainstalowane lokalnie dla domyślnych profili auto-connect, ale nie może +- przeglądarka wyświetliła prompt zgody na dołączenie i został on zaakceptowany +- `openclaw doctor` migruje starą konfigurację przeglądarki opartą na rozszerzeniach i sprawdza, czy + Chrome jest lokalnie zainstalowany dla domyślnych profili auto-connect, ale nie może włączyć za Ciebie zdalnego debugowania po stronie przeglądarki Użycie przez agenta: -- Użyj `profile="user"`, gdy potrzebujesz zalogowanego stanu przeglądarki użytkownika. -- Jeśli używasz niestandardowego profilu istniejącej sesji, przekaż jawną nazwę tego profilu. -- Wybieraj ten tryb tylko wtedy, gdy użytkownik jest przy komputerze, aby zatwierdzić - monit o dołączenie. +- Używaj `profile="user"`, gdy potrzebujesz stanu zalogowanej przeglądarki użytkownika. +- Jeśli używasz niestandardowego profilu existing-session, podaj tę jawną nazwę profilu. +- Wybieraj ten tryb tylko wtedy, gdy użytkownik jest przy komputerze, aby zatwierdzić prompt + dołączenia. - Gateway lub host node może uruchomić `npx chrome-devtools-mcp@latest --autoConnect` Uwagi: -- Ta ścieżka wiąże się z większym ryzykiem niż odizolowany profil `openclaw`, ponieważ może +- Ta ścieżka jest bardziej ryzykowna niż odizolowany profil `openclaw`, ponieważ może działać wewnątrz Twojej zalogowanej sesji przeglądarki. -- OpenClaw nie uruchamia przeglądarki dla tego sterownika; dołącza tylko do +- OpenClaw nie uruchamia przeglądarki dla tego sterownika; dołącza jedynie do istniejącej sesji. -- OpenClaw używa tutaj oficjalnego przepływu Chrome DevTools MCP `--autoConnect`. Jeśli - ustawiono `userDataDir`, OpenClaw przekazuje je dalej, aby wskazać jawnie ten +- OpenClaw używa tutaj oficjalnego przepływu `--autoConnect` Chrome DevTools MCP. Jeśli + ustawiono `userDataDir`, OpenClaw przekazuje je dalej, aby celować w ten jawny katalog danych użytkownika Chromium. -- Zrzuty ekranu istniejącej sesji obsługują przechwycenia strony i przechwycenia elementów przez `--ref` - ze snapshotów, ale nie selektory CSS `--element`. -- Zrzuty ekranu stron istniejącej sesji działają bez Playwright przez Chrome MCP. - Oparte na ref zrzuty ekranu elementów (`--ref`) również tam działają, ale `--full-page` - nie może być łączone z `--ref` ani `--element`. -- Działania istniejącej sesji są nadal bardziej ograniczone niż w ścieżce +- Zrzuty ekranu existing-session obsługują przechwytywanie stron i przechwytywanie elementów przez `--ref` ze snapshotów, ale nie selektory CSS `--element`. +- Zrzuty ekranu stron existing-session działają bez Playwright przez Chrome MCP. + Zrzuty elementów oparte na referencjach (`--ref`) także tam działają, ale `--full-page` + nie można łączyć z `--ref` ani `--element`. +- Akcje existing-session są nadal bardziej ograniczone niż ścieżka zarządzanej przeglądarki: - `click`, `type`, `hover`, `scrollIntoView`, `drag` i `select` wymagają - refs ze snapshotów zamiast selektorów CSS - - `click` obsługuje tylko lewy przycisk (bez nadpisywania przycisku i modyfikatorów) - - `type` nie obsługuje `slowly=true`; użyj `fill` lub `press` + referencji snapshotów zamiast selektorów CSS + - `click` obsługuje tylko lewy przycisk (bez nadpisania przycisku ani modyfikatorów) + - `type` nie obsługuje `slowly=true`; użyj `fill` albo `press` - `press` nie obsługuje `delayMs` - `hover`, `scrollIntoView`, `drag`, `select`, `fill` i `evaluate` nie - obsługują nadpisywania limitu czasu dla pojedynczego wywołania + obsługują nadpisania timeoutu per wywołanie - `select` obecnie obsługuje tylko jedną wartość -- `wait --url` dla istniejącej sesji obsługuje dokładne, częściowe i globowe wzorce +- Existing-session `wait --url` obsługuje wzorce exact, substring i glob tak jak inne sterowniki przeglądarki. `wait --load networkidle` nie jest jeszcze obsługiwane. -- Hooki przesyłania plików dla istniejącej sesji wymagają `ref` lub `inputRef`, obsługują jeden plik naraz - i nie obsługują wskazywania CSS `element`. -- Hooki dialogów istniejącej sesji nie obsługują nadpisywania limitu czasu. -- Niektóre funkcje nadal wymagają ścieżki zarządzanej przeglądarki, w tym działania wsadowe, - eksport PDF, przechwytywanie pobrań i `responsebody`. -- Istniejąca sesja jest lokalna względem hosta. Jeśli Chrome znajduje się na innej maszynie lub - w innej przestrzeni nazw sieci, użyj zamiast tego zdalnego CDP lub hosta node. +- Hooki uploadu existing-session wymagają `ref` lub `inputRef`, obsługują jeden plik + naraz i nie obsługują targetowania CSS `element`. +- Hooki dialogów existing-session nie obsługują nadpisania timeoutu. +- Niektóre funkcje nadal wymagają ścieżki zarządzanej przeglądarki, w tym batch + actions, eksport PDF, przechwytywanie pobrań i `responsebody`. +- Existing-session może dołączyć na wybranym hoście lub przez połączony + browser node. Jeśli Chrome znajduje się gdzie indziej i nie jest połączony żaden browser node, użyj + zdalnego CDP albo hosta node. ## Gwarancje izolacji -- **Dedykowany katalog danych użytkownika**: nigdy nie dotyka Twojego osobistego profilu przeglądarki. +- **Dedykowany katalog danych użytkownika**: nigdy nie dotyka profilu Twojej osobistej przeglądarki. - **Dedykowane porty**: unika `9222`, aby zapobiegać kolizjom z przepływami pracy deweloperskiej. -- **Deterministyczne sterowanie kartami**: kierowanie na karty według `targetId`, a nie „ostatnia karta”. +- **Deterministyczne sterowanie kartami**: targetuj karty przez `targetId`, a nie „ostatnią kartę”. ## Wybór przeglądarki -Przy lokalnym uruchamianiu OpenClaw wybiera pierwszą dostępną: +Przy uruchamianiu lokalnym OpenClaw wybiera pierwszą dostępną: 1. Chrome 2. Brave @@ -541,7 +555,7 @@ Przy lokalnym uruchamianiu OpenClaw wybiera pierwszą dostępną: 4. Chromium 5. Chrome Canary -Możesz to nadpisać za pomocą `browser.executablePath`. +Możesz to nadpisać przez `browser.executablePath`. Platformy: @@ -549,16 +563,16 @@ Platformy: - Linux: szuka `google-chrome`, `brave`, `microsoft-edge`, `chromium` itd. - Windows: sprawdza typowe lokalizacje instalacji. -## API sterowania (opcjonalnie) +## API sterowania (opcjonalne) -Tylko dla integracji lokalnych Gateway udostępnia niewielkie loopback API HTTP: +Tylko dla integracji lokalnych Gateway udostępnia małe loopbackowe HTTP API: - Status/start/stop: `GET /`, `POST /start`, `POST /stop` - Karty: `GET /tabs`, `POST /tabs/open`, `POST /tabs/focus`, `DELETE /tabs/:targetId` - Snapshot/zrzut ekranu: `GET /snapshot`, `POST /screenshot` -- Działania: `POST /navigate`, `POST /act` +- Akcje: `POST /navigate`, `POST /act` - Hooki: `POST /hooks/file-chooser`, `POST /hooks/dialog` -- Pobrania: `POST /download`, `POST /wait/download` +- Pobieranie: `POST /download`, `POST /wait/download` - Debugowanie: `GET /console`, `POST /pdf` - Debugowanie: `GET /errors`, `GET /requests`, `POST /trace/start`, `POST /trace/stop`, `POST /highlight` - Sieć: `POST /response/body` @@ -566,74 +580,74 @@ Tylko dla integracji lokalnych Gateway udostępnia niewielkie loopback API HTTP: - Stan: `GET /storage/:kind`, `POST /storage/:kind/set`, `POST /storage/:kind/clear` - Ustawienia: `POST /set/offline`, `POST /set/headers`, `POST /set/credentials`, `POST /set/geolocation`, `POST /set/media`, `POST /set/timezone`, `POST /set/locale`, `POST /set/device` -Wszystkie punkty końcowe akceptują `?profile=`. +Wszystkie endpointy akceptują `?profile=`. -Jeśli skonfigurowano uwierzytelnianie gateway wspólnym sekretem, trasy HTTP przeglądarki również wymagają uwierzytelniania: +Jeśli skonfigurowano auth Gateway ze współdzielonym sekretem, trasy HTTP przeglądarki także wymagają auth: - `Authorization: Bearer ` -- `x-openclaw-password: ` lub uwierzytelnianie HTTP Basic z tym hasłem +- `x-openclaw-password: ` lub HTTP Basic auth z tym hasłem Uwagi: -- To samodzielne loopback API przeglądarki **nie** korzysta z trusted-proxy ani +- To samodzielne loopbackowe API przeglądarki **nie** korzysta z trusted-proxy ani nagłówków tożsamości Tailscale Serve. -- Jeśli `gateway.auth.mode` ma wartość `none` lub `trusted-proxy`, te loopback trasy przeglądarki - nie dziedziczą tych trybów opartych na tożsamości; utrzymuj je tylko na loopback. +- Jeśli `gateway.auth.mode` to `none` lub `trusted-proxy`, te loopbackowe trasy browser + nie dziedziczą tych trybów niosących tożsamość; utrzymuj je wyłącznie na loopback. ### Kontrakt błędów `/act` `POST /act` używa ustrukturyzowanej odpowiedzi błędu dla walidacji na poziomie trasy i -błędów polityki: +awarii polityki: ```json { "error": "", "code": "ACT_*" } ``` -Aktualne wartości `code`: +Bieżące wartości `code`: -- `ACT_KIND_REQUIRED` (HTTP 400): brakuje `kind` lub nie jest rozpoznawane. -- `ACT_INVALID_REQUEST` (HTTP 400): payload działania nie przeszedł normalizacji lub walidacji. -- `ACT_SELECTOR_UNSUPPORTED` (HTTP 400): użyto `selector` z nieobsługiwanym rodzajem działania. +- `ACT_KIND_REQUIRED` (HTTP 400): brakuje `kind` lub jest nierozpoznane. +- `ACT_INVALID_REQUEST` (HTTP 400): payload akcji nie przeszedł normalizacji lub walidacji. +- `ACT_SELECTOR_UNSUPPORTED` (HTTP 400): użyto `selector` z nieobsługiwanym rodzajem akcji. - `ACT_EVALUATE_DISABLED` (HTTP 403): `evaluate` (lub `wait --fn`) jest wyłączone w konfiguracji. -- `ACT_TARGET_ID_MISMATCH` (HTTP 403): najwyższego poziomu lub wsadowe `targetId` koliduje z celem żądania. -- `ACT_EXISTING_SESSION_UNSUPPORTED` (HTTP 501): działanie nie jest obsługiwane dla profili istniejącej sesji. +- `ACT_TARGET_ID_MISMATCH` (HTTP 403): najwyższego poziomu lub batchowane `targetId` koliduje z celem żądania. +- `ACT_EXISTING_SESSION_UNSUPPORTED` (HTTP 501): akcja nie jest obsługiwana dla profili existing-session. -Inne błędy czasu działania mogą nadal zwracać `{ "error": "" }` bez pola +Inne awarie runtime nadal mogą zwracać `{ "error": "" }` bez pola `code`. ### Wymaganie Playwright -Niektóre funkcje (navigate/act/snapshot AI/snapshot roli, zrzuty ekranu elementów, -PDF) wymagają Playwright. Jeśli Playwright nie jest zainstalowany, te punkty końcowe zwracają +Niektóre funkcje (`navigate`/`act`/snapshot AI/role snapshot, zrzuty ekranu elementów, +PDF) wymagają Playwright. Jeśli Playwright nie jest zainstalowany, te endpointy zwracają czytelny błąd 501. Co nadal działa bez Playwright: -- Snapshoty ARIA -- Zrzuty ekranu stron dla zarządzanej przeglądarki `openclaw`, gdy dostępny jest - WebSocket CDP dla danej karty -- Zrzuty ekranu stron dla profili `existing-session` / Chrome MCP -- Oparte na `ref` zrzuty ekranu istniejącej sesji (`--ref`) z danych wyjściowych snapshotu +- snapshoty ARIA +- zrzuty ekranu strony dla zarządzanej przeglądarki `openclaw`, gdy dostępny jest per-tab + WebSocket CDP +- zrzuty ekranu strony dla profili `existing-session` / Chrome MCP +- zrzuty ekranu existing-session oparte na `--ref` z wyniku snapshotu Co nadal wymaga Playwright: - `navigate` - `act` -- Snapshoty AI / snapshoty roli -- Zrzuty ekranu elementów przez selektor CSS (`--element`) -- Eksport pełnego PDF przeglądarki +- snapshoty AI / role snapshoty +- zrzuty ekranu elementów przez selektor CSS (`--element`) +- pełny eksport PDF przeglądarki -Zrzuty ekranu elementów odrzucają też `--full-page`; trasa zwraca `fullPage is +Zrzuty ekranu elementów odrzucają także `--full-page`; trasa zwraca `fullPage is not supported for element screenshots`. -Jeśli widzisz `Playwright is not available in this gateway build`, zainstaluj pełny -pakiet Playwright (nie `playwright-core`) i uruchom gateway ponownie albo zainstaluj -OpenClaw ponownie z obsługą przeglądarki. +Jeśli zobaczysz `Playwright is not available in this gateway build`, zainstaluj pełny +pakiet Playwright (nie `playwright-core`) i uruchom ponownie gateway albo zainstaluj ponownie +OpenClaw z obsługą przeglądarki. -#### Instalacja Playwright w Docker +#### Instalacja Playwright w Dockerze -Jeśli Twój Gateway działa w Docker, unikaj `npx playwright` (konflikty nadpisań npm). -Użyj zamiast tego dołączonego CLI: +Jeśli Twój Gateway działa w Dockerze, unikaj `npx playwright` (konflikty override’ów npm). +Zamiast tego użyj dołączonego CLI: ```bash docker compose run --rm openclaw-cli \ @@ -642,25 +656,25 @@ docker compose run --rm openclaw-cli \ Aby zachować pobrane przeglądarki, ustaw `PLAYWRIGHT_BROWSERS_PATH` (na przykład `/home/node/.cache/ms-playwright`) i upewnij się, że `/home/node` jest zachowywane przez -`OPENCLAW_HOME_VOLUME` lub bind mount. Zobacz [Docker](/pl/install/docker). +`OPENCLAW_HOME_VOLUME` albo bind mount. Zobacz [Docker](/pl/install/docker). ## Jak to działa (wewnętrznie) Przepływ na wysokim poziomie: -- Niewielki **serwer sterowania** akceptuje żądania HTTP. +- Mały **serwer sterowania** akceptuje żądania HTTP. - Łączy się z przeglądarkami opartymi na Chromium (Chrome/Brave/Edge/Chromium) przez **CDP**. -- Do zaawansowanych działań (kliknięcie/pisanie/snapshot/PDF) używa **Playwright** na warstwie +- W przypadku zaawansowanych akcji (kliknięcie/wpisywanie/snapshot/PDF) używa **Playwright** na warstwie CDP. -- Gdy brakuje Playwright, dostępne są tylko operacje niewymagające Playwright. +- Gdy Playwright nie jest dostępny, dostępne są tylko operacje niewymagające Playwright. -Taka konstrukcja zapewnia agentowi stabilny, deterministyczny interfejs, a jednocześnie pozwala -Ci wymieniać lokalne/zdalne przeglądarki i profile. +Ten projekt utrzymuje agenta na stabilnym, deterministycznym interfejsie, a jednocześnie pozwala +Ci zamieniać lokalne/zdalne przeglądarki i profile. -## Szybkie odniesienie do CLI +## Szybki przewodnik po CLI Wszystkie polecenia akceptują `--browser-profile `, aby wskazać konkretny profil. -Wszystkie polecenia akceptują też `--json` dla danych wyjściowych czytelnych maszynowo (stabilne payloady). +Wszystkie polecenia akceptują też `--json` dla wyjścia czytelnego maszynowo (stabilne payloady). Podstawy: @@ -693,16 +707,16 @@ Inspekcja: Uwaga dotycząca cyklu życia: -- Dla profili tylko-dołączanych i zdalnych profili CDP `openclaw browser stop` nadal jest +- W przypadku profili tylko-dołączanych i zdalnego CDP `openclaw browser stop` nadal jest właściwym poleceniem czyszczenia po testach. Zamyka aktywną sesję sterowania i - usuwa tymczasowe nadpisania emulacji zamiast zabijać bazową + czyści tymczasowe nadpisania emulacji zamiast zabijać bazową przeglądarkę. - `openclaw browser errors --clear` - `openclaw browser requests --filter api --clear` - `openclaw browser pdf` - `openclaw browser responsebody "**/api" --max-chars 5000` -Działania: +Akcje: - `openclaw browser navigate https://example.com` - `openclaw browser resize 1280 720` @@ -748,48 +762,48 @@ Stan: Uwagi: - `upload` i `dialog` to wywołania **uzbrajające**; uruchom je przed kliknięciem/naciśnięciem, - które wywołuje selektor plików/okno dialogowe. -- Ścieżki wyjściowe pobrań i trace są ograniczone do tymczasowych katalogów głównych OpenClaw: - - trace: `/tmp/openclaw` (zapasowo: `${os.tmpdir()}/openclaw`) - - pobrania: `/tmp/openclaw/downloads` (zapasowo: `${os.tmpdir()}/openclaw/downloads`) -- Ścieżki przesyłania są ograniczone do tymczasowego katalogu głównego uploadów OpenClaw: - - uploady: `/tmp/openclaw/uploads` (zapasowo: `${os.tmpdir()}/openclaw/uploads`) -- `upload` może również ustawiać wejścia plików bezpośrednio przez `--input-ref` lub `--element`. + które wyzwala chooser/dialog. +- Ścieżki wyjściowe pobrań i trace są ograniczone do korzeni temp OpenClaw: + - trace: `/tmp/openclaw` (fallback: `${os.tmpdir()}/openclaw`) + - pobrania: `/tmp/openclaw/downloads` (fallback: `${os.tmpdir()}/openclaw/downloads`) +- Ścieżki uploadu są ograniczone do korzenia tymczasowych uploadów OpenClaw: + - uploady: `/tmp/openclaw/uploads` (fallback: `${os.tmpdir()}/openclaw/uploads`) +- `upload` może też ustawiać inputy plików bezpośrednio przez `--input-ref` lub `--element`. - `snapshot`: - - `--format ai` (domyślne, gdy Playwright jest zainstalowany): zwraca snapshot AI z numerycznymi refs (`aria-ref=""`). - - `--format aria`: zwraca drzewo dostępności (bez refs; tylko do inspekcji). - - `--efficient` (lub `--mode efficient`): kompaktowe ustawienie wstępne snapshotu roli (interactive + compact + depth + niższe maxChars). - - Domyślna konfiguracja (tylko narzędzie/CLI): ustaw `browser.snapshotDefaults.mode: "efficient"`, aby używać wydajnych snapshotów, gdy wywołujący nie przekaże trybu (zobacz [Konfiguracja Gateway](/pl/gateway/configuration-reference#browser)). - - Opcje snapshotu roli (`--interactive`, `--compact`, `--depth`, `--selector`) wymuszają snapshot oparty na roli z refs takimi jak `ref=e12`. - - `--frame "