diff --git a/docs/pl/channels/matrix.md b/docs/pl/channels/matrix.md
index f4fffb24c..bf36db3ce 100644
--- a/docs/pl/channels/matrix.md
+++ b/docs/pl/channels/matrix.md
@@ -1,26 +1,26 @@
---
read_when:
- Konfigurowanie Matrix w OpenClaw
- - Konfigurowanie E2EE i weryfikacji Matrix
-summary: Status wsparcia Matrix, konfiguracja i przykłady konfiguracji
+ - Konfigurowanie Matrix E2EE i weryfikacji
+summary: Status obsługi Matrix, konfiguracja i przykłady konfiguracji
title: Matrix
x-i18n:
- generated_at: "2026-04-15T09:51:04Z"
+ generated_at: "2026-04-15T19:41:38Z"
model: gpt-5.4
provider: openai
- source_hash: 631f6fdcfebc23136c1a66b04851a25c047535d13cceba5650b8b421bc3afcf8
+ source_hash: bd730bb9d0c8a548ee48b20931b3222e9aa1e6e95f1390b0c236645e03f3576d
source_path: channels/matrix.md
workflow: 15
---
# Matrix
-Matrix to dołączony Plugin kanałowy dla OpenClaw.
-Używa oficjalnego `matrix-js-sdk` i obsługuje DM-y, pokoje, wątki, multimedia, reakcje, ankiety, lokalizację oraz E2EE.
+Matrix to dołączony Plugin kanału dla OpenClaw.
+Używa oficjalnego `matrix-js-sdk` i obsługuje wiadomości prywatne, pokoje, wątki, multimedia, reakcje, ankiety, lokalizację oraz E2EE.
## Dołączony Plugin
-Matrix jest dostarczany jako dołączony Plugin w bieżących wydaniach OpenClaw, więc zwykłe
+Matrix jest dostarczany jako dołączony Plugin w obecnych wydaniach OpenClaw, więc zwykłe
spakowane kompilacje nie wymagają osobnej instalacji.
Jeśli używasz starszej kompilacji lub niestandardowej instalacji, która nie zawiera Matrix, zainstaluj
@@ -43,15 +43,15 @@ Zobacz [Plugins](/pl/tools/plugin), aby poznać zachowanie Pluginów i zasady in
## Konfiguracja
1. Upewnij się, że Plugin Matrix jest dostępny.
- - Bieżące spakowane wydania OpenClaw zawierają go już domyślnie.
+ - Obecne spakowane wydania OpenClaw już go zawierają.
- Starsze/niestandardowe instalacje mogą dodać go ręcznie za pomocą powyższych poleceń.
2. Utwórz konto Matrix na swoim homeserverze.
3. Skonfiguruj `channels.matrix`, używając jednego z wariantów:
- - `homeserver` + `accessToken`, lub
+ - `homeserver` + `accessToken`, albo
- `homeserver` + `userId` + `password`.
4. Uruchom ponownie Gateway.
-5. Rozpocznij DM z botem lub zaproś go do pokoju.
- - Nowe zaproszenia Matrix działają tylko wtedy, gdy zezwala na to `channels.matrix.autoJoin`.
+5. Rozpocznij wiadomość prywatną z botem albo zaproś go do pokoju.
+ - Nowe zaproszenia Matrix działają tylko wtedy, gdy `channels.matrix.autoJoin` na to pozwala.
Interaktywne ścieżki konfiguracji:
@@ -64,28 +64,28 @@ Kreator Matrix pyta o:
- URL homeservera
- metodę uwierzytelniania: token dostępu lub hasło
-- ID użytkownika (tylko uwierzytelnianie hasłem)
+- identyfikator użytkownika (tylko przy uwierzytelnianiu hasłem)
- opcjonalną nazwę urządzenia
- czy włączyć E2EE
- czy skonfigurować dostęp do pokoi i automatyczne dołączanie do zaproszeń
Najważniejsze zachowania kreatora:
-- Jeśli zmienne środowiskowe uwierzytelniania Matrix już istnieją, a dla tego konta nie zapisano jeszcze uwierzytelniania w konfiguracji, kreator oferuje skrót env, aby zachować dane uwierzytelniania w zmiennych środowiskowych.
-- Nazwy kont są normalizowane do ID konta. Na przykład `Ops Bot` staje się `ops-bot`.
-- Wpisy listy dozwolonych DM akceptują bezpośrednio `@user:server`; nazwy wyświetlane działają tylko wtedy, gdy wyszukiwanie w katalogu na żywo znajdzie dokładnie jedno dopasowanie.
-- Wpisy listy dozwolonych pokoi akceptują bezpośrednio ID pokoi i aliasy. Preferuj `!room:server` lub `#alias:server`; nierozwiązane nazwy są ignorowane w czasie działania podczas rozwiązywania listy dozwolonych.
-- W trybie listy dozwolonych dla automatycznego dołączania do zaproszeń używaj tylko stabilnych celów zaproszeń: `!roomId:server`, `#alias:server` lub `*`. Zwykłe nazwy pokoi są odrzucane.
+- Jeśli zmienne środowiskowe uwierzytelniania Matrix już istnieją, a to konto nie ma jeszcze zapisanego uwierzytelniania w konfiguracji, kreator oferuje skrót do użycia zmiennych środowiskowych, aby zachować uwierzytelnianie w zmiennych środowiskowych.
+- Nazwy kont są normalizowane do identyfikatora konta. Na przykład `Ops Bot` staje się `ops-bot`.
+- Wpisy listy dozwolonych dla wiadomości prywatnych akceptują bezpośrednio `@user:server`; nazwy wyświetlane działają tylko wtedy, gdy wyszukiwanie w katalogu na żywo znajdzie dokładnie jedno dopasowanie.
+- Wpisy listy dozwolonych dla pokoi akceptują bezpośrednio identyfikatory pokoi i aliasy. Preferuj `!room:server` albo `#alias:server`; nierozwiązane nazwy są ignorowane w czasie działania podczas rozwiązywania listy dozwolonych.
+- W trybie listy dozwolonych dla automatycznego dołączania do zaproszeń używaj tylko stabilnych celów zaproszeń: `!roomId:server`, `#alias:server` albo `*`. Zwykłe nazwy pokoi są odrzucane.
- Aby rozwiązać nazwy pokoi przed zapisaniem, użyj `openclaw channels resolve --channel matrix "Project Room"`.
-Domyślna wartość `channels.matrix.autoJoin` to `off`.
+`channels.matrix.autoJoin` domyślnie ma wartość `off`.
-Jeśli pozostawisz ją nieustawioną, bot nie będzie dołączał do zaproszonych pokoi ani nowych zaproszeń w stylu DM, więc nie pojawi się w nowych grupach ani zaproszonych DM-ach, chyba że najpierw dołączysz ręcznie.
+Jeśli pozostawisz ją nieustawioną, bot nie dołączy do zaproszonych pokoi ani nowych zaproszeń w stylu wiadomości prywatnych, więc nie pojawi się w nowych grupach ani zaproszonych wiadomościach prywatnych, chyba że najpierw dołączysz ręcznie.
-Ustaw `autoJoin: "allowlist"` razem z `autoJoinAllowlist`, aby ograniczyć, które zaproszenia akceptuje, albo ustaw `autoJoin: "always"`, jeśli ma dołączać do każdego zaproszenia.
+Ustaw `autoJoin: "allowlist"` razem z `autoJoinAllowlist`, aby ograniczyć, które zaproszenia będą akceptowane, albo ustaw `autoJoin: "always"`, jeśli chcesz, aby dołączał do każdego zaproszenia.
-W trybie `allowlist` pole `autoJoinAllowlist` akceptuje tylko `!roomId:server`, `#alias:server` lub `*`.
+W trybie `allowlist` `autoJoinAllowlist` akceptuje tylko `!roomId:server`, `#alias:server` albo `*`.
Przykład listy dozwolonych:
@@ -149,11 +149,11 @@ Konfiguracja oparta na haśle (token jest buforowany po zalogowaniu):
}
```
-Matrix przechowuje buforowane poświadczenia w `~/.openclaw/credentials/matrix/`.
-Konto domyślne używa `credentials.json`; nazwane konta używają `credentials-.json`.
-Jeśli w tej lokalizacji istnieją buforowane poświadczenia, OpenClaw traktuje Matrix jako skonfigurowany na potrzeby konfiguracji, doctor i wykrywania statusu kanału, nawet jeśli bieżące uwierzytelnianie nie jest ustawione bezpośrednio w konfiguracji.
+Matrix przechowuje zapisane w pamięci podręcznej poświadczenia w `~/.openclaw/credentials/matrix/`.
+Domyślne konto używa `credentials.json`; nazwane konta używają `credentials-.json`.
+Gdy istnieją tam zapisane w pamięci podręcznej poświadczenia, OpenClaw traktuje Matrix jako skonfigurowany na potrzeby konfiguracji, doctor i wykrywania statusu kanału, nawet jeśli bieżące uwierzytelnianie nie jest ustawione bezpośrednio w konfiguracji.
-Odpowiedniki w postaci zmiennych środowiskowych (używane, gdy klucz konfiguracji nie jest ustawiony):
+Odpowiedniki zmiennych środowiskowych (używane, gdy klucz konfiguracyjny nie jest ustawiony):
- `MATRIX_HOMESERVER`
- `MATRIX_ACCESS_TOKEN`
@@ -162,7 +162,7 @@ Odpowiedniki w postaci zmiennych środowiskowych (używane, gdy klucz konfigurac
- `MATRIX_DEVICE_ID`
- `MATRIX_DEVICE_NAME`
-Dla kont innych niż domyślne użyj zmiennych środowiskowych przypisanych do konta:
+Dla kont innych niż domyślne użyj zmiennych środowiskowych z zakresem konta:
- `MATRIX__HOMESERVER`
- `MATRIX__ACCESS_TOKEN`
@@ -176,19 +176,19 @@ Przykład dla konta `ops`:
- `MATRIX_OPS_HOMESERVER`
- `MATRIX_OPS_ACCESS_TOKEN`
-Dla znormalizowanego ID konta `ops-bot` użyj:
+Dla znormalizowanego identyfikatora konta `ops-bot` użyj:
- `MATRIX_OPS_X2D_BOT_HOMESERVER`
- `MATRIX_OPS_X2D_BOT_ACCESS_TOKEN`
-Matrix ucieka znaki interpunkcyjne w ID kont, aby uniknąć kolizji przypisanych zmiennych środowiskowych.
+Matrix zmienia interpunkcję w identyfikatorach kont, aby zmienne środowiskowe z zakresem konta nie kolidowały ze sobą.
Na przykład `-` staje się `_X2D_`, więc `ops-prod` mapuje się na `MATRIX_OPS_X2D_PROD_*`.
-Interaktywny kreator oferuje skrót do zmiennych środowiskowych tylko wtedy, gdy te zmienne uwierzytelniania już istnieją, a wybrane konto nie ma jeszcze zapisanego uwierzytelniania Matrix w konfiguracji.
+Interaktywny kreator oferuje skrót do zmiennych środowiskowych tylko wtedy, gdy te zmienne środowiskowe uwierzytelniania już istnieją, a wybrane konto nie ma jeszcze zapisanego uwierzytelniania Matrix w konfiguracji.
## Przykład konfiguracji
-To praktyczna bazowa konfiguracja z parowaniem DM, listą dozwolonych pokoi i włączonym E2EE:
+To praktyczna bazowa konfiguracja z parowaniem wiadomości prywatnych, listą dozwolonych pokoi i włączonym E2EE:
```json5
{
@@ -223,17 +223,17 @@ To praktyczna bazowa konfiguracja z parowaniem DM, listą dozwolonych pokoi i w
}
```
-`autoJoin` dotyczy wszystkich zaproszeń Matrix, w tym zaproszeń w stylu DM. OpenClaw nie może niezawodnie
-sklasyfikować zaproszonego pokoju jako DM lub grupy w momencie zaproszenia, więc wszystkie zaproszenia przechodzą najpierw przez `autoJoin`.
-`dm.policy` ma zastosowanie po dołączeniu bota i sklasyfikowaniu pokoju jako DM.
+`autoJoin` dotyczy wszystkich zaproszeń Matrix, w tym zaproszeń w stylu wiadomości prywatnych. OpenClaw nie może wiarygodnie
+sklasyfikować zaproszonego pokoju jako wiadomości prywatnej lub grupy w momencie zaproszenia, dlatego wszystkie zaproszenia najpierw przechodzą przez `autoJoin`.
+`dm.policy` ma zastosowanie po dołączeniu bota i sklasyfikowaniu pokoju jako wiadomości prywatnej.
-## Podglądy strumieniowe
+## Podglądy strumieniowania
Strumieniowanie odpowiedzi Matrix jest opcjonalne.
-Ustaw `channels.matrix.streaming` na `"partial"`, jeśli chcesz, aby OpenClaw wysyłał pojedynczą odpowiedź
-z podglądem na żywo, edytował ten podgląd w miejscu podczas generowania tekstu przez model, a następnie finalizował go po
-zakończeniu odpowiedzi:
+Ustaw `channels.matrix.streaming` na `"partial"`, jeśli chcesz, aby OpenClaw wysyłał pojedynczą odpowiedź podglądu na żywo,
+edytował ten podgląd na miejscu, gdy model generuje tekst, a następnie finalizował go, gdy
+odpowiedź będzie gotowa:
```json5
{
@@ -245,38 +245,38 @@ zakończeniu odpowiedzi:
}
```
-- `streaming: "off"` jest wartością domyślną. OpenClaw czeka na końcową odpowiedź i wysyła ją tylko raz.
-- `streaming: "partial"` tworzy jedną edytowalną wiadomość podglądu dla bieżącego bloku odpowiedzi asystenta przy użyciu zwykłych wiadomości tekstowych Matrix. Zachowuje to starsze zachowanie Matrix polegające na powiadamianiu najpierw o podglądzie, więc standardowe klienty mogą powiadamiać o pierwszym strumieniowanym tekście podglądu zamiast o ukończonym bloku.
-- `streaming: "quiet"` tworzy jeden edytowalny cichy podgląd dla bieżącego bloku odpowiedzi asystenta. Używaj tego tylko wtedy, gdy jednocześnie skonfigurujesz reguły push odbiorcy dla finalizowanych edycji podglądu.
-- `blockStreaming: true` włącza oddzielne komunikaty postępu Matrix. Gdy strumieniowanie podglądu jest włączone, Matrix zachowuje aktywny szkic dla bieżącego bloku i pozostawia ukończone bloki jako osobne wiadomości.
-- Gdy podgląd strumieniowy jest włączony, a `blockStreaming` jest wyłączone, Matrix edytuje aktywny szkic w miejscu i finalizuje to samo zdarzenie po zakończeniu bloku lub całej tury.
-- Jeśli podgląd przestanie mieścić się w jednym zdarzeniu Matrix, OpenClaw zatrzymuje strumieniowanie podglądu i wraca do zwykłego końcowego dostarczenia.
-- Odpowiedzi multimedialne nadal wysyłają załączniki normalnie. Jeśli nieaktualny podgląd nie może już zostać bezpiecznie ponownie użyty, OpenClaw redaguje go przed wysłaniem końcowej odpowiedzi multimedialnej.
-- Edycje podglądu generują dodatkowe wywołania API Matrix. Pozostaw strumieniowanie wyłączone, jeśli chcesz najbardziej zachowawczego zachowania względem limitów szybkości.
+- `streaming: "off"` jest ustawieniem domyślnym. OpenClaw czeka na końcową odpowiedź i wysyła ją tylko raz.
+- `streaming: "partial"` tworzy jedną edytowalną wiadomość podglądu dla bieżącego bloku asystenta przy użyciu zwykłych wiadomości tekstowych Matrix. Zachowuje to starsze zachowanie Matrix polegające na najpierw wysyłanym podglądzie w powiadomieniach, więc standardowe klienty mogą powiadamiać o pierwszym strumieniowanym tekście podglądu zamiast o ukończonym bloku.
+- `streaming: "quiet"` tworzy jedną edytowalną cichą notatkę podglądu dla bieżącego bloku asystenta. Używaj tego tylko wtedy, gdy skonfigurujesz również reguły push odbiorcy dla sfinalizowanych edycji podglądu.
+- `blockStreaming: true` włącza osobne wiadomości postępu Matrix. Gdy podgląd strumieniowania jest włączony, Matrix zachowuje szkic na żywo dla bieżącego bloku i pozostawia ukończone bloki jako oddzielne wiadomości.
+- Gdy podgląd strumieniowania jest włączony i `blockStreaming` jest wyłączone, Matrix edytuje szkic na żywo na miejscu i finalizuje to samo zdarzenie po zakończeniu bloku lub całej tury.
+- Jeśli podgląd przestanie mieścić się w jednym zdarzeniu Matrix, OpenClaw zatrzyma strumieniowanie podglądu i wróci do normalnego końcowego dostarczania.
+- Odpowiedzi multimedialne nadal wysyłają załączniki normalnie. Jeśli nieaktualnego podglądu nie da się już bezpiecznie ponownie użyć, OpenClaw zredaguje go przed wysłaniem końcowej odpowiedzi multimedialnej.
+- Edycje podglądu powodują dodatkowe wywołania API Matrix. Pozostaw strumieniowanie wyłączone, jeśli chcesz zachować najbardziej zachowawcze zachowanie względem limitów szybkości.
-`blockStreaming` samo w sobie nie włącza podglądów szkicu.
-Użyj `streaming: "partial"` lub `streaming: "quiet"` dla edycji podglądu; następnie dodaj `blockStreaming: true` tylko wtedy, gdy chcesz także, aby ukończone bloki odpowiedzi asystenta pozostały widoczne jako osobne komunikaty postępu.
+`blockStreaming` samo w sobie nie włącza roboczych podglądów.
+Użyj `streaming: "partial"` albo `streaming: "quiet"` do edycji podglądu; następnie dodaj `blockStreaming: true` tylko wtedy, gdy chcesz również, aby ukończone bloki asystenta pozostały widoczne jako oddzielne wiadomości postępu.
-Jeśli potrzebujesz standardowych powiadomień Matrix bez niestandardowych reguł push, użyj `streaming: "partial"` dla zachowania „najpierw podgląd” lub pozostaw `streaming` wyłączone dla dostarczania tylko końcowej odpowiedzi. Przy `streaming: "off"`:
+Jeśli potrzebujesz standardowych powiadomień Matrix bez niestandardowych reguł push, użyj `streaming: "partial"` dla zachowania z podglądem najpierw albo pozostaw `streaming` wyłączone dla dostarczania tylko końcowej odpowiedzi. Przy `streaming: "off"`:
-- `blockStreaming: true` wysyła każdy ukończony blok jako zwykłą wiadomość Matrix generującą powiadomienie.
-- `blockStreaming: false` wysyła tylko końcową ukończoną odpowiedź jako zwykłą wiadomość Matrix generującą powiadomienie.
+- `blockStreaming: true` wysyła każdy ukończony blok jako zwykłą powiadamiającą wiadomość Matrix.
+- `blockStreaming: false` wysyła tylko końcową ukończoną odpowiedź jako zwykłą powiadamiającą wiadomość Matrix.
-### Samohostowane reguły push dla cichych finalizowanych podglądów
+### Samodzielnie hostowane reguły push dla cichych sfinalizowanych podglądów
-Jeśli uruchamiasz własną infrastrukturę Matrix i chcesz, aby ciche podglądy wysyłały powiadomienie dopiero po zakończeniu bloku lub
-końcowej odpowiedzi, ustaw `streaming: "quiet"` i dodaj regułę push per użytkownik dla finalizowanych edycji podglądu.
+Jeśli utrzymujesz własną infrastrukturę Matrix i chcesz, aby ciche podglądy powiadamiały dopiero po ukończeniu bloku lub
+końcowej odpowiedzi, ustaw `streaming: "quiet"` i dodaj regułę push per użytkownik dla sfinalizowanych edycji podglądu.
-Zwykle jest to konfiguracja po stronie użytkownika-odbiorcy, a nie globalna zmiana konfiguracji homeservera:
+Zwykle jest to konfiguracja użytkownika-odbiorcy, a nie globalna zmiana konfiguracji homeservera:
Szybka mapa przed rozpoczęciem:
-- użytkownik odbiorca = osoba, która ma otrzymać powiadomienie
-- użytkownik bota = konto Matrix OpenClaw, które wysyła odpowiedź
-- do poniższych wywołań API użyj tokenu dostępu użytkownika odbiorcy
-- dopasuj `sender` w regule push do pełnego MXID użytkownika bota
+- użytkownik-odbiorca = osoba, która powinna otrzymać powiadomienie
+- użytkownik-bot = konto Matrix OpenClaw, które wysyła odpowiedź
+- użyj tokenu dostępu użytkownika-odbiorcy do poniższych wywołań API
+- dopasuj `sender` w regule push do pełnego MXID użytkownika-bota
-1. Skonfiguruj OpenClaw tak, aby używał cichych podglądów:
+1. Skonfiguruj OpenClaw do używania cichych podglądów:
```json5
{
@@ -288,13 +288,13 @@ Szybka mapa przed rozpoczęciem:
}
```
-2. Upewnij się, że konto odbiorcy już otrzymuje zwykłe powiadomienia push Matrix. Reguły cichych podglądów
- działają tylko wtedy, gdy ten użytkownik ma już działające pushery/urządzenia.
+2. Upewnij się, że konto odbiorcy już otrzymuje normalne powiadomienia push Matrix. Reguły
+ cichych podglądów działają tylko wtedy, gdy ten użytkownik ma już działające pushery/urządzenia.
-3. Pobierz token dostępu użytkownika odbiorcy.
+3. Pobierz token dostępu użytkownika-odbiorcy.
- Użyj tokenu użytkownika odbierającego, a nie tokenu bota.
- - Najłatwiej zwykle ponownie użyć tokenu istniejącej sesji klienta.
- - Jeśli musisz wygenerować nowy token, możesz zalogować się przez standardowe API Client-Server Matrix:
+ - Najłatwiej jest zwykle ponownie użyć tokenu istniejącej sesji klienta.
+ - Jeśli musisz wygenerować nowy token, możesz zalogować się przez standardowe API klient-serwer Matrix:
```bash
curl -sS -X POST \
@@ -310,7 +310,7 @@ curl -sS -X POST \
}'
```
-4. Zweryfikuj, że konto odbiorcy ma już pushery:
+4. Sprawdź, czy konto odbiorcy ma już pushery:
```bash
curl -sS \
@@ -318,10 +318,10 @@ curl -sS \
"https://matrix.example.org/_matrix/client/v3/pushers"
```
-Jeśli to nie zwraca żadnych aktywnych pusherów/urządzeń, najpierw napraw zwykłe powiadomienia Matrix, zanim dodasz
-poniższą regułę OpenClaw.
+Jeśli zwróci to brak aktywnych pusherów/urządzeń, najpierw napraw zwykłe powiadomienia Matrix przed dodaniem
+poniższej reguły OpenClaw.
-OpenClaw oznacza sfinalizowane edycje podglądu tylko tekstowego następująco:
+OpenClaw oznacza sfinalizowane edycje podglądu tylko tekstowego za pomocą:
```json
{
@@ -329,7 +329,7 @@ OpenClaw oznacza sfinalizowane edycje podglądu tylko tekstowego następująco:
}
```
-5. Utwórz regułę push typu override dla każdego konta odbiorcy, które ma otrzymywać te powiadomienia:
+5. Utwórz regułę push typu override dla każdego konta odbiorcy, które powinno otrzymywać te powiadomienia:
```bash
curl -sS -X PUT \
@@ -361,23 +361,23 @@ curl -sS -X PUT \
Zastąp te wartości przed uruchomieniem polecenia:
-- `https://matrix.example.org`: bazowy URL Twojego homeservera
+- `https://matrix.example.org`: podstawowy URL Twojego homeservera
- `$USER_ACCESS_TOKEN`: token dostępu użytkownika odbierającego
-- `openclaw-finalized-preview-botname`: ID reguły unikalne dla tego bota dla tego użytkownika odbierającego
+- `openclaw-finalized-preview-botname`: identyfikator reguły unikalny dla tego bota dla tego użytkownika odbierającego
- `@bot:example.org`: MXID Twojego bota Matrix OpenClaw, a nie MXID użytkownika odbierającego
Ważne w konfiguracjach z wieloma botami:
-- Reguły push są identyfikowane przez `ruleId`. Ponowne uruchomienie `PUT` dla tego samego ID reguły aktualizuje tę jedną regułę.
-- Jeśli jeden użytkownik odbierający ma otrzymywać powiadomienia dla wielu kont botów Matrix OpenClaw, utwórz jedną regułę na bota z unikalnym ID reguły dla każdego dopasowania nadawcy.
-- Prostym wzorcem jest `openclaw-finalized-preview-`, na przykład `openclaw-finalized-preview-ops` lub `openclaw-finalized-preview-support`.
+- Reguły push są kluczowane przez `ruleId`. Ponowne uruchomienie `PUT` względem tego samego identyfikatora reguły aktualizuje tę jedną regułę.
+- Jeśli jeden użytkownik odbierający powinien otrzymywać powiadomienia dla wielu kont botów Matrix OpenClaw, utwórz jedną regułę na bota z unikalnym identyfikatorem reguły dla każdego dopasowania nadawcy.
+- Prosty wzorzec to `openclaw-finalized-preview-`, na przykład `openclaw-finalized-preview-ops` albo `openclaw-finalized-preview-support`.
Reguła jest oceniana względem nadawcy zdarzenia:
- uwierzytelnij się tokenem użytkownika odbierającego
- dopasuj `sender` do MXID bota OpenClaw
-6. Zweryfikuj, że reguła istnieje:
+6. Sprawdź, czy reguła istnieje:
```bash
curl -sS \
@@ -385,10 +385,10 @@ curl -sS \
"https://matrix.example.org/_matrix/client/v3/pushrules/global/override/openclaw-finalized-preview-botname"
```
-7. Przetestuj odpowiedź strumieniowaną. W trybie cichym pokój powinien wyświetlić cichy szkic podglądu, a końcowa
- edycja w miejscu powinna wysłać powiadomienie po zakończeniu bloku lub tury.
+7. Przetestuj odpowiedź strumieniowaną. W trybie cichym pokój powinien pokazać cichy roboczy podgląd, a końcowa
+ edycja na miejscu powinna wysłać powiadomienie po zakończeniu bloku lub tury.
-Jeśli później będziesz musiał usunąć regułę, usuń to samo ID reguły tokenem użytkownika odbierającego:
+Jeśli później chcesz usunąć regułę, usuń ten sam identyfikator reguły za pomocą tokenu użytkownika odbierającego:
```bash
curl -sS -X DELETE \
@@ -399,32 +399,32 @@ curl -sS -X DELETE \
Uwagi:
- Utwórz regułę przy użyciu tokenu dostępu użytkownika odbierającego, a nie tokenu bota.
-- Nowe reguły `override` zdefiniowane przez użytkownika są wstawiane przed domyślnymi regułami tłumiącymi, więc nie jest potrzebny dodatkowy parametr kolejności.
-- Dotyczy to tylko edycji podglądu wyłącznie tekstowego, które OpenClaw może bezpiecznie sfinalizować w miejscu. Awaryjne przełączenia dla multimediów i nieaktualnych podglądów nadal używają zwykłego dostarczania Matrix.
-- Jeśli `GET /_matrix/client/v3/pushers` nie pokazuje żadnych pusherów, użytkownik nie ma jeszcze działającego dostarczania powiadomień push Matrix dla tego konta/urządzenia.
+- Nowe zdefiniowane przez użytkownika reguły `override` są wstawiane przed domyślnymi regułami wyciszania, więc nie jest potrzebny dodatkowy parametr kolejności.
+- Dotyczy to tylko edycji podglądu wyłącznie tekstowego, które OpenClaw może bezpiecznie sfinalizować na miejscu. Powroty awaryjne dla multimediów i nieaktualnych podglądów nadal używają zwykłego dostarczania Matrix.
+- Jeśli `GET /_matrix/client/v3/pushers` pokazuje brak pusherów, użytkownik nie ma jeszcze działającego dostarczania powiadomień push Matrix dla tego konta/urządzenia.
#### Synapse
W przypadku Synapse powyższa konfiguracja zwykle sama w sobie wystarcza:
-- Nie jest wymagana żadna specjalna zmiana w `homeserver.yaml` dla powiadomień o sfinalizowanych podglądach OpenClaw.
-- Jeśli wdrożenie Synapse już wysyła zwykłe powiadomienia push Matrix, głównym krokiem konfiguracji jest token użytkownika + powyższe wywołanie `pushrules`.
+- Nie jest wymagana żadna specjalna zmiana w `homeserver.yaml` dla sfinalizowanych powiadomień podglądu OpenClaw.
+- Jeśli Twoje wdrożenie Synapse już wysyła zwykłe powiadomienia push Matrix, token użytkownika i powyższe wywołanie `pushrules` są głównym krokiem konfiguracji.
- Jeśli uruchamiasz Synapse za reverse proxy lub workerami, upewnij się, że `/_matrix/client/.../pushrules/` poprawnie trafia do Synapse.
-- Jeśli używasz workerów Synapse, upewnij się, że pushery działają prawidłowo. Dostarczanie powiadomień push jest obsługiwane przez proces główny lub `synapse.app.pusher` / skonfigurowane workery pusherów.
+- Jeśli używasz workerów Synapse, upewnij się, że pushery działają prawidłowo. Dostarczanie push jest obsługiwane przez proces główny albo `synapse.app.pusher` / skonfigurowane workery pusherów.
#### Tuwunel
W przypadku Tuwunel użyj tego samego przepływu konfiguracji i wywołania API `pushrules`, które pokazano powyżej:
- Nie jest wymagana żadna konfiguracja specyficzna dla Tuwunel dla samego znacznika sfinalizowanego podglądu.
-- Jeśli zwykłe powiadomienia Matrix już działają dla tego użytkownika, głównym krokiem konfiguracji jest token użytkownika + powyższe wywołanie `pushrules`.
-- Jeśli wygląda na to, że powiadomienia znikają, gdy użytkownik jest aktywny na innym urządzeniu, sprawdź, czy włączono `suppress_push_when_active`. Tuwunel dodał tę opcję w Tuwunel 1.4.2 12 września 2025 r. i może ona celowo tłumić powiadomienia push do innych urządzeń, gdy jedno urządzenie jest aktywne.
+- Jeśli zwykłe powiadomienia Matrix już działają dla tego użytkownika, token użytkownika i powyższe wywołanie `pushrules` są głównym krokiem konfiguracji.
+- Jeśli powiadomienia wydają się znikać, gdy użytkownik jest aktywny na innym urządzeniu, sprawdź, czy włączono `suppress_push_when_active`. Tuwunel dodał tę opcję w Tuwunel 1.4.2 12 września 2025 roku i może ona celowo wyciszać powiadomienia push na innych urządzeniach, gdy jedno urządzenie jest aktywne.
## Pokoje bot-do-bota
Domyślnie wiadomości Matrix z innych skonfigurowanych kont Matrix OpenClaw są ignorowane.
-Użyj `allowBots`, jeśli celowo chcesz zezwolić na ruch Matrix między agentami:
+Użyj `allowBots`, jeśli celowo chcesz dopuścić ruch Matrix między agentami:
```json5
{
@@ -441,17 +441,17 @@ Użyj `allowBots`, jeśli celowo chcesz zezwolić na ruch Matrix między agentam
}
```
-- `allowBots: true` akceptuje wiadomości z innych skonfigurowanych kont botów Matrix w dozwolonych pokojach i DM-ach.
-- `allowBots: "mentions"` akceptuje te wiadomości tylko wtedy, gdy w pokojach wyraźnie wspominają tego bota. DM-y są nadal dozwolone.
+- `allowBots: true` akceptuje wiadomości z innych skonfigurowanych kont botów Matrix w dozwolonych pokojach i wiadomościach prywatnych.
+- `allowBots: "mentions"` akceptuje te wiadomości tylko wtedy, gdy wyraźnie wspominają tego bota w pokojach. Wiadomości prywatne nadal są dozwolone.
- `groups..allowBots` zastępuje ustawienie na poziomie konta dla jednego pokoju.
-- OpenClaw nadal ignoruje wiadomości z tego samego ID użytkownika Matrix, aby uniknąć pętli odpowiedzi do samego siebie.
-- Matrix nie udostępnia tutaj natywnej flagi bota; OpenClaw traktuje „napisane przez bota” jako „wysłane przez inne skonfigurowane konto Matrix na tej bramie OpenClaw”.
+- OpenClaw nadal ignoruje wiadomości z tego samego identyfikatora użytkownika Matrix, aby uniknąć pętli odpowiedzi do samego siebie.
+- Matrix nie udostępnia tutaj natywnej flagi bota; OpenClaw traktuje „wiadomość utworzoną przez bota” jako „wysłaną przez inne skonfigurowane konto Matrix na tym Gateway OpenClaw”.
-Używaj ścisłych list dozwolonych pokoi i wymagań dotyczących wzmianek podczas włączania ruchu bot-do-bota we współdzielonych pokojach.
+Przy włączaniu ruchu bot-do-bota we współdzielonych pokojach używaj ścisłych list dozwolonych pokoi i wymagań wzmianki.
## Szyfrowanie i weryfikacja
-W zaszyfrowanych pokojach (E2EE) wychodzące zdarzenia obrazów używają `thumbnail_file`, dzięki czemu podglądy obrazów są szyfrowane razem z pełnym załącznikiem. Niezaszyfrowane pokoje nadal używają zwykłego `thumbnail_url`. Nie jest wymagana żadna konfiguracja — Plugin automatycznie wykrywa stan E2EE.
+W szyfrowanych pokojach (E2EE) wychodzące zdarzenia obrazów używają `thumbnail_file`, dzięki czemu podglądy obrazów są szyfrowane razem z pełnym załącznikiem. Nieszyfrowane pokoje nadal używają zwykłego `thumbnail_url`. Nie jest wymagana żadna konfiguracja — Plugin automatycznie wykrywa stan E2EE.
Włącz szyfrowanie:
@@ -481,13 +481,13 @@ Szczegółowy status (pełna diagnostyka):
openclaw matrix verify status --verbose
```
-Uwzględnij zapisany klucz odzyskiwania w wyjściu czytelnym maszynowo:
+Uwzględnij zapisany klucz odzyskiwania w danych wyjściowych czytelnych maszynowo:
```bash
openclaw matrix verify status --include-recovery-key --json
```
-Zainicjalizuj cross-signing i stan weryfikacji:
+Zainicjuj cross-signing i stan weryfikacji:
```bash
openclaw matrix verify bootstrap
@@ -499,7 +499,7 @@ Szczegółowa diagnostyka bootstrapu:
openclaw matrix verify bootstrap --verbose
```
-Wymuś nowy reset tożsamości cross-signing przed bootstrapem:
+Wymuś reset świeżej tożsamości cross-signing przed bootstrapem:
```bash
openclaw matrix verify bootstrap --force-reset-cross-signing
@@ -517,7 +517,7 @@ Szczegółowe informacje o weryfikacji urządzenia:
openclaw matrix verify device "" --verbose
```
-Sprawdź stan kopii zapasowej kluczy pokojów:
+Sprawdź stan kopii zapasowej kluczy pokoju:
```bash
openclaw matrix verify backup status
@@ -529,7 +529,7 @@ Szczegółowa diagnostyka stanu kopii zapasowej:
openclaw matrix verify backup status --verbose
```
-Przywróć klucze pokojów z kopii zapasowej serwera:
+Przywróć klucze pokoju z kopii zapasowej serwera:
```bash
openclaw matrix verify backup restore
@@ -541,18 +541,18 @@ Szczegółowa diagnostyka przywracania:
openclaw matrix verify backup restore --verbose
```
-Usuń bieżącą kopię zapasową serwera i utwórz nową bazę kopii zapasowej. Jeśli zapisany
-klucz kopii zapasowej nie może zostać poprawnie załadowany, ten reset może również odtworzyć sekretne przechowywanie, tak aby
-przyszłe zimne uruchomienia mogły załadować nowy klucz kopii zapasowej:
+Usuń bieżącą kopię zapasową serwera i utwórz świeżą bazę odniesienia kopii zapasowej. Jeśli zapisany
+klucz kopii zapasowej nie może zostać poprawnie załadowany, ten reset może także odtworzyć magazyn sekretów, aby
+przyszłe zimne starty mogły załadować nowy klucz kopii zapasowej:
```bash
openclaw matrix verify backup reset --yes
```
-Wszystkie polecenia `verify` są domyślnie zwięzłe (łącznie z cichym wewnętrznym logowaniem SDK) i pokazują szczegółową diagnostykę tylko z `--verbose`.
-Użyj `--json`, aby uzyskać pełne wyjście czytelne maszynowo podczas skryptowania.
+Wszystkie polecenia `verify` są domyślnie zwięzłe (w tym ciche wewnętrzne logowanie SDK) i pokazują szczegółową diagnostykę tylko z `--verbose`.
+Do skryptów używaj `--json`, aby uzyskać pełne dane wyjściowe czytelne maszynowo.
-W konfiguracjach wielokontowych polecenia CLI Matrix używają niejawnego domyślnego konta Matrix, chyba że przekażesz `--account `.
+W konfiguracjach wielokontowych polecenia Matrix CLI używają niejawnego domyślnego konta Matrix, chyba że przekażesz `--account `.
Jeśli skonfigurujesz wiele nazwanych kont, najpierw ustaw `channels.matrix.defaultAccount`, w przeciwnym razie te niejawne operacje CLI zatrzymają się i poproszą o jawny wybór konta.
Używaj `--account`, gdy chcesz, aby operacje weryfikacji lub urządzeń były jawnie kierowane do nazwanego konta:
@@ -562,41 +562,41 @@ openclaw matrix verify backup restore --account assistant
openclaw matrix devices list --account assistant
```
-Gdy szyfrowanie jest wyłączone lub niedostępne dla nazwanego konta, ostrzeżenia Matrix i błędy weryfikacji wskazują na klucz konfiguracji tego konta, na przykład `channels.matrix.accounts.assistant.encryption`.
+Gdy szyfrowanie jest wyłączone lub niedostępne dla nazwanego konta, ostrzeżenia Matrix i błędy weryfikacji wskazują klucz konfiguracji tego konta, na przykład `channels.matrix.accounts.assistant.encryption`.
### Co oznacza „zweryfikowane”
-OpenClaw traktuje to urządzenie Matrix jako zweryfikowane tylko wtedy, gdy zostało zweryfikowane przez Twoją własną tożsamość cross-signing.
-W praktyce `openclaw matrix verify status --verbose` pokazuje trzy sygnały zaufania:
+OpenClaw traktuje to urządzenie Matrix jako zweryfikowane tylko wtedy, gdy jest ono zweryfikowane przez Twoją własną tożsamość cross-signing.
+W praktyce `openclaw matrix verify status --verbose` ujawnia trzy sygnały zaufania:
- `Locally trusted`: to urządzenie jest zaufane tylko przez bieżącego klienta
-- `Cross-signing verified`: SDK zgłasza to urządzenie jako zweryfikowane przez cross-signing
-- `Signed by owner`: urządzenie jest podpisane Twoim własnym kluczem self-signing
+- `Cross-signing verified`: SDK zgłasza urządzenie jako zweryfikowane przez cross-signing
+- `Signed by owner`: urządzenie jest podpisane przez Twój własny klucz self-signing
`Verified by owner` przyjmuje wartość `yes` tylko wtedy, gdy obecna jest weryfikacja cross-signing lub podpis właściciela.
Samo lokalne zaufanie nie wystarcza, aby OpenClaw traktował urządzenie jako w pełni zweryfikowane.
### Co robi bootstrap
-`openclaw matrix verify bootstrap` to polecenie naprawy i konfiguracji dla zaszyfrowanych kont Matrix.
-Wykonuje kolejno wszystkie poniższe działania:
+`openclaw matrix verify bootstrap` to polecenie naprawy i konfiguracji dla szyfrowanych kont Matrix.
+Wykonuje ono wszystkie poniższe czynności w tej kolejności:
-- inicjalizuje sekretne przechowywanie, ponownie używając istniejącego klucza odzyskiwania, gdy to możliwe
+- inicjalizuje magazyn sekretów, ponownie używając istniejącego klucza odzyskiwania, gdy to możliwe
- inicjalizuje cross-signing i przesyła brakujące publiczne klucze cross-signing
-- próbuje oznaczyć i podpisać bieżące urządzenie metodą cross-signing
-- tworzy nową kopię zapasową kluczy pokojów po stronie serwera, jeśli taka jeszcze nie istnieje
+- próbuje oznaczyć i podpisać cross-signing bieżącego urządzenia
+- tworzy nową kopię zapasową kluczy pokoju po stronie serwera, jeśli jeszcze nie istnieje
-Jeśli homeserver wymaga interaktywnego uwierzytelniania do przesłania kluczy cross-signing, OpenClaw najpierw próbuje przesłać je bez uwierzytelniania, potem z `m.login.dummy`, a następnie z `m.login.password`, gdy skonfigurowano `channels.matrix.password`.
+Jeśli homeserver wymaga uwierzytelniania interaktywnego do przesłania kluczy cross-signing, OpenClaw najpierw próbuje przesłania bez uwierzytelnienia, następnie z `m.login.dummy`, a potem z `m.login.password`, gdy `channels.matrix.password` jest skonfigurowane.
Używaj `--force-reset-cross-signing` tylko wtedy, gdy celowo chcesz odrzucić bieżącą tożsamość cross-signing i utworzyć nową.
-Jeśli celowo chcesz odrzucić bieżącą kopię zapasową kluczy pokojów i rozpocząć nową
-bazę kopii zapasowej dla przyszłych wiadomości, użyj `openclaw matrix verify backup reset --yes`.
-Rób to tylko wtedy, gdy akceptujesz, że nieodzyskiwalna stara zaszyfrowana historia pozostanie
-niedostępna i że OpenClaw może odtworzyć sekretne przechowywanie, jeśli bieżący sekret
-kopii zapasowej nie może zostać bezpiecznie załadowany.
+Jeśli celowo chcesz odrzucić bieżącą kopię zapasową kluczy pokoju i rozpocząć nową
+bazę odniesienia kopii zapasowej dla przyszłych wiadomości, użyj `openclaw matrix verify backup reset --yes`.
+Rób to tylko wtedy, gdy akceptujesz, że niemożliwa do odzyskania stara zaszyfrowana historia pozostanie
+niedostępna i że OpenClaw może odtworzyć magazyn sekretów, jeśli bieżący sekret kopii zapasowej
+nie może zostać bezpiecznie załadowany.
-### Nowa baza kopii zapasowej
+### Świeża baza odniesienia kopii zapasowej
Jeśli chcesz zachować działanie przyszłych zaszyfrowanych wiadomości i akceptujesz utratę nieodzyskiwalnej starej historii, uruchom te polecenia po kolei:
@@ -606,54 +606,55 @@ openclaw matrix verify backup status --verbose
openclaw matrix verify status
```
-Dodaj `--account ` do każdego polecenia, gdy chcesz jawnie wskazać nazwane konto Matrix.
+Dodaj `--account ` do każdego polecenia, gdy chcesz jawnie kierować je do nazwanego konta Matrix.
### Zachowanie przy uruchamianiu
Gdy `encryption: true`, Matrix domyślnie ustawia `startupVerification` na `"if-unverified"`.
-Przy uruchamianiu, jeśli to urządzenie nadal nie jest zweryfikowane, Matrix zażąda samoweryfikacji w innym kliencie Matrix,
-pominie duplikaty żądań, jeśli jedno już oczekuje, i zastosuje lokalny czas odczekania przed ponowną próbą po restartach.
-Domyślnie próby żądań zakończone niepowodzeniem są ponawiane szybciej niż pomyślne utworzenie żądania.
+Przy uruchamianiu, jeśli to urządzenie nadal nie jest zweryfikowane, Matrix poprosi o samoweryfikację w innym kliencie Matrix,
+pominie duplikaty żądań, gdy jedno jest już oczekujące, i zastosuje lokalny czas odczekania przed ponowną próbą po restartach.
+Nieudane próby żądania są domyślnie ponawiane szybciej niż udane utworzenie żądania.
Ustaw `startupVerification: "off"`, aby wyłączyć automatyczne żądania przy uruchamianiu, albo dostosuj `startupVerificationCooldownHours`,
jeśli chcesz krótsze lub dłuższe okno ponawiania.
-Przy uruchamianiu automatycznie wykonywany jest także zachowawczy przebieg bootstrapu kryptograficznego.
-Najpierw próbuje on ponownie użyć bieżącego sekretnego przechowywania i tożsamości cross-signing oraz unika resetowania cross-signing, chyba że uruchomisz jawny przepływ naprawy bootstrapu.
+Uruchamianie automatycznie wykonuje też zachowawczy przebieg bootstrapu kryptograficznego.
+Ten przebieg najpierw próbuje ponownie użyć bieżącego magazynu sekretów i tożsamości cross-signing oraz unika resetowania cross-signing, chyba że uruchomisz jawny przepływ naprawy bootstrapu.
-Jeśli podczas uruchamiania zostanie wykryty uszkodzony stan bootstrapu i skonfigurowano `channels.matrix.password`, OpenClaw może spróbować bardziej rygorystycznej ścieżki naprawy.
-Jeśli bieżące urządzenie jest już podpisane przez właściciela, OpenClaw zachowa tę tożsamość zamiast resetować ją automatycznie.
+Jeśli podczas uruchamiania nadal zostanie wykryty uszkodzony stan bootstrapu, OpenClaw może spróbować chronionej ścieżki naprawy nawet wtedy, gdy `channels.matrix.password` nie jest skonfigurowane.
+Jeśli homeserver wymaga dla tej naprawy opartego na haśle UIA, OpenClaw zapisuje ostrzeżenie w logach i zachowuje niekrytyczny charakter uruchamiania zamiast przerywać działanie bota.
+Jeśli bieżące urządzenie jest już podpisane przez właściciela, OpenClaw zachowuje tę tożsamość zamiast resetować ją automatycznie.
Zobacz [migrację Matrix](/pl/install/migrating-matrix), aby poznać pełny przepływ aktualizacji, ograniczenia, polecenia odzyskiwania i typowe komunikaty migracji.
### Powiadomienia o weryfikacji
-Matrix publikuje powiadomienia o cyklu życia weryfikacji bezpośrednio w ścisłym pokoju DM weryfikacji jako wiadomości `m.notice`.
+Matrix publikuje powiadomienia o cyklu życia weryfikacji bezpośrednio w ścisłym pokoju wiadomości prywatnych do weryfikacji jako wiadomości `m.notice`.
Obejmuje to:
- powiadomienia o żądaniu weryfikacji
-- powiadomienia o gotowości do weryfikacji (z jawną wskazówką „Zweryfikuj za pomocą emoji”)
+- powiadomienia o gotowości weryfikacji (z wyraźną instrukcją „Zweryfikuj za pomocą emoji”)
- powiadomienia o rozpoczęciu i zakończeniu weryfikacji
- szczegóły SAS (emoji i liczby dziesiętne), gdy są dostępne
Przychodzące żądania weryfikacji z innego klienta Matrix są śledzone i automatycznie akceptowane przez OpenClaw.
-W przypadku przepływów samoweryfikacji OpenClaw automatycznie uruchamia też przepływ SAS, gdy weryfikacja emoji staje się dostępna, i potwierdza swoją własną stronę.
-W przypadku żądań weryfikacji z innego użytkownika/urządzenia Matrix OpenClaw automatycznie akceptuje żądanie, a następnie czeka, aż przepływ SAS będzie przebiegał normalnie.
-Nadal musisz porównać emoji lub dziesiętny SAS w swoim kliencie Matrix i potwierdzić tam „Pasują”, aby zakończyć weryfikację.
+W przepływach samoweryfikacji OpenClaw automatycznie rozpoczyna też przepływ SAS, gdy weryfikacja emoji stanie się dostępna, i potwierdza własną stronę.
+W przypadku żądań weryfikacji z innego użytkownika/urządzenia Matrix OpenClaw automatycznie akceptuje żądanie, a następnie czeka, aż przepływ SAS będzie kontynuowany normalnie.
+Nadal musisz porównać emoji lub dziesiętny SAS w swoim kliencie Matrix i potwierdzić tam „Są zgodne”, aby ukończyć weryfikację.
-OpenClaw nie akceptuje ślepo automatycznie duplikatów przepływów zainicjowanych samodzielnie. Przy uruchamianiu pomijane jest tworzenie nowego żądania, jeśli żądanie samoweryfikacji już oczekuje.
+OpenClaw nie akceptuje bezrefleksyjnie automatycznie samoinicjowanych zduplikowanych przepływów. Przy uruchamianiu pomija utworzenie nowego żądania, gdy żądanie samoweryfikacji jest już oczekujące.
Powiadomienia protokołu/systemu weryfikacji nie są przekazywane do potoku czatu agenta, więc nie powodują `NO_REPLY`.
### Higiena urządzeń
-Stare urządzenia Matrix zarządzane przez OpenClaw mogą gromadzić się na koncie i utrudniać ocenę zaufania w zaszyfrowanych pokojach.
+Na koncie mogą gromadzić się stare urządzenia Matrix zarządzane przez OpenClaw, co utrudnia ocenę zaufania w szyfrowanych pokojach.
Wyświetl je poleceniem:
```bash
openclaw matrix devices list
```
-Usuń nieaktualne urządzenia Matrix zarządzane przez OpenClaw poleceniem:
+Usuń nieaktualne urządzenia zarządzane przez OpenClaw poleceniem:
```bash
openclaw matrix devices prune-stale
@@ -661,16 +662,16 @@ openclaw matrix devices prune-stale
### Magazyn kryptograficzny
-Matrix E2EE używa oficjalnej ścieżki Rust crypto z `matrix-js-sdk` w Node, z `fake-indexeddb` jako shimem IndexedDB. Stan kryptograficzny jest utrwalany w pliku migawki (`crypto-idb-snapshot.json`) i przywracany przy uruchamianiu. Plik migawki to wrażliwy stan środowiska uruchomieniowego przechowywany z restrykcyjnymi uprawnieniami do pliku.
+Matrix E2EE używa oficjalnej ścieżki kryptografii Rust z `matrix-js-sdk` w Node, z `fake-indexeddb` jako shimem IndexedDB. Stan kryptograficzny jest utrwalany w pliku migawki (`crypto-idb-snapshot.json`) i przywracany przy uruchamianiu. Plik migawki jest wrażliwym stanem środowiska uruchomieniowego przechowywanym z restrykcyjnymi uprawnieniami do pliku.
-Zaszyfrowany stan środowiska uruchomieniowego znajduje się w korzeniach per konto, per użytkownik, per hash tokenu w
+Zaszyfrowany stan środowiska uruchomieniowego znajduje się pod katalogami per konto i per użytkownik, haszowanymi tokenem, w
`~/.openclaw/matrix/accounts//__//`.
Ten katalog zawiera magazyn synchronizacji (`bot-storage.json`), magazyn kryptograficzny (`crypto/`),
plik klucza odzyskiwania (`recovery-key.json`), migawkę IndexedDB (`crypto-idb-snapshot.json`),
powiązania wątków (`thread-bindings.json`) oraz stan weryfikacji przy uruchamianiu (`startup-verification.json`).
Gdy token się zmienia, ale tożsamość konta pozostaje taka sama, OpenClaw ponownie używa najlepszego istniejącego
-korzenia dla krotki konto/homeserver/użytkownik, dzięki czemu wcześniejszy stan synchronizacji, stan kryptograficzny, powiązania wątków
-i stan weryfikacji przy uruchamianiu pozostają widoczne.
+katalogu głównego dla tej krotki konto/homeserver/użytkownik, dzięki czemu wcześniejszy stan synchronizacji, stan kryptograficzny, powiązania wątków
+oraz stan weryfikacji przy uruchamianiu pozostają widoczne.
## Zarządzanie profilem
@@ -681,45 +682,45 @@ openclaw matrix profile set --name "OpenClaw Assistant"
openclaw matrix profile set --avatar-url https://cdn.example.org/avatar.png
```
-Dodaj `--account `, gdy chcesz jawnie wskazać nazwane konto Matrix.
+Dodaj `--account `, jeśli chcesz jawnie kierować operację do nazwanego konta Matrix.
-Matrix akceptuje bezpośrednio adresy URL awatarów `mxc://`. Gdy przekażesz adres URL awatara `http://` lub `https://`, OpenClaw najpierw przesyła go do Matrix, a następnie zapisuje rozwiązany adres URL `mxc://` z powrotem do `channels.matrix.avatarUrl` (lub wybranego nadpisania konta).
+Matrix akceptuje bezpośrednio adresy URL awatarów `mxc://`. Gdy przekażesz adres URL awatara `http://` lub `https://`, OpenClaw najpierw prześle go do Matrix i zapisze rozwiązany adres URL `mxc://` z powrotem do `channels.matrix.avatarUrl` (lub do wybranego nadpisania konta).
## Wątki
-Matrix obsługuje natywne wątki Matrix zarówno dla odpowiedzi automatycznych, jak i wysyłek przez narzędzia wiadomości.
+Matrix obsługuje natywne wątki Matrix zarówno dla odpowiedzi automatycznych, jak i dla wysyłek przez narzędzie wiadomości.
-- `dm.sessionScope: "per-user"` (domyślnie) utrzymuje routowanie DM Matrix w zakresie nadawcy, więc wiele pokoi DM może współdzielić jedną sesję, jeśli rozwiązują się do tego samego partnera.
-- `dm.sessionScope: "per-room"` izoluje każdy pokój DM Matrix do własnego klucza sesji, nadal używając zwykłego uwierzytelniania DM i kontroli listy dozwolonych.
+- `dm.sessionScope: "per-user"` (domyślnie) utrzymuje routowanie wiadomości prywatnych Matrix w zakresie nadawcy, więc wiele pokoi wiadomości prywatnych może współdzielić jedną sesję, jeśli zostaną rozwiązane do tego samego peera.
+- `dm.sessionScope: "per-room"` izoluje każdy pokój wiadomości prywatnych Matrix do własnego klucza sesji, nadal używając zwykłego uwierzytelniania wiadomości prywatnych i sprawdzeń listy dozwolonych.
- Jawne powiązania konwersacji Matrix nadal mają pierwszeństwo przed `dm.sessionScope`, więc powiązane pokoje i wątki zachowują wybraną sesję docelową.
-- `threadReplies: "off"` utrzymuje odpowiedzi na poziomie głównym i zachowuje przychodzące wiadomości we wątkach w sesji nadrzędnej.
-- `threadReplies: "inbound"` odpowiada wewnątrz wątku tylko wtedy, gdy przychodząca wiadomość już była w tym wątku.
-- `threadReplies: "always"` utrzymuje odpowiedzi w pokojach we wątku zakorzenionym w wiadomości wyzwalającej i kieruje tę konwersację przez pasującą sesję o zakresie wątku od pierwszej wiadomości wyzwalającej.
-- `dm.threadReplies` zastępuje ustawienie najwyższego poziomu tylko dla DM. Na przykład możesz utrzymać izolację wątków pokojów, a DM-y pozostawić płaskie.
-- Przychodzące wiadomości we wątkach zawierają główną wiadomość wątku jako dodatkowy kontekst agenta.
-- Wysyłki przez narzędzia wiadomości automatycznie dziedziczą bieżący wątek Matrix, gdy celem jest ten sam pokój lub ten sam cel użytkownika DM, chyba że podano jawne `threadId`.
-- Ponowne użycie celu użytkownika DM w tej samej sesji działa tylko wtedy, gdy metadane bieżącej sesji potwierdzają tego samego partnera DM na tym samym koncie Matrix; w przeciwnym razie OpenClaw wraca do zwykłego routowania w zakresie użytkownika.
-- Gdy OpenClaw wykryje, że pokój DM Matrix koliduje z innym pokojem DM w tej samej współdzielonej sesji DM Matrix, publikuje w tym pokoju jednorazowe `m.notice` z furtką `/focus`, gdy powiązania wątków są włączone, oraz wskazówką `dm.sessionScope`.
-- Powiązania wątków środowiska uruchomieniowego są obsługiwane w Matrix. `/focus`, `/unfocus`, `/agents`, `/session idle`, `/session max-age` oraz związane z wątkami `/acp spawn` działają w pokojach i DM-ach Matrix.
-- Polecenie `/focus` na najwyższym poziomie pokoju/DM Matrix tworzy nowy wątek Matrix i wiąże go z sesją docelową, gdy `threadBindings.spawnSubagentSessions=true`.
-- Uruchomienie `/focus` lub `/acp spawn --thread here` wewnątrz istniejącego wątku Matrix wiąże zamiast tego bieżący wątek.
+- `threadReplies: "off"` utrzymuje odpowiedzi na poziomie głównym i utrzymuje przychodzące wiadomości wątkowe w sesji nadrzędnej.
+- `threadReplies: "inbound"` odpowiada wewnątrz wątku tylko wtedy, gdy wiadomość przychodząca już była w tym wątku.
+- `threadReplies: "always"` utrzymuje odpowiedzi pokojowe w wątku zakorzenionym w wiadomości wyzwalającej i kieruje tę konwersację przez odpowiadającą sesję w zakresie wątku od pierwszej wiadomości wyzwalającej.
+- `dm.threadReplies` nadpisuje ustawienie najwyższego poziomu tylko dla wiadomości prywatnych. Na przykład możesz utrzymać izolację wątków pokojowych, pozostawiając wiadomości prywatne płaskie.
+- Przychodzące wiadomości wątkowe zawierają wiadomość główną wątku jako dodatkowy kontekst agenta.
+- Wysyłki przez narzędzie wiadomości automatycznie dziedziczą bieżący wątek Matrix, gdy celem jest ten sam pokój lub ten sam docelowy użytkownik wiadomości prywatnych, chyba że podano jawne `threadId`.
+- Ponowne użycie tego samego celu użytkownika wiadomości prywatnych w tej samej sesji uruchamia się tylko wtedy, gdy bieżące metadane sesji potwierdzają tego samego peera wiadomości prywatnych na tym samym koncie Matrix; w przeciwnym razie OpenClaw wraca do normalnego routowania w zakresie użytkownika.
+- Gdy OpenClaw wykryje kolizję pokoju wiadomości prywatnych Matrix z innym pokojem wiadomości prywatnych w tej samej współdzielonej sesji wiadomości prywatnych Matrix, publikuje jednorazowe `m.notice` w tym pokoju z mechanizmem awaryjnym `/focus`, gdy powiązania wątków są włączone, oraz ze wskazówką `dm.sessionScope`.
+- Powiązania wątków w środowisku uruchomieniowym są obsługiwane dla Matrix. `/focus`, `/unfocus`, `/agents`, `/session idle`, `/session max-age` i powiązane z wątkiem `/acp spawn` działają w pokojach i wiadomościach prywatnych Matrix.
+- Główne `/focus` w pokoju/wiadomości prywatnej Matrix tworzy nowy wątek Matrix i wiąże go z sesją docelową, gdy `threadBindings.spawnSubagentSessions=true`.
+- Uruchomienie `/focus` lub `/acp spawn --thread here` wewnątrz istniejącego wątku Matrix wiąże zamiast tego ten bieżący wątek.
## Powiązania konwersacji ACP
-Pokoje, DM-y i istniejące wątki Matrix można przekształcić w trwałe przestrzenie robocze ACP bez zmiany powierzchni czatu.
+Pokoje Matrix, wiadomości prywatne i istniejące wątki Matrix mogą zostać przekształcone w trwałe obszary robocze ACP bez zmiany powierzchni czatu.
-Szybki przepływ dla operatora:
+Szybki przepływ pracy operatora:
-- Uruchom `/acp spawn codex --bind here` wewnątrz DM Matrix, pokoju lub istniejącego wątku, którego chcesz dalej używać.
-- W DM lub pokoju Matrix na najwyższym poziomie bieżący DM/pokój pozostaje powierzchnią czatu, a przyszłe wiadomości są kierowane do utworzonej sesji ACP.
-- Wewnątrz istniejącego wątku Matrix `--bind here` wiąże bieżący wątek w miejscu.
-- `/new` i `/reset` resetują tę samą powiązaną sesję ACP w miejscu.
+- Uruchom `/acp spawn codex --bind here` wewnątrz wiadomości prywatnej Matrix, pokoju lub istniejącego wątku, którego chcesz nadal używać.
+- W głównej wiadomości prywatnej lub pokoju Matrix bieżąca wiadomość prywatna/pokój pozostaje powierzchnią czatu, a przyszłe wiadomości są kierowane do uruchomionej sesji ACP.
+- Wewnątrz istniejącego wątku Matrix `--bind here` wiąże ten bieżący wątek na miejscu.
+- `/new` i `/reset` resetują tę samą powiązaną sesję ACP na miejscu.
- `/acp close` zamyka sesję ACP i usuwa powiązanie.
Uwagi:
- `--bind here` nie tworzy podrzędnego wątku Matrix.
-- `threadBindings.spawnAcpSessions` jest wymagane tylko dla `/acp spawn --thread auto|here`, gdy OpenClaw musi utworzyć lub powiązać podrzędny wątek Matrix.
+- `threadBindings.spawnAcpSessions` jest wymagane tylko dla `/acp spawn --thread auto|here`, gdzie OpenClaw musi utworzyć lub powiązać podrzędny wątek Matrix.
### Konfiguracja powiązań wątków
@@ -731,29 +732,29 @@ Matrix dziedziczy globalne wartości domyślne z `session.threadBindings`, a tak
- `threadBindings.spawnSubagentSessions`
- `threadBindings.spawnAcpSessions`
-Flagi uruchamiania związane z wątkami Matrix są opcjonalne:
+Flagi uruchamiania powiązanego z wątkiem Matrix są typu opt-in:
-- Ustaw `threadBindings.spawnSubagentSessions: true`, aby zezwolić, by `/focus` na najwyższym poziomie tworzył i wiązał nowe wątki Matrix.
-- Ustaw `threadBindings.spawnAcpSessions: true`, aby zezwolić, by `/acp spawn --thread auto|here` wiązał sesje ACP z wątkami Matrix.
+- Ustaw `threadBindings.spawnSubagentSessions: true`, aby pozwolić głównemu `/focus` tworzyć i wiązać nowe wątki Matrix.
+- Ustaw `threadBindings.spawnAcpSessions: true`, aby pozwolić `/acp spawn --thread auto|here` wiązać sesje ACP z wątkami Matrix.
## Reakcje
-Matrix obsługuje wychodzące akcje reakcji, przychodzące powiadomienia o reakcjach oraz przychodzące reakcje potwierdzenia.
+Matrix obsługuje wychodzące akcje reakcji, przychodzące powiadomienia o reakcjach oraz przychodzące reakcje potwierdzające.
- Narzędzia wychodzących reakcji są kontrolowane przez `channels["matrix"].actions.reactions`.
-- `react` dodaje reakcję do określonego zdarzenia Matrix.
-- `reactions` wyświetla bieżące podsumowanie reakcji dla określonego zdarzenia Matrix.
-- `emoji=""` usuwa własne reakcje konta bota dla tego zdarzenia.
+- `react` dodaje reakcję do konkretnego zdarzenia Matrix.
+- `reactions` wyświetla bieżące podsumowanie reakcji dla konkretnego zdarzenia Matrix.
+- `emoji=""` usuwa własne reakcje konta bota na tym zdarzeniu.
- `remove: true` usuwa tylko określoną reakcję emoji z konta bota.
-Zakres reakcji potwierdzenia jest rozwiązywany według standardowej kolejności OpenClaw:
+Zakres reakcji potwierdzających jest rozwiązywany w standardowej kolejności OpenClaw:
- `channels["matrix"].accounts..ackReaction`
- `channels["matrix"].ackReaction`
- `messages.ackReaction`
-- emoji tożsamości agenta jako wartość zapasowa
+- zapasowe emoji tożsamości agenta
-Zakres reakcji potwierdzenia jest rozwiązywany w tej kolejności:
+Zakres reakcji potwierdzających jest rozwiązywany w tej kolejności:
- `channels["matrix"].accounts..ackReactionScope`
- `channels["matrix"].ackReactionScope`
@@ -767,30 +768,30 @@ Tryb powiadomień o reakcjach jest rozwiązywany w tej kolejności:
Zachowanie:
-- `reactionNotifications: "own"` przekazuje dodane zdarzenia `m.reaction`, gdy są skierowane do wiadomości Matrix napisanych przez bota.
+- `reactionNotifications: "own"` przekazuje dodane zdarzenia `m.reaction`, gdy są skierowane do wiadomości Matrix utworzonych przez bota.
- `reactionNotifications: "off"` wyłącza zdarzenia systemowe reakcji.
-- Usunięcia reakcji nie są syntetyzowane do zdarzeń systemowych, ponieważ Matrix przedstawia je jako redakcje, a nie jako samodzielne usunięcia `m.reaction`.
+- Usunięcia reakcji nie są syntetyzowane do zdarzeń systemowych, ponieważ Matrix udostępnia je jako redakcje, a nie jako samodzielne usunięcia `m.reaction`.
## Kontekst historii
-- `channels.matrix.historyLimit` określa, ile ostatnich wiadomości z pokoju jest dołączanych jako `InboundHistory`, gdy wiadomość w pokoju Matrix wyzwala agenta. Wartość zapasowa pochodzi z `messages.groupChat.historyLimit`; jeśli oba ustawienia są nieustawione, efektywna wartość domyślna to `0`. Ustaw `0`, aby wyłączyć.
-- Historia pokoju Matrix dotyczy tylko pokoju. DM-y nadal używają zwykłej historii sesji.
-- Historia pokoju Matrix dotyczy tylko oczekujących wiadomości: OpenClaw buforuje wiadomości z pokoju, które jeszcze nie wywołały odpowiedzi, a następnie wykonuje migawkę tego okna, gdy nadejdzie wzmianka lub inny wyzwalacz.
-- Bieżąca wiadomość wyzwalająca nie jest uwzględniana w `InboundHistory`; pozostaje w głównej treści wejściowej tej tury.
-- Ponowne próby tego samego zdarzenia Matrix ponownie używają oryginalnej migawki historii zamiast przesuwać się naprzód do nowszych wiadomości z pokoju.
+- `channels.matrix.historyLimit` kontroluje, ile ostatnich wiadomości pokoju jest dołączanych jako `InboundHistory`, gdy wiadomość w pokoju Matrix wyzwala agenta. Wartość zapasowa to `messages.groupChat.historyLimit`; jeśli oba ustawienia są nieustawione, efektywną wartością domyślną jest `0`. Ustaw `0`, aby wyłączyć.
+- Historia pokoju Matrix jest tylko pokojowa. Wiadomości prywatne nadal używają normalnej historii sesji.
+- Historia pokoju Matrix ma charakter tylko oczekujący: OpenClaw buforuje wiadomości pokojowe, które jeszcze nie wyzwoliły odpowiedzi, a następnie zapisuje migawkę tego okna, gdy nadejdzie wzmianka lub inny wyzwalacz.
+- Bieżąca wiadomość wyzwalająca nie jest uwzględniana w `InboundHistory`; pozostaje w głównej treści przychodzącej dla tej tury.
+- Ponowienia tego samego zdarzenia Matrix używają ponownie oryginalnej migawki historii zamiast przesuwać się do nowszych wiadomości pokojowych.
## Widoczność kontekstu
-Matrix obsługuje wspólną kontrolę `contextVisibility` dla uzupełniającego kontekstu pokoju, takiego jak pobrany tekst odpowiedzi, korzenie wątków i oczekująca historia.
+Matrix obsługuje współdzieloną kontrolę `contextVisibility` dla uzupełniającego kontekstu pokoju, takiego jak pobrana treść odpowiedzi, główne wiadomości wątków i oczekująca historia.
-- `contextVisibility: "all"` jest wartością domyślną. Uzupełniający kontekst jest zachowywany bez zmian.
-- `contextVisibility: "allowlist"` filtruje uzupełniający kontekst do nadawców dozwolonych przez aktywne kontrole listy dozwolonych pokoju/użytkownika.
+- `contextVisibility: "all"` jest ustawieniem domyślnym. Uzupełniający kontekst jest zachowywany w otrzymanej postaci.
+- `contextVisibility: "allowlist"` filtruje uzupełniający kontekst do nadawców dozwolonych przez aktywne sprawdzenia list dozwolonych pokoju/użytkownika.
- `contextVisibility: "allowlist_quote"` działa jak `allowlist`, ale nadal zachowuje jedną jawną cytowaną odpowiedź.
-To ustawienie wpływa na widoczność uzupełniającego kontekstu, a nie na to, czy sama wiadomość przychodząca może wywołać odpowiedź.
-Autoryzacja wyzwalacza nadal pochodzi z ustawień `groupPolicy`, `groups`, `groupAllowFrom` i polityki DM.
+To ustawienie wpływa na widoczność uzupełniającego kontekstu, a nie na to, czy sama wiadomość przychodząca może wyzwolić odpowiedź.
+Autoryzacja wyzwalacza nadal pochodzi z ustawień `groupPolicy`, `groups`, `groupAllowFrom` i zasad wiadomości prywatnych.
-## Zasady DM i pokoi
+## Zasady wiadomości prywatnych i pokoi
```json5
{
@@ -813,22 +814,22 @@ Autoryzacja wyzwalacza nadal pochodzi z ustawień `groupPolicy`, `groups`, `grou
}
```
-Zobacz [Groups](/pl/channels/groups), aby poznać działanie bramkowania wzmiankami i listy dozwolonych.
+Zobacz [Groups](/pl/channels/groups), aby poznać zachowanie bramkowania wzmiankami i list dozwolonych.
-Przykład parowania dla DM-ów Matrix:
+Przykład parowania dla wiadomości prywatnych Matrix:
```bash
openclaw pairing list matrix
openclaw pairing approve matrix
```
-Jeśli niezatwierdzony użytkownik Matrix będzie nadal wysyłać Ci wiadomości przed zatwierdzeniem, OpenClaw ponownie użyje tego samego oczekującego kodu parowania i może ponownie wysłać odpowiedź-przypomnienie po krótkim czasie odczekania zamiast generować nowy kod.
+Jeśli niezatwierdzony użytkownik Matrix nadal wysyła Ci wiadomości przed zatwierdzeniem, OpenClaw ponownie użyje tego samego oczekującego kodu parowania i może ponownie wysłać przypomnienie po krótkim czasie odczekania zamiast generować nowy kod.
-Zobacz [Pairing](/pl/channels/pairing), aby poznać współdzielony przepływ parowania DM i układ pamięci.
+Zobacz [Pairing](/pl/channels/pairing), aby poznać współdzielony przepływ parowania wiadomości prywatnych i układ przechowywania.
## Naprawa pokoju bezpośredniego
-Jeśli stan wiadomości bezpośrednich ulegnie rozjechaniu, OpenClaw może skończyć ze starymi mapowaniami `m.direct`, które wskazują na stare pokoje solo zamiast na aktywny DM. Sprawdź bieżące mapowanie dla partnera za pomocą:
+Jeśli stan wiadomości bezpośrednich się rozjedzie, OpenClaw może skończyć ze starymi mapowaniami `m.direct`, które wskazują stare pokoje solo zamiast aktywnej wiadomości prywatnej. Sprawdź bieżące mapowanie dla peera za pomocą:
```bash
openclaw matrix direct inspect --user-id @alice:example.org
@@ -842,53 +843,53 @@ openclaw matrix direct repair --user-id @alice:example.org
Przepływ naprawy:
-- preferuje ścisły DM 1:1, który jest już zmapowany w `m.direct`
-- w przeciwnym razie wybiera dowolny aktualnie dołączony ścisły DM 1:1 z tym użytkownikiem
-- tworzy nowy pokój bezpośredni i przepisuje `m.direct`, jeśli nie istnieje żaden zdrowy DM
+- preferuje ścisłą wiadomość prywatną 1:1, która jest już zmapowana w `m.direct`
+- w razie potrzeby przechodzi do dowolnej aktualnie dołączonej ścisłej wiadomości prywatnej 1:1 z tym użytkownikiem
+- tworzy nowy pokój bezpośredni i przepisuje `m.direct`, jeśli nie istnieje zdrowa wiadomość prywatna
-Przepływ naprawy nie usuwa automatycznie starych pokoi. Wybiera tylko zdrowy DM i aktualizuje mapowanie, aby nowe wysyłki Matrix, powiadomienia o weryfikacji i inne przepływy wiadomości bezpośrednich znów trafiały do właściwego pokoju.
+Przepływ naprawy nie usuwa automatycznie starych pokoi. Wybiera tylko zdrową wiadomość prywatną i aktualizuje mapowanie, aby nowe wysyłki Matrix, powiadomienia weryfikacyjne i inne przepływy wiadomości bezpośrednich znów trafiały do właściwego pokoju.
## Zatwierdzenia exec
Matrix może działać jako natywny klient zatwierdzeń dla konta Matrix. Natywne
-ustawienia routowania DM/kanału nadal znajdują się w konfiguracji zatwierdzeń exec:
+pokrętła routowania wiadomości prywatnych/kanałów nadal znajdują się pod konfiguracją zatwierdzeń exec:
- `channels.matrix.execApprovals.enabled`
-- `channels.matrix.execApprovals.approvers` (opcjonalnie; wartość zapasowa to `channels.matrix.dm.allowFrom`)
+- `channels.matrix.execApprovals.approvers` (opcjonalne; wartość zapasowa to `channels.matrix.dm.allowFrom`)
- `channels.matrix.execApprovals.target` (`dm` | `channel` | `both`, domyślnie: `dm`)
- `channels.matrix.execApprovals.agentFilter`
- `channels.matrix.execApprovals.sessionFilter`
-Zatwierdzający muszą być identyfikatorami użytkowników Matrix, takimi jak `@owner:example.org`. Matrix automatycznie włącza natywne zatwierdzenia, gdy `enabled` jest nieustawione lub ma wartość `"auto"` i można rozwiązać co najmniej jednego zatwierdzającego. Zatwierdzenia exec używają najpierw `execApprovals.approvers` i mogą wrócić do `channels.matrix.dm.allowFrom`. Zatwierdzenia Pluginów autoryzują przez `channels.matrix.dm.allowFrom`. Ustaw `enabled: false`, aby jawnie wyłączyć Matrix jako natywnego klienta zatwierdzeń. W przeciwnym razie żądania zatwierdzeń wracają do innych skonfigurowanych ścieżek zatwierdzania lub zasad awaryjnych zatwierdzeń.
+Zatwierdzający muszą być identyfikatorami użytkowników Matrix, takimi jak `@owner:example.org`. Matrix automatycznie włącza natywne zatwierdzenia, gdy `enabled` jest nieustawione lub ma wartość `"auto"` i można rozwiązać co najmniej jednego zatwierdzającego. Zatwierdzenia exec używają najpierw `execApprovals.approvers` i mogą wracać do `channels.matrix.dm.allowFrom`. Zatwierdzenia Pluginów autoryzują się przez `channels.matrix.dm.allowFrom`. Ustaw `enabled: false`, aby jawnie wyłączyć Matrix jako natywnego klienta zatwierdzeń. W przeciwnym razie żądania zatwierdzenia wracają do innych skonfigurowanych ścieżek zatwierdzania albo do zasad awaryjnych zatwierdzania.
Natywne routowanie Matrix obsługuje oba rodzaje zatwierdzeń:
-- `channels.matrix.execApprovals.*` kontroluje natywny tryb rozsyłania DM/kanału dla promptów zatwierdzeń Matrix.
-- Zatwierdzenia exec używają zestawu zatwierdzających exec z `execApprovals.approvers` lub `channels.matrix.dm.allowFrom`.
-- Zatwierdzenia Pluginów używają listy dozwolonych DM Matrix z `channels.matrix.dm.allowFrom`.
+- `channels.matrix.execApprovals.*` kontroluje natywny tryb rozsyłania do wiadomości prywatnych/kanałów dla promptów zatwierdzania Matrix.
+- Zatwierdzenia exec używają zbioru zatwierdzających exec z `execApprovals.approvers` albo `channels.matrix.dm.allowFrom`.
+- Zatwierdzenia Pluginów używają listy dozwolonych wiadomości prywatnych Matrix z `channels.matrix.dm.allowFrom`.
- Skróty reakcji Matrix i aktualizacje wiadomości mają zastosowanie zarówno do zatwierdzeń exec, jak i Pluginów.
Zasady dostarczania:
-- `target: "dm"` wysyła prompty zatwierdzeń do DM-ów zatwierdzających
-- `target: "channel"` wysyła prompt z powrotem do źródłowego pokoju lub DM Matrix
-- `target: "both"` wysyła do DM-ów zatwierdzających oraz do źródłowego pokoju lub DM Matrix
+- `target: "dm"` wysyła prompty zatwierdzania do wiadomości prywatnych zatwierdzających
+- `target: "channel"` wysyła prompt z powrotem do źródłowego pokoju lub wiadomości prywatnej Matrix
+- `target: "both"` wysyła do wiadomości prywatnych zatwierdzających oraz do źródłowego pokoju lub wiadomości prywatnej Matrix
-Prompty zatwierdzeń Matrix inicjalizują skróty reakcji w głównej wiadomości zatwierdzenia:
+Prompty zatwierdzania Matrix inicjują skróty reakcji na głównej wiadomości zatwierdzania:
-- `✅` = zezwól jednorazowo
+- `✅` = zezwól raz
- `❌` = odmów
- `♾️` = zezwól zawsze, gdy taka decyzja jest dozwolona przez efektywną politykę exec
-Zatwierdzający mogą reagować na tę wiadomość lub używać zapasowych poleceń slash: `/approve allow-once`, `/approve allow-always` albo `/approve deny`.
+Zatwierdzający mogą zareagować na tę wiadomość albo użyć zapasowych poleceń slash: `/approve allow-once`, `/approve allow-always` lub `/approve deny`.
-Tylko rozwiązani zatwierdzający mogą zatwierdzać lub odmawiać. W przypadku zatwierdzeń exec dostarczanie kanałowe zawiera tekst polecenia, więc włączaj `channel` lub `both` tylko w zaufanych pokojach.
+Tylko rozwiązani zatwierdzający mogą zatwierdzać lub odmawiać. W przypadku zatwierdzeń exec dostarczanie kanałowe zawiera treść polecenia, dlatego włączaj `channel` lub `both` tylko w zaufanych pokojach.
Nadpisanie per konto:
- `channels.matrix.accounts..execApprovals`
-Powiązana dokumentacja: [Exec approvals](/pl/tools/exec-approvals)
+Powiązane dokumenty: [Exec approvals](/pl/tools/exec-approvals)
## Wiele kont
@@ -921,21 +922,21 @@ Powiązana dokumentacja: [Exec approvals](/pl/tools/exec-approvals)
```
Wartości najwyższego poziomu `channels.matrix` działają jako wartości domyślne dla nazwanych kont, chyba że konto je nadpisze.
-Możesz ograniczyć dziedziczone wpisy pokoi do jednego konta Matrix za pomocą `groups..account`.
+Możesz ograniczyć odziedziczone wpisy pokojów do jednego konta Matrix za pomocą `groups..account`.
Wpisy bez `account` pozostają współdzielone przez wszystkie konta Matrix, a wpisy z `account: "default"` nadal działają, gdy konto domyślne jest skonfigurowane bezpośrednio na najwyższym poziomie `channels.matrix.*`.
-Częściowe współdzielone domyślne ustawienia uwierzytelniania same z siebie nie tworzą osobnego niejawnego konta domyślnego. OpenClaw syntetyzuje konto najwyższego poziomu `default` tylko wtedy, gdy to konto domyślne ma aktualne uwierzytelnianie (`homeserver` plus `accessToken` albo `homeserver` plus `userId` i `password`); nazwane konta mogą nadal pozostać wykrywalne z `homeserver` plus `userId`, gdy buforowane poświadczenia później spełnią wymagania uwierzytelniania.
-Jeśli Matrix ma już dokładnie jedno nazwane konto albo `defaultAccount` wskazuje istniejący klucz nazwanego konta, promocja naprawy/konfiguracji z jednego konta do wielu kont zachowuje to konto zamiast tworzyć nowy wpis `accounts.default`. Tylko klucze uwierzytelniania/bootstrapu Matrix są przenoszone do promowanego konta; współdzielone klucze polityki dostarczania pozostają na najwyższym poziomie.
-Ustaw `defaultAccount`, jeśli chcesz, aby OpenClaw preferował jedno nazwane konto Matrix dla niejawnego routowania, sondowania i operacji CLI.
-Jeśli skonfigurowano wiele kont Matrix i jedno ID konta to `default`, OpenClaw używa tego konta niejawnie, nawet jeśli `defaultAccount` nie jest ustawione.
+Częściowe współdzielone domyślne ustawienia uwierzytelniania same z siebie nie tworzą osobnego niejawnego konta domyślnego. OpenClaw syntetyzuje konto najwyższego poziomu `default` tylko wtedy, gdy to domyślne konto ma świeże uwierzytelnienie (`homeserver` plus `accessToken` albo `homeserver` plus `userId` i `password`); nazwane konta nadal mogą pozostać wykrywalne na podstawie `homeserver` plus `userId`, gdy zapisane poświadczenia spełnią wymagania uwierzytelniania później.
+Jeśli Matrix ma już dokładnie jedno nazwane konto albo `defaultAccount` wskazuje istniejący klucz nazwanego konta, promocja naprawy/konfiguracji z jednego konta do wielu kont zachowuje to konto zamiast tworzyć świeży wpis `accounts.default`. Tylko klucze uwierzytelniania/bootstrapu Matrix są przenoszone do promowanego konta; współdzielone klucze polityki dostarczania pozostają na najwyższym poziomie.
+Ustaw `defaultAccount`, gdy chcesz, aby OpenClaw preferował jedno nazwane konto Matrix do niejawnego routingu, sondowania i operacji CLI.
+Jeśli skonfigurowano wiele kont Matrix i jedno z identyfikatorów kont to `default`, OpenClaw używa tego konta niejawnie nawet wtedy, gdy `defaultAccount` nie jest ustawione.
Jeśli skonfigurujesz wiele nazwanych kont, ustaw `defaultAccount` albo przekazuj `--account ` dla poleceń CLI, które opierają się na niejawnym wyborze konta.
-Przekazuj `--account ` do `openclaw matrix verify ...` i `openclaw matrix devices ...`, gdy chcesz nadpisać ten niejawny wybór dla jednego polecenia.
+Przekaż `--account ` do `openclaw matrix verify ...` i `openclaw matrix devices ...`, gdy chcesz nadpisać ten niejawny wybór dla jednego polecenia.
Zobacz [Configuration reference](/pl/gateway/configuration-reference#multi-account-all-channels), aby poznać współdzielony wzorzec wielu kont.
## Prywatne/LAN homeservery
-Domyślnie OpenClaw blokuje prywatne/wewnętrzne homeservery Matrix jako ochronę przed SSRF, chyba że
-jawnie włączysz zgodę per konto.
+Domyślnie OpenClaw blokuje prywatne/wewnętrzne homeservery Matrix dla ochrony SSRF, chyba że
+jawnie włączysz to per konto.
Jeśli Twój homeserver działa na localhost, adresie IP LAN/Tailscale albo wewnętrznej nazwie hosta, włącz
`network.dangerouslyAllowPrivateNetwork` dla tego konta Matrix:
@@ -964,8 +965,8 @@ openclaw matrix account add \
--access-token syt_ops_xxx
```
-Ta zgoda obejmuje tylko zaufane cele prywatne/wewnętrzne. Publiczne homeservery cleartext, takie jak
-`http://matrix.example.org:8008`, pozostają zablokowane. Jeśli to możliwe, preferuj `https://`.
+To ustawienie opt-in pozwala tylko na zaufane cele prywatne/wewnętrzne. Publiczne homeservery działające po jawnym HTTP, takie jak
+`http://matrix.example.org:8008`, nadal pozostają zablokowane. Gdy to możliwe, preferuj `https://`.
## Przekazywanie ruchu Matrix przez proxy
@@ -983,86 +984,86 @@ Jeśli Twoje wdrożenie Matrix wymaga jawnego wychodzącego proxy HTTP(S), ustaw
}
```
-Nazwane konta mogą nadpisywać domyślną wartość najwyższego poziomu za pomocą `channels.matrix.accounts..proxy`.
-OpenClaw używa tego samego ustawienia proxy dla ruchu Matrix w środowisku uruchomieniowym oraz dla sond statusu konta.
+Nazwane konta mogą nadpisać domyślne ustawienie najwyższego poziomu przez `channels.matrix.accounts..proxy`.
+OpenClaw używa tego samego ustawienia proxy zarówno dla ruchu Matrix w czasie działania, jak i dla sond statusu konta.
## Rozwiązywanie celów
-Matrix akceptuje te formy celów wszędzie tam, gdzie OpenClaw prosi o cel pokoju lub użytkownika:
+Matrix akceptuje te formy celu wszędzie tam, gdzie OpenClaw prosi o cel pokoju lub użytkownika:
-- Użytkownicy: `@user:server`, `user:@user:server` lub `matrix:user:@user:server`
-- Pokoje: `!room:server`, `room:!room:server` lub `matrix:room:!room:server`
-- Aliasy: `#alias:server`, `channel:#alias:server` lub `matrix:channel:#alias:server`
+- Użytkownicy: `@user:server`, `user:@user:server` albo `matrix:user:@user:server`
+- Pokoje: `!room:server`, `room:!room:server` albo `matrix:room:!room:server`
+- Aliasy: `#alias:server`, `channel:#alias:server` albo `matrix:channel:#alias:server`
-Wyszukiwanie na żywo w katalogu używa zalogowanego konta Matrix:
+Wyszukiwanie katalogu na żywo używa zalogowanego konta Matrix:
- Wyszukiwania użytkowników odpytują katalog użytkowników Matrix na tym homeserverze.
-- Wyszukiwania pokoi bezpośrednio akceptują jawne ID pokoi i aliasy, a następnie wracają do przeszukiwania nazw dołączonych pokoi dla tego konta.
-- Wyszukiwanie nazw dołączonych pokoi jest best-effort. Jeśli nazwy pokoju nie można rozwiązać do ID ani aliasu, jest ona ignorowana podczas rozwiązywania listy dozwolonych w środowisku uruchomieniowym.
+- Wyszukiwania pokojów akceptują bezpośrednio jawne identyfikatory pokojów i aliasy, a następnie w razie potrzeby przechodzą do przeszukiwania nazw dołączonych pokojów dla tego konta.
+- Wyszukiwanie nazw dołączonych pokojów jest podejściem best-effort. Jeśli nazwy pokoju nie da się rozwiązać do identyfikatora lub aliasu, zostaje ona zignorowana podczas rozwiązywania listy dozwolonych w czasie działania.
## Dokumentacja konfiguracji
- `enabled`: włącza lub wyłącza kanał.
- `name`: opcjonalna etykieta konta.
-- `defaultAccount`: preferowane ID konta, gdy skonfigurowano wiele kont Matrix.
-- `homeserver`: URL homeservera, na przykład `https://matrix.example.org`.
-- `network.dangerouslyAllowPrivateNetwork`: pozwala temu kontu Matrix łączyć się z prywatnymi/wewnętrznymi homeserverami. Włącz to, gdy homeserver rozwiązuje się do `localhost`, adresu IP LAN/Tailscale lub wewnętrznego hosta, takiego jak `matrix-synapse`.
-- `proxy`: opcjonalny URL proxy HTTP(S) dla ruchu Matrix. Nazwane konta mogą nadpisywać domyślną wartość najwyższego poziomu własnym `proxy`.
-- `userId`: pełne ID użytkownika Matrix, na przykład `@bot:example.org`.
-- `accessToken`: token dostępu dla uwierzytelniania opartego na tokenie. Dla `channels.matrix.accessToken` oraz `channels.matrix.accounts..accessToken` obsługiwane są zwykłe wartości tekstowe i wartości SecretRef w providerach env/file/exec. Zobacz [Secrets Management](/pl/gateway/secrets).
-- `password`: hasło dla logowania opartego na haśle. Obsługiwane są zwykłe wartości tekstowe i wartości SecretRef.
-- `deviceId`: jawne ID urządzenia Matrix.
-- `deviceName`: nazwa wyświetlana urządzenia dla logowania hasłem.
-- `avatarUrl`: zapisany URL własnego awatara do synchronizacji profilu i aktualizacji `profile set`.
+- `defaultAccount`: preferowany identyfikator konta, gdy skonfigurowano wiele kont Matrix.
+- `homeserver`: adres URL homeservera, na przykład `https://matrix.example.org`.
+- `network.dangerouslyAllowPrivateNetwork`: pozwala temu kontu Matrix łączyć się z prywatnymi/wewnętrznymi homeserverami. Włącz to, gdy homeserver rozwiązuje się do `localhost`, adresu IP LAN/Tailscale albo wewnętrznego hosta takiego jak `matrix-synapse`.
+- `proxy`: opcjonalny adres URL proxy HTTP(S) dla ruchu Matrix. Nazwane konta mogą nadpisać domyślne ustawienie najwyższego poziomu własnym `proxy`.
+- `userId`: pełny identyfikator użytkownika Matrix, na przykład `@bot:example.org`.
+- `accessToken`: token dostępu do uwierzytelniania opartego na tokenie. Zwykłe wartości tekstowe i wartości SecretRef są obsługiwane dla `channels.matrix.accessToken` oraz `channels.matrix.accounts..accessToken` w dostawcach env/file/exec. Zobacz [Secrets Management](/pl/gateway/secrets).
+- `password`: hasło do logowania opartego na haśle. Obsługiwane są zwykłe wartości tekstowe i wartości SecretRef.
+- `deviceId`: jawny identyfikator urządzenia Matrix.
+- `deviceName`: wyświetlana nazwa urządzenia dla logowania hasłem.
+- `avatarUrl`: zapisany adres URL własnego awatara do synchronizacji profilu i aktualizacji `profile set`.
- `initialSyncLimit`: maksymalna liczba zdarzeń pobieranych podczas synchronizacji przy uruchamianiu.
- `encryption`: włącza E2EE.
-- `allowlistOnly`: gdy ma wartość `true`, podnosi politykę pokoi `open` do `allowlist` i wymusza dla wszystkich aktywnych polityk DM poza `disabled` (w tym `pairing` i `open`) wartość `allowlist`. Nie wpływa na polityki `disabled`.
-- `allowBots`: zezwala na wiadomości z innych skonfigurowanych kont Matrix OpenClaw (`true` lub `"mentions"`).
+- `allowlistOnly`: gdy ma wartość `true`, podnosi politykę pokoju `open` do `allowlist` i wymusza `allowlist` dla wszystkich aktywnych polityk wiadomości prywatnych z wyjątkiem `disabled` (w tym `pairing` i `open`). Nie wpływa na polityki `disabled`.
+- `allowBots`: pozwala na wiadomości z innych skonfigurowanych kont Matrix OpenClaw (`true` albo `"mentions"`).
- `groupPolicy`: `open`, `allowlist` albo `disabled`.
- `contextVisibility`: tryb widoczności uzupełniającego kontekstu pokoju (`all`, `allowlist`, `allowlist_quote`).
-- `groupAllowFrom`: lista dozwolonych ID użytkowników dla ruchu w pokojach. Wpisy powinny być pełnymi ID użytkowników Matrix; nierozwiązane nazwy są ignorowane w czasie działania.
-- `historyLimit`: maksymalna liczba wiadomości z pokoju do uwzględnienia jako kontekst historii grupy. Wartość zapasowa pochodzi z `messages.groupChat.historyLimit`; jeśli oba ustawienia są nieustawione, efektywna wartość domyślna to `0`. Ustaw `0`, aby wyłączyć.
+- `groupAllowFrom`: lista dozwolonych identyfikatorów użytkowników dla ruchu pokojowego. Wpisy powinny być pełnymi identyfikatorami użytkowników Matrix; nierozwiązane nazwy są ignorowane w czasie działania.
+- `historyLimit`: maksymalna liczba wiadomości pokoju do uwzględnienia jako kontekst historii grupy. Wartość zapasowa to `messages.groupChat.historyLimit`; jeśli oba ustawienia są nieustawione, efektywną wartością domyślną jest `0`. Ustaw `0`, aby wyłączyć.
- `replyToMode`: `off`, `first`, `all` albo `batched`.
- `markdown`: opcjonalna konfiguracja renderowania Markdown dla wychodzącego tekstu Matrix.
-- `streaming`: `off` (domyślnie), `"partial"`, `"quiet"`, `true` albo `false`. `"partial"` i `true` włączają aktualizacje szkicu „najpierw podgląd” przy użyciu zwykłych wiadomości tekstowych Matrix. `"quiet"` używa podglądów notice bez powiadomień dla samohostowanych konfiguracji reguł push. `false` jest równoważne z `"off"`.
-- `blockStreaming`: `true` włącza oddzielne komunikaty postępu dla ukończonych bloków odpowiedzi asystenta, gdy aktywne jest strumieniowanie szkicu podglądu.
+- `streaming`: `off` (domyślnie), `"partial"`, `"quiet"`, `true` albo `false`. `"partial"` i `true` włączają aktualizacje szkicu typu preview-first przy użyciu zwykłych wiadomości tekstowych Matrix. `"quiet"` używa niepowiadamiających powiadomień podglądu dla samodzielnie hostowanych konfiguracji reguł push. `false` jest równoważne `"off"`.
+- `blockStreaming`: `true` włącza osobne wiadomości postępu dla ukończonych bloków asystenta, gdy aktywne jest strumieniowanie szkicu podglądu.
- `threadReplies`: `off`, `inbound` albo `always`.
-- `threadBindings`: nadpisania per kanał dla routowania sesji związanych z wątkami i ich cyklu życia.
+- `threadBindings`: nadpisania per kanał dla routingu i cyklu życia sesji powiązanych z wątkami.
- `startupVerification`: tryb automatycznego żądania samoweryfikacji przy uruchamianiu (`if-unverified`, `off`).
- `startupVerificationCooldownHours`: czas odczekania przed ponowną próbą automatycznych żądań weryfikacji przy uruchamianiu.
-- `textChunkLimit`: rozmiar fragmentu wiadomości wychodzącej w znakach (ma zastosowanie, gdy `chunkMode` to `length`).
+- `textChunkLimit`: rozmiar fragmentu wiadomości wychodzącej w znakach (ma zastosowanie, gdy `chunkMode` ma wartość `length`).
- `chunkMode`: `length` dzieli wiadomości według liczby znaków; `newline` dzieli na granicach linii.
-- `responsePrefix`: opcjonalny ciąg poprzedzający wszystkie odpowiedzi wychodzące dla tego kanału.
-- `ackReaction`: opcjonalne nadpisanie reakcji potwierdzenia dla tego kanału/konta.
-- `ackReactionScope`: opcjonalne nadpisanie zakresu reakcji potwierdzenia (`group-mentions`, `group-all`, `direct`, `all`, `none`, `off`).
-- `reactionNotifications`: tryb powiadomień o reakcjach przychodzących (`own`, `off`).
+- `responsePrefix`: opcjonalny ciąg znaków dodawany na początku wszystkich odpowiedzi wychodzących dla tego kanału.
+- `ackReaction`: opcjonalne nadpisanie reakcji potwierdzającej dla tego kanału/konta.
+- `ackReactionScope`: opcjonalne nadpisanie zakresu reakcji potwierdzającej (`group-mentions`, `group-all`, `direct`, `all`, `none`, `off`).
+- `reactionNotifications`: tryb przychodzących powiadomień o reakcjach (`own`, `off`).
- `mediaMaxMb`: limit rozmiaru multimediów w MB dla wysyłek wychodzących i przetwarzania multimediów przychodzących.
-- `autoJoin`: polityka automatycznego dołączania do zaproszeń (`always`, `allowlist`, `off`). Domyślnie: `off`. Dotyczy wszystkich zaproszeń Matrix, w tym zaproszeń w stylu DM.
-- `autoJoinAllowlist`: pokoje/aliasy dozwolone, gdy `autoJoin` ma wartość `allowlist`. Wpisy aliasów są rozwiązywane do ID pokoi podczas obsługi zaproszeń; OpenClaw nie ufa stanowi aliasu deklarowanemu przez zaproszony pokój.
-- `dm`: blok polityki DM (`enabled`, `policy`, `allowFrom`, `sessionScope`, `threadReplies`).
-- `dm.policy`: kontroluje dostęp do DM po tym, jak OpenClaw dołączył do pokoju i sklasyfikował go jako DM. Nie zmienia tego, czy zaproszenie jest automatycznie przyjmowane.
-- `dm.allowFrom`: wpisy powinny być pełnymi ID użytkowników Matrix, chyba że zostały już rozwiązane przez wyszukiwanie katalogowe na żywo.
-- `dm.sessionScope`: `per-user` (domyślnie) albo `per-room`. Użyj `per-room`, gdy chcesz, aby każdy pokój DM Matrix zachowywał osobny kontekst, nawet jeśli partner jest ten sam.
-- `dm.threadReplies`: nadpisanie polityki wątków tylko dla DM (`off`, `inbound`, `always`). Nadpisuje ustawienie najwyższego poziomu `threadReplies` zarówno dla umiejscowienia odpowiedzi, jak i izolacji sesji w DM-ach.
-- `execApprovals`: natywne dostarczanie zatwierdzeń exec Matrix (`enabled`, `approvers`, `target`, `agentFilter`, `sessionFilter`).
-- `execApprovals.approvers`: ID użytkowników Matrix uprawnionych do zatwierdzania żądań exec. Opcjonalne, gdy `dm.allowFrom` już identyfikuje zatwierdzających.
+- `autoJoin`: polityka automatycznego dołączania do zaproszeń (`always`, `allowlist`, `off`). Domyślnie: `off`. Dotyczy wszystkich zaproszeń Matrix, w tym zaproszeń w stylu wiadomości prywatnych.
+- `autoJoinAllowlist`: pokoje/aliasy dozwolone, gdy `autoJoin` ma wartość `allowlist`. Wpisy aliasów są rozwiązywane do identyfikatorów pokojów podczas obsługi zaproszeń; OpenClaw nie ufa stanowi aliasu deklarowanemu przez zaproszony pokój.
+- `dm`: blok zasad wiadomości prywatnych (`enabled`, `policy`, `allowFrom`, `sessionScope`, `threadReplies`).
+- `dm.policy`: kontroluje dostęp do wiadomości prywatnych po tym, jak OpenClaw dołączył do pokoju i sklasyfikował go jako wiadomość prywatną. Nie zmienia tego, czy zaproszenie zostanie automatycznie przyjęte.
+- `dm.allowFrom`: wpisy powinny być pełnymi identyfikatorami użytkowników Matrix, chyba że zostały już rozwiązane przez wyszukiwanie katalogu na żywo.
+- `dm.sessionScope`: `per-user` (domyślnie) albo `per-room`. Użyj `per-room`, gdy chcesz, aby każdy pokój wiadomości prywatnych Matrix zachowywał oddzielny kontekst, nawet jeśli peer jest ten sam.
+- `dm.threadReplies`: nadpisanie polityki wątków tylko dla wiadomości prywatnych (`off`, `inbound`, `always`). Nadpisuje ustawienie najwyższego poziomu `threadReplies` zarówno dla umiejscowienia odpowiedzi, jak i izolacji sesji w wiadomościach prywatnych.
+- `execApprovals`: natywne dostarczanie zatwierdzeń exec w Matrix (`enabled`, `approvers`, `target`, `agentFilter`, `sessionFilter`).
+- `execApprovals.approvers`: identyfikatory użytkowników Matrix uprawnionych do zatwierdzania żądań exec. Opcjonalne, gdy `dm.allowFrom` już identyfikuje zatwierdzających.
- `execApprovals.target`: `dm | channel | both` (domyślnie: `dm`).
- `accounts`: nazwane nadpisania per konto. Wartości najwyższego poziomu `channels.matrix` działają jako wartości domyślne dla tych wpisów.
-- `groups`: mapa polityk per pokój. Preferuj ID pokoi lub aliasy; nierozwiązane nazwy pokoi są ignorowane w czasie działania. Tożsamość sesji/grupy używa stabilnego ID pokoju po rozwiązaniu.
-- `groups..account`: ogranicza jeden dziedziczony wpis pokoju do konkretnego konta Matrix w konfiguracjach wielokontowych.
+- `groups`: mapa zasad per pokój. Preferuj identyfikatory pokojów lub aliasy; nierozwiązane nazwy pokojów są ignorowane w czasie działania. Tożsamość sesji/grupy używa stabilnego identyfikatora pokoju po rozwiązaniu.
+- `groups..account`: ogranicza jeden odziedziczony wpis pokoju do konkretnego konta Matrix w konfiguracjach wielokontowych.
- `groups..allowBots`: nadpisanie na poziomie pokoju dla nadawców będących skonfigurowanymi botami (`true` albo `"mentions"`).
- `groups..users`: lista dozwolonych nadawców per pokój.
-- `groups..tools`: nadpisania zezwalania/zabraniania narzędzi per pokój.
-- `groups..autoReply`: nadpisanie na poziomie pokoju dla bramkowania wzmiankami. `true` wyłącza wymagania dotyczące wzmianek dla tego pokoju; `false` wymusza ich ponowne włączenie.
+- `groups..tools`: nadpisania per pokój dla zezwoleń/odmów narzędzi.
+- `groups..autoReply`: nadpisanie bramkowania wzmiankami na poziomie pokoju. `true` wyłącza wymagania wzmianki dla tego pokoju; `false` wymusza ich ponowne włączenie.
- `groups..skills`: opcjonalny filtr Skills na poziomie pokoju.
-- `groups..systemPrompt`: opcjonalny fragment systemPrompt na poziomie pokoju.
+- `groups..systemPrompt`: opcjonalny fragment system promptu na poziomie pokoju.
- `rooms`: starszy alias dla `groups`.
-- `actions`: bramkowanie narzędzi per akcja (`messages`, `reactions`, `pins`, `profile`, `memberInfo`, `channelInfo`, `verification`).
+- `actions`: kontrola dostępu do narzędzi per akcja (`messages`, `reactions`, `pins`, `profile`, `memberInfo`, `channelInfo`, `verification`).
## Powiązane
- [Channels Overview](/pl/channels) — wszystkie obsługiwane kanały
-- [Pairing](/pl/channels/pairing) — uwierzytelnianie DM i przepływ parowania
+- [Pairing](/pl/channels/pairing) — uwierzytelnianie wiadomości prywatnych i przepływ parowania
- [Groups](/pl/channels/groups) — zachowanie czatu grupowego i bramkowanie wzmiankami
- [Channel Routing](/pl/channels/channel-routing) — routowanie sesji dla wiadomości
- [Security](/pl/gateway/security) — model dostępu i utwardzanie
diff --git a/docs/pl/concepts/system-prompt.md b/docs/pl/concepts/system-prompt.md
index 9860b55f1..c43c34762 100644
--- a/docs/pl/concepts/system-prompt.md
+++ b/docs/pl/concepts/system-prompt.md
@@ -1,14 +1,14 @@
---
read_when:
- Edytowanie tekstu promptu systemowego, listy narzędzi lub sekcji czasu/Heartbeat
- - Zmiana zachowania bootstrapu obszaru roboczego lub wstrzykiwania Skills
+ - Zmiana zachowania bootstrapu przestrzeni roboczej lub wstrzykiwania Skills
summary: Co zawiera prompt systemowy OpenClaw i jak jest składany
title: Prompt systemowy
x-i18n:
- generated_at: "2026-04-12T09:33:35Z"
+ generated_at: "2026-04-15T19:41:38Z"
model: gpt-5.4
provider: openai
- source_hash: 057f01aac51f7737b5223f61f5d55e552d9011232aebb130426e269d8f6c257f
+ source_hash: c740e4646bc4980567338237bfb55126af0df72499ca00a48e4848d9a3608ab4
source_path: concepts/system-prompt.md
workflow: 15
---
@@ -20,85 +20,84 @@ OpenClaw tworzy niestandardowy prompt systemowy dla każdego uruchomienia agenta
Prompt jest składany przez OpenClaw i wstrzykiwany do każdego uruchomienia agenta.
Pluginy dostawców mogą wnosić wskazówki do promptu uwzględniające cache bez zastępowania
-całego promptu należącego do OpenClaw. Runtime dostawcy może:
+pełnego promptu należącego do OpenClaw. Runtime dostawcy może:
-- zastąpić niewielki zestaw nazwanych sekcji rdzeniowych (`interaction_style`,
+- zastąpić mały zestaw nazwanych sekcji rdzeniowych (`interaction_style`,
`tool_call_style`, `execution_bias`)
- wstrzyknąć **stabilny prefiks** powyżej granicy cache promptu
- wstrzyknąć **dynamiczny sufiks** poniżej granicy cache promptu
-Używaj wkładów należących do dostawcy do strojenia specyficznego dla rodziny modeli. Zachowaj starszą
-mutację promptu `before_prompt_build` dla kompatybilności lub rzeczywiście globalnych zmian promptu,
-a nie dla zwykłego zachowania dostawcy.
+Używaj wkładów należących do dostawcy do dostrajania specyficznego dla rodziny modeli. Zachowaj starszą
+mutację promptu `before_prompt_build` dla zgodności lub rzeczywiście globalnych zmian promptu, a nie dla zwykłego zachowania dostawcy.
## Struktura
Prompt jest celowo zwięzły i używa stałych sekcji:
-- **Narzędzia**: przypomnienie o źródle prawdy dla narzędzi strukturalnych oraz wskazówki dotyczące użycia narzędzi w runtime.
-- **Bezpieczeństwo**: krótkie przypomnienie o zabezpieczeniach, aby unikać zachowań dążących do zdobycia władzy lub obchodzenia nadzoru.
-- **Skills** (gdy dostępne): informuje model, jak ładować instrukcje Skills na żądanie.
-- **Samodzielna aktualizacja OpenClaw**: jak bezpiecznie sprawdzać konfigurację za pomocą
- `config.schema.lookup`, poprawiać konfigurację za pomocą `config.patch`, zastępować całą
- konfigurację za pomocą `config.apply` oraz uruchamiać `update.run` wyłącznie na wyraźne żądanie
- użytkownika. Narzędzie `gateway`, dostępne tylko dla właściciela, również odmawia przepisywania
+- **Tooling**: przypomnienie o źródle prawdy dla narzędzi strukturalnych oraz wskazówki dotyczące użycia narzędzi w runtime.
+- **Safety**: krótkie przypomnienie o zabezpieczeniach, aby unikać zachowań dążących do przejęcia kontroli lub omijania nadzoru.
+- **Skills** (gdy dostępne): informuje model, jak na żądanie ładować instrukcje umiejętności.
+- **OpenClaw Self-Update**: jak bezpiecznie sprawdzać konfigurację za pomocą
+ `config.schema.lookup`, modyfikować konfigurację za pomocą `config.patch`, zastępować pełną
+ konfigurację za pomocą `config.apply` i uruchamiać `update.run` tylko na wyraźną
+ prośbę użytkownika. Narzędzie `gateway`, dostępne tylko dla właściciela, również odmawia przepisywania
`tools.exec.ask` / `tools.exec.security`, w tym starszych aliasów `tools.bash.*`,
- które normalizują się do tych chronionych ścieżek exec.
-- **Obszar roboczy**: katalog roboczy (`agents.defaults.workspace`).
-- **Dokumentacja**: lokalna ścieżka do dokumentacji OpenClaw (repozytorium lub pakiet npm) oraz kiedy ją czytać.
-- **Pliki obszaru roboczego (wstrzyknięte)**: wskazuje, że pliki bootstrapu są dołączone poniżej.
-- **Sandbox** (gdy włączony): wskazuje runtime w piaskownicy, ścieżki sandboxa i to, czy dostępne jest podwyższone exec.
-- **Bieżąca data i godzina**: lokalny czas użytkownika, strefa czasowa i format czasu.
-- **Tagi odpowiedzi**: opcjonalna składnia tagów odpowiedzi dla obsługiwanych dostawców.
-- **Heartbeat**: prompt Heartbeat i zachowanie potwierdzeń, gdy Heartbeat jest włączony dla domyślnego agenta.
-- **Runtime**: host, system operacyjny, node, model, katalog główny repozytorium (jeśli wykryto), poziom myślenia (jedna linia).
-- **Rozumowanie**: bieżący poziom widoczności + wskazówka przełączania `/reasoning`.
+ które są normalizowane do tych chronionych ścieżek exec.
+- **Workspace**: katalog roboczy (`agents.defaults.workspace`).
+- **Documentation**: lokalna ścieżka do dokumentacji OpenClaw (repozytorium lub pakiet npm) i kiedy ją czytać.
+- **Workspace Files (injected)**: wskazuje, że pliki bootstrap są dołączone poniżej.
+- **Sandbox** (gdy włączony): wskazuje środowisko sandbox, ścieżki sandboxa i to, czy podwyższony exec jest dostępny.
+- **Current Date & Time**: lokalny czas użytkownika, strefa czasowa i format czasu.
+- **Reply Tags**: opcjonalna składnia tagów odpowiedzi dla obsługiwanych dostawców.
+- **Heartbeats**: prompt heartbeat i zachowanie potwierdzenia, gdy heartbeat jest włączony dla domyślnego agenta.
+- **Runtime**: host, system operacyjny, node, model, katalog główny repozytorium (gdy wykryty), poziom myślenia (jedna linia).
+- **Reasoning**: bieżący poziom widoczności + podpowiedź przełączania `/reasoning`.
-Sekcja Narzędzia zawiera również wskazówki runtime dotyczące długotrwałej pracy:
+Sekcja Tooling zawiera również wskazówki runtime dla długotrwałej pracy:
- używaj Cron do przyszłych działań następczych (`check back later`, przypomnienia, zadania cykliczne)
- zamiast pętli `sleep` w `exec`, sztuczek opóźniających `yieldMs` lub powtarzanego
- odpytywania `process`
-- używaj `exec` / `process` tylko do poleceń, które uruchamiają się teraz i nadal działają
+ zamiast pętli uśpienia `exec`, trików opóźnień `yieldMs` lub powtarzanego odpytywania `process`
+- używaj `exec` / `process` tylko dla poleceń, które uruchamiają się teraz i nadal działają
w tle
-- gdy włączone jest automatyczne wybudzanie po zakończeniu, uruchom polecenie tylko raz i polegaj na
- ścieżce wybudzania opartej na push, gdy zwróci dane wyjściowe lub zakończy się błędem
+- gdy włączone jest automatyczne wybudzanie po zakończeniu, uruchom polecenie raz i polegaj na
+ mechanizmie wybudzania opartym na push, gdy wygeneruje wynik lub zakończy się błędem
- używaj `process` do logów, statusu, wejścia lub interwencji, gdy musisz
sprawdzić działające polecenie
-- jeśli zadanie jest większe, preferuj `sessions_spawn`; zakończenie podagenta jest
- oparte na push i jest automatycznie anonsowane z powrotem do zlecającego
-- nie odpytywaj w pętli `subagents list` / `sessions_list` tylko po to, aby czekać na
+- jeśli zadanie jest większe, preferuj `sessions_spawn`; zakończenie sub-agentów działa
+ w oparciu o push i jest automatycznie ogłaszane z powrotem do żądającego
+- nie odpytywuj `subagents list` / `sessions_list` w pętli tylko po to, by czekać na
zakończenie
-Gdy eksperymentalne narzędzie `update_plan` jest włączone, sekcja Narzędzia mówi również
-modelowi, aby używał go tylko do nietrywialnej pracy wieloetapowej, utrzymywał dokładnie jeden krok
-`in_progress` i unikał powtarzania całego planu po każdej aktualizacji.
+Gdy eksperymentalne narzędzie `update_plan` jest włączone, Tooling informuje również model,
+aby używać go tylko do nietrywialnej pracy wieloetapowej, utrzymywać dokładnie jeden krok
+`in_progress` i unikać powtarzania całego planu po każdej aktualizacji.
-Zabezpieczenia bezpieczeństwa w prompcie systemowym mają charakter doradczy. Kierują zachowaniem modelu, ale nie egzekwują zasad. Do twardego egzekwowania używaj polityki narzędzi, zatwierdzeń exec, sandboxingu i list dozwolonych kanałów; operatorzy mogą je celowo wyłączyć.
+Zabezpieczenia bezpieczeństwa w prompcie systemowym mają charakter doradczy. Kierują zachowaniem modelu, ale nie wymuszają polityki. Do twardego egzekwowania używaj polityki narzędzi, zatwierdzeń exec, sandboxingu i list dozwolonych kanałów; operatorzy mogą je celowo wyłączyć.
-W kanałach z natywnymi kartami/przyciskami zatwierdzeń prompt runtime instruuje teraz
-agenta, aby najpierw polegał na tym natywnym interfejsie zatwierdzania. 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ą.
+Na kanałach z natywnymi kartami/przyciskami zatwierdzania prompt runtime informuje teraz
+agenta, aby najpierw polegał na tym natywnym interfejsie zatwierdzania. Powinien uwzględniać ręczne
+polecenie `/approve` tylko wtedy, gdy wynik narzędzia mówi, że zatwierdzenia w czacie są niedostępne lub
+ręczne zatwierdzenie jest jedyną drogą.
## Tryby promptu
-OpenClaw może renderować mniejsze prompty systemowe dla podagentów. Runtime ustawia
+OpenClaw może renderować mniejsze prompty systemowe dla sub-agentów. Runtime ustawia
`promptMode` dla każdego uruchomienia (nie jest to konfiguracja widoczna dla użytkownika):
-- `full` (domyślnie): zawiera wszystkie sekcje powyżej.
-- `minimal`: używany dla podagentów; pomija **Skills**, **Przywoływanie pamięci**, **Samodzielną aktualizację OpenClaw**, **Aliasy modeli**, **Tożsamość użytkownika**, **Tagi odpowiedzi**,
- **Wiadomości**, **Ciche odpowiedzi** i **Heartbeat**. Narzędzia, **Bezpieczeństwo**,
- Obszar roboczy, Sandbox, Bieżąca data i godzina (gdy znane), Runtime oraz wstrzyknięty
+- `full` (domyślnie): zawiera wszystkie powyższe sekcje.
+- `minimal`: używany dla sub-agentów; pomija **Skills**, **Memory Recall**, **OpenClaw
+ Self-Update**, **Model Aliases**, **User Identity**, **Reply Tags**,
+ **Messaging**, **Silent Replies** i **Heartbeats**. Tooling, **Safety**,
+ Workspace, Sandbox, Current Date & Time (gdy znane), Runtime i wstrzyknięty
kontekst pozostają dostępne.
-- `none`: zwraca tylko bazową linię tożsamości.
+- `none`: zwraca tylko podstawową linię tożsamości.
-Gdy `promptMode=minimal`, dodatkowe wstrzyknięte prompty są oznaczane jako **Kontekst
-podagenta** zamiast **Kontekst czatu grupowego**.
+Gdy `promptMode=minimal`, dodatkowe wstrzyknięte prompty są oznaczane jako **Subagent
+Context** zamiast **Group Chat Context**.
-## Wstrzykiwanie bootstrapu obszaru roboczego
+## Wstrzykiwanie bootstrapu przestrzeni roboczej
-Pliki bootstrapu są przycinane i dołączane w sekcji **Kontekst projektu**, aby model widział kontekst tożsamości i profilu bez potrzeby jawnego odczytu:
+Pliki bootstrap są przycinane i dołączane w sekcji **Project Context**, aby model widział kontekst tożsamości i profilu bez potrzeby ich jawnego odczytu:
- `AGENTS.md`
- `SOUL.md`
@@ -106,68 +105,68 @@ Pliki bootstrapu są przycinane i dołączane w sekcji **Kontekst projektu**, ab
- `IDENTITY.md`
- `USER.md`
- `HEARTBEAT.md`
-- `BOOTSTRAP.md` (tylko w zupełnie nowych obszarach roboczych)
-- `MEMORY.md` jeśli istnieje, w przeciwnym razie `memory.md` jako zapasowy wariant małymi literami
+- `BOOTSTRAP.md` (tylko w zupełnie nowych przestrzeniach roboczych)
+- `MEMORY.md`, jeśli istnieje, w przeciwnym razie `memory.md` jako zapasowy wariant pisany małymi literami
Wszystkie te pliki są **wstrzykiwane do okna kontekstowego** przy każdej turze, chyba że
-obowiązuje bramka specyficzna dla pliku. `HEARTBEAT.md` jest pomijany przy zwykłych uruchomieniach, gdy
-Heartbeat jest wyłączony dla domyślnego agenta albo
+obowiązuje bramka specyficzna dla danego pliku. `HEARTBEAT.md` jest pomijany przy zwykłych uruchomieniach, gdy
+heartbeat jest wyłączony dla domyślnego agenta lub
`agents.defaults.heartbeat.includeSystemPromptSection` ma wartość false. Utrzymuj wstrzykiwane
pliki zwięzłe — szczególnie `MEMORY.md`, który może z czasem rosnąć i prowadzić do
nieoczekiwanie wysokiego użycia kontekstu oraz częstszej Compaction.
-> **Uwaga:** dzienne pliki `memory/*.md` **nie** są częścią zwykłego bootstrapowego
-> Kontekstu projektu. W zwykłych turach są dostępne na żądanie przez narzędzia
-> `memory_search` i `memory_get`, więc nie zajmują miejsca w oknie
-> kontekstowym, chyba że model jawnie je odczyta. Wyjątkiem są zwykłe tury `/new` i
-> `/reset`: runtime może dodać na początku ostatnią dzienną pamięć jako jednorazowy blok
+> **Uwaga:** codzienne pliki `memory/*.md` **nie** są częścią zwykłego bootstrapowego
+> Project Context. W zwykłych turach są odczytywane na żądanie przez
+> narzędzia `memory_search` i `memory_get`, więc nie liczą się do
+> okna kontekstowego, chyba że model jawnie je odczyta. Wyjątkiem są zwykłe tury `/new` i
+> `/reset`: runtime może dołączyć ostatnią codzienną pamięć jako jednorazowy blok
> kontekstu startowego dla tej pierwszej tury.
-Duże pliki są obcinane ze znacznikiem. Maksymalny rozmiar na plik jest kontrolowany przez
-`agents.defaults.bootstrapMaxChars` (domyślnie: 20000). Całkowita wstrzyknięta zawartość bootstrapu
+Duże pliki są przycinane z markerem. Maksymalny rozmiar na plik jest kontrolowany przez
+`agents.defaults.bootstrapMaxChars` (domyślnie: 20000). Łączna wstrzyknięta zawartość bootstrapu
we wszystkich plikach jest ograniczona przez `agents.defaults.bootstrapTotalMaxChars`
-(domyślnie: 150000). Brakujące pliki wstrzykują krótki znacznik brakującego pliku. Gdy dochodzi do obcięcia,
-OpenClaw może wstrzyknąć blok ostrzeżenia w Kontekście projektu; kontroluje to
+(domyślnie: 150000). Brakujące pliki wstrzykują krótki znacznik brakującego pliku. Gdy dochodzi do przycięcia,
+OpenClaw może wstrzyknąć blok ostrzeżenia w Project Context; kontroluje się to przez
`agents.defaults.bootstrapPromptTruncationWarning` (`off`, `once`, `always`;
domyślnie: `once`).
-Sesje podagentów wstrzykują tylko `AGENTS.md` i `TOOLS.md` (pozostałe pliki bootstrapu
-są odfiltrowywane, aby zachować mały kontekst podagenta).
+Sesje sub-agentów wstrzykują tylko `AGENTS.md` i `TOOLS.md` (pozostałe pliki bootstrap
+są odfiltrowywane, aby zachować mały kontekst sub-agenta).
-Wewnętrzne hooki mogą przechwycić ten krok przez `agent:bootstrap`, aby modyfikować lub zastępować
-wstrzykiwane pliki bootstrapu (na przykład zamieniając `SOUL.md` na alternatywną personę).
+Wewnętrzne hooki mogą przechwycić ten krok przez `agent:bootstrap`, aby mutować lub zastępować
+wstrzyknięte pliki bootstrap (na przykład zamieniając `SOUL.md` na alternatywną personę).
Jeśli chcesz, aby agent brzmiał mniej generycznie, zacznij od
[Przewodnika osobowości SOUL.md](/pl/concepts/soul).
-Aby sprawdzić, jaki wkład ma każdy wstrzyknięty plik (surowy vs wstrzyknięty, obcięcie oraz narzut schematu narzędzi), użyj `/context list` lub `/context detail`. Zobacz [Kontekst](/pl/concepts/context).
+Aby sprawdzić, jaki wkład ma każdy wstrzyknięty plik (surowy vs wstrzyknięty, przycięcie oraz narzut schematu narzędzi), użyj `/context list` lub `/context detail`. Zobacz [Context](/pl/concepts/context).
## Obsługa czasu
-Prompt systemowy zawiera dedykowaną sekcję **Bieżąca data i godzina**, gdy znana jest
-strefa czasowa użytkownika. Aby zachować stabilność cache promptu, zawiera ona teraz tylko
+Prompt systemowy zawiera dedykowaną sekcję **Current Date & Time**, gdy znana jest
+strefa czasowa użytkownika. Aby zachować stabilność cache promptu, zawiera teraz tylko
**strefę czasową** (bez dynamicznego zegara ani formatu czasu).
Użyj `session_status`, gdy agent potrzebuje bieżącego czasu; karta statusu
-zawiera wiersz ze znacznikiem czasu. To samo narzędzie może opcjonalnie ustawić zastąpienie modelu
-dla sesji (`model=default` je czyści).
+zawiera wiersz znacznika czasu. To samo narzędzie może opcjonalnie ustawić
+nadpisanie modelu dla sesji (`model=default` je czyści).
-Skonfiguruj za pomocą:
+Konfiguracja:
- `agents.defaults.userTimezone`
- `agents.defaults.timeFormat` (`auto` | `12` | `24`)
-Pełne szczegóły zachowania znajdziesz w [Data i czas](/pl/date-time).
+Pełne szczegóły zachowania znajdziesz w [Date & Time](/pl/date-time).
## Skills
Gdy istnieją kwalifikujące się Skills, OpenClaw wstrzykuje zwartą **listę dostępnych Skills**
-(`formatSkillsForPrompt`), która zawiera **ścieżkę do pliku** dla każdej Skills. Prompt
-instruuje model, aby użył `read` do wczytania SKILL.md w podanej lokalizacji
-(obszar roboczy, zarządzane lub dołączone). Jeśli nie ma kwalifikujących się Skills, sekcja
+(`formatSkillsForPrompt`), która zawiera **ścieżkę pliku** dla każdego Skill. Prompt
+nakazuje modelowi użyć `read`, aby wczytać SKILL.md z podanej
+lokalizacji (przestrzeń robocza, zarządzana lub dołączona). Jeśli nie ma kwalifikujących się Skills, sekcja
Skills jest pomijana.
-Kwalifikacja obejmuje bramki metadanych Skills, kontrole środowiska/runtime i konfiguracji
+Kwalifikacja obejmuje bramki metadanych Skill, kontrole środowiska runtime/konfiguracji
oraz efektywną listę dozwolonych Skills agenta, gdy skonfigurowano `agents.defaults.skills` lub
`agents.list[].skills`.
@@ -181,13 +180,26 @@ oraz efektywną listę dozwolonych Skills agenta, gdy skonfigurowano `agents.def
```
-Pozwala to zachować mały bazowy prompt, a jednocześnie nadal umożliwia ukierunkowane użycie Skills.
+Pozwala to zachować mały podstawowy prompt, a jednocześnie umożliwia ukierunkowane użycie Skills.
-## Dokumentacja
+Budżet listy Skills należy do podsystemu Skills:
-Gdy jest dostępna, prompt systemowy zawiera sekcję **Dokumentacja**, która wskazuje
-lokalny katalog dokumentacji OpenClaw (albo `docs/` w obszarze roboczym repozytorium, albo dokumentację dołączonego
-pakietu npm) i wspomina również o publicznym mirrorze, źródłowym repozytorium, społecznościowym Discordzie oraz
-ClawHub ([https://clawhub.ai](https://clawhub.ai)) do odkrywania Skills. Prompt instruuje model, aby najpierw sprawdzał lokalną dokumentację
-w sprawach zachowania OpenClaw, poleceń, konfiguracji lub architektury oraz aby
-sam uruchamiał `openclaw status`, gdy to możliwe (prosząc użytkownika tylko wtedy, gdy nie ma dostępu).
+- Globalna wartość domyślna: `skills.limits.maxSkillsPromptChars`
+- Nadpisanie dla agenta: `agents.list[].skillsLimits.maxSkillsPromptChars`
+
+Ogólne ograniczone fragmenty runtime używają innej powierzchni:
+
+- `agents.defaults.contextLimits.*`
+- `agents.list[].contextLimits.*`
+
+Ten podział utrzymuje rozmiar Skills oddzielnie od rozmiaru odczytu/wstrzykiwania runtime, takiego jak
+`memory_get`, wyniki narzędzi na żywo i odświeżenia AGENTS.md po Compaction.
+
+## Documentation
+
+Gdy to możliwe, prompt systemowy zawiera sekcję **Documentation**, która wskazuje
+lokalny katalog dokumentacji OpenClaw (albo `docs/` w przestrzeni roboczej repozytorium, albo dokumentację
+dołączonego pakietu npm) oraz wspomina też o publicznym mirrorze, repozytorium źródłowym, społecznościowym Discordzie i
+ClawHub ([https://clawhub.ai](https://clawhub.ai)) do odkrywania Skills. Prompt instruuje model, aby najpierw konsultował lokalną dokumentację
+w sprawach zachowania, poleceń, konfiguracji lub architektury OpenClaw oraz aby
+samodzielnie uruchamiał `openclaw status`, kiedy to możliwe (prosząc użytkownika tylko wtedy, gdy nie ma dostępu).
diff --git a/docs/pl/gateway/configuration-reference.md b/docs/pl/gateway/configuration-reference.md
index d27c2a90b..2549c3527 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łów, modeli, Gateway lub narzędzi
-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
+ - Potrzebujesz dokładnej semantyki pól konfiguracji lub wartości domyślnych.
+ - Weryfikujesz bloki konfiguracji kanału, modelu, Gateway lub narzędzia.
+summary: Dokumentacja konfiguracji Gateway dla podstawowych kluczy OpenClaw, wartości domyślnych i odnośników do dedykowanych dokumentacji podsystemów
+title: Dokumentacja konfiguracji
x-i18n:
- generated_at: "2026-04-15T14:40:34Z"
+ generated_at: "2026-04-15T19:41:43Z"
model: gpt-5.4
provider: openai
- source_hash: 7a4da3b41d0304389bd6359aac1185c231e529781b607656ab352f8a8104bdba
+ source_hash: 2bdb0f3e56e4a4d767fb4d6150526ae9b3926ef5b213b458001f41d02762436d
source_path: gateway/configuration-reference.md
workflow: 15
---
-# Odwołanie do konfiguracji
+# Dokumentacja konfiguracji
-Podstawowe odwołanie do konfiguracji `~/.openclaw/openclaw.json`. Aby zobaczyć omówienie zorientowane na zadania, przejdź do [Configuration](/pl/gateway/configuration).
+Podstawowa dokumentacja 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/Plugin ani każdego szczegółowego pokrętła pamięci/QMD.
+Ta strona obejmuje główne powierzchnie konfiguracji OpenClaw i odsyła dalej, gdy podsystem ma własną, bardziej szczegółową dokumentację. **Nie** próbuje umieszczać na jednej stronie każdego katalogu poleceń należącego do kanału/Plugin ani każdego zaawansowanego ustawienia pamięci/QMD.
Źródło prawdy w kodzie:
-- `openclaw config schema` wypisuje aktualny schemat JSON używany do walidacji i interfejsu Control UI, z dołączonymi metadanymi bundled/plugin/channel, gdy są dostępne
-- `config.schema.lookup` zwraca jeden węzeł schematu ograniczony do ścieżki dla narzędzi do szczegółowej eksploracji
-- `pnpm config:docs:check` / `pnpm config:docs:gen` walidują skrót bazowy dokumentacji konfiguracji względem bieżącej powierzchni schematu
+- `openclaw config schema` wypisuje bieżący schemat JSON używany do walidacji i Control UI, z dołączonymi metadanymi bundled/Plugin/kanałów, gdy są dostępne
+- `config.schema.lookup` zwraca jeden węzeł schematu o zakresie jednej ścieżki dla narzędzi do szczegółowej analizy
+- `pnpm config:docs:check` / `pnpm config:docs:gen` weryfikują hash bazowy dokumentacji konfiguracji względem bieżącej powierzchni schematu
-Dedykowane szczegółowe odwołania:
+Dedykowane szczegółowe dokumentacje:
-- [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`
-- [Slash Commands](/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łów
+- [Dokumentacja 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`
+- [Slash Commands](/pl/tools/slash-commands) dla bieżącego katalogu wbudowanych + bundled poleceń
+- strony właścicieli kanałów/Pluginów dla powierzchni poleceń specyficznych dla kanału
-Format konfiguracji to **JSON5** (dozwolone komentarze i końcowe przecinki). Wszystkie pola są opcjonalne — OpenClaw używa bezpiecznych wartości domyślnych, gdy zostaną pominięte.
+Format konfiguracji to **JSON5** (dozwolone komentarze i końcowe przecinki). Wszystkie pola są opcjonalne — OpenClaw używa bezpiecznych wartości domyślnych, gdy są 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 |
| -------------------- | -------------------------------------------------------------- |
| `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 |
+| `open` | Zezwala na wszystkie przychodzące DM (wymaga `allowFrom: ["*"]`) |
+| `disabled` | Ignoruje wszystkie przychodzące DM |
-| Zasada grup | Zachowanie |
-| -------------------- | ---------------------------------------------------- |
+| Zasada grup | Zachowanie |
+| -------------------- | ------------------------------------------------------ |
| `allowlist` (domyślna) | Tylko grupy pasujące do skonfigurowanej listy dozwolonych |
-| `open` | Pomijaj listy dozwolonych grup (nadal obowiązuje ograniczanie przez wzmianki) |
-| `disabled` | Blokuj wszystkie wiadomości grupowe/pokojów |
+| `open` | Pomija listy dozwolonych grup (nadal obowiązuje wymaganie wzmianki) |
+| `disabled` | Blokuje wszystkie wiadomości grupowe/pokojowe |
`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 jest całkowicie nieobecny (`channels.` nie istnieje), zasada grup w czasie działania wraca do `allowlist` (fail-closed) z ostrzeżeniem przy uruchomieniu.
+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 uruchamianiu.
-### Nadpisania modelu dla kanałów
+### Nadpisania modeli dla kanałów
-Użyj `channels.modelByChannel`, aby przypiąć określone identyfikatory kanałów do modelu. Wartości akceptują `provider/model` lub skonfigurowane aliasy modeli. Mapowanie kanałów jest stosowane, 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łów ma zastosowanie wtedy, 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ł
}
```
-### Wartości domyślne kanałów i Heartbeat
+### Domyślne ustawienia kanałów i Heartbeat
-Użyj `channels.defaults` dla współdzielonych zasad grup i zachowania Heartbeat między dostawcami:
+Użyj `channels.defaults` dla współdzielonych zasad grup i zachowania Heartbeat we wszystkich dostawcach:
```json5
{
@@ -106,14 +106,14 @@ Użyj `channels.defaults` dla współdzielonych zasad grup i zachowania Heartbea
```
- `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ędniaj zdrowe statusy kanałów w wyjściu Heartbeat.
-- `channels.defaults.heartbeat.showAlerts`: uwzględniaj statusy pogorszone/błędów w wyjściu Heartbeat.
-- `channels.defaults.heartbeat.useIndicator`: renderuj zwarte wyjście Heartbeat w stylu wskaźnika.
+- `channels.defaults.contextVisibility`: domyślny tryb widoczności dodatkowego kontekstu dla wszystkich kanałów. Wartości: `all` (domyślna, uwzględnia cały kontekst cytatu/wątku/historii), `allowlist` (uwzględnia tylko kontekst od nadawców z listy dozwolonych), `allowlist_quote` (tak samo jak allowlist, ale zachowuje jawny kontekst cytatu/odpowiedzi). Nadpisanie per kanał: `channels..contextVisibility`.
+- `channels.defaults.heartbeat.showOk`: uwzględnia zdrowe stany kanałów w wyjściu Heartbeat.
+- `channels.defaults.heartbeat.showAlerts`: uwzględnia stany pogorszone/błędów w wyjściu Heartbeat.
+- `channels.defaults.heartbeat.useIndicator`: renderuje kompaktowe wyjście 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, // niebieskie znaczniki (false w trybie czatu do siebie)
+ sendReadReceipts: true, // blue ticks (false in self-chat mode)
groups: {
"*": { requireMention: true },
},
@@ -146,7 +146,7 @@ WhatsApp działa przez kanał web Gateway (`Baileys Web`). Uruchamia się automa
}
```
-
+
```json5
{
@@ -165,8 +165,8 @@ 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.
-- Starszy katalog uwierzytelniania Baileys dla jednego konta jest migrowany przez `openclaw doctor` do `whatsapp/default`.
+- Opcjonalne `channels.whatsapp.defaultAccount` nadpisuje ten zapasowy wybór konta domyślnego, jeśli pasuje do skonfigurowanego identyfikatora 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`.
@@ -225,12 +225,12 @@ 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 zapasową wartością dla konta domyślnego.
-- Opcjonalne `channels.telegram.defaultAccount` nadpisuje wybór domyślnego konta, gdy pasuje do skonfigurowanego identyfikatora konta.
-- W konfiguracjach wielokontowych (2+ identyfikatory kont) ustaw jawnie 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.
+- 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, jeśli pasuje do skonfigurowanego identyfikatora konta.
+- W konfiguracjach z wieloma kontami (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 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 forów (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 strumieni w Telegramie używają `sendMessage` + `editMessageText` (działa w czatach bezpośrednich i grupowych).
+- 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 z [ACP Agents](/pl/tools/acp-agents#channel-specific-settings).
+- Podglądy strumieniowe Telegram używają `sendMessage` + `editMessageText` (działa w czatach bezpośrednich i grupowych).
- Zasady ponawiania: zobacz [Retry policy](/pl/concepts/retry).
### Discord
@@ -334,35 +334,35 @@ 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 do 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.
+- Bezpośrednie wywołania wychodzące, które przekazują jawny `token` Discorda, używają tego tokena do wywołania; ustawienia ponawiania/zasad konta nadal pochodzą z wybranego konta w aktywnej migawce środowiska uruchomieniowego.
+- Opcjonalne `channels.discord.defaultAccount` nadpisuje wybór konta domyślnego, jeśli pasuje do skonfigurowanego identyfikatora konta.
- Używaj `user:` (DM) lub `channel:` (kanał serwera) jako celów dostarczenia; 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 postaci sluga (bez `#`). Preferuj identyfikatory serwerów.
+- Slugi serwerów są pisane małymi literami, a spacje są zastępowane przez `-`; klucze kanałów używają nazwy w postaci slugu (bez `#`). Preferuj identyfikatory serwerów.
- Wiadomości napisane 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łów) odrzuca wiadomości, które wspominają innego użytkownika lub rolę, ale nie bota (z wyłączeniem @everyone/@here).
+- `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).
- `maxLinesPerMessage` (domyślnie 17) dzieli wysokie wiadomości nawet wtedy, gdy mają mniej niż 2000 znaków.
-- `channels.discord.threadBindings` kontroluje routowanie powiązane 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 odpinania po bezczynności w godzinach (`0` wyłącza)
+- `channels.discord.threadBindings` steruje routowaniem związanym z wątkami Discorda:
+ - `enabled`: nadpisanie Discorda dla funkcji sesji związanych z wątkami (`/focus`, `/unfocus`, `/agents`, `/session idle`, `/session max-age` oraz dostarczanie/routowanie związane z powiązaniem)
+ - `idleHours`: nadpisanie Discorda dla automatycznego zdejmowania fokusu 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 })`
-- 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 Discord components v2.
+ - `spawnSubagentSessions`: przełącznik opt-in dla automatycznego tworzenia/powiązania wątków 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 z [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 i 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 i ponowne dołączenie do sesji głosowej po powtarzających się błędach deszyfrowania.
-- `channels.discord.streaming` to kanoniczny klucz trybu strumieniowania. Starsze wartości `streamMode` i logiczne `streaming` są automatycznie migrowane.
-- `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.dangerouslyAllowNameMatching` ponownie włącza dopasowywanie po zmiennej nazwie/tagu (tryb kompatybilności break-glass).
+- `channels.discord.voice.daveEncryption` oraz `channels.discord.voice.decryptionFailureTolerance` są przekazywane do opcji DAVE `@discordjs/voice` (`true` i `24` domyślnie).
+- OpenClaw dodatkowo próbuje odzyskać odbiór głosu przez opuszczenie i ponowne dołączenie do sesji głosowej po powtarzających się błędach odszyfrowywania.
+- `channels.discord.streaming` jest kanonicznym kluczem trybu strumieniowania. Starsze wartości `streamMode` i logiczne `streaming` są automatycznie migrowane.
+- `channels.discord.autoPresence` mapuje dostępność środowiska uruchomieniowego na status obecności 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 (awaryjny tryb zgodności).
- `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 zatwierdzający mogą zostać rozwiązani z `approvers` lub `commands.ownerAllowFrom`.
- - `approvers`: identyfikatory użytkowników Discorda uprawnionych do zatwierdzania żądań exec. Gdy pominięte, używana jest wartość zapasowa z `commands.ownerAllowFrom`.
+ - `enabled`: `true`, `false` lub `"auto"` (domyślnie). W trybie auto zatwierdzenia exec aktywują się, gdy zatwierdzających można rozwiązać z `approvers` lub `commands.ownerAllowFrom`.
+ - `approvers`: identyfikatory użytkowników Discorda, którym wolno zatwierdzać żądania exec. Gdy pominięte, używa wartości zapasowej z `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ć monity 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 zatwierdzeń po zatwierdzeniu, odrzuceniu lub przekroczeniu limitu czasu.
+ - `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"`, przycisków mogą używać tylko rozwiązani zatwierdzający.
+ - `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).
+**Tryby powiadomień o reakcjach:** `off` (brak), `own` (wiadomości bota, domyślnie), `all` (wszystkie wiadomości), `allowlist` (od `guilds..users` dla wszystkich wiadomości).
### Google Chat
@@ -393,11 +393,11 @@ WhatsApp działa przez kanał web Gateway (`Baileys Web`). Uruchamia się automa
}
```
-- JSON konta usługi: osadzone (`serviceAccount`) lub oparte na pliku (`serviceAccountFile`).
+- JSON konta usługi: osadzony (`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`.
+- Wartości zapasowe ze środowiska: `GOOGLE_CHAT_SERVICE_ACCOUNT` lub `GOOGLE_CHAT_SERVICE_ACCOUNT_FILE`.
- Używaj `spaces/` lub `users/` jako celów dostarczenia.
-- `channels.googlechat.dangerouslyAllowNameMatching` ponownie włącza dopasowywanie po zmiennym principalu e-mail (tryb kompatybilności break-glass).
+- `channels.googlechat.dangerouslyAllowNameMatching` ponownie włącza dopasowywanie po zmiennym adresie e-mail principal (awaryjny tryb zgodności).
### Slack
@@ -464,34 +464,29 @@ 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 zmienne ś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 znaków albo obiekty SecretRef.
-- Migawki kont Slacka udostępniają pola źródła/statusu per poświadczenie, takie jak
- `botTokenSource`, `botTokenStatus`, `appTokenStatus`, a w trybie HTTP także
- `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.
+- **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` (w korzeniu lub per konto).
+- `botToken`, `appToken`, `signingSecret` i `userToken` akceptują jawne ciągi znaków lub obiekty SecretRef.
+- Migawki kont Slacka 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 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` kontroluje natywny transport strumieniowania Slacka. Starsze wartości `streamMode`, logiczne `streaming` i `nativeStreaming` są automatycznie migrowane.
+- Opcjonalne `channels.slack.defaultAccount` nadpisuje wybór konta domyślnego, jeśli pasuje do skonfigurowanego identyfikatora konta.
+- `channels.slack.streaming.mode` jest kanonicznym kluczem trybu strumieniowania Slacka. `channels.slack.streaming.nativeTransport` kontroluje natywny transport strumieniowania Slacka. Starsze wartości `streamMode`, logiczne `streaming` i `nativeStreaming` są automatycznie migrowane.
- Używaj `user:` (DM) lub `channel:` jako celów dostarczenia.
**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ółdzielone w obrębie kanału. `thread.inheritParent` kopiuje transkrypt kanału nadrzędnego do nowych wątków.
+**Izolacja sesji wątków:** `thread.historyScope` jest per wątek (domyślnie) lub współdzielone w całym kanale. `thread.inheritParent` kopiuje transkrypt kanału nadrzędnego do nowych wątków.
-- Natywne strumieniowanie Slacka oraz status wątku Slacka w stylu asystenta „is typing...” wymagają celu odpowiedzi w wątku. DM najwyższego poziomu domyślnie pozostają poza wątkiem, więc używają `typingReaction` lub normalnego dostarczania zamiast podglądu w stylu wątku.
-- `typingReaction` dodaje tymczasową reakcję do przychodzącej wiadomości Slacka podczas tworzenia odpowiedzi, a następnie usuwa ją po zakończeniu. Użyj skrótu 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` oraz `target` (`"dm"`, `"channel"` lub `"both"`).
+- Natywne strumieniowanie Slacka oraz status w stylu asystenta Slacka „is typing...” w wątku wymagają celu odpowiedzi będącego wątkiem. 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 Slacka, gdy odpowiedź jest w trakcie generowania, a następnie usuwa ją po zakończeniu. Użyj skrótu 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"`).
-| Grupa akcji | Domyślnie | Uwagi |
-| ----------- | --------- | ------------------------- |
+| 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 |
+| memberInfo | włączone | Informacje o członku |
| emojiList | włączone | Lista niestandardowych emoji |
### Mattermost
@@ -526,23 +521,18 @@ Mattermost jest dostarczany jako Plugin: `openclaw plugins install @openclaw/mat
}
```
-Tryby czatu: `oncall` (odpowiada na wzmiankę @, domyślnie), `onmessage` (na każdą wiadomość), `onchar` (wiadomości zaczynające się od prefiksu wyzwalacza).
+Tryby czatu: `oncall` (odpowiada na wzmiankę @, domyślnie), `onmessage` (każda wiadomość), `onchar` (wiadomości zaczynające się od prefiksu wyzwalacza).
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 slash callback są uwierzytelniane za pomocą tokenów per polecenie zwracanych
- przez Mattermost podczas rejestracji polecenia slash. Jeśli rejestracja się nie powiedzie lub nie
- zostaną aktywowane żadne polecenia, 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 z Mattermost.
-- `channels.mattermost.requireMention`: wymagaj `@mention` przed odpowiedzią na kanałach.
-- `channels.mattermost.groups..requireMention`: nadpisanie ograniczania przez wzmianki per kanał (`"*"` dla wartości domyślnej).
-- Opcjonalne `channels.mattermost.defaultAccount` nadpisuje wybór konta domyślnego, gdy pasuje do skonfigurowanego identyfikatora konta.
+- `commands.callbackPath` musi być ścieżką (na przykład `/api/channels/mattermost/command`), a nie pełnym URL-em.
+- `commands.callbackUrl` musi wskazywać na punkt końcowy Gateway OpenClaw i być osiągalny z serwera Mattermost.
+- Natywne wywołania zwrotne slash są uwierzytelniane tokenami per polecenie zwracanymi przez Mattermost podczas rejestracji poleceń slash. Jeśli rejestracja się nie powiedzie lub żadne polecenia nie zostaną aktywowane, OpenClaw odrzuci wywołania zwrotne 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 hosta/domeny, a nie pełnych URL-i.
+- `channels.mattermost.configWrites`: zezwala lub zabrania zapisów konfiguracji inicjowanych z Mattermost.
+- `channels.mattermost.requireMention`: wymaga `@mention` przed odpowiedzią w kanałach.
+- `channels.mattermost.groups..requireMention`: nadpisanie wymagania wzmianki per kanał (`"*"` dla wartości domyślnej).
+- Opcjonalne `channels.mattermost.defaultAccount` nadpisuje wybór konta domyślnego, jeśli pasuje do skonfigurowanego identyfikatora konta.
### Signal
@@ -551,7 +541,7 @@ Gdy natywne polecenia Mattermost są włączone:
channels: {
signal: {
enabled: true,
- account: "+15555550123", // opcjonalne powiązanie konta
+ account: "+15555550123", // optional account binding
dmPolicy: "pairing",
allowFrom: ["+15551234567", "uuid:123e4567-e89b-12d3-a456-426614174000"],
configWrites: true,
@@ -565,13 +555,13 @@ Gdy natywne polecenia Mattermost są włączone:
**Tryby powiadomień o reakcjach:** `off`, `own` (domyślnie), `all`, `allowlist` (z `reactionAllowlist`).
-- `channels.signal.account`: przypnij uruchamianie kanału do określonej tożsamości konta Signal.
-- `channels.signal.configWrites`: zezwalaj lub zabraniaj zapisów konfiguracji inicjowanych z Signal.
-- Opcjonalne `channels.signal.defaultAccount` nadpisuje wybór konta domyślnego, gdy pasuje do skonfigurowanego identyfikatora konta.
+- `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 z Signal.
+- Opcjonalne `channels.signal.defaultAccount` nadpisuje wybór konta domyślnego, jeśli pasuje do skonfigurowanego identyfikatora konta.
### BlueBubbles
-BlueBubbles to zalecana ścieżka iMessage (oparta na Pluginie, konfigurowana w `channels.bluebubbles`).
+BlueBubbles to zalecana ścieżka dla iMessage (oparta na Plugin, konfigurowana w `channels.bluebubbles`).
```json5
{
@@ -586,14 +576,14 @@ BlueBubbles to zalecana ścieżka iMessage (oparta na Pluginie, konfigurowana w
}
```
-- Uwzględnione tutaj podstawowe ścieżki kluczy: `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).
-- Pełna konfiguracja kanału BlueBubbles jest udokumentowana w [BlueBubbles](/pl/channels/bluebubbles).
+- Główne ścieżki kluczy omawiane tutaj: `channels.bluebubbles`, `channels.bluebubbles.dmPolicy`.
+- Opcjonalne `channels.bluebubbles.defaultAccount` nadpisuje wybór konta domyślnego, jeśli pasuje do skonfigurowanego identyfikatora konta.
+- Wpisy najwyższego poziomu `bindings[]` z `type: "acp"` mogą wiązać rozmowy 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 opisana w [BlueBubbles](/pl/channels/bluebubbles).
### iMessage
-OpenClaw uruchamia `imsg rpc` (JSON-RPC przez stdio). Nie jest wymagany demon ani port.
+OpenClaw uruchamia `imsg rpc` (JSON-RPC przez stdio). Nie jest wymagany daemon ani port.
```json5
{
@@ -617,15 +607,15 @@ OpenClaw uruchamia `imsg rpc` (JSON-RPC przez stdio). Nie jest wymagany demon an
}
```
-- Opcjonalne `channels.imessage.defaultAccount` nadpisuje wybór konta domyślnego, gdy pasuje do skonfigurowanego identyfikatora konta.
+- Opcjonalne `channels.imessage.defaultAccount` nadpisuje wybór konta domyślnego, jeśli pasuje do skonfigurowanego identyfikatora konta.
- Wymaga Full Disk Access do bazy danych Messages.
- Preferuj cele `chat_id:`. Użyj `imsg chats --limit 20`, aby wyświetlić listę czatów.
-- `cliPath` może wskazywać na wrapper SSH; ustaw `remoteHost` (`host` lub `user@host`) do pobierania załączników przez SCP.
+- `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 przychodzących załączników (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 z 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`: zezwala lub zabrania zapisów konfiguracji inicjowanych z iMessage.
+- Wpisy najwyższego poziomu `bindings[]` z `type: "acp"` mogą wiązać rozmowy 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).
@@ -638,7 +628,7 @@ exec ssh -T gateway-host imsg "$@"
### Matrix
-Matrix jest obsługiwany przez rozszerzenie i konfigurowany w `channels.matrix`.
+Matrix jest wspierany przez rozszerzenie i konfigurowany w `channels.matrix`.
```json5
{
@@ -669,24 +659,24 @@ Matrix jest obsługiwany przez rozszerzenie i konfigurowany w `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 nadpisać przez `channels.matrix.accounts..proxy`.
-- `channels.matrix.network.dangerouslyAllowPrivateNetwork` zezwala na prywatne/wewnętrzne homeservery. `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` albo `autoJoin: "always"`.
+- `channels.matrix.proxy` kieruje ruch HTTP Matrix przez jawny serwer proxy HTTP(S). Nazwane konta mogą to nadpisać przez `channels.matrix.accounts..proxy`.
+- `channels.matrix.network.dangerouslyAllowPrivateNetwork` zezwala na prywatne/wewnętrzne homeservery. `proxy` i to sieciowe opt-in są niezależnymi mechanizmami kontroli.
+- `channels.matrix.defaultAccount` wybiera preferowane konto w konfiguracjach z wieloma kontami.
+- `channels.matrix.autoJoin` domyślnie ma wartość `off`, więc zaproszone pokoje i nowe zaproszenia w stylu DM są ignorowane, dopóki nie ustawisz `autoJoin: "allowlist"` z `autoJoinAllowlist` albo `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 zatwierdzający mogą zostać rozwiązani z `approvers` lub `commands.ownerAllowFrom`.
- - `approvers`: identyfikatory użytkowników Matrix (np. `@owner:example.org`) uprawnionych do zatwierdzania żądań exec.
+ - `enabled`: `true`, `false` lub `"auto"` (domyślnie). W trybie auto zatwierdzenia exec aktywują się, gdy zatwierdzających można rozwiązać 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ć monity o zatwierdzenie. `"dm"` (domyślnie), `"channel"` (pokój źródłowy) lub `"both"`.
+ - `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` kontroluje, jak DM Matrix są grupowane 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 katalogu na żywo używają tej samej polityki proxy co ruch runtime.
-- Pełna konfiguracja Matrix, reguły kierowania i przykłady konfiguracji są udokumentowane w [Matrix](/pl/channels/matrix).
+- `channels.matrix.dm.sessionScope` kontroluje, jak DM Matrix są grupowane w sesje: `per-user` (domyślnie) współdzieli według kierowanego peera, a `per-room` izoluje każdy pokój DM.
+- Sondy statusu Matrix i wyszukiwania w katalogu na żywo używają tej samej polityki proxy co ruch środowiska uruchomieniowego.
+- Pełna konfiguracja Matrix, reguły targetowania i przykłady konfiguracji są opisane w [Matrix](/pl/channels/matrix).
### Microsoft Teams
-Microsoft Teams jest obsługiwany przez rozszerzenie i konfigurowany w `channels.msteams`.
+Microsoft Teams jest wspierany przez rozszerzenie i konfigurowany w `channels.msteams`.
```json5
{
@@ -701,12 +691,12 @@ Microsoft Teams jest obsługiwany przez rozszerzenie i konfigurowany w `channels
}
```
-- Uwzględnione tutaj podstawowe ścieżki kluczy: `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).
+- Główne ścieżki kluczy omawiane tutaj: `channels.msteams`, `channels.msteams.configWrites`.
+- Pełna konfiguracja Teams (poświadczenia, webhook, zasady DM/grup, nadpisania per zespół/per kanał) jest opisana w [Microsoft Teams](/pl/channels/msteams).
### IRC
-IRC jest obsługiwany przez rozszerzenie i konfigurowany w `channels.irc`.
+IRC jest wspierany przez rozszerzenie i konfigurowany w `channels.irc`.
```json5
{
@@ -727,9 +717,9 @@ IRC jest obsługiwany przez rozszerzenie i konfigurowany w `channels.irc`.
}
```
-- Uwzględnione tutaj podstawowe ścieżki kluczy: `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/ograniczanie przez wzmianki) jest udokumentowana w [IRC](/pl/channels/irc).
+- Główne ścieżki kluczy omawiane tutaj: `channels.irc`, `channels.irc.dmPolicy`, `channels.irc.configWrites`, `channels.irc.nickserv.*`.
+- Opcjonalne `channels.irc.defaultAccount` nadpisuje wybór konta domyślnego, jeśli pasuje do skonfigurowanego identyfikatora konta.
+- Pełna konfiguracja kanału IRC (host/port/TLS/kanały/listy dozwolonych/wymaganie wzmianki) jest opisana w [IRC](/pl/channels/irc).
### Wiele kont (wszystkie kanały)
@@ -754,28 +744,28 @@ Uruchamiaj wiele kont na kanał (każde z własnym `accountId`):
}
```
-- `default` jest używane, gdy `accountId` zostanie pominięte (CLI + routing).
+- `default` jest używane, gdy `accountId` jest pominięte (CLI + routing).
- Tokeny środowiskowe mają zastosowanie tylko do konta **default**.
-- Podstawowe ustawienia kanału mają zastosowanie do wszystkich kont, chyba że zostaną nadpisane per konto.
+- 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), pozostając nadal przy jednokontowej konfiguracji kanału na poziomie głównym, OpenClaw najpierw promuje wartości najwyższego poziomu przypisane do pojedynczego 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 zakresowane do konta pozostają opcjonalne.
-- `openclaw doctor --fix` również naprawia mieszane kształty, przenosząc wartości najwyższego poziomu przypisane do pojedynczego 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żywasz jednokontowej konfiguracji najwyższego poziomu dla kanału, OpenClaw najpierw promuje jednokontowe wartości najwyższego poziomu 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 dopasowują się do konta domyślnego; powiązania o zakresie konta pozostają opcjonalne.
+- `openclaw doctor --fix` również naprawia mieszane kształty, przenosząc jednokontowe wartości najwyższego poziomu 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.
### Inne kanały rozszerzeń
-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).
+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).
Zobacz pełny indeks kanałów: [Channels](/pl/channels).
-### Ograniczanie odpowiedzi w czatach grupowych przez wzmianki
+### Wymaganie wzmianki w czatach grupowych
-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.
+Wiadomości grupowe domyślnie **wymagają wzmianki** (wzmianka z 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 do siebie w WhatsApp.
+- **Wzmianki z metadanych**: natywne wzmianki @ platformy. Ignorowane w trybie self-chat WhatsApp.
- **Wzorce tekstowe**: bezpieczne wzorce regex w `agents.list[].groupChat.mentionPatterns`. Nieprawidłowe wzorce i niebezpieczne zagnieżdżone powtórzenia są ignorowane.
-- Ograniczanie przez wzmianki jest wymuszane tylko wtedy, gdy wykrycie jest możliwe (natywne wzmianki lub co najmniej jeden wzorzec).
+- Wymaganie wzmianki jest egzekwowane tylko wtedy, gdy wykrycie jest możliwe (natywne wzmianki lub co najmniej jeden wzorzec).
```json5
{
@@ -788,7 +778,7 @@ Wiadomości grupowe domyślnie **wymagają wzmianki** (wzmianka w metadanych lub
}
```
-`messages.groupChat.historyLimit` ustawia globalną wartość domyślną. Kanały mogą ją nadpisywać przez `channels..historyLimit` (lub per konto). Ustaw `0`, aby wyłączyć.
+`messages.groupChat.historyLimit` ustawia globalną wartość domyślną. Kanały mogą ją nadpisać przez `channels..historyLimit` (lub per konto). Ustaw `0`, aby wyłączyć.
#### Limity historii DM
@@ -805,13 +795,13 @@ Wiadomości grupowe domyślnie **wymagają wzmianki** (wzmianka w metadanych lub
}
```
-Rozwiązywanie: nadpisanie per DM → wartość domyślna dostawcy → brak limitu (zachowywane wszystko).
+Rozwiązywanie: nadpisanie per DM → domyślna wartość dostawcy → brak limitu (zachowywane wszystko).
Obsługiwane: `telegram`, `whatsapp`, `discord`, `slack`, `signal`, `imessage`, `msteams`.
-#### Tryb czatu do siebie
+#### Tryb self-chat
-Uwzględnij własny numer w `allowFrom`, aby włączyć tryb czatu do siebie (ignoruje natywne wzmianki @, odpowiada tylko na wzorce tekstowe):
+Uwzględnij własny numer w `allowFrom`, aby włączyć tryb self-chat (ignoruje natywne wzmianki @, odpowiada tylko na wzorce tekstowe):
```json5
{
@@ -861,38 +851,38 @@ Uwzględnij własny numer w `allowFrom`, aby włączyć tryb czatu do siebie (ig
-- Ten blok konfiguruje powierzchnie poleceń. Aktualny katalog poleceń wbudowanych + bundled znajdziesz w [Slash Commands](/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 [Slash Commands](/pl/tools/slash-commands).
+- Ten blok konfiguruje powierzchnie poleceń. Bieżący katalog wbudowanych + bundled poleceń znajdziesz w [Slash Commands](/pl/tools/slash-commands).
+- Ta strona jest **dokumentacją 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ą opisane na stronach ich kanałów/Pluginów oraz w [Slash Commands](/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.
- Nadpisanie per kanał: `channels.discord.commands.native` (bool lub `"auto"`). `false` czyści wcześniej zarejestrowane polecenia.
- Nadpisz rejestrację natywnych Skills per kanał przez `channels..commands.nativeSkills`.
-- `channels.telegram.customCommands` dodaje dodatkowe wpisy menu bota Telegrama.
+- `channels.telegram.customCommands` dodaje dodatkowe wpisy 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 konfiguracji serwera MCP zarządzanego przez OpenClaw w `mcp.servers`.
-- `plugins: true` włącza `/plugins` dla wykrywania Pluginów, instalacji oraz sterowania włączaniem/wyłączaniem.
-- `channels..configWrites` steruje mutacjami konfiguracji per kanał (domyślnie: true).
-- Dla kanałów wielokontowych `channels..accounts..configWrites` steruje także zapisami, które dotyczą tego konta (na przykład `/allowlist --config --account ` lub `/config set channels..accounts....`).
+- `mcp: true` włącza `/mcp` dla zarządzanej przez OpenClaw konfiguracji serwera MCP w `mcp.servers`.
+- `plugins: true` włącza `/plugins` do wykrywania Pluginów, instalacji oraz sterowania włączaniem/wyłączaniem.
+- `channels..configWrites` ogranicza mutacje konfiguracji per kanał (domyślnie: true).
+- Dla kanałów z wieloma kontami `channels..accounts..configWrites` również ogranicza 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ściciela dla poleceń/narzędzi tylko dla właściciela. Jest oddzielna od `allowFrom`.
-- `ownerDisplay: "hash"` haszuje identyfikatory właścicieli w system prompt. Ustaw `ownerDisplaySecret`, aby kontrolować haszowanie.
-- `allowFrom` jest per dostawca. Gdy jest ustawione, jest **jedynym** źródłem autoryzacji (listy dozwolonych/parowanie kanałów i `useAccessGroups` są ignorowane).
+- `ownerDisplay: "hash"` hashuje 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 i `useAccessGroups` są ignorowane).
- `useAccessGroups: false` pozwala poleceniom omijać zasady grup dostępu, gdy `allowFrom` nie jest ustawione.
- Mapa dokumentacji poleceń:
- - katalog wbudowany + bundled: [Slash Commands](/pl/tools/slash-commands)
- - powierzchnie poleceń specyficzne dla kanałów: [Channels](/pl/channels)
+ - katalog wbudowanych + bundled: [Slash Commands](/pl/tools/slash-commands)
+ - powierzchnie poleceń specyficzne dla kanału: [Channels](/pl/channels)
- polecenia QQ Bot: [QQ Bot](/pl/channels/qqbot)
- polecenia parowania: [Pairing](/pl/channels/pairing)
- polecenie karty LINE: [LINE](/pl/channels/line)
- - memory dreaming: [Dreaming](/pl/concepts/dreaming)
+ - memory Dreaming: [Dreaming](/pl/concepts/dreaming)
---
-## Wartości domyślne agenta
+## Domyślne ustawienia agenta
### `agents.defaults.workspace`
@@ -906,7 +896,7 @@ Domyślnie: `~/.openclaw/workspace`.
### `agents.defaults.repoRoot`
-Opcjonalny katalog główny repozytorium wyświetlany w wierszu Runtime system prompt. Jeśli nie jest ustawiony, OpenClaw wykrywa go automatycznie, przechodząc w górę od obszaru roboczego.
+Opcjonalny katalog główny repozytorium wyświetlany w wierszu Runtime system prompt. Jeśli nie jest ustawiony, OpenClaw wykrywa go automatycznie, przechodząc w górę od workspace.
```json5
{
@@ -924,9 +914,9 @@ Opcjonalna domyślna lista dozwolonych Skills dla agentów, które nie ustawiaj
agents: {
defaults: { skills: ["github", "weather"] },
list: [
- { id: "writer" }, // dziedziczy github, weather
- { id: "docs", skills: ["docs-search"] }, // zastępuje wartości domyślne
- { id: "locked-down", skills: [] }, // bez Skills
+ { id: "writer" }, // inherits github, weather
+ { id: "docs", skills: ["docs-search"] }, // replaces defaults
+ { id: "locked-down", skills: [] }, // no skills
],
},
}
@@ -934,13 +924,13 @@ 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 używać żadnych Skills.
-- Niepusta lista `agents.list[].skills` jest ostatecznym zestawem dla tego agenta; nie
- jest łączona z wartościami domyślnymi.
+- 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.
### `agents.defaults.skipBootstrap`
-Wyłącza automatyczne tworzenie plików bootstrap obszaru roboczego (`AGENTS.md`, `SOUL.md`, `TOOLS.md`, `IDENTITY.md`, `USER.md`, `HEARTBEAT.md`, `BOOTSTRAP.md`).
+Wyłącza automatyczne tworzenie plików bootstrap workspace (`AGENTS.md`, `SOUL.md`, `TOOLS.md`, `IDENTITY.md`, `USER.md`, `HEARTBEAT.md`, `BOOTSTRAP.md`).
```json5
{
@@ -950,9 +940,9 @@ Wyłącza automatyczne tworzenie plików bootstrap obszaru roboczego (`AGENTS.md
### `agents.defaults.contextInjection`
-Kontroluje, kiedy pliki bootstrap obszaru roboczego są wstrzykiwane do system prompt. Domyślnie: `"always"`.
+Steruje tym, kiedy pliki bootstrap workspace są wstrzykiwane do system prompt. Domyślnie: `"always"`.
-- `"continuation-skip"`: bezpieczne tury kontynuacji (po ukończonej odpowiedzi asystenta) pomijają ponowne wstrzyknięcie bootstrap obszaru roboczego, zmniejszając rozmiar promptu. Uruchomienia Heartbeat i ponowne próby po Compaction nadal odbudowują kontekst.
+- `"continuation-skip"`: bezpieczne tury kontynuacji (po zakończonej odpowiedzi asystenta) pomijają ponowne wstrzyknięcie bootstrap workspace, zmniejszając rozmiar prompt. Uruchomienia Heartbeat i ponowne próby po Compaction nadal przebudowują kontekst.
```json5
{
@@ -962,7 +952,7 @@ Kontroluje, kiedy pliki bootstrap obszaru roboczego są wstrzykiwane do system p
### `agents.defaults.bootstrapMaxChars`
-Maksymalna liczba znaków na plik bootstrap obszaru roboczego przed obcięciem. Domyślnie: `20000`.
+Maksymalna liczba znaków na plik bootstrap workspace przed obcięciem. Domyślnie: `20000`.
```json5
{
@@ -972,7 +962,7 @@ Maksymalna liczba znaków na plik bootstrap obszaru roboczego przed obcięciem.
### `agents.defaults.bootstrapTotalMaxChars`
-Maksymalna łączna liczba znaków wstrzykiwanych ze wszystkich plików bootstrap obszaru roboczego. Domyślnie: `150000`.
+Maksymalna łączna liczba znaków wstrzykiwanych we wszystkich plikach bootstrap workspace. Domyślnie: `150000`.
```json5
{
@@ -982,12 +972,12 @@ Maksymalna łączna liczba znaków wstrzykiwanych ze wszystkich plików bootstra
### `agents.defaults.bootstrapPromptTruncationWarning`
-Kontroluje widoczny dla agenta tekst ostrzegawczy, gdy kontekst bootstrap jest obcięty.
+Steruje widocznym dla agenta tekstem ostrzeżenia, gdy kontekst bootstrap jest obcinany.
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).
-- `"always"`: wstrzykuj ostrzeżenie przy każdym uruchomieniu, gdy istnieje obcięcie.
+- `"off"`: nigdy nie wstrzykuje tekstu ostrzeżenia do system prompt.
+- `"once"`: wstrzykuje ostrzeżenie raz dla każdego unikalnego podpisu obcięcia (zalecane).
+- `"always"`: wstrzykuje ostrzeżenie przy każdym uruchomieniu, gdy istnieje obcięcie.
```json5
{
@@ -995,12 +985,146 @@ Domyślnie: `"once"`.
}
```
+### Mapa właścicieli budżetu kontekstu
+
+OpenClaw ma wiele budżetów prompt/kontekstu o dużej objętości i są one
+celowo podzielone według podsystemów zamiast kierowania wszystkiego przez
+jedno ogólne ustawienie.
+
+- `agents.defaults.bootstrapMaxChars` /
+ `agents.defaults.bootstrapTotalMaxChars`:
+ zwykłe wstrzykiwanie bootstrap workspace.
+- `agents.defaults.startupContext.*`:
+ jednorazowe preludium startowe `/new` i `/reset`, w tym ostatnie dzienne
+ pliki `memory/*.md`.
+- `skills.limits.*`:
+ kompaktowa lista Skills wstrzykiwana do system prompt.
+- `agents.defaults.contextLimits.*`:
+ ograniczone wycinki środowiska uruchomieniowego i wstrzykiwane bloki należące do runtime.
+- `memory.qmd.limits.*`:
+ rozmiar fragmentów wyszukiwania zaindeksowanej pamięci i wstrzyknięć.
+
+Użyj pasującego nadpisania per agent tylko wtedy, gdy jeden agent potrzebuje innego
+budżetu:
+
+- `agents.list[].skillsLimits.maxSkillsPromptChars`
+- `agents.list[].contextLimits.*`
+
+#### `agents.defaults.startupContext`
+
+Steruje preludium startowym pierwszej tury wstrzykiwanym przy pustych uruchomieniach `/new` i `/reset`.
+
+```json5
+{
+ agents: {
+ defaults: {
+ startupContext: {
+ enabled: true,
+ applyOn: ["new", "reset"],
+ dailyMemoryDays: 2,
+ maxFileBytes: 16384,
+ maxFileChars: 1200,
+ maxTotalChars: 2800,
+ },
+ },
+ },
+}
+```
+
+#### `agents.defaults.contextLimits`
+
+Współdzielone wartości domyślne dla ograniczonych powierzchni kontekstu runtime.
+
+```json5
+{
+ agents: {
+ defaults: {
+ contextLimits: {
+ memoryGetMaxChars: 12000,
+ memoryGetDefaultLines: 120,
+ toolResultMaxChars: 16000,
+ postCompactionMaxChars: 1800,
+ },
+ },
+ },
+}
+```
+
+- `memoryGetMaxChars`: domyślny limit 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 wyników narzędzi na żywo używany dla utrwalonych wyników i
+ odzyskiwania po przepełnieniu.
+- `postCompactionMaxChars`: limit wycinka AGENTS.md używany podczas wstrzykiwania odświeżenia po Compaction.
+
+#### `agents.list[].contextLimits`
+
+Nadpisanie per agent dla współdzielonych ustawień `contextLimits`. Pominięte pola dziedziczą
+z `agents.defaults.contextLimits`.
+
+```json5
+{
+ agents: {
+ defaults: {
+ contextLimits: {
+ memoryGetMaxChars: 12000,
+ toolResultMaxChars: 16000,
+ },
+ },
+ list: [
+ {
+ id: "tiny-local",
+ contextLimits: {
+ memoryGetMaxChars: 6000,
+ toolResultMaxChars: 8000,
+ },
+ },
+ ],
+ },
+}
+```
+
+#### `skills.limits.maxSkillsPromptChars`
+
+Globalny limit dla kompaktowej listy Skills wstrzykiwanej do system prompt. To
+nie wpływa na odczyt plików `SKILL.md` na żądanie.
+
+```json5
+{
+ skills: {
+ limits: {
+ maxSkillsPromptChars: 18000,
+ },
+ },
+}
+```
+
+#### `agents.list[].skillsLimits.maxSkillsPromptChars`
+
+Nadpisanie per agent dla budżetu prompt Skills.
+
+```json5
+{
+ agents: {
+ list: [
+ {
+ id: "tiny-local",
+ skillsLimits: {
+ maxSkillsPromptChars: 6000,
+ },
+ },
+ ],
+ },
+}
+```
+
### `agents.defaults.imageMaxDimensionPx`
-Maksymalny rozmiar w pikselach dłuższego boku obrazu w blokach obrazów transkryptu/narzędzi przed wywołaniami dostawcy.
+Maksymalny rozmiar w pikselach dla dłuższego boku obrazu w blokach obrazów 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 w przebiegach z dużą liczbą zrzutów ekranu.
+Niższe wartości zwykle zmniejszają użycie tokenów vision i rozmiar ładunku żądania przy przebiegach z dużą liczbą zrzutów ekranu.
Wyższe wartości zachowują więcej szczegółów wizualnych.
```json5
@@ -1011,7 +1135,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 to strefa czasowa hosta.
+Strefa czasowa dla kontekstu system prompt (nie znaczników czasu wiadomości). Wartość zapasowa pochodzi ze strefy czasowej hosta.
```json5
{
@@ -1059,7 +1183,7 @@ Format czasu w system prompt. Domyślnie: `auto` (preferencja systemu operacyjne
primary: "anthropic/claude-opus-4-6",
fallbacks: ["openai/gpt-5.4-mini"],
},
- params: { cacheRetention: "long" }, // globalne domyślne parametry dostawcy
+ params: { cacheRetention: "long" }, // global default provider params
embeddedHarness: {
runtime: "auto", // auto | pi | registered harness id, e.g. codex
fallback: "pi", // pi | none
@@ -1080,46 +1204,46 @@ Format czasu w system prompt. Domyślnie: `auto` (preferencja systemu operacyjne
- `model`: akceptuje albo ciąg znaków (`"provider/model"`), albo obiekt (`{ primary, fallbacks }`).
- Forma ciągu ustawia tylko model podstawowy.
- - Forma obiektu ustawia model podstawowy oraz uporządkowane modele przełączenia awaryjnego.
+ - Forma obiektu ustawia model podstawowy oraz uporządkowane modele przełączania awaryjnego.
- `imageModel`: akceptuje albo ciąg znaków (`"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 przyjąć obrazu jako wejścia.
+ - Używany także jako routing zapasowy, gdy wybrany/domyslny model nie może przyjąć wejścia obrazu.
- `imageGenerationModel`: akceptuje albo ciąg znaków (`"provider/model"`), albo obiekt (`{ primary, fallbacks }`).
- - Używany przez współdzieloną funkcję 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 albo `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 pominięte, `image_generate` nadal może wywnioskować domyślny dostawca na podstawie uwierzytelnienia. Najpierw próbuje bieżącego domyślnego dostawcy, potem pozostałych zarejestrowanych dostawców generowania obrazów w kolejności identyfikatorów dostawców.
+ - Używany przez współdzieloną funkcję generowania obrazów i każdą przyszłą powierzchnię narzędzia/Pluginu generującą 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 również 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 pominięte, `image_generate` nadal może wywnioskować domyślną wartość dostawcy opartą na uwierzytelnieniu. 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ą funkcję generowania muzyki oraz wbudowane narzędzie `music_generate`.
- - Typowe wartości: `google/lyria-3-clip-preview`, `google/lyria-3-pro-preview` albo `minimax/music-2.5+`.
- - Jeśli pominięte, `music_generate` nadal może wywnioskować domyślny dostawca na podstawie uwierzytelnienia. Najpierw próbuje bieżącego domyślnego dostawcy, 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.
+ - Używany przez współdzieloną funkcję generowania muzyki i 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 pominięte, `music_generate` nadal może wywnioskować domyślną wartość dostawcy opartą na uwierzytelnieniu. 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 również pasujące uwierzytelnianie/klucz API dostawcy.
- `videoGenerationModel`: akceptuje albo ciąg znaków (`"provider/model"`), albo obiekt (`{ primary, fallbacks }`).
- - Używany przez współdzieloną funkcję 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` albo `qwen/wan2.7-r2v`.
- - Jeśli pominięte, `video_generate` nadal może wywnioskować domyślny dostawca na podstawie uwierzytelnienia. Najpierw próbuje bieżącego domyślnego dostawcy, 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 filmy, 10 sekund czasu trwania oraz opcje na poziomie dostawcy `size`, `aspectRatio`, `resolution`, `audio` i `watermark`.
+ - Używany przez współdzieloną funkcję generowania wideo i 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 pominięte, `video_generate` nadal może wywnioskować domyślną wartość dostawcy opartą na uwierzytelnieniu. 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 również 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 filmy, czas trwania do 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 }`).
- - Używany przez narzędzie `pdf` do routingu modeli.
- - Jeśli pominięte, narzędzie PDF wraca do `imageModel`, a potem do rozwiązanego modelu sesji/domyslnego.
+ - Używany przez narzędzie `pdf` do routingu modelu.
+ - Jeśli 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 w czasie wywołania.
-- `pdfMaxPages`: domyślna maksymalna liczba stron uwzględnianych przez tryb zapasowego wyodrębniania 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 podwyższonego 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 jednoznacznego 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.
+- `pdfMaxPages`: domyślna maksymalna liczba stron uwzględnianych przez tryb awaryjnej 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 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 skonfigurowanych dostawcach, a dopiero potem wraca do skonfigurowanego domyślnego dostawcy (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 ujawniać przestarzałą 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`).
- `params`: globalne domyślne parametry dostawcy stosowane do wszystkich modeli. Ustawiane w `agents.defaults.params` (np. `{ cacheRetention: "long" }`).
-- Priorytet scalania `params` (konfiguracja): `agents.defaults.params` (globalna baza) jest nadpisywane przez `agents.defaults.models["provider/model"].params` (per model), a potem `agents.list[].params` (pasujący identyfikator agenta) nadpisuje według klucza. Szczegóły znajdziesz w [Prompt Caching](/pl/reference/prompt-caching).
-- `embeddedHarness`: domyślna polityka runtime osadzonego agenta niskiego poziomu. Użyj `runtime: "auto"`, aby pozwolić zarejestrowanym harnessom Pluginów przejąć 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 powrót do PI.
-- Narzędzia zapisujące konfigurację, które mutują te pola (na przykład `/models set`, `/models set-image` i polecenia dodawania/usuwania fallback), 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 po kluczu. Szczegóły znajdziesz w [Prompt Caching](/pl/reference/prompt-caching).
+- `embeddedHarness`: domyślna polityka niskopoziomowego runtime wbudowanego agenta. Użyj `runtime: "auto"`, aby pozwolić zarejestrowanym harnessom Pluginów przejmować obsługiwane modele, `runtime: "pi"`, aby wymusić wbudowany harness PI, albo zarejestrowanego identyfikatora harnessu, np. `runtime: "codex"`. Ustaw `fallback: "none"`, aby wyłączyć automatyczny zapasowy fallback PI.
+- Pisarze konfiguracji, którzy mutują 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` kontroluje, który wykonawca niskiego poziomu obsługuje tury osadzonego agenta.
-W większości wdrożeń należy pozostawić wartość domyślną `{ runtime: "auto", fallback: "pi" }`.
-Użyj tego, gdy zaufany Plugin dostarcza natywny harness, taki jak bundled
+`embeddedHarness` kontroluje, który niskopoziomowy executor uruchamia tury wbudowanego agenta.
+Większość wdrożeń powinna zachować wartość domyślną `{ runtime: "auto", fallback: "pi" }`.
+Użyj tego, gdy zaufany Plugin udostępnia natywny harness, taki jak bundled
harness serwera aplikacji Codex.
```json5
@@ -1136,13 +1260,13 @@ harness serwera aplikacji Codex.
}
```
-- `runtime`: `"auto"`, `"pi"` albo identyfikator zarejestrowanego harnessu Pluginu. Bundled Plugin Codex rejestruje `codex`.
-- `fallback`: `"pi"` albo `"none"`. `"pi"` zachowuje wbudowany harness PI jako zgodnościowy fallback. `"none"` powoduje, że brakujący lub nieobsługiwany wybór harnessu Pluginu kończy się błędem zamiast cichego użycia PI.
+- `runtime`: `"auto"`, `"pi"` lub identyfikator zarejestrowanego harnessu Pluginu. Bundled Plugin Codex rejestruje `codex`.
+- `fallback`: `"pi"` lub `"none"`. `"pi"` zachowuje wbudowany harness PI jako fallback zgodności. `"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.
-- W wdrożeniach tylko z Codex ustaw `model: "codex/gpt-5.4"`, `embeddedHarness.runtime: "codex"` i `embeddedHarness.fallback: "none"`.
-- To kontroluje tylko osadzony harness czatu. Generowanie mediów, vision, PDF, muzyka, wideo i TTS nadal używają swoich ustawień dostawcy/modelu.
+- Dla wdrożeń tylko z Codex ustaw `model: "codex/gpt-5.4"`, `embeddedHarness.runtime: "codex"` i `embeddedHarness.fallback: "none"`.
+- To kontroluje tylko wbudowany harness 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** (mają zastosowanie tylko wtedy, gdy model jest w `agents.defaults.models`):
| Alias | Model |
| ------------------- | -------------------------------------- |
@@ -1157,13 +1281,13 @@ harness serwera aplikacji Codex.
Skonfigurowane przez Ciebie aliasy zawsze mają pierwszeństwo przed domyślnymi.
-Modele Z.AI GLM-4.x automatycznie włączają tryb thinking, chyba że ustawisz `--thinking off` albo 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ć.
+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` do strumieniowania wywołań narzędzi. Ustaw `agents.defaults.models["zai/"].params.tool_stream` na `false`, aby to wyłączyć.
Modele Anthropic Claude 4.6 domyślnie używają thinking `adaptive`, gdy nie ustawiono jawnego poziomu thinking.
### `agents.defaults.cliBackends`
-Opcjonalne backendy CLI dla zapasowych przebiegów tylko tekstowych (bez wywołań narzędzi). Przydatne jako kopia zapasowa, gdy dostawcy API zawodzą.
+Opcjonalne backendy CLI dla tekstowych przebiegów awaryjnych (bez wywołań narzędzi). Przydatne jako kopia zapasowa, gdy dostawcy API zawodzą.
```json5
{
@@ -1197,7 +1321,7 @@ Opcjonalne backendy CLI dla zapasowych przebiegów tylko tekstowych (bez wywoła
### `agents.defaults.systemPromptOverride`
-Zastąp cały system prompt składany przez OpenClaw stałym ciągiem znaków. Ustawiane na poziomie domyślnym (`agents.defaults.systemPromptOverride`) albo per agent (`agents.list[].systemPromptOverride`). Wartości per agent mają pierwszeństwo; pusta wartość albo zawierająca tylko białe znaki jest ignorowana. Przydatne do kontrolowanych eksperymentów z promptami.
+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; wartość pusta lub zawierająca tylko białe znaki jest ignorowana. Przydatne do kontrolowanych eksperymentów z promptami.
```json5
{
@@ -1238,15 +1362,15 @@ Okresowe uruchomienia Heartbeat.
}
```
-- `every`: ciąg czasu trwania (ms/s/m/h). Domyślnie: `30m` (uwierzytelnianie kluczem API) albo `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, tłumi ładunki ostrzeżeń o błędach narzędzi podczas uruchomień Heartbeat.
-- `timeoutSeconds`: maksymalny czas w sekundach dozwolony dla tury agenta Heartbeat, po którym zostaje ona 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 true, uruchomienia Heartbeat używają lekkiego kontekstu bootstrap i zachowują tylko `HEARTBEAT.md` z plików bootstrap obszaru roboczego.
-- `isolatedSession`: gdy true, każde uruchomienie Heartbeat działa w świeżej sesji bez wcześniejszej historii rozmowy. Ten sam wzorzec izolacji co w 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 uruchamiają pełne tury agentów — krótsze interwały spalają więcej tokenów.
+- `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 ma wartość false, pomija sekcję Heartbeat w system prompt i pomija wstrzykiwanie `HEARTBEAT.md` do kontekstu bootstrap. Domyślnie: `true`.
+- `suppressToolErrorWarnings`: gdy ma wartość true, ukrywa ł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 dostarczania bezpośredniego/DM. `allow` (domyślnie) zezwala na dostarczanie do celu bezpośredniego. `block` blokuje 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 odbywa się 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 te agenty**.
+- Heartbeat uruchamia pełne tury agenta — krótsze interwały zużywają więcej tokenów.
### `agents.defaults.compaction`
@@ -1276,19 +1400,19 @@ Okresowe uruchomienia Heartbeat.
}
```
-- `mode`: `default` lub `safeguard` (sumaryzacja porcjami dla długich historii). Zobacz [Compaction](/pl/concepts/compaction).
-- `provider`: identyfikator zarejestrowanego Pluginu dostawcy Compaction. Gdy jest ustawiony, wywoływane jest `summarize()` tego dostawcy zamiast wbudowanej sumaryzacji LLM. W razie błędu wraca do wbudowanej. Ustawienie dostawcy wymusza `mode: "safeguard"`. Zobacz [Compaction](/pl/concepts/compaction).
+- `mode`: `default` lub `safeguard` (podsumowywanie porcjami dla długiej historii). Zobacz [Compaction](/pl/concepts/compaction).
+- `provider`: identyfikator zarejestrowanego Pluginu dostawcy Compaction. Gdy ustawione, wywoływane jest `summarize()` dostawcy zamiast wbudowanego podsumowywania LLM. W razie błędu wraca do wbudowanego trybu. Ustawienie dostawcy wymusza `mode: "safeguard"`. Zobacz [Compaction](/pl/concepts/compaction).
- `timeoutSeconds`: maksymalna liczba sekund dozwolona dla pojedynczej operacji Compaction, po której OpenClaw ją przerywa. Domyślnie: `900`.
-- `identifierPolicy`: `strict` (domyślnie), `off` lub `custom`. `strict` dodaje na początku wbudowane wskazówki zachowania nieprzezroczystych identyfikatorów podczas sumaryzacji Compaction.
-- `identifierInstructions`: opcjonalny niestandardowy 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 nieustawione albo 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 zachować jeden model, ale podsumowania Compaction mają działać na innym; gdy nieustawione, Compaction używa podstawowego modelu sesji.
-- `notifyUser`: gdy `true`, wysyła krótkie powiadomienie do użytkownika, gdy rozpoczyna się Compaction (na przykład „Compacting context...” ). Domyślnie wyłączone, aby Compaction pozostał cichy.
-- `memoryFlush`: cicha agentowa tura przed automatycznym Compaction, aby zapisać trwałe wspomnienia. Pomijane, gdy obszar roboczy jest tylko do odczytu.
+- `identifierPolicy`: `strict` (domyślnie), `off` lub `custom`. `strict` dodaje na początku wbudowane wskazówki dotyczące 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 wstrzyknięcie. Gdy nieustawione lub jawnie ustawione na tę domyślną parę, starsze nagłówki `Every Session`/`Safety` są również akceptowane jako zgodność wsteczna.
+- `model`: opcjonalne nadpisanie `provider/model-id` tylko dla podsumowywania Compaction. Użyj tego, gdy główna sesja ma pozostać przy jednym modelu, ale podsumowania Compaction mają działać na innym; gdy nieustawione, Compaction używa modelu podstawowego sesji.
+- `notifyUser`: gdy `true`, wysyła krótkie powiadomienie do użytkownika, gdy rozpoczyna się Compaction (na przykład „Trwa kompaktowanie kontekstu...” ). Domyślnie wyłączone, aby Compaction pozostawał cichy.
+- `memoryFlush`: cicha agentowa tura przed automatycznym Compaction, aby zapisać trwałe wspomnienia. Pomijane, gdy workspace jest tylko do odczytu.
### `agents.defaults.contextPruning`
-Przycina **stare wyniki narzędzi** z kontekstu w pamięci przed wysłaniem do LLM. **Nie** modyfikuje historii sesji na dysku.
+Przycina **stare wyniki narzędzi** z kontekstu w pamięci przed wysłaniem do LLM. **Nie** modyfikuje historii sesji zapisanej na dysku.
```json5
{
@@ -1313,17 +1437,17 @@ Przycina **stare wyniki narzędzi** z kontekstu w pamięci przed wysłaniem do L
- `mode: "cache-ttl"` włącza przebiegi przycinania.
-- `ttl` kontroluje, jak często przycinanie może zostać uruchomione ponownie (od ostatniego dotknięcia cache).
-- Przycinanie najpierw miękko przycina zbyt duże wyniki narzędzi, a potem w razie potrzeby całkowicie czyści starsze wyniki narzędzi.
+- `ttl` określa, jak często przycinanie może uruchomić się ponownie (po ostatnim użyciu pamięci podręcznej).
+- Przycinanie najpierw miękko skraca zbyt duże wyniki narzędzi, a następnie w razie potrzeby całkowicie czyści starsze wyniki narzędzi.
-**Miękkie przycinanie** zachowuje początek + koniec i wstawia `...` pośrodku.
+**Miękkie skracanie** zachowuje początek i koniec oraz wstawia `...` pośrodku.
-**Twarde czyszczenie** zastępuje cały wynik narzędzia placeholderem.
+**Twarde czyszczenie** zastępuje cały wynik narzędzia symbolem zastępczym.
Uwagi:
-- Bloki obrazów nigdy nie są przycinane/czyszczone.
-- Współczynniki są oparte na znakach (w przybliżeniu), a nie na dokładnej liczbie tokenów.
+- Bloki obrazów nigdy nie są skracane/czyszczone.
+- Proporcje są oparte na znakach (w przybliżeniu), a nie na dokładnej liczbie tokenów.
- Jeśli istnieje mniej niż `keepLastAssistants` wiadomości asystenta, przycinanie jest pomijane.
@@ -1347,7 +1471,7 @@ Szczegóły zachowania 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`.
+- Nadpisania kanału: `channels..blockStreamingCoalesce` (oraz warianty per konto). Signal/Slack/Discord/Google Chat domyślnie używają `minChars: 1500`.
- `humanDelay`: losowa pauza między odpowiedziami blokowymi. `natural` = 800–2500 ms. Nadpisanie per agent: `agents.list[].humanDelay`.
Szczegóły zachowania i porcjowania znajdziesz w [Streaming](/pl/concepts/streaming).
@@ -1365,7 +1489,7 @@ Szczegóły zachowania i porcjowania znajdziesz w [Streaming](/pl/concepts/strea
}
```
-- Domyślne: `instant` dla czatów bezpośrednich/wzmianek, `message` dla czatów grupowych bez wzmianki.
+- Wartości domyślne: `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).
@@ -1374,7 +1498,7 @@ Zobacz [Typing Indicators](/pl/concepts/typing-indicators).
### `agents.defaults.sandbox`
-Opcjonalny sandboxing dla osadzonego agenta. Pełny przewodnik znajdziesz w [Sandboxing](/pl/gateway/sandboxing).
+Opcjonalny sandboxing dla wbudowanego agenta. Pełny przewodnik znajdziesz w [Sandboxing](/pl/gateway/sandboxing).
```json5
{
@@ -1469,52 +1593,52 @@ Opcjonalny sandboxing dla osadzonego agenta. Pełny przewodnik znajdziesz w [San
}
```
-
+
**Backend:**
-- `docker`: lokalne środowisko Docker runtime (domyślne)
-- `ssh`: ogólne zdalne środowisko runtime oparte na SSH
-- `openshell`: środowisko runtime OpenShell
+- `docker`: lokalny runtime Docker (domyślnie)
+- `ssh`: ogólny zdalny runtime oparty na SSH
+- `openshell`: runtime OpenShell
-Gdy wybrano `backend: "openshell"`, ustawienia specyficzne dla runtime są przenoszone do
+Gdy wybrane jest `backend: "openshell"`, ustawienia specyficzne dla runtime są przenoszone do
`plugins.entries.openshell.config`.
**Konfiguracja backendu SSH:**
-- `target`: cel SSH w formacie `user@host[:port]`
+- `target`: cel SSH w formie `user@host[:port]`
- `command`: polecenie klienta SSH (domyślnie: `ssh`)
-- `workspaceRoot`: bezwzględny zdalny katalog główny używany dla obszarów roboczych per scope
-- `identityFile` / `certificateFile` / `knownHostsFile`: istniejące pliki lokalne przekazywane do OpenSSH
-- `identityData` / `certificateData` / `knownHostsData`: treść inline lub SecretRefs, które OpenClaw materializuje do plików tymczasowych w runtime
-- `strictHostKeyChecking` / `updateHostKeys`: elementy sterowania polityką kluczy hosta OpenSSH
+- `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`: zawartość inline lub SecretRef, które OpenClaw materializuje do plików tymczasowych w czasie działania
+- `strictHostKeyChecking` / `updateHostKeys`: ustawienia zasad klucza 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 sandbox
+- Wartości `*Data` oparte na SecretRef są rozwiązywane z aktywnej migawki runtime sekretów przed rozpoczęciem sesji sandboxa
**Zachowanie backendu SSH:**
-- inicjuje zdalny obszar roboczy raz po utworzeniu lub odtworzeniu
-- następnie utrzymuje zdalny obszar roboczy SSH jako kanoniczny
+- inicjuje 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
-- nie synchronizuje automatycznie zmian zdalnych z powrotem do hosta
-- nie obsługuje kontenerów przeglądarki sandbox
+- nie synchronizuje automatycznie zdalnych zmian z powrotem na hosta
+- nie obsługuje kontenerów przeglądarki sandboxa
-**Dostęp do obszaru roboczego:**
+**Dostęp do workspace:**
-- `none`: obszar roboczy sandbox per scope w `~/.openclaw/sandboxes`
-- `ro`: obszar roboczy sandbox w `/workspace`, obszar roboczy agenta montowany tylko do odczytu w `/agent`
-- `rw`: obszar roboczy agenta montowany do odczytu i zapisu w `/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`
-**Scope:**
+**Zakres:**
-- `session`: kontener + obszar roboczy per sesja
-- `agent`: jeden kontener + obszar roboczy na agenta (domyślnie)
-- `shared`: współdzielony kontener i obszar roboczy (bez izolacji między sesjami)
+- `session`: kontener + workspace per sesja
+- `agent`: jeden kontener + workspace per agent (domyślnie)
+- `shared`: współdzielony kontener i workspace (brak izolacji między sesjami)
**Konfiguracja Pluginu OpenShell:**
@@ -1544,30 +1668,30 @@ Gdy wybrano `backend: "openshell"`, ustawienia specyficzne dla runtime są przen
**Tryb OpenShell:**
-- `mirror`: inicjuje zdalne środowisko z lokalnego przed `exec`, synchronizuje z powrotem po `exec`; lokalny obszar roboczy pozostaje kanoniczny
-- `remote`: inicjuje zdalne środowisko raz podczas tworzenia sandbox, a następnie utrzymuje zdalny obszar roboczy jako kanoniczny
+- `mirror`: inicjuje zdalne środowisko z lokalnego przed `exec`, synchronizuje z powrotem po `exec`; lokalny workspace pozostaje kanoniczny
+- `remote`: inicjuje zdalne środowisko raz podczas tworzenia sandboxa, a następnie utrzymuje zdalny workspace jako kanoniczny
-W trybie `remote` lokalne na hoście edycje wykonane poza OpenClaw nie są automatycznie synchronizowane do sandbox po kroku inicjalizacji.
-Transport odbywa się przez SSH do sandbox OpenShell, ale Plugin zarządza cyklem życia sandbox i opcjonalną synchronizacją mirror.
+W trybie `remote` lokalne zmiany hosta 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ą lustrzaną.
**`setupCommand`** uruchamia się raz po utworzeniu kontenera (przez `sh -lc`). Wymaga wychodzącego dostępu do sieci, zapisywalnego katalogu głównego i użytkownika root.
-**Kontenery domyślnie mają `network: "none"`** — ustaw na `"bridge"` (lub niestandardową sieć bridge), jeśli agent potrzebuje dostępu wychodzącego.
+**Kontenery domyślnie używają `network: "none"`** — ustaw `"bridge"` (lub własną 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).
+`sandbox.docker.dangerouslyAllowContainerNamespaceJoin: true` (tryb awaryjny).
-**Załączniki przychodzące** są przygotowywane w `media/inbound/*` w aktywnym obszarze roboczym.
+**Przychodzące załączniki** są umieszczane w `media/inbound/*` w aktywnym workspace.
**`docker.binds`** montuje dodatkowe katalogi hosta; globalne i per-agent `binds` są scalane.
-**Sandboxed browser** (`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).
+**Sandboxowana przeglądarka** (`sandbox.browser.enabled`): Chromium + CDP w kontenerze. 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 możliwość kierowania sesji sandbox 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 granicy 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 kontenerowe:
+- `allowHostControl: false` (domyślnie) blokuje sandboxowane sesje przed kierowaniem 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 sandboxowanej przeglądarki. Gdy ustawione (w tym `[]`), zastępuje `docker.binds` dla kontenera przeglądarki.
+- Domyślne parametry uruchomienia są zdefiniowane w `scripts/sandbox-browser-entrypoint.sh` i dostrojone pod hosty kontenerowe:
- `--remote-debugging-address=127.0.0.1`
- `--remote-debugging-port=`
- `--user-data-dir=${HOME}/.chrome`
@@ -1589,23 +1713,23 @@ Dostęp obserwatora noVNC domyślnie używa uwierzytelniania VNC, a OpenClaw emi
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 workflow
- od nich zależy.
+ ich wymaga.
- `--renderer-process-limit=2` można zmienić przez
`OPENCLAW_BROWSER_RENDERER_PROCESS_LIMIT=`; ustaw `0`, aby użyć
domyślnego limitu procesów Chromium.
- - 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.
+ - dodatkowo `--no-sandbox` i `--disable-setuid-sandbox`, gdy `noSandbox` jest włączone.
+ - Wartości domyślne są bazą obrazu kontenera; użyj własnego obrazu przeglądarki z własnym
+ entrypointem, aby zmienić domyślne ustawienia kontenera.
-Sandboxing przeglądarki i `sandbox.docker.binds` są dostępne tylko dla Docker.
+Sandboxing przeglądarki i `sandbox.docker.binds` działają tylko z Dockerem.
Budowanie obrazów:
```bash
-scripts/sandbox-setup.sh # główny obraz sandbox
-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)
@@ -1658,26 +1782,26 @@ scripts/sandbox-browser-setup.sh # opcjonalny obraz przeglądarki
```
- `id`: stabilny identyfikator agenta (wymagany).
-- `default`: gdy ustawiono wiele, wygrywa pierwszy (rejestrowane jest ostrzeżenie). Jeśli żaden nie jest ustawiony, domyślny jest pierwszy wpis listy.
+- `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 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 je 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 sesja.
-- `reasoningDefault`: opcjonalna domyślna widoczność reasoning per agent (`on | off | stream`). Stosowane, gdy nie ustawiono nadpisania reasoning per wiadomość ani per sesja.
-- `fastModeDefault`: opcjonalna wartość domyślna trybu fast per agent (`true | false`). Stosowane, gdy nie ustawiono nadpisania trybu fast per wiadomość ani per sesja.
-- `embeddedHarness`: opcjonalne nadpisanie polityki niskopoziomowego harnessu per agent. Użyj `{ runtime: "codex", fallback: "none" }`, aby jeden agent był tylko dla Codex, podczas gdy inni agenci zachowają domyślny fallback PI.
-- `runtime`: opcjonalny deskryptor runtime 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, adres URL `http(s)` albo 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 jest ustawione nadpisanie per wiadomość ani per sesję.
+- `reasoningDefault`: opcjonalna domyślna widoczność reasoning per agent (`on | off | stream`). Stosowane, gdy nie ma nadpisania reasoning per wiadomość ani per sesję.
+- `fastModeDefault`: opcjonalna wartość domyślna per agent dla fast mode (`true | false`). Stosowane, gdy nie ma nadpisania fast mode per wiadomość ani per sesję.
+- `embeddedHarness`: opcjonalne nadpisanie polityki niskopoziomowego harnessu per agent. Użyj `{ runtime: "codex", fallback: "none" }`, aby jeden agent był tylko Codex, a pozostałe zachowały domyślny fallback PI.
+- `runtime`: opcjonalny deskryptor runtime per agent. Użyj `type: "acp"` z domyślnymi ustawieniami `runtime.acp` (`agent`, `backend`, `mode`, `cwd`), gdy agent ma domyślnie używać sesji harnessu ACP.
+- `identity.avatar`: ścieżka względna do 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).
-- Zabezpieczenie dziedziczenia sandbox: jeśli sesja żądająca jest objęta sandboxem, `sessions_spawn` odrzuca cele, które działałyby bez sandbox.
+- Zabezpieczenie dziedziczenia sandboxa: jeśli sesja żądająca jest sandboxowana, `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).
---
## Routing wielu agentów
-Uruchamiaj wielu odizolowanych agentów w jednym Gateway. Zobacz [Multi-Agent](/pl/concepts/multi-agent).
+Uruchamiaj wiele izolowanych agentów w jednym Gateway. Zobacz [Multi-Agent](/pl/concepts/multi-agent).
```json5
{
@@ -1696,12 +1820,12 @@ Uruchamiaj wielu odizolowanych agentów w jednym Gateway. Zobacz [Multi-Agent](/
### Pola dopasowania binding
-- `type` (opcjonalne): `route` dla normalnego routingu (brak typu domyślnie oznacza route), `acp` dla trwałych powiązań konwersacji ACP.
+- `type` (opcjonalne): `route` dla zwykłego routingu (brak typu domyślnie oznacza route), `acp` dla trwałych powiązań rozmów 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 wpisów `type: "acp"`): `{ mode, label, cwd, backend }`
+- `match.guildId` / `match.teamId` (opcjonalne; zależne od kanału)
+- `acp` (opcjonalne; tylko dla `type: "acp"`): `{ mode, label, cwd, backend }`
**Deterministyczna kolejność dopasowania:**
@@ -1709,16 +1833,16 @@ Uruchamiaj wielu odizolowanych agentów w jednym Gateway. Zobacz [Multi-Agent](/
2. `match.guildId`
3. `match.teamId`
4. `match.accountId` (dokładne, bez peer/guild/team)
-5. `match.accountId: "*"` (dla całego kanału)
+5. `match.accountId: "*"` (na cały kanał)
6. Agent domyślny
W obrębie każdego poziomu wygrywa pierwszy pasujący wpis `bindings`.
-Dla wpisów `type: "acp"` OpenClaw rozwiązuje według 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 po dokładnej tożsamości rozmowy (`match.channel` + konto + `match.peer.id`) i nie używa powyższej kolejności poziomów powiązań route.
### Profile dostępu per agent
-
+
```json5
{
@@ -1736,7 +1860,7 @@ Dla wpisów `type: "acp"` OpenClaw rozwiązuje według dokładnej tożsamości k
-
+
```json5
{
@@ -1864,34 +1988,34 @@ Szczegóły priorytetów znajdziesz w [Multi-Agent Sandbox & Tools](/pl/tools/mu
-- **`scope`**: podstawowa strategia grupowania sesji dla kontekstów czatów grupowych.
- - `per-sender` (domyślnie): każdy nadawca otrzymuje odizolowaną sesję w kontekście kanału.
- - `global`: wszyscy uczestnicy w kontekście kanału współdzielą jedną sesję (używaj tylko wtedy, gdy zamierzony jest współdzielony kontekst).
+- **`scope`**: podstawowa strategia grupowania sesji dla kontekstów czatu grupowego.
+ - `per-sender` (domyślnie): każdy nadawca otrzymuje izolowaną sesję w kontekście 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 do współdzielenia sesji między kanałami.
-- **`reset`**: główna polityka resetu. `daily` resetuje o `atHour` czasu lokalnego; `idle` resetuje po `idleMinutes`. Gdy skonfigurowane są oba, wygrywa to, które wygaśnie wcześniej.
-- **`resetByType`**: nadpisania per typ (`direct`, `group`, `thread`). Starsze `dm` jest akceptowane jako alias dla `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 świeżą sesję wątku zamiast dziedziczyć historię transkryptu sesji nadrzędnej.
+- **`identityLinks`**: mapuje kanoniczne identyfikatory do peerów z prefiksem dostawcy dla współdzielenia sesji między kanałami.
+- **`reset`**: podstawowa polityka resetu. `daily` resetuje o `atHour` czasu lokalnego; `idle` resetuje po `idleMinutes`. Gdy skonfigurowane są oba, wygrywa to, które wygaśnie wcześniej.
+- **`resetByType`**: nadpisania per typ (`direct`, `group`, `thread`). Starsze `dm` jest akceptowane jako alias `direct`.
+- **`parentForkMaxTokens`**: maksymalna wartość `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 z sesji nadrzędnej.
-- **`mainKey`**: starsze pole. Runtime zawsze używa `"main"` dla głównego koszyka czatu bezpośredniego.
+- **`mainKey`**: starsze pole. Runtime zawsze używa `"main"` dla głównego kubełka 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ńcuchowanie ping-pong.
-- **`sendPolicy`**: dopasowuje po `channel`, `chatType` (`direct|group|channel`, ze starszym aliasem `dm`), `keyPrefix` lub `rawKeyPrefix`. Pierwsze dopasowanie deny wygrywa.
-- **`maintenance`**: kontrolki czyszczenia magazynu sesji + retencji.
+- **`sendPolicy`**: dopasowanie po `channel`, `chatType` (`direct|group|channel`, ze starszym aliasem `dm`), `keyPrefix` lub `rawKeyPrefix`. Pierwsze odrzucenie wygrywa.
+- **`maintenance`**: czyszczenie magazynu sesji + kontrola retencji.
- `mode`: `warn` emituje tylko ostrzeżenia; `enforce` stosuje czyszczenie.
- `pruneAfter`: granica wieku dla nieaktualnych wpisów (domyślnie `30d`).
- `maxEntries`: maksymalna liczba wpisów w `sessions.json` (domyślnie `500`).
- - `rotateBytes`: rotuj `sessions.json`, gdy przekroczy ten rozmiar (domyślnie `10mb`).
- - `resetArchiveRetention`: retencja dla archiwów transkryptów `*.reset.`. Domyślnie taka jak `pruneAfter`; ustaw `false`, aby wyłączyć.
- - `maxDiskBytes`: opcjonalny limit miejsca na dysku dla katalogu sesji. W trybie `warn` zapisuje ostrzeżenia; w trybie `enforce` najpierw usuwa najstarsze artefakty/sesje.
- - `highWaterBytes`: opcjonalny cel po czyszczeniu limitu. Domyślnie `80%` wartości `maxDiskBytes`.
-- **`threadBindings`**: globalne wartości domyślne dla funkcji sesji powiązanych z wątkami.
+ - `rotateBytes`: rotuje `sessions.json`, gdy przekroczy ten rozmiar (domyślnie `10mb`).
+ - `resetArchiveRetention`: retencja dla archiwów transkryptów `*.reset.`. Domyślnie przyjmuje wartość `pruneAfter`; ustaw `false`, aby wyłączyć.
+ - `maxDiskBytes`: opcjonalny twardy 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 związanych z wątkami.
- `enabled`: główny domyślny przełącznik (dostawcy mogą go nadpisywać; Discord używa `channels.discord.threadBindings.enabled`)
- - `idleHours`: domyślne automatyczne odpinanie po bezczynności w godzinach (`0` wyłącza; dostawcy mogą nadpisywać)
+ - `idleHours`: domyślny automatyczny brak fokusu 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ć)
@@ -1936,11 +2060,11 @@ Rozwiązywanie (wygrywa najbardziej szczegółowe): konto → kanał → globaln
**Zmienne szablonu:**
-| Zmienna | Opis | Przykład |
-| ---------------- | ---------------------- | --------------------------- |
-| `{model}` | Krótka nazwa modelu | `claude-opus-4-6` |
+| 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` |
+| `{provider}` | Nazwa dostawcy | `anthropic` |
| `{thinkingLevel}` | Bieżący poziom thinking | `high`, `low`, `off` |
| `{identity.name}` | Nazwa tożsamości agenta | (to samo co `"auto"`) |
@@ -1948,7 +2072,7 @@ Zmienne nie rozróżniają wielkości liter. `{think}` jest aliasem dla `{thinki
### Reakcja ack
-- Domyślnie przyjmuje `identity.emoji` aktywnego agenta, w przeciwnym razie `"👀"`. Ustaw `""`, aby wyłączyć.
+- Domyślnie używa `identity.emoji` aktywnego agenta, w przeciwnym razie `"👀"`. Ustaw `""`, aby wyłączyć.
- Nadpisania per kanał: `channels..ackReaction`, `channels..accounts..ackReaction`.
- Kolejność rozwiązywania: konto → kanał → `messages.ackReaction` → fallback tożsamości.
- Zakres: `group-mentions` (domyślnie), `group-all`, `direct`, `all`.
@@ -1957,11 +2081,11 @@ Zmienne nie rozróżniają wielkości liter. `{think}` jest aliasem dla `{thinki
W Slack i Discord brak ustawienia utrzymuje reakcje statusu włączone, gdy reakcje ack są aktywne.
W Telegram ustaw to jawnie na `true`, aby włączyć reakcje statusu cyklu życia.
-### Debounce przychodzący
+### Debounce przychodzących wiadomości
-Łą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.
+Łą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.
-### TTS (text-to-speech)
+### TTS (zamiana tekstu na mowę)
```json5
{
@@ -2004,8 +2128,8 @@ Zmienne nie rozróżniają wielkości liter. `{think}` jest aliasem dla `{thinki
- `auto` kontroluje domyślny tryb auto-TTS: `off`, `always`, `inbound` lub `tagged`. `/tts on|off` może nadpisać 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).
-- Klucze API wracają do `ELEVENLABS_API_KEY`/`XI_API_KEY` oraz `OPENAI_API_KEY`.
+- `modelOverrides` jest domyślnie włączone; `modelOverrides.allowProvider` domyślnie ma wartość `false` (wymaga opt-in).
+- Klucze API mają wartości zapasowe z `ELEVENLABS_API_KEY`/`XI_API_KEY` oraz `OPENAI_API_KEY`.
- `openai.baseUrl` nadpisuje punkt końcowy OpenAI TTS. Kolejność rozwiązywania 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.
@@ -2013,7 +2137,7 @@ Zmienne nie rozróżniają wielkości liter. `{think}` jest aliasem dla `{thinki
## Talk
-Wartości domyślne dla trybu Talk (macOS/iOS/Android).
+Ustawienia domyślne dla trybu Talk (macOS/iOS/Android).
```json5
{
@@ -2039,9 +2163,9 @@ Wartości 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 wracają do `ELEVENLABS_VOICE_ID` lub `SAG_VOICE_ID`.
-- `providers.*.apiKey` akceptuje zwykłe ciągi znaków albo obiekty SecretRef.
-- Zapasowa wartość `ELEVENLABS_API_KEY` ma zastosowanie tylko wtedy, gdy nie skonfigurowano klucza API Talk.
+- Identyfikatory głosów mają wartości zapasowe z `ELEVENLABS_VOICE_ID` lub `SAG_VOICE_ID`.
+- `providers.*.apiKey` akceptuje jawne ciągi znaków lub obiekty SecretRef.
+- Wartość zapasowa `ELEVENLABS_API_KEY` ma zastosowanie tylko wtedy, gdy nie skonfigurowano klucza API Talk.
- `providers.*.voiceAliases` pozwala dyrektywom Talk używać przyjaznych nazw.
- `silenceTimeoutMs` kontroluje, 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`).
@@ -2053,35 +2177,35 @@ Wartości domyślne dla trybu Talk (macOS/iOS/Android).
`tools.profile` ustawia bazową listę dozwolonych przed `tools.allow`/`tools.deny`:
-Lokalny onboarding domyślnie ustawia nowe lokalne konfiguracje na `tools.profile: "coding"`, gdy pole nie jest ustawione (istniejące jawne profile są zachowywane).
+Lokalny onboarding domyślnie ustawia w nowych lokalnych konfiguracjach `tools.profile: "coding"`, gdy nie jest ustawione (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` |
-| `messaging` | `group:messaging`, `sessions_list`, `sessions_history`, `sessions_send`, `session_status` |
-| `full` | Bez ograniczeń (tak samo jak brak ustawienia) |
+| `messaging` | `group:messaging`, `sessions_list`, `sessions_history`, `sessions_send`, `session_status` |
+| `full` | Brak ograniczeń (tak samo jak brak ustawienia) |
### Grupy narzędzi
-| Grupa | Narzędzia |
-| ------------------ | ------------------------------------------------------------------------------------------------------------------------ |
-| `group:runtime` | `exec`, `process`, `code_execution` (`bash` jest akceptowane jako alias dla `exec`) |
-| `group:fs` | `read`, `write`, `edit`, `apply_patch` |
+| Grupa | Narzędzia |
+| ------------------ | ----------------------------------------------------------------------------------------------------------------------- |
+| `group:runtime` | `exec`, `process`, `code_execution` (`bash` jest akceptowane jako alias `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` |
-| `group:web` | `web_search`, `x_search`, `web_fetch` |
-| `group:ui` | `browser`, `canvas` |
-| `group:automation` | `cron`, `gateway` |
-| `group:messaging` | `message` |
-| `group:nodes` | `nodes` |
-| `group:agents` | `agents_list` |
-| `group:media` | `image`, `image_generate`, `video_generate`, `tts` |
-| `group:openclaw` | Wszystkie wbudowane narzędzia (z wyłączeniem Pluginów dostawców) |
+| `group:memory` | `memory_search`, `memory_get` |
+| `group:web` | `web_search`, `x_search`, `web_fetch` |
+| `group:ui` | `browser`, `canvas` |
+| `group:automation` | `cron`, `gateway` |
+| `group:messaging` | `message` |
+| `group:nodes` | `nodes` |
+| `group:agents` | `agents_list` |
+| `group:media` | `image`, `image_generate`, `video_generate`, `tts` |
+| `group:openclaw` | Wszystkie wbudowane narzędzia (z wyłączeniem Pluginów dostawców) |
### `tools.allow` / `tools.deny`
-Globalna polityka zezwalania/zabraniania narzędzi (deny wygrywa). Nierozróżniająca wielkości liter, obsługuje wildcardy `*`. Stosowana nawet wtedy, gdy sandbox Docker jest wyłączony.
+Globalna polityka dozwalania/odrzucania narzędzi (odrzucenie ma pierwszeństwo). Nierozróżniająca wielkości liter, obsługuje wildcardy `*`. Stosowana nawet wtedy, gdy sandbox Docker jest wyłączony.
```json5
{
@@ -2107,7 +2231,7 @@ Dodatkowo ogranicza narzędzia dla określonych dostawców lub modeli. Kolejnoś
### `tools.elevated`
-Kontroluje podwyższony dostęp `exec` poza sandbox:
+Steruje dostępem elevated exec poza sandboxem:
```json5
{
@@ -2124,8 +2248,8 @@ Kontroluje podwyższony dostęp `exec` poza sandbox:
```
- Nadpisanie per agent (`agents.list[].tools.elevated`) może tylko dalej ograniczać.
-- `/elevated on|off|ask|full` zapisuje stan per sesja; dyrektywy inline dotyczą pojedynczej wiadomości.
-- Podwyższone `exec` omija sandboxing i używa skonfigurowanej ścieżki ucieczki (`gateway` domyślnie albo `node`, gdy celem exec jest `node`).
+- `/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`).
### `tools.exec`
@@ -2149,7 +2273,7 @@ Kontroluje podwyższony dostęp `exec` poza sandbox:
### `tools.loopDetection`
-Kontrole bezpieczeństwa pętli narzędzi są **domyślnie wyłączone**. Ustaw `enabled: true`, aby włączyć wykrywanie.
+Kontrole bezpieczeństwa pętli narzędzi są **domyślnie wyłączone**. Ustaw `enabled: true`, aby aktywować wykrywanie.
Ustawienia można zdefiniować globalnie w `tools.loopDetection` i nadpisywać per agent w `agents.list[].tools.loopDetection`.
```json5
@@ -2171,14 +2295,14 @@ Ustawienia można zdefiniować globalnie w `tools.loopDetection` i nadpisywać p
}
```
-- `historySize`: maksymalna historia wywołań narzędzi zachowywana do analizy pętli.
+- `historySize`: maksymalna historia wywołań narzędzi przechowywana do analizy pętli.
- `warningThreshold`: próg powtarzającego się wzorca bez postępu dla ostrzeżeń.
-- `criticalThreshold`: wyższy próg powtórzeń do blokowania krytycznych pętli.
+- `criticalThreshold`: wyższy próg powtarzania dla blokowania krytycznych pętli.
- `globalCircuitBreakerThreshold`: próg twardego zatrzymania dla dowolnego przebiegu bez postępu.
-- `detectors.genericRepeat`: ostrzegaj o powtarzanych wywołaniach tego samego narzędzia z tymi samymi argumentami.
-- `detectors.knownPollNoProgress`: ostrzegaj/blokuj dla znanych narzędzi poll (`process.poll`, `command_status` itd.).
-- `detectors.pingPong`: ostrzegaj/blokuj dla naprzemiennych wzorców par bez postępu.
-- Jeśli `warningThreshold >= criticalThreshold` albo `criticalThreshold >= globalCircuitBreakerThreshold`, walidacja kończy się błędem.
+- `detectors.genericRepeat`: ostrzega o powtarzanych wywołaniach tego samego narzędzia z tymi samymi argumentami.
+- `detectors.knownPollNoProgress`: ostrzega/blokuje znane narzędzia odpytywania (`process.poll`, `command_status` itd.).
+- `detectors.pingPong`: ostrzega/blokuje naprzemienne wzorce par bez postępu.
+- Jeśli `warningThreshold >= criticalThreshold` lub `criticalThreshold >= globalCircuitBreakerThreshold`, walidacja kończy się błędem.
### `tools.web`
@@ -2212,7 +2336,7 @@ Ustawienia można zdefiniować globalnie w `tools.loopDetection` i nadpisywać p
### `tools.media`
-Konfiguruje rozumienie mediów przychodzących (obraz/audio/wideo):
+Konfiguruje rozumienie przychodzących mediów (obraz/audio/wideo):
```json5
{
@@ -2244,7 +2368,7 @@ Konfiguruje rozumienie mediów przychodzących (obraz/audio/wideo):
}
```
-
+
**Wpis dostawcy** (`type: "provider"` lub pominięte):
@@ -2254,22 +2378,22 @@ Konfiguruje rozumienie mediów przychodzących (obraz/audio/wideo):
**Wpis CLI** (`type: "cli"`):
-- `command`: plik wykonywalny do uruchomienia
+- `command`: wykonywalne polecenie do uruchomienia
- `args`: argumenty szablonowe (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 przejście do kolejnego wpisu.
+- Błędy powodują przejście do kolejnego wpisu.
-Uwierzytelnianie dostawców odbywa się według standardowej kolejności: `auth-profiles.json` → zmienne środowiskowe → `models.providers.*.apiKey`.
+Uwierzytelnianie dostawcy przebiega według standardowej kolejności: `auth-profiles.json` → zmienne środowiskowe → `models.providers.*.apiKey`.
-**Pola asynchronicznego ukończenia:**
+**Pola async completion:**
-- `asyncCompletion.directSend`: gdy `true`, ukończone asynchroniczne zadania `music_generate`
+- `asyncCompletion.directSend`: gdy `true`, zakończone zadania asynchroniczne `music_generate`
i `video_generate` najpierw próbują bezpośredniego dostarczenia do kanału. Domyślnie: `false`
- (starsza ścieżka wybudzenia sesji żądającego/dostarczenia modelu).
+ (starsza ścieżka wybudzania sesji żądającej/dostarczania modelu).
@@ -2288,9 +2412,9 @@ Uwierzytelnianie dostawców odbywa się według standardowej kolejności: `auth-
### `tools.sessions`
-Kontroluje, które sesje mogą być celem dla narzędzi sesji (`sessions_list`, `sessions_history`, `sessions_send`).
+Kontroluje, które sesje mogą być wskazywane przez narzędzia sesji (`sessions_list`, `sessions_history`, `sessions_send`).
-Domyślnie: `tree` (bieżąca sesja + sesje uruchomione przez nią, takie jak subagenci).
+Domyślnie: `tree` (bieżąca sesja + sesje utworzone przez nią, takie jak subagenci).
```json5
{
@@ -2306,10 +2430,10 @@ Domyślnie: `tree` (bieżąca sesja + sesje uruchomione przez nią, takie jak su
Uwagi:
- `self`: tylko bieżący klucz sesji.
-- `tree`: bieżąca sesja + sesje uruchomione przez bieżącą sesję (subagenci).
-- `agent`: dowolna sesja należąca do bieżącego identyfikatora agenta (może obejmować innych użytkowników, jeśli uruchamiasz sesje per nadawca pod tym samym identyfikatorem agenta).
+- `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 nadawca pod tym samym identyfikatorem agenta).
- `all`: dowolna sesja. Kierowanie między agentami nadal wymaga `tools.agentToAgent`.
-- Ograniczenie sandbox: gdy bieżąca sesja jest objęta sandboxem i `agents.defaults.sandbox.sessionToolsVisibility="spawned"`, widoczność jest wymuszana na `tree`, nawet jeśli `tools.sessions.visibility="all"`.
+- Ograniczenie sandboxa: gdy bieżąca sesja jest sandboxowana i `agents.defaults.sandbox.sessionToolsVisibility="spawned"`, widoczność jest wymuszana na `tree`, nawet jeśli `tools.sessions.visibility="all"`.
### `tools.sessions_spawn`
@@ -2334,15 +2458,15 @@ Kontroluje 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 obszarze roboczym dziecka w `.openclaw/attachments//` z `.manifest.json`.
-- Treść załączników jest automatycznie redagowana z trwałości transkryptu.
-- Wejścia base64 są walidowane przy użyciu ścisłych kontroli alfabetu/dopełnienia oraz zabezpieczenia rozmiaru przed dekodowaniem.
+- Pliki są materializowane w workspace potomnym pod `.openclaw/attachments//` z `.manifest.json`.
+- Zawartość załączników jest automatycznie redagowana z utrwalania transkryptu.
+- Wejścia base64 są walidowane przy użyciu ścisłych kontroli alfabetu/dopełnienia i zabezpieczenia rozmiaru przed dekodowaniem.
- Uprawnienia plików to `0700` dla katalogów i `0600` dla plików.
-- Czyszczenie podąża za polityką `cleanup`: `delete` zawsze usuwa załączniki; `keep` zachowuje je tylko wtedy, gdy `retainOnSessionKeep: true`.
+- Czyszczenie zależy od polityki `cleanup`: `delete` zawsze usuwa załączniki; `keep` zachowuje je tylko wtedy, gdy `retainOnSessionKeep: true`.
### `tools.experimental`
-Flagi eksperymentalnych wbudowanych narzędzi. Domyślnie wyłączone, chyba że zastosowanie ma reguła automatycznego włączania strict-agentic GPT-5.
+Flagi eksperymentalnych wbudowanych narzędzi. Domyślnie wyłączone, chyba że ma zastosowanie reguła automatycznego włączenia strict-agentic GPT-5.
```json5
{
@@ -2357,8 +2481,8 @@ Flagi eksperymentalnych wbudowanych narzędzi. Domyślnie wyłączone, chyba że
Uwagi:
- `planTool`: włącza strukturalne narzędzie `update_plan` do śledzenia nietrywialnej pracy wieloetapowej.
-- Domyślnie: `false`, chyba że `agents.defaults.embeddedPi.executionContract` (albo nadpisanie per agent) jest ustawione na `"strict-agentic"` dla przebiegu OpenAI lub OpenAI Codex z rodziny GPT-5. Ustaw `true`, aby wymusić narzędzie poza tym zakresem, albo `false`, aby pozostawić je wyłączone nawet dla przebiegów strict-agentic GPT-5.
-- Gdy włączone, system prompt dodaje także wskazówki użycia, aby model używał go tylko do istotnej pracy i utrzymywał najwyżej jeden krok `in_progress`.
+- 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 włączone, system prompt również dodaje 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`
@@ -2378,16 +2502,16 @@ Uwagi:
}
```
-- `model`: domyślny model dla uruchomionych subagentów. Jeśli pominięte, 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).
+- `model`: domyślny model dla uruchamianych subagentów. Jeśli pominięty, subagenci dziedziczą model wywołującego.
+- `allowAgents`: domyślna lista dozwolonych identyfikatorów agentów docelowych 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.
- Polityka narzędzi per subagent: `tools.subagents.tools.allow` / `tools.subagents.tools.deny`.
---
-## Niestandardowi dostawcy i base URL
+## Niestandardowi dostawcy i base URL-e
-OpenClaw używa wbudowanego katalogu modeli. Dodaj niestandardowych dostawców przez `models.providers` w konfiguracji albo `~/.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
{
@@ -2419,13 +2543,13 @@ 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` w agent `models.json` mają pierwszeństwo.
+ - 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 config/auth-profile.
- - Wartości `apiKey` dostawców zarządzanych przez SecretRef są odświeżane ze znaczników źródła (`ENV_VAR_NAME` dla referencji env, `secretref-managed` dla referencji 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 referencji env, `secretref-managed` dla referencji file/exec).
+ - Wartości `apiKey` dostawcy zarządzanego 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 dostawcy zarządzanego 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` agenta wracają do `models.providers` w konfiguracji.
- - Pasujące `contextWindow`/`maxTokens` modelu używają wyższej wartości spośród jawnej konfiguracji i niejawnych wartości katalogu.
- - Pasujące `contextTokens` modelu zachowuje jawny limit runtime, gdy jest obecny; użyj go, aby ograniczyć efektywny kontekst bez zmieniania natywnych metadanych modelu.
+ - Pasujące `contextWindow`/`maxTokens` modelu używają wyższej wartości z jawnej konfiguracji i domyślnych wartości katalogu.
+ - Pasujące `contextTokens` modelu zachowuje jawny limit runtime, 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 nadpisał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.
@@ -2434,28 +2558,28 @@ OpenClaw używa wbudowanego katalogu modeli. Dodaj niestandardowych dostawców p
- `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` itd.).
-- `models.providers.*.apiKey`: poświadczenie dostawcy (preferowane SecretRef/podstawienie env).
+- `models.providers.*.apiKey`: poświadczenie dostawcy (preferuj podstawienie SecretRef/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świadczeń w nagłówku `Authorization`, gdy jest to wymagane.
-- `models.providers.*.baseUrl`: bazowy adres URL nadrzędnego API.
-- `models.providers.*.headers`: dodatkowe statyczne nagłówki do routingu proxy/tenant.
-- `models.providers.*.request`: nadpisania transportu dla żądań HTTP model-provider.
- - `request.headers`: dodatkowe nagłówki (scalane z domyślnymi dostawcy). Wartości akceptują SecretRef.
+- `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 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 ustawieniami 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 proxy HTTP. Tryby: `"env-proxy"` (użyj zmiennych środowiskowych `HTTP_PROXY`/`HTTPS_PROXY`), `"explicit-proxy"` (z `url`). Oba tryby akceptują opcjonalny podobiekt `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 pod-obiekt `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 do prywatnych, CGNAT lub podobnych zakresów, przez zabezpieczenie pobierania HTTP dostawcy (opt-in operatora dla zaufanych, samohostowanych punktów końcowych zgodnych z OpenAI). WebSocket używa tego samego `request` dla nagłówków/TLS, ale nie dla tej bramki SSRF fetch. Domyślnie `false`.
+ - `request.allowPrivateNetwork`: gdy `true`, zezwala na HTTPS do `baseUrl`, gdy DNS rozwiązuje się do prywatnych, CGNAT lub podobnych zakresów, przez zabezpieczenie pobierania HTTP dostawcy (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 tego zabezpieczenia SSRF pobierania. 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 mniejszego efektywnego budżetu 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 runtime 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, które obsługują tylko ciągi znaków. Gdy `true`, OpenClaw spłaszcza czysto tekstowe tablice `messages[].content` do zwykłych ciągów przed wysłaniem żądania.
+- `models.providers.*.models.*.contextWindow`: natywne metadane okna kontekstu modelu.
+- `models.providers.*.models.*.contextTokens`: opcjonalny limit kontekstu runtime. 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 różny od `api.openai.com`) OpenClaw wymusza to w runtime na `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 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 katalog ustawień automatycznego wykrywania Bedrock.
-- `plugins.entries.amazon-bedrock.config.discovery.enabled`: włącz/wyłącz niejawne wykrywanie.
-- `plugins.entries.amazon-bedrock.config.discovery.region`: region AWS do wykrywania.
-- `plugins.entries.amazon-bedrock.config.discovery.providerFilter`: opcjonalny filtr identyfikatora dostawcy dla wykrywania ukierunkowanego.
-- `plugins.entries.amazon-bedrock.config.discovery.refreshInterval`: interwał odpytywania dla odświeżania wykrywania.
+- `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 do wykrywania ukierunkowanego.
+- `plugins.entries.amazon-bedrock.config.discovery.refreshInterval`: interwał odpytywania do 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.
@@ -2512,7 +2636,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 albo odwołań `opencode-go/...` dla katalogu Go. Skrót: `openclaw onboard --auth-choice opencode-zen` albo `openclaw onboard --auth-choice opencode-go`.
+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`.
@@ -2572,10 +2696,10 @@ Ustaw `ZAI_API_KEY`. `z.ai/*` i `z-ai/*` są akceptowanymi aliasami. Skrót: `op
}
```
-Dla punktu końcowego China: `baseUrl: "https://api.moonshot.cn/v1"` albo `openclaw onboard --auth-choice moonshot-api-key-cn`.
+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 ogłaszają zgodność użycia strumieniowania na współdzielonym
-transporcie `openai-completions`, a OpenClaw opiera to na możliwościach punktu końcowego,
+transporcie `openai-completions`, a OpenClaw opiera się tu na możliwościach punktu końcowego,
a nie wyłącznie na wbudowanym identyfikatorze dostawcy.
@@ -2594,7 +2718,7 @@ a nie wyłącznie na wbudowanym identyfikatorze dostawcy.
}
```
-Zgodny z Anthropic, wbudowany dostawca. Skrót: `openclaw onboard --auth-choice kimi-code-api-key`.
+Wbudowany dostawca zgodny z Anthropic. Skrót: `openclaw onboard --auth-choice kimi-code-api-key`.
@@ -2674,11 +2798,11 @@ Base URL powinien pomijać `/v1` (klient Anthropic dopisuje je sam). Skrót: `op
```
Ustaw `MINIMAX_API_KEY`. Skróty:
-`openclaw onboard --auth-choice minimax-global-api` albo
+`openclaw onboard --auth-choice minimax-global-api` lub
`openclaw onboard --auth-choice minimax-cn-api`.
-Katalog modeli domyślnie obejmuje 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` albo
+chyba że jawnie ustawisz `thinking`. `/fast on` lub
`params.fastMode: true` przepisuje `MiniMax-M2.7` na
`MiniMax-M2.7-highspeed`.
@@ -2686,7 +2810,7 @@ chyba że jawnie ustawisz `thinking`. `/fast on` albo
-Zobacz [Local Models](/pl/gateway/local-models). W skrócie: uruchom duży model lokalny przez LM Studio Responses API na odpowiednio wydajnym sprzęcie; zachowaj modele hostowane scalone jako fallback.
+Zobacz [Local Models](/pl/gateway/local-models). W skrócie: uruchamiaj duży model lokalny przez LM Studio Responses API na odpowiednio wydajnym sprzęcie; zachowaj hostowane modele jako scalone dla fallbacku.
@@ -2717,18 +2841,18 @@ Zobacz [Local Models](/pl/gateway/local-models). W skrócie: uruchom duży model
}
```
-- `allowBundled`: opcjonalna lista dozwolonych tylko dla bundled skills (Skills zarządzane/workspace pozostają bez zmian).
+- `allowBundled`: opcjonalna lista dozwolonych tylko dla bundled Skills (Skills zarządzane/workspace bez zmian).
- `load.extraDirs`: dodatkowe współdzielone katalogi główne Skills (najniższy priorytet).
-- `install.preferBrew`: gdy true, preferuje instalatory Homebrew, gdy `brew` jest
- dostępne, zanim wróci do innych rodzajów instalatorów.
+- `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`
(`npm` | `pnpm` | `yarn` | `bun`).
-- `entries..enabled: false` wyłącza Skill nawet wtedy, gdy jest bundled/zainstalowany.
-- `entries..apiKey`: wygodny skrót dla Skills deklarujących podstawową zmienną env (zwykły ciąg znaków albo obiekt SecretRef).
+- `entries..enabled: false` wyłącza Skill nawet jeśli jest bundled/zainstalowany.
+- `entries..apiKey`: wygodne ustawienie dla Skills deklarujących główną zmienną env (jawny ciąg znaków lub obiekt SecretRef).
---
-## Pluginy
+## Plugins
```json5
{
@@ -2753,36 +2877,36 @@ Zobacz [Local Models](/pl/gateway/local-models). W skrócie: uruchom duży model
```
- Ładowane z `~/.openclaw/extensions`, `/.openclaw/extensions` oraz `plugins.load.paths`.
-- Wykrywanie akceptuje natywne Pluginy OpenClaw oraz zgodne bundlery Codex i Claude, w tym bundlery Claude w domyślnym układzie bez manifestu.
+- Wykrywanie akceptuje natywne Plugins OpenClaw oraz zgodne bundli Codex i Claude, w tym bundli Claude o domyślnym układzie bez manifestu.
- **Zmiany konfiguracji wymagają restartu Gateway.**
-- `allow`: opcjonalna lista dozwolonych (ładują się tylko wymienione Pluginy). `deny` ma pierwszeństwo.
+- `allow`: opcjonalna lista dozwolonych (ładują się tylko wymienione Plugins). `deny` ma pierwszeństwo.
- `plugins.entries..apiKey`: wygodne pole klucza API na poziomie Pluginu (gdy obsługiwane przez Plugin).
- `plugins.entries..env`: mapa zmiennych środowiskowych o zakresie Pluginu.
-- `plugins.entries..hooks.allowPromptInjection`: gdy `false`, rdzeń blokuje `before_prompt_build` i ignoruje pola mutują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 bundle.
-- `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..hooks.allowPromptInjection`: gdy `false`, core blokuje `before_prompt_build` i ignoruje pola mutujące prompt ze starszego `before_agent_start`, zachowując przy tym starsze `modelOverride` i `providerOverride`. Dotyczy natywnych hooków Pluginów 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 przebiegów subagenta w tle.
- `plugins.entries..subagent.allowedModels`: opcjonalna lista dozwolonych kanonicznych celów `provider/model` dla zaufanych nadpisań subagentów. Używaj `"*"` tylko wtedy, gdy celowo chcesz zezwolić na dowolny model.
-- `plugins.entries..config`: obiekt konfiguracji zdefiniowany przez Plugin (walidowany przez natywny schemat Pluginów OpenClaw, gdy jest dostępny).
-- `plugins.entries.firecrawl.config.webFetch`: ustawienia dostawcy pobierania web Firecrawl.
- - `apiKey`: klucz API Firecrawl (akceptuje SecretRef). Wartość zapasowa pochodzi z `plugins.entries.firecrawl.config.webSearch.apiKey`, starszego `tools.web.fetch.firecrawl.apiKey` albo zmiennej środowiskowej `FIRECRAWL_API_KEY`.
- - `baseUrl`: bazowy adres URL API Firecrawl (domyślnie: `https://api.firecrawl.dev`).
- - `onlyMainContent`: wyodrębniaj tylko główną treść ze stron (domyślnie: `true`).
- - `maxAgeMs`: maksymalny wiek cache w milisekundach (domyślnie: `172800000` / 2 dni).
+- `plugins.entries..config`: obiekt konfiguracji zdefiniowany przez Plugin (walidowany względem natywnego schematu Pluginu OpenClaw, gdy jest dostępny).
+- `plugins.entries.firecrawl.config.webFetch`: ustawienia dostawcy web-fetch Firecrawl.
+ - `apiKey`: klucz API Firecrawl (akceptuje SecretRef). Wartość zapasowa pochodzi z `plugins.entries.firecrawl.config.webSearch.apiKey`, starszego `tools.web.fetch.firecrawl.apiKey` lub zmiennej środowiskowej `FIRECRAWL_API_KEY`.
+ - `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 pamięci podręcznej w milisekundach (domyślnie: `172800000` / 2 dni).
- `timeoutSeconds`: limit czasu żądania scrapingu w sekundach (domyślnie: `60`).
-- `plugins.entries.xai.config.xSearch`: ustawienia xAI X Search (wyszukiwanie web Grok).
+- `plugins.entries.xai.config.xSearch`: ustawienia xAI X Search (wyszukiwanie webowe 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. Fazy i progi znajdziesz 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 * * *"`).
- - polityka faz i progi są szczegółami implementacji (nie są kluczami konfiguracji widocznymi dla użytkownika).
-- Pełna konfiguracja pamięci znajduje się w [Odwołaniu do konfiguracji pamięci](/pl/reference/memory-config):
+- `plugins.entries.memory-core.config.dreaming`: ustawienia memory Dreaming. Zobacz [Dreaming](/pl/concepts/dreaming), aby poznać fazy i progi.
+ - `enabled`: główny przełącznik Dreaming (domyślnie `false`).
+ - `frequency`: harmonogram Cron dla każdego pełnego przebiegu Dreaming (domyślnie `"0 3 * * *"`).
+ - polityka faz i progi są szczegółami implementacji (nie są kluczami konfiguracji przeznaczonymi dla użytkownika).
+- Pełna konfiguracja pamięci znajduje się w [Memory configuration reference](/pl/reference/memory-config):
- `agents.defaults.memorySearch.*`
- `memory.backend`
- `memory.citations`
- `memory.qmd.*`
- `plugins.entries.memory-core.config.dreaming`
-- Włączone Pluginy bundli Claude mogą także wnosić osadzone domyślne ustawienia Pi z `settings.json`; OpenClaw stosuje je jako oczyszczone ustawienia agentów, a nie jako surowe patche konfiguracji OpenClaw.
-- `plugins.slots.memory`: wybiera identyfikator aktywnego Pluginu pamięci albo `"none"`, aby wyłączyć Pluginy pamięci.
+- Włączone Plugins z bundli 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 łatki konfiguracji OpenClaw.
+- `plugins.slots.memory`: wybiera identyfikator aktywnego Pluginu pamięci albo `"none"`, aby wyłączyć Plugins 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`.
@@ -2792,7 +2916,7 @@ Zobacz [Plugins](/pl/tools/plugin).
---
-## Przeglądarka
+## Browser
```json5
{
@@ -2829,28 +2953,28 @@ Zobacz [Plugins](/pl/tools/plugin).
```
- `evaluateEnabled: false` wyłącza `act:evaluate` i `wait --fn`.
-- `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 po sieci prywatnej.
-- W trybie ścisłym zdalne punkty końcowe profilu CDP (`profiles.*.cdpUrl`) podlegają temu samemu blokowaniu sieci prywatnej podczas kontroli osiągalności/wykrywania.
+- `ssrfPolicy.dangerouslyAllowPrivateNetwork` jest wyłączone, gdy nie jest ustawione, więc nawigacja Browser pozostaje domyślnie restrykcyjna.
+- Ustaw `ssrfPolicy.dangerouslyAllowPrivateNetwork: true` tylko wtedy, gdy celowo ufasz nawigacji Browser do sieci prywatnych.
+- W trybie ścisłym zdalne punkty końcowe profili CDP (`profiles.*.cdpUrl`) podlegają temu samemu blokowaniu sieci prywatnych podczas kontroli osiągalności/wykrywania.
- `ssrfPolicy.allowPrivateNetwork` pozostaje obsługiwane jako starszy alias.
- W trybie ścisłym używaj `ssrfPolicy.hostnameAllowlist` i `ssrfPolicy.allowedHostnames` dla jawnych wyjątków.
-- Zdalne profile są tylko do podłączania (start/stop/reset są wyłączone).
+- Profile zdalne są tylko do podłączania (start/stop/reset 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 WebSocket DevTools.
-- Profile `existing-session` są tylko dla hosta i używają Chrome MCP zamiast CDP.
-- Profile `existing-session` mogą ustawiać `userDataDir`, aby wskazać określony
- profil przeglądarki opartej na Chromium, taki jak Brave albo Edge.
-- Profile `existing-session` zachowują bieżące ograniczenia ścieżki Chrome MCP:
- działania oparte na snapshot/ref zamiast targetowania selektorem CSS, hooki
- przesyłania jednego pliku, brak nadpisań limitu czasu dialogów, brak `wait --load networkidle`
- oraz brak `responsebody`, eksportu PDF, przechwytywania pobrań ani działań wsadowych.
-- Lokalnie zarządzane profile `openclaw` automatycznie przypisują `cdpPort` i `cdpUrl`; jawnie
+ gdy dostawca przekazuje bezpośredni URL DevTools WebSocket.
+- Profile `existing-session` działają tylko na hoście i używają Chrome MCP zamiast CDP.
+- 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 limity tras Chrome MCP:
+ działania oparte na snapshot/ref zamiast targetowania selektorami CSS, hooki
+ przesyłania jednego pliku, brak nadpisań limitu czasu dialogów, brak `wait --load networkidle` oraz brak
+ `responsebody`, eksportu PDF, przechwytywania pobrań i 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 jest oparta na Chromium → Chrome → Brave → Edge → Chromium → Chrome Canary.
- Usługa sterowania: tylko loopback (port wyprowadzany z `gateway.port`, domyślnie `18791`).
-- `extraArgs` dopisuje dodatkowe flagi uruchamiania do lokalnego startu Chromium (na przykład
- `--disable-gpu`, rozmiar okna albo flagi debugowania).
+- `extraArgs` dopisuje dodatkowe flagi uruchomienia do lokalnego startu Chromium (na przykład
+ `--disable-gpu`, rozmiar okna lub flagi debugowania).
---
@@ -2868,8 +2992,8 @@ Zobacz [Plugins](/pl/tools/plugin).
}
```
-- `seamColor`: kolor akcentu dla chromu natywnego UI aplikacji (odcień dymku trybu Talk itd.).
-- `assistant`: nadpisanie tożsamości interfejsu Control UI. Wartość zapasowa pochodzi z aktywnej tożsamości agenta.
+- `seamColor`: kolor akcentu dla chrome natywnego UI aplikacji (odcień dymku trybu Talk itd.).
+- `assistant`: nadpisanie tożsamości Control UI. Wartość zapasowa pochodzi z aktywnej tożsamości agenta.
---
@@ -2938,45 +3062,45 @@ Zobacz [Plugins](/pl/tools/plugin).
-- `mode`: `local` (uruchom Gateway) albo `remote` (połącz ze zdalnym Gateway). Gateway odmawia uruchomienia, jeśli nie jest to `local`.
+- `mode`: `local` (uruchom Gateway) lub `remote` (połącz ze zdalnym Gateway). Gateway odmawia uruchomienia, jeśli nie jest `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) albo `custom`.
+- `bind`: `auto`, `loopback` (domyślnie), `lan` (`0.0.0.0`), `tailnet` (tylko 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 Docker**: domyślne wiązanie `loopback` nasłuchuje na `127.0.0.1` wewnątrz kontenera. Przy sieci bridge Dockera (`-p 18789:18789`) ruch dociera 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. Wiązania inne niż loopback wymagają uwierzytelniania Gateway. W praktyce oznacza to współdzielony token/hasło albo proxy reverse proxy świadome tożsamości z `gateway.auth.mode: "trusted-proxy"`. Kreator onboardingu domyślnie generuje token.
-- Jeśli zarówno `gateway.auth.token`, jak i `gateway.auth.password` są skonfigurowane (w tym przez SecretRefs), ustaw jawnie `gateway.auth.mode` na `token` albo `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 uwierzytelniania. Używaj tylko dla zaufanych lokalnych konfiguracji local loopback; ten tryb celowo nie jest oferowany w promptach onboardingu.
-- `gateway.auth.mode: "trusted-proxy"`: deleguj uwierzytelnianie do reverse proxy świadomego tożsamości i ufaj 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ń uwierzytelniania trusted-proxy.
-- `gateway.auth.allowTailscale`: gdy `true`, nagłówki tożsamości Tailscale Serve mogą spełniać uwierzytelnianie Control UI/WebSocket (weryfikowane przez `tailscale whois`). Punkty końcowe HTTP API **nie** używają tego uwierzytelniania nagłówkami Tailscale; zamiast tego stosują zwykły tryb uwierzytelniania 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 uwierzytelniania. Stosowany per adres IP klienta i per zakres uwierzytelniania (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 niepowodzenia. Współbieżne błędne próby od tego samego klienta mogą więc uruchomić limiter przy drugim żądaniu, zamiast aby oba przeszły wyścigowo jako zwykłe niedopasowania.
- - `gateway.auth.rateLimit.exemptLoopback` ma domyślnie wartość `true`; ustaw `false`, gdy celowo chcesz objąć ograniczaniem także ruch localhost (dla konfiguracji testowych lub ścisłych wdrożeń proxy).
-- Próby uwierzytelniania WS pochodzące z przeglądarki są zawsze ograniczane z wyłączonym wyjątkiem loopback (defense-in-depth przeciw brute force localhost z poziomu przeglądarki).
-- Na loopback te blokady pochodzące z przeglądarki są izolowane per znormalizowana
- wartość `Origin`, więc powtarzające się niepowodzenia z jednego źródła localhost nie blokują automatycznie
+- **Uwaga dotycząca Dockera**: domyślny bind `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. Bindy 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 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 uwierzytelniania. Używaj tylko dla zaufanych lokalnych konfiguracji local loopback; ten tryb celowo nie jest oferowany przez prompty onboardingowe.
+- `gateway.auth.mode: "trusted-proxy"`: deleguje uwierzytelnianie 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 na tym samym hoście przez loopback nie spełniają wymagań uwierzytelniania trusted-proxy.
+- `gateway.auth.allowTailscale`: gdy `true`, nagłówki tożsamości Tailscale Serve mogą spełniać uwierzytelnianie Control UI/WebSocket (weryfikowane przez `tailscale whois`). Punkty końcowe HTTP API **nie** używają tego uwierzytelniania nagłówkiem Tailscale; stosują normalny tryb uwierzytelniania HTTP Gateway. Ten beztokenowy przepływ zakłada, że host Gateway jest zaufany. Domyślnie `true`, gdy `tailscale.mode = "serve"`.
+- `gateway.auth.rateLimit`: opcjonalny limiter nieudanych prób uwierzytelniania. 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 porażki. Współbieżne błędne próby od tego samego klienta mogą więc uruchomić limiter przy drugim żądaniu zamiast przejść równolegle jako zwykłe niedopasowania.
+ - `gateway.auth.rateLimit.exemptLoopback` domyślnie ma wartość `true`; ustaw `false`, jeśli celowo chcesz ograniczać ruchem także localhost (dla środowisk testowych lub ścisłych wdrożeń proxy).
+- Próby uwierzytelniania WS pochodzące z przeglądarki są zawsze ograniczane z wyłączonym wyjątkiem dla loopbacka (dodatkowa warstwa obrony przed brutalnym atakiem z przeglądarki na localhost).
+- Na loopback te blokady pochodzące z przeglądarki są izolowane per znormalizowana 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, wiązanie loopback) albo `funnel` (publiczne, wymaga uwierzytelniania).
-- `controlUi.allowedOrigins`: jawna lista dozwolonych źródeł przeglądarki dla połączeń Gateway WebSocket. Wymagana, gdy oczekiwani są klienci przeglądarkowi z originów innych niż loopback.
-- `controlUi.dangerouslyAllowHostHeaderOriginFallback`: niebezpieczny tryb, który włącza zapasowy mechanizm origin oparty na nagłówku Host dla wdrożeń, które celowo polegają na tej polityce origin.
-- `remote.transport`: `ssh` (domyślnie) albo `direct` (ws/wss). Dla `direct` `remote.url` musi mieć postać `ws://` albo `wss://`.
-- `OPENCLAW_ALLOW_INSECURE_PRIVATE_WS=1`: klienckie nadpisanie typu break-glass, które dopuszcza jawny tekst `ws://` do zaufanych adresów IP sieci prywatnej; domyślnie zwykły tekst pozostaje dozwolony tylko dla loopback.
+- `tailscale.mode`: `serve` (tylko tailnet, bind loopback) lub `funnel` (publiczne, wymaga auth).
+- `controlUi.allowedOrigins`: jawna lista dozwolonych źródeł przeglądarki dla połączeń Gateway WebSocket. Wymagana, gdy oczekiwani są klienci przeglądarkowi z innych źródeł niż loopback.
+- `controlUi.dangerouslyAllowHostHeaderOriginFallback`: niebezpieczny tryb włączający fallback źródła oparty na nagłówku Host dla wdrożeń, które celowo opierają się na polityce źródła 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 jawne `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ą uwierzytelniania 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łania z 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.
+- `gateway.push.apns.relay.baseUrl`: bazowy HTTPS URL 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-owi 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`, dołącza tę tożsamość do 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`: przeznaczona wyłącznie do developmentu furtka dla adresów URL przekaźnika HTTP na loopback. Produkcyjne adresy URL przekaźnika powinny pozostać przy HTTPS.
+- `OPENCLAW_APNS_RELAY_ALLOW_HTTP=true`: tylko deweloperska furtka dla URL-i przekaźnika HTTP na loopback. Produkcyjne URL-e przekaźnika 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. Utrzymuj tę wartość większą lub równą `gateway.channelHealthCheckMinutes`. Domyślnie: `30`.
+- `gateway.channelStaleEventThresholdMinutes`: próg nieaktualnego socketu w minutach. Zachowaj wartość większą lub równą `gateway.channelHealthCheckMinutes`. Domyślnie: `30`.
- `gateway.channelMaxRestartsPerHour`: maksymalna liczba restartów monitora zdrowia na kanał/konto w ruchomej godzinie. Domyślnie: `10`.
-- `channels..healthMonitor.enabled`: per-kanałowy opt-out z restartów monitora zdrowia 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.
+- `channels..healthMonitor.enabled`: rezygnacja per kanał z restartów monitora zdrowia przy zachowaniu globalnego monitora.
+- `channels..accounts..healthMonitor.enabled`: nadpisanie per konto dla kanałów z wieloma kontami. 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` jest 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 przekazanego klienta. Wymieniaj tylko proxy, które kontrolujesz. Wpisy loopback są nadal prawidłowe dla konfiguracji wykrywania lokalnego/proxy na tym samym hoście (na przykład Tailscale Serve lub lokalne reverse proxy), ale **nie** kwalifikują żądań loopback do `gateway.auth.mode: "trusted-proxy"`.
+- Jeśli `gateway.auth.token` / `gateway.auth.password` jest jawnie skonfigurowane przez SecretRef i nierozwiązane, rozwiązywanie kończy się bezpiecznie jako zamknięte (bez maskującego zdalnego fallbacku).
+- `trustedProxies`: adresy IP reverse proxy, które kończą TLS lub wstrzykują nagłówki przekazanego klienta. Wymieniaj tylko proxy, które kontrolujesz. Wpisy loopback są nadal prawidłowe dla konfiguracji wykrywania tego samego hosta/proxy 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ę deny).
-- `gateway.tools.allow`: usuwa nazwy narzędzi z domyślnej listy deny HTTP.
+- `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.
@@ -2984,14 +3108,14 @@ Zobacz [Plugins](/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 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 utwardzający odpowiedzi:
- - `gateway.http.securityHeaders.strictTransportSecurity` (ustawiaj tylko dla kontrolowanych przez siebie originów HTTPS; zobacz [Trusted Proxy Auth](/pl/gateway/trusted-proxy-auth#tls-termination-and-hsts))
+ Puste listy dozwolonych są traktowane jako brak ustawienia; użyj `gateway.http.endpoints.responses.files.allowUrl=false`
+ i/lub `gateway.http.endpoints.responses.images.allowUrl=false`, aby wyłączyć pobieranie URL-i.
+- Opcjonalny nagłówek utwardzający odpowiedź:
+ - `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
@@ -3003,7 +3127,7 @@ 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 [Multiple Gateways](/pl/gateway/multiple-gateways).
@@ -3023,11 +3147,11 @@ Zobacz [Multiple Gateways](/pl/gateway/multiple-gateways).
}
```
-- `enabled`: włącza terminację TLS na nasłuchu Gateway (HTTPS/WSS) (domyślnie: `false`).
+- `enabled`: włącza kończenie TLS na listenerze Gateway (HTTPS/WSS) (domyślnie: `false`).
- `autoGenerate`: automatycznie generuje lokalną samopodpisaną parę certyfikat/klucz, gdy nie skonfigurowano jawnych plików; 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; zachowuj ograniczone uprawnienia.
-- `caPath`: opcjonalna ścieżka do pakietu CA do weryfikacji klienta lub niestandardowych łańcuchów zaufania.
+- `keyPath`: ścieżka systemu plików do prywatnego klucza TLS; utrzymuj ograniczone uprawnienia.
+- `caPath`: opcjonalna ścieżka pakietu CA do weryfikacji klienta lub niestandardowych łańcuchów zaufania.
### `gateway.reload`
@@ -3044,10 +3168,10 @@ Zobacz [Multiple Gateways](/pl/gateway/multiple-gateways).
```
- `mode`: kontroluje sposób stosowania edycji konfiguracji w runtime.
- - `"off"`: ignoruj edycje na żywo; zmiany wymagają jawnego restartu.
- - `"restart"`: zawsze restartuj proces Gateway przy zmianie konfiguracji.
- - `"hot"`: stosuj zmiany w procesie bez restartu.
- - `"hybrid"` (domyślnie): najpierw spróbuj hot reload; wróć do restartu, jeśli to wymagane.
+ - `"off"`: ignoruje edycje na żywo; zmiany wymagają jawnego restartu.
+ - `"restart"`: zawsze restartuje proces Gateway przy zmianie konfiguracji.
+ - `"hot"`: stosuje zmiany w procesie bez restartu.
+ - `"hybrid"` (domyślnie): najpierw próbuje hot reload; w razie potrzeby wraca do restartu.
- `debounceMs`: okno debounce w ms przed zastosowaniem zmian konfiguracji (nieujemna liczba całkowita).
- `deferralTimeoutMs`: maksymalny czas w ms oczekiwania na operacje w toku przed wymuszeniem restartu (domyślnie: `300000` = 5 minut).
@@ -3086,21 +3210,21 @@ Zobacz [Multiple Gateways](/pl/gateway/multiple-gateways).
}
```
-Auth: `Authorization: Bearer ` albo `x-openclaw-token: `.
+Auth: `Authorization: Bearer ` lub `x-openclaw-token: `.
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ć **inne** niż `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ć **różny** 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:**
- `POST /hooks/wake` → `{ text, mode?: "now"|"next-heartbeat" }`
- `POST /hooks/agent` → `{ message, name?, agentId?, sessionKey?, wakeMode?, deliver?, channel?, to?, model?, thinking?, timeoutSeconds? }`
- - `sessionKey` z ładunku żądania jest akceptowane tylko wtedy, gdy `hooks.allowRequestSessionKey=true` (domyślnie: `false`).
+ - `sessionKey` z ładunku żądania jest akceptowany tylko wtedy, gdy `hooks.allowRequestSessionKey=true` (domyślnie: `false`).
- `POST /hooks/` → rozwiązywane przez `hooks.mappings`
@@ -3109,18 +3233,18 @@ Uwagi dotyczące walidacji i bezpieczeństwa:
- `match.source` dopasowuje pole ładunku dla ścieżek ogólnych.
- 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 pozostaje w obrębie `hooks.transformsDir` (ścieżki bezwzględne i traversal są odrzucane).
-- `agentId` kieruje do określonego agenta; nieznane identyfikatory wracają do domyślnego.
-- `allowedAgentIds`: ogranicza jawne kierowanie (`*` lub pominięte = zezwól na wszystkie, `[]` = zabroń wszystkim).
-- `defaultSessionKey`: opcjonalny stały klucz sesji dla uruchomień agentów hooków bez jawnego `sessionKey`.
-- `allowRequestSessionKey`: zezwala wywołującym `/hooks/agent` na ustawianie `sessionKey` (domyślnie: `false`).
+ - `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 wracają do domyślnego.
+- `allowedAgentIds`: ogranicza jawny routing (`*` lub pominięte = zezwól na wszystkie, `[]` = zabroń wszystkich).
+- `defaultSessionKey`: opcjonalny stały klucz sesji dla przebiegów agenta hooka bez jawnego `sessionKey`.
+- `allowRequestSessionKey`: pozwala wywołującym `/hooks/agent` ustawiać `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ć dozwolony, jeśli ustawiono katalog modeli).
-### Integracja z Gmail
+### Integracja Gmail
```json5
{
@@ -3143,12 +3267,12 @@ Uwagi dotyczące walidacji i bezpieczeństwa:
}
```
-- Gateway automatycznie uruchamia `gog gmail watch serve` podczas startu, gdy jest skonfigurowane. Ustaw `OPENCLAW_SKIP_GMAIL_WATCHER=1`, aby to wyłączyć.
+- Gateway automatycznie uruchamia `gog gmail watch serve` przy starcie, gdy jest skonfigurowane. Ustaw `OPENCLAW_SKIP_GMAIL_WATCHER=1`, aby to wyłączyć.
- Nie uruchamiaj osobnego `gog gmail watch serve` równolegle z Gateway.
---
-## Host Canvas
+## Canvas host
```json5
{
@@ -3160,18 +3284,18 @@ 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).
-- Wiązania inne niż loopback: ścieżki canvas wymagają uwierzytelniania Gateway (token/hasło/trusted-proxy), tak samo jak inne powierzchnie HTTP Gateway.
-- Node WebViews zwykle nie wysyłają nagłówków uwierzytelniania; po sparowaniu i połączeniu noda Gateway ogłasza adresy URL capabilities o zakresie noda dla dostępu do canvas/A2UI.
-- Adresy URL capabilities są związane z aktywną sesją WS noda 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.
-- Serwuje także A2UI pod `/__openclaw__/a2ui/`.
+- Bindy inne niż loopback: ścieżki canvas wymagają uwierzytelniania 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 ogłasza URL-e capability o zakresie node dla dostępu do canvas/A2UI.
+- URL-e capability są powiązane z aktywną sesją WS node i szybko wygasają. Fallback oparty na IP nie jest używany.
+- Wstrzykuje klienta live reload do serwowanego HTML.
+- 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 albo przy błędach `EMFILE`.
+- Wyłącz live reload dla dużych katalogów lub przy błędach `EMFILE`.
---
@@ -3191,7 +3315,7 @@ Uwagi dotyczące walidacji i bezpieczeństwa:
- `minimal` (domyślnie): pomija `cliPath` + `sshPort` z rekordów TXT.
- `full`: uwzględnia `cliPath` + `sshPort`.
-- Nazwa hosta domyślnie to `openclaw`. Nadpisz przez `OPENCLAW_MDNS_HOSTNAME`.
+- Nazwa hosta domyślnie ma wartość `openclaw`. Nadpisz przez `OPENCLAW_MDNS_HOSTNAME`.
### Wide-area (DNS-SD)
@@ -3203,7 +3327,7 @@ Uwagi dotyczące walidacji i bezpieczeństwa:
}
```
-Zapisuje strefę unicast DNS-SD w `~/.openclaw/dns/`. Do wykrywania między sieciami połącz to z serwerem DNS (zalecany CoreDNS) + Tailscale split DNS.
+Zapisuje strefę unicast DNS-SD pod `~/.openclaw/dns/`. Do wykrywania między sieciami połącz to z serwerem DNS (zalecany CoreDNS) + Tailscale split DNS.
Konfiguracja: `openclaw dns setup --apply`.
@@ -3211,7 +3335,7 @@ Konfiguracja: `openclaw dns setup --apply`.
## Środowisko
-### `env` (zmienne środowiskowe inline)
+### `env` (inline env vars)
```json5
{
@@ -3228,14 +3352,14 @@ Konfiguracja: `openclaw dns setup --apply`.
}
```
-- Zmienne środowiskowe inline są stosowane tylko wtedy, gdy w środowisku procesu brakuje danego klucza.
+- Inline env vars są stosowane tylko wtedy, gdy w środowisku procesu brakuje klucza.
- Pliki `.env`: `.env` z bieżącego katalogu roboczego + `~/.openclaw/.env` (żaden nie nadpisuje istniejących zmiennych).
- `shellEnv`: importuje brakujące oczekiwane klucze z profilu powłoki logowania.
- Pełny priorytet znajdziesz w [Environment](/pl/help/environment).
-### Podstawianie zmiennych środowiskowych
+### Podstawianie zmiennych env
-Odwołuj się do zmiennych środowiskowych w dowolnym ciągu konfiguracji za pomocą `${VAR_NAME}`:
+Odwołuj się do zmiennych env w dowolnym ciągu konfiguracji przez `${VAR_NAME}`:
```json5
{
@@ -3246,15 +3370,15 @@ Odwołuj się do zmiennych środowiskowych w dowolnym ciągu konfiguracji za pom
```
- Dopasowywane są tylko nazwy pisane wielkimi literami: `[A-Z_][A-Z0-9_]*`.
-- Brakujące/puste zmienne powodują błąd przy ładowaniu konfiguracji.
-- Ucieknij przez `$${VAR}`, aby uzyskać literał `${VAR}`.
+- Brakujące/puste zmienne powodują błąd podczas ładowania konfiguracji.
+- Ucieknij przez `$${VAR}`, aby uzyskać dosłowne `${VAR}`.
- Działa z `$include`.
---
## Sekrety
-Odwołania do sekretów są addytywne: wartości tekstowe nadal działają.
+Odwołania do sekretów są addytywne: jawne wartości nadal działają.
### `SecretRef`
@@ -3267,16 +3391,16 @@ Użyj jednego kształtu obiektu:
Walidacja:
- wzorzec `provider`: `^[a-z][a-z0-9_-]{0,63}$`
-- wzorzec `source: "env"` dla id: `^[A-Z][A-Z0-9_]{0,127}$`
-- `source: "file"` id: bezwzględny wskaźnik JSON (na przykład `"/providers/openai/apiKey"`)
-- wzorzec `source: "exec"` dla id: `^[A-Za-z0-9][A-Za-z0-9._:/-]{0,255}$`
-- identyfikatory `source: "exec"` nie mogą zawierać segmentów ścieżki `.` ani `..` rozdzielanych ukośnikami (na przykład `a/../b` jest odrzucane)
+- wzorzec `id` dla `source: "env"`: `^[A-Z][A-Z0-9_]{0,127}$`
+- `source: "file"` `id`: bezwzględny wskaźnik JSON (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 mogą zawierać segmentów ścieżki rozdzielanych przez ukośniki `.` ani `..` (na przykład `a/../b` jest odrzucane)
### Obsługiwana powierzchnia poświadczeń
-- Kanoniczna macierz: [SecretRef Credential Surface](/pl/reference/secretref-credential-surface)
+- Macierz kanoniczna: [SecretRef Credential Surface](/pl/reference/secretref-credential-surface)
- `secrets apply` kieruje na obsługiwane ścieżki poświadczeń `openclaw.json`.
-- Odwołania `auth-profiles.json` są uwzględniane w rozwiązywaniu runtime i pokryciu audytu.
+- Odwołania z `auth-profiles.json` są uwzględniane w rozwiązywaniu runtime i pokryciu audytu.
### Konfiguracja dostawców sekretów
@@ -3309,12 +3433,12 @@ Walidacja:
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ązanego celu.
+- Dostawca `exec` wymaga bezwzględnej ścieżki `command` i używa ładunków protokołu przez stdin/stdout.
+- Domyślnie ścieżki poleceń będące dowiązaniami symbolicznymi są odrzucane. Ustaw `allowSymlinkCommand: true`, aby zezwolić na ścieżki dowiązań symbolicznych przy jednoczesnej walidacji ścieżki rozwiązanego celu.
- Jeśli skonfigurowano `trustedDirs`, kontrola zaufanych katalogów dotyczy ścieżki rozwiązanego celu.
-- Środowisko potomne `exec` jest domyślnie minimalne; przekaż wymagane zmienne jawnie przez `passEnv`.
-- Odwołania do sekretów są rozwiązywane w czasie aktywacji do migawki w pamięci, a następnie ścieżki żądań odczytują już tylko tę migawkę.
-- Filtrowanie aktywnej powierzchni obowiązuje podczas aktywacji: nierozwiązane odwołania na włączonych powierzchniach powodują błąd uruchomienia/przeładowania, a nieaktywne powierzchnie są pomijane z diagnostyką.
+- Środowisko potomne `exec` jest domyślnie minimalne; przekazuj wymagane zmienne jawnie przez `passEnv`.
+- Odwołania do sekretów są rozwiązywane w czasie aktywacji do migawki w pamięci, a następnie ścieżki żądań odczytują tylko tę migawkę.
+- Filtrowanie aktywnej powierzchni ma zastosowanie podczas aktywacji: nierozwiązane odwołania na włączonych powierzchniach powodują błąd startu/przeładowania, a nieaktywne powierzchnie są pomijane z diagnostyką.
---
@@ -3338,7 +3462,7 @@ 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ń `auth-profile` opartych na SecretRef.
+- Profile trybu OAuth (`auth.profiles..mode = "oauth"`) nie obsługują poświadczeń `auth-profile` opartych na SecretRef.
- Statyczne poświadczenia runtime pochodzą z rozwiązanych migawek w pamięci; starsze statyczne wpisy `auth.json` są czyszczone po wykryciu.
- Starsze importy OAuth z `~/.openclaw/credentials/oauth.json`.
- Zobacz [OAuth](/pl/concepts/oauth).
@@ -3364,20 +3488,20 @@ Uwagi:
}
```
-- `billingBackoffHours`: bazowy backoff w godzinach, gdy profil kończy się niepowodzeniem z powodu rzeczywistych błędów
- billing/insufficient-credit (domyślnie: `5`). Jawny tekst billing może
- nadal trafić tutaj nawet przy odpowiedziach `401`/`403`, ale dopasowania tekstu specyficzne
- dla dostawcy pozostają ograniczone do dostawcy, który jest ich właścicielem (na przykład OpenRouter
- `Key limit exceeded`). Odpowiedzi HTTP `402` typu retryable usage-window lub
- komunikaty o limicie wydatków organizacji/obszaru roboczego pozostają zamiast tego na ścieżce `rate_limit`.
-- `billingBackoffHoursByProvider`: opcjonalne nadpisania godzin backoff billing per dostawca.
-- `billingMaxHours`: limit w godzinach dla wykładniczego wzrostu backoff billing (domyślnie: `24`).
+- `billingBackoffHours`: bazowy backoff w godzinach, gdy profil kończy się błędem z powodu rzeczywistych
+ problemów rozliczeniowych/braku ś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, do którego należą (na przykład OpenRouter
+ `Key limit exceeded`). Powtarzalne komunikaty `402` dotyczące okna użycia lub
+ limitów wydatków organizacji/workspace pozostają zamiast tego w ścieżce `rate_limit`.
+- `billingBackoffHoursByProvider`: opcjonalne nadpisania godzin backoffu rozliczeniowego per dostawca.
+- `billingMaxHours`: limit wzrostu wykładniczego backoffu rozliczeniowego w godzinach (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`: ruchome 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 przełączeniem na fallback modelu (domyślnie: `1`). Kształty typu provider-busy, takie jak `ModelNotReadyException`, trafiają tutaj.
+- `authPermanentMaxMinutes`: limit wzrostu backoffu `auth_permanent` w minutach (domyślnie: `60`).
+- `failureWindowHours`: ruchome okno w godzinach używane dla liczników backoffu (domyślnie: `24`).
+- `overloadedProfileRotations`: maksymalna liczba rotacji auth-profile tego samego dostawcy przy błędach przeciążenia przed przełączeniem na fallback modelu (domyślnie: `1`). Także kształty typu provider-busy, 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 przełączeniem na fallback modelu (domyślnie: `1`). Ten koszyk `rate_limit` obejmuje teksty zależne od dostawcy, takie jak `Too many concurrent requests`, `ThrottlingException`, `concurrency limit reached`, `workers_ai ... quota limit exceeded` oraz `resource exhausted`.
+- `rateLimitedProfileRotations`: maksymalna liczba rotacji auth-profile tego samego dostawcy przy błędach limitu szybkości przed przełączeniem na fallback modelu (domyślnie: `1`). Ten koszyk `rate_limit` obejmuje teksty charakterystyczne dla dostawców, takie jak `Too many concurrent requests`, `ThrottlingException`, `concurrency limit reached`, `workers_ai ... quota limit exceeded` i `resource exhausted`.
---
@@ -3398,8 +3522,8 @@ Uwagi:
- Domyślny plik logu: `/tmp/openclaw/openclaw-YYYY-MM-DD.log`.
- Ustaw `logging.file`, aby uzyskać stałą ścieżkę.
-- `consoleLevel` podnosi się do `debug` przy `--verbose`.
-- `maxFileBytes`: maksymalny rozmiar pliku logu w bajtach, po którego przekroczeniu zapisy są wstrzymywane (dodatnia liczba całkowita; domyślnie: `524288000` = 500 MB). W wdrożeniach produkcyjnych używaj zewnętrznej rotacji logów.
+- `consoleLevel` podnosi się do `debug`, gdy `--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.
---
@@ -3437,19 +3561,19 @@ 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.*"` albo `"*"`).
+- `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.
- `otel.enabled`: włącza potok eksportu OpenTelemetry (domyślnie: `false`).
-- `otel.endpoint`: adres URL collectora dla eksportu OTel.
-- `otel.protocol`: `"http/protobuf"` (domyślnie) albo `"grpc"`.
+- `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.serviceName`: nazwa usługi dla atrybutów zasobu.
-- `otel.traces` / `otel.metrics` / `otel.logs`: włącz eksport trace, metrics lub logs.
-- `otel.sampleRate`: współczynnik próbkowania trace `0`–`1`.
-- `otel.flushIntervalMs`: okresowy interwał flush telemetrii w ms.
-- `cacheTrace.enabled`: loguje migawki śledzenia cache dla przebiegów osadzonych (domyślnie: `false`).
-- `cacheTrace.filePath`: ścieżka wyjściowa dla cache trace JSONL (domyślnie: `$OPENCLAW_STATE_DIR/logs/cache-trace.jsonl`).
-- `cacheTrace.includeMessages` / `includePrompt` / `includeSystem`: kontrolują, co jest uwzględniane w wyjściu cache trace (wszystkie domyślnie: `true`).
+- `otel.traces` / `otel.metrics` / `otel.logs`: włączają eksport śledzeń, metryk lub logów.
+- `otel.sampleRate`: współczynnik próbkowania śledzeń `0`–`1`.
+- `otel.flushIntervalMs`: okresowy interwał opróżniania telemetrii w ms.
+- `cacheTrace.enabled`: zapisuje migawki śladu cache dla przebiegów 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`: kontrolują, co jest uwzględniane w wyjściu śladu cache (wszystkie domyślnie: `true`).
---
@@ -3471,12 +3595,12 @@ Uwagi:
}
```
-- `channel`: kanał wydań dla instalacji npm/git — `"stable"`, `"beta"` albo `"dev"`.
-- `checkOnStart`: sprawdza aktualizacje npm przy uruchomieniu Gateway (domyślnie: `true`).
+- `channel`: kanał wydania dla instalacji npm/git — `"stable"`, `"beta"` lub `"dev"`.
+- `checkOnStart`: sprawdza aktualizacje npm przy starcie Gateway (domyślnie: `true`).
- `auto.enabled`: włącza aktualizacje automatyczne w tle dla instalacji pakietowych (domyślnie: `false`).
-- `auto.stableDelayHours`: minimalne opóźnienie w godzinach przed automatycznym zastosowaniem na 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 wykonywane są kontrole 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`; max: `168`).
+- `auto.stableJitterHours`: dodatkowe okno rozłożenia wdrożenia kanału stable w godzinach (domyślnie: `12`; max: `168`).
+- `auto.betaCheckIntervalHours`: jak często wykonywane są sprawdzenia kanału beta, w godzinach (domyślnie: `1`; max: `24`).
---
@@ -3510,21 +3634,21 @@ Uwagi:
```
- `enabled`: globalna bramka funkcji ACP (domyślnie: `false`).
-- `dispatch.enabled`: niezależna bramka dla wysyłania tur sesji ACP (domyślnie: `true`). Ustaw `false`, aby zachować dostępność poleceń ACP przy jednoczesnym blokowaniu wykonania.
+- `dispatch.enabled`: niezależna bramka dla dyspozycji tur sesji ACP (domyślnie: `true`). Ustaw `false`, aby zachować dostępność poleceń ACP przy jednoczesnym blokowaniu wykonania.
- `backend`: domyślny identyfikator backendu runtime ACP (musi odpowiadać zarejestrowanemu Pluginowi 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 dodatkowego ograniczenia.
+- `allowedAgents`: lista dozwolonych identyfikatorów agentów dopuszczonych do sesji runtime ACP; pusta oznacza brak dodatkowych ograniczeń.
- `maxConcurrentSessions`: maksymalna liczba jednocześnie aktywnych sesji ACP.
-- `stream.coalesceIdleMs`: okno flush bezczynności w ms dla strumieniowanego tekstu.
-- `stream.maxChunkChars`: maksymalny rozmiar chunk przed podziałem projekcji strumieniowanego bloku.
+- `stream.coalesceIdleMs`: okno bezczynnego opróżniania w ms dla strumieniowanego tekstu.
+- `stream.maxChunkChars`: maksymalny rozmiar porcji 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.deliveryMode`: `"live"` strumieniuje przyrostowo; `"final_only"` buforuje aż do terminalnych 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 per tura 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 strumieniowanych zdarzeń.
- `runtime.ttlMinutes`: TTL bezczynności w minutach dla workerów sesji ACP przed kwalifikacją do czyszczenia.
-- `runtime.installCommand`: opcjonalne polecenie instalacji uruchamiane podczas bootstrapowania środowiska runtime ACP.
+- `runtime.installCommand`: opcjonalne polecenie instalacji uruchamiane przy bootstrapowaniu środowiska runtime ACP.
---
@@ -3542,15 +3666,15 @@ Uwagi:
- `cli.banner.taglineMode` kontroluje styl sloganu bannera:
- `"random"` (domyślnie): rotujące zabawne/sezonowe slogany.
- - `"default"`: stały neutralny slogan (`All your chats, one OpenClaw.`).
- - `"off"`: brak tekstu sloganu (tytuł/wersja bannera nadal są pokazywane).
+ - `"default"`: stały neutralny slogan (`Wszystkie Twoje czaty, jeden OpenClaw.`).
+ - `"off"`: brak tekstu sloganu (tytuł/wersja bannera nadal są wyświetlane).
- Aby ukryć cały banner (nie tylko slogany), ustaw zmienną środowiskową `OPENCLAW_HIDE_BANNER=1`.
---
-## Kreator
+## Wizard
-Metadane zapisywane przez przepływy konfiguracji prowadzonej przez CLI (`onboard`, `configure`, `doctor`):
+Metadane zapisywane przez prowadzone przepływy konfiguracji CLI (`onboard`, `configure`, `doctor`):
```json5
{
@@ -3568,15 +3692,15 @@ Metadane zapisywane przez przepływy konfiguracji prowadzonej przez CLI (`onboar
## Tożsamość
-Zobacz pola tożsamości `agents.list` w sekcji [Wartości domyślne agenta](#agent-defaults).
+Zobacz pola tożsamości `agents.list` w sekcji [Domyślne ustawienia agenta](#agent-defaults).
---
-## Bridge (starszy, usunięty)
+## Bridge (starsze, usunięte)
-Bieżące buildy nie zawierają już mostu TCP. Nody łą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ż mostu TCP. Node łączą się przez Gateway WebSocket. Klucze `bridge.*` nie są już częścią schematu konfiguracji (walidacja kończy się błędem do czasu ich usunięcia; `openclaw doctor --fix` może usunąć nieznane klucze).
-
+
```json
{
@@ -3614,11 +3738,11 @@ Bieżące buildy nie zawierają już mostu TCP. Nody łączą się przez Gateway
}
```
-- `sessionRetention`: jak długo przechowywać ukończone sesje odizolowanych uruchomień Cron przed usunięciem z `sessions.json`. Kontroluje także czyszczenie zarchiwizowanych usuniętych transkryptów Cron. Domyślnie: `24h`; ustaw `false`, aby wyłączyć.
-- `runLog.maxBytes`: maksymalny rozmiar na plik logu uruchomienia (`cron/runs/.jsonl`) przed przycięciem. Domyślnie: `2_000_000` bajtów.
-- `runLog.keepLines`: najnowsze linie zachowywane, gdy uruchamiane jest przycinanie logu uruchomienia. Domyślnie: `2000`.
-- `webhookToken`: token bearer używany do dostarczania POST Webhook Cron (`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`.
+- `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 POST Webhook dla Cron (`delivery.mode = "webhook"`); jeśli pominięty, nagłówek auth nie jest wysyłany.
+- `webhook`: przestarzały starszy zapasowy URL Webhook (http/https) używany tylko dla zapisanych zadań, które nadal mają `notify: true`.
### `cron.retry`
@@ -3634,9 +3758,9 @@ Bieżące buildy nie zawierają już mostu TCP. Nody łączą się przez Gateway
}
```
-- `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, które uruchamiają ponowne próby — `"rate_limit"`, `"overloaded"`, `"network"`, `"timeout"`, `"server_error"`. Pomiń, aby ponawiać dla wszystkich typów przejściowych.
+- `maxAttempts`: maksymalna liczba ponowień dla jednorazowych zadań 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.
Dotyczy tylko jednorazowych zadań Cron. Zadania cykliczne używają osobnej obsługi błędów.
@@ -3658,9 +3782,9 @@ Dotyczy tylko jednorazowych zadań Cron. Zadania cykliczne używają osobnej obs
- `enabled`: włącza alerty o błędach dla zadań Cron (domyślnie: `false`).
- `after`: liczba kolejnych niepowodzeń przed uruchomieniem alertu (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 dostarczenia — `"announce"` wysyła przez wiadomość kanałową; `"webhook"` wykonuje POST do skonfigurowanego Webhook.
-- `accountId`: opcjonalny identyfikator konta lub kanału do ograniczenia dostarczania alertu.
+- `cooldownMs`: minimalna liczba milisekund między powtarzanymi alertami dla tego samego zadania (nieujemna liczba całkowita).
+- `mode`: tryb dostarczenia — `"announce"` wysyła przez wiadomość kanałową; `"webhook"` wysyła POST na skonfigurowany Webhook.
+- `accountId`: opcjonalny identyfikator konta lub kanału do ograniczenia zakresu dostarczania alertów.
### `cron.failureDestination`
@@ -3677,45 +3801,45 @@ Dotyczy tylko jednorazowych zadań Cron. Zadania cykliczne używają osobnej obs
}
```
-- Domyślny cel powiadomień o błędach Cron dla wszystkich zadań.
-- `mode`: `"announce"` albo `"webhook"`; domyślnie `"announce"`, gdy istnieje wystarczająca ilość danych docelowych.
+- Domyślny cel dla powiadomień o błędach Cron we wszystkich zadaniach.
+- `mode`: `"announce"` lub `"webhook"`; domyślnie `"announce"`, gdy istnieją wystarczające dane docelowe.
- `channel`: nadpisanie kanału dla dostarczania announce. `"last"` ponownie używa ostatniego znanego kanału dostarczenia.
-- `to`: jawny cel announce albo adres URL Webhook. Wymagane dla trybu webhook.
+- `to`: jawny cel announce lub URL Webhook. Wymagane dla trybu webhook.
- `accountId`: opcjonalne nadpisanie konta dla dostarczania.
- Per-zadaniowe `delivery.failureDestination` nadpisuje tę globalną wartość domyślną.
-- Gdy nie ustawiono ani globalnego, ani per-zadaniowego celu błędu, zadania, które już dostarczają przez `announce`, przy błędzie wracają do tego podstawowego celu announce.
+- Gdy nie jest ustawiony ani globalny, ani per-zadaniowy cel błędu, zadania, które już dostarczają przez `announce`, wracają przy błędzie 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 [Cron Jobs](/pl/automation/cron-jobs). Odizolowane wykonania Cron są śledzone jako [background tasks](/pl/automation/tasks).
+Zobacz [Cron Jobs](/pl/automation/cron-jobs). Izolowane wykonania Cron są śledzone jako [background tasks](/pl/automation/tasks).
---
-## Zmienne szablonu modelu mediów
+## Zmienne szablonów modeli mediów
-Placeholdery szablonów rozwijane w `tools.media.models[].args`:
+Placeholders szablonów rozwijane w `tools.media.models[].args`:
-| Zmienna | Opis |
-| ----------------- | -------------------------------------------------- |
-| `{{Body}}` | Pełna treść wiadomości przychodzącej |
-| `{{RawBody}}` | Surowa treść (bez opakowania historii/nadawcy) |
-| `{{BodyStripped}}`| Treść z usuniętymi wzmiankami grupowymi |
-| `{{From}}` | Identyfikator nadawcy |
-| `{{To}}` | Identyfikator celu |
-| `{{MessageSid}}` | Identyfikator wiadomości kanału |
-| `{{SessionId}}` | Bieżący UUID 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ścia dla wpisów CLI |
-| `{{ChatType}}` | `"direct"` albo `"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.) |
+| Zmienna | Opis |
+| ----------------- | ------------------------------------------------- |
+| `{{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 celu |
+| `{{MessageSid}}` | Identyfikator wiadomości kanału |
+| `{{SessionId}}` | Bieżący UUID sesji |
+| `{{IsNewSession}}` | `"true"` po utworzeniu nowej sesji |
+| `{{MediaUrl}}` | Pseudo-URL przychodzącego medium |
+| `{{MediaPath}}` | Lokalna ścieżka medium |
+| `{{MediaType}}` | Typ medium (image/audio/document/…) |
+| `{{Transcript}}` | Transkrypt audio |
+| `{{Prompt}}` | Rozwiązany prompt mediów dla wpisów CLI |
+| `{{MaxChars}}` | Rozwiązana maksymalna liczba znaków wyjścia dla wpisów CLI |
+| `{{ChatType}}` | `"direct"` lub `"group"` |
+| `{{GroupSubject}}` | Temat grupy (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.) |
---
@@ -3736,13 +3860,13 @@ Podziel konfigurację na wiele plików:
**Zachowanie scalania:**
-- Pojedynczy plik: zastępuje obiekt zawierający.
-- Tablica plików: głęboko scalana w kolejności (późniejsze nadpisują wcześniejsze).
-- Klucze rodzeństwa: scalane po include (nadpisują dołączone wartości).
+- Pojedynczy plik: zastępuje zawierający go obiekt.
+- Tablica plików: głębokie scalanie w kolejności (późniejsze nadpisują wcześniejsze).
+- Klucze sąsiednie: scalane po include (nadpisują dołączone wartości).
- Zagnieżdżone include: do 10 poziomów głębokości.
-- Ścieżki: rozwiązywane względem pliku dołączającego, ale muszą pozostać w obrębie katalogu głównego 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.
+- Ścieżki: rozwiązywane względem pliku dołączającego, ale muszą pozostać w obrębie katalogu głównego najwyższego poziomu konfiguracji (`dirname` z `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.
---
-_Powiązane: [Configuration](/pl/gateway/configuration) · [Configuration Examples](/pl/gateway/configuration-examples) · [Doctor](/pl/gateway/doctor)_
+_Powiązane: [Konfiguracja](/pl/gateway/configuration) · [Przykłady konfiguracji](/pl/gateway/configuration-examples) · [Doctor](/pl/gateway/doctor)_
diff --git a/docs/pl/plugins/sdk-channel-plugins.md b/docs/pl/plugins/sdk-channel-plugins.md
index 62c6ac4ca..648cccdeb 100644
--- a/docs/pl/plugins/sdk-channel-plugins.md
+++ b/docs/pl/plugins/sdk-channel-plugins.md
@@ -1,89 +1,91 @@
---
read_when:
- - Tworzysz nowy Plugin kanału wiadomości.
- - Chcesz połączyć OpenClaw z platformą komunikacyjną.
- - Musisz zrozumieć powierzchnię adaptera ChannelPlugin.
+ - Tworzysz nowy Plugin kanału komunikatora
+ - Chcesz połączyć OpenClaw z platformą komunikacyjną
+ - Musisz zrozumieć powierzchnię adaptera ChannelPlugin
sidebarTitle: Channel Plugins
-summary: Przewodnik krok po kroku dotyczący tworzenia Pluginu kanału wiadomości dla OpenClaw
+summary: Przewodnik krok po kroku dotyczący tworzenia Pluginu kanału komunikatora dla OpenClaw
title: Tworzenie Pluginów kanałów
x-i18n:
- generated_at: "2026-04-15T09:51:14Z"
+ generated_at: "2026-04-15T19:41:36Z"
model: gpt-5.4
provider: openai
- source_hash: a7f4c746fe3163a8880e14c433f4db4a1475535d91716a53fb879551d8d62f65
+ source_hash: 80e47e61d1e47738361692522b79aff276544446c58a7b41afe5296635dfad4b
source_path: plugins/sdk-channel-plugins.md
workflow: 15
---
# Tworzenie Pluginów kanałów
-Ten przewodnik krok po kroku pokazuje, jak zbudować Plugin kanału, który łączy OpenClaw z platformą komunikacyjną. Po jego ukończeniu będziesz mieć działający kanał z zabezpieczeniami DM, parowaniem, wątkowaniem odpowiedzi oraz wiadomościami wychodzącymi.
+Ten przewodnik przeprowadzi Cię przez tworzenie Pluginu kanału, który łączy OpenClaw z platformą komunikacyjną. Na końcu będziesz mieć działający kanał z zabezpieczeniami DM, parowaniem, wątkowaniem odpowiedzi i wiadomościami wychodzącymi.
- Jeśli nie zbudowano jeszcze żadnego Pluginu OpenClaw, najpierw przeczytaj
+ Jeśli nie tworzyłeś wcześniej żadnego Pluginu OpenClaw, najpierw przeczytaj
[Pierwsze kroki](/pl/plugins/building-plugins), aby poznać podstawową strukturę
pakietu i konfigurację manifestu.
## Jak działają Pluginy kanałów
-Pluginy kanałów nie potrzebują własnych narzędzi do wysyłania/edytowania/reakcji. OpenClaw utrzymuje jedno współdzielone narzędzie `message` w rdzeniu. Twój Plugin odpowiada za:
+Pluginy kanałów nie potrzebują własnych narzędzi do wysyłania/edycji/reakcji. OpenClaw utrzymuje jedno współdzielone narzędzie `message` w rdzeniu. Twój Plugin odpowiada za:
-- **Config** — rozpoznawanie kont i kreator konfiguracji
-- **Security** — politykę DM i listy dozwolonych
-- **Pairing** — przepływ zatwierdzania DM
-- **Session grammar** — sposób, w jaki identyfikatory rozmów specyficzne dla dostawcy mapują się na bazowe czaty, identyfikatory wątków i rezerwy nadrzędne
-- **Outbound** — wysyłanie tekstu, multimediów i ankiet na platformę
-- **Threading** — sposób wątkowania odpowiedzi
+- **Konfigurację** — rozpoznawanie konta i kreator konfiguracji
+- **Bezpieczeństwo** — zasady DM i listy dozwolonych
+- **Parowanie** — przepływ zatwierdzania DM
+- **Gramatykę sesji** — sposób, w jaki identyfikatory konwersacji specyficzne dla dostawcy są mapowane na czaty bazowe, identyfikatory wątków i zapasowe elementy nadrzędne
+- **Ruch wychodzący** — wysyłanie tekstu, multimediów i ankiet na platformę
+- **Wątkowanie** — sposób wątkowania odpowiedzi
-Rdzeń odpowiada za współdzielone narzędzie wiadomości, połączenia z promptami, zewnętrzny kształt klucza sesji, ogólne księgowanie `:thread:` oraz dyspozycję.
+Rdzeń odpowiada za współdzielone narzędzie wiadomości, połączenie promptów, zewnętrzny kształt klucza sesji, ogólne księgowanie `:thread:` i dyspozycję.
-Jeśli Twój kanał dodaje parametry narzędzia wiadomości, które przenoszą źródła multimediów, ujawnij nazwy tych parametrów przez `describeMessageTool(...).mediaSourceParams`. Rdzeń używa tej jawnej listy do normalizacji ścieżek w sandboxie i polityki dostępu do multimediów wychodzących, więc Pluginy nie potrzebują wyjątków specyficznych dla dostawcy we współdzielonym rdzeniu dla parametrów awatara, załączników lub obrazów okładki.
-Preferuj zwracanie mapy kluczowanej akcjami, takiej jak
-`{ "set-profile": ["avatarUrl", "avatarPath"] }`, aby niezwiązane akcje nie dziedziczyły argumentów multimedialnych innej akcji. Płaska tablica nadal działa dla parametrów, które celowo są współdzielone przez każdą ujawnioną akcję.
+Jeśli Twój kanał dodaje parametry narzędzia wiadomości, które przenoszą źródła multimediów, udostępnij te nazwy parametrów przez `describeMessageTool(...).mediaSourceParams`. Rdzeń używa tej jawnej listy do normalizacji ścieżek sandboxa i zasad dostępu do multimediów wychodzących, więc Pluginy nie potrzebują wyjątków w współdzielonym rdzeniu dla parametrów awatarów, załączników lub obrazów okładek specyficznych dla dostawcy.
+Preferuj zwracanie mapy kluczowanej akcją, takiej jak
+`{ "set-profile": ["avatarUrl", "avatarPath"] }`, aby niezwiązane akcje nie dziedziczyły argumentów multimediów innej akcji. Płaska tablica nadal działa dla parametrów, które celowo są współdzielone przez każdą udostępnioną akcję.
-Jeśli Twoja platforma przechowuje dodatkowy zakres w identyfikatorach rozmów, pozostaw to parsowanie w Pluginie za pomocą `messaging.resolveSessionConversation(...)`. To kanoniczny hak do mapowania `rawId` na bazowy identyfikator rozmowy, opcjonalny identyfikator wątku, jawne `baseConversationId` oraz wszelkie `parentConversationCandidates`.
-Gdy zwracasz `parentConversationCandidates`, zachowaj ich kolejność od najwęższego rodzica do najszerszej/bazowej rozmowy.
+Jeśli Twoja platforma przechowuje dodatkowy zakres wewnątrz identyfikatorów konwersacji, zachowaj to parsowanie w Pluginie za pomocą `messaging.resolveSessionConversation(...)`. To jest kanoniczny hook do mapowania `rawId` na bazowy identyfikator konwersacji, opcjonalny identyfikator wątku, jawny `baseConversationId` i wszelkie `parentConversationCandidates`.
+Gdy zwracasz `parentConversationCandidates`, zachowaj ich kolejność od najbardziej zawężonego elementu nadrzędnego do najszerszej/bazowej konwersacji.
-Bundlowane Pluginy, które potrzebują tego samego parsowania przed uruchomieniem rejestru kanałów, mogą też udostępniać plik najwyższego poziomu `session-key-api.ts` z pasującym eksportem `resolveSessionConversation(...)`. Rdzeń używa tej bezpiecznej dla bootstrapu powierzchni tylko wtedy, gdy rejestr Pluginów runtime nie jest jeszcze dostępny.
+Bundlowane Pluginy, które potrzebują tego samego parsowania przed uruchomieniem rejestru kanałów, mogą także udostępniać plik najwyższego poziomu `session-key-api.ts` z pasującym eksportem `resolveSessionConversation(...)`. Rdzeń używa tej bezpiecznej dla bootstrapu powierzchni tylko wtedy, gdy rejestr Pluginów środowiska uruchomieniowego nie jest jeszcze dostępny.
-`messaging.resolveParentConversationCandidates(...)` pozostaje dostępne jako starsza rezerwa zgodności, gdy Plugin potrzebuje jedynie rezerw nadrzędnych ponad ogólnym/surowym identyfikatorem. Jeśli istnieją oba haki, rdzeń najpierw używa `resolveSessionConversation(...).parentConversationCandidates`, a do `resolveParentConversationCandidates(...)` wraca tylko wtedy, gdy kanoniczny hak ich nie zwraca.
+`messaging.resolveParentConversationCandidates(...)` pozostaje dostępne jako starszy, zgodnościowy mechanizm zapasowy, gdy Plugin potrzebuje jedynie zapasowych elementów nadrzędnych ponad ogólnym/nieprzetworzonym identyfikatorem. Jeśli istnieją oba hooki, rdzeń najpierw używa
+`resolveSessionConversation(...).parentConversationCandidates`, a do
+`resolveParentConversationCandidates(...)` wraca tylko wtedy, gdy kanoniczny hook ich nie zwraca.
## Zatwierdzenia i możliwości kanału
Większość Pluginów kanałów nie potrzebuje kodu specyficznego dla zatwierdzeń.
-- Rdzeń odpowiada za `/approve` w tym samym czacie, współdzielone ładunki przycisków zatwierdzania oraz ogólne dostarczanie rezerwowe.
-- Preferuj pojedynczy obiekt `approvalCapability` w Pluginie kanału, gdy kanał potrzebuje zachowania specyficznego dla zatwierdzeń.
-- `ChannelPlugin.approvals` zostało usunięte. Umieść fakty dotyczące dostarczania/natywnego/renderowania/uwierzytelniania zatwierdzeń w `approvalCapability`.
-- `plugin.auth` służy tylko do logowania/wylogowania; rdzeń nie odczytuje już haków uwierzytelniania zatwierdzeń z tego obiektu.
+- Rdzeń odpowiada za `/approve` w tym samym czacie, współdzielone payloady przycisków zatwierdzeń i ogólne dostarczanie zapasowe.
+- Preferuj pojedynczy obiekt `approvalCapability` na Pluginie kanału, gdy kanał potrzebuje zachowania specyficznego dla zatwierdzeń.
+- `ChannelPlugin.approvals` zostało usunięte. Umieść fakty dotyczące dostarczania/natywności/renderowania/uwierzytelniania zatwierdzeń w `approvalCapability`.
+- `plugin.auth` służy tylko do logowania/wylogowania; rdzeń nie odczytuje już hooków uwierzytelniania zatwierdzeń z tego obiektu.
- `approvalCapability.authorizeActorAction` i `approvalCapability.getActionAvailabilityState` to kanoniczna powierzchnia uwierzytelniania zatwierdzeń.
-- Używaj `approvalCapability.getActionAvailabilityState` dla dostępności uwierzytelniania zatwierdzeń w tym samym czacie.
-- Jeśli Twój kanał udostępnia natywne zatwierdzenia exec, użyj `approvalCapability.getExecInitiatingSurfaceState` dla stanu powierzchni inicjującej/klienta natywnego, gdy różni się on od uwierzytelniania zatwierdzeń w tym samym czacie. Rdzeń używa tego haka specyficznego dla exec, aby rozróżnić `enabled` i `disabled`, zdecydować, czy kanał inicjujący obsługuje natywne zatwierdzenia exec, oraz uwzględnić ten kanał w wskazówkach dotyczących rezerwy klienta natywnego. `createApproverRestrictedNativeApprovalCapability(...)` wypełnia to dla typowego przypadku.
-- Używaj `outbound.shouldSuppressLocalPayloadPrompt` lub `outbound.beforeDeliverPayload` do zachowań cyklu życia ładunku specyficznych dla kanału, takich jak ukrywanie zduplikowanych lokalnych promptów zatwierdzeń lub wysyłanie wskaźników pisania przed dostarczeniem.
-- Używaj `approvalCapability.delivery` tylko do natywnego routingu zatwierdzeń lub wyciszania rezerwy.
-- Używaj `approvalCapability.nativeRuntime` dla faktów natywnych zatwierdzeń należących do kanału. Zachowaj leniwe ładowanie na gorących punktach wejścia kanału za pomocą `createLazyChannelApprovalNativeRuntimeAdapter(...)`, które może importować moduł runtime na żądanie, a jednocześnie pozwala rdzeniowi składać cykl życia zatwierdzeń.
-- Używaj `approvalCapability.render` tylko wtedy, gdy kanał naprawdę potrzebuje niestandardowych ładunków zatwierdzeń zamiast współdzielonego renderera.
-- Używaj `approvalCapability.describeExecApprovalSetup`, gdy kanał chce, aby odpowiedź dla ścieżki wyłączonej wyjaśniała dokładne pokrętła konfiguracji potrzebne do włączenia natywnych zatwierdzeń exec. Hak otrzymuje `{ channel, channelLabel, accountId }`; kanały z nazwanymi kontami powinny renderować ścieżki z zakresem konta, takie jak `channels..accounts..execApprovals.*`, zamiast domyślnych ścieżek najwyższego poziomu.
-- Jeśli kanał może wnioskować o stabilnych tożsamościach DM podobnych do właściciela na podstawie istniejącej konfiguracji, użyj `createResolvedApproverActionAuthAdapter` z `openclaw/plugin-sdk/approval-runtime`, aby ograniczyć `/approve` w tym samym czacie bez dodawania logiki specyficznej dla zatwierdzeń do rdzenia.
-- Jeśli kanał potrzebuje natywnego dostarczania zatwierdzeń, skup kod kanału na normalizacji celu oraz faktach transportu/prezentacji. Użyj `createChannelExecApprovalProfile`, `createChannelNativeOriginTargetResolver`, `createChannelApproverDmTargetResolver` i `createApproverRestrictedNativeApprovalCapability` z `openclaw/plugin-sdk/approval-runtime`. Umieść fakty specyficzne dla kanału za `approvalCapability.nativeRuntime`, najlepiej przez `createChannelApprovalNativeRuntimeAdapter(...)` lub `createLazyChannelApprovalNativeRuntimeAdapter(...)`, aby rdzeń mógł złożyć obsługę i przejąć filtrowanie żądań, routing, usuwanie duplikatów, wygaśnięcie, subskrypcję Gateway oraz powiadomienia o przekierowaniu. `nativeRuntime` jest podzielone na kilka mniejszych powierzchni:
+- Użyj `approvalCapability.getActionAvailabilityState` do dostępności uwierzytelniania zatwierdzeń w tym samym czacie.
+- Jeśli Twój kanał udostępnia natywne zatwierdzenia exec, użyj `approvalCapability.getExecInitiatingSurfaceState` dla stanu powierzchni inicjującej/klienta natywnego, gdy różni się on od uwierzytelniania zatwierdzeń w tym samym czacie. Rdzeń używa tego hooka specyficznego dla exec, aby odróżniać `enabled` od `disabled`, zdecydować, czy kanał inicjujący obsługuje natywne zatwierdzenia exec, i uwzględnić kanał we wskazówkach zapasowych dla klienta natywnego. `createApproverRestrictedNativeApprovalCapability(...)` wypełnia to dla typowego przypadku.
+- Użyj `outbound.shouldSuppressLocalPayloadPrompt` lub `outbound.beforeDeliverPayload` dla zachowań cyklu życia payloadu specyficznych dla kanału, takich jak ukrywanie zduplikowanych lokalnych promptów zatwierdzeń lub wysyłanie wskaźników pisania przed dostarczeniem.
+- Użyj `approvalCapability.delivery` tylko do natywnego trasowania zatwierdzeń lub wyłączania mechanizmu zapasowego.
+- Użyj `approvalCapability.nativeRuntime` dla natywnych faktów zatwierdzeń należących do kanału. Zachowaj leniwe ładowanie dla gorących entrypointów kanału za pomocą `createLazyChannelApprovalNativeRuntimeAdapter(...)`, które może importować moduł runtime na żądanie, jednocześnie pozwalając rdzeniowi złożyć cykl życia zatwierdzenia.
+- Użyj `approvalCapability.render` tylko wtedy, gdy kanał naprawdę potrzebuje niestandardowych payloadów zatwierdzeń zamiast współdzielonego renderera.
+- Użyj `approvalCapability.describeExecApprovalSetup`, gdy kanał chce, aby odpowiedź na ścieżce wyłączonej wyjaśniała dokładne przełączniki konfiguracyjne potrzebne do włączenia natywnych zatwierdzeń exec. Hook otrzymuje `{ channel, channelLabel, accountId }`; kanały z nazwanymi kontami powinny renderować ścieżki o zakresie konta, takie jak `channels..accounts..execApprovals.*`, zamiast domyślnych ścieżek najwyższego poziomu.
+- Jeśli kanał może wywnioskować stabilne tożsamości typu właściciela DM z istniejącej konfiguracji, użyj `createResolvedApproverActionAuthAdapter` z `openclaw/plugin-sdk/approval-runtime`, aby ograniczyć `/approve` w tym samym czacie bez dodawania logiki specyficznej dla zatwierdzeń w rdzeniu.
+- Jeśli kanał potrzebuje natywnego dostarczania zatwierdzeń, utrzymuj kod kanału skupiony na normalizacji celu oraz faktach dotyczących transportu/prezentacji. Użyj `createChannelExecApprovalProfile`, `createChannelNativeOriginTargetResolver`, `createChannelApproverDmTargetResolver` i `createApproverRestrictedNativeApprovalCapability` z `openclaw/plugin-sdk/approval-runtime`. Umieść fakty specyficzne dla kanału za `approvalCapability.nativeRuntime`, najlepiej przez `createChannelApprovalNativeRuntimeAdapter(...)` lub `createLazyChannelApprovalNativeRuntimeAdapter(...)`, aby rdzeń mógł złożyć handler i przejąć filtrowanie żądań, trasowanie, deduplikację, wygasanie, subskrypcję Gateway oraz powiadomienia o przekierowaniu gdzie indziej. `nativeRuntime` jest podzielone na kilka mniejszych powierzchni:
- `availability` — czy konto jest skonfigurowane i czy żądanie powinno zostać obsłużone
-- `presentation` — mapowanie współdzielonego modelu widoku zatwierdzenia na oczekujące/rozwiązane/wygasłe ładunki natywne lub działania końcowe
-- `transport` — przygotowanie celów oraz wysyłanie/aktualizowanie/usuwanie natywnych wiadomości zatwierdzeń
-- `interactions` — opcjonalne haki bind/unbind/clear-action dla natywnych przycisków lub reakcji
-- `observe` — opcjonalne haki diagnostyki dostarczania
-- Jeśli kanał potrzebuje obiektów należących do runtime, takich jak klient, token, aplikacja Bolt lub odbiornik Webhook, zarejestruj je przez `openclaw/plugin-sdk/channel-runtime-context`. Ogólny rejestr kontekstu runtime pozwala rdzeniowi bootstrapować handlery sterowane możliwościami na podstawie stanu uruchomienia kanału bez dodawania kleju opakowującego specyficznego dla zatwierdzeń.
-- Sięgaj po niższopoziomowe `createChannelApprovalHandler` lub `createChannelNativeApprovalRuntime` tylko wtedy, gdy powierzchnia sterowana możliwościami nie jest jeszcze wystarczająco ekspresyjna.
-- Kanały natywnych zatwierdzeń muszą routować zarówno `accountId`, jak i `approvalKind` przez te helpery. `accountId` utrzymuje politykę zatwierdzeń dla wielu kont w zakresie właściwego konta bota, a `approvalKind` zachowuje dla kanału dostępność zachowania zatwierdzeń exec vs Plugin bez zakodowanych na sztywno gałęzi w rdzeniu.
-- Rdzeń odpowiada teraz także za powiadomienia o przekierowaniu zatwierdzeń. Pluginy kanałów nie powinny wysyłać własnych wiadomości uzupełniających typu „zatwierdzenie trafiło do DM / innego kanału” z `createChannelNativeApprovalRuntime`; zamiast tego ujawnij dokładny routing źródła i DM zatwierdzającego przez współdzielone helpery możliwości zatwierdzeń i pozwól rdzeniowi agregować rzeczywiste dostarczenia przed opublikowaniem powiadomienia z powrotem do czatu inicjującego.
-- Zachowuj rodzaj identyfikatora dostarczonego zatwierdzenia od początku do końca. Klienci natywni nie powinni zgadywać ani przepisywać routingu zatwierdzeń exec vs Plugin na podstawie lokalnego stanu kanału.
-- Różne rodzaje zatwierdzeń mogą celowo ujawniać różne powierzchnie natywne.
+- `presentation` — mapowanie współdzielonego modelu widoku zatwierdzenia na oczekujące/rozwiązane/wygasłe natywne payloady lub działania końcowe
+- `transport` — przygotowywanie celów oraz wysyłanie/aktualizowanie/usuwanie natywnych wiadomości zatwierdzeń
+- `interactions` — opcjonalne hooki bind/unbind/clear-action dla natywnych przycisków lub reakcji
+- `observe` — opcjonalne hooki diagnostyki dostarczeń
+- Jeśli kanał potrzebuje obiektów należących do runtime, takich jak klient, token, aplikacja Bolt lub odbiornik Webhooków, zarejestruj je przez `openclaw/plugin-sdk/channel-runtime-context`. Ogólny rejestr kontekstu runtime pozwala rdzeniowi uruchamiać handlery sterowane możliwościami na podstawie stanu uruchomienia kanału bez dodawania kodu opakowującego specyficznego dla zatwierdzeń.
+- Sięgaj po niższopoziomowe `createChannelApprovalHandler` lub `createChannelNativeApprovalRuntime` tylko wtedy, gdy powierzchnia oparta na możliwościach nie jest jeszcze wystarczająco ekspresyjna.
+- Kanały natywnych zatwierdzeń muszą trasować zarówno `accountId`, jak i `approvalKind` przez te helpery. `accountId` utrzymuje zasady zatwierdzeń wielu kont w odpowiednim zakresie konta bota, a `approvalKind` utrzymuje zachowanie zatwierdzeń exec vs Plugin dostępne dla kanału bez zakodowanych na sztywno rozgałęzień w rdzeniu.
+- Rdzeń odpowiada teraz również za powiadomienia o przekierowaniu zatwierdzeń. Pluginy kanałów nie powinny wysyłać własnych wiadomości uzupełniających typu „zatwierdzenie trafiło do DM / innego kanału” z `createChannelNativeApprovalRuntime`; zamiast tego udostępnij dokładne trasowanie pochodzenia + DM osoby zatwierdzającej przez współdzielone helpery możliwości zatwierdzeń i pozwól rdzeniowi agregować rzeczywiste dostarczenia przed opublikowaniem powiadomienia z powrotem do czatu inicjującego.
+- Zachowuj typ identyfikatora dostarczonego zatwierdzenia od początku do końca. Klienci natywni nie powinni zgadywać ani przepisywać trasowania zatwierdzeń exec vs Plugin na podstawie lokalnego stanu kanału.
+- Różne typy zatwierdzeń mogą celowo udostępniać różne powierzchnie natywne.
Obecne przykłady bundlowane:
- - Slack zachowuje dostępny natywny routing zatwierdzeń zarówno dla identyfikatorów exec, jak i Plugin.
- - Matrix zachowuje ten sam natywny routing DM/kanału i UX reakcji dla zatwierdzeń exec i Plugin, nadal pozwalając, by uwierzytelnianie różniło się zależnie od rodzaju zatwierdzenia.
-- `createApproverRestrictedNativeApprovalAdapter` nadal istnieje jako opakowanie zgodności, ale nowy kod powinien preferować kreator możliwości i ujawniać `approvalCapability` w Pluginie.
+ - Slack zachowuje natywne trasowanie zatwierdzeń dostępne zarówno dla identyfikatorów exec, jak i Plugin.
+ - Matrix zachowuje to samo natywne trasowanie DM/kanału i UX reakcji dla zatwierdzeń exec i Plugin, jednocześnie nadal pozwalając, by uwierzytelnianie różniło się w zależności od typu zatwierdzenia.
+- `createApproverRestrictedNativeApprovalAdapter` nadal istnieje jako opakowanie zgodnościowe, ale nowy kod powinien preferować konstruktor możliwości i udostępniać `approvalCapability` w Pluginie.
-Dla gorących punktów wejścia kanału preferuj węższe podścieżki runtime, gdy potrzebujesz tylko jednej części tej rodziny:
+Dla gorących entrypointów kanału preferuj węższe podścieżki runtime, gdy potrzebujesz tylko jednej części tej rodziny:
- `openclaw/plugin-sdk/approval-auth-runtime`
- `openclaw/plugin-sdk/approval-client-runtime`
@@ -99,87 +101,89 @@ Podobnie preferuj `openclaw/plugin-sdk/setup-runtime`,
`openclaw/plugin-sdk/setup-adapter-runtime`,
`openclaw/plugin-sdk/reply-runtime`,
`openclaw/plugin-sdk/reply-dispatch-runtime`,
-`openclaw/plugin-sdk/reply-reference` oraz
-`openclaw/plugin-sdk/reply-chunking`, gdy nie potrzebujesz szerszej powierzchni parasolowej.
+`openclaw/plugin-sdk/reply-reference` i
+`openclaw/plugin-sdk/reply-chunking`, gdy nie potrzebujesz szerszej, zbiorczej
+powierzchni.
-W przypadku konfiguracji w szczególności:
+Konkretnie dla konfiguracji:
- `openclaw/plugin-sdk/setup-runtime` obejmuje bezpieczne dla runtime helpery konfiguracji:
- bezpieczne dla importu adaptery łatania konfiguracji (`createPatchedAccountSetupAdapter`,
+ adaptery patchowania konfiguracji bezpieczne importowo (`createPatchedAccountSetupAdapter`,
`createEnvPatchedAccountSetupAdapter`,
`createSetupInputPresenceValidator`), wyjście notatek wyszukiwania,
- `promptResolvedAllowFrom`, `splitSetupEntries` oraz delegowane
- kreatory proxy konfiguracji
-- `openclaw/plugin-sdk/setup-adapter-runtime` to wąska, świadoma środowiska powierzchnia
- adaptera dla `createEnvPatchedAccountSetupAdapter`
-- `openclaw/plugin-sdk/channel-setup` obejmuje kreatory konfiguracji opcjonalnej instalacji
+ `promptResolvedAllowFrom`, `splitSetupEntries` i delegowane
+ konstruktory proxy konfiguracji
+- `openclaw/plugin-sdk/setup-adapter-runtime` to wąska powierzchnia adaptera świadoma env
+ dla `createEnvPatchedAccountSetupAdapter`
+- `openclaw/plugin-sdk/channel-setup` obejmuje konstruktory konfiguracji opcjonalnej instalacji
oraz kilka prymitywów bezpiecznych dla konfiguracji:
`createOptionalChannelSetupSurface`, `createOptionalChannelSetupAdapter`,
-Jeśli Twój kanał obsługuje konfigurację lub uwierzytelnianie sterowane środowiskiem i ogólne przepływy uruchamiania/konfiguracji powinny znać te nazwy zmiennych środowiskowych przed załadowaniem runtime, zadeklaruj je w manifeście Pluginu za pomocą `channelEnvVars`. Zachowaj runtime `envVars` kanału lub lokalne stałe tylko dla kopii skierowanej do operatora.
+Jeśli Twój kanał obsługuje konfigurację lub uwierzytelnianie sterowane przez env i ogólne przepływy uruchamiania/konfiguracji powinny znać te nazwy env jeszcze przed załadowaniem runtime, zadeklaruj je w manifeście Pluginu za pomocą `channelEnvVars`. Zachowaj `envVars` runtime kanału lub lokalne stałe tylko dla kopii przeznaczonej dla operatora.
`createOptionalChannelSetupWizard`, `DEFAULT_ACCOUNT_ID`,
-`createTopLevelChannelDmPolicy`, `setSetupChannelEnabled` oraz
+`createTopLevelChannelDmPolicy`, `setSetupChannelEnabled` i
`splitSetupEntries`
- używaj szerszej powierzchni `openclaw/plugin-sdk/setup` tylko wtedy, gdy potrzebujesz również
cięższych współdzielonych helperów konfiguracji/ustawień, takich jak
`moveSingleAccountChannelSectionToDefaultAccount(...)`
-Jeśli Twój kanał chce jedynie reklamować „najpierw zainstaluj ten Plugin” w powierzchniach konfiguracji, preferuj `createOptionalChannelSetupSurface(...)`. Wygenerowany adapter/kreator domyślnie odmawia zapisów konfiguracji i finalizacji oraz ponownie wykorzystuje ten sam komunikat o wymaganej instalacji w walidacji, finalizacji i treści linku do dokumentacji.
+Jeśli Twój kanał chce jedynie komunikować na powierzchniach konfiguracji „najpierw zainstaluj ten Plugin”, preferuj `createOptionalChannelSetupSurface(...)`. Wygenerowany adapter/kreator domyślnie odmawia zapisu konfiguracji i finalizacji, a także ponownie wykorzystuje ten sam komunikat wymagający instalacji w walidacji, finalizacji i treści z linkiem do dokumentacji.
Dla innych gorących ścieżek kanału preferuj wąskie helpery zamiast szerszych starszych powierzchni:
- `openclaw/plugin-sdk/account-core`,
`openclaw/plugin-sdk/account-id`,
- `openclaw/plugin-sdk/account-resolution` oraz
+ `openclaw/plugin-sdk/account-resolution` i
`openclaw/plugin-sdk/account-helpers` dla konfiguracji wielu kont i
- rezerwy konta domyślnego
-- `openclaw/plugin-sdk/inbound-envelope` oraz
- `openclaw/plugin-sdk/inbound-reply-dispatch` dla routingu/koperty wejściowej oraz
- połączeń rejestrowania i dyspozycji
+ zapasowego przejścia do konta domyślnego
+- `openclaw/plugin-sdk/inbound-envelope` i
+ `openclaw/plugin-sdk/inbound-reply-dispatch` dla tras/kopert przychodzących oraz
+ połączenia zapisywania i dyspozycji
- `openclaw/plugin-sdk/messaging-targets` dla parsowania/dopasowywania celów
-- `openclaw/plugin-sdk/outbound-media` oraz
+- `openclaw/plugin-sdk/outbound-media` i
`openclaw/plugin-sdk/outbound-runtime` dla ładowania multimediów oraz delegatów
- tożsamości/wysyłania wychodzącego
+ tożsamości/wysyłki ruchu wychodzącego
- `openclaw/plugin-sdk/thread-bindings-runtime` dla cyklu życia powiązań wątków
i rejestracji adapterów
- `openclaw/plugin-sdk/agent-media-payload` tylko wtedy, gdy nadal wymagany jest
- starszy układ pól ładunku agent/media
-- `openclaw/plugin-sdk/telegram-command-config` dla normalizacji niestandardowych komend Telegram,
- walidacji duplikatów/konfliktów oraz stabilnego dla rezerw kontraktu konfiguracji komend
+ starszy układ pól payloadu agenta/multimediów
+- `openclaw/plugin-sdk/telegram-command-config` dla normalizacji niestandardowych poleceń Telegram,
+ walidacji duplikatów/konfliktów oraz kontraktu konfiguracji poleceń
+ stabilnego względem mechanizmu zapasowego
-Kanały tylko z uwierzytelnianiem zwykle mogą zatrzymać się na ścieżce domyślnej: rdzeń obsługuje zatwierdzenia, a Plugin jedynie udostępnia możliwości outbound/auth. Kanały natywnych zatwierdzeń, takie jak Matrix, Slack, Telegram i niestandardowe transporty czatu, powinny używać współdzielonych helperów natywnych zamiast implementować własny cykl życia zatwierdzeń.
+Kanały tylko z uwierzytelnianiem zwykle mogą zakończyć na ścieżce domyślnej: rdzeń obsługuje zatwierdzenia, a Plugin jedynie udostępnia możliwości ruchu wychodzącego/uwierzytelniania. Kanały natywnych zatwierdzeń, takie jak Matrix, Slack, Telegram i niestandardowe transporty czatu, powinny używać współdzielonych helperów natywnych zamiast implementować własny cykl życia zatwierdzeń.
## Zasady wzmianek przychodzących
-Obsługę wzmianek przychodzących utrzymuj w podziale na dwie warstwy:
+Obsługę wzmianek przychodzących utrzymuj podzieloną na dwie warstwy:
- gromadzenie danych należące do Pluginu
-- współdzielona ocena zasad
+- współdzielone ocenianie zasad
-Dla warstwy współdzielonej używaj `openclaw/plugin-sdk/channel-inbound`.
+Dla warstwy współdzielonej użyj `openclaw/plugin-sdk/channel-inbound`.
-Dobre dopasowanie do logiki lokalnej dla Pluginu:
+Dobrze pasuje do logiki lokalnej dla Pluginu:
- wykrywanie odpowiedzi do bota
-- wykrywanie cytatów bota
-- sprawdzanie uczestnictwa we wątku
-- wykluczanie wiadomości usługowych/systemowych
-- natywne dla platformy cache potrzebne do udowodnienia uczestnictwa bota
+- wykrywanie cytatu bota
+- sprawdzanie udziału w wątku
+- wykluczenia wiadomości usługowych/systemowych
+- natywne dla platformy cache potrzebne do potwierdzenia udziału bota
-Dobre dopasowanie do współdzielonego helpera:
+Dobrze pasuje do współdzielonego helpera:
- `requireMention`
- jawny wynik wzmianki
- lista dozwolonych niejawnych wzmianek
-- obejście komend
+- obejście poleceń
- ostateczna decyzja o pominięciu
Preferowany przepływ:
-1. Oblicz lokalne fakty dotyczące wzmianek.
+1. Oblicz lokalne fakty dotyczące wzmianki.
2. Przekaż te fakty do `resolveInboundMentionDecision({ facts, policy })`.
-3. Użyj `decision.effectiveWasMentioned`, `decision.shouldBypassMention` i `decision.shouldSkip` w swojej bramce wejściowej.
+3. Użyj `decision.effectiveWasMentioned`, `decision.shouldBypassMention` i `decision.shouldSkip` w swojej bramce ruchu przychodzącego.
```typescript
import {
@@ -228,17 +232,17 @@ bundlowanych Pluginów kanałów, które już zależą od wstrzykiwania runtime:
- `resolveInboundMentionDecision`
Starsze helpery `resolveMentionGating*` pozostają w
-`openclaw/plugin-sdk/channel-inbound` jedynie jako eksporty zgodności. Nowy kod
+`openclaw/plugin-sdk/channel-inbound` jedynie jako eksporty zgodnościowe. Nowy kod
powinien używać `resolveInboundMentionDecision({ facts, policy })`.
-## Omówienie
+## Przewodnik
- Utwórz standardowe pliki Pluginu. Pole `channel` w `package.json`
- sprawia, że jest to Plugin kanału. Pełną powierzchnię metadanych pakietu
- znajdziesz w [Konfiguracja i ustawienia Pluginu](/pl/plugins/sdk-setup#openclaw-channel):
+ Utwórz standardowe pliki Pluginu. Pole `channel` w `package.json` to
+ właśnie to, co sprawia, że jest to Plugin kanału. Pełną powierzchnię metadanych pakietu
+ znajdziesz w [Konfiguracja Pluginu i Config](/pl/plugins/sdk-setup#openclaw-channel):
```json package.json
@@ -252,7 +256,7 @@ powinien używać `resolveInboundMentionDecision({ facts, policy })`.
"channel": {
"id": "acme-chat",
"label": "Acme Chat",
- "blurb": "Connect OpenClaw to Acme Chat."
+ "blurb": "Połącz OpenClaw z Acme Chat."
}
}
}
@@ -264,7 +268,7 @@ powinien używać `resolveInboundMentionDecision({ facts, policy })`.
"kind": "channel",
"channels": ["acme-chat"],
"name": "Acme Chat",
- "description": "Acme Chat channel plugin",
+ "description": "Plugin kanału Acme Chat",
"configSchema": {
"type": "object",
"additionalProperties": false,
@@ -289,7 +293,7 @@ powinien używać `resolveInboundMentionDecision({ facts, policy })`.
Interfejs `ChannelPlugin` ma wiele opcjonalnych powierzchni adapterów. Zacznij od
- minimum — `id` i `setup` — i dodawaj adaptery w miarę potrzeb.
+ minimum — `id` i `setup` — i dodawaj adaptery w razie potrzeby.
Utwórz `src/channel.ts`:
@@ -299,7 +303,7 @@ powinien używać `resolveInboundMentionDecision({ facts, policy })`.
createChannelPluginBase,
} from "openclaw/plugin-sdk/channel-core";
import type { OpenClawConfig } from "openclaw/plugin-sdk/channel-core";
- import { acmeChatApi } from "./client.js"; // your platform API client
+ import { acmeChatApi } from "./client.js"; // klient API Twojej platformy
type ResolvedAccount = {
accountId: string | null;
@@ -340,7 +344,7 @@ powinien używać `resolveInboundMentionDecision({ facts, policy })`.
},
}),
- // DM security: who can message the bot
+ // Bezpieczeństwo DM: kto może wysyłać wiadomości do bota
security: {
dm: {
channelKey: "acme-chat",
@@ -350,21 +354,21 @@ powinien używać `resolveInboundMentionDecision({ facts, policy })`.
},
},
- // Pairing: approval flow for new DM contacts
+ // Parowanie: przepływ zatwierdzania dla nowych kontaktów DM
pairing: {
text: {
- idLabel: "Acme Chat username",
- message: "Send this code to verify your identity:",
+ idLabel: "Nazwa użytkownika Acme Chat",
+ message: "Wyślij ten kod, aby zweryfikować swoją tożsamość:",
notify: async ({ target, code }) => {
await acmeChatApi.sendDm(target, `Pairing code: ${code}`);
},
},
},
- // Threading: how replies are delivered
+ // Wątkowanie: sposób dostarczania odpowiedzi
threading: { topLevelReplyToMode: "reply" },
- // Outbound: send messages to the platform
+ // Ruch wychodzący: wysyłanie wiadomości na platformę
outbound: {
attachedResults: {
sendText: async (params) => {
@@ -385,17 +389,17 @@ powinien używać `resolveInboundMentionDecision({ facts, policy })`.
```
- Zamiast ręcznie implementować niskopoziomowe interfejsy adapterów, przekazujesz
- deklaratywne opcje, a kreator je składa:
+ Zamiast ręcznie implementować niskopoziomowe interfejsy adapterów,
+ przekazujesz deklaratywne opcje, a konstruktor składa je razem:
| Opcja | Co podłącza |
| --- | --- |
- | `security.dm` | Rozpoznawanie zabezpieczeń DM z zakresem z pól konfiguracji |
- | `pairing.text` | Przepływ parowania DM oparty na tekście z wymianą kodów |
- | `threading` | Rozpoznawanie trybu reply-to (stały, z zakresem konta lub niestandardowy) |
- | `outbound.attachedResults` | Funkcje wysyłania zwracające metadane wyniku (identyfikatory wiadomości) |
+ | `security.dm` | Resolver bezpieczeństwa DM o zakresie z pól config |
+ | `pairing.text` | Przepływ parowania DM oparty na tekście z wymianą kodu |
+ | `threading` | Resolver trybu odpowiedzi (stały, o zakresie konta lub niestandardowy) |
+ | `outbound.attachedResults` | Funkcje wysyłania, które zwracają metadane wyniku (identyfikatory wiadomości) |
- Możesz również przekazać surowe obiekty adapterów zamiast opcji deklaratywnych,
+ Możesz też przekazać surowe obiekty adapterów zamiast deklaratywnych opcji,
jeśli potrzebujesz pełnej kontroli.
@@ -411,20 +415,20 @@ powinien używać `resolveInboundMentionDecision({ facts, policy })`.
export default defineChannelPluginEntry({
id: "acme-chat",
name: "Acme Chat",
- description: "Acme Chat channel plugin",
+ description: "Plugin kanału Acme Chat",
plugin: acmeChatPlugin,
registerCliMetadata(api) {
api.registerCli(
({ program }) => {
program
.command("acme-chat")
- .description("Acme Chat management");
+ .description("Zarządzanie Acme Chat");
},
{
descriptors: [
{
name: "acme-chat",
- description: "Acme Chat management",
+ description: "Zarządzanie Acme Chat",
hasSubcommands: false,
},
],
@@ -438,15 +442,16 @@ powinien używać `resolveInboundMentionDecision({ facts, policy })`.
```
Umieść deskryptory CLI należące do kanału w `registerCliMetadata(...)`, aby OpenClaw
- mógł pokazywać je w pomocy głównej bez aktywowania pełnego runtime kanału,
- podczas gdy zwykłe pełne ładowania nadal pobierają te same deskryptory do rzeczywistej
- rejestracji komend. Zachowaj `registerFull(...)` dla pracy tylko w runtime.
- Jeśli `registerFull(...)` rejestruje metody RPC Gateway, użyj prefiksu
- specyficznego dla Pluginu. Przestrzenie nazw administratora rdzenia (`config.*`,
+ mógł pokazywać je w głównej pomocy bez aktywowania pełnego runtime kanału,
+ podczas gdy zwykłe pełne ładowania nadal pobiorą te same deskryptory do rzeczywistej
+ rejestracji poleceń. `registerFull(...)` zachowaj dla pracy wyłącznie w runtime.
+ Jeśli `registerFull(...)` rejestruje metody RPC Gateway, użyj
+ prefiksu specyficznego dla Pluginu. Przestrzenie nazw administracyjnych rdzenia (`config.*`,
`exec.approvals.*`, `wizard.*`, `update.*`) pozostają zarezerwowane i zawsze
- rozwiązują się do `operator.admin`.
- `defineChannelPluginEntry` automatycznie obsługuje podział trybów rejestracji. Wszystkie
- opcje znajdziesz w [Punkty wejścia](/pl/plugins/sdk-entrypoints#definechannelpluginentry).
+ są rozwiązywane do `operator.admin`.
+ `defineChannelPluginEntry` automatycznie obsługuje podział trybów rejestracji. Zobacz
+ [Punkty wejścia](/pl/plugins/sdk-entrypoints#definechannelpluginentry), aby poznać wszystkie
+ opcje.
@@ -462,26 +467,31 @@ powinien używać `resolveInboundMentionDecision({ facts, policy })`.
OpenClaw ładuje to zamiast pełnego punktu wejścia, gdy kanał jest wyłączony
lub nieskonfigurowany. Pozwala to uniknąć wciągania ciężkiego kodu runtime podczas przepływów konfiguracji.
- Szczegóły znajdziesz w [Konfiguracja i ustawienia](/pl/plugins/sdk-setup#setup-entry).
+ Szczegóły znajdziesz w [Konfiguracja i Config](/pl/plugins/sdk-setup#setup-entry).
+
+ Bundlowane kanały workspace, które rozdzielają eksporty bezpieczne dla konfiguracji do modułów
+ pomocniczych, mogą używać `defineBundledChannelSetupEntry(...)` z
+ `openclaw/plugin-sdk/channel-entry-contract`, gdy potrzebują także
+ jawnego settera runtime dla czasu konfiguracji.
Twój Plugin musi odbierać wiadomości z platformy i przekazywać je do
OpenClaw. Typowy wzorzec to Webhook, który weryfikuje żądanie i
- dyspozytuje je przez handler wejściowy Twojego kanału:
+ przekazuje je przez handler przychodzący Twojego kanału:
```typescript
registerFull(api) {
api.registerHttpRoute({
path: "/acme-chat/webhook",
- auth: "plugin", // plugin-managed auth (verify signatures yourself)
+ auth: "plugin", // uwierzytelnianie zarządzane przez Plugin (samodzielnie zweryfikuj podpisy)
handler: async (req, res) => {
const event = parseWebhookPayload(req);
- // Your inbound handler dispatches the message to OpenClaw.
- // The exact wiring depends on your platform SDK —
- // see a real example in the bundled Microsoft Teams or Google Chat plugin package.
+ // Twój handler przychodzący przekazuje wiadomość do OpenClaw.
+ // Dokładne podłączenie zależy od SDK Twojej platformy —
+ // zobacz rzeczywisty przykład w bundlowanym pakiecie Pluginu Microsoft Teams lub Google Chat.
await handleAcmeChatInbound(api, event);
res.statusCode = 200;
@@ -494,22 +504,22 @@ powinien używać `resolveInboundMentionDecision({ facts, policy })`.
Obsługa wiadomości przychodzących jest specyficzna dla kanału. Każdy Plugin kanału
- odpowiada za własny pipeline wejściowy. Zobacz bundlowane Pluginy kanałów
+ posiada własny potok przychodzący. Zobacz bundlowane Pluginy kanałów
(na przykład pakiet Pluginu Microsoft Teams lub Google Chat), aby poznać rzeczywiste wzorce.
-
-Napisz testy kolokowane w `src/channel.test.ts`:
+
+Pisz testy współlokowane w `src/channel.test.ts`:
```typescript src/channel.test.ts
import { describe, it, expect } from "vitest";
import { acmeChatPlugin } from "./channel.js";
- describe("acme-chat plugin", () => {
- it("resolves account from config", () => {
+ describe("plugin acme-chat", () => {
+ it("rozpoznaje konto na podstawie config", () => {
const cfg = {
channels: {
"acme-chat": { token: "test-token", allowFrom: ["user1"] },
@@ -519,7 +529,7 @@ Napisz testy kolokowane w `src/channel.test.ts`:
expect(account.token).toBe("test-token");
});
- it("inspects account without materializing secrets", () => {
+ it("sprawdza konto bez materializowania sekretów", () => {
const cfg = {
channels: { "acme-chat": { token: "test-token" } },
} as any;
@@ -528,7 +538,7 @@ Napisz testy kolokowane w `src/channel.test.ts`:
expect(result.tokenStatus).toBe("available");
});
- it("reports missing config", () => {
+ it("zgłasza brakujący config", () => {
const cfg = { channels: {} } as any;
const result = acmeChatPlugin.setup!.inspectAccount!(cfg, undefined);
expect(result.configured).toBe(false);
@@ -550,25 +560,25 @@ Napisz testy kolokowane w `src/channel.test.ts`:
```
/acme-chat/
├── package.json # metadane openclaw.channel
-├── openclaw.plugin.json # Manifest ze schematem konfiguracji
+├── openclaw.plugin.json # Manifest z schematem config
├── index.ts # defineChannelPluginEntry
├── setup-entry.ts # defineSetupPluginEntry
├── api.ts # Eksporty publiczne (opcjonalnie)
-├── runtime-api.ts # Wewnętrzne eksporty runtime (opcjonalnie)
+├── runtime-api.ts # Eksporty wewnętrznego runtime (opcjonalnie)
└── src/
├── channel.ts # ChannelPlugin przez createChatChannelPlugin
├── channel.test.ts # Testy
├── client.ts # Klient API platformy
- └── runtime.ts # Magazyn runtime (w razie potrzeby)
+ └── runtime.ts # Magazyn runtime (jeśli potrzebny)
```
## Tematy zaawansowane
- Stałe, z zakresem konta lub niestandardowe tryby odpowiedzi
+ Stałe, o zakresie konta lub niestandardowe tryby odpowiedzi
-
+
describeMessageTool i wykrywanie akcji
@@ -580,10 +590,7 @@ Napisz testy kolokowane w `src/channel.test.ts`:
-Niektóre bundlowane powierzchnie helperów nadal istnieją na potrzeby utrzymania
-bundlowanych Pluginów i zgodności. Nie są one zalecanym wzorcem dla nowych Pluginów kanałów;
-preferuj ogólne podścieżki channel/setup/reply/runtime ze wspólnej
-powierzchni SDK, chyba że bezpośrednio utrzymujesz tę rodzinę bundlowanych Pluginów.
+Niektóre bundlowane powierzchnie helperów nadal istnieją na potrzeby utrzymania bundlowanych Pluginów i zgodności. Nie są one zalecanym wzorcem dla nowych Pluginów kanałów; preferuj ogólne podścieżki channel/setup/reply/runtime ze wspólnej powierzchni SDK, chyba że bezpośrednio utrzymujesz tę rodzinę bundlowanych Pluginów.
## Następne kroki
diff --git a/docs/pl/plugins/sdk-entrypoints.md b/docs/pl/plugins/sdk-entrypoints.md
index 43986059a..4a5ff134e 100644
--- a/docs/pl/plugins/sdk-entrypoints.md
+++ b/docs/pl/plugins/sdk-entrypoints.md
@@ -1,35 +1,34 @@
---
read_when:
- - Potrzebujesz dokładnej sygnatury typu dla definePluginEntry lub defineChannelPluginEntry
- - Chcesz zrozumieć tryb rejestracji (pełny vs setup vs metadane CLI)
+ - Potrzebujesz dokładnej sygnatury typu `definePluginEntry` lub `defineChannelPluginEntry`
+ - Chcesz zrozumieć tryb rejestracji (pełny vs konfiguracja vs metadane CLI)
- Szukasz opcji punktu wejścia
sidebarTitle: Entry Points
-summary: Dokumentacja referencyjna dla definePluginEntry, defineChannelPluginEntry i defineSetupPluginEntry
-title: Punkty wejścia pluginów
+summary: Odniesienie do `definePluginEntry`, `defineChannelPluginEntry` i `defineSetupPluginEntry`
+title: Punkty wejścia Pluginu
x-i18n:
- generated_at: "2026-04-05T14:01:43Z"
+ generated_at: "2026-04-15T19:41:35Z"
model: gpt-5.4
provider: openai
- source_hash: 799dbfe71e681dd8ba929a7a631dfe745c3c5c69530126fea2f9c137b120f51f
+ source_hash: aabca25bc9b8ff1b5bb4852bafe83640ffeba006ea6b6a8eff4e2c37a10f1fe4
source_path: plugins/sdk-entrypoints.md
workflow: 15
---
-# Punkty wejścia pluginów
+# Punkty wejścia Pluginu
-Każdy plugin eksportuje domyślny obiekt entry. SDK udostępnia trzy pomocnicze funkcje do ich tworzenia.
+Każdy Plugin eksportuje domyślny obiekt punktu wejścia. SDK udostępnia trzy pomocnicze funkcje do ich tworzenia.
- **Szukasz przewodnika krok po kroku?** Zobacz [Pluginy kanałów](/plugins/sdk-channel-plugins)
- lub [Pluginy providerów](/plugins/sdk-provider-plugins), aby zapoznać się z instrukcjami krok po kroku.
+ **Szukasz przewodnika krok po kroku?** Zobacz [Pluginy kanałów](/pl/plugins/sdk-channel-plugins)
+ lub [Pluginy dostawców](/pl/plugins/sdk-provider-plugins), aby skorzystać z instrukcji krok po kroku.
## `definePluginEntry`
**Import:** `openclaw/plugin-sdk/plugin-entry`
-Dla pluginów providerów, pluginów narzędzi, pluginów hooków i wszystkiego, co **nie jest**
-kanałem wiadomości.
+Dla Pluginów dostawców, Pluginów narzędzi, Pluginów hooków i wszystkiego, co **nie** jest kanałem wiadomości.
```typescript
import { definePluginEntry } from "openclaw/plugin-sdk/plugin-entry";
@@ -49,28 +48,26 @@ export default definePluginEntry({
});
```
-| Pole | Typ | Wymagane | Domyślnie |
-| -------------- | ---------------------------------------------------------------- | -------- | ------------------ |
-| `id` | `string` | Tak | — |
-| `name` | `string` | Tak | — |
-| `description` | `string` | Tak | — |
-| `kind` | `string` | Nie | — |
+| Pole | Typ | Wymagane | Domyślnie |
+| -------------- | ---------------------------------------------------------------- | -------- | ------------------- |
+| `id` | `string` | Tak | — |
+| `name` | `string` | Tak | — |
+| `description` | `string` | Tak | — |
+| `kind` | `string` | Nie | — |
| `configSchema` | `OpenClawPluginConfigSchema \| () => OpenClawPluginConfigSchema` | Nie | Schemat pustego obiektu |
-| `register` | `(api: OpenClawPluginApi) => void` | Tak | — |
+| `register` | `(api: OpenClawPluginApi) => void` | Tak | — |
- `id` musi odpowiadać manifestowi `openclaw.plugin.json`.
- `kind` służy do wyłącznych slotów: `"memory"` lub `"context-engine"`.
- `configSchema` może być funkcją do leniwej ewaluacji.
-- OpenClaw rozwiązuje i zapamiętuje ten schemat przy pierwszym dostępie, więc kosztowne
- konstruktory schematów uruchamiają się tylko raz.
+- OpenClaw rozwiązuje i zapamiętuje ten schemat przy pierwszym dostępie, więc kosztowne konstruktory schematów uruchamiają się tylko raz.
## `defineChannelPluginEntry`
**Import:** `openclaw/plugin-sdk/channel-core`
Opakowuje `definePluginEntry` logiką specyficzną dla kanałów. Automatycznie wywołuje
-`api.registerChannel({ plugin })`, udostępnia opcjonalny seam metadanych CLI dla
-głównej pomocy i warunkuje `registerFull` trybem rejestracji.
+`api.registerChannel({ plugin })`, udostępnia opcjonalny punkt integracji metadanych CLI dla pomocy głównej i uzależnia `registerFull` od trybu rejestracji.
```typescript
import { defineChannelPluginEntry } from "openclaw/plugin-sdk/channel-core";
@@ -90,36 +87,35 @@ export default defineChannelPluginEntry({
});
```
-| Pole | Typ | Wymagane | Domyślnie |
-| --------------------- | ---------------------------------------------------------------- | -------- | ------------------ |
-| `id` | `string` | Tak | — |
-| `name` | `string` | Tak | — |
-| `description` | `string` | Tak | — |
-| `plugin` | `ChannelPlugin` | Tak | — |
+| Pole | Typ | Wymagane | Domyślnie |
+| --------------------- | ---------------------------------------------------------------- | -------- | ------------------- |
+| `id` | `string` | Tak | — |
+| `name` | `string` | Tak | — |
+| `description` | `string` | Tak | — |
+| `plugin` | `ChannelPlugin` | Tak | — |
| `configSchema` | `OpenClawPluginConfigSchema \| () => OpenClawPluginConfigSchema` | Nie | Schemat pustego obiektu |
-| `setRuntime` | `(runtime: PluginRuntime) => void` | Nie | — |
-| `registerCliMetadata` | `(api: OpenClawPluginApi) => void` | Nie | — |
-| `registerFull` | `(api: OpenClawPluginApi) => void` | Nie | — |
+| `setRuntime` | `(runtime: PluginRuntime) => void` | Nie | — |
+| `registerCliMetadata` | `(api: OpenClawPluginApi) => void` | Nie | — |
+| `registerFull` | `(api: OpenClawPluginApi) => void` | Nie | — |
-- `setRuntime` jest wywoływane podczas rejestracji, aby można było zapisać referencję runtime
- (zwykle przez `createPluginRuntimeStore`). Jest pomijane podczas przechwytywania
- metadanych CLI.
+- `setRuntime` jest wywoływane podczas rejestracji, aby można było przechować referencję do runtime
+ (zwykle za pomocą `createPluginRuntimeStore`). Jest pomijane podczas
+ przechwytywania metadanych CLI.
- `registerCliMetadata` działa zarówno przy `api.registrationMode === "cli-metadata"`,
jak i `api.registrationMode === "full"`.
- Używaj go jako kanonicznego miejsca dla deskryptorów CLI należących do kanału, aby
- główna pomoc pozostawała nieaktywująca, a jednocześnie normalna rejestracja poleceń CLI
- była zgodna z pełnym ładowaniem pluginów.
+ Używaj go jako kanonicznego miejsca dla deskryptorów CLI należących do kanału, aby pomoc główna
+ nie aktywowała ładowania, a jednocześnie zwykła rejestracja poleceń CLI pozostała zgodna
+ z pełnym ładowaniem Pluginu.
- `registerFull` działa tylko wtedy, gdy `api.registrationMode === "full"`. Jest pomijane
- podczas ładowania tylko do setupu.
+ podczas ładowania tylko do konfiguracji.
- Podobnie jak `definePluginEntry`, `configSchema` może być leniwą fabryką, a OpenClaw
zapamiętuje rozwiązany schemat przy pierwszym dostępie.
-- Dla należących do pluginu głównych poleceń CLI preferuj `api.registerCli(..., { descriptors: [...] })`,
- gdy chcesz, aby polecenie pozostało ładowane leniwie, ale nie znikało z
- głównego drzewa parsowania CLI. W przypadku pluginów kanałów preferuj rejestrowanie tych
- deskryptorów z poziomu `registerCliMetadata(...)`, a `registerFull(...)` pozostaw
- do pracy wyłącznie runtime.
-- Jeśli `registerFull(...)` rejestruje również metody Gateway RPC, trzymaj je pod
- prefiksem specyficznym dla pluginu. Zarezerwowane główne przestrzenie nazw administratora (`config.*`,
+- Dla głównych poleceń CLI należących do Pluginu preferuj `api.registerCli(..., { descriptors: [...] })`,
+ gdy chcesz, aby polecenie pozostało ładowane leniwie bez znikania z
+ drzewa parsowania głównego CLI. W przypadku Pluginów kanałów preferuj rejestrowanie takich deskryptorów
+ z poziomu `registerCliMetadata(...)`, a `registerFull(...)` pozostaw do pracy wyłącznie związanej z runtime.
+- Jeśli `registerFull(...)` rejestruje także metody Gateway RPC, utrzymuj je pod
+ prefiksem specyficznym dla Pluginu. Zastrzeżone przestrzenie nazw administracyjnych rdzenia (`config.*`,
`exec.approvals.*`, `wizard.*`, `update.*`) są zawsze wymuszane do
`operator.admin`.
@@ -136,34 +132,58 @@ import { defineSetupPluginEntry } from "openclaw/plugin-sdk/channel-core";
export default defineSetupPluginEntry(myChannelPlugin);
```
-OpenClaw ładuje to zamiast pełnego entry, gdy kanał jest wyłączony,
-nieskonfigurowany albo gdy włączone jest odroczone ładowanie. Zobacz
-[Setup i konfiguracja](/plugins/sdk-setup#setup-entry), aby dowiedzieć się, kiedy ma to znaczenie.
+OpenClaw ładuje to zamiast pełnego punktu wejścia, gdy kanał jest wyłączony,
+nieskonfigurowany lub gdy włączone jest ładowanie odroczone. Zobacz
+[Konfiguracja i ustawienia](/pl/plugins/sdk-setup#setup-entry), aby dowiedzieć się, kiedy ma to znaczenie.
-W praktyce łącz `defineSetupPluginEntry(...)` z wąskimi rodzinami helperów setupu:
+W praktyce łącz `defineSetupPluginEntry(...)` z wąskimi rodzinami pomocników konfiguracji:
-- `openclaw/plugin-sdk/setup-runtime` dla bezpiecznych dla runtime helperów setupu, takich jak
- bezpieczne importowo adaptery poprawek setupu, wyjście `lookup-note`,
- `promptResolvedAllowFrom`, `splitSetupEntries` i delegowane proxy setupu
-- `openclaw/plugin-sdk/channel-setup` dla opcjonalnych powierzchni setupu instalacji
-- `openclaw/plugin-sdk/setup-tools` dla helperów CLI/archiwów/dokumentacji setupu i instalacji
+- `openclaw/plugin-sdk/setup-runtime` dla bezpiecznych względem runtime pomocników konfiguracji, takich jak
+ adaptery łatek konfiguracji bezpieczne przy imporcie, dane wyjściowe `lookup-note`,
+ `promptResolvedAllowFrom`, `splitSetupEntries` i delegowane proxy konfiguracji
+- `openclaw/plugin-sdk/channel-setup` dla powierzchni konfiguracji opcjonalnej instalacji
+- `openclaw/plugin-sdk/setup-tools` dla pomocników CLI/archiwum/dokumentacji konfiguracji i instalacji
-Ciężkie SDK, rejestrację CLI i długowieczne usługi runtime trzymaj w pełnym
-entry.
+Ciężkie SDK, rejestrację CLI i długowieczne usługi runtime pozostaw w pełnym
+punkcie wejścia.
+
+Kanały workspace dołączone do repozytorium, które rozdzielają powierzchnie konfiguracji i runtime, mogą zamiast tego używać
+`defineBundledChannelSetupEntry(...)` z
+`openclaw/plugin-sdk/channel-entry-contract`. Ten kontrakt pozwala zachować w punkcie wejścia konfiguracji
+eksporty plugin/secrets bezpieczne dla konfiguracji, a jednocześnie nadal udostępnia setter runtime:
+
+```typescript
+import { defineBundledChannelSetupEntry } from "openclaw/plugin-sdk/channel-entry-contract";
+
+export default defineBundledChannelSetupEntry({
+ importMetaUrl: import.meta.url,
+ plugin: {
+ specifier: "./channel-plugin-api.js",
+ exportName: "myChannelPlugin",
+ },
+ runtime: {
+ specifier: "./runtime-api.js",
+ exportName: "setMyChannelRuntime",
+ },
+});
+```
+
+Używaj tego dołączonego kontraktu tylko wtedy, gdy przepływy konfiguracji rzeczywiście wymagają lekkiego
+settera runtime przed załadowaniem pełnego punktu wejścia kanału.
## Tryb rejestracji
-`api.registrationMode` informuje plugin, jak został załadowany:
+`api.registrationMode` informuje Plugin, w jaki sposób został załadowany:
| Tryb | Kiedy | Co rejestrować |
| ----------------- | --------------------------------- | ----------------------------------------------------------------------------------------- |
-| `"full"` | Normalny start Gateway | Wszystko |
+| `"full"` | Normalne uruchomienie Gateway | Wszystko |
| `"setup-only"` | Wyłączony/nieskonfigurowany kanał | Tylko rejestrację kanału |
-| `"setup-runtime"` | Przepływ setupu z dostępnym runtime | Rejestrację kanału oraz tylko lekki runtime potrzebny przed załadowaniem pełnego entry |
-| `"cli-metadata"` | Główna pomoc / przechwytywanie metadanych CLI | Tylko deskryptory CLI |
+| `"setup-runtime"` | Przepływ konfiguracji z dostępnym runtime | Rejestrację kanału oraz tylko lekki runtime potrzebny przed załadowaniem pełnego punktu wejścia |
+| `"cli-metadata"` | Pomoc główna / przechwytywanie metadanych CLI | Tylko deskryptory CLI |
-`defineChannelPluginEntry` obsługuje ten podział automatycznie. Jeśli używasz
-`definePluginEntry` bezpośrednio dla kanału, sprawdź tryb samodzielnie:
+`defineChannelPluginEntry` automatycznie obsługuje ten podział. Jeśli używasz
+bezpośrednio `definePluginEntry` dla kanału, samodzielnie sprawdzaj tryb:
```typescript
register(api) {
@@ -175,42 +195,41 @@ register(api) {
api.registerChannel({ plugin: myPlugin });
if (api.registrationMode !== "full") return;
- // Ciężkie rejestracje wyłącznie runtime
+ // Heavy runtime-only registrations
api.registerService(/* ... */);
}
```
-Traktuj `"setup-runtime"` jako okno, w którym powierzchnie startowe tylko do setupu muszą
-istnieć bez ponownego wchodzenia do pełnego środowiska runtime zbundlowanego kanału. Dobrze pasują tu
-rejestracja kanału, bezpieczne dla setupu trasy HTTP, bezpieczne dla setupu metody Gateway oraz
-delegowane helpery setupu. Ciężkie usługi działające w tle, rejestratory CLI oraz
-bootstrapy SDK providerów/klientów nadal należą do `"full"`.
+Traktuj `"setup-runtime"` jako okno, w którym powierzchnie uruchomieniowe tylko do konfiguracji muszą
+istnieć bez ponownego wchodzenia do pełnego runtime dołączonego kanału. Dobrze pasują tu:
+rejestracja kanału, bezpieczne dla konfiguracji trasy HTTP, bezpieczne dla konfiguracji metody Gateway oraz
+delegowane pomocniki konfiguracji. Ciężkie usługi działające w tle, rejestratory CLI oraz bootstrapy SDK dostawców/klientów nadal należą do `"full"`.
-W szczególności dla rejestratorów CLI:
+Konkretnie dla rejestratorów CLI:
-- używaj `descriptors`, gdy rejestrator posiada jedno lub więcej głównych poleceń i
- chcesz, aby OpenClaw ładował właściwy moduł CLI leniwie przy pierwszym wywołaniu
-- upewnij się, że te deskryptory obejmują każdy główny korzeń polecenia udostępniany przez
+- używaj `descriptors`, gdy rejestrator zarządza co najmniej jednym głównym poleceniem i
+ chcesz, aby OpenClaw leniwie załadował rzeczywisty moduł CLI przy pierwszym wywołaniu
+- upewnij się, że te deskryptory obejmują każdy główny korzeń poleceń udostępniany przez
rejestrator
- używaj samego `commands` tylko dla ścieżek zgodności eager
-## Kształty pluginów
+## Kształty Pluginów
-OpenClaw klasyfikuje załadowane pluginy według ich zachowania rejestracyjnego:
+OpenClaw klasyfikuje załadowane Pluginy według ich zachowania podczas rejestracji:
-| Kształt | Opis |
-| -------------------- | -------------------------------------------------- |
-| **plain-capability** | Jeden typ możliwości (np. tylko provider) |
-| **hybrid-capability** | Wiele typów możliwości (np. provider + speech) |
-| **hook-only** | Tylko hooki, bez możliwości |
-| **non-capability** | Narzędzia/polecenia/usługi, ale bez możliwości |
+| Kształt | Opis |
+| --------------------- | -------------------------------------------------- |
+| **plain-capability** | Jeden typ capability (np. tylko dostawca) |
+| **hybrid-capability** | Wiele typów capability (np. dostawca + mowa) |
+| **hook-only** | Tylko hooki, bez capability |
+| **non-capability** | Narzędzia/polecenia/usługi, ale bez capability |
-Użyj `openclaw plugins inspect `, aby zobaczyć kształt pluginu.
+Użyj `openclaw plugins inspect `, aby zobaczyć kształt Pluginu.
## Powiązane
-- [Przegląd SDK](/plugins/sdk-overview) — API rejestracji i dokumentacja subpath
-- [Helpery runtime](/plugins/sdk-runtime) — `api.runtime` i `createPluginRuntimeStore`
-- [Setup i konfiguracja](/plugins/sdk-setup) — manifest, setup entry, odroczone ładowanie
-- [Pluginy kanałów](/plugins/sdk-channel-plugins) — budowanie obiektu `ChannelPlugin`
-- [Pluginy providerów](/plugins/sdk-provider-plugins) — rejestracja providerów i hooki
+- [Przegląd SDK](/pl/plugins/sdk-overview) — API rejestracji i opis subpathów
+- [Pomocniki runtime](/pl/plugins/sdk-runtime) — `api.runtime` i `createPluginRuntimeStore`
+- [Konfiguracja i ustawienia](/pl/plugins/sdk-setup) — manifest, punkt wejścia konfiguracji, ładowanie odroczone
+- [Pluginy kanałów](/pl/plugins/sdk-channel-plugins) — budowanie obiektu `ChannelPlugin`
+- [Pluginy dostawców](/pl/plugins/sdk-provider-plugins) — rejestracja dostawcy i hooki
diff --git a/docs/pl/plugins/sdk-runtime.md b/docs/pl/plugins/sdk-runtime.md
index a7f3f49cd..52e2f21e9 100644
--- a/docs/pl/plugins/sdk-runtime.md
+++ b/docs/pl/plugins/sdk-runtime.md
@@ -1,28 +1,29 @@
---
read_when:
- - Musisz wywoływać pomocniki core z pluginu (TTS, STT, generowanie obrazów, wyszukiwanie w sieci, subagent)
+ - Musisz wywołać pomocnicze funkcje rdzenia z Pluginu (TTS, STT, generowanie obrazów, wyszukiwanie w sieci, subagent)
- Chcesz zrozumieć, co udostępnia `api.runtime`
- - Uzyskujesz dostęp do pomocników config, agenta lub mediów z kodu pluginu
+ - Uzyskujesz dostęp do pomocniczych funkcji konfiguracji, agenta lub multimediów z kodu Pluginu
sidebarTitle: Runtime Helpers
-summary: api.runtime -- wstrzyknięte pomocniki runtime dostępne dla pluginów
-title: Pomocniki runtime pluginów
+summary: api.runtime — wstrzyknięte pomocnicze funkcje środowiska uruchomieniowego dostępne dla Pluginów
+title: Pomocnicze funkcje środowiska uruchomieniowego Pluginu
x-i18n:
- generated_at: "2026-04-11T02:46:51Z"
+ generated_at: "2026-04-15T19:41:38Z"
model: gpt-5.4
provider: openai
- source_hash: fbf8a6ecd970300f784b8aca20eed40ba12c83107abd27385bfdc3347d2544be
+ source_hash: c77a6e9cd48c84affa17dce684bbd0e072c8b63485e4a5d569f3793a4ea4f9c8
source_path: plugins/sdk-runtime.md
workflow: 15
---
-# Pomocniki runtime pluginów
+# Pomocnicze funkcje środowiska uruchomieniowego Pluginu
-Dokumentacja referencyjna obiektu `api.runtime` wstrzykiwanego do każdego pluginu podczas rejestracji. Używaj tych pomocników zamiast bezpośrednio importować wewnętrzne elementy hosta.
+Dokumentacja referencyjna obiektu `api.runtime` wstrzykiwanego do każdego Pluginu podczas
+rejestracji. Używaj tych funkcji pomocniczych zamiast bezpośrednio importować elementy wewnętrzne hosta.
- **Szukasz przewodnika?** Zobacz [Pluginy kanałów](/pl/plugins/sdk-channel-plugins)
- lub [Provider Plugins](/pl/plugins/sdk-provider-plugins), aby skorzystać z
- przewodników krok po kroku pokazujących te pomocniki w kontekście.
+ **Szukasz omówienia?** Zobacz [Pluginy kanałów](/pl/plugins/sdk-channel-plugins)
+ lub [Pluginy dostawców](/pl/plugins/sdk-provider-plugins), aby zapoznać się z przewodnikami krok po kroku,
+ które pokazują te funkcje pomocnicze w kontekście.
```typescript
@@ -31,11 +32,11 @@ register(api) {
}
```
-## Przestrzenie nazw runtime
+## Przestrzenie nazw środowiska uruchomieniowego
### `api.runtime.agent`
-Tożsamość agenta, katalogi i zarządzanie sesją.
+Tożsamość agenta, katalogi i zarządzanie sesjami.
```typescript
// Resolve the agent's working directory
@@ -68,11 +69,13 @@ const result = await api.runtime.agent.runEmbeddedAgent({
});
```
-`runEmbeddedAgent(...)` to neutralny pomocnik do uruchamiania zwykłej tury agenta OpenClaw z kodu pluginu. Używa tego samego rozstrzygania providera/modelu oraz tego samego wyboru agent harness co odpowiedzi wywoływane przez kanał.
+`runEmbeddedAgent(...)` to neutralna funkcja pomocnicza do uruchamiania zwykłego przebiegu
+agenta OpenClaw z kodu Pluginu. Używa tego samego rozpoznawania dostawcy/modelu i
+wyboru uprzęży agenta co odpowiedzi wywoływane przez kanał.
`runEmbeddedPiAgent(...)` pozostaje aliasem zgodności.
-**Pomocniki magazynu sesji** znajdują się w `api.runtime.agent.session`:
+**Funkcje pomocnicze magazynu sesji** znajdują się w `api.runtime.agent.session`:
```typescript
const storePath = api.runtime.agent.session.resolveStorePath(cfg);
@@ -83,7 +86,7 @@ const filePath = api.runtime.agent.session.resolveSessionFilePath(cfg, sessionId
### `api.runtime.agent.defaults`
-Domyślne stałe modelu i providera:
+Stałe domyślnego modelu i dostawcy:
```typescript
const model = api.runtime.agent.defaults.model; // np. "anthropic/claude-sonnet-4-6"
@@ -92,7 +95,7 @@ const provider = api.runtime.agent.defaults.provider; // np. "anthropic"
### `api.runtime.subagent`
-Uruchamiaj i zarządzaj uruchomieniami subagenta w tle.
+Uruchamianie i zarządzanie przebiegami subagentów w tle.
```typescript
// Start a subagent run
@@ -120,14 +123,15 @@ await api.runtime.subagent.deleteSession({
```
- Nadpisania modelu (`provider`/`model`) wymagają zgody operatora przez
+ Nadpisania modelu (`provider`/`model`) wymagają zgody operatora poprzez
`plugins.entries..subagent.allowModelOverride: true` w konfiguracji.
- Niezaufane pluginy nadal mogą uruchamiać subagentów, ale żądania nadpisania są odrzucane.
+ Niezaufane Pluginy nadal mogą uruchamiać subagentów, ale żądania nadpisania są odrzucane.
### `api.runtime.taskFlow`
-Powiąż runtime Task Flow z istniejącym kluczem sesji OpenClaw lub zaufanym kontekstem narzędzia, a następnie twórz i zarządzaj Task Flows bez przekazywania ownera przy każdym wywołaniu.
+Powiąż środowisko uruchomieniowe TaskFlow z istniejącym kluczem sesji OpenClaw lub zaufanym
+kontekstem narzędzia, a następnie twórz i zarządzaj TaskFlow bez przekazywania właściciela przy każdym wywołaniu.
```typescript
const taskFlow = api.runtime.taskFlow.fromToolContext(ctx);
@@ -154,11 +158,12 @@ const waiting = taskFlow.setWaiting({
});
```
-Użyj `bindSession({ sessionKey, requesterOrigin })`, gdy masz już zaufany klucz sesji OpenClaw z własnej warstwy powiązania. Nie wiąż sesji na podstawie surowych danych wejściowych użytkownika.
+Użyj `bindSession({ sessionKey, requesterOrigin })`, gdy masz już zaufany klucz sesji OpenClaw
+z własnej warstwy powiązania. Nie twórz powiązania na podstawie surowych danych wejściowych użytkownika.
### `api.runtime.tts`
-Synteza mowy.
+Synteza mowy z tekstu.
```typescript
// Standard TTS
@@ -180,11 +185,12 @@ const voices = await api.runtime.tts.listVoices({
});
```
-Używa konfiguracji core `messages.tts` i wyboru providera. Zwraca bufor audio PCM + sample rate.
+Używa podstawowej konfiguracji `messages.tts` i wyboru dostawcy. Zwraca bufor
+dźwięku PCM + częstotliwość próbkowania.
### `api.runtime.mediaUnderstanding`
-Analiza obrazów, audio i wideo.
+Analiza obrazów, dźwięku i wideo.
```typescript
// Describe an image
@@ -214,11 +220,11 @@ const result = await api.runtime.mediaUnderstanding.runFile({
});
```
-Zwraca `{ text: undefined }`, gdy nie powstaje żaden wynik (np. przy pominiętym wejściu).
+Zwraca `{ text: undefined }`, gdy nie zostanie wygenerowany żaden wynik (np. pominięte dane wejściowe).
- `api.runtime.stt.transcribeAudioFile(...)` pozostaje aliasem zgodności dla
- `api.runtime.mediaUnderstanding.transcribeAudioFile(...)`.
+ `api.runtime.stt.transcribeAudioFile(...)` pozostaje aliasem zgodności
+ dla `api.runtime.mediaUnderstanding.transcribeAudioFile(...)`.
### `api.runtime.imageGeneration`
@@ -249,7 +255,7 @@ const result = await api.runtime.webSearch.search({
### `api.runtime.media`
-Niskopoziomowe narzędzia mediów.
+Niskopoziomowe narzędzia multimedialne.
```typescript
const webMedia = await api.runtime.media.loadWebMedia(url);
@@ -304,7 +310,7 @@ const childLogger = api.runtime.logging.getChildLogger({ plugin: "my-plugin" },
### `api.runtime.modelAuth`
-Rozstrzyganie auth modeli i providerów.
+Rozpoznawanie uwierzytelniania modelu i dostawcy.
```typescript
const auth = await api.runtime.modelAuth.getApiKeyForModel({ model, cfg });
@@ -316,7 +322,7 @@ const providerAuth = await api.runtime.modelAuth.resolveApiKeyForProvider({
### `api.runtime.state`
-Rozstrzyganie katalogu stanu.
+Rozpoznawanie katalogu stanu.
```typescript
const stateDir = api.runtime.state.resolveStateDir();
@@ -334,9 +340,10 @@ api.runtime.tools.registerMemoryCli(/* ... */);
### `api.runtime.channel`
-Pomocniki runtime specyficzne dla kanału (dostępne, gdy załadowany jest plugin kanału).
+Funkcje pomocnicze środowiska uruchomieniowego specyficzne dla kanału (dostępne, gdy załadowany jest Plugin kanału).
-`api.runtime.channel.mentions` to współdzielona powierzchnia polityki wzmianek przychodzących dla wbudowanych pluginów kanałów, które używają wstrzykiwania runtime:
+`api.runtime.channel.mentions` to współdzielona powierzchnia zasad wzmianek przychodzących dla
+dołączonych Pluginów kanałów, które korzystają z wstrzykiwania środowiska uruchomieniowego:
```typescript
const mentionMatch = api.runtime.channel.mentions.matchesMentionWithExplicit(text, {
@@ -363,7 +370,7 @@ const decision = api.runtime.channel.mentions.resolveInboundMentionDecision({
});
```
-Dostępne pomocniki wzmianek:
+Dostępne funkcje pomocnicze wzmianek:
- `buildMentionRegexes`
- `matchesMentionPatterns`
@@ -371,17 +378,23 @@ Dostępne pomocniki wzmianek:
- `implicitMentionKindWhen`
- `resolveInboundMentionDecision`
-`api.runtime.channel.mentions` celowo nie udostępnia starszych pomocników zgodności `resolveMentionGating*`. Preferuj znormalizowaną ścieżkę `{ facts, policy }`.
+`api.runtime.channel.mentions` celowo nie udostępnia starszych
+pomocniczych funkcji zgodności `resolveMentionGating*`. Preferuj znormalizowaną
+ścieżkę `{ facts, policy }`.
-## Przechowywanie odwołań runtime
+## Przechowywanie odwołań do środowiska uruchomieniowego
-Użyj `createPluginRuntimeStore`, aby przechować odwołanie do runtime do użycia poza callbackiem `register`:
+Użyj `createPluginRuntimeStore`, aby przechować odwołanie do środowiska uruchomieniowego do użycia poza
+wywołaniem zwrotnym `register`:
```typescript
import { createPluginRuntimeStore } from "openclaw/plugin-sdk/runtime-store";
import type { PluginRuntime } from "openclaw/plugin-sdk/runtime-store";
-const store = createPluginRuntimeStore("my-plugin runtime not initialized");
+const store = createPluginRuntimeStore({
+ pluginId: "my-plugin",
+ errorMessage: "my-plugin runtime not initialized",
+});
// In your entry point
export default defineChannelPluginEntry({
@@ -402,22 +415,25 @@ export function tryGetRuntime() {
}
```
+Preferuj `pluginId` jako tożsamość runtime-store. Niższopoziomowa forma `key` jest
+przeznaczona do rzadkich przypadków, gdy jeden Plugin celowo potrzebuje więcej niż jednego gniazda środowiska uruchomieniowego.
+
## Inne pola najwyższego poziomu `api`
-Poza `api.runtime` obiekt API udostępnia także:
+Poza `api.runtime` obiekt API udostępnia również:
-| Pole | Typ | Opis |
-| ------------------------ | ------------------------- | ---------------------------------------------------------------------------------------------- |
-| `api.id` | `string` | Id pluginu |
-| `api.name` | `string` | Wyświetlana nazwa pluginu |
-| `api.config` | `OpenClawConfig` | Bieżąca migawka konfiguracji (aktywna migawka runtime w pamięci, gdy jest dostępna) |
-| `api.pluginConfig` | `Record` | Konfiguracja specyficzna dla pluginu z `plugins.entries..config` |
-| `api.logger` | `PluginLogger` | Logger o ograniczonym zakresie (`debug`, `info`, `warn`, `error`) |
-| `api.registrationMode` | `PluginRegistrationMode` | Bieżący tryb ładowania; `"setup-runtime"` to lekkie okno uruchomienia/konfiguracji przed pełnym startem |
-| `api.resolvePath(input)` | `(string) => string` | Rozwiązuje ścieżkę względem katalogu głównego pluginu |
+| Pole | Typ | Opis |
+| ------------------------ | ------------------------- | -------------------------------------------------------------------------------------------- |
+| `api.id` | `string` | Identyfikator Pluginu |
+| `api.name` | `string` | Wyświetlana nazwa Pluginu |
+| `api.config` | `OpenClawConfig` | Bieżąca migawka konfiguracji (aktywna migawka środowiska uruchomieniowego w pamięci, jeśli dostępna) |
+| `api.pluginConfig` | `Record` | Konfiguracja specyficzna dla Pluginu z `plugins.entries..config` |
+| `api.logger` | `PluginLogger` | Logger o ograniczonym zakresie (`debug`, `info`, `warn`, `error`) |
+| `api.registrationMode` | `PluginRegistrationMode` | Bieżący tryb wczytywania; `"setup-runtime"` to lekkie okno uruchamiania/konfiguracji przed pełnym uruchomieniem wpisu |
+| `api.resolvePath(input)` | `(string) => string` | Rozpoznaje ścieżkę względem katalogu głównego Pluginu |
## Powiązane
-- [Przegląd SDK](/pl/plugins/sdk-overview) -- odniesienie do subścieżek
+- [Omówienie SDK](/pl/plugins/sdk-overview) -- dokumentacja podścieżek
- [Punkty wejścia SDK](/pl/plugins/sdk-entrypoints) -- opcje `definePluginEntry`
-- [Wewnętrzne elementy pluginów](/pl/plugins/architecture) -- model możliwości i rejestr
+- [Elementy wewnętrzne Pluginu](/pl/plugins/architecture) -- model możliwości i rejestr
diff --git a/docs/pl/plugins/sdk-setup.md b/docs/pl/plugins/sdk-setup.md
index cdc90020f..4d637623c 100644
--- a/docs/pl/plugins/sdk-setup.md
+++ b/docs/pl/plugins/sdk-setup.md
@@ -1,35 +1,35 @@
---
read_when:
- - Dodajesz kreator konfiguracji do pluginu OpenClaw
- - Musisz zrozumieć różnicę między setup-entry.ts a index.ts
- - Definiujesz schematy konfiguracji pluginu albo metadane openclaw w package.json
+ - Dodajesz kreator konfiguracji do Pluginu
+ - Musisz zrozumieć `setup-entry.ts` w porównaniu z `index.ts`
+ - Definiujesz schematy konfiguracji Pluginu lub metadane openclaw w `package.json`
sidebarTitle: Setup and Config
-summary: Kreatory konfiguracji, setup-entry.ts, schematy konfiguracji i metadane openclaw w package.json
-title: Konfiguracja i setup pluginu
+summary: Kreatory konfiguracji, `setup-entry.ts`, schematy konfiguracji i metadane `package.json`
+title: Konfiguracja i ustawienia Pluginu
x-i18n:
- generated_at: "2026-04-06T03:11:27Z"
+ generated_at: "2026-04-15T19:41:37Z"
model: gpt-5.4
provider: openai
- source_hash: eac2586516d27bcd94cc4c259fe6274c792b3f9938c7ddd6dbf04a6dbb988dc9
+ source_hash: ddf28e25e381a4a38ac478e531586f59612e1a278732597375f87c2eeefc521b
source_path: plugins/sdk-setup.md
workflow: 15
---
-# Konfiguracja i setup pluginu
+# Konfiguracja i ustawienia Pluginu
-Dokumentacja referencyjna dla pakowania pluginów (metadane `package.json`), manifestów
-(`openclaw.plugin.json`), wpisów setup, oraz schematów konfiguracji.
+Dokumentacja referencyjna dotycząca pakietowania pluginów (metadane `package.json`), manifestów
+(`openclaw.plugin.json`), wpisów konfiguracji oraz schematów konfiguracji.
- **Szukasz przewodnika krok po kroku?** Przewodniki how-to omawiają pakowanie w odpowiednim kontekście:
- [Channel Plugins](/pl/plugins/sdk-channel-plugins#step-1-package-and-manifest) i
- [Provider Plugins](/pl/plugins/sdk-provider-plugins#step-1-package-and-manifest).
+ **Szukasz instrukcji krok po kroku?** Przewodniki how-to omawiają pakietowanie w kontekście:
+ [Pluginy kanałów](/pl/plugins/sdk-channel-plugins#step-1-package-and-manifest) i
+ [Pluginy dostawców](/pl/plugins/sdk-provider-plugins#step-1-package-and-manifest).
## Metadane pakietu
-Twój `package.json` potrzebuje pola `openclaw`, które mówi systemowi pluginów, co
-udostępnia Twój plugin:
+Twój `package.json` musi zawierać pole `openclaw`, które informuje system pluginów, co
+udostępnia Twój Plugin:
**Plugin kanału:**
@@ -44,7 +44,7 @@ udostępnia Twój plugin:
"channel": {
"id": "my-channel",
"label": "My Channel",
- "blurb": "Krótki opis kanału."
+ "blurb": "Short description of the channel."
}
}
}
@@ -71,47 +71,47 @@ udostępnia Twój plugin:
}
```
-Jeśli publikujesz plugin zewnętrznie w ClawHub, te pola `compat` i `build`
-są wymagane. Kanoniczne fragmenty publikacji znajdują się w
+Jeśli publikujesz Plugin zewnętrznie w ClawHub, pola `compat` i `build`
+są wymagane. Kanoniczne fragmenty do publikacji znajdują się w
`docs/snippets/plugin-publish/`.
### Pola `openclaw`
-| Pole | Typ | Opis |
-| ------------ | ---------- | ---------------------------------------------------------------------------------------------------- |
-| `extensions` | `string[]` | Pliki punktów wejścia (względnie do katalogu głównego pakietu) |
-| `setupEntry` | `string` | Lekki wpis tylko do setupu (opcjonalny) |
-| `channel` | `object` | Metadane katalogu kanału dla powierzchni setupu, selektora, szybkiego startu i statusu |
-| `providers` | `string[]` | ID dostawców rejestrowanych przez ten plugin |
-| `install` | `object` | Wskazówki instalacji: `npmSpec`, `localPath`, `defaultChoice`, `minHostVersion`, `allowInvalidConfigRecovery` |
-| `startup` | `object` | Flagi zachowania przy uruchamianiu |
+| Pole | Typ | Opis |
+| ------------ | ---------- | ------------------------------------------------------------------------------------------------------ |
+| `extensions` | `string[]` | Pliki punktów wejścia (względem katalogu głównego pakietu) |
+| `setupEntry` | `string` | Lekki wpis wyłącznie do konfiguracji (opcjonalny) |
+| `channel` | `object` | Metadane katalogu kanału dla konfiguracji, selektora, szybkiego startu i powierzchni statusu |
+| `providers` | `string[]` | Identyfikatory dostawców rejestrowane przez ten Plugin |
+| `install` | `object` | Wskazówki instalacyjne: `npmSpec`, `localPath`, `defaultChoice`, `minHostVersion`, `allowInvalidConfigRecovery` |
+| `startup` | `object` | Flagi zachowania podczas uruchamiania |
### `openclaw.channel`
-`openclaw.channel` to lekkie metadane pakietu dla wykrywania kanału i powierzchni setupu
-przed załadowaniem runtime.
+`openclaw.channel` to tanie metadane pakietu dla wykrywania kanałów i powierzchni
+konfiguracji, zanim środowisko uruchomieniowe zostanie załadowane.
-| Pole | Typ | Co oznacza |
+| Pole | Typ | Znaczenie |
| -------------------------------------- | ---------- | ----------------------------------------------------------------------------- |
-| `id` | `string` | Kanoniczne ID kanału. |
+| `id` | `string` | Kanoniczny identyfikator kanału. |
| `label` | `string` | Główna etykieta kanału. |
-| `selectionLabel` | `string` | Etykieta w selektorze/setupie, gdy powinna różnić się od `label`. |
-| `detailLabel` | `string` | Dodatkowa etykieta szczegółowa dla bogatszych katalogów kanałów i powierzchni statusu. |
-| `docsPath` | `string` | Ścieżka dokumentacji dla linków setupu i wyboru. |
-| `docsLabel` | `string` | Nadpisana etykieta używana dla linków do dokumentacji, gdy powinna różnić się od ID kanału. |
+| `selectionLabel` | `string` | Etykieta selektora/konfiguracji, gdy ma się różnić od `label`. |
+| `detailLabel` | `string` | Dodatkowa etykieta szczegółów dla bogatszych katalogów kanałów i powierzchni statusu. |
+| `docsPath` | `string` | Ścieżka dokumentacji dla linków konfiguracji i wyboru. |
+| `docsLabel` | `string` | Etykieta zastępcza używana dla linków do dokumentacji, gdy ma się różnić od identyfikatora kanału. |
| `blurb` | `string` | Krótki opis do onboardingu/katalogu. |
| `order` | `number` | Kolejność sortowania w katalogach kanałów. |
| `aliases` | `string[]` | Dodatkowe aliasy wyszukiwania dla wyboru kanału. |
-| `preferOver` | `string[]` | ID pluginów/kanałów o niższym priorytecie, które ten kanał powinien wyprzedzać. |
-| `systemImage` | `string` | Opcjonalna nazwa ikony/system image dla katalogów UI kanału. |
+| `preferOver` | `string[]` | Identyfikatory pluginów/kanałów o niższym priorytecie, które ten kanał ma wyprzedzać. |
+| `systemImage` | `string` | Opcjonalna nazwa ikony/obrazu systemowego dla katalogów UI kanałów. |
| `selectionDocsPrefix` | `string` | Tekst prefiksu przed linkami do dokumentacji na powierzchniach wyboru. |
-| `selectionDocsOmitLabel` | `boolean` | Pokaż ścieżkę dokumentacji bezpośrednio zamiast opisanego linku do dokumentacji w tekście wyboru. |
-| `selectionExtras` | `string[]` | Dodatkowe krótkie ciągi dołączane do tekstu wyboru. |
-| `markdownCapable` | `boolean` | Oznacza kanał jako obsługujący Markdown dla decyzji o formatowaniu wychodzącym. |
-| `exposure` | `object` | Kontrola widoczności kanału dla powierzchni setupu, list skonfigurowanych i dokumentacji. |
-| `quickstartAllowFrom` | `boolean` | Włącza ten kanał do standardowego przepływu szybkiego startu `allowFrom`. |
-| `forceAccountBinding` | `boolean` | Wymaga jawnego powiązania konta, nawet gdy istnieje tylko jedno konto. |
-| `preferSessionLookupForAnnounceTarget` | `boolean` | Preferuje wyszukiwanie sesji przy rozstrzyganiu celów ogłoszeń dla tego kanału. |
+| `selectionDocsOmitLabel` | `boolean` | Pokazuje bezpośrednio ścieżkę dokumentacji zamiast podpisanego linku na powierzchniach wyboru. |
+| `selectionExtras` | `string[]` | Dodatkowe krótkie ciągi dołączane na powierzchniach wyboru. |
+| `markdownCapable` | `boolean` | Oznacza kanał jako obsługujący Markdown na potrzeby decyzji o formatowaniu wychodzącym. |
+| `exposure` | `object` | Kontrolki widoczności kanału dla konfiguracji, list skonfigurowanych kanałów i powierzchni dokumentacji. |
+| `quickstartAllowFrom` | `boolean` | Włącza ten kanał do standardowego przepływu konfiguracji `allowFrom` szybkiego startu. |
+| `forceAccountBinding` | `boolean` | Wymaga jawnego powiązania konta nawet wtedy, gdy istnieje tylko jedno konto. |
+| `preferSessionLookupForAnnounceTarget` | `boolean` | Preferuje wyszukiwanie sesji przy rozwiązywaniu celów ogłoszeń dla tego kanału. |
Przykład:
@@ -125,11 +125,11 @@ Przykład:
"detailLabel": "My Channel Bot",
"docsPath": "/channels/my-channel",
"docsLabel": "my-channel",
- "blurb": "Samohostowana integracja czatu oparta na webhookach.",
+ "blurb": "Webhook-based self-hosted chat integration.",
"order": 80,
"aliases": ["mc"],
"preferOver": ["my-channel-legacy"],
- "selectionDocsPrefix": "Przewodnik:",
+ "selectionDocsPrefix": "Guide:",
"selectionExtras": ["Markdown"],
"markdownCapable": true,
"exposure": {
@@ -145,37 +145,39 @@ Przykład:
`exposure` obsługuje:
-- `configured`: uwzględnij kanał na powierzchniach list skonfigurowanych / podobnych do statusu
-- `setup`: uwzględnij kanał w interaktywnych selektorach setupu/konfiguracji
-- `docs`: oznacz kanał jako publicznie widoczny na powierzchniach dokumentacji/nawigacji
+- `configured`: uwzględnia kanał na powierzchniach list skonfigurowanych kanałów/w stylu statusu
+- `setup`: uwzględnia kanał w interaktywnych selektorach konfiguracji
+- `docs`: oznacza kanał jako publicznie widoczny na powierzchniach dokumentacji/nawigacji
-`showConfigured` i `showInSetup` nadal są obsługiwane jako starsze aliasy. Preferowane jest
+`showConfigured` i `showInSetup` nadal są obsługiwane jako starsze aliasy. Preferuj
`exposure`.
### `openclaw.install`
`openclaw.install` to metadane pakietu, a nie metadane manifestu.
-| Pole | Typ | Co oznacza |
+| Pole | Typ | Znaczenie |
| ---------------------------- | -------------------- | -------------------------------------------------------------------------------- |
| `npmSpec` | `string` | Kanoniczna specyfikacja npm dla przepływów instalacji/aktualizacji. |
-| `localPath` | `string` | Lokalna ścieżka instalacji deweloperskiej lub bundlowanej. |
+| `localPath` | `string` | Lokalna ścieżka instalacji deweloperskiej lub wbudowanej. |
| `defaultChoice` | `"npm"` \| `"local"` | Preferowane źródło instalacji, gdy oba są dostępne. |
| `minHostVersion` | `string` | Minimalna obsługiwana wersja OpenClaw w formacie `>=x.y.z`. |
-| `allowInvalidConfigRecovery` | `boolean` | Pozwala przepływom ponownej instalacji bundlowanych pluginów odzyskać działanie po określonych błędach nieaktualnej konfiguracji. |
+| `allowInvalidConfigRecovery` | `boolean` | Umożliwia przepływom ponownej instalacji wbudowanych pluginów odzyskiwanie po wybranych błędach nieaktualnej konfiguracji. |
-Jeśli ustawiono `minHostVersion`, zarówno instalacja, jak i ładowanie rejestru manifestów
-wymuszają to ograniczenie. Starsze hosty pomijają plugin; nieprawidłowe ciągi wersji są odrzucane.
+Jeśli ustawiono `minHostVersion`, zarówno instalacja, jak i ładowanie z rejestru
+manifestów będą je egzekwować. Starsze hosty pomijają Plugin; nieprawidłowe ciągi
+wersji są odrzucane.
-`allowInvalidConfigRecovery` nie jest ogólnym obejściem dla uszkodzonych konfiguracji. Służy
-wyłącznie do wąskiego odzyskiwania bundlowanych pluginów, tak aby ponowna instalacja/setup mogły naprawić znane
-pozostałości po aktualizacji, takie jak brakująca ścieżka bundlowanego pluginu albo nieaktualny wpis `channels.`
-dla tego samego pluginu. Jeśli konfiguracja jest uszkodzona z niezwiązanych powodów, instalacja
-nadal kończy się fail-closed i informuje operatora, aby uruchomił `openclaw doctor --fix`.
+`allowInvalidConfigRecovery` nie jest ogólnym obejściem dla uszkodzonych konfiguracji. Jest
+przeznaczone wyłącznie do wąskiego odzyskiwania dla wbudowanych pluginów, aby
+ponowna instalacja/konfiguracja mogła naprawić znane pozostałości po aktualizacjach,
+takie jak brakująca ścieżka wbudowanego pluginu lub nieaktualny wpis `channels.`
+dla tego samego Pluginu. Jeśli konfiguracja jest uszkodzona z innych powodów, instalacja
+nadal kończy się bez obejścia i informuje operatora o konieczności uruchomienia `openclaw doctor --fix`.
### Odroczone pełne ładowanie
-Pluginy kanałów mogą włączyć odroczone ładowanie przez:
+Pluginy kanałów mogą włączyć odroczone ładowanie za pomocą:
```json
{
@@ -189,39 +191,39 @@ Pluginy kanałów mogą włączyć odroczone ładowanie przez:
}
```
-Gdy to jest włączone, OpenClaw ładuje tylko `setupEntry` podczas fazy uruchamiania
-przed nasłuchiwaniem, nawet dla już skonfigurowanych kanałów. Pełny wpis ładuje się po
-rozpoczęciu nasłuchiwania przez bramę.
+Gdy ta opcja jest włączona, OpenClaw ładuje tylko `setupEntry` w fazie uruchamiania
+przed rozpoczęciem nasłuchiwania, nawet dla już skonfigurowanych kanałów. Pełny wpis
+jest ładowany po tym, jak Gateway zacznie nasłuchiwać.
- Włączaj odroczone ładowanie tylko wtedy, gdy `setupEntry` rejestruje wszystko, czego
- brama potrzebuje przed rozpoczęciem nasłuchiwania (rejestrację kanału, trasy HTTP,
- metody gateway). Jeśli pełny wpis posiada wymagane możliwości startowe, zachowaj
- domyślne zachowanie.
+ Włączaj odroczone ładowanie tylko wtedy, gdy `setupEntry` rejestruje wszystko,
+ czego Gateway potrzebuje przed rozpoczęciem nasłuchiwania (rejestracja kanału,
+ trasy HTTP, metody Gateway). Jeśli pełny wpis posiada wymagane możliwości
+ startowe, pozostaw domyślne zachowanie.
-Jeśli Twój wpis setupu/pełny wpis rejestruje metody RPC gateway, utrzymuj je w
-prefiksie specyficznym dla pluginu. Zastrzeżone przestrzenie nazw administracji rdzenia (`config.*`,
-`exec.approvals.*`, `wizard.*`, `update.*`) pozostają własnością rdzenia i zawsze są rozstrzygane
+Jeśli Twój wpis konfiguracji/pełny wpis rejestruje metody RPC Gateway, zachowaj je pod
+prefiksem specyficznym dla pluginu. Zastrzeżone przestrzenie nazw administracyjnych rdzenia (`config.*`,
+`exec.approvals.*`, `wizard.*`, `update.*`) pozostają własnością rdzenia i zawsze są rozwiązywane
do `operator.admin`.
-## Manifest pluginu
+## Manifest Pluginu
-Każdy natywny plugin musi dostarczać `openclaw.plugin.json` w katalogu głównym pakietu.
-OpenClaw używa tego do walidacji konfiguracji bez wykonywania kodu pluginu.
+Każdy natywny Plugin musi dostarczać plik `openclaw.plugin.json` w katalogu głównym pakietu.
+OpenClaw używa go do walidacji konfiguracji bez wykonywania kodu pluginu.
```json
{
"id": "my-plugin",
"name": "My Plugin",
- "description": "Dodaje możliwości My Plugin do OpenClaw",
+ "description": "Adds My Plugin capabilities to OpenClaw",
"configSchema": {
"type": "object",
"additionalProperties": false,
"properties": {
"webhookSecret": {
"type": "string",
- "description": "Sekret weryfikacji webhooka"
+ "description": "Webhook verification secret"
}
}
}
@@ -255,25 +257,25 @@ Nawet pluginy bez konfiguracji muszą dostarczać schemat. Pusty schemat jest pr
}
```
-Zobacz [Plugin Manifest](/pl/plugins/manifest), aby poznać pełną dokumentację schematu.
+Pełny opis schematu znajdziesz w [Manifeście Pluginu](/pl/plugins/manifest).
## Publikowanie w ClawHub
-Dla pakietów pluginów używaj polecenia ClawHub specyficznego dla pakietu:
+Dla pakietów pluginów używaj polecenia ClawHub przeznaczonego dla pakietów:
```bash
clawhub package publish your-org/your-plugin --dry-run
clawhub package publish your-org/your-plugin
```
-Starszy alias publikacji tylko dla Skills dotyczy Skills. Pakiety pluginów
-zawsze powinny używać `clawhub package publish`.
+Starszy alias publikacji tylko dla Skills jest przeznaczony dla Skills. Pakiety pluginów powinny
+zawsze używać `clawhub package publish`.
-## Wpis setup
+## Wpis konfiguracji
-Plik `setup-entry.ts` jest lekką alternatywą dla `index.ts`, którą
-OpenClaw ładuje, gdy potrzebuje tylko powierzchni setupu (onboarding, naprawa konfiguracji,
-inspekcja wyłączonego kanału).
+Plik `setup-entry.ts` to lekka alternatywa dla `index.ts`, którą
+OpenClaw ładuje wtedy, gdy potrzebuje tylko powierzchni konfiguracji (onboarding, naprawa konfiguracji,
+inspekcja wyłączonych kanałów).
```typescript
// setup-entry.ts
@@ -283,73 +285,81 @@ import { myChannelPlugin } from "./src/channel.js";
export default defineSetupPluginEntry(myChannelPlugin);
```
-Pozwala to uniknąć ładowania ciężkiego kodu runtime (bibliotek kryptograficznych, rejestracji CLI,
-usług działających w tle) podczas przepływów setupu.
+Pozwala to uniknąć ładowania ciężkiego kodu środowiska uruchomieniowego (bibliotek kryptograficznych, rejestracji CLI,
+usług działających w tle) podczas przepływów konfiguracji.
+
+Wbudowane kanały workspace, które przechowują eksporty bezpieczne dla konfiguracji w modułach pobocznych,
+mogą używać `defineBundledChannelSetupEntry(...)` z
+`openclaw/plugin-sdk/channel-entry-contract` zamiast
+`defineSetupPluginEntry(...)`. Ten kontrakt dla wbudowanych pluginów obsługuje też opcjonalny eksport
+`runtime`, dzięki czemu łączenie środowiska uruchomieniowego w czasie konfiguracji może pozostać lekkie i jawne.
**Kiedy OpenClaw używa `setupEntry` zamiast pełnego wpisu:**
-- Kanał jest wyłączony, ale potrzebuje powierzchni setupu/onboardingu
+- Kanał jest wyłączony, ale potrzebuje powierzchni konfiguracji/onboardingu
- Kanał jest włączony, ale nieskonfigurowany
- Włączono odroczone ładowanie (`deferConfiguredChannelFullLoadUntilAfterListen`)
-**Co musi rejestrować `setupEntry`:**
+**Co `setupEntry` musi zarejestrować:**
- Obiekt pluginu kanału (przez `defineSetupPluginEntry`)
-- Wszelkie trasy HTTP wymagane przed rozpoczęciem nasłuchiwania przez bramę
-- Wszelkie metody gateway potrzebne podczas uruchamiania
+- Wszelkie trasy HTTP wymagane przed rozpoczęciem nasłuchiwania przez Gateway
+- Wszelkie metody Gateway potrzebne podczas uruchamiania
-Te startowe metody gateway nadal powinny unikać zastrzeżonych przestrzeni nazw administracji rdzenia,
+Te startowe metody Gateway nadal powinny unikać zastrzeżonych przestrzeni nazw administracyjnych rdzenia,
takich jak `config.*` czy `update.*`.
**Czego `setupEntry` NIE powinien zawierać:**
-- Rejestracji CLI
-- Usług działających w tle
-- Ciężkich importów runtime (crypto, SDK)
-- Metod gateway potrzebnych dopiero po uruchomieniu
+- Rejestracje CLI
+- Usługi działające w tle
+- Ciężkie importy środowiska uruchomieniowego (crypto, SDK)
+- Metody Gateway potrzebne dopiero po uruchomieniu
-### Wąskie importy helperów setupu
+### Wąskie importy pomocników konfiguracji
-Dla gorących ścieżek tylko do setupu preferuj wąskie warstwy helperów setupu zamiast szerszego
-parasola `plugin-sdk/setup`, jeśli potrzebujesz tylko części powierzchni setupu:
+Dla gorących ścieżek wyłącznie konfiguracyjnych preferuj wąskie punkty dostępu pomocników konfiguracji zamiast szerszego
+parasola `plugin-sdk/setup`, gdy potrzebujesz tylko części powierzchni konfiguracji:
-| Ścieżka importu | Użycie | Kluczowe eksporty |
-| ---------------------------------- | --------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| `plugin-sdk/setup-runtime` | helpery runtime na czas setupu, które pozostają dostępne w `setupEntry` / odroczonym starcie kanału | `createPatchedAccountSetupAdapter`, `createEnvPatchedAccountSetupAdapter`, `createSetupInputPresenceValidator`, `noteChannelLookupFailure`, `noteChannelLookupSummary`, `promptResolvedAllowFrom`, `splitSetupEntries`, `createAllowlistSetupWizardProxy`, `createDelegatedSetupWizardProxy` |
-| `plugin-sdk/setup-adapter-runtime` | adaptery setupu kont uwzględniające środowisko | `createEnvPatchedAccountSetupAdapter` |
-| `plugin-sdk/setup-tools` | helpery setupu/instalacji CLI/archiwów/dokumentacji | `formatCliCommand`, `detectBinary`, `extractArchive`, `resolveBrewExecutable`, `formatDocsLink`, `CONFIG_DIR` |
+| Ścieżka importu | Używaj do | Kluczowe eksporty |
+| ----------------------------------- | ---------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `plugin-sdk/setup-runtime` | pomocniki środowiska uruchomieniowego używane w czasie konfiguracji, dostępne w `setupEntry` / przy odroczonym uruchamianiu kanału | `createPatchedAccountSetupAdapter`, `createEnvPatchedAccountSetupAdapter`, `createSetupInputPresenceValidator`, `noteChannelLookupFailure`, `noteChannelLookupSummary`, `promptResolvedAllowFrom`, `splitSetupEntries`, `createAllowlistSetupWizardProxy`, `createDelegatedSetupWizardProxy` |
+| `plugin-sdk/setup-adapter-runtime` | adaptery konfiguracji kont świadome środowiska | `createEnvPatchedAccountSetupAdapter` |
+| `plugin-sdk/setup-tools` | pomocniki CLI/archiwów/dokumentacji dla konfiguracji i instalacji | `formatCliCommand`, `detectBinary`, `extractArchive`, `resolveBrewExecutable`, `formatDocsLink`, `CONFIG_DIR` |
-Użyj szerszej warstwy `plugin-sdk/setup`, gdy potrzebujesz pełnego współdzielonego
-zestawu narzędzi setupu, w tym helperów do patchowania konfiguracji, takich jak
+Użyj szerszego punktu dostępu `plugin-sdk/setup`, gdy potrzebujesz pełnego współdzielonego
+zestawu narzędzi konfiguracji, w tym pomocników do łatania konfiguracji, takich jak
`moveSingleAccountChannelSectionToDefaultAccount(...)`.
-Adaptery patchowania setupu pozostają bezpieczne dla gorącej ścieżki przy imporcie. Ich bundlowane
-wyszukiwanie powierzchni kontraktów promocji pojedynczego konta jest leniwe, więc import
-`plugin-sdk/setup-runtime` nie ładuje eagerly wykrywania bundlowanych powierzchni kontraktów, dopóki adapter nie zostanie faktycznie użyty.
+Adaptery łatek konfiguracji pozostają bezpieczne dla gorącej ścieżki przy imporcie. Ich wbudowane
+leniwe wyszukiwanie powierzchni kontraktu promocji pojedynczego konta sprawia, że import
+`plugin-sdk/setup-runtime` nie powoduje natychmiastowego ładowania wykrywania powierzchni kontraktu
+wbudowanych pluginów, zanim adapter faktycznie zostanie użyty.
-### Promocja pojedynczego konta należąca do kanału
+### Promocja pojedynczego konta zarządzana przez kanał
Gdy kanał przechodzi z konfiguracji najwyższego poziomu dla pojedynczego konta do
-`channels..accounts.*`, domyślne współdzielone zachowanie polega na przeniesieniu wartości
-o zakresie konta do `accounts.default`.
+`channels..accounts.*`, domyślne współdzielone zachowanie polega na przeniesieniu promowanych
+wartości o zakresie konta do `accounts.default`.
-Bundlowane kanały mogą zawężać lub nadpisywać tę promocję przez swoją powierzchnię kontraktu setupu:
+Wbudowane kanały mogą zawężać lub nadpisywać tę promocję przez swoją powierzchnię kontraktu
+konfiguracji:
- `singleAccountKeysToMove`: dodatkowe klucze najwyższego poziomu, które powinny zostać przeniesione do
promowanego konta
- `namedAccountPromotionKeys`: gdy nazwane konta już istnieją, tylko te
- klucze są przenoszone do promowanego konta; współdzielone klucze zasad/dostarczania pozostają w katalogu głównym
- kanału
+ klucze są przenoszone do promowanego konta; współdzielone klucze polityki/dostarczania pozostają w katalogu głównym kanału
- `resolveSingleAccountPromotionTarget(...)`: wybiera, które istniejące konto
otrzyma promowane wartości
-Matrix jest obecnym bundlowanym przykładem. Jeśli istnieje dokładnie jedno nazwane konto Matrix
-albo jeśli `defaultAccount` wskazuje na istniejący niekanoniczny klucz, taki jak `Ops`,
-promocja zachowuje to konto zamiast tworzyć nowy wpis `accounts.default`.
+Matrix jest obecnie przykładem wbudowanego kanału. Jeśli istnieje dokładnie jedno nazwane konto Matrix
+albo jeśli `defaultAccount` wskazuje istniejący niekanoniczny klucz, taki jak
+`Ops`, promocja zachowuje to konto zamiast tworzyć nowy wpis
+`accounts.default`.
## Schemat konfiguracji
-Konfiguracja pluginu jest walidowana względem JSON Schema w Twoim manifeście. Użytkownicy
+Konfiguracja pluginu jest walidowana względem JSON Schema w manifeście. Użytkownicy
konfigurują pluginy przez:
```json5
@@ -366,9 +376,9 @@ konfigurują pluginy przez:
}
```
-Twój plugin otrzymuje tę konfigurację jako `api.pluginConfig` podczas rejestracji.
+Twój Plugin otrzymuje tę konfigurację jako `api.pluginConfig` podczas rejestracji.
-Dla konfiguracji specyficznej dla kanału użyj zamiast tego sekcji konfiguracji kanału:
+W przypadku konfiguracji specyficznej dla kanału użyj zamiast tego sekcji konfiguracji kanału:
```json5
{
@@ -383,8 +393,8 @@ Dla konfiguracji specyficznej dla kanału użyj zamiast tego sekcji konfiguracji
### Budowanie schematów konfiguracji kanału
-Użyj `buildChannelConfigSchema` z `openclaw/plugin-sdk/core`, aby przekształcić
-schemat Zod w opakowanie `ChannelConfigSchema`, które OpenClaw waliduje:
+Użyj `buildChannelConfigSchema` z `openclaw/plugin-sdk/core`, aby przekonwertować
+schemat Zod do opakowania `ChannelConfigSchema`, które OpenClaw waliduje:
```typescript
import { z } from "zod";
@@ -402,8 +412,8 @@ const configSchema = buildChannelConfigSchema(accountSchema);
## Kreatory konfiguracji
-Pluginy kanałów mogą dostarczać interaktywne kreatory konfiguracji dla `openclaw onboard`.
-Kreator jest obiektem `ChannelSetupWizard` w `ChannelPlugin`:
+Pluginy kanałów mogą udostępniać interaktywne kreatory konfiguracji dla `openclaw onboard`.
+Kreator to obiekt `ChannelSetupWizard` w `ChannelPlugin`:
```typescript
import type { ChannelSetupWizard } from "openclaw/plugin-sdk/channel-setup";
@@ -438,20 +448,20 @@ const setupWizard: ChannelSetupWizard = {
Typ `ChannelSetupWizard` obsługuje `credentials`, `textInputs`,
`dmPolicy`, `allowFrom`, `groupAccess`, `prepare`, `finalize` i inne.
-Pełne przykłady znajdziesz w bundlowanych pakietach pluginów (na przykład plugin Discord `src/channel.setup.ts`).
+Pełne przykłady znajdziesz w pakietach wbudowanych pluginów (na przykład plugin Discord `src/channel.setup.ts`).
-Dla promptów listy dozwolonych DM, które potrzebują tylko standardowego przepływu
-`note -> prompt -> parse -> merge -> patch`, preferuj współdzielone helpery setupu
+Dla promptów listy dozwolonych w DM, które wymagają tylko standardowego przepływu
+`note -> prompt -> parse -> merge -> patch`, preferuj współdzielone pomocniki konfiguracji
z `openclaw/plugin-sdk/setup`: `createPromptParsedAllowFromForAccount(...)`,
`createTopLevelChannelParsedAllowFromPrompt(...)` i
`createNestedChannelParsedAllowFromPrompt(...)`.
Dla bloków statusu konfiguracji kanału, które różnią się tylko etykietami, wynikami i opcjonalnymi
dodatkowymi liniami, preferuj `createStandardChannelSetupStatus(...)` z
-`openclaw/plugin-sdk/setup` zamiast ręcznego tworzenia tego samego obiektu `status` w
+`openclaw/plugin-sdk/setup` zamiast ręcznie tworzyć ten sam obiekt `status` w
każdym pluginie.
-Dla opcjonalnych powierzchni setupu, które powinny pojawiać się tylko w określonych kontekstach, użyj
+Dla opcjonalnych powierzchni konfiguracji, które powinny pojawiać się tylko w określonych kontekstach, użyj
`createOptionalChannelSetupSurface` z `openclaw/plugin-sdk/channel-setup`:
```typescript
@@ -463,54 +473,55 @@ const setupSurface = createOptionalChannelSetupSurface({
npmSpec: "@myorg/openclaw-my-channel",
docsPath: "/channels/my-channel",
});
-// Returns { setupAdapter, setupWizard }
+// Zwraca { setupAdapter, setupWizard }
```
-`plugin-sdk/channel-setup` udostępnia także niższego poziomu konstruktory
+`plugin-sdk/channel-setup` udostępnia także niższopoziomowe konstruktory
`createOptionalChannelSetupAdapter(...)` i
`createOptionalChannelSetupWizard(...)`, gdy potrzebujesz tylko jednej połowy
tej opcjonalnej powierzchni instalacji.
-Wygenerowany opcjonalny adapter/kreator działa fail-closed przy rzeczywistych zapisach konfiguracji. Ponownie
-wykorzystuje jeden komunikat o wymaganej instalacji w `validateInput`,
-`applyAccountConfig` i `finalize`, a gdy ustawiono `docsPath`, dołącza link do dokumentacji.
+Wygenerowany opcjonalny adapter/kreator kończy działanie bez obejścia przy rzeczywistych zapisach konfiguracji. Ponownie
+wykorzystują jeden komunikat o wymaganej instalacji w `validateInput`,
+`applyAccountConfig` i `finalize`, a po ustawieniu `docsPath` dołączają link do dokumentacji.
-Dla interfejsów setupu opartych na binariach preferuj współdzielone delegowane helpery zamiast
-kopiowania tej samej logiki binariów/statusu do każdego kanału:
+Dla interfejsów konfiguracji opartych na plikach binarnych preferuj współdzielone pomocniki delegujące zamiast
+kopiowania tego samego kodu pośredniego binariów/statusu do każdego kanału:
- `createDetectedBinaryStatus(...)` dla bloków statusu, które różnią się tylko etykietami,
wskazówkami, wynikami i wykrywaniem binariów
- `createCliPathTextInput(...)` dla wejść tekstowych opartych na ścieżce
- `createDelegatedSetupWizardStatusResolvers(...)`,
`createDelegatedPrepare(...)`, `createDelegatedFinalize(...)` i
- `createDelegatedResolveConfigured(...)`, gdy `setupEntry` musi leniwie przekazać dalej cięższy pełny kreator
-- `createDelegatedTextInputShouldPrompt(...)`, gdy `setupEntry` musi tylko
+ `createDelegatedResolveConfigured(...)`, gdy `setupEntry` musi leniwie przekazać obsługę
+ do cięższego pełnego kreatora
+- `createDelegatedTextInputShouldPrompt(...)`, gdy `setupEntry` musi jedynie
delegować decyzję `textInputs[*].shouldPrompt`
## Publikowanie i instalacja
-**Pluginy zewnętrzne:** opublikuj do [ClawHub](/pl/tools/clawhub) albo npm, a następnie zainstaluj:
+**Pluginy zewnętrzne:** opublikuj w [ClawHub](/pl/tools/clawhub) lub npm, a następnie zainstaluj:
```bash
openclaw plugins install @myorg/openclaw-my-plugin
```
-OpenClaw najpierw próbuje ClawHub i automatycznie przechodzi do npm jako fallback. Możesz też
+OpenClaw najpierw próbuje ClawHub, a potem automatycznie przechodzi do npm. Możesz też
jawnie wymusić ClawHub:
```bash
openclaw plugins install clawhub:@myorg/openclaw-my-plugin # tylko ClawHub
```
-Nie ma odpowiadającego nadpisania `npm:`. Użyj zwykłej specyfikacji pakietu npm, jeśli
-chcesz ścieżki npm po fallbacku z ClawHub:
+Nie ma odpowiadającego nadpisania `npm:`. Użyj zwykłej specyfikacji pakietu npm, gdy
+chcesz użyć ścieżki npm po awaryjnym przejściu z ClawHub:
```bash
openclaw plugins install @myorg/openclaw-my-plugin
```
-**Pluginy w repo:** umieść je w drzewie workspace bundlowanych pluginów, a będą automatycznie
-wykrywane podczas builda.
+**Pluginy w repozytorium:** umieść je w drzewie workspace wbudowanych pluginów, a zostaną automatycznie
+wykryte podczas budowania.
**Użytkownicy mogą instalować:**
@@ -519,13 +530,13 @@ openclaw plugins install
```
- Dla instalacji pochodzących z npm `openclaw plugins install` uruchamia
- `npm install --ignore-scripts` (bez skryptów lifecycle). Utrzymuj drzewo zależności pluginu
- jako czyste JS/TS i unikaj pakietów wymagających buildów `postinstall`.
+ W przypadku instalacji pochodzących z npm `openclaw plugins install` uruchamia
+ `npm install --ignore-scripts` (bez skryptów cyklu życia). Zachowaj drzewo zależności pluginu
+ jako czyste JS/TS i unikaj pakietów, które wymagają kompilacji w `postinstall`.
## Powiązane
-- [SDK Entry Points](/pl/plugins/sdk-entrypoints) -- `definePluginEntry` i `defineChannelPluginEntry`
-- [Plugin Manifest](/pl/plugins/manifest) -- pełna dokumentacja schematu manifestu
-- [Building Plugins](/pl/plugins/building-plugins) -- przewodnik krok po kroku dla początkujących
+- [Punkty wejścia SDK](/pl/plugins/sdk-entrypoints) -- `definePluginEntry` i `defineChannelPluginEntry`
+- [Manifest Pluginu](/pl/plugins/manifest) -- pełna dokumentacja schematu manifestu
+- [Tworzenie pluginów](/pl/plugins/building-plugins) -- przewodnik krok po kroku na start
diff --git a/docs/pl/plugins/sdk-testing.md b/docs/pl/plugins/sdk-testing.md
index 0a0c1402f..9f28dad66 100644
--- a/docs/pl/plugins/sdk-testing.md
+++ b/docs/pl/plugins/sdk-testing.md
@@ -1,36 +1,36 @@
---
read_when:
- - Piszesz testy dla pluginu
- - Potrzebujesz narzędzi testowych z Plugin SDK
+ - Piszesz testy dla Pluginu
+ - Potrzebujesz narzędzi testowych z SDK Pluginu
- Chcesz zrozumieć testy kontraktowe dla dołączonych pluginów
sidebarTitle: Testing
summary: Narzędzia testowe i wzorce dla pluginów OpenClaw
-title: Testowanie pluginów
+title: Testowanie Pluginów
x-i18n:
- generated_at: "2026-04-05T14:01:56Z"
+ generated_at: "2026-04-15T19:41:35Z"
model: gpt-5.4
provider: openai
- source_hash: 2e95ed58ed180feadad17bb5138bd09e3b45f1f3ecdff4e2fba4874bb80099fe
+ source_hash: 2f75bd3f3b5ba34b05786e0dd96d493c36db73a1d258998bf589e27e45c0bd09
source_path: plugins/sdk-testing.md
workflow: 15
---
-# Testowanie pluginów
+# Testowanie Pluginów
-Referencja narzędzi testowych, wzorców i egzekwowania lint dla pluginów
-OpenClaw.
+Dokumentacja narzędzi testowych, wzorców i egzekwowania reguł lintingu dla
+pluginów OpenClaw.
**Szukasz przykładów testów?** Przewodniki how-to zawierają gotowe przykłady testów:
- [Testy pluginów kanałowych](/plugins/sdk-channel-plugins#step-6-test) oraz
- [Testy pluginów providerów](/plugins/sdk-provider-plugins#step-6-test).
+ [Testy Pluginów kanałów](/pl/plugins/sdk-channel-plugins#step-6-test) oraz
+ [Testy Pluginów dostawców](/pl/plugins/sdk-provider-plugins#step-6-test).
## Narzędzia testowe
**Import:** `openclaw/plugin-sdk/testing`
-Ta ścieżka podrzędna do testowania eksportuje wąski zestaw helperów dla autorów pluginów:
+Podścieżka testowa eksportuje wąski zestaw pomocników dla autorów pluginów:
```typescript
import {
@@ -42,15 +42,15 @@ import {
### Dostępne eksporty
-| Export | Purpose |
+| Export | Cel |
| -------------------------------------- | ------------------------------------------------------ |
-| `installCommonResolveTargetErrorCases` | Współdzielone przypadki testowe do obsługi błędów rozwiązywania celu |
-| `shouldAckReaction` | Sprawdza, czy kanał powinien dodać reakcję ack |
-| `removeAckReactionAfterReply` | Usuwa reakcję ack po dostarczeniu odpowiedzi |
+| `installCommonResolveTargetErrorCases` | Współdzielone przypadki testowe dla obsługi błędów rozwiązywania celu |
+| `shouldAckReaction` | Sprawdza, czy kanał powinien dodać reakcję ack |
+| `removeAckReactionAfterReply` | Usuwa reakcję ack po dostarczeniu odpowiedzi |
### Typy
-Ścieżka podrzędna do testowania ponownie eksportuje też typy przydatne w plikach testowych:
+Podścieżka testowa ponownie eksportuje także typy przydatne w plikach testowych:
```typescript
import type {
@@ -66,23 +66,23 @@ import type {
## Testowanie rozwiązywania celu
Użyj `installCommonResolveTargetErrorCases`, aby dodać standardowe przypadki błędów dla
-rozwiązywania celów kanału:
+rozwiązywania celu kanału:
```typescript
import { describe } from "vitest";
import { installCommonResolveTargetErrorCases } from "openclaw/plugin-sdk/testing";
-describe("rozwiązywanie celu my-channel", () => {
+describe("my-channel target resolution", () => {
installCommonResolveTargetErrorCases({
resolveTarget: ({ to, mode, allowFrom }) => {
- // Logika rozwiązywania celu twojego kanału
+ // Your channel's target resolution logic
return myChannelResolveTarget({ to, mode, allowFrom });
},
implicitAllowFrom: ["user1", "user2"],
});
- // Dodaj przypadki testowe specyficzne dla kanału
- it("powinno rozwiązywać cele @username", () => {
+ // Add channel-specific test cases
+ it("should resolve @username targets", () => {
// ...
});
});
@@ -90,13 +90,13 @@ describe("rozwiązywanie celu my-channel", () => {
## Wzorce testowania
-### Testy jednostkowe pluginu kanałowego
+### Testy jednostkowe Pluginu kanału
```typescript
import { describe, it, expect, vi } from "vitest";
-describe("plugin my-channel", () => {
- it("powinien rozwiązać konto z config", () => {
+describe("my-channel plugin", () => {
+ it("should resolve account from config", () => {
const cfg = {
channels: {
"my-channel": {
@@ -110,7 +110,7 @@ describe("plugin my-channel", () => {
expect(account.token).toBe("test-token");
});
- it("powinien sprawdzać konto bez materializowania sekretów", () => {
+ it("should inspect account without materializing secrets", () => {
const cfg = {
channels: {
"my-channel": { token: "test-token" },
@@ -120,19 +120,19 @@ describe("plugin my-channel", () => {
const inspection = myPlugin.setup.inspectAccount(cfg, undefined);
expect(inspection.configured).toBe(true);
expect(inspection.tokenStatus).toBe("available");
- // Bez ujawniania wartości tokena
+ // No token value exposed
expect(inspection).not.toHaveProperty("token");
});
});
```
-### Testy jednostkowe pluginu providera
+### Testy jednostkowe Pluginu dostawcy
```typescript
import { describe, it, expect } from "vitest";
-describe("plugin my-provider", () => {
- it("powinien rozwiązywać modele dynamiczne", () => {
+describe("my-provider plugin", () => {
+ it("should resolve dynamic models", () => {
const model = myProvider.resolveDynamicModel({
modelId: "custom-model-v2",
// ... context
@@ -143,7 +143,7 @@ describe("plugin my-provider", () => {
expect(model.api).toBe("openai-completions");
});
- it("powinien zwrócić katalog, gdy klucz API jest dostępny", async () => {
+ it("should return catalog when API key is available", async () => {
const result = await myProvider.catalog.run({
resolveProviderApiKey: () => ({ apiKey: "test-key" }),
// ... context
@@ -154,17 +154,20 @@ describe("plugin my-provider", () => {
});
```
-### Mockowanie runtime pluginu
+### Mockowanie środowiska uruchomieniowego Pluginu
-Dla kodu używającego `createPluginRuntimeStore` mockuj runtime w testach:
+W przypadku kodu używającego `createPluginRuntimeStore` zamockuj runtime w testach:
```typescript
import { createPluginRuntimeStore } from "openclaw/plugin-sdk/runtime-store";
import type { PluginRuntime } from "openclaw/plugin-sdk/runtime-store";
-const store = createPluginRuntimeStore("test runtime not set");
+const store = createPluginRuntimeStore({
+ pluginId: "test-plugin",
+ errorMessage: "test runtime not set",
+});
-// W konfiguracji testu
+// In test setup
const mockRuntime = {
agent: {
resolveAgentDir: vi.fn().mockReturnValue("/tmp/agent"),
@@ -179,26 +182,26 @@ const mockRuntime = {
store.setRuntime(mockRuntime);
-// Po testach
+// After tests
store.clearRuntime();
```
-### Testowanie z per-instance stubs
+### Testowanie z użyciem stubów per instancja
-Preferuj stuby per instancja zamiast modyfikacji prototypu:
+Preferuj stuby per instancja zamiast mutacji prototypu:
```typescript
-// Preferowane: stub per instancja
+// Preferred: per-instance stub
const client = new MyChannelClient();
client.sendMessage = vi.fn().mockResolvedValue({ id: "msg-1" });
-// Unikaj: modyfikacji prototypu
+// Avoid: prototype mutation
// MyChannelClient.prototype.sendMessage = vi.fn();
```
## Testy kontraktowe (pluginy w repozytorium)
-Dołączone pluginy mają testy kontraktowe weryfikujące własność rejestracji:
+Dołączone pluginy mają testy kontraktowe, które weryfikują własność rejestracji:
```bash
pnpm test -- src/plugins/contracts/
@@ -206,8 +209,8 @@ pnpm test -- src/plugins/contracts/
Te testy sprawdzają:
-- Które pluginy rejestrują które providery
-- Które pluginy rejestrują których providerów mowy
+- Które pluginy rejestrują których dostawców
+- Które pluginy rejestrują których dostawców mowy
- Poprawność kształtu rejestracji
- Zgodność z kontraktem runtime
@@ -227,15 +230,15 @@ pnpm test -- src/plugins/contracts/auth.contract.test.ts
pnpm test -- src/plugins/contracts/runtime.contract.test.ts
```
-## Egzekwowanie lint (pluginy w repozytorium)
+## Egzekwowanie reguł lintingu (pluginy w repozytorium)
-`pnpm check` egzekwuje trzy reguły dla pluginów w repozytorium:
+Trzy reguły są egzekwowane przez `pnpm check` dla pluginów w repozytorium:
-1. **Brak monolitycznych importów root** — root barrel `openclaw/plugin-sdk` jest odrzucany
-2. **Brak bezpośrednich importów `src/`** — pluginy nie mogą importować bezpośrednio `../../src/`
-3. **Brak self-imports** — pluginy nie mogą importować własnej ścieżki podrzędnej `plugin-sdk/`
+1. **Brak monolitycznych importów z root** -- barrel root `openclaw/plugin-sdk` jest odrzucany
+2. **Brak bezpośrednich importów z `src/`** -- pluginy nie mogą importować `../../src/` bezpośrednio
+3. **Brak importów do siebie samych** -- pluginy nie mogą importować własnej podścieżki `plugin-sdk/`
-Zewnętrzne pluginy nie podlegają tym regułom lint, ale zaleca się stosowanie tych samych
+Zewnętrzne pluginy nie podlegają tym regułom lintingu, ale zaleca się stosowanie tych samych
wzorców.
## Konfiguracja testów
@@ -243,20 +246,20 @@ wzorców.
OpenClaw używa Vitest z progami pokrycia V8. Dla testów pluginów:
```bash
-# Uruchom wszystkie testy
+# Run all tests
pnpm test
-# Uruchom testy konkretnego pluginu
+# Run specific plugin tests
pnpm test -- /my-channel/src/channel.test.ts
-# Uruchom z filtrem konkretnej nazwy testu
+# Run with a specific test name filter
pnpm test -- /my-channel/ -t "resolves account"
-# Uruchom z pokryciem
+# Run with coverage
pnpm test:coverage
```
-Jeśli lokalne przebiegi powodują presję pamięci:
+Jeśli lokalne uruchomienia powodują presję na pamięć:
```bash
OPENCLAW_VITEST_MAX_WORKERS=1 pnpm test
@@ -264,7 +267,7 @@ OPENCLAW_VITEST_MAX_WORKERS=1 pnpm test
## Powiązane
-- [Przegląd SDK](/plugins/sdk-overview) -- konwencje importu
-- [SDK pluginów kanałowych](/plugins/sdk-channel-plugins) -- interfejs pluginów kanałowych
-- [SDK pluginów providerów](/plugins/sdk-provider-plugins) -- hooki pluginów providerów
-- [Tworzenie pluginów](/plugins/building-plugins) -- przewodnik na start
+- [Przegląd SDK](/pl/plugins/sdk-overview) -- konwencje importu
+- [Pluginy kanałów SDK](/pl/plugins/sdk-channel-plugins) -- interfejs Pluginu kanału
+- [Pluginy dostawców SDK](/pl/plugins/sdk-provider-plugins) -- hooki Pluginu dostawcy
+- [Tworzenie Pluginów](/pl/plugins/building-plugins) -- przewodnik na początek
diff --git a/docs/pl/reference/token-use.md b/docs/pl/reference/token-use.md
index 09a83fda7..e53610d1e 100644
--- a/docs/pl/reference/token-use.md
+++ b/docs/pl/reference/token-use.md
@@ -1,14 +1,14 @@
---
read_when:
- - Wyjaśnianie użycia tokenów, kosztów lub okien kontekstowych
+ - Wyjaśnianie użycia tokenów, kosztów lub okien kontekstu
- Debugowanie wzrostu kontekstu lub zachowania Compaction
summary: Jak OpenClaw buduje kontekst promptu oraz raportuje użycie tokenów i koszty
title: Użycie tokenów i koszty
x-i18n:
- generated_at: "2026-04-12T09:34:14Z"
+ generated_at: "2026-04-15T19:41:58Z"
model: gpt-5.4
provider: openai
- source_hash: f8c856549cd28b8364a640e6fa9ec26aa736895c7a993e96cbe85838e7df2dfb
+ source_hash: 9a706d3df8b2ea1136b3535d216c6b358e43aee2a31a4759824385e1345e6fe5
source_path: reference/token-use.md
workflow: 15
---
@@ -16,80 +16,96 @@ x-i18n:
# Użycie tokenów i koszty
OpenClaw śledzi **tokeny**, a nie znaki. Tokeny są zależne od modelu, ale większość
-modeli w stylu OpenAI daje średnio około 4 znaków na token dla tekstu angielskiego.
+modeli w stylu OpenAI ma średnio około 4 znaki na token dla tekstu angielskiego.
## Jak budowany jest prompt systemowy
OpenClaw składa własny prompt systemowy przy każdym uruchomieniu. Obejmuje on:
-- listę narzędzi + krótkie opisy
-- listę Skills (tylko metadane; instrukcje są ładowane na żądanie za pomocą `read`)
-- instrukcje samodzielnej aktualizacji
-- obszar roboczy + pliki bootstrapu (`AGENTS.md`, `SOUL.md`, `TOOLS.md`, `IDENTITY.md`, `USER.md`, `HEARTBEAT.md`, `BOOTSTRAP.md` gdy nowe, a także `MEMORY.md`, jeśli istnieje, lub `memory.md` jako zapasowy wariant małymi literami). Duże pliki są obcinane przez `agents.defaults.bootstrapMaxChars` (domyślnie: 20000), a całkowite wstrzyknięcie bootstrapu jest ograniczone przez `agents.defaults.bootstrapTotalMaxChars` (domyślnie: 150000). Dzienne pliki `memory/*.md` nie są częścią zwykłego promptu bootstrapu; przy zwykłych turach pozostają dostępne na żądanie przez narzędzia pamięci, ale zwykłe `/new` i `/reset` mogą dodać na początku jednorazowy blok kontekstu startowego z ostatnią dzienną pamięcią dla tej pierwszej tury. Ten prelude startowy jest kontrolowany przez `agents.defaults.startupContext`.
-- czas (UTC + strefa czasowa użytkownika)
-- tagi odpowiedzi + zachowanie Heartbeat
-- metadane runtime (host/OS/model/poziom myślenia)
+- Listę narzędzi + krótkie opisy
+- Listę Skills (tylko metadane; instrukcje są ładowane na żądanie przez `read`).
+ Zwięzły blok Skills jest ograniczony przez `skills.limits.maxSkillsPromptChars`,
+ z opcjonalnym nadpisaniem per agent w
+ `agents.list[].skillsLimits.maxSkillsPromptChars`.
+- Instrukcje samoaktualizacji
+- Pliki workspace + bootstrap (`AGENTS.md`, `SOUL.md`, `TOOLS.md`, `IDENTITY.md`, `USER.md`, `HEARTBEAT.md`, `BOOTSTRAP.md` gdy są nowe, a także `MEMORY.md`, gdy występuje, lub `memory.md` jako wariant z małych liter). Duże pliki są przycinane przez `agents.defaults.bootstrapMaxChars` (domyślnie: 12000), a całkowity wstrzykiwany bootstrap jest ograniczony przez `agents.defaults.bootstrapTotalMaxChars` (domyślnie: 60000). Codzienne pliki `memory/*.md` nie są częścią zwykłego promptu bootstrap; pozostają dostępne na żądanie przez narzędzia pamięci w zwykłych turach, ale czyste `/new` i `/reset` mogą dodać jednorazowy blok kontekstu startowego z ostatnią dzienną pamięcią dla tej pierwszej tury. To wprowadzenie startowe jest kontrolowane przez `agents.defaults.startupContext`.
+- Czas (UTC + strefa czasowa użytkownika)
+- Tagi odpowiedzi + zachowanie Heartbeat
+- Metadane runtime (host/OS/model/thinking)
Pełny podział znajdziesz w [Prompt systemowy](/pl/concepts/system-prompt).
-## Co liczy się do okna kontekstowego
+## Co liczy się do okna kontekstu
Wszystko, co model otrzymuje, liczy się do limitu kontekstu:
-- prompt systemowy (wszystkie sekcje wymienione powyżej)
-- historia rozmowy (wiadomości użytkownika + asystenta)
-- wywołania narzędzi i wyniki narzędzi
-- załączniki/transkrypcje (obrazy, audio, pliki)
-- podsumowania Compaction i artefakty przycinania
-- wrappery dostawcy lub nagłówki bezpieczeństwa (niewidoczne, ale nadal liczone)
+- Prompt systemowy (wszystkie sekcje wymienione powyżej)
+- Historia rozmowy (wiadomości użytkownika i asystenta)
+- Wywołania narzędzi i wyniki narzędzi
+- Załączniki/transkrypcje (obrazy, audio, pliki)
+- Podsumowania Compaction i artefakty przycinania
+- Opakowania dostawcy lub nagłówki bezpieczeństwa (niewidoczne, ale nadal liczone)
-Dla obrazów OpenClaw zmniejsza rozdzielczość ładunków obrazów w transkrypcjach/narzędziach przed wywołaniami dostawcy.
+Niektóre powierzchnie runtime o dużym obciążeniu mają własne jawne limity:
+
+- `agents.defaults.contextLimits.memoryGetMaxChars`
+- `agents.defaults.contextLimits.memoryGetDefaultLines`
+- `agents.defaults.contextLimits.toolResultMaxChars`
+- `agents.defaults.contextLimits.postCompactionMaxChars`
+
+Nadpisania per agent znajdują się w `agents.list[].contextLimits`. Te ustawienia
+dotyczą ograniczonych fragmentów runtime i wstrzykiwanych bloków należących do runtime.
+Są one oddzielone od limitów bootstrap, limitów kontekstu startowego i limitów
+promptu Skills.
+
+W przypadku obrazów OpenClaw skaluje w dół ładunki obrazów transkrypcji/narzędzi przed wywołaniami dostawcy.
Użyj `agents.defaults.imageMaxDimensionPx` (domyślnie: `1200`), aby to dostroić:
-- niższe wartości zwykle zmniejszają zużycie tokenów vision i rozmiar ładunku
-- wyższe wartości zachowują więcej szczegółów wizualnych dla OCR/zrzutów ekranu z intensywnym UI
+- Niższe wartości zwykle zmniejszają użycie tokenów vision i rozmiar ładunku.
+- Wyższe wartości zachowują więcej szczegółów wizualnych dla zrzutów ekranu z dużą ilością OCR/UI.
-Aby zobaczyć praktyczny podział (na wstrzyknięty plik, narzędzia, Skills i rozmiar promptu systemowego), użyj `/context list` lub `/context detail`. Zobacz [Kontekst](/pl/concepts/context).
+Aby uzyskać praktyczny podział (na każdy wstrzyknięty plik, narzędzia, Skills i rozmiar promptu systemowego), użyj `/context list` lub `/context detail`. Zobacz [Kontekst](/pl/concepts/context).
## Jak zobaczyć bieżące użycie tokenów
Użyj tych poleceń na czacie:
-- `/status` → **bogata w emoji karta statusu** z modelem sesji, wykorzystaniem kontekstu,
+- `/status` → **karta statusu bogata w emoji** z modelem sesji, użyciem kontekstu,
tokenami wejścia/wyjścia ostatniej odpowiedzi oraz **szacowanym kosztem** (tylko klucz API).
- `/usage off|tokens|full` → dodaje **stopkę użycia dla każdej odpowiedzi** do każdej odpowiedzi.
- - Utrzymuje się per sesja (zapisywane jako `responseUsage`).
- - Uwierzytelnianie OAuth **ukrywa koszt** (tylko tokeny).
+ - Utrzymuje się per sesja (przechowywane jako `responseUsage`).
+ - Autoryzacja OAuth **ukrywa koszt** (tylko tokeny).
- `/usage cost` → pokazuje lokalne podsumowanie kosztów z logów sesji OpenClaw.
Inne powierzchnie:
-- **TUI/Web TUI:** obsługiwane są `/status` + `/usage`.
+- **TUI/Web TUI:** obsługiwane są `/status` i `/usage`.
- **CLI:** `openclaw status --usage` i `openclaw channels list` pokazują
- znormalizowane okna limitów dostawcy (`X% left`, a nie koszty dla poszczególnych odpowiedzi).
- Obecni dostawcy okien użycia: Anthropic, GitHub Copilot, Gemini CLI,
+ znormalizowane okna limitów dostawców (`X% left`, a nie koszty per odpowiedź).
+ Obecni dostawcy z oknami użycia: Anthropic, GitHub Copilot, Gemini CLI,
OpenAI Codex, MiniMax, Xiaomi i z.ai.
-Powierzchnie użycia normalizują typowe aliasy pól natywnych dostawców przed wyświetleniem.
+Powierzchnie użycia normalizują popularne aliasy pól natywnych dla dostawców przed wyświetleniem.
Dla ruchu OpenAI-family Responses obejmuje to zarówno `input_tokens` /
-`output_tokens`, jak i `prompt_tokens` / `completion_tokens`, więc specyficzne dla transportu
-nazwy pól nie zmieniają `/status`, `/usage` ani podsumowań sesji.
-Użycie JSON Gemini CLI jest również normalizowane: tekst odpowiedzi pochodzi z `response`, a
+`output_tokens`, jak i `prompt_tokens` / `completion_tokens`, więc nazwy pól
+zależne od transportu nie zmieniają `/status`, `/usage` ani podsumowań sesji.
+Użycie Gemini CLI JSON również jest normalizowane: tekst odpowiedzi pochodzi z `response`, a
`stats.cached` mapuje się na `cacheRead`, przy czym używane jest `stats.input_tokens - stats.cached`,
gdy CLI pomija jawne pole `stats.input`.
Dla natywnego ruchu OpenAI-family Responses aliasy użycia WebSocket/SSE są
normalizowane w ten sam sposób, a sumy całkowite wracają do znormalizowanego wejścia + wyjścia, gdy
`total_tokens` nie istnieje lub ma wartość `0`.
-Gdy bieżąca migawka sesji jest uboga w dane, `/status` i `session_status` mogą
+Gdy bieżący snapshot sesji jest ubogi, `/status` i `session_status` mogą
również odzyskać liczniki tokenów/cache oraz etykietę aktywnego modelu runtime z
-najnowszego logu użycia transkryptu. Istniejące niezerowe wartości na żywo nadal mają
-pierwszeństwo przed wartościami odzyskanymi z transkryptu, a większe sumy zorientowane na prompt
-z transkryptu mogą wygrać, gdy zapisane sumy nie istnieją lub są mniejsze.
-Uwierzytelnianie użycia dla okien limitów dostawcy pochodzi z hooków specyficznych dla dostawcy, gdy są dostępne;
-w przeciwnym razie OpenClaw wraca do dopasowywania poświadczeń OAuth/klucza API
-z profili uwierzytelniania, env lub konfiguracji.
+najnowszego logu użycia transkrypcji. Istniejące niezerowe wartości live nadal mają
+pierwszeństwo przed wartościami awaryjnie pobranymi z transkrypcji, a większe sumy
+zorientowane na prompt z transkrypcji mogą wygrać, gdy zapisane sumy nie istnieją
+lub są mniejsze.
+Autoryzacja użycia dla okien limitów dostawców pochodzi z hooków specyficznych dla dostawcy, gdy są dostępne;
+w przeciwnym razie OpenClaw wraca do dopasowywania poświadczeń OAuth/klucza API z
+profili auth, env lub config.
-## Szacowanie kosztów (gdy jest pokazywane)
+## Szacowanie kosztów (gdy jest wyświetlane)
Koszty są szacowane na podstawie konfiguracji cen modelu:
@@ -97,35 +113,36 @@ Koszty są szacowane na podstawie konfiguracji cen modelu:
models.providers..models[].cost
```
-Są to wartości **USD za 1M tokenów** dla `input`, `output`, `cacheRead` i
+Są to wartości **USD za 1M tokenów** dla `input`, `output`, `cacheRead` oraz
`cacheWrite`. Jeśli brakuje cen, OpenClaw pokazuje tylko tokeny. Tokeny OAuth
nigdy nie pokazują kosztu w dolarach.
## Wpływ TTL cache i przycinania
-Cache promptu dostawcy ma zastosowanie tylko w obrębie okna TTL cache. OpenClaw może
-opcjonalnie uruchamiać **przycinanie cache-ttl**: przycina sesję po wygaśnięciu TTL
-cache, a następnie resetuje okno cache, aby kolejne żądania mogły ponownie używać
-świeżo zcache’owanego kontekstu zamiast ponownie cache’ować całą historię. Utrzymuje to
-niższe koszty zapisu cache, gdy sesja pozostaje bezczynna po TTL.
+Cache promptów dostawcy działa tylko w obrębie okna TTL cache. OpenClaw może
+opcjonalnie uruchamiać **przycinanie cache-ttl**: przycina sesję po wygaśnięciu
+TTL cache, a następnie resetuje okno cache, aby kolejne żądania mogły ponownie użyć
+świeżo zcache’owanego kontekstu zamiast ponownie cache’ować pełną historię. Dzięki temu koszty
+zapisu cache pozostają niższe, gdy sesja pozostaje bezczynna dłużej niż TTL.
Skonfiguruj to w [Konfiguracja Gateway](/pl/gateway/configuration), a szczegóły
-działania znajdziesz w [Przycinanie sesji](/pl/concepts/session-pruning).
+zachowania znajdziesz w [Przycinanie sesji](/pl/concepts/session-pruning).
-Heartbeat może utrzymywać cache **ciepły** podczas przerw bezczynności. Jeśli TTL cache modelu
-wynosi `1h`, ustawienie interwału Heartbeat nieco poniżej tego czasu (np. `55m`) może zapobiec
-ponownemu cache’owaniu całego promptu, zmniejszając koszty zapisu cache.
+Heartbeat może utrzymywać cache **warm** w przerwach bezczynności. Jeśli TTL cache
+Twojego modelu wynosi `1h`, ustawienie interwału Heartbeat tuż poniżej tej wartości
+(np. `55m`) może zapobiec ponownemu cache’owaniu pełnego promptu, zmniejszając koszty
+zapisu cache.
W konfiguracjach wieloagentowych możesz utrzymać jedną współdzieloną konfigurację modelu i dostrajać zachowanie cache
-dla każdego agenta przez `agents.list[].params.cacheRetention`.
+per agent za pomocą `agents.list[].params.cacheRetention`.
Pełny przewodnik po wszystkich ustawieniach znajdziesz w [Prompt Caching](/pl/reference/prompt-caching).
-W przypadku cen API Anthropic odczyty cache są znacząco tańsze niż tokeny wejściowe,
-podczas gdy zapisy cache są rozliczane według wyższego mnożnika. Najnowsze stawki i mnożniki TTL znajdziesz w cenniku prompt caching Anthropic:
+W przypadku cen API Anthropic odczyty cache są znacznie tańsze niż tokeny
+wejściowe, natomiast zapisy cache są rozliczane z wyższym mnożnikiem. Aktualne stawki i mnożniki TTL znajdziesz w cenniku prompt caching Anthropic:
[https://docs.anthropic.com/docs/build-with-claude/prompt-caching](https://docs.anthropic.com/docs/build-with-claude/prompt-caching)
-### Przykład: utrzymanie 1h cache w cieple za pomocą Heartbeat
+### Przykład: utrzymywanie cache 1h w stanie warm za pomocą Heartbeat
```yaml
agents:
@@ -150,24 +167,24 @@ agents:
models:
"anthropic/claude-opus-4-6":
params:
- cacheRetention: "long" # domyślna baza dla większości agentów
+ cacheRetention: "long" # default baseline for most agents
list:
- id: "research"
default: true
heartbeat:
- every: "55m" # utrzymuj długi cache w cieple dla głębokich sesji
+ every: "55m" # keep long cache warm for deep sessions
- id: "alerts"
params:
- cacheRetention: "none" # unikaj zapisów cache dla skokowych powiadomień
+ cacheRetention: "none" # avoid cache writes for bursty notifications
```
`agents.list[].params` scala się na wierzchu `params` wybranego modelu, więc możesz
-nadpisać tylko `cacheRetention` i pozostawić inne domyślne ustawienia modelu bez zmian.
+nadpisać tylko `cacheRetention` i odziedziczyć pozostałe domyślne ustawienia modelu bez zmian.
### Przykład: włączenie nagłówka beta Anthropic 1M context
-Okno kontekstowe 1M w Anthropic jest obecnie objęte bramką beta. OpenClaw może wstrzyknąć wymaganą
-wartość `anthropic-beta`, gdy włączysz `context1m` w obsługiwanych modelach Opus
+Okno kontekstu 1M Anthropic jest obecnie objęte bramką beta. OpenClaw może wstrzyknąć
+wymaganą wartość `anthropic-beta`, gdy włączysz `context1m` w obsługiwanych modelach Opus
lub Sonnet.
```yaml
@@ -179,23 +196,23 @@ agents:
context1m: true
```
-To mapuje się na nagłówek beta Anthropic `context-1m-2025-08-07`.
+Mapuje się to na nagłówek beta Anthropic `context-1m-2025-08-07`.
-Ma to zastosowanie tylko wtedy, gdy dla tego wpisu modelu ustawiono `context1m: true`.
+Ma to zastosowanie tylko wtedy, gdy `context1m: true` jest ustawione w tym wpisie modelu.
Wymaganie: poświadczenie musi kwalifikować się do użycia długiego kontekstu. Jeśli nie,
Anthropic odpowie błędem limitu po stronie dostawcy dla tego żądania.
-Jeśli uwierzytelniasz Anthropic tokenami OAuth/subskrypcyjnymi (`sk-ant-oat-*`),
+Jeśli uwierzytelniasz Anthropic za pomocą tokenów OAuth/subscription (`sk-ant-oat-*`),
OpenClaw pomija nagłówek beta `context-1m-*`, ponieważ Anthropic obecnie
odrzuca tę kombinację z HTTP 401.
-## Wskazówki dotyczące zmniejszania presji tokenowej
+## Wskazówki, jak zmniejszyć presję tokenów
- Użyj `/compact`, aby podsumować długie sesje.
-- Przycinaj duże wyjścia narzędzi w swoich workflow.
+- Ograniczaj duże wyniki narzędzi w swoich workflow.
- Obniż `agents.defaults.imageMaxDimensionPx` dla sesji z dużą liczbą zrzutów ekranu.
- Utrzymuj krótkie opisy Skills (lista Skills jest wstrzykiwana do promptu).
-- Preferuj mniejsze modele do rozwlekłej, eksploracyjnej pracy.
+- W przypadku rozwlekłej, eksploracyjnej pracy preferuj mniejsze modele.
-Dokładny wzór narzutu listy Skills znajdziesz w [Skills](/pl/tools/skills).
+Zobacz [Skills](/pl/tools/skills), aby poznać dokładny wzór narzutu listy Skills.