chore(i18n): refresh pl translations
This commit is contained in:
parent
5f9549a479
commit
d56d78c9e6
38
docs/pl/AGENTS.md
Normal file
38
docs/pl/AGENTS.md
Normal file
@ -0,0 +1,38 @@
|
||||
---
|
||||
x-i18n:
|
||||
generated_at: "2026-04-12T09:33:22Z"
|
||||
model: gpt-5.4
|
||||
provider: openai
|
||||
source_hash: 6805814012caac6ff64f17f44f393975510c5af3421fae9651ed9033e5861784
|
||||
source_path: AGENTS.md
|
||||
workflow: 15
|
||||
---
|
||||
|
||||
# Przewodnik po dokumentacji
|
||||
|
||||
Ten katalog odpowiada za tworzenie dokumentacji, reguły linków Mintlify i zasady internacjonalizacji dokumentacji.
|
||||
|
||||
## Reguły Mintlify
|
||||
|
||||
- Dokumentacja jest hostowana w Mintlify (`https://docs.openclaw.ai`).
|
||||
- Wewnętrzne linki do dokumentów w `docs/**/*.md` muszą pozostać względne względem katalogu głównego i bez sufiksu `.md` lub `.mdx` (przykład: `[Config](/configuration)`).
|
||||
- Odwołania do sekcji powinny używać kotwic w ścieżkach względnych względem katalogu głównego (przykład: `[Hooks](/configuration#hooks)`).
|
||||
- Nagłówki dokumentów powinny unikać półpauz i apostrofów, ponieważ generowanie kotwic w Mintlify jest na to wrażliwe.
|
||||
- README i inne dokumenty renderowane przez GitHub powinny zachować bezwzględne adresy URL dokumentacji, aby linki działały poza Mintlify.
|
||||
- Treść dokumentacji musi pozostać ogólna: bez osobistych nazw urządzeń, nazw hostów ani lokalnych ścieżek; używaj symboli zastępczych, takich jak `user@gateway-host`.
|
||||
|
||||
## Zasady dotyczące treści dokumentacji
|
||||
|
||||
- W dokumentacji, tekstach UI i listach wyboru usługi/dostawców należy porządkować alfabetycznie, chyba że dana sekcja wyraźnie opisuje kolejność działania w czasie wykonywania lub kolejność automatycznego wykrywania.
|
||||
- Zachowuj spójność nazewnictwa bundled Plugin z ogólnorepozytoryjnymi zasadami terminologii Plugin zawartymi w głównym `AGENTS.md`.
|
||||
|
||||
## Internacjonalizacja dokumentacji
|
||||
|
||||
- Dokumentacja w językach obcych nie jest utrzymywana w tym repozytorium. Wygenerowane dane wyjściowe do publikacji znajdują się w osobnym repozytorium `openclaw/docs` (często sklonowanym lokalnie jako `../openclaw-docs`).
|
||||
- Nie dodawaj ani nie edytuj zlokalizowanej dokumentacji w `docs/<locale>/**` tutaj.
|
||||
- Traktuj angielską dokumentację w tym repozytorium oraz pliki glosariusza jako źródło prawdy.
|
||||
- Pipeline: zaktualizuj tutaj angielską dokumentację, w razie potrzeby zaktualizuj `docs/.i18n/glossary.<locale>.json`, a następnie pozwól, aby synchronizacja repozytorium publikacji i `scripts/docs-i18n` zostały uruchomione w `openclaw/docs`.
|
||||
- Przed ponownym uruchomieniem `scripts/docs-i18n` dodaj wpisy do glosariusza dla wszelkich nowych terminów technicznych, tytułów stron lub krótkich etykiet nawigacyjnych, które muszą pozostać po angielsku lub mieć stałe tłumaczenie.
|
||||
- `pnpm docs:check-i18n-glossary` jest mechanizmem kontrolnym dla zmienionych angielskich tytułów dokumentów i krótkich wewnętrznych etykiet dokumentów.
|
||||
- Pamięć tłumaczeń znajduje się w wygenerowanych plikach `docs/.i18n/*.tm.jsonl` w repozytorium publikacji.
|
||||
- Zobacz `docs/.i18n/README.md`.
|
||||
@ -2,21 +2,21 @@
|
||||
read_when:
|
||||
- Planowanie zadań w tle lub wybudzeń
|
||||
- Podłączanie zewnętrznych wyzwalaczy (webhooków, Gmaila) do OpenClaw
|
||||
- Wybór między heartbeat a cron dla zaplanowanych zadań
|
||||
summary: Zaplanowane zadania, webhooki i wyzwalacze Gmail PubSub dla harmonogramu bramy
|
||||
- Wybór między Heartbeat a Cron dla zaplanowanych zadań
|
||||
summary: Zaplanowane zadania, webhooki i wyzwalacze Gmail PubSub dla harmonogramu Gateway
|
||||
title: Zaplanowane zadania
|
||||
x-i18n:
|
||||
generated_at: "2026-04-11T02:44:28Z"
|
||||
generated_at: "2026-04-12T09:33:31Z"
|
||||
model: gpt-5.4
|
||||
provider: openai
|
||||
source_hash: 04d94baa152de17d78515f7d545f099fe4810363ab67e06b465e489737f54665
|
||||
source_hash: f42bcaeedd0595d025728d7f236a724a0ebc67b6813c57233f4d739b3088317f
|
||||
source_path: automation/cron-jobs.md
|
||||
workflow: 15
|
||||
---
|
||||
|
||||
# Zaplanowane zadania (Cron)
|
||||
|
||||
Cron to wbudowany harmonogram bramy. Utrwala zadania, wybudza agenta we właściwym czasie i może dostarczać wyniki z powrotem do kanału czatu lub punktu końcowego webhooka.
|
||||
Cron to wbudowany harmonogram Gateway. Utrwala zadania, wybudza agenta we właściwym czasie i może dostarczać wyniki z powrotem do kanału czatu lub punktu końcowego Webhook.
|
||||
|
||||
## Szybki start
|
||||
|
||||
@ -39,108 +39,118 @@ openclaw cron runs --id <job-id>
|
||||
|
||||
## Jak działa cron
|
||||
|
||||
- Cron działa **wewnątrz procesu bramy** (nie wewnątrz modelu).
|
||||
- Zadania są utrwalane w `~/.openclaw/cron/jobs.json`, więc restarty nie powodują utraty harmonogramów.
|
||||
- Wszystkie wykonania crona tworzą rekordy [zadań w tle](/pl/automation/tasks).
|
||||
- Zadania jednorazowe (`--at`) są domyślnie automatycznie usuwane po pomyślnym zakończeniu.
|
||||
- Izolowane uruchomienia crona przy zakończeniu działania w trybie best-effort zamykają śledzone karty/procesy przeglądarki dla sesji `cron:<jobId>`, dzięki czemu odłączona automatyzacja przeglądarki nie pozostawia osieroconych procesów.
|
||||
- Izolowane uruchomienia crona chronią też przed nieaktualnymi odpowiedziami potwierdzającymi. Jeśli
|
||||
pierwszy wynik to tylko tymczasowa aktualizacja statusu (`on it`, `pulling everything
|
||||
together` i podobne wskazówki), a żadne uruchomienie podagenta potomnego nie jest już
|
||||
odpowiedzialne za końcową odpowiedź, OpenClaw ponawia monit raz, aby uzyskać właściwy
|
||||
- Cron działa **wewnątrz procesu Gateway** (nie wewnątrz modelu).
|
||||
- Zadania są przechowywane w `~/.openclaw/cron/jobs.json`, więc restarty nie powodują utraty harmonogramów.
|
||||
- Wszystkie wykonania cron tworzą rekordy [zadań w tle](/pl/automation/tasks).
|
||||
- Zadania jednorazowe (`--at`) domyślnie usuwają się automatycznie po powodzeniu.
|
||||
- Izolowane uruchomienia cron po zakończeniu działania podejmują próbę zamknięcia śledzonych kart/procesów przeglądarki dla swojej sesji `cron:<jobId>`, aby odłączona automatyzacja przeglądarki nie pozostawiała osieroconych procesów.
|
||||
- Izolowane uruchomienia cron chronią też przed nieaktualnymi odpowiedziami potwierdzającymi. Jeśli
|
||||
pierwszy wynik jest tylko tymczasową aktualizacją statusu (`on it`, `pulling everything
|
||||
together` i podobne wskazówki), a żadne podrzędne uruchomienie subagenta nie jest już
|
||||
odpowiedzialne za końcową odpowiedź, OpenClaw ponownie wysyła monit raz, aby uzyskać właściwy
|
||||
wynik przed dostarczeniem.
|
||||
|
||||
<a id="maintenance"></a>
|
||||
|
||||
Uzgadnianie zadań dla crona jest zarządzane przez środowisko uruchomieniowe: aktywne zadanie cron pozostaje aktywne, dopóki
|
||||
środowisko uruchomieniowe crona nadal śledzi to zadanie jako uruchomione, nawet jeśli nadal istnieje stary wiersz sesji potomnej.
|
||||
Gdy środowisko uruchomieniowe przestaje zarządzać zadaniem i upłynie 5-minutowe okno karencji, konserwacja może
|
||||
Uzgadnianie zadań dla cron jest zarządzane przez środowisko uruchomieniowe: aktywne zadanie cron pozostaje aktywne, dopóki
|
||||
środowisko wykonawcze cron nadal śledzi to zadanie jako uruchomione, nawet jeśli nadal istnieje stary wiersz sesji podrzędnej.
|
||||
Gdy środowisko przestaje zarządzać zadaniem i upłynie 5-minutowe okno karencji, konserwacja może
|
||||
oznaczyć zadanie jako `lost`.
|
||||
|
||||
## Typy harmonogramów
|
||||
|
||||
| Rodzaj | Flaga CLI | Opis |
|
||||
| ------- | --------- | ------------------------------------------------------------- |
|
||||
| Rodzaj | Flaga CLI | Opis |
|
||||
| ------- | --------- | --------------------------------------------------------- |
|
||||
| `at` | `--at` | Jednorazowy znacznik czasu (ISO 8601 lub względny, np. `20m`) |
|
||||
| `every` | `--every` | Stały interwał |
|
||||
| `cron` | `--cron` | 5-polowe lub 6-polowe wyrażenie cron z opcjonalnym `--tz` |
|
||||
| `every` | `--every` | Stały interwał |
|
||||
| `cron` | `--cron` | 5-polowe lub 6-polowe wyrażenie cron z opcjonalnym `--tz` |
|
||||
|
||||
Znaczniki czasu bez strefy czasowej są traktowane jako UTC. Dodaj `--tz America/New_York` dla harmonogramowania według lokalnego czasu zegarowego.
|
||||
Znaczniki czasu bez strefy czasowej są traktowane jako UTC. Dodaj `--tz America/New_York`, aby użyć lokalnego harmonogramu według czasu ściennego.
|
||||
|
||||
Powtarzające się wyrażenia uruchamiane o pełnej godzinie są automatycznie rozpraszane maksymalnie o 5 minut, aby zmniejszyć skoki obciążenia. Użyj `--exact`, aby wymusić precyzyjny czas, albo `--stagger 30s`, aby ustawić jawne okno.
|
||||
Powtarzające się wyrażenia uruchamiane na początku godziny są automatycznie rozkładane do 5 minut, aby ograniczyć skoki obciążenia. Użyj `--exact`, aby wymusić precyzyjny czas, lub `--stagger 30s`, aby ustawić jawne okno.
|
||||
|
||||
## Style wykonania
|
||||
### Dzień miesiąca i dzień tygodnia używają logiki OR
|
||||
|
||||
| Styl | Wartość `--session` | Uruchamiane w | Najlepsze do |
|
||||
| --------------- | ------------------- | ----------------------- | -------------------------------- |
|
||||
| Sesja główna | `main` | Następny cykl heartbeat | Przypomnienia, zdarzenia systemowe |
|
||||
| Izolowane | `isolated` | Dedykowane `cron:<jobId>` | Raporty, zadania w tle |
|
||||
| Bieżąca sesja | `current` | Powiązane przy tworzeniu | Cykliczna praca zależna od kontekstu |
|
||||
| Sesja niestandardowa | `session:custom-id` | Trwała nazwana sesja | Przepływy pracy budujące na historii |
|
||||
Wyrażenia Cron są parsowane przez [croner](https://github.com/Hexagon/croner). Gdy zarówno pola dnia miesiąca, jak i dnia tygodnia nie są symbolami wieloznacznymi, croner dopasowuje, gdy **którekolwiek** z pól pasuje — nie oba. To standardowe zachowanie Vixie cron.
|
||||
|
||||
Zadania **sesji głównej** umieszczają zdarzenie systemowe w kolejce i opcjonalnie wybudzają heartbeat (`--wake now` lub `--wake next-heartbeat`). Zadania **izolowane** uruchamiają dedykowaną turę agenta ze świeżą sesją. **Sesje niestandardowe** (`session:xxx`) zachowują kontekst między uruchomieniami, umożliwiając przepływy pracy takie jak codzienne standupy budujące na poprzednich podsumowaniach.
|
||||
```
|
||||
# Intended: "9 AM on the 15th, only if it's a Monday"
|
||||
# Actual: "9 AM on every 15th, AND 9 AM on every Monday"
|
||||
0 9 15 * 1
|
||||
```
|
||||
|
||||
Dla zadań izolowanych zamykanie środowiska uruchomieniowego obejmuje teraz także czyszczenie przeglądarki w trybie best-effort dla tej sesji cron. Błędy czyszczenia są ignorowane, aby rzeczywisty wynik crona nadal miał pierwszeństwo.
|
||||
To uruchamia się około 5–6 razy w miesiącu zamiast 0–1 razy w miesiącu. OpenClaw używa tutaj domyślnego zachowania OR w Cronerze. Aby wymagać obu warunków, użyj modyfikatora dnia tygodnia `+` w Cronerze (`0 9 15 * +1`) albo ustaw harmonogram dla jednego pola i sprawdzaj drugie w monicie lub poleceniu zadania.
|
||||
|
||||
Gdy izolowane uruchomienia crona orkiestrują podagentów, dostarczenie również preferuje końcowy
|
||||
wynik potomny zamiast nieaktualnego tekstu tymczasowego z nadrzędnego elementu. Jeśli potomkowie nadal
|
||||
## Style wykonywania
|
||||
|
||||
| Styl | Wartość `--session` | Uruchamiane w | Najlepsze do |
|
||||
| --------------- | ------------------- | ------------------------- | ------------------------------- |
|
||||
| Sesja główna | `main` | Następna tura Heartbeat | Przypomnienia, zdarzenia systemowe |
|
||||
| Izolowane | `isolated` | Dedykowane `cron:<jobId>` | Raporty, zadania w tle |
|
||||
| Bieżąca sesja | `current` | Powiązane przy tworzeniu | Cykliczna praca zależna od kontekstu |
|
||||
| Sesja niestandardowa | `session:custom-id` | Trwała nazwana sesja | Przepływy pracy budowane na historii |
|
||||
|
||||
Zadania **sesji głównej** umieszczają zdarzenie systemowe w kolejce i opcjonalnie wybudzają Heartbeat (`--wake now` lub `--wake next-heartbeat`). Zadania **izolowane** uruchamiają dedykowaną turę agenta ze świeżą sesją. **Sesje niestandardowe** (`session:xxx`) zachowują kontekst między uruchomieniami, umożliwiając przepływy pracy, takie jak codzienne stand-upy, które bazują na wcześniejszych podsumowaniach.
|
||||
|
||||
Dla zadań izolowanych zamykanie środowiska uruchomieniowego obejmuje teraz próbę oczyszczenia przeglądarki dla tej sesji cron. Błędy czyszczenia są ignorowane, aby rzeczywisty wynik cron nadal miał pierwszeństwo.
|
||||
|
||||
Gdy izolowane uruchomienia cron orkiestrują subagentów, dostarczanie preferuje też końcowy
|
||||
wynik potomny zamiast nieaktualnego tymczasowego tekstu nadrzędnego. Jeśli potomkowie nadal
|
||||
działają, OpenClaw pomija tę częściową aktualizację nadrzędną zamiast ją ogłaszać.
|
||||
|
||||
### Opcje ładunku dla zadań izolowanych
|
||||
|
||||
- `--message`: tekst monitu (wymagany dla izolowanych)
|
||||
- `--model` / `--thinking`: nadpisania modelu i poziomu rozumowania
|
||||
- `--light-context`: pomiń wstrzykiwanie plików bootstrap przestrzeni roboczej
|
||||
- `--model` / `--thinking`: nadpisania modelu i poziomu myślenia
|
||||
- `--light-context`: pomiń wstrzykiwanie plików bootstrap obszaru roboczego
|
||||
- `--tools exec,read`: ogranicz, których narzędzi zadanie może używać
|
||||
|
||||
`--model` używa wybranego dozwolonego modelu dla tego zadania. Jeśli żądany model
|
||||
nie jest dozwolony, cron zapisuje ostrzeżenie i wraca do wyboru modelu agenta/domyślnego modelu
|
||||
dla zadania. Skonfigurowane łańcuchy awaryjne nadal mają zastosowanie, ale zwykłe
|
||||
nadpisanie modelu bez jawnej listy awaryjnej dla zadania nie dołącza już modelu głównego
|
||||
agenta jako ukrytego dodatkowego celu ponawiania.
|
||||
nie jest dozwolony, cron zapisuje ostrzeżenie i wraca do wyboru modelu agenta/domyślnego dla tego zadania.
|
||||
Skonfigurowane łańcuchy zapasowe nadal mają zastosowanie, ale zwykłe nadpisanie
|
||||
modelu bez jawnej listy zapasowej dla zadania nie dopisuje już głównego modelu agenta jako ukrytego dodatkowego celu ponowienia.
|
||||
|
||||
Pierwszeństwo wyboru modelu dla zadań izolowanych jest następujące:
|
||||
Kolejność pierwszeństwa wyboru modelu dla zadań izolowanych jest następująca:
|
||||
|
||||
1. Nadpisanie modelu hooka Gmaila (gdy uruchomienie pochodzi z Gmaila i to nadpisanie jest dozwolone)
|
||||
2. `model` w ładunku dla zadania
|
||||
1. Nadpisanie modelu przez hook Gmaila (gdy uruchomienie pochodzi z Gmaila i to nadpisanie jest dozwolone)
|
||||
2. `model` w ładunku per zadanie
|
||||
3. Zapisane nadpisanie modelu sesji cron
|
||||
4. Wybór modelu agenta/domyślnego modelu
|
||||
4. Domyślny wybór modelu agenta
|
||||
|
||||
Tryb szybki również podąża za rozstrzygniętym wyborem na żywo. Jeśli wybrana konfiguracja modelu
|
||||
ma `params.fastMode`, izolowany cron używa tego domyślnie. Zapisane nadpisanie
|
||||
`fastMode` sesji nadal ma pierwszeństwo nad konfiguracją w obu kierunkach.
|
||||
Tryb szybki również podąża za rozstrzygniętym wyborem live. Jeśli konfiguracja wybranego modelu
|
||||
ma `params.fastMode`, izolowany cron domyślnie używa tej wartości. Zapisane nadpisanie
|
||||
`fastMode` dla sesji nadal ma pierwszeństwo nad konfiguracją w obie strony.
|
||||
|
||||
Jeśli izolowane uruchomienie trafi na przekazanie z przełączeniem modelu na żywo, cron ponawia próbę z
|
||||
przełączonym dostawcą/modelem i utrwala ten wybór na żywo przed ponowną próbą. Gdy
|
||||
przełączenie obejmuje także nowy profil uwierzytelniania, cron utrwala również to nadpisanie
|
||||
profilu uwierzytelniania. Liczba ponowień jest ograniczona: po początkowej próbie oraz 2 ponownych próbach
|
||||
przełączenia cron przerywa zamiast zapętlać się w nieskończoność.
|
||||
Jeśli izolowane uruchomienie napotka live handoff przełączenia modelu, cron ponawia próbę z
|
||||
przełączonym dostawcą/modelem i utrwala ten wybór live przed ponowieniem. Gdy przełączenie
|
||||
obejmuje też nowy profil uwierzytelniania, cron utrwala również nadpisanie tego profilu uwierzytelniania.
|
||||
Liczba ponowień jest ograniczona: po początkowej próbie oraz 2 ponowieniach po przełączeniu
|
||||
cron przerywa zamiast zapętlać się w nieskończoność.
|
||||
|
||||
## Dostarczanie i wyniki
|
||||
|
||||
| Tryb | Co się dzieje |
|
||||
| --------- | --------------------------------------------------------- |
|
||||
| `announce` | Dostarcz podsumowanie do docelowego kanału (domyślnie dla izolowanych) |
|
||||
| `webhook` | Wyślij ładunek zdarzenia zakończenia metodą POST do URL |
|
||||
| `none` | Tylko wewnętrznie, bez dostarczenia |
|
||||
| Tryb | Co się dzieje |
|
||||
| --------- | ------------------------------------------------------- |
|
||||
| `announce` | Dostarcza podsumowanie do kanału docelowego (domyślnie dla izolowanych) |
|
||||
| `webhook` | Wysyła ładunek zdarzenia zakończenia metodą POST pod adres URL |
|
||||
| `none` | Tylko wewnętrznie, bez dostarczania |
|
||||
|
||||
Użyj `--announce --channel telegram --to "-1001234567890"` do dostarczania do kanału. Dla tematów forum Telegrama użyj `-1001234567890:topic:123`. Cele Slack/Discord/Mattermost powinny używać jawnych prefiksów (`channel:<id>`, `user:<id>`).
|
||||
Użyj `--announce --channel telegram --to "-1001234567890"` do dostarczania do kanału. Dla tematów forum Telegram użyj `-1001234567890:topic:123`. Cele Slack/Discord/Mattermost powinny używać jawnych prefiksów (`channel:<id>`, `user:<id>`).
|
||||
|
||||
Dla izolowanych zadań zarządzanych przez cron wykonawca zarządza końcową ścieżką dostarczenia. Agent
|
||||
otrzymuje polecenie zwrócenia podsumowania w postaci zwykłego tekstu, a to podsumowanie jest następnie wysyłane
|
||||
przez `announce`, `webhook` albo pozostaje wewnętrzne przy `none`. `--no-deliver`
|
||||
nie przekazuje dostarczania z powrotem agentowi; zachowuje uruchomienie jako wewnętrzne.
|
||||
W przypadku izolowanych zadań zarządzanych przez cron ścieżka końcowego dostarczenia należy do wykonawcy.
|
||||
Agent otrzymuje monit o zwrócenie podsumowania w postaci zwykłego tekstu, a następnie to podsumowanie jest wysyłane przez
|
||||
`announce`, `webhook` albo pozostaje wewnętrzne dla `none`. `--no-deliver` nie oddaje dostarczania z powrotem agentowi;
|
||||
utrzymuje uruchomienie jako wewnętrzne.
|
||||
|
||||
Jeśli oryginalne zadanie wyraźnie mówi, aby wysłać wiadomość do jakiegoś zewnętrznego odbiorcy,
|
||||
agent powinien wskazać w swoim wyniku, do kogo/gdzie ta wiadomość powinna trafić, zamiast
|
||||
próbować wysłać ją bezpośrednio.
|
||||
Jeśli oryginalne zadanie wyraźnie mówi o wysłaniu wiadomości do jakiegoś zewnętrznego odbiorcy,
|
||||
agent powinien wskazać w swoim wyniku, do kogo/gdzie ta wiadomość powinna trafić, zamiast próbować wysłać ją bezpośrednio.
|
||||
|
||||
Powiadomienia o błędach mają osobną ścieżkę docelową:
|
||||
Powiadomienia o błędach korzystają z osobnej ścieżki docelowej:
|
||||
|
||||
- `cron.failureDestination` ustawia globalną wartość domyślną dla powiadomień o błędach.
|
||||
- `job.delivery.failureDestination` nadpisuje ją dla konkretnego zadania.
|
||||
- Jeśli żadne z nich nie jest ustawione, a zadanie już dostarcza przez `announce`, powiadomienia o błędach teraz wracają do tego głównego celu `announce`.
|
||||
- `delivery.failureDestination` jest obsługiwane tylko w zadaniach `sessionTarget="isolated"`, chyba że głównym trybem dostarczania jest `webhook`.
|
||||
- `cron.failureDestination` ustawia globalny domyślny cel dla powiadomień o błędach.
|
||||
- `job.delivery.failureDestination` nadpisuje go dla konkretnego zadania.
|
||||
- Jeśli żaden z nich nie jest ustawiony, a zadanie już dostarcza przez `announce`, powiadomienia o błędach wracają teraz domyślnie do tego głównego celu ogłoszenia.
|
||||
- `delivery.failureDestination` jest obsługiwane tylko dla zadań z `sessionTarget="isolated"`, chyba że głównym trybem dostarczania jest `webhook`.
|
||||
|
||||
## Przykłady CLI
|
||||
|
||||
@ -155,7 +165,7 @@ openclaw cron add \
|
||||
--wake now
|
||||
```
|
||||
|
||||
Cykliczne zadanie izolowane z dostarczaniem:
|
||||
Powtarzające się zadanie izolowane z dostarczaniem:
|
||||
|
||||
```bash
|
||||
openclaw cron add \
|
||||
@ -169,7 +179,7 @@ openclaw cron add \
|
||||
--to "channel:C1234567890"
|
||||
```
|
||||
|
||||
Zadanie izolowane z nadpisaniem modelu i poziomu rozumowania:
|
||||
Zadanie izolowane z nadpisaniem modelu i poziomu myślenia:
|
||||
|
||||
```bash
|
||||
openclaw cron add \
|
||||
@ -185,7 +195,7 @@ openclaw cron add \
|
||||
|
||||
## Webhooki
|
||||
|
||||
Brama może udostępniać punkty końcowe HTTP webhooków dla zewnętrznych wyzwalaczy. Włącz w konfiguracji:
|
||||
Gateway może udostępniać punkty końcowe HTTP Webhook dla zewnętrznych wyzwalaczy. Włącz w konfiguracji:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -208,7 +218,7 @@ Tokeny w ciągu zapytania są odrzucane.
|
||||
|
||||
### POST /hooks/wake
|
||||
|
||||
Umieść zdarzenie systemowe w kolejce dla sesji głównej:
|
||||
Umieszcza zdarzenie systemowe w kolejce dla sesji głównej:
|
||||
|
||||
```bash
|
||||
curl -X POST http://127.0.0.1:18789/hooks/wake \
|
||||
@ -222,7 +232,7 @@ curl -X POST http://127.0.0.1:18789/hooks/wake \
|
||||
|
||||
### POST /hooks/agent
|
||||
|
||||
Uruchom izolowaną turę agenta:
|
||||
Uruchamia izolowaną turę agenta:
|
||||
|
||||
```bash
|
||||
curl -X POST http://127.0.0.1:18789/hooks/agent \
|
||||
@ -235,21 +245,21 @@ Pola: `message` (wymagane), `name`, `agentId`, `wakeMode`, `deliver`, `channel`,
|
||||
|
||||
### Mapowane hooki (POST /hooks/\<name\>)
|
||||
|
||||
Niestandardowe nazwy hooków są rozstrzygane przez `hooks.mappings` w konfiguracji. Mapowania mogą przekształcać dowolne ładunki w działania `wake` lub `agent` za pomocą szablonów albo transformacji kodem.
|
||||
Niestandardowe nazwy hooków są rozwiązywane przez `hooks.mappings` w konfiguracji. Mapowania mogą przekształcać dowolne ładunki w działania `wake` lub `agent` za pomocą szablonów albo transformacji kodu.
|
||||
|
||||
### Bezpieczeństwo
|
||||
|
||||
- Utrzymuj punkty końcowe hooków za loopback, tailnetem lub zaufanym reverse proxy.
|
||||
- Używaj dedykowanego tokenu hooka; nie używaj ponownie tokenów uwierzytelniania bramy.
|
||||
- Utrzymuj `hooks.path` na dedykowanej podścieżce; `/` jest odrzucane.
|
||||
- Trzymaj punkty końcowe hooków za loopback, tailnet albo zaufanym reverse proxy.
|
||||
- Używaj dedykowanego tokenu hooka; nie używaj ponownie tokenów uwierzytelniania Gateway.
|
||||
- Utrzymuj `hooks.path` w dedykowanej podścieżce; `/` jest odrzucane.
|
||||
- Ustaw `hooks.allowedAgentIds`, aby ograniczyć jawne kierowanie `agentId`.
|
||||
- Pozostaw `hooks.allowRequestSessionKey=false`, chyba że potrzebujesz sesji wybieranych przez wywołującego.
|
||||
- Jeśli włączysz `hooks.allowRequestSessionKey`, ustaw też `hooks.allowedSessionKeyPrefixes`, aby ograniczyć dozwolone kształty kluczy sesji.
|
||||
- Ładunki hooków są domyślnie opakowane granicami bezpieczeństwa.
|
||||
- Zachowaj `hooks.allowRequestSessionKey=false`, chyba że potrzebujesz sesji wybieranych przez wywołującego.
|
||||
- Jeśli włączysz `hooks.allowRequestSessionKey`, ustaw także `hooks.allowedSessionKeyPrefixes`, aby ograniczyć dozwolone kształty kluczy sesji.
|
||||
- Ładunki hooków są domyślnie opakowywane granicami bezpieczeństwa.
|
||||
|
||||
## Integracja Gmail PubSub
|
||||
|
||||
Połącz wyzwalacze skrzynki odbiorczej Gmail z OpenClaw przez Google PubSub.
|
||||
Podłącz wyzwalacze skrzynki odbiorczej Gmail do OpenClaw przez Google PubSub.
|
||||
|
||||
**Wymagania wstępne**: CLI `gcloud`, `gog` (gogcli), włączone hooki OpenClaw, Tailscale dla publicznego punktu końcowego HTTPS.
|
||||
|
||||
@ -259,11 +269,11 @@ Połącz wyzwalacze skrzynki odbiorczej Gmail z OpenClaw przez Google PubSub.
|
||||
openclaw webhooks gmail setup --account openclaw@gmail.com
|
||||
```
|
||||
|
||||
To zapisuje konfigurację `hooks.gmail`, włącza preset Gmail i używa Tailscale Funnel dla punktu końcowego push.
|
||||
To zapisuje konfigurację `hooks.gmail`, włącza preset Gmaila i używa Tailscale Funnel dla punktu końcowego push.
|
||||
|
||||
### Automatyczne uruchamianie bramy
|
||||
### Automatyczny start Gateway
|
||||
|
||||
Gdy `hooks.enabled=true` i ustawiono `hooks.gmail.account`, brama uruchamia `gog gmail watch serve` przy starcie i automatycznie odnawia obserwację. Ustaw `OPENCLAW_SKIP_GMAIL_WATCHER=1`, aby zrezygnować.
|
||||
Gdy `hooks.enabled=true` i ustawione jest `hooks.gmail.account`, Gateway uruchamia przy starcie `gog gmail watch serve` i automatycznie odnawia obserwację. Ustaw `OPENCLAW_SKIP_GMAIL_WATCHER=1`, aby z tego zrezygnować.
|
||||
|
||||
### Ręczna jednorazowa konfiguracja
|
||||
|
||||
@ -337,11 +347,11 @@ Uwaga dotycząca nadpisania modelu:
|
||||
- `openclaw cron add|edit --model ...` zmienia wybrany model zadania.
|
||||
- Jeśli model jest dozwolony, dokładnie ten dostawca/model trafia do izolowanego
|
||||
uruchomienia agenta.
|
||||
- Jeśli nie jest dozwolony, cron wyświetla ostrzeżenie i wraca do wyboru modelu
|
||||
agenta/domyślnego modelu dla zadania.
|
||||
- Skonfigurowane łańcuchy awaryjne nadal mają zastosowanie, ale zwykłe nadpisanie `--model` bez
|
||||
jawnej listy awaryjnej dla zadania nie przechodzi już dalej do modelu głównego
|
||||
agenta jako cichego dodatkowego celu ponawiania.
|
||||
- Jeśli nie jest dozwolony, cron wyświetla ostrzeżenie i wraca do domyślnego
|
||||
wyboru modelu agenta dla tego zadania.
|
||||
- Skonfigurowane łańcuchy zapasowe nadal mają zastosowanie, ale zwykłe nadpisanie `--model`
|
||||
bez jawnej listy zapasowej dla zadania nie przechodzi już dalej do głównego modelu agenta
|
||||
jako cichego dodatkowego celu ponowienia.
|
||||
|
||||
## Konfiguracja
|
||||
|
||||
@ -365,11 +375,11 @@ Uwaga dotycząca nadpisania modelu:
|
||||
|
||||
Wyłącz cron: `cron.enabled: false` lub `OPENCLAW_SKIP_CRON=1`.
|
||||
|
||||
**Ponawianie dla zadań jednorazowych**: błędy przejściowe (limit szybkości, przeciążenie, sieć, błąd serwera) są ponawiane maksymalnie 3 razy z wykładniczym opóźnieniem. Błędy trwałe powodują natychmiastowe wyłączenie.
|
||||
**Ponowienia zadań jednorazowych**: błędy przejściowe (limit szybkości, przeciążenie, sieć, błąd serwera) są ponawiane maksymalnie 3 razy z wykładniczym opóźnieniem. Błędy trwałe powodują natychmiastowe wyłączenie.
|
||||
|
||||
**Ponawianie dla zadań cyklicznych**: wykładnicze opóźnienie (od 30 s do 60 min) między kolejnymi próbami. Opóźnienie resetuje się po następnym pomyślnym uruchomieniu.
|
||||
**Ponowienia zadań cyklicznych**: wykładnicze opóźnienie (od 30 s do 60 min) między ponowieniami. Opóźnienie resetuje się po następnym udanym uruchomieniu.
|
||||
|
||||
**Konserwacja**: `cron.sessionRetention` (domyślnie `24h`) usuwa wpisy sesji izolowanych uruchomień. `cron.runLog.maxBytes` / `cron.runLog.keepLines` automatycznie przycinają pliki dziennika uruchomień.
|
||||
**Konserwacja**: `cron.sessionRetention` (domyślnie `24h`) przycina wpisy sesji izolowanych uruchomień. `cron.runLog.maxBytes` / `cron.runLog.keepLines` automatycznie przycinają pliki dziennika uruchomień.
|
||||
|
||||
## Rozwiązywanie problemów
|
||||
|
||||
@ -388,32 +398,32 @@ openclaw doctor
|
||||
|
||||
### Cron się nie uruchamia
|
||||
|
||||
- Sprawdź `cron.enabled` i zmienną środowiskową `OPENCLAW_SKIP_CRON`.
|
||||
- Potwierdź, że brama działa w sposób ciągły.
|
||||
- Sprawdź `cron.enabled` oraz zmienną środowiskową `OPENCLAW_SKIP_CRON`.
|
||||
- Potwierdź, że Gateway działa nieprzerwanie.
|
||||
- Dla harmonogramów `cron` sprawdź strefę czasową (`--tz`) względem strefy czasowej hosta.
|
||||
- `reason: not-due` w wyniku uruchomienia oznacza, że ręczne uruchomienie zostało sprawdzone przez `openclaw cron run <jobId> --due` i zadanie nie było jeszcze wymagalne.
|
||||
- `reason: not-due` w danych wyjściowych uruchomienia oznacza, że ręczne uruchomienie zostało sprawdzone poleceniem `openclaw cron run <jobId> --due` i zadanie nie było jeszcze należne.
|
||||
|
||||
### Cron uruchomił się, ale nic nie dostarczono
|
||||
### Cron uruchomił się, ale nic nie zostało dostarczone
|
||||
|
||||
- Tryb dostarczania `none` oznacza, że nie należy oczekiwać żadnej zewnętrznej wiadomości.
|
||||
- Brakujący lub nieprawidłowy cel dostarczenia (`channel`/`to`) oznacza, że wysyłka została pominięta.
|
||||
- Błędy uwierzytelniania kanału (`unauthorized`, `Forbidden`) oznaczają, że dostarczenie zostało zablokowane przez poświadczenia.
|
||||
- Brakujący/nieprawidłowy cel dostarczania (`channel`/`to`) oznacza, że wysyłka została pominięta.
|
||||
- Błędy uwierzytelniania kanału (`unauthorized`, `Forbidden`) oznaczają, że dostarczanie zostało zablokowane przez poświadczenia.
|
||||
- Jeśli izolowane uruchomienie zwraca tylko cichy token (`NO_REPLY` / `no_reply`),
|
||||
OpenClaw pomija bezpośrednie dostarczenie wychodzące i pomija też awaryjną
|
||||
OpenClaw pomija bezpośrednie dostarczanie na zewnątrz, a także pomija zapasową
|
||||
ścieżkę podsumowania w kolejce, więc nic nie jest publikowane z powrotem na czacie.
|
||||
- Dla izolowanych zadań zarządzanych przez cron nie oczekuj, że agent użyje narzędzia wiadomości
|
||||
jako mechanizmu awaryjnego. Końcowym dostarczeniem zarządza wykonawca; `--no-deliver` zachowuje je
|
||||
jako wewnętrzne zamiast pozwalać na bezpośrednie wysłanie.
|
||||
- W przypadku izolowanych zadań zarządzanych przez cron nie oczekuj, że agent użyje narzędzia wiadomości
|
||||
jako rozwiązania zapasowego. Wykonawca odpowiada za końcowe dostarczenie; `--no-deliver` utrzymuje je
|
||||
wewnętrznie zamiast pozwalać na bezpośrednią wysyłkę.
|
||||
|
||||
### Pułapki związane ze strefą czasową
|
||||
|
||||
- Cron bez `--tz` używa strefy czasowej hosta bramy.
|
||||
- Cron bez `--tz` używa strefy czasowej hosta Gateway.
|
||||
- Harmonogramy `at` bez strefy czasowej są traktowane jako UTC.
|
||||
- `activeHours` heartbeat używa rozstrzygania skonfigurowanej strefy czasowej.
|
||||
- Heartbeat `activeHours` używa skonfigurowanego rozpoznawania strefy czasowej.
|
||||
|
||||
## Powiązane
|
||||
|
||||
- [Automatyzacja i zadania](/pl/automation) — przegląd wszystkich mechanizmów automatyzacji
|
||||
- [Zadania w tle](/pl/automation/tasks) — rejestr zadań dla wykonań crona
|
||||
- [Automatyzacja i zadania](/pl/automation) — wszystkie mechanizmy automatyzacji w skrócie
|
||||
- [Zadania w tle](/pl/automation/tasks) — rejestr zadań dla wykonań cron
|
||||
- [Heartbeat](/pl/gateway/heartbeat) — okresowe tury sesji głównej
|
||||
- [Strefa czasowa](/pl/concepts/timezone) — konfiguracja strefy czasowej
|
||||
|
||||
@ -1,43 +1,43 @@
|
||||
---
|
||||
read_when:
|
||||
- Konfigurowanie Slack lub debugowanie trybu socket/HTTP w Slack
|
||||
- Konfigurowanie Slack lub debugowanie trybu gniazda/HTTP Slacka
|
||||
summary: Konfiguracja Slack i zachowanie w czasie działania (Socket Mode + adresy URL żądań HTTP)
|
||||
title: Slack
|
||||
x-i18n:
|
||||
generated_at: "2026-04-08T06:02:03Z"
|
||||
generated_at: "2026-04-12T09:33:32Z"
|
||||
model: gpt-5.4
|
||||
provider: openai
|
||||
source_hash: cad132131ddce688517def7c14703ad314441c67aacc4cc2a2a721e1d1c01942
|
||||
source_hash: 4b80c1a612b8815c46c675b688639c207a481f367075996dde3858a83637313b
|
||||
source_path: channels/slack.md
|
||||
workflow: 15
|
||||
---
|
||||
|
||||
# Slack
|
||||
|
||||
Status: gotowy do użycia produkcyjnego dla DM-ów i kanałów przez integracje aplikacji Slack. Domyślnym trybem jest Socket Mode; obsługiwane są także adresy URL żądań HTTP.
|
||||
Status: gotowe do użycia produkcyjnego dla DM-ów i kanałów przez integracje aplikacji Slack. Domyślnym trybem jest Socket Mode; obsługiwane są również adresy URL żądań HTTP.
|
||||
|
||||
<CardGroup cols={3}>
|
||||
<Card title="Parowanie" icon="link" href="/pl/channels/pairing">
|
||||
DM-y Slack domyślnie używają trybu parowania.
|
||||
</Card>
|
||||
<Card title="Polecenia slash" icon="terminal" href="/pl/tools/slash-commands">
|
||||
Natywne działanie poleceń i katalog poleceń.
|
||||
Natywne zachowanie poleceń i katalog poleceń.
|
||||
</Card>
|
||||
<Card title="Rozwiązywanie problemów z kanałami" icon="wrench" href="/pl/channels/troubleshooting">
|
||||
Diagnostyka międzykanałowa i procedury naprawcze.
|
||||
<Card title="Rozwiązywanie problemów z kanałem" icon="wrench" href="/pl/channels/troubleshooting">
|
||||
Diagnostyka międzykanałowa i instrukcje naprawcze.
|
||||
</Card>
|
||||
</CardGroup>
|
||||
|
||||
## Szybka konfiguracja
|
||||
|
||||
<Tabs>
|
||||
<Tab title="Socket Mode (domyślnie)">
|
||||
<Tab title="Socket Mode (domyślny)">
|
||||
<Steps>
|
||||
<Step title="Utwórz nową aplikację Slack">
|
||||
W ustawieniach aplikacji Slack naciśnij przycisk **[Create New App](https://api.slack.com/apps/new)**:
|
||||
|
||||
- wybierz **from a manifest** i wybierz workspace dla swojej aplikacji
|
||||
- wklej [przykładowy manifest](#manifest-and-scope-checklist) z poniższej sekcji i kontynuuj tworzenie
|
||||
- wybierz **from a manifest** i wybierz obszar roboczy dla swojej aplikacji
|
||||
- wklej [przykładowy manifest](#manifest-and-scope-checklist) poniżej i kontynuuj tworzenie
|
||||
- wygeneruj **App-Level Token** (`xapp-...`) z `connections:write`
|
||||
- zainstaluj aplikację i skopiuj wyświetlony **Bot Token** (`xoxb-...`)
|
||||
</Step>
|
||||
@ -57,7 +57,7 @@ Status: gotowy do użycia produkcyjnego dla DM-ów i kanałów przez integracje
|
||||
}
|
||||
```
|
||||
|
||||
Zapasowe zmienne środowiskowe (tylko konto domyślne):
|
||||
Zmienna środowiskowa jako alternatywa (tylko konto domyślne):
|
||||
|
||||
```bash
|
||||
SLACK_APP_TOKEN=xapp-...
|
||||
@ -66,7 +66,7 @@ SLACK_BOT_TOKEN=xoxb-...
|
||||
|
||||
</Step>
|
||||
|
||||
<Step title="Uruchom gateway">
|
||||
<Step title="Uruchom Gateway">
|
||||
|
||||
```bash
|
||||
openclaw gateway
|
||||
@ -82,7 +82,7 @@ openclaw gateway
|
||||
<Step title="Utwórz nową aplikację Slack">
|
||||
W ustawieniach aplikacji Slack naciśnij przycisk **[Create New App](https://api.slack.com/apps/new)**:
|
||||
|
||||
- wybierz **from a manifest** i wybierz workspace dla swojej aplikacji
|
||||
- wybierz **from a manifest** i wybierz obszar roboczy dla swojej aplikacji
|
||||
- wklej [przykładowy manifest](#manifest-and-scope-checklist) i zaktualizuj adresy URL przed utworzeniem
|
||||
- zapisz **Signing Secret** do weryfikacji żądań
|
||||
- zainstaluj aplikację i skopiuj wyświetlony **Bot Token** (`xoxb-...`)
|
||||
@ -106,14 +106,14 @@ openclaw gateway
|
||||
```
|
||||
|
||||
<Note>
|
||||
Używaj unikalnych ścieżek webhooków dla wielu kont HTTP
|
||||
Używaj unikalnych ścieżek webhooków dla wielokontowego HTTP
|
||||
|
||||
Nadaj każdemu kontu inną wartość `webhookPath` (domyślnie `/slack/events`), aby rejestracje ze sobą nie kolidowały.
|
||||
Nadaj każdemu kontu odrębne `webhookPath` (domyślnie `/slack/events`), aby rejestracje nie kolidowały ze sobą.
|
||||
</Note>
|
||||
|
||||
</Step>
|
||||
|
||||
<Step title="Uruchom gateway">
|
||||
<Step title="Uruchom Gateway">
|
||||
|
||||
```bash
|
||||
openclaw gateway
|
||||
@ -128,13 +128,13 @@ openclaw gateway
|
||||
## Lista kontrolna manifestu i zakresów
|
||||
|
||||
<Tabs>
|
||||
<Tab title="Socket Mode (domyślnie)">
|
||||
<Tab title="Socket Mode (domyślny)">
|
||||
|
||||
```json
|
||||
{
|
||||
"display_information": {
|
||||
"name": "OpenClaw",
|
||||
"description": "Slack connector for OpenClaw"
|
||||
"description": "Łącznik Slack dla OpenClaw"
|
||||
},
|
||||
"features": {
|
||||
"bot_user": {
|
||||
@ -148,7 +148,7 @@ openclaw gateway
|
||||
"slash_commands": [
|
||||
{
|
||||
"command": "/openclaw",
|
||||
"description": "Send a message to OpenClaw",
|
||||
"description": "Wyślij wiadomość do OpenClaw",
|
||||
"should_escape": false
|
||||
}
|
||||
]
|
||||
@ -211,7 +211,7 @@ openclaw gateway
|
||||
{
|
||||
"display_information": {
|
||||
"name": "OpenClaw",
|
||||
"description": "Slack connector for OpenClaw"
|
||||
"description": "Łącznik Slack dla OpenClaw"
|
||||
},
|
||||
"features": {
|
||||
"bot_user": {
|
||||
@ -225,7 +225,7 @@ openclaw gateway
|
||||
"slash_commands": [
|
||||
{
|
||||
"command": "/openclaw",
|
||||
"description": "Send a message to OpenClaw",
|
||||
"description": "Wyślij wiadomość do OpenClaw",
|
||||
"should_escape": false,
|
||||
"url": "https://gateway-host.example.com/slack/events"
|
||||
}
|
||||
@ -289,11 +289,283 @@ openclaw gateway
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="Opcjonalne zakresy autorstwa (operacje zapisu)">
|
||||
Dodaj zakres bota `chat:write.customize`, jeśli chcesz, aby wiadomości wychodzące używały tożsamości aktywnego agenta (niestandardowa nazwa użytkownika i ikona) zamiast domyślnej tożsamości aplikacji Slack.
|
||||
### Dodatkowe ustawienia manifestu
|
||||
|
||||
Jeśli używasz ikony emoji, Slack oczekuje składni `:nazwa_emoji:`.
|
||||
Poniżej przedstawiono różne funkcje rozszerzające powyższe ustawienia domyślne.
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="Opcjonalne natywne polecenia slash">
|
||||
|
||||
Można użyć wielu [natywnych poleceń slash](#commands-and-slash-behavior) zamiast jednego skonfigurowanego polecenia, z pewnymi niuansami:
|
||||
|
||||
- Użyj `/agentstatus` zamiast `/status`, ponieważ polecenie `/status` jest zarezerwowane.
|
||||
- Jednocześnie można udostępnić nie więcej niż 25 poleceń slash.
|
||||
|
||||
Zastąp istniejącą sekcję `features.slash_commands` podzbiorem [dostępnych poleceń](/pl/tools/slash-commands#command-list):
|
||||
|
||||
<Tabs>
|
||||
<Tab title="Socket Mode (domyślny)">
|
||||
|
||||
```json
|
||||
"slash_commands": [
|
||||
{
|
||||
"command": "/new",
|
||||
"description": "Rozpocznij nową sesję",
|
||||
"usage_hint": "[model]"
|
||||
},
|
||||
{
|
||||
"command": "/reset",
|
||||
"description": "Zresetuj bieżącą sesję"
|
||||
},
|
||||
{
|
||||
"command": "/compact",
|
||||
"description": "Przeprowadź Compaction kontekstu sesji",
|
||||
"usage_hint": "[instructions]"
|
||||
},
|
||||
{
|
||||
"command": "/stop",
|
||||
"description": "Zatrzymaj bieżące uruchomienie"
|
||||
},
|
||||
{
|
||||
"command": "/session",
|
||||
"description": "Zarządzaj wygaśnięciem powiązania z wątkiem",
|
||||
"usage_hint": "idle <duration|off> lub max-age <duration|off>"
|
||||
},
|
||||
{
|
||||
"command": "/think",
|
||||
"description": "Ustaw poziom myślenia",
|
||||
"usage_hint": "<off|minimal|low|medium|high|xhigh>"
|
||||
},
|
||||
{
|
||||
"command": "/verbose",
|
||||
"description": "Przełącz szczegółowe wyjście",
|
||||
"usage_hint": "on|off|full"
|
||||
},
|
||||
{
|
||||
"command": "/fast",
|
||||
"description": "Pokaż lub ustaw tryb szybki",
|
||||
"usage_hint": "[status|on|off]"
|
||||
},
|
||||
{
|
||||
"command": "/reasoning",
|
||||
"description": "Przełącz widoczność rozumowania",
|
||||
"usage_hint": "[on|off|stream]"
|
||||
},
|
||||
{
|
||||
"command": "/elevated",
|
||||
"description": "Przełącz tryb podwyższony",
|
||||
"usage_hint": "[on|off|ask|full]"
|
||||
},
|
||||
{
|
||||
"command": "/exec",
|
||||
"description": "Pokaż lub ustaw domyślne wartości exec",
|
||||
"usage_hint": "host=<auto|sandbox|gateway|node> security=<deny|allowlist|full> ask=<off|on-miss|always> node=<id>"
|
||||
},
|
||||
{
|
||||
"command": "/model",
|
||||
"description": "Pokaż lub ustaw model",
|
||||
"usage_hint": "[name|#|status]"
|
||||
},
|
||||
{
|
||||
"command": "/models",
|
||||
"description": "Wyświetl providerów lub modele dla providera",
|
||||
"usage_hint": "[provider] [page] [limit=<n>|size=<n>|all]"
|
||||
},
|
||||
{
|
||||
"command": "/help",
|
||||
"description": "Pokaż krótkie podsumowanie pomocy"
|
||||
},
|
||||
{
|
||||
"command": "/commands",
|
||||
"description": "Pokaż wygenerowany katalog poleceń"
|
||||
},
|
||||
{
|
||||
"command": "/tools",
|
||||
"description": "Pokaż, czego bieżący agent może teraz używać",
|
||||
"usage_hint": "[compact|verbose]"
|
||||
},
|
||||
{
|
||||
"command": "/agentstatus",
|
||||
"description": "Pokaż status środowiska uruchomieniowego, w tym użycie/limit providera, jeśli są dostępne"
|
||||
},
|
||||
{
|
||||
"command": "/tasks",
|
||||
"description": "Wyświetl aktywne/ostatnie zadania w tle dla bieżącej sesji"
|
||||
},
|
||||
{
|
||||
"command": "/context",
|
||||
"description": "Wyjaśnij, jak składany jest kontekst",
|
||||
"usage_hint": "[list|detail|json]"
|
||||
},
|
||||
{
|
||||
"command": "/whoami",
|
||||
"description": "Pokaż tożsamość nadawcy"
|
||||
},
|
||||
{
|
||||
"command": "/skill",
|
||||
"description": "Uruchom umiejętność po nazwie",
|
||||
"usage_hint": "<name> [input]"
|
||||
},
|
||||
{
|
||||
"command": "/btw",
|
||||
"description": "Zadaj poboczne pytanie bez zmiany kontekstu sesji",
|
||||
"usage_hint": "<question>"
|
||||
},
|
||||
{
|
||||
"command": "/usage",
|
||||
"description": "Steruj stopką użycia lub pokaż podsumowanie kosztów",
|
||||
"usage_hint": "off|tokens|full|cost"
|
||||
}
|
||||
]
|
||||
```
|
||||
|
||||
</Tab>
|
||||
<Tab title="Adresy URL żądań HTTP">
|
||||
|
||||
```json
|
||||
"slash_commands": [
|
||||
{
|
||||
"command": "/new",
|
||||
"description": "Rozpocznij nową sesję",
|
||||
"usage_hint": "[model]",
|
||||
"url": "https://gateway-host.example.com/slack/events"
|
||||
},
|
||||
{
|
||||
"command": "/reset",
|
||||
"description": "Zresetuj bieżącą sesję",
|
||||
"url": "https://gateway-host.example.com/slack/events"
|
||||
},
|
||||
{
|
||||
"command": "/compact",
|
||||
"description": "Przeprowadź Compaction kontekstu sesji",
|
||||
"usage_hint": "[instructions]",
|
||||
"url": "https://gateway-host.example.com/slack/events"
|
||||
},
|
||||
{
|
||||
"command": "/stop",
|
||||
"description": "Zatrzymaj bieżące uruchomienie",
|
||||
"url": "https://gateway-host.example.com/slack/events"
|
||||
},
|
||||
{
|
||||
"command": "/session",
|
||||
"description": "Zarządzaj wygaśnięciem powiązania z wątkiem",
|
||||
"usage_hint": "idle <duration|off> lub max-age <duration|off>",
|
||||
"url": "https://gateway-host.example.com/slack/events"
|
||||
},
|
||||
{
|
||||
"command": "/think",
|
||||
"description": "Ustaw poziom myślenia",
|
||||
"usage_hint": "<off|minimal|low|medium|high|xhigh>",
|
||||
"url": "https://gateway-host.example.com/slack/events"
|
||||
},
|
||||
{
|
||||
"command": "/verbose",
|
||||
"description": "Przełącz szczegółowe wyjście",
|
||||
"usage_hint": "on|off|full",
|
||||
"url": "https://gateway-host.example.com/slack/events"
|
||||
},
|
||||
{
|
||||
"command": "/fast",
|
||||
"description": "Pokaż lub ustaw tryb szybki",
|
||||
"usage_hint": "[status|on|off]",
|
||||
"url": "https://gateway-host.example.com/slack/events"
|
||||
},
|
||||
{
|
||||
"command": "/reasoning",
|
||||
"description": "Przełącz widoczność rozumowania",
|
||||
"usage_hint": "[on|off|stream]",
|
||||
"url": "https://gateway-host.example.com/slack/events"
|
||||
},
|
||||
{
|
||||
"command": "/elevated",
|
||||
"description": "Przełącz tryb podwyższony",
|
||||
"usage_hint": "[on|off|ask|full]",
|
||||
"url": "https://gateway-host.example.com/slack/events"
|
||||
},
|
||||
{
|
||||
"command": "/exec",
|
||||
"description": "Pokaż lub ustaw domyślne wartości exec",
|
||||
"usage_hint": "host=<auto|sandbox|gateway|node> security=<deny|allowlist|full> ask=<off|on-miss|always> node=<id>",
|
||||
"url": "https://gateway-host.example.com/slack/events"
|
||||
},
|
||||
{
|
||||
"command": "/model",
|
||||
"description": "Pokaż lub ustaw model",
|
||||
"usage_hint": "[name|#|status]",
|
||||
"url": "https://gateway-host.example.com/slack/events"
|
||||
},
|
||||
{
|
||||
"command": "/models",
|
||||
"description": "Wyświetl providerów lub modele dla providera",
|
||||
"usage_hint": "[provider] [page] [limit=<n>|size=<n>|all]",
|
||||
"url": "https://gateway-host.example.com/slack/events"
|
||||
},
|
||||
{
|
||||
"command": "/help",
|
||||
"description": "Pokaż krótkie podsumowanie pomocy",
|
||||
"url": "https://gateway-host.example.com/slack/events"
|
||||
},
|
||||
{
|
||||
"command": "/commands",
|
||||
"description": "Pokaż wygenerowany katalog poleceń",
|
||||
"url": "https://gateway-host.example.com/slack/events"
|
||||
},
|
||||
{
|
||||
"command": "/tools",
|
||||
"description": "Pokaż, czego bieżący agent może teraz używać",
|
||||
"usage_hint": "[compact|verbose]",
|
||||
"url": "https://gateway-host.example.com/slack/events"
|
||||
},
|
||||
{
|
||||
"command": "/agentstatus",
|
||||
"description": "Pokaż status środowiska uruchomieniowego, w tym użycie/limit providera, jeśli są dostępne",
|
||||
"url": "https://gateway-host.example.com/slack/events"
|
||||
},
|
||||
{
|
||||
"command": "/tasks",
|
||||
"description": "Wyświetl aktywne/ostatnie zadania w tle dla bieżącej sesji",
|
||||
"url": "https://gateway-host.example.com/slack/events"
|
||||
},
|
||||
{
|
||||
"command": "/context",
|
||||
"description": "Wyjaśnij, jak składany jest kontekst",
|
||||
"usage_hint": "[list|detail|json]",
|
||||
"url": "https://gateway-host.example.com/slack/events"
|
||||
},
|
||||
{
|
||||
"command": "/whoami",
|
||||
"description": "Pokaż tożsamość nadawcy",
|
||||
"url": "https://gateway-host.example.com/slack/events"
|
||||
},
|
||||
{
|
||||
"command": "/skill",
|
||||
"description": "Uruchom Skills po nazwie",
|
||||
"usage_hint": "<name> [input]",
|
||||
"url": "https://gateway-host.example.com/slack/events"
|
||||
},
|
||||
{
|
||||
"command": "/btw",
|
||||
"description": "Zadaj poboczne pytanie bez zmiany kontekstu sesji",
|
||||
"usage_hint": "<question>",
|
||||
"url": "https://gateway-host.example.com/slack/events"
|
||||
},
|
||||
{
|
||||
"command": "/usage",
|
||||
"description": "Steruj stopką użycia lub pokaż podsumowanie kosztów",
|
||||
"usage_hint": "off|tokens|full|cost",
|
||||
"url": "https://gateway-host.example.com/slack/events"
|
||||
}
|
||||
]
|
||||
```
|
||||
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="Opcjonalne zakresy autorstwa (operacje zapisu)">
|
||||
Dodaj zakres bota `chat:write.customize`, jeśli chcesz, aby wiadomości wychodzące używały tożsamości aktywnego agenta (niestandardowej nazwy użytkownika i ikony) zamiast domyślnej tożsamości aplikacji Slack.
|
||||
|
||||
Jeśli używasz ikony emoji, Slack oczekuje składni `:emoji_name:`.
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="Opcjonalne zakresy tokena użytkownika (operacje odczytu)">
|
||||
@ -305,7 +577,7 @@ openclaw gateway
|
||||
- `reactions:read`
|
||||
- `pins:read`
|
||||
- `emoji:read`
|
||||
- `search:read` (jeśli korzystasz z odczytów przez wyszukiwarkę Slack)
|
||||
- `search:read` (jeśli korzystasz z odczytów wyszukiwania Slacka)
|
||||
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
@ -316,38 +588,38 @@ openclaw gateway
|
||||
- Tryb HTTP wymaga `botToken` + `signingSecret`.
|
||||
- `botToken`, `appToken`, `signingSecret` i `userToken` akceptują zwykłe
|
||||
ciągi znaków lub obiekty SecretRef.
|
||||
- Tokeny z konfiguracji mają pierwszeństwo przed zapasowymi wartościami z env.
|
||||
- Zapasowe wartości env `SLACK_BOT_TOKEN` / `SLACK_APP_TOKEN` dotyczą tylko konta domyślnego.
|
||||
- `userToken` (`xoxp-...`) jest dostępny tylko w konfiguracji (bez zapasowej wartości env) i domyślnie działa w trybie tylko do odczytu (`userTokenReadOnly: true`).
|
||||
- Tokeny z konfiguracji zastępują alternatywę ze zmiennych środowiskowych.
|
||||
- Alternatywa ze zmiennych środowiskowych `SLACK_BOT_TOKEN` / `SLACK_APP_TOKEN` dotyczy tylko konta domyślnego.
|
||||
- `userToken` (`xoxp-...`) jest dostępny tylko w konfiguracji (bez alternatywy ze zmiennych środowiskowych) i domyślnie działa w trybie tylko do odczytu (`userTokenReadOnly: true`).
|
||||
|
||||
Zachowanie migawki statusu:
|
||||
|
||||
- Inspekcja konta Slack śledzi pola `*Source` i `*Status`
|
||||
dla poszczególnych poświadczeń (`botToken`, `appToken`, `signingSecret`, `userToken`).
|
||||
dla każdego poświadczenia (`botToken`, `appToken`, `signingSecret`, `userToken`).
|
||||
- Status ma wartość `available`, `configured_unavailable` lub `missing`.
|
||||
- `configured_unavailable` oznacza, że konto jest skonfigurowane przez SecretRef
|
||||
lub inne niejawne źródło sekretów, ale bieżąca ścieżka polecenia/runtime
|
||||
lub inne niejawne źródło sekretu, ale bieżąca ścieżka polecenia/środowiska uruchomieniowego
|
||||
nie mogła rozwiązać rzeczywistej wartości.
|
||||
- W trybie HTTP uwzględniane jest `signingSecretStatus`; w Socket Mode
|
||||
wymagana para to `botTokenStatus` + `appTokenStatus`.
|
||||
|
||||
<Tip>
|
||||
W przypadku działań/odczytów katalogu można preferować token użytkownika, jeśli jest skonfigurowany. Do zapisów nadal preferowany jest token bota; zapisy tokenem użytkownika są dozwolone tylko wtedy, gdy `userTokenReadOnly: false` i token bota jest niedostępny.
|
||||
W przypadku działań/odczytów katalogu token użytkownika może być preferowany, jeśli jest skonfigurowany. W przypadku zapisów nadal preferowany jest token bota; zapisy tokenem użytkownika są dozwolone tylko wtedy, gdy `userTokenReadOnly: false`, a token bota jest niedostępny.
|
||||
</Tip>
|
||||
|
||||
## Działania i bramki
|
||||
|
||||
Działania Slack są kontrolowane przez `channels.slack.actions.*`.
|
||||
|
||||
Dostępne grupy działań w bieżącym zestawie narzędzi Slack:
|
||||
Dostępne grupy działań w bieżących narzędziach Slack:
|
||||
|
||||
| Grupa | Domyślnie |
|
||||
| ---------- | --------- |
|
||||
| messages | włączone |
|
||||
| reactions | włączone |
|
||||
| pins | włączone |
|
||||
| memberInfo | włączone |
|
||||
| emojiList | włączone |
|
||||
| Group | Default |
|
||||
| ---------- | ------- |
|
||||
| messages | enabled |
|
||||
| reactions | enabled |
|
||||
| pins | enabled |
|
||||
| memberInfo | enabled |
|
||||
| emojiList | enabled |
|
||||
|
||||
Bieżące działania na wiadomościach Slack obejmują `send`, `upload-file`, `download-file`, `read`, `edit`, `delete`, `pin`, `unpin`, `list-pins`, `member-info` i `emoji-list`.
|
||||
|
||||
@ -355,20 +627,20 @@ Bieżące działania na wiadomościach Slack obejmują `send`, `upload-file`, `d
|
||||
|
||||
<Tabs>
|
||||
<Tab title="Zasady DM">
|
||||
`channels.slack.dmPolicy` kontroluje dostęp do DM-ów (starsza nazwa: `channels.slack.dm.policy`):
|
||||
`channels.slack.dmPolicy` kontroluje dostęp do DM (starsza wersja: `channels.slack.dm.policy`):
|
||||
|
||||
- `pairing` (domyślnie)
|
||||
- `allowlist`
|
||||
- `open` (wymaga, aby `channels.slack.allowFrom` zawierało `"*"`; starsza nazwa: `channels.slack.dm.allowFrom`)
|
||||
- `open` (wymaga, aby `channels.slack.allowFrom` zawierało `"*"`; starsza wersja: `channels.slack.dm.allowFrom`)
|
||||
- `disabled`
|
||||
|
||||
Flagi DM:
|
||||
|
||||
- `dm.enabled` (domyślnie true)
|
||||
- `channels.slack.allowFrom` (zalecane)
|
||||
- `dm.allowFrom` (starsza nazwa)
|
||||
- `dm.groupEnabled` (DM-y grupowe domyślnie false)
|
||||
- `dm.groupChannels` (opcjonalna allowlista MPIM)
|
||||
- `channels.slack.allowFrom` (preferowane)
|
||||
- `dm.allowFrom` (starsza wersja)
|
||||
- `dm.groupEnabled` (grupowe DM domyślnie false)
|
||||
- `dm.groupChannels` (opcjonalna lista dozwolonych MPIM)
|
||||
|
||||
Priorytet dla wielu kont:
|
||||
|
||||
@ -376,7 +648,7 @@ Bieżące działania na wiadomościach Slack obejmują `send`, `upload-file`, `d
|
||||
- Nazwane konta dziedziczą `channels.slack.allowFrom`, gdy ich własne `allowFrom` nie jest ustawione.
|
||||
- Nazwane konta nie dziedziczą `channels.slack.accounts.default.allowFrom`.
|
||||
|
||||
Parowanie w DM-ach używa `openclaw pairing approve slack <code>`.
|
||||
Parowanie w DM używa `openclaw pairing approve slack <code>`.
|
||||
|
||||
</Tab>
|
||||
|
||||
@ -387,98 +659,98 @@ Bieżące działania na wiadomościach Slack obejmują `send`, `upload-file`, `d
|
||||
- `allowlist`
|
||||
- `disabled`
|
||||
|
||||
Allowlista kanałów znajduje się w `channels.slack.channels` i powinna używać stabilnych identyfikatorów kanałów.
|
||||
Lista dozwolonych kanałów znajduje się pod `channels.slack.channels` i powinna używać stabilnych identyfikatorów kanałów.
|
||||
|
||||
Uwaga dotycząca runtime: jeśli `channels.slack` jest całkowicie nieobecne (konfiguracja tylko przez env), runtime przechodzi na `groupPolicy="allowlist"` i zapisuje ostrzeżenie w logach (nawet jeśli ustawiono `channels.defaults.groupPolicy`).
|
||||
Uwaga dotycząca środowiska uruchomieniowego: jeśli `channels.slack` całkowicie nie istnieje (konfiguracja tylko przez zmienne środowiskowe), środowisko uruchomieniowe przełącza się na `groupPolicy="allowlist"` i zapisuje ostrzeżenie w logach (nawet jeśli ustawiono `channels.defaults.groupPolicy`).
|
||||
|
||||
Rozpoznawanie nazw/ID:
|
||||
Rozwiązywanie nazw/identyfikatorów:
|
||||
|
||||
- wpisy allowlisty kanałów i allowlisty DM są rozwiązywane przy starcie, gdy dostęp tokena na to pozwala
|
||||
- nierozwiązane wpisy nazw kanałów pozostają w konfiguracji, ale są domyślnie ignorowane przy routingu
|
||||
- autoryzacja przychodząca i routing kanałów domyślnie działają najpierw po ID; bezpośrednie dopasowanie nazwy użytkownika/slugu wymaga `channels.slack.dangerouslyAllowNameMatching: true`
|
||||
- wpisy listy dozwolonych kanałów i wpisy listy dozwolonych DM są rozwiązywane podczas uruchamiania, gdy pozwala na to dostęp tokena
|
||||
- nierozwiązane wpisy nazw kanałów są zachowywane zgodnie z konfiguracją, ale domyślnie ignorowane przez routing
|
||||
- autoryzacja przychodząca i routing kanałów domyślnie opierają się najpierw na identyfikatorach; bezpośrednie dopasowanie nazwy użytkownika/sluga wymaga `channels.slack.dangerouslyAllowNameMatching: true`
|
||||
|
||||
</Tab>
|
||||
|
||||
<Tab title="Wzmianki i użytkownicy kanałów">
|
||||
Wiadomości kanałowe są domyślnie bramkowane wzmianką.
|
||||
<Tab title="Wzmianki i użytkownicy kanału">
|
||||
Wiadomości na kanałach są domyślnie ograniczone wzmiankami.
|
||||
|
||||
Źródła wzmianki:
|
||||
Źródła wzmianek:
|
||||
|
||||
- jawna wzmianka o aplikacji (`<@botId>`)
|
||||
- wzorce regex wzmianki (`agents.list[].groupChat.mentionPatterns`, zapasowo `messages.groupChat.mentionPatterns`)
|
||||
- niejawne zachowanie wątku z odpowiedzią do bota (wyłączone, gdy `thread.requireExplicitMention` ma wartość `true`)
|
||||
- wzorce regex dla wzmianek (`agents.list[].groupChat.mentionPatterns`, alternatywnie `messages.groupChat.mentionPatterns`)
|
||||
- niejawne zachowanie odpowiedzi w wątku do bota (wyłączone, gdy `thread.requireExplicitMention` ma wartość `true`)
|
||||
|
||||
Kontrole per kanał (`channels.slack.channels.<id>`; nazwy tylko przez rozpoznanie przy starcie lub `dangerouslyAllowNameMatching`):
|
||||
Kontrolki per kanał (`channels.slack.channels.<id>`; nazwy tylko przez rozwiązywanie podczas uruchamiania lub `dangerouslyAllowNameMatching`):
|
||||
|
||||
- `requireMention`
|
||||
- `users` (allowlista)
|
||||
- `users` (lista dozwolonych)
|
||||
- `allowBots`
|
||||
- `skills`
|
||||
- `systemPrompt`
|
||||
- `tools`, `toolsBySender`
|
||||
- format klucza `toolsBySender`: `id:`, `e164:`, `username:`, `name:` lub wildcard `"*"`
|
||||
(starsze klucze bez prefiksu nadal mapują się tylko na `id:`)
|
||||
- format klucza `toolsBySender`: `id:`, `e164:`, `username:`, `name:` lub symbol wieloznaczny `"*"`
|
||||
(starsze klucze bez prefiksu nadal mapują się tylko do `id:`)
|
||||
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
## Wątki, sesje i tagi odpowiedzi
|
||||
|
||||
- DM-y są routowane jako `direct`; kanały jako `channel`; MPIM-y jako `group`.
|
||||
- Przy domyślnym `session.dmScope=main` DM-y Slack zwijają się do głównej sesji agenta.
|
||||
- DM są routowane jako `direct`; kanały jako `channel`; MPIM jako `group`.
|
||||
- Przy domyślnym `session.dmScope=main` DM-y Slack są łączone do głównej sesji agenta.
|
||||
- Sesje kanałów: `agent:<agentId>:slack:channel:<channelId>`.
|
||||
- Odpowiedzi we wątkach mogą tworzyć sufiksy sesji wątku (`:thread:<threadTs>`), gdy ma to zastosowanie.
|
||||
- Domyślną wartością `channels.slack.thread.historyScope` jest `thread`; domyślną wartością `thread.inheritParent` jest `false`.
|
||||
- `channels.slack.thread.initialHistoryLimit` kontroluje, ile istniejących wiadomości z wątku jest pobieranych przy rozpoczęciu nowej sesji wątku (domyślnie `20`; ustaw `0`, aby wyłączyć).
|
||||
- `channels.slack.thread.requireExplicitMention` (domyślnie `false`): gdy ma wartość `true`, wyłącza niejawne wzmianki w wątkach, więc bot odpowiada tylko na jawne wzmianki `@bot` wewnątrz wątków, nawet jeśli bot już uczestniczył w wątku. Bez tego odpowiedzi w wątku, w którym uczestniczył bot, omijają bramkowanie `requireMention`.
|
||||
- Odpowiedzi w wątkach mogą tworzyć sufiksy sesji wątku (`:thread:<threadTs>`) tam, gdzie ma to zastosowanie.
|
||||
- Domyślne `channels.slack.thread.historyScope` to `thread`; domyślne `thread.inheritParent` to `false`.
|
||||
- `channels.slack.thread.initialHistoryLimit` kontroluje, ile istniejących wiadomości z wątku jest pobieranych przy uruchamianiu nowej sesji wątku (domyślnie `20`; ustaw `0`, aby wyłączyć).
|
||||
- `channels.slack.thread.requireExplicitMention` (domyślnie `false`): gdy ma wartość `true`, wycisza niejawne wzmianki w wątku, tak aby bot odpowiadał tylko na jawne wzmianki `@bot` wewnątrz wątków, nawet jeśli bot już brał udział w wątku. Bez tego odpowiedzi w wątku, w którym uczestniczył bot, omijają bramkowanie `requireMention`.
|
||||
|
||||
Kontrole wątkowania odpowiedzi:
|
||||
Kontrolki odpowiedzi w wątkach:
|
||||
|
||||
- `channels.slack.replyToMode`: `off|first|all|batched` (domyślnie `off`)
|
||||
- `channels.slack.replyToModeByChatType`: per `direct|group|channel`
|
||||
- starsza wartość zapasowa dla czatów bezpośrednich: `channels.slack.dm.replyToMode`
|
||||
- starsza alternatywa dla czatów bezpośrednich: `channels.slack.dm.replyToMode`
|
||||
|
||||
Obsługiwane są ręczne tagi odpowiedzi:
|
||||
|
||||
- `[[reply_to_current]]`
|
||||
- `[[reply_to:<id>]]`
|
||||
|
||||
Uwaga: `replyToMode="off"` wyłącza **całe** wątkowanie odpowiedzi w Slack, w tym jawne tagi `[[reply_to_*]]`. Różni się to od Telegram, gdzie jawne tagi są nadal honorowane w trybie `"off"`. Ta różnica wynika z modeli wątków na platformach: w Slack wątki ukrywają wiadomości przed kanałem, podczas gdy odpowiedzi w Telegram pozostają widoczne w głównym przepływie czatu.
|
||||
Uwaga: `replyToMode="off"` wyłącza **całe** odpowiadanie w wątkach w Slack, w tym jawne tagi `[[reply_to_*]]`. Różni się to od Telegram, gdzie jawne tagi są nadal honorowane w trybie `"off"`. Ta różnica odzwierciedla modele wątków na tych platformach: w Slack wątki ukrywają wiadomości z kanału, podczas gdy odpowiedzi w Telegram pozostają widoczne w głównym przepływie czatu.
|
||||
|
||||
## Reakcje potwierdzenia
|
||||
## Reakcje potwierdzające
|
||||
|
||||
`ackReaction` wysyła emoji potwierdzenia, gdy OpenClaw przetwarza przychodzącą wiadomość.
|
||||
`ackReaction` wysyła emoji potwierdzenia, gdy OpenClaw przetwarza wiadomość przychodzącą.
|
||||
|
||||
Kolejność rozstrzygania:
|
||||
Kolejność rozwiązywania:
|
||||
|
||||
- `channels.slack.accounts.<accountId>.ackReaction`
|
||||
- `channels.slack.ackReaction`
|
||||
- `messages.ackReaction`
|
||||
- zapasowo emoji tożsamości agenta (`agents.list[].identity.emoji`, w przeciwnym razie "👀")
|
||||
- alternatywa emoji z tożsamości agenta (`agents.list[].identity.emoji`, w przeciwnym razie `"👀"`)
|
||||
|
||||
Uwagi:
|
||||
|
||||
- Slack oczekuje shortcode'ów (na przykład `"eyes"`).
|
||||
- Slack oczekuje shortcode’ów (na przykład `"eyes"`).
|
||||
- Użyj `""`, aby wyłączyć reakcję dla konta Slack lub globalnie.
|
||||
|
||||
## Strumieniowanie tekstu
|
||||
|
||||
`channels.slack.streaming` kontroluje zachowanie podglądu na żywo:
|
||||
|
||||
- `off`: wyłącza strumieniowanie podglądu na żywo.
|
||||
- `partial` (domyślnie): zastępuje tekst podglądu najnowszym częściowym wynikiem.
|
||||
- `block`: dodaje porcjowane aktualizacje podglądu.
|
||||
- `progress`: pokazuje tekst statusu postępu podczas generowania, a następnie wysyła tekst końcowy.
|
||||
- `off`: wyłącz strumieniowanie podglądu na żywo.
|
||||
- `partial` (domyślnie): zastępuj tekst podglądu najnowszym częściowym wynikiem.
|
||||
- `block`: dołączaj porcjowane aktualizacje podglądu.
|
||||
- `progress`: pokazuj tekst statusu postępu podczas generowania, a następnie wyślij tekst końcowy.
|
||||
|
||||
`channels.slack.streaming.nativeTransport` kontroluje natywne strumieniowanie tekstu Slack, gdy `channels.slack.streaming.mode` ma wartość `partial` (domyślnie: `true`).
|
||||
|
||||
- Aby pojawiło się natywne strumieniowanie tekstu i status wątku asystenta Slack, musi być dostępny wątek odpowiedzi. Wybór wątku nadal podlega `replyToMode`.
|
||||
- Główne wiadomości w kanałach i czatach grupowych nadal mogą używać zwykłego podglądu wersji roboczej, gdy natywne strumieniowanie jest niedostępne.
|
||||
- DM-y Slack na najwyższym poziomie domyślnie pozostają poza wątkiem, więc nie pokazują podglądu w stylu wątku; użyj odpowiedzi we wątku lub `typingReaction`, jeśli chcesz tam widocznego postępu.
|
||||
- Media i ładunki inne niż tekstowe wracają do zwykłego dostarczania.
|
||||
- Aby pojawiło się natywne strumieniowanie tekstu i status wątku asystenta Slack, musi być dostępny wątek odpowiedzi. Wybór wątku nadal zależy od `replyToMode`.
|
||||
- Główne wiadomości na kanałach i czatach grupowych nadal mogą używać zwykłego podglądu szkicu, gdy natywne strumieniowanie jest niedostępne.
|
||||
- DM-y Slack najwyższego poziomu domyślnie pozostają poza wątkiem, więc nie pokazują podglądu w stylu wątku; użyj odpowiedzi w wątku lub `typingReaction`, jeśli chcesz tam widocznego postępu.
|
||||
- Media i ładunki inne niż tekst wracają do zwykłego dostarczania.
|
||||
- Jeśli strumieniowanie nie powiedzie się w trakcie odpowiedzi, OpenClaw wraca do zwykłego dostarczania dla pozostałych ładunków.
|
||||
|
||||
Użyj podglądu wersji roboczej zamiast natywnego strumieniowania tekstu Slack:
|
||||
Użyj podglądu szkicu zamiast natywnego strumieniowania tekstu Slack:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -499,41 +771,41 @@ Starsze klucze:
|
||||
- wartość logiczna `channels.slack.streaming` jest automatycznie migrowana do `channels.slack.streaming.mode` i `channels.slack.streaming.nativeTransport`.
|
||||
- starsze `channels.slack.nativeStreaming` jest automatycznie migrowane do `channels.slack.streaming.nativeTransport`.
|
||||
|
||||
## Zapasowa reakcja pisania
|
||||
## Alternatywa reakcji pisania
|
||||
|
||||
`typingReaction` dodaje tymczasową reakcję do przychodzącej wiadomości Slack, gdy OpenClaw przetwarza odpowiedź, a następnie usuwa ją po zakończeniu działania. Jest to najbardziej przydatne poza odpowiedziami we wątkach, które używają domyślnego wskaźnika statusu „pisze...”.
|
||||
`typingReaction` dodaje tymczasową reakcję do przychodzącej wiadomości Slack, gdy OpenClaw przetwarza odpowiedź, a następnie usuwa ją po zakończeniu uruchomienia. Jest to najbardziej przydatne poza odpowiedziami w wątkach, które używają domyślnego wskaźnika statusu „is typing...”.
|
||||
|
||||
Kolejność rozstrzygania:
|
||||
Kolejność rozwiązywania:
|
||||
|
||||
- `channels.slack.accounts.<accountId>.typingReaction`
|
||||
- `channels.slack.typingReaction`
|
||||
|
||||
Uwagi:
|
||||
|
||||
- Slack oczekuje shortcode'ów (na przykład `"hourglass_flowing_sand"`).
|
||||
- Reakcja jest typu best-effort, a próba jej usunięcia jest wykonywana automatycznie po zakończeniu odpowiedzi lub ścieżki błędu.
|
||||
- Slack oczekuje shortcode’ów (na przykład `"hourglass_flowing_sand"`).
|
||||
- Reakcja jest realizowana metodą best-effort, a po zakończeniu odpowiedzi lub ścieżki błędu automatycznie podejmowana jest próba jej usunięcia.
|
||||
|
||||
## Media, dzielenie na fragmenty i dostarczanie
|
||||
## Media, dzielenie na części i dostarczanie
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="Załączniki przychodzące">
|
||||
Załączniki plików Slack są pobierane z prywatnych adresów URL hostowanych przez Slack (przepływ żądań uwierzytelnianych tokenem) i zapisywane w magazynie mediów, jeśli pobranie się powiedzie i pozwalają na to limity rozmiaru.
|
||||
Załączniki plikowe Slack są pobierane z prywatnych adresów URL hostowanych przez Slack (przepływ żądania uwierzytelnianego tokenem) i zapisywane w magazynie mediów, gdy pobieranie się powiedzie i pozwalają na to limity rozmiaru.
|
||||
|
||||
Domyślny limit rozmiaru danych przychodzących w runtime to `20MB`, chyba że zostanie nadpisany przez `channels.slack.mediaMaxMb`.
|
||||
Domyślny limit rozmiaru wejściowego w środowisku uruchomieniowym to `20MB`, chyba że zostanie nadpisany przez `channels.slack.mediaMaxMb`.
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Tekst i pliki wychodzące">
|
||||
- fragmenty tekstu używają `channels.slack.textChunkLimit` (domyślnie 4000)
|
||||
- `channels.slack.chunkMode="newline"` włącza dzielenie najpierw po akapitach
|
||||
- wysyłanie plików używa API przesyłania Slack i może zawierać odpowiedzi we wątkach (`thread_ts`)
|
||||
- limit mediów wychodzących stosuje `channels.slack.mediaMaxMb`, jeśli jest skonfigurowany; w przeciwnym razie wysyłanie przez kanały używa domyślnych wartości typu MIME z pipeline'u mediów
|
||||
- części tekstu używają `channels.slack.textChunkLimit` (domyślnie 4000)
|
||||
- `channels.slack.chunkMode="newline"` włącza dzielenie z priorytetem akapitów
|
||||
- wysyłanie plików używa API przesyłania Slack i może obejmować odpowiedzi w wątku (`thread_ts`)
|
||||
- limit mediów wychodzących jest zgodny z `channels.slack.mediaMaxMb`, jeśli jest skonfigurowany; w przeciwnym razie wysyłki kanałowe używają domyślnych wartości typu MIME z potoku mediów
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Cele dostarczania">
|
||||
Preferowane cele jawne:
|
||||
Preferowane jawne cele:
|
||||
|
||||
- `user:<id>` dla DM-ów
|
||||
- `user:<id>` dla DM
|
||||
- `channel:<id>` dla kanałów
|
||||
|
||||
DM-y Slack są otwierane przez API konwersacji Slack podczas wysyłania do celów użytkownika.
|
||||
@ -543,30 +815,37 @@ Uwagi:
|
||||
|
||||
## Polecenia i zachowanie slash
|
||||
|
||||
- Natywny tryb automatyczny poleceń jest **wyłączony** dla Slack (`commands.native: "auto"` nie włącza natywnych poleceń Slack).
|
||||
- Włącz natywne handlery poleceń Slack przez `channels.slack.commands.native: true` (lub globalne `commands.native: true`).
|
||||
- Gdy natywne polecenia są włączone, zarejestruj pasujące polecenia slash w Slack (`/<command>`), z jednym wyjątkiem:
|
||||
- zarejestruj `/agentstatus` dla polecenia statusu (Slack rezerwuje `/status`)
|
||||
- Jeśli natywne polecenia nie są włączone, możesz uruchomić pojedyncze skonfigurowane polecenie slash przez `channels.slack.slashCommand`.
|
||||
- Natywne menu argumentów dostosowują teraz strategię renderowania:
|
||||
- do 5 opcji: bloki przycisków
|
||||
- 6-100 opcji: statyczne menu wyboru
|
||||
- ponad 100 opcji: wybór zewnętrzny z asynchronicznym filtrowaniem opcji, gdy dostępne są handlery opcji interaktywności
|
||||
- jeśli zakodowane wartości opcji przekraczają limity Slack, przepływ wraca do przycisków
|
||||
- Dla długich ładunków opcji menu argumentów poleceń slash używają okna potwierdzenia przed wysłaniem wybranej wartości.
|
||||
|
||||
Domyślne ustawienia polecenia slash:
|
||||
Polecenia slash pojawiają się w Slack jako jedno skonfigurowane polecenie albo wiele natywnych poleceń. Skonfiguruj `channels.slack.slashCommand`, aby zmienić domyślne ustawienia poleceń:
|
||||
|
||||
- `enabled: false`
|
||||
- `name: "openclaw"`
|
||||
- `sessionPrefix: "slack:slash"`
|
||||
- `ephemeral: true`
|
||||
|
||||
Sesje slash używają izolowanych kluczy:
|
||||
```txt
|
||||
/openclaw /help
|
||||
```
|
||||
|
||||
- `agent:<agentId>:slack:slash:<userId>`
|
||||
Natywne polecenia wymagają [dodatkowych ustawień manifestu](#additional-manifest-settings) w aplikacji Slack i są włączane przez `channels.slack.commands.native: true` lub zamiast tego przez `commands.native: true` w konfiguracjach globalnych.
|
||||
|
||||
i nadal kierują wykonanie polecenia względem sesji docelowej konwersacji (`CommandTargetSessionKey`).
|
||||
- Tryb automatyczny natywnych poleceń jest **wyłączony** dla Slack, więc `commands.native: "auto"` nie włącza natywnych poleceń Slack.
|
||||
|
||||
```txt
|
||||
/help
|
||||
```
|
||||
|
||||
Natywne menu argumentów używają adaptacyjnej strategii renderowania, która pokazuje modal potwierdzenia przed wysłaniem wybranej wartości opcji:
|
||||
|
||||
- do 5 opcji: bloki przycisków
|
||||
- 6-100 opcji: statyczne menu wyboru
|
||||
- więcej niż 100 opcji: zewnętrzny wybór z asynchronicznym filtrowaniem opcji, gdy dostępne są handlery opcji interaktywności
|
||||
- przekroczone limity Slack: zakodowane wartości opcji wracają do przycisków
|
||||
|
||||
```txt
|
||||
/think
|
||||
```
|
||||
|
||||
Sesje slash używają odizolowanych kluczy, takich jak `agent:<agentId>:slack:slash:<userId>`, i nadal kierują wykonania poleceń do docelowej sesji konwersacji przy użyciu `CommandTargetSessionKey`.
|
||||
|
||||
## Odpowiedzi interaktywne
|
||||
|
||||
@ -604,41 +883,40 @@ Lub włącz ją tylko dla jednego konta Slack:
|
||||
}
|
||||
```
|
||||
|
||||
Po włączeniu agenci mogą emitować dyrektywy odpowiedzi tylko dla Slack:
|
||||
Gdy ta funkcja jest włączona, agenci mogą emitować dyrektywy odpowiedzi tylko dla Slack:
|
||||
|
||||
- `[[slack_buttons: Approve:approve, Reject:reject]]`
|
||||
- `[[slack_select: Choose a target | Canary:canary, Production:production]]`
|
||||
|
||||
Te dyrektywy są kompilowane do Slack Block Kit i kierują kliknięcia lub wybory z powrotem przez istniejącą ścieżkę zdarzeń interakcji Slack.
|
||||
Dyrektywy te są kompilowane do Slack Block Kit i kierują kliknięcia lub wybory z powrotem przez istniejącą ścieżkę zdarzeń interakcji Slack.
|
||||
|
||||
Uwagi:
|
||||
|
||||
- To jest interfejs specyficzny dla Slack. Inne kanały nie tłumaczą dyrektyw Slack Block Kit na własne systemy przycisków.
|
||||
- Interaktywne wartości callbacków są generowanymi przez OpenClaw niejawnymi tokenami, a nie surowymi wartościami tworzonymi przez agenta.
|
||||
- Jeśli wygenerowane bloki interaktywne przekroczyłyby limity Slack Block Kit, OpenClaw wraca do oryginalnej odpowiedzi tekstowej zamiast wysyłać nieprawidłowy ładunek bloków.
|
||||
- Jest to interfejs specyficzny dla Slack. Inne kanały nie tłumaczą dyrektyw Slack Block Kit na własne systemy przycisków.
|
||||
- Wartości interaktywnych callbacków to niejawne tokeny generowane przez OpenClaw, a nie surowe wartości tworzone przez agenta.
|
||||
- Jeśli wygenerowane interaktywne bloki przekroczyłyby limity Slack Block Kit, OpenClaw wraca do oryginalnej odpowiedzi tekstowej zamiast wysyłać nieprawidłowy ładunek blocks.
|
||||
|
||||
## Zatwierdzenia exec w Slack
|
||||
|
||||
Slack może działać jako natywny klient zatwierdzeń z interaktywnymi przyciskami i interakcjami, zamiast wracać do Web UI lub terminala.
|
||||
Slack może działać jako natywny klient zatwierdzeń z interaktywnymi przyciskami i interakcjami, zamiast wracać do interfejsu Web UI lub terminala.
|
||||
|
||||
- Zatwierdzenia exec używają `channels.slack.execApprovals.*` do natywnego routingu DM/kanałów.
|
||||
- Zatwierdzenia pluginów mogą nadal być rozwiązywane przez tę samą natywną powierzchnię przycisków Slack, gdy żądanie już trafia do Slack, a rodzaj identyfikatora zatwierdzenia to `plugin:`.
|
||||
- Autoryzacja zatwierdzającego nadal jest egzekwowana: tylko użytkownicy zidentyfikowani jako zatwierdzający mogą zatwierdzać lub odrzucać żądania przez Slack.
|
||||
- Zatwierdzenia exec używają `channels.slack.execApprovals.*` do natywnego routingu DM/kanału.
|
||||
- Zatwierdzenia Plugin nadal mogą być rozwiązywane przez tę samą natywną powierzchnię przycisków Slack, gdy żądanie trafia już do Slack, a rodzaj identyfikatora zatwierdzenia to `plugin:`.
|
||||
- Autoryzacja zatwierdzających nadal jest egzekwowana: tylko użytkownicy zidentyfikowani jako zatwierdzający mogą zatwierdzać lub odrzucać żądania przez Slack.
|
||||
|
||||
Używa to tej samej współdzielonej powierzchni przycisków zatwierdzania co inne kanały. Gdy w ustawieniach aplikacji Slack włączona jest `interactivity`, prompty zatwierdzeń są renderowane bezpośrednio jako przyciski Block Kit w konwersacji.
|
||||
Korzysta to z tej samej współdzielonej powierzchni przycisków zatwierdzania co inne kanały. Gdy w ustawieniach aplikacji Slack włączona jest `interactivity`, monity o zatwierdzenie są renderowane jako przyciski Block Kit bezpośrednio w konwersacji.
|
||||
Gdy te przyciski są obecne, stanowią podstawowy UX zatwierdzania; OpenClaw
|
||||
powinien dołączać ręczne polecenie `/approve` tylko wtedy, gdy wynik narzędzia mówi, że zatwierdzenia na czacie są niedostępne lub ręczne zatwierdzenie jest jedyną ścieżką.
|
||||
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ą ścieżką.
|
||||
|
||||
Ścieżka konfiguracji:
|
||||
|
||||
- `channels.slack.execApprovals.enabled`
|
||||
- `channels.slack.execApprovals.approvers` (opcjonalnie; jeśli to możliwe, zapasowo `commands.ownerAllowFrom`)
|
||||
- `channels.slack.execApprovals.approvers` (opcjonalne; w miarę możliwości używa alternatywy `commands.ownerAllowFrom`)
|
||||
- `channels.slack.execApprovals.target` (`dm` | `channel` | `both`, domyślnie: `dm`)
|
||||
- `agentFilter`, `sessionFilter`
|
||||
|
||||
Slack automatycznie włącza natywne zatwierdzenia exec, gdy `enabled` nie jest ustawione lub ma wartość `"auto"` i zostanie rozpoznany co najmniej jeden
|
||||
zatwierdzający. Ustaw `enabled: false`, aby jawnie wyłączyć Slack jako natywnego klienta zatwierdzeń.
|
||||
Ustaw `enabled: true`, aby wymusić natywne zatwierdzenia, gdy zatwierdzający zostaną rozpoznani.
|
||||
Slack automatycznie włącza natywne zatwierdzenia exec, gdy `enabled` nie jest ustawione albo ma wartość `"auto"` i zostanie rozpoznany co najmniej jeden zatwierdzający. Ustaw `enabled: false`, aby jawnie wyłączyć Slack jako natywnego klienta zatwierdzeń.
|
||||
Ustaw `enabled: true`, aby wymusić natywne zatwierdzenia, gdy zostaną rozpoznani zatwierdzający.
|
||||
|
||||
Domyślne zachowanie bez jawnej konfiguracji zatwierdzeń exec dla Slack:
|
||||
|
||||
@ -650,7 +928,7 @@ Domyślne zachowanie bez jawnej konfiguracji zatwierdzeń exec dla Slack:
|
||||
}
|
||||
```
|
||||
|
||||
Jawna konfiguracja natywna Slack jest potrzebna tylko wtedy, gdy chcesz zastąpić zatwierdzających, dodać filtry lub
|
||||
Jawna konfiguracja natywna Slack jest potrzebna tylko wtedy, gdy chcesz nadpisać zatwierdzających, dodać filtry lub
|
||||
włączyć dostarczanie do czatu źródłowego:
|
||||
|
||||
```json5
|
||||
@ -667,35 +945,35 @@ włączyć dostarczanie do czatu źródłowego:
|
||||
}
|
||||
```
|
||||
|
||||
Współdzielone przekazywanie `approvals.exec` jest oddzielne. Używaj go tylko wtedy, gdy prompty zatwierdzeń exec muszą być także
|
||||
kierowane do innych czatów lub jawnych celów poza pasmem. Współdzielone przekazywanie `approvals.plugin` jest również
|
||||
oddzielne; natywne przyciski Slack nadal mogą rozwiązywać zatwierdzenia pluginów, gdy te żądania już trafiają
|
||||
Współdzielone przekazywanie `approvals.exec` jest osobne. Używaj go tylko wtedy, gdy monity o zatwierdzenie exec muszą być również kierowane
|
||||
do innych czatów lub jawnych celów poza pasmem. Współdzielone przekazywanie `approvals.plugin` również jest
|
||||
osobne; natywne przyciski Slack nadal mogą rozwiązywać zatwierdzenia Plugin, gdy te żądania już trafiają
|
||||
do Slack.
|
||||
|
||||
`/approve` w tym samym czacie działa także w kanałach i DM-ach Slack, które już obsługują polecenia. Zobacz [Zatwierdzenia exec](/pl/tools/exec-approvals), aby poznać pełny model przekazywania zatwierdzeń.
|
||||
Polecenie `/approve` w tym samym czacie również działa w kanałach i DM-ach Slack, które już obsługują polecenia. Zobacz [Zatwierdzenia exec](/pl/tools/exec-approvals), aby poznać pełny model przekazywania zatwierdzeń.
|
||||
|
||||
## Zdarzenia i zachowanie operacyjne
|
||||
|
||||
- Edycje/usunięcia wiadomości i broadcasty wątków są mapowane na zdarzenia systemowe.
|
||||
- Edycje/usunięcia wiadomości/transmisje wątków są mapowane na zdarzenia systemowe.
|
||||
- Zdarzenia dodania/usunięcia reakcji są mapowane na zdarzenia systemowe.
|
||||
- Zdarzenia dołączenia/opuszczenia członka, utworzenia/zmiany nazwy kanału oraz dodania/usunięcia przypięcia są mapowane na zdarzenia systemowe.
|
||||
- `channel_id_changed` może migrować klucze konfiguracji kanałów, gdy `configWrites` jest włączone.
|
||||
- Metadane tematu/celu kanału są traktowane jako niezaufany kontekst i mogą zostać wstrzyknięte do kontekstu routingu.
|
||||
- Inicjator wątku i początkowe zasilenie kontekstu historią wątku są filtrowane przez skonfigurowane allowlisty nadawców, jeśli ma to zastosowanie.
|
||||
- Akcje bloków i interakcje z modalami emitują ustrukturyzowane zdarzenia systemowe `Slack interaction: ...` z bogatymi polami ładunku:
|
||||
- akcje bloków: wybrane wartości, etykiety, wartości selektorów i metadane `workflow_*`
|
||||
- zdarzenia modali `view_submission` i `view_closed` z trasowanymi metadanymi kanału i danymi wejściowymi formularza
|
||||
- `channel_id_changed` może migrować klucze konfiguracji kanału, gdy włączone jest `configWrites`.
|
||||
- Metadane tematu/celu kanału są traktowane jako niezaufany kontekst i mogą być wstrzykiwane do kontekstu routingu.
|
||||
- Inicjator wątku i początkowe zasianie kontekstu historii wątku są filtrowane przez skonfigurowane listy dozwolonych nadawców, gdy ma to zastosowanie.
|
||||
- Akcje bloków i interakcje modalne emitują ustrukturyzowane zdarzenia systemowe `Slack interaction: ...` z bogatymi polami ładunku:
|
||||
- akcje bloków: wybrane wartości, etykiety, wartości selektora i metadane `workflow_*`
|
||||
- zdarzenia modalne `view_submission` i `view_closed` z routowanymi metadanymi kanału i danymi wejściowymi formularza
|
||||
|
||||
## Wskaźniki do dokumentacji konfiguracji
|
||||
## Wskaźniki do dokumentacji referencyjnej konfiguracji
|
||||
|
||||
Główna dokumentacja:
|
||||
Główna dokumentacja referencyjna:
|
||||
|
||||
- [Configuration reference - Slack](/pl/gateway/configuration-reference#slack)
|
||||
|
||||
Pola Slack o wysokim znaczeniu:
|
||||
- tryb/uwierzytelnianie: `mode`, `botToken`, `appToken`, `signingSecret`, `webhookPath`, `accounts.*`
|
||||
- dostęp do DM: `dm.enabled`, `dmPolicy`, `allowFrom` (starsze: `dm.policy`, `dm.allowFrom`), `dm.groupEnabled`, `dm.groupChannels`
|
||||
- przełącznik zgodności: `dangerouslyAllowNameMatching` (tryb awaryjny; pozostaw wyłączone, jeśli nie jest potrzebne)
|
||||
Najważniejsze pola Slack:
|
||||
- tryb/autoryzacja: `mode`, `botToken`, `appToken`, `signingSecret`, `webhookPath`, `accounts.*`
|
||||
- dostęp do DM: `dm.enabled`, `dmPolicy`, `allowFrom` (starsza wersja: `dm.policy`, `dm.allowFrom`), `dm.groupEnabled`, `dm.groupChannels`
|
||||
- przełącznik zgodności: `dangerouslyAllowNameMatching` (awaryjny; pozostaw wyłączony, chyba że jest potrzebny)
|
||||
- dostęp do kanałów: `groupPolicy`, `channels.*`, `channels.*.users`, `channels.*.requireMention`
|
||||
- wątki/historia: `replyToMode`, `replyToModeByChatType`, `thread.*`, `historyLimit`, `dmHistoryLimit`, `dms.*.historyLimit`
|
||||
- dostarczanie: `textChunkLimit`, `chunkMode`, `mediaMaxMb`, `streaming`, `streaming.nativeTransport`
|
||||
@ -704,13 +982,13 @@ Główna dokumentacja:
|
||||
## Rozwiązywanie problemów
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="Brak odpowiedzi w kanałach">
|
||||
<Accordion title="Brak odpowiedzi na kanałach">
|
||||
Sprawdź po kolei:
|
||||
|
||||
- `groupPolicy`
|
||||
- allowlistę kanałów (`channels.slack.channels`)
|
||||
- lista dozwolonych kanałów (`channels.slack.channels`)
|
||||
- `requireMention`
|
||||
- allowlistę `users` per kanał
|
||||
- lista dozwolonych `users` dla kanału
|
||||
|
||||
Przydatne polecenia:
|
||||
|
||||
@ -727,7 +1005,7 @@ openclaw doctor
|
||||
|
||||
- `channels.slack.dm.enabled`
|
||||
- `channels.slack.dmPolicy` (lub starsze `channels.slack.dm.policy`)
|
||||
- zatwierdzenia parowania / wpisy allowlisty
|
||||
- zatwierdzenia parowania / wpisy na liście dozwolonych
|
||||
|
||||
```bash
|
||||
openclaw pairing list slack
|
||||
@ -735,12 +1013,12 @@ openclaw pairing list slack
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Tryb socket nie łączy się">
|
||||
<Accordion title="Tryb Socket nie łączy się">
|
||||
Zweryfikuj tokeny bota i aplikacji oraz włączenie Socket Mode w ustawieniach aplikacji Slack.
|
||||
|
||||
Jeśli `openclaw channels status --probe --json` pokazuje `botTokenStatus` lub
|
||||
`appTokenStatus: "configured_unavailable"`, konto Slack jest
|
||||
skonfigurowane, ale bieżący runtime nie mógł rozwiązać wartości
|
||||
skonfigurowane, ale bieżące środowisko uruchomieniowe nie mogło rozwiązać wartości
|
||||
wspieranej przez SecretRef.
|
||||
|
||||
</Accordion>
|
||||
@ -750,22 +1028,22 @@ openclaw pairing list slack
|
||||
|
||||
- signing secret
|
||||
- ścieżkę webhooka
|
||||
- adresy Slack Request URLs (Events + Interactivity + Slash Commands)
|
||||
- adresy URL żądań Slack (Events + Interactivity + Slash Commands)
|
||||
- unikalne `webhookPath` dla każdego konta HTTP
|
||||
|
||||
Jeśli `signingSecretStatus: "configured_unavailable"` pojawia się w migawkach
|
||||
konta, konto HTTP jest skonfigurowane, ale bieżący runtime nie mógł
|
||||
Jeśli `signingSecretStatus: "configured_unavailable"` pojawia się w migawkach konta,
|
||||
konto HTTP jest skonfigurowane, ale bieżące środowisko uruchomieniowe nie mogło
|
||||
rozwiązać signing secret wspieranego przez SecretRef.
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Natywne/polecenia slash nie uruchamiają się">
|
||||
Sprawdź, czy chodziło Ci o:
|
||||
Sprawdź, czy zamierzałeś użyć:
|
||||
|
||||
- natywny tryb poleceń (`channels.slack.commands.native: true`) z pasującymi poleceniami slash zarejestrowanymi w Slack
|
||||
- albo tryb pojedynczego polecenia slash (`channels.slack.slashCommand.enabled: true`)
|
||||
- trybu natywnych poleceń (`channels.slack.commands.native: true`) z pasującymi poleceniami slash zarejestrowanymi w Slack
|
||||
- albo trybu pojedynczego polecenia slash (`channels.slack.slashCommand.enabled: true`)
|
||||
|
||||
Sprawdź też `commands.useAccessGroups` oraz allowlisty kanałów/użytkowników.
|
||||
Sprawdź także `commands.useAccessGroups` oraz listy dozwolonych kanałów/użytkowników.
|
||||
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
@ -1,35 +1,35 @@
|
||||
---
|
||||
read_when:
|
||||
- Chcesz zrozumieć, do czego służy aktywna pamięć
|
||||
- Chcesz włączyć aktywną pamięć dla agenta konwersacyjnego
|
||||
- Chcesz dostroić działanie aktywnej pamięci bez włączania jej wszędzie
|
||||
summary: Wtyczkowy podrzędny agent blokującej pamięci, który wstrzykuje odpowiednią pamięć do interaktywnych sesji czatu
|
||||
title: Aktywna pamięć
|
||||
- Chcesz zrozumieć, do czego służy Active Memory
|
||||
- Chcesz włączyć Active Memory dla agenta konwersacyjnego
|
||||
- Chcesz dostroić zachowanie Active Memory bez włączania go wszędzie
|
||||
summary: Należący do Plugin podagent blokującej pamięci, który wstrzykuje odpowiednią pamięć do interaktywnych sesji czatu
|
||||
title: Active Memory
|
||||
x-i18n:
|
||||
generated_at: "2026-04-11T09:30:32Z"
|
||||
generated_at: "2026-04-12T09:33:34Z"
|
||||
model: gpt-5.4
|
||||
provider: openai
|
||||
source_hash: e8b0e6539e09678e9e8def68795f8bcb992f98509423da3da3123eda88ec1dd5
|
||||
source_hash: 59456805c28daaab394ba2a7f87e1104a1334a5cf32dbb961d5d232d9c471d84
|
||||
source_path: concepts/active-memory.md
|
||||
workflow: 15
|
||||
---
|
||||
|
||||
# Aktywna pamięć
|
||||
# Active Memory
|
||||
|
||||
Aktywna pamięć to opcjonalny, należący do wtyczki blokujący podrzędny agent pamięci, który działa
|
||||
Active Memory to opcjonalny należący do Plugin blokujący podagent pamięci, który działa
|
||||
przed główną odpowiedzią dla kwalifikujących się sesji konwersacyjnych.
|
||||
|
||||
Istnieje, ponieważ większość systemów pamięci jest skuteczna, ale reaktywna. Polegają one
|
||||
na tym, że główny agent zdecyduje, kiedy przeszukać pamięć, albo na tym, że użytkownik powie coś
|
||||
w rodzaju „zapamiętaj to” lub „przeszukaj pamięć”. Wtedy moment, w którym pamięć sprawiłaby,
|
||||
że odpowiedź byłaby naturalna, już minął.
|
||||
Istnieje, ponieważ większość systemów pamięci jest zdolna do działania, ale reaktywna. Polegają one na
|
||||
tym, że główny agent zdecyduje, kiedy przeszukać pamięć, albo na tym, że użytkownik powie
|
||||
coś w rodzaju „zapamiętaj to” lub „przeszukaj pamięć”. Wtedy jednak moment, w którym pamięć
|
||||
sprawiłaby, że odpowiedź brzmiałaby naturalnie, już minął.
|
||||
|
||||
Aktywna pamięć daje systemowi jedną ograniczoną szansę na wydobycie istotnej pamięci
|
||||
przed wygenerowaniem głównej odpowiedzi.
|
||||
Active Memory daje systemowi jedną ograniczoną szansę na wydobycie odpowiedniej pamięci
|
||||
zanim zostanie wygenerowana główna odpowiedź.
|
||||
|
||||
## Wklej to do swojego agenta
|
||||
|
||||
Wklej to do swojego agenta, jeśli chcesz włączyć Aktywną pamięć z
|
||||
Wklej to do swojego agenta, jeśli chcesz włączyć Active Memory z
|
||||
samowystarczalną konfiguracją z bezpiecznymi ustawieniami domyślnymi:
|
||||
|
||||
```json5
|
||||
@ -42,7 +42,7 @@ samowystarczalną konfiguracją z bezpiecznymi ustawieniami domyślnymi:
|
||||
enabled: true,
|
||||
agents: ["main"],
|
||||
allowedChatTypes: ["direct"],
|
||||
modelFallbackPolicy: "default-remote",
|
||||
modelFallback: "google/gemini-3-flash",
|
||||
queryMode: "recent",
|
||||
promptStyle: "balanced",
|
||||
timeoutMs: 15000,
|
||||
@ -56,11 +56,12 @@ samowystarczalną konfiguracją z bezpiecznymi ustawieniami domyślnymi:
|
||||
}
|
||||
```
|
||||
|
||||
Spowoduje to włączenie wtyczki dla agenta `main`, domyślnie ograniczy ją do sesji
|
||||
w stylu wiadomości bezpośrednich, pozwoli jej najpierw dziedziczyć bieżący model sesji, a także
|
||||
nadal dopuści wbudowany zdalny mechanizm awaryjny, jeśli nie jest dostępny żaden jawny ani odziedziczony model.
|
||||
To włącza plugin dla agenta `main`, domyślnie ogranicza go do sesji
|
||||
w stylu wiadomości bezpośrednich, pozwala mu najpierw dziedziczyć bieżący model sesji i
|
||||
używa skonfigurowanego modelu zapasowego tylko wtedy, gdy nie jest dostępny
|
||||
żaden jawny ani dziedziczony model.
|
||||
|
||||
Następnie uruchom ponownie bramę:
|
||||
Następnie uruchom ponownie Gateway:
|
||||
|
||||
```bash
|
||||
openclaw gateway
|
||||
@ -72,13 +73,13 @@ Aby obserwować to na żywo w rozmowie:
|
||||
/verbose on
|
||||
```
|
||||
|
||||
## Włącz aktywną pamięć
|
||||
## Włącz Active Memory
|
||||
|
||||
Najbezpieczniejsza konfiguracja to:
|
||||
|
||||
1. włącz wtyczkę
|
||||
2. wskaż jednego agenta konwersacyjnego
|
||||
3. pozostaw logowanie włączone tylko podczas dostrajania
|
||||
1. włączyć plugin
|
||||
2. wskazać jednego agenta konwersacyjnego
|
||||
3. pozostawić logowanie włączone tylko podczas dostrajania
|
||||
|
||||
Zacznij od tego w `openclaw.json`:
|
||||
|
||||
@ -91,7 +92,7 @@ Zacznij od tego w `openclaw.json`:
|
||||
config: {
|
||||
agents: ["main"],
|
||||
allowedChatTypes: ["direct"],
|
||||
modelFallbackPolicy: "default-remote",
|
||||
modelFallback: "google/gemini-3-flash",
|
||||
queryMode: "recent",
|
||||
promptStyle: "balanced",
|
||||
timeoutMs: 15000,
|
||||
@ -105,7 +106,7 @@ Zacznij od tego w `openclaw.json`:
|
||||
}
|
||||
```
|
||||
|
||||
Następnie uruchom ponownie bramę:
|
||||
Następnie uruchom ponownie Gateway:
|
||||
|
||||
```bash
|
||||
openclaw gateway
|
||||
@ -113,22 +114,22 @@ openclaw gateway
|
||||
|
||||
Co to oznacza:
|
||||
|
||||
- `plugins.entries.active-memory.enabled: true` włącza wtyczkę
|
||||
- `config.agents: ["main"]` włącza aktywną pamięć tylko dla agenta `main`
|
||||
- `config.allowedChatTypes: ["direct"]` domyślnie utrzymuje aktywną pamięć tylko dla sesji w stylu wiadomości bezpośrednich
|
||||
- jeśli `config.model` nie jest ustawione, aktywna pamięć najpierw dziedziczy bieżący model sesji
|
||||
- `config.modelFallbackPolicy: "default-remote"` zachowuje wbudowany zdalny mechanizm awaryjny jako domyślny, gdy nie jest dostępny żaden jawny ani odziedziczony model
|
||||
- `plugins.entries.active-memory.enabled: true` włącza plugin
|
||||
- `config.agents: ["main"]` włącza active memory tylko dla agenta `main`
|
||||
- `config.allowedChatTypes: ["direct"]` domyślnie utrzymuje active memory tylko dla sesji w stylu wiadomości bezpośrednich
|
||||
- jeśli `config.model` nie jest ustawione, active memory najpierw dziedziczy bieżący model sesji
|
||||
- `config.modelFallback` opcjonalnie zapewnia własny zapasowy dostawcę/model do przywoływania pamięci
|
||||
- `config.promptStyle: "balanced"` używa domyślnego stylu promptu ogólnego przeznaczenia dla trybu `recent`
|
||||
- aktywna pamięć nadal działa tylko w kwalifikujących się interaktywnych trwałych sesjach czatu
|
||||
- active memory nadal działa tylko w kwalifikujących się interaktywnych trwałych sesjach czatu
|
||||
|
||||
## Jak to zobaczyć
|
||||
|
||||
Aktywna pamięć wstrzykuje ukryty kontekst systemowy dla modelu. Nie ujawnia
|
||||
Active memory wstrzykuje ukryty kontekst systemowy dla modelu. Nie ujawnia
|
||||
surowych tagów `<active_memory_plugin>...</active_memory_plugin>` klientowi.
|
||||
|
||||
## Przełącznik sesji
|
||||
|
||||
Użyj polecenia wtyczki, jeśli chcesz wstrzymać lub wznowić aktywną pamięć dla
|
||||
Użyj polecenia plugin, gdy chcesz wstrzymać lub wznowić active memory dla
|
||||
bieżącej sesji czatu bez edytowania konfiguracji:
|
||||
|
||||
```text
|
||||
@ -138,10 +139,10 @@ bieżącej sesji czatu bez edytowania konfiguracji:
|
||||
```
|
||||
|
||||
To działa w zakresie sesji. Nie zmienia
|
||||
`plugins.entries.active-memory.enabled`, wskazywania agenta ani innej globalnej
|
||||
`plugins.entries.active-memory.enabled`, wskazania agenta ani innej globalnej
|
||||
konfiguracji.
|
||||
|
||||
Jeśli chcesz, aby polecenie zapisywało konfigurację oraz wstrzymywało lub wznawiało aktywną pamięć dla
|
||||
Jeśli chcesz, aby polecenie zapisywało konfigurację oraz wstrzymywało lub wznawiało active memory dla
|
||||
wszystkich sesji, użyj jawnej formy globalnej:
|
||||
|
||||
```text
|
||||
@ -152,81 +153,82 @@ wszystkich sesji, użyj jawnej formy globalnej:
|
||||
|
||||
Forma globalna zapisuje `plugins.entries.active-memory.config.enabled`. Pozostawia
|
||||
`plugins.entries.active-memory.enabled` włączone, aby polecenie nadal było dostępne do
|
||||
późniejszego ponownego włączenia aktywnej pamięci.
|
||||
ponownego włączenia active memory później.
|
||||
|
||||
Jeśli chcesz zobaczyć, co aktywna pamięć robi w sesji na żywo, włącz tryb szczegółowy
|
||||
Jeśli chcesz zobaczyć, co active memory robi w sesji na żywo, włącz tryb verbose
|
||||
dla tej sesji:
|
||||
|
||||
```text
|
||||
/verbose on
|
||||
```
|
||||
|
||||
Przy włączonym trybie szczegółowym OpenClaw może wyświetlić:
|
||||
Przy włączonym verbose OpenClaw może pokazać:
|
||||
|
||||
- wiersz stanu aktywnej pamięci, taki jak `Active Memory: ok 842ms recent 34 chars`
|
||||
- wiersz stanu active memory, taki jak `Active Memory: ok 842ms recent 34 chars`
|
||||
- czytelne podsumowanie debugowania, takie jak `Active Memory Debug: Lemon pepper wings with blue cheese.`
|
||||
|
||||
Te wiersze pochodzą z tego samego przebiegu aktywnej pamięci, który zasila ukryty
|
||||
kontekst systemowy, ale są sformatowane dla ludzi zamiast ujawniać surowe znaczniki promptu.
|
||||
Te wiersze pochodzą z tego samego przebiegu active memory, który zasila ukryty
|
||||
kontekst systemowy, ale są sformatowane dla ludzi zamiast ujawniać surowe
|
||||
znaczniki promptu.
|
||||
|
||||
Domyślnie transkrypt blokującego podrzędnego agenta pamięci jest tymczasowy i usuwany
|
||||
Domyślnie transkrypt blokującego podagenta pamięci jest tymczasowy i usuwany
|
||||
po zakończeniu działania.
|
||||
|
||||
Przykładowy przebieg:
|
||||
|
||||
```text
|
||||
/verbose on
|
||||
jakie skrzydełka powinienem zamówić?
|
||||
what wings should i order?
|
||||
```
|
||||
|
||||
Oczekiwany kształt widocznej odpowiedzi:
|
||||
|
||||
```text
|
||||
...zwykła odpowiedź asystenta...
|
||||
...normal assistant reply...
|
||||
|
||||
🧩 Active Memory: ok 842ms recent 34 chars
|
||||
🔎 Active Memory Debug: Skrzydełka lemon pepper z sosem blue cheese.
|
||||
🔎 Active Memory Debug: Lemon pepper wings with blue cheese.
|
||||
```
|
||||
|
||||
## Kiedy działa
|
||||
|
||||
Aktywna pamięć używa dwóch bramek:
|
||||
Active memory używa dwóch bramek:
|
||||
|
||||
1. **Włączenie w konfiguracji**
|
||||
Wtyczka musi być włączona, a identyfikator bieżącego agenta musi występować w
|
||||
1. **Jawne włączenie w konfiguracji**
|
||||
Plugin musi być włączony, a bieżący identyfikator agenta musi występować w
|
||||
`plugins.entries.active-memory.config.agents`.
|
||||
2. **Ścisła kwalifikacja w czasie działania**
|
||||
Nawet gdy jest włączona i wskazana, aktywna pamięć działa tylko dla kwalifikujących się
|
||||
Nawet gdy jest włączone i wskazane, active memory działa tylko dla kwalifikujących się
|
||||
interaktywnych trwałych sesji czatu.
|
||||
|
||||
Rzeczywista reguła wygląda tak:
|
||||
|
||||
```text
|
||||
wtyczka włączona
|
||||
plugin enabled
|
||||
+
|
||||
wskazany identyfikator agenta
|
||||
agent id targeted
|
||||
+
|
||||
dozwolony typ czatu
|
||||
allowed chat type
|
||||
+
|
||||
kwalifikująca się interaktywna trwała sesja czatu
|
||||
eligible interactive persistent chat session
|
||||
=
|
||||
aktywna pamięć działa
|
||||
active memory runs
|
||||
```
|
||||
|
||||
Jeśli którykolwiek z tych warunków nie jest spełniony, aktywna pamięć nie działa.
|
||||
Jeśli którykolwiek z tych warunków nie jest spełniony, active memory nie działa.
|
||||
|
||||
## Typy sesji
|
||||
|
||||
`config.allowedChatTypes` określa, w jakich rodzajach rozmów Aktywna
|
||||
Pamięć może w ogóle działać.
|
||||
`config.allowedChatTypes` kontroluje, w jakich rodzajach rozmów Active
|
||||
Memory może w ogóle działać.
|
||||
|
||||
Wartość domyślna to:
|
||||
Domyślna wartość to:
|
||||
|
||||
```json5
|
||||
allowedChatTypes: ["direct"]
|
||||
```
|
||||
|
||||
Oznacza to, że Aktywna pamięć działa domyślnie w sesjach w stylu wiadomości bezpośrednich, ale
|
||||
Oznacza to, że Active Memory domyślnie działa w sesjach w stylu wiadomości bezpośrednich, ale
|
||||
nie w sesjach grupowych ani kanałowych, chyba że jawnie je włączysz.
|
||||
|
||||
Przykłady:
|
||||
@ -245,78 +247,78 @@ allowedChatTypes: ["direct", "group", "channel"]
|
||||
|
||||
## Gdzie działa
|
||||
|
||||
Aktywna pamięć to funkcja wzbogacania rozmów, a nie
|
||||
ogólnoplatformowa funkcja wnioskowania.
|
||||
Active memory to funkcja wzbogacająca rozmowę, a nie ogólnoplatformowa
|
||||
funkcja wnioskowania.
|
||||
|
||||
| Powierzchnia | Czy aktywna pamięć działa? |
|
||||
| -------------------------------------------------------------------- | ------------------------------------------------------- |
|
||||
| Trwałe sesje Control UI / czatu webowego | Tak, jeśli wtyczka jest włączona i agent jest wskazany |
|
||||
| Inne interaktywne sesje kanałowe na tej samej trwałej ścieżce czatu | Tak, jeśli wtyczka jest włączona i agent jest wskazany |
|
||||
| Bezgłowe uruchomienia jednorazowe | Nie |
|
||||
| Uruchomienia heartbeat/tła | Nie |
|
||||
| Ogólne wewnętrzne ścieżki `agent-command` | Nie |
|
||||
| Wykonywanie podrzędnego agenta/wewnętrznego pomocnika | Nie |
|
||||
| Powierzchnia | Czy działa active memory? |
|
||||
| ------------------------------------------------------------------- | ------------------------------------------------------- |
|
||||
| Trwałe sesje Control UI / czatu webowego | Tak, jeśli plugin jest włączony i agent jest wskazany |
|
||||
| Inne interaktywne sesje kanałowe na tej samej trwałej ścieżce czatu | Tak, jeśli plugin jest włączony i agent jest wskazany |
|
||||
| Bezgłowe uruchomienia jednorazowe | Nie |
|
||||
| Uruchomienia Heartbeat/w tle | Nie |
|
||||
| Ogólne wewnętrzne ścieżki `agent-command` | Nie |
|
||||
| Wykonanie podagenta/wewnętrznego pomocnika | Nie |
|
||||
|
||||
## Dlaczego warto jej używać
|
||||
## Dlaczego warto tego używać
|
||||
|
||||
Używaj aktywnej pamięci, gdy:
|
||||
Używaj active memory, gdy:
|
||||
|
||||
- sesja jest trwała i skierowana do użytkownika
|
||||
- agent ma sensowną pamięć długoterminową do przeszukania
|
||||
- agent ma istotną pamięć długoterminową do przeszukania
|
||||
- ciągłość i personalizacja są ważniejsze niż surowy determinizm promptu
|
||||
|
||||
Sprawdza się szczególnie dobrze dla:
|
||||
Działa to szczególnie dobrze dla:
|
||||
|
||||
- stabilnych preferencji
|
||||
- trwałych preferencji
|
||||
- powtarzających się nawyków
|
||||
- długoterminowego kontekstu użytkownika, który powinien pojawiać się naturalnie
|
||||
- długoterminowego kontekstu użytkownika, który powinien naturalnie się ujawniać
|
||||
|
||||
Słabo nadaje się do:
|
||||
|
||||
- automatyzacji
|
||||
- wewnętrznych procesów roboczych
|
||||
- wewnętrznych workerów
|
||||
- jednorazowych zadań API
|
||||
- miejsc, w których ukryta personalizacja byłaby zaskakująca
|
||||
|
||||
## Jak to działa
|
||||
|
||||
Kształt działania w czasie wykonywania wygląda tak:
|
||||
Kształt działania w czasie wykonywania jest następujący:
|
||||
|
||||
```mermaid
|
||||
flowchart LR
|
||||
U["Wiadomość użytkownika"] --> Q["Zbuduj zapytanie do pamięci"]
|
||||
Q --> R["Blokujący podrzędny agent pamięci Aktywnej pamięci"]
|
||||
R -->|NONE or empty| M["Główna odpowiedź"]
|
||||
R -->|relevant summary| I["Dołącz ukryty kontekst systemowy active_memory_plugin"]
|
||||
I --> M["Główna odpowiedź"]
|
||||
U["User Message"] --> Q["Build Memory Query"]
|
||||
Q --> R["Active Memory Blocking Memory Sub-Agent"]
|
||||
R -->|NONE or empty| M["Main Reply"]
|
||||
R -->|relevant summary| I["Append Hidden active_memory_plugin System Context"]
|
||||
I --> M["Main Reply"]
|
||||
```
|
||||
|
||||
Blokujący podrzędny agent pamięci może używać tylko:
|
||||
Blokujący podagent pamięci może używać tylko:
|
||||
|
||||
- `memory_search`
|
||||
- `memory_get`
|
||||
|
||||
Jeśli połączenie jest słabe, powinien zwrócić `NONE`.
|
||||
|
||||
## Tryby zapytania
|
||||
## Tryby zapytań
|
||||
|
||||
`config.queryMode` określa, jak dużą część rozmowy widzi blokujący podrzędny agent pamięci.
|
||||
`config.queryMode` kontroluje, jak dużą część rozmowy widzi blokujący podagent pamięci.
|
||||
|
||||
## Style promptu
|
||||
|
||||
`config.promptStyle` określa, jak chętny lub restrykcyjny jest blokujący podrzędny agent pamięci
|
||||
`config.promptStyle` kontroluje, jak chętny lub restrykcyjny jest blokujący podagent pamięci
|
||||
przy podejmowaniu decyzji, czy zwrócić pamięć.
|
||||
|
||||
Dostępne style:
|
||||
|
||||
- `balanced`: domyślny styl ogólnego przeznaczenia dla trybu `recent`
|
||||
- `strict`: najmniej chętny; najlepszy, gdy chcesz bardzo małego przenikania z pobliskiego kontekstu
|
||||
- `contextual`: najbardziej sprzyjający ciągłości; najlepszy, gdy historia rozmowy powinna mieć większe znaczenie
|
||||
- `recall-heavy`: bardziej skłonny do wydobywania pamięci przy słabszych, ale nadal prawdopodobnych dopasowaniach
|
||||
- `contextual`: najbardziej sprzyjający ciągłości; najlepszy, gdy historia rozmowy ma większe znaczenie
|
||||
- `recall-heavy`: chętniej wydobywa pamięć przy słabszych, ale nadal prawdopodobnych dopasowaniach
|
||||
- `precision-heavy`: zdecydowanie preferuje `NONE`, chyba że dopasowanie jest oczywiste
|
||||
- `preference-only`: zoptymalizowany pod ulubione rzeczy, nawyki, rutyny, gust i powtarzające się fakty osobiste
|
||||
- `preference-only`: zoptymalizowany pod ulubione rzeczy, nawyki, rutyny, gust i powracające fakty osobiste
|
||||
|
||||
Domyślne mapowanie, gdy `config.promptStyle` nie jest ustawione:
|
||||
Mapowanie domyślne, gdy `config.promptStyle` nie jest ustawione:
|
||||
|
||||
```text
|
||||
message -> strict
|
||||
@ -324,7 +326,7 @@ recent -> balanced
|
||||
full -> contextual
|
||||
```
|
||||
|
||||
Jeśli jawnie ustawisz `config.promptStyle`, to nadpisanie ma pierwszeństwo.
|
||||
Jeśli ustawisz `config.promptStyle` jawnie, to nadpisanie ma pierwszeństwo.
|
||||
|
||||
Przykład:
|
||||
|
||||
@ -332,39 +334,36 @@ Przykład:
|
||||
promptStyle: "preference-only"
|
||||
```
|
||||
|
||||
## Zasada awaryjnego doboru modelu
|
||||
## Zasady modelu zapasowego
|
||||
|
||||
Jeśli `config.model` nie jest ustawione, Aktywna pamięć próbuje rozwiązać model w tej kolejności:
|
||||
Jeśli `config.model` nie jest ustawione, Active Memory próbuje rozwiązać model w tej kolejności:
|
||||
|
||||
```text
|
||||
jawny model wtyczki
|
||||
-> bieżący model sesji
|
||||
-> podstawowy model agenta
|
||||
-> opcjonalny wbudowany zdalny mechanizm awaryjny
|
||||
explicit plugin model
|
||||
-> current session model
|
||||
-> agent primary model
|
||||
-> optional configured fallback model
|
||||
```
|
||||
|
||||
`config.modelFallbackPolicy` kontroluje ostatni krok.
|
||||
`config.modelFallback` kontroluje krok skonfigurowanego modelu zapasowego.
|
||||
|
||||
Wartość domyślna:
|
||||
Opcjonalny własny model zapasowy:
|
||||
|
||||
```json5
|
||||
modelFallbackPolicy: "default-remote"
|
||||
modelFallback: "google/gemini-3-flash"
|
||||
```
|
||||
|
||||
Inna opcja:
|
||||
Jeśli nie uda się rozwiązać żadnego jawnego, dziedziczonego ani skonfigurowanego modelu zapasowego, Active Memory
|
||||
pomija przywoływanie pamięci dla tej tury.
|
||||
|
||||
```json5
|
||||
modelFallbackPolicy: "resolved-only"
|
||||
```
|
||||
`config.modelFallbackPolicy` jest zachowane wyłącznie jako przestarzałe pole zgodności
|
||||
dla starszych konfiguracji. Nie zmienia już zachowania w czasie działania.
|
||||
|
||||
Użyj `resolved-only`, jeśli chcesz, aby Aktywna pamięć pomijała przywoływanie zamiast
|
||||
korzystać z wbudowanego zdalnego domyślnego mechanizmu awaryjnego, gdy nie jest dostępny żaden jawny ani odziedziczony model.
|
||||
|
||||
## Zaawansowane opcje awaryjne
|
||||
## Zaawansowane mechanizmy awaryjne
|
||||
|
||||
Te opcje celowo nie są częścią zalecanej konfiguracji.
|
||||
|
||||
`config.thinking` może nadpisać poziom myślenia blokującego podrzędnego agenta pamięci:
|
||||
`config.thinking` może nadpisać poziom myślenia blokującego podagenta pamięci:
|
||||
|
||||
```json5
|
||||
thinking: "medium"
|
||||
@ -376,25 +375,25 @@ Wartość domyślna:
|
||||
thinking: "off"
|
||||
```
|
||||
|
||||
Nie włączaj tego domyślnie. Aktywna pamięć działa na ścieżce odpowiedzi, więc dodatkowy
|
||||
Nie włączaj tego domyślnie. Active Memory działa na ścieżce odpowiedzi, więc dodatkowy
|
||||
czas myślenia bezpośrednio zwiększa opóźnienie widoczne dla użytkownika.
|
||||
|
||||
`config.promptAppend` dodaje dodatkowe instrukcje operatora po domyślnym prompcie Aktywnej
|
||||
pamięci i przed kontekstem rozmowy:
|
||||
`config.promptAppend` dodaje dodatkowe instrukcje operatora po domyślnym prompcie Active
|
||||
Memory i przed kontekstem rozmowy:
|
||||
|
||||
```json5
|
||||
promptAppend: "Prefer stable long-term preferences over one-off events."
|
||||
```
|
||||
|
||||
`config.promptOverride` zastępuje domyślny prompt Aktywnej pamięci. OpenClaw
|
||||
nadal dołącza później kontekst rozmowy:
|
||||
`config.promptOverride` zastępuje domyślny prompt Active Memory. OpenClaw
|
||||
nadal dołącza potem kontekst rozmowy:
|
||||
|
||||
```json5
|
||||
promptOverride: "You are a memory search agent. Return NONE or one compact user fact."
|
||||
```
|
||||
|
||||
Dostosowywanie promptu nie jest zalecane, chyba że celowo testujesz inny
|
||||
kontrakt przywoływania. Domyślny prompt jest dostrojony tak, aby zwracał `NONE`
|
||||
Dostosowywanie promptu nie jest zalecane, chyba że celowo testujesz
|
||||
inny kontrakt przywoływania pamięci. Domyślny prompt jest dostrojony tak, aby zwracać albo `NONE`,
|
||||
albo zwięzły kontekst faktów o użytkowniku dla głównego modelu.
|
||||
|
||||
### `message`
|
||||
@ -402,13 +401,13 @@ albo zwięzły kontekst faktów o użytkowniku dla głównego modelu.
|
||||
Wysyłana jest tylko najnowsza wiadomość użytkownika.
|
||||
|
||||
```text
|
||||
Tylko najnowsza wiadomość użytkownika
|
||||
Latest user message only
|
||||
```
|
||||
|
||||
Używaj tego, gdy:
|
||||
Użyj tego, gdy:
|
||||
|
||||
- chcesz najszybszego działania
|
||||
- chcesz najsilniejszego ukierunkowania na przywoływanie stabilnych preferencji
|
||||
- chcesz najsilniejszego ukierunkowania na przywoływanie trwałych preferencji
|
||||
- kolejne tury nie wymagają kontekstu rozmowy
|
||||
|
||||
Zalecany limit czasu:
|
||||
@ -417,22 +416,22 @@ Zalecany limit czasu:
|
||||
|
||||
### `recent`
|
||||
|
||||
Wysyłana jest najnowsza wiadomość użytkownika oraz niewielki ogon ostatniej rozmowy.
|
||||
Wysyłana jest najnowsza wiadomość użytkownika wraz z niewielkim ogonem ostatniej rozmowy.
|
||||
|
||||
```text
|
||||
Niedawny ogon rozmowy:
|
||||
Recent conversation tail:
|
||||
user: ...
|
||||
assistant: ...
|
||||
user: ...
|
||||
|
||||
Najnowsza wiadomość użytkownika:
|
||||
Latest user message:
|
||||
...
|
||||
```
|
||||
|
||||
Używaj tego, gdy:
|
||||
Użyj tego, gdy:
|
||||
|
||||
- chcesz lepszej równowagi między szybkością a osadzeniem w rozmowie
|
||||
- pytania uzupełniające często zależą od kilku ostatnich tur
|
||||
- pytania następcze często zależą od kilku ostatnich tur
|
||||
|
||||
Zalecany limit czasu:
|
||||
|
||||
@ -440,25 +439,25 @@ Zalecany limit czasu:
|
||||
|
||||
### `full`
|
||||
|
||||
Cała rozmowa jest wysyłana do blokującego podrzędnego agenta pamięci.
|
||||
Cała rozmowa jest wysyłana do blokującego podagenta pamięci.
|
||||
|
||||
```text
|
||||
Pełny kontekst rozmowy:
|
||||
Full conversation context:
|
||||
user: ...
|
||||
assistant: ...
|
||||
user: ...
|
||||
...
|
||||
```
|
||||
|
||||
Używaj tego, gdy:
|
||||
Użyj tego, gdy:
|
||||
|
||||
- najwyższa jakość przywoływania ma większe znaczenie niż opóźnienie
|
||||
- najwyższa jakość przywoływania pamięci jest ważniejsza niż opóźnienie
|
||||
- rozmowa zawiera ważne przygotowanie daleko wcześniej w wątku
|
||||
|
||||
Zalecany limit czasu:
|
||||
|
||||
- zwiększ go znacząco w porównaniu z `message` lub `recent`
|
||||
- zacznij od około `15000` ms lub więcej, zależnie od rozmiaru wątku
|
||||
- zacznij od około `15000` ms lub więcej w zależności od rozmiaru wątku
|
||||
|
||||
Ogólnie limit czasu powinien rosnąć wraz z rozmiarem kontekstu:
|
||||
|
||||
@ -468,17 +467,17 @@ message < recent < full
|
||||
|
||||
## Trwałość transkryptu
|
||||
|
||||
Uruchomienia blokującego podrzędnego agenta pamięci aktywnej pamięci tworzą rzeczywisty transkrypt `session.jsonl`
|
||||
podczas wywołania blokującego podrzędnego agenta pamięci.
|
||||
Uruchomienia blokującego podagenta pamięci Active Memory tworzą rzeczywisty transkrypt `session.jsonl`
|
||||
podczas wywołania blokującego podagenta pamięci.
|
||||
|
||||
Domyślnie ten transkrypt jest tymczasowy:
|
||||
|
||||
- jest zapisywany w katalogu tymczasowym
|
||||
- jest używany tylko na potrzeby przebiegu blokującego podrzędnego agenta pamięci
|
||||
- jest usuwany natychmiast po zakończeniu przebiegu
|
||||
- jest używany tylko na potrzeby działania blokującego podagenta pamięci
|
||||
- jest usuwany natychmiast po zakończeniu działania
|
||||
|
||||
Jeśli chcesz zachować te transkrypty blokującego podrzędnego agenta pamięci na dysku do debugowania lub
|
||||
inspekcji, jawnie włącz trwałość:
|
||||
Jeśli chcesz zachować te transkrypty blokującego podagenta pamięci na dysku do debugowania lub
|
||||
inspekcji, włącz trwałość jawnie:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -497,10 +496,11 @@ inspekcji, jawnie włącz trwałość:
|
||||
}
|
||||
```
|
||||
|
||||
Po włączeniu aktywna pamięć przechowuje transkrypty w osobnym katalogu w folderze
|
||||
sesji docelowego agenta, a nie w głównej ścieżce transkryptu rozmowy użytkownika.
|
||||
Po włączeniu active memory zapisuje transkrypty w osobnym katalogu pod
|
||||
folderem sesji docelowego agenta, a nie w głównej ścieżce transkryptu
|
||||
rozmowy użytkownika.
|
||||
|
||||
Domyślny układ koncepcyjnie wygląda tak:
|
||||
Domyślny układ jest koncepcyjnie następujący:
|
||||
|
||||
```text
|
||||
agents/<agent>/sessions/active-memory/<blocking-memory-sub-agent-session-id>.jsonl
|
||||
@ -510,13 +510,13 @@ Możesz zmienić względny podkatalog za pomocą `config.transcriptDir`.
|
||||
|
||||
Używaj tego ostrożnie:
|
||||
|
||||
- transkrypty blokującego podrzędnego agenta pamięci mogą szybko się gromadzić w intensywnie używanych sesjach
|
||||
- tryb zapytania `full` może duplikować dużą część kontekstu rozmowy
|
||||
- transkrypty blokującego podagenta pamięci mogą szybko się gromadzić w aktywnych sesjach
|
||||
- tryb zapytań `full` może duplikować dużą część kontekstu rozmowy
|
||||
- te transkrypty zawierają ukryty kontekst promptu i przywołane wspomnienia
|
||||
|
||||
## Konfiguracja
|
||||
|
||||
Cała konfiguracja aktywnej pamięci znajduje się w:
|
||||
Cała konfiguracja active memory znajduje się pod:
|
||||
|
||||
```text
|
||||
plugins.entries.active-memory
|
||||
@ -526,29 +526,29 @@ Najważniejsze pola to:
|
||||
|
||||
| Klucz | Typ | Znaczenie |
|
||||
| --------------------------- | ---------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------ |
|
||||
| `enabled` | `boolean` | Włącza samą wtyczkę |
|
||||
| `config.agents` | `string[]` | Identyfikatory agentów, które mogą używać aktywnej pamięci |
|
||||
| `config.model` | `string` | Opcjonalne odwołanie do modelu blokującego podrzędnego agenta pamięci; gdy nie jest ustawione, aktywna pamięć używa bieżącego modelu sesji |
|
||||
| `config.queryMode` | `"message" \| "recent" \| "full"` | Określa, jak dużą część rozmowy widzi blokujący podrzędny agent pamięci |
|
||||
| `config.promptStyle` | `"balanced" \| "strict" \| "contextual" \| "recall-heavy" \| "precision-heavy" \| "preference-only"` | Określa, jak chętny lub restrykcyjny jest blokujący podrzędny agent pamięci przy podejmowaniu decyzji, czy zwrócić pamięć |
|
||||
| `config.thinking` | `"off" \| "minimal" \| "low" \| "medium" \| "high" \| "xhigh" \| "adaptive"` | Zaawansowane nadpisanie poziomu myślenia dla blokującego podrzędnego agenta pamięci; domyślnie `off` dla szybkości |
|
||||
| `config.promptOverride` | `string` | Zaawansowane pełne zastąpienie promptu; niezalecane do normalnego użycia |
|
||||
| `enabled` | `boolean` | Włącza sam plugin |
|
||||
| `config.agents` | `string[]` | Identyfikatory agentów, które mogą używać active memory |
|
||||
| `config.model` | `string` | Opcjonalne odwołanie do modelu blokującego podagenta pamięci; gdy nie jest ustawione, active memory używa bieżącego modelu sesji |
|
||||
| `config.queryMode` | `"message" \| "recent" \| "full"` | Kontroluje, jak dużą część rozmowy widzi blokujący podagent pamięci |
|
||||
| `config.promptStyle` | `"balanced" \| "strict" \| "contextual" \| "recall-heavy" \| "precision-heavy" \| "preference-only"` | Kontroluje, jak chętny lub restrykcyjny jest blokujący podagent pamięci przy podejmowaniu decyzji, czy zwrócić pamięć |
|
||||
| `config.thinking` | `"off" \| "minimal" \| "low" \| "medium" \| "high" \| "xhigh" \| "adaptive"` | Zaawansowane nadpisanie poziomu myślenia dla blokującego podagenta pamięci; domyślnie `off` dla szybkości |
|
||||
| `config.promptOverride` | `string` | Zaawansowana pełna zamiana promptu; niezalecana do normalnego użycia |
|
||||
| `config.promptAppend` | `string` | Zaawansowane dodatkowe instrukcje dołączane do domyślnego lub nadpisanego promptu |
|
||||
| `config.timeoutMs` | `number` | Twardy limit czasu dla blokującego podrzędnego agenta pamięci |
|
||||
| `config.timeoutMs` | `number` | Twardy limit czasu dla blokującego podagenta pamięci |
|
||||
| `config.maxSummaryChars` | `number` | Maksymalna łączna liczba znaków dozwolona w podsumowaniu active-memory |
|
||||
| `config.logging` | `boolean` | Emisja logów aktywnej pamięci podczas dostrajania |
|
||||
| `config.persistTranscripts` | `boolean` | Zachowuje transkrypty blokującego podrzędnego agenta pamięci na dysku zamiast usuwać pliki tymczasowe |
|
||||
| `config.transcriptDir` | `string` | Względny katalog transkryptów blokującego podrzędnego agenta pamięci w folderze sesji agenta |
|
||||
| `config.logging` | `boolean` | Emisja logów active memory podczas dostrajania |
|
||||
| `config.persistTranscripts` | `boolean` | Zachowuje transkrypty blokującego podagenta pamięci na dysku zamiast usuwać pliki tymczasowe |
|
||||
| `config.transcriptDir` | `string` | Względny katalog transkryptów blokującego podagenta pamięci pod folderem sesji agenta |
|
||||
|
||||
Przydatne pola do dostrajania:
|
||||
|
||||
| Klucz | Typ | Znaczenie |
|
||||
| ----------------------------- | -------- | ------------------------------------------------------------- |
|
||||
| Klucz | Typ | Znaczenie |
|
||||
| ----------------------------- | -------- | ------------------------------------------------------------ |
|
||||
| `config.maxSummaryChars` | `number` | Maksymalna łączna liczba znaków dozwolona w podsumowaniu active-memory |
|
||||
| `config.recentUserTurns` | `number` | Poprzednie tury użytkownika do uwzględnienia, gdy `queryMode` ma wartość `recent` |
|
||||
| `config.recentAssistantTurns` | `number` | Poprzednie tury asystenta do uwzględnienia, gdy `queryMode` ma wartość `recent` |
|
||||
| `config.recentUserChars` | `number` | Maksymalna liczba znaków na ostatnią turę użytkownika |
|
||||
| `config.recentAssistantChars` | `number` | Maksymalna liczba znaków na ostatnią turę asystenta |
|
||||
| `config.recentUserChars` | `number` | Maksymalna liczba znaków na ostatnią turę użytkownika |
|
||||
| `config.recentAssistantChars` | `number` | Maksymalna liczba znaków na ostatnią turę asystenta |
|
||||
| `config.cacheTtlMs` | `number` | Ponowne użycie pamięci podręcznej dla powtarzających się identycznych zapytań |
|
||||
|
||||
## Zalecana konfiguracja
|
||||
@ -575,29 +575,29 @@ Zacznij od `recent`.
|
||||
}
|
||||
```
|
||||
|
||||
Jeśli chcesz sprawdzać zachowanie na żywo podczas dostrajania, użyj `/verbose on` w
|
||||
Jeśli chcesz obserwować zachowanie na żywo podczas dostrajania, użyj `/verbose on` w
|
||||
sesji zamiast szukać osobnego polecenia debugowania active-memory.
|
||||
|
||||
Następnie przejdź do:
|
||||
|
||||
- `message`, jeśli chcesz mniejszych opóźnień
|
||||
- `full`, jeśli uznasz, że dodatkowy kontekst jest wart wolniejszego blokującego podrzędnego agenta pamięci
|
||||
- `message`, jeśli chcesz mniejszego opóźnienia
|
||||
- `full`, jeśli uznasz, że dodatkowy kontekst jest wart wolniejszego blokującego podagenta pamięci
|
||||
|
||||
## Debugowanie
|
||||
|
||||
Jeśli aktywna pamięć nie pojawia się tam, gdzie tego oczekujesz:
|
||||
Jeśli active memory nie pojawia się tam, gdzie się go spodziewasz:
|
||||
|
||||
1. Potwierdź, że wtyczka jest włączona w `plugins.entries.active-memory.enabled`.
|
||||
2. Potwierdź, że identyfikator bieżącego agenta znajduje się na liście `config.agents`.
|
||||
1. Potwierdź, że plugin jest włączony pod `plugins.entries.active-memory.enabled`.
|
||||
2. Potwierdź, że bieżący identyfikator agenta jest wymieniony w `config.agents`.
|
||||
3. Potwierdź, że testujesz przez interaktywną trwałą sesję czatu.
|
||||
4. Włącz `config.logging: true` i obserwuj logi bramy.
|
||||
5. Zweryfikuj, że samo przeszukiwanie pamięci działa, używając `openclaw memory status --deep`.
|
||||
4. Włącz `config.logging: true` i obserwuj logi Gateway.
|
||||
5. Sprawdź, czy samo wyszukiwanie pamięci działa przy użyciu `openclaw memory status --deep`.
|
||||
|
||||
Jeśli trafienia pamięci są zbyt chaotyczne, zaostrz:
|
||||
Jeśli trafienia pamięci są zbyt szumne, zaostrz:
|
||||
|
||||
- `maxSummaryChars`
|
||||
|
||||
Jeśli aktywna pamięć działa zbyt wolno:
|
||||
Jeśli active memory jest zbyt wolne:
|
||||
|
||||
- obniż `queryMode`
|
||||
- obniż `timeoutMs`
|
||||
|
||||
@ -1,99 +1,104 @@
|
||||
---
|
||||
read_when:
|
||||
- Edytowanie tekstu promptu systemowego, listy narzędzi lub sekcji czasu/heartbeatów
|
||||
- Zmiana zachowania bootstrapu workspace lub wstrzykiwania Skills
|
||||
- Edytowanie tekstu promptu systemowego, listy narzędzi lub sekcji czasu/Heartbeat
|
||||
- Zmiana zachowania bootstrapu obszaru roboczego lub wstrzykiwania Skills
|
||||
summary: Co zawiera prompt systemowy OpenClaw i jak jest składany
|
||||
title: Prompt systemowy
|
||||
x-i18n:
|
||||
generated_at: "2026-04-08T02:14:35Z"
|
||||
generated_at: "2026-04-12T09:33:35Z"
|
||||
model: gpt-5.4
|
||||
provider: openai
|
||||
source_hash: e55fc886bc8ec47584d07c9e60dfacd964dc69c7db976ea373877dc4fe09a79a
|
||||
source_hash: 057f01aac51f7737b5223f61f5d55e552d9011232aebb130426e269d8f6c257f
|
||||
source_path: concepts/system-prompt.md
|
||||
workflow: 15
|
||||
---
|
||||
|
||||
# Prompt systemowy
|
||||
|
||||
OpenClaw tworzy niestandardowy prompt systemowy dla każdego uruchomienia agenta. Prompt jest **własnością OpenClaw** i nie używa domyślnego promptu pi-coding-agent.
|
||||
OpenClaw tworzy niestandardowy prompt systemowy dla każdego uruchomienia agenta. Prompt jest **własnością OpenClaw** i nie używa domyślnego promptu `pi-coding-agent`.
|
||||
|
||||
Prompt jest składany przez OpenClaw i wstrzykiwany do każdego uruchomienia agenta.
|
||||
|
||||
Wtyczki dostawców mogą dodawać wskazówki do promptu uwzględniające pamięć podręczną bez zastępowania pełnego promptu należącego do OpenClaw. Środowisko wykonawcze dostawcy może:
|
||||
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:
|
||||
|
||||
- zastąpić mały zestaw nazwanych sekcji rdzenia (`interaction_style`,
|
||||
- zastąpić niewielki zestaw nazwanych sekcji rdzeniowych (`interaction_style`,
|
||||
`tool_call_style`, `execution_bias`)
|
||||
- wstrzyknąć **stabilny prefiks** powyżej granicy pamięci podręcznej promptu
|
||||
- wstrzyknąć **dynamiczny sufiks** poniżej granicy pamięci podręcznej promptu
|
||||
- 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 zgodności lub naprawdę globalnych zmian promptu, a nie dla typowego zachowania dostawcy.
|
||||
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.
|
||||
|
||||
## 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 środowiska wykonawczego dotyczące użycia narzędzi.
|
||||
- **Bezpieczeństwo**: krótkie przypomnienie o zabezpieczeniach, aby unikać zachowań dążących do przejęcia kontroli lub obchodzenia nadzoru.
|
||||
- **Skills** (gdy są dostępne): informuje model, jak na żądanie wczytywać instrukcje skillów.
|
||||
- **Samoaktualizacja OpenClaw**: jak bezpiecznie sprawdzać konfigurację za pomocą
|
||||
`config.schema.lookup`, poprawiać konfigurację za pomocą `config.patch`, zastępować pełną
|
||||
konfigurację za pomocą `config.apply` oraz 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
|
||||
- **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
|
||||
`tools.exec.ask` / `tools.exec.security`, w tym starszych aliasów `tools.bash.*`,
|
||||
które są normalizowane do tych chronionych ścieżek exec.
|
||||
- **Workspace**: katalog roboczy (`agents.defaults.workspace`).
|
||||
- **Dokumentacja**: lokalna ścieżka do dokumentacji OpenClaw (repozytorium lub pakiet npm) oraz informacja, kiedy ją czytać.
|
||||
- **Pliki workspace (wstrzyknięte)**: wskazuje, że pliki bootstrap są dołączone poniżej.
|
||||
- **Sandbox** (gdy włączony): wskazuje środowisko uruchomieniowe sandbox, ścieżki sandboxa oraz to, czy podwyższone exec jest dostępne.
|
||||
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.
|
||||
- **Heartbeaty**: prompt heartbeatów i zachowanie potwierdzeń, gdy heartbeaty są włączone dla domyślnego agenta.
|
||||
- **Środowisko wykonawcze**: host, system operacyjny, node, katalog główny repozytorium (gdy wykryty), poziom myślenia (jedna linia).
|
||||
- **Rozumowanie**: bieżący poziom widoczności + podpowiedź przełączania `/reasoning`.
|
||||
- **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`.
|
||||
|
||||
Sekcja Narzędzia zawiera również wskazówki środowiska wykonawczego dla długotrwałej pracy:
|
||||
Sekcja Narzędzia zawiera również wskazówki runtime dotyczące długotrwałej pracy:
|
||||
|
||||
- używaj cron do przyszłych działań następczych (`check back later`, przypomnienia, praca cykliczna)
|
||||
zamiast pętli uśpienia `exec`, sztuczek opóźniania `yieldMs` lub powtarzanego odpytywania `process`
|
||||
- używaj `exec` / `process` tylko dla poleceń, które uruchamiają się teraz i dalej działają
|
||||
- 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ą
|
||||
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
|
||||
- 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 działa
|
||||
w trybie push i jest automatycznie ogłaszane z powrotem do zgłaszającego
|
||||
- nie odpytywać `subagents list` / `sessions_list` w pętli tylko po to, aby czekać na
|
||||
- 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
|
||||
zakończenie
|
||||
|
||||
Gdy eksperymentalne narzędzie `update_plan` jest włączone, sekcja Narzędzia mówi też modelowi,
|
||||
aby używał go tylko do nietrywialnej pracy wieloetapowej, utrzymywał dokładnie jeden krok
|
||||
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.
|
||||
|
||||
Zabezpieczenia w promptcie systemowym mają charakter doradczy. Kierują zachowaniem modelu, ale nie wymuszają zasad. Do twardego egzekwowania używaj polityki narzędzi, zgód 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 egzekwują zasad. 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 zatwierdzania prompt środowiska wykonawczego informuje 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 lub
|
||||
ręczne zatwierdzenie jest jedyną drogą.
|
||||
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ą.
|
||||
|
||||
## Tryby promptu
|
||||
|
||||
OpenClaw może renderować mniejsze prompty systemowe dla podagentów. Środowisko wykonawcze ustawia
|
||||
OpenClaw może renderować mniejsze prompty systemowe dla podagentów. Runtime ustawia
|
||||
`promptMode` dla każdego uruchomienia (nie jest to konfiguracja widoczna dla użytkownika):
|
||||
|
||||
- `full` (domyślnie): zawiera wszystkie powyższe sekcje.
|
||||
- `minimal`: używany dla podagentów; pomija **Skills**, **Przywoływanie pamięci**, **Samoaktualizację OpenClaw**, **Aliasy modeli**, **Tożsamość użytkownika**, **Tagi odpowiedzi**,
|
||||
**Wiadomości**, **Ciche odpowiedzi** i **Heartbeaty**. Narzędzia, **Bezpieczeństwo**,
|
||||
Workspace, Sandbox, Bieżąca data i godzina (gdy znane), Środowisko wykonawcze oraz wstrzyknięty
|
||||
- `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
|
||||
kontekst pozostają dostępne.
|
||||
- `none`: zwraca tylko podstawową linię tożsamości.
|
||||
- `none`: zwraca tylko bazową 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 **Kontekst
|
||||
podagenta** zamiast **Kontekst czatu grupowego**.
|
||||
|
||||
## Wstrzykiwanie bootstrapu workspace
|
||||
## Wstrzykiwanie bootstrapu obszaru roboczego
|
||||
|
||||
Pliki bootstrap są przycinane i dołączane w sekcji **Kontekst projektu**, aby model widział kontekst tożsamości i profilu bez potrzeby jawnego odczytu:
|
||||
Pliki bootstrapu są przycinane i dołączane w sekcji **Kontekst projektu**, aby model widział kontekst tożsamości i profilu bez potrzeby jawnego odczytu:
|
||||
|
||||
- `AGENTS.md`
|
||||
- `SOUL.md`
|
||||
@ -101,33 +106,36 @@ Pliki bootstrap są przycinane i dołączane w sekcji **Kontekst projektu**, aby
|
||||
- `IDENTITY.md`
|
||||
- `USER.md`
|
||||
- `HEARTBEAT.md`
|
||||
- `BOOTSTRAP.md` (tylko w całkowicie nowych workspace'ach)
|
||||
- `MEMORY.md`, jeśli istnieje, w przeciwnym razie `memory.md` jako rezerwowy wariant pisany małymi literami
|
||||
- `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
|
||||
|
||||
Wszystkie te pliki są **wstrzykiwane do okna kontekstu** przy każdym kroku, chyba że obowiązuje
|
||||
bramka specyficzna dla pliku. `HEARTBEAT.md` jest pomijany przy normalnych uruchomieniach, gdy
|
||||
heartbeaty są wyłączone dla domyślnego agenta lub
|
||||
`agents.defaults.heartbeat.includeSystemPromptSection` ma wartość false. Zachowaj zwięzłość
|
||||
wstrzykiwanych plików — zwłaszcza `MEMORY.md`, który może z czasem rosnąć i prowadzić do
|
||||
nieoczekiwanie wysokiego zużycia kontekstu oraz częstszego kompaktowania.
|
||||
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
|
||||
`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ą wstrzykiwane automatycznie. Są
|
||||
> dostępne na żądanie przez narzędzia `memory_search` i `memory_get`, więc nie
|
||||
> wliczają się do okna kontekstu, chyba że model jawnie je odczyta.
|
||||
> **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
|
||||
> kontekstu startowego dla tej pierwszej tury.
|
||||
|
||||
Duże pliki są obcinane z użyciem znacznika. Maksymalny rozmiar pojedynczego pliku jest kontrolowany przez
|
||||
`agents.defaults.bootstrapMaxChars` (domyślnie: 20000). Łączna zawartość wstrzykniętego bootstrapu
|
||||
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
|
||||
we wszystkich plikach jest ograniczona przez `agents.defaults.bootstrapTotalMaxChars`
|
||||
(domyślnie: 150000). Brakujące pliki wstrzykują krótki znacznik brakującego pliku. Gdy wystąpi obcięcie,
|
||||
OpenClaw może wstrzyknąć blok ostrzeżenia w Kontekście projektu; sterujesz tym przez
|
||||
(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
|
||||
`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).
|
||||
|
||||
Wewnętrzne hooki mogą przechwycić ten krok przez `agent:bootstrap`, aby mutować lub zastępować
|
||||
wstrzyknięte pliki bootstrapu (na przykład zamieniając `SOUL.md` na alternatywną personę).
|
||||
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ę).
|
||||
|
||||
Jeśli chcesz, aby agent brzmiał mniej generycznie, zacznij od
|
||||
[Przewodnika osobowości SOUL.md](/pl/concepts/soul).
|
||||
@ -136,8 +144,8 @@ Aby sprawdzić, jaki wkład ma każdy wstrzyknięty plik (surowy vs wstrzyknięt
|
||||
|
||||
## Obsługa czasu
|
||||
|
||||
Prompt systemowy zawiera osobną sekcję **Bieżąca data i godzina**, gdy znana jest
|
||||
strefa czasowa użytkownika. Aby zachować stabilność pamięci podręcznej promptu, zawiera teraz tylko
|
||||
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
|
||||
**strefę czasową** (bez dynamicznego zegara ani formatu czasu).
|
||||
|
||||
Użyj `session_status`, gdy agent potrzebuje bieżącego czasu; karta statusu
|
||||
@ -149,18 +157,18 @@ Skonfiguruj za pomocą:
|
||||
- `agents.defaults.userTimezone`
|
||||
- `agents.defaults.timeFormat` (`auto` | `12` | `24`)
|
||||
|
||||
Pełne szczegóły zachowania znajdziesz w [Data i godzina](/pl/date-time).
|
||||
Pełne szczegóły zachowania znajdziesz w [Data i czas](/pl/date-time).
|
||||
|
||||
## Skills
|
||||
|
||||
Gdy istnieją kwalifikujące się skille, OpenClaw wstrzykuje zwięzłą **listę dostępnych skillów**
|
||||
(`formatSkillsForPrompt`), która zawiera **ścieżkę pliku** dla każdego skilla. Prompt
|
||||
instruuje model, aby użył `read` do wczytania SKILL.md z podanej
|
||||
lokalizacji (workspace, zarządzanej lub dołączonej). Jeśli żadne skille się nie kwalifikują,
|
||||
sekcja Skills jest pomijana.
|
||||
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
|
||||
Skills jest pomijana.
|
||||
|
||||
Kwalifikowalność obejmuje bramki metadanych skilli, kontrole środowiska wykonawczego/konfiguracji
|
||||
oraz efektywną listę dozwolonych skillów agenta, gdy skonfigurowano `agents.defaults.skills` lub
|
||||
Kwalifikacja obejmuje bramki metadanych Skills, kontrole środowiska/runtime i konfiguracji
|
||||
oraz efektywną listę dozwolonych Skills agenta, gdy skonfigurowano `agents.defaults.skills` lub
|
||||
`agents.list[].skills`.
|
||||
|
||||
```
|
||||
@ -173,13 +181,13 @@ oraz efektywną listę dozwolonych skillów agenta, gdy skonfigurowano `agents.d
|
||||
</available_skills>
|
||||
```
|
||||
|
||||
Dzięki temu podstawowy prompt pozostaje mały, a jednocześnie umożliwia użycie ukierunkowanych skillów.
|
||||
Pozwala to zachować mały bazowy prompt, a jednocześnie nadal umożliwia ukierunkowane użycie Skills.
|
||||
|
||||
## Dokumentacja
|
||||
|
||||
Gdy jest dostępna, prompt systemowy zawiera sekcję **Dokumentacja**, która wskazuje
|
||||
lokalny katalog dokumentacji OpenClaw (albo `docs/` w workspace repozytorium, albo dołączoną dokumentację pakietu npm)
|
||||
oraz wspomina także o publicznym mirrorze, repozytorium źródłowym, społeczności Discord i
|
||||
ClawHub ([https://clawhub.ai](https://clawhub.ai)) do odkrywania skillów. Prompt instruuje model, aby najpierw konsultował lokalną dokumentację
|
||||
w sprawach dotyczących zachowania OpenClaw, poleceń, konfiguracji lub architektury oraz aby
|
||||
samodzielnie uruchamiał `openclaw status`, gdy to możliwe (prosząc użytkownika tylko wtedy, gdy nie ma dostępu).
|
||||
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).
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -1,78 +1,77 @@
|
||||
---
|
||||
read_when:
|
||||
- Budujesz plugin OpenClaw
|
||||
- Tworzysz Plugin OpenClaw
|
||||
- Musisz dostarczyć schemat konfiguracji pluginu lub debugować błędy walidacji pluginu
|
||||
summary: Manifest pluginu + wymagania schematu JSON (ścisła walidacja konfiguracji)
|
||||
title: Manifest pluginu
|
||||
summary: Wymagania dotyczące manifestu Plugin + schematu JSON (ścisła walidacja konfiguracji)
|
||||
title: Manifest Plugin
|
||||
x-i18n:
|
||||
generated_at: "2026-04-11T15:16:04Z"
|
||||
generated_at: "2026-04-12T09:33:29Z"
|
||||
model: gpt-5.4
|
||||
provider: openai
|
||||
source_hash: 42d454b560a8f6bf714c5d782f34216be1216d83d0a319d08d7349332c91a9e4
|
||||
source_hash: 4074b3639bf24606d6087597f28e29afc85f4ea628a713e9d984b441a16f1c13
|
||||
source_path: plugins/manifest.md
|
||||
workflow: 15
|
||||
---
|
||||
|
||||
# Manifest pluginu (`openclaw.plugin.json`)
|
||||
# Manifest Plugin (`openclaw.plugin.json`)
|
||||
|
||||
Ta strona dotyczy wyłącznie **natywnego manifestu pluginu OpenClaw**.
|
||||
Ta strona dotyczy wyłącznie **natywnego manifestu Plugin OpenClaw**.
|
||||
|
||||
Informacje o zgodnych układach bundli znajdziesz w [Bundlach pluginów](/pl/plugins/bundles).
|
||||
Informacje o zgodnych układach pakietów znajdziesz tutaj: [Pakiety Plugin](/pl/plugins/bundles).
|
||||
|
||||
Zgodne formaty bundli używają innych plików manifestu:
|
||||
Zgodne formaty pakietów używają innych plików manifestu:
|
||||
|
||||
- Bundel Codex: `.codex-plugin/plugin.json`
|
||||
- Bundel Claude: `.claude-plugin/plugin.json` lub domyślny układ komponentu Claude
|
||||
- Pakiet Codex: `.codex-plugin/plugin.json`
|
||||
- Pakiet Claude: `.claude-plugin/plugin.json` lub domyślny układ komponentu Claude
|
||||
bez manifestu
|
||||
- Bundel Cursor: `.cursor-plugin/plugin.json`
|
||||
- Pakiet Cursor: `.cursor-plugin/plugin.json`
|
||||
|
||||
OpenClaw automatycznie wykrywa także te układy bundli, ale nie są one walidowane
|
||||
względem schematu `openclaw.plugin.json` opisanego tutaj.
|
||||
OpenClaw automatycznie wykrywa także te układy pakietów, ale nie są one walidowane
|
||||
względem opisanego tutaj schematu `openclaw.plugin.json`.
|
||||
|
||||
W przypadku zgodnych bundli OpenClaw obecnie odczytuje metadane bundla oraz zadeklarowane
|
||||
korzenie Skills, korzenie poleceń Claude, domyślne wartości `settings.json` bundla Claude,
|
||||
domyślne ustawienia LSP bundla Claude oraz obsługiwane zestawy hooków, gdy układ odpowiada
|
||||
W przypadku zgodnych pakietów OpenClaw obecnie odczytuje metadane pakietu oraz zadeklarowane
|
||||
korzenie Skills, korzenie poleceń Claude, domyślne ustawienia `settings.json` pakietu Claude,
|
||||
domyślne ustawienia LSP pakietu Claude oraz obsługiwane zestawy hooków, gdy układ odpowiada
|
||||
oczekiwaniom środowiska uruchomieniowego OpenClaw.
|
||||
|
||||
Każdy natywny plugin OpenClaw **musi** zawierać plik `openclaw.plugin.json` w
|
||||
Każdy natywny Plugin OpenClaw **musi** zawierać plik `openclaw.plugin.json` w
|
||||
**katalogu głównym pluginu**. OpenClaw używa tego manifestu do walidacji konfiguracji
|
||||
**bez wykonywania kodu pluginu**. Brakujące lub nieprawidłowe manifesty są traktowane jako
|
||||
błędy pluginu i blokują walidację konfiguracji.
|
||||
|
||||
Zobacz pełny przewodnik po systemie pluginów: [Pluginy](/pl/tools/plugin).
|
||||
Informacje o natywnym modelu możliwości i aktualnych wskazówkach dotyczących kompatybilności zewnętrznej:
|
||||
Zobacz pełny przewodnik po systemie pluginów: [Plugins](/pl/tools/plugin).
|
||||
Informacje o natywnym modelu możliwości i aktualnych wytycznych zgodności zewnętrznej:
|
||||
[Model możliwości](/pl/plugins/architecture#public-capability-model).
|
||||
|
||||
## Do czego służy ten plik
|
||||
|
||||
`openclaw.plugin.json` to metadane, które OpenClaw odczytuje przed załadowaniem kodu
|
||||
Twojego pluginu.
|
||||
`openclaw.plugin.json` to metadane, które OpenClaw odczytuje przed załadowaniem
|
||||
kodu twojego pluginu.
|
||||
|
||||
Używaj go do:
|
||||
|
||||
- tożsamości pluginu
|
||||
- walidacji konfiguracji
|
||||
- metadanych uwierzytelniania i onboardingu, które powinny być dostępne bez uruchamiania
|
||||
środowiska wykonawczego pluginu
|
||||
- tanich wskazówek aktywacji, które powierzchnie płaszczyzny sterowania mogą sprawdzać przed załadowaniem runtime
|
||||
- tanich deskryptorów konfiguracji, które powierzchnie konfiguracji/onboardingu mogą sprawdzać przed
|
||||
załadowaniem runtime
|
||||
- metadanych aliasów i automatycznego włączania, które powinny być rozstrzygane przed załadowaniem runtime pluginu
|
||||
- skróconych metadanych własności rodzin modeli, które powinny automatycznie aktywować
|
||||
plugin przed załadowaniem runtime
|
||||
- statycznych migawek własności możliwości używanych do zgodnego okablowania bundli i
|
||||
pokrycia kontraktów
|
||||
- metadanych konfiguracji specyficznych dla kanału, które powinny być scalane z powierzchniami katalogu i walidacji
|
||||
bez ładowania runtime
|
||||
środowiska uruchomieniowego pluginu
|
||||
- tanich wskazówek aktywacji, które powierzchnie płaszczyzny sterowania mogą sprawdzać przed załadowaniem środowiska uruchomieniowego
|
||||
- tanich deskryptorów konfiguracji, które powierzchnie konfiguracji/onboardingu mogą sprawdzać przed załadowaniem
|
||||
środowiska uruchomieniowego
|
||||
- metadanych aliasów i automatycznego włączania, które powinny być rozstrzygane przed załadowaniem środowiska uruchomieniowego pluginu
|
||||
- skróconych metadanych własności rodziny modeli, które powinny automatycznie aktywować
|
||||
plugin przed załadowaniem środowiska uruchomieniowego
|
||||
- statycznych migawek własności możliwości używanych do zgodnego okablowania pakietów i pokrycia kontraktów
|
||||
- metadanych konfiguracji specyficznych dla kanału, które powinny być scalane z katalogiem i powierzchniami walidacji
|
||||
bez ładowania środowiska uruchomieniowego
|
||||
- wskazówek UI konfiguracji
|
||||
|
||||
Nie używaj go do:
|
||||
|
||||
- rejestrowania zachowania runtime
|
||||
- rejestrowania zachowania środowiska uruchomieniowego
|
||||
- deklarowania punktów wejścia kodu
|
||||
- metadanych instalacji npm
|
||||
|
||||
Te elementy należą do kodu Twojego pluginu i `package.json`.
|
||||
To należy do kodu twojego pluginu i `package.json`.
|
||||
|
||||
## Minimalny przykład
|
||||
|
||||
@ -143,64 +142,64 @@ Te elementy należą do kodu Twojego pluginu i `package.json`.
|
||||
}
|
||||
```
|
||||
|
||||
## Odniesienie do pól najwyższego poziomu
|
||||
## Odwołanie do pól najwyższego poziomu
|
||||
|
||||
| Pole | Wymagane | Typ | Co oznacza |
|
||||
| ----------------------------------- | -------- | -------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
||||
| `id` | Tak | `string` | Kanoniczny identyfikator pluginu. To identyfikator używany w `plugins.entries.<id>`. |
|
||||
| `configSchema` | Tak | `object` | Wbudowany schemat JSON dla konfiguracji tego pluginu. |
|
||||
| `enabledByDefault` | Nie | `true` | Oznacza plugin bundlowany jako domyślnie włączony. Pomiń to pole lub ustaw dowolną wartość inną niż `true`, aby pozostawić plugin domyślnie wyłączony. |
|
||||
| `legacyPluginIds` | Nie | `string[]` | Starsze identyfikatory normalizowane do tego kanonicznego identyfikatora pluginu. |
|
||||
| `autoEnableWhenConfiguredProviders` | Nie | `string[]` | Identyfikatory dostawców, które powinny automatycznie włączać ten plugin, gdy uwierzytelnianie, konfiguracja lub odwołania do modeli je wskazują. |
|
||||
| `kind` | Nie | `"memory"` \| `"context-engine"` | Deklaruje wyłączny rodzaj pluginu używany przez `plugins.slots.*`. |
|
||||
| `channels` | Nie | `string[]` | Identyfikatory kanałów należących do tego pluginu. Używane do wykrywania i walidacji konfiguracji. |
|
||||
| `providers` | Nie | `string[]` | Identyfikatory dostawców należących do tego pluginu. |
|
||||
| `modelSupport` | Nie | `object` | Skrócone metadane rodzin modeli należące do manifestu, używane do automatycznego załadowania pluginu przed runtime. |
|
||||
| `cliBackends` | Nie | `string[]` | Identyfikatory backendów inferencji CLI należących do tego pluginu. Używane do automatycznej aktywacji przy uruchomieniu na podstawie jawnych odwołań w konfiguracji. |
|
||||
| `commandAliases` | Nie | `object[]` | Nazwy poleceń należące do tego pluginu, które powinny generować diagnostykę konfiguracji i CLI świadomą pluginu przed załadowaniem runtime. |
|
||||
| `providerAuthEnvVars` | Nie | `Record<string, string[]>` | Lekkie metadane zmiennych środowiskowych uwierzytelniania dostawcy, które OpenClaw może sprawdzać bez ładowania kodu pluginu. |
|
||||
| `providerAuthAliases` | Nie | `Record<string, string>` | Identyfikatory dostawców, które powinny ponownie używać innego identyfikatora dostawcy do wyszukiwania uwierzytelniania, na przykład dostawca do kodowania współdzielący bazowy klucz API i profile auth. |
|
||||
| `channelEnvVars` | Nie | `Record<string, string[]>` | Lekkie metadane zmiennych środowiskowych kanału, które OpenClaw może sprawdzać bez ładowania kodu pluginu. Używaj tego do konfiguracji kanału sterowanej env lub powierzchni auth, które powinny widzieć ogólne pomocniki uruchamiania/konfiguracji. |
|
||||
| `providerAuthChoices` | Nie | `object[]` | Lekkie metadane wyboru uwierzytelniania dla selektorów onboardingu, rozpoznawania preferowanego dostawcy i prostego mapowania flag CLI. |
|
||||
| `activation` | Nie | `object` | Lekkie wskazówki aktywacji dla ładowania wyzwalanego przez dostawcę, polecenie, kanał, trasę i możliwości. To tylko metadane; rzeczywiste zachowanie nadal należy do runtime pluginu. |
|
||||
| `setup` | Nie | `object` | Lekkie deskryptory konfiguracji/onboardingu, które powierzchnie wykrywania i konfiguracji mogą sprawdzać bez ładowania runtime pluginu. |
|
||||
| `contracts` | Nie | `object` | Statyczna migawka możliwości bundlowanych dla własności mowy, transkrypcji w czasie rzeczywistym, głosu w czasie rzeczywistym, rozumienia multimediów, generowania obrazów, generowania muzyki, generowania wideo, pobierania z sieci, wyszukiwania w sieci i własności narzędzi. |
|
||||
| `channelConfigs` | Nie | `Record<string, object>` | Metadane konfiguracji kanału należące do manifestu, scalane z powierzchniami wykrywania i walidacji przed załadowaniem runtime. |
|
||||
| `skills` | Nie | `string[]` | Katalogi Skills do załadowania, względne względem katalogu głównego pluginu. |
|
||||
| `name` | Nie | `string` | Czytelna dla człowieka nazwa pluginu. |
|
||||
| `description` | Nie | `string` | Krótkie podsumowanie wyświetlane na powierzchniach pluginu. |
|
||||
| `version` | Nie | `string` | Informacyjna wersja pluginu. |
|
||||
| `uiHints` | Nie | `Record<string, object>` | Etykiety UI, placeholdery i wskazówki dotyczące wrażliwości dla pól konfiguracji. |
|
||||
| Pole | Wymagane | Typ | Co oznacza |
|
||||
| ----------------------------------- | -------- | -------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `id` | Tak | `string` | Kanoniczny identyfikator pluginu. Jest to identyfikator używany w `plugins.entries.<id>`. |
|
||||
| `configSchema` | Tak | `object` | Wbudowany schemat JSON dla konfiguracji tego pluginu. |
|
||||
| `enabledByDefault` | Nie | `true` | Oznacza plugin pakietowy jako domyślnie włączony. Pomiń to pole lub ustaw dowolną wartość inną niż `true`, aby plugin pozostał domyślnie wyłączony. |
|
||||
| `legacyPluginIds` | Nie | `string[]` | Starsze identyfikatory, które są normalizowane do tego kanonicznego identyfikatora pluginu. |
|
||||
| `autoEnableWhenConfiguredProviders` | Nie | `string[]` | Identyfikatory dostawców, które powinny automatycznie włączać ten plugin, gdy uwierzytelnianie, konfiguracja lub odwołania do modeli o nich wspominają. |
|
||||
| `kind` | Nie | `"memory"` \| `"context-engine"` | Deklaruje wyłączny rodzaj pluginu używany przez `plugins.slots.*`. |
|
||||
| `channels` | Nie | `string[]` | Identyfikatory kanałów należących do tego pluginu. Używane do wykrywania i walidacji konfiguracji. |
|
||||
| `providers` | Nie | `string[]` | Identyfikatory dostawców należących do tego pluginu. |
|
||||
| `modelSupport` | Nie | `object` | Skrócone metadane rodziny modeli należące do manifestu, używane do automatycznego ładowania pluginu przed środowiskiem uruchomieniowym. |
|
||||
| `cliBackends` | Nie | `string[]` | Identyfikatory backendów inferencji CLI należących do tego pluginu. Używane do automatycznej aktywacji przy uruchomieniu na podstawie jawnych odwołań w konfiguracji. |
|
||||
| `commandAliases` | Nie | `object[]` | Nazwy poleceń należące do tego pluginu, które powinny generować świadome pluginu diagnostyki konfiguracji i CLI przed załadowaniem środowiska uruchomieniowego. |
|
||||
| `providerAuthEnvVars` | Nie | `Record<string, string[]>` | Lekkie metadane env uwierzytelniania dostawcy, które OpenClaw może sprawdzić bez ładowania kodu pluginu. |
|
||||
| `providerAuthAliases` | Nie | `Record<string, string>` | Identyfikatory dostawców, które powinny używać ponownie innego identyfikatora dostawcy do wyszukiwania uwierzytelniania, na przykład dostawca programistyczny współdzielący bazowy klucz API i profile uwierzytelniania dostawcy. |
|
||||
| `channelEnvVars` | Nie | `Record<string, string[]>` | Lekkie metadane env kanału, które OpenClaw może sprawdzić bez ładowania kodu pluginu. Użyj tego dla konfiguracji kanału sterowanej przez env lub powierzchni uwierzytelniania, które ogólne pomocniki uruchamiania/konfiguracji powinny widzieć. |
|
||||
| `providerAuthChoices` | Nie | `object[]` | Lekkie metadane wyboru uwierzytelniania dla selektorów onboardingu, rozstrzygania preferowanego dostawcy i prostego mapowania flag CLI. |
|
||||
| `activation` | Nie | `object` | Lekkie wskazówki aktywacji dla ładowania wyzwalanego przez dostawcę, polecenie, kanał, trasę i możliwości. Tylko metadane; rzeczywiste zachowanie nadal należy do środowiska uruchomieniowego pluginu. |
|
||||
| `setup` | Nie | `object` | Lekkie deskryptory konfiguracji/onboardingu, które powierzchnie wykrywania i konfiguracji mogą sprawdzać bez ładowania środowiska uruchomieniowego pluginu. |
|
||||
| `contracts` | Nie | `object` | Statyczna migawka możliwości pakietowych dla własności mowy, transkrypcji w czasie rzeczywistym, głosu w czasie rzeczywistym, rozumienia mediów, generowania obrazów, generowania muzyki, generowania wideo, pobierania z sieci, wyszukiwania w sieci i narzędzi. |
|
||||
| `channelConfigs` | Nie | `Record<string, object>` | Metadane konfiguracji kanału należące do manifestu, scalane z powierzchniami wykrywania i walidacji przed załadowaniem środowiska uruchomieniowego. |
|
||||
| `skills` | Nie | `string[]` | Katalogi Skills do załadowania, względnie do katalogu głównego pluginu. |
|
||||
| `name` | Nie | `string` | Czytelna dla człowieka nazwa pluginu. |
|
||||
| `description` | Nie | `string` | Krótkie podsumowanie wyświetlane na powierzchniach pluginu. |
|
||||
| `version` | Nie | `string` | Informacyjna wersja pluginu. |
|
||||
| `uiHints` | Nie | `Record<string, object>` | Etykiety UI, placeholdery i wskazówki dotyczące wrażliwości dla pól konfiguracji. |
|
||||
|
||||
## Odniesienie do `providerAuthChoices`
|
||||
## Odwołanie do `providerAuthChoices`
|
||||
|
||||
Każdy wpis `providerAuthChoices` opisuje jeden wybór onboardingu lub uwierzytelniania.
|
||||
OpenClaw odczytuje to przed załadowaniem runtime dostawcy.
|
||||
OpenClaw odczytuje to przed załadowaniem środowiska uruchomieniowego dostawcy.
|
||||
|
||||
| Pole | Wymagane | Typ | Co oznacza |
|
||||
| --------------------- | -------- | ----------------------------------------------- | -------------------------------------------------------------------------------------------------------- |
|
||||
| `provider` | Tak | `string` | Identyfikator dostawcy, do którego należy ten wybór. |
|
||||
| `method` | Tak | `string` | Identyfikator metody uwierzytelniania, do której należy przekierować. |
|
||||
| `method` | Tak | `string` | Identyfikator metody uwierzytelniania, do której należy przekazać żądanie. |
|
||||
| `choiceId` | Tak | `string` | Stabilny identyfikator wyboru uwierzytelniania używany przez onboarding i przepływy CLI. |
|
||||
| `choiceLabel` | Nie | `string` | Etykieta widoczna dla użytkownika. Jeśli zostanie pominięta, OpenClaw użyje `choiceId`. |
|
||||
| `choiceLabel` | Nie | `string` | Etykieta widoczna dla użytkownika. Jeśli zostanie pominięta, OpenClaw użyje wartości `choiceId`. |
|
||||
| `choiceHint` | Nie | `string` | Krótki tekst pomocniczy dla selektora. |
|
||||
| `assistantPriority` | Nie | `number` | Niższe wartości są sortowane wcześniej w interaktywnych selektorach sterowanych przez asystenta. |
|
||||
| `assistantVisibility` | Nie | `"visible"` \| `"manual-only"` | Ukrywa wybór w selektorach asystenta, nadal pozwalając na ręczny wybór w CLI. |
|
||||
| `deprecatedChoiceIds` | Nie | `string[]` | Starsze identyfikatory wyboru, które powinny przekierowywać użytkowników do tego zastępczego wyboru. |
|
||||
| `groupId` | Nie | `string` | Opcjonalny identyfikator grupy do grupowania powiązanych wyborów. |
|
||||
| `groupLabel` | Nie | `string` | Etykieta tej grupy widoczna dla użytkownika. |
|
||||
| `assistantVisibility` | Nie | `"visible"` \| `"manual-only"` | Ukrywa wybór w selektorach asystenta, ale nadal pozwala na ręczny wybór w CLI. |
|
||||
| `deprecatedChoiceIds` | Nie | `string[]` | Starsze identyfikatory wyboru, które powinny przekierowywać użytkowników do tego zamiennego wyboru. |
|
||||
| `groupId` | Nie | `string` | Opcjonalny identyfikator grupy do grupowania powiązanych wyborów. |
|
||||
| `groupLabel` | Nie | `string` | Etykieta widoczna dla użytkownika dla tej grupy. |
|
||||
| `groupHint` | Nie | `string` | Krótki tekst pomocniczy dla grupy. |
|
||||
| `optionKey` | Nie | `string` | Wewnętrzny klucz opcji dla prostych przepływów auth z jedną flagą. |
|
||||
| `optionKey` | Nie | `string` | Wewnętrzny klucz opcji dla prostych przepływów uwierzytelniania z jedną flagą. |
|
||||
| `cliFlag` | Nie | `string` | Nazwa flagi CLI, na przykład `--openrouter-api-key`. |
|
||||
| `cliOption` | Nie | `string` | Pełna postać opcji CLI, na przykład `--openrouter-api-key <key>`. |
|
||||
| `cliDescription` | Nie | `string` | Opis używany w pomocy CLI. |
|
||||
| `onboardingScopes` | Nie | `Array<"text-inference" \| "image-generation">` | Na których powierzchniach onboardingu ten wybór powinien się pojawiać. Jeśli zostanie pominięte, domyślnie używane jest `["text-inference"]`. |
|
||||
|
||||
## Odniesienie do `commandAliases`
|
||||
## Odwołanie do `commandAliases`
|
||||
|
||||
Używaj `commandAliases`, gdy plugin jest właścicielem nazwy polecenia runtime, którą użytkownicy mogą
|
||||
Użyj `commandAliases`, gdy plugin jest właścicielem nazwy polecenia środowiska uruchomieniowego, którą użytkownicy mogą
|
||||
omyłkowo umieścić w `plugins.allow` lub próbować uruchomić jako główne polecenie CLI. OpenClaw
|
||||
używa tych metadanych do diagnostyki bez importowania kodu runtime pluginu.
|
||||
używa tych metadanych do diagnostyki bez importowania kodu środowiska uruchomieniowego pluginu.
|
||||
|
||||
```json
|
||||
{
|
||||
@ -214,19 +213,22 @@ używa tych metadanych do diagnostyki bez importowania kodu runtime pluginu.
|
||||
}
|
||||
```
|
||||
|
||||
| Pole | Wymagane | Typ | Co oznacza |
|
||||
| ------------ | -------- | ----------------- | -------------------------------------------------------------------------- |
|
||||
| `name` | Tak | `string` | Nazwa polecenia należącego do tego pluginu. |
|
||||
| `kind` | Nie | `"runtime-slash"` | Oznacza alias jako polecenie slash czatu, a nie główne polecenie CLI. |
|
||||
| `cliCommand` | Nie | `string` | Powiązane główne polecenie CLI, które można zasugerować dla operacji CLI, jeśli istnieje. |
|
||||
| Pole | Wymagane | Typ | Co oznacza |
|
||||
| ------------ | -------- | ----------------- | --------------------------------------------------------------------------- |
|
||||
| `name` | Tak | `string` | Nazwa polecenia należąca do tego pluginu. |
|
||||
| `kind` | Nie | `"runtime-slash"` | Oznacza alias jako polecenie slash czatu, a nie główne polecenie CLI. |
|
||||
| `cliCommand` | Nie | `string` | Powiązane główne polecenie CLI, które należy zasugerować dla operacji CLI, jeśli istnieje. |
|
||||
|
||||
## Odniesienie do `activation`
|
||||
## Odwołanie do `activation`
|
||||
|
||||
Używaj `activation`, gdy plugin może w prosty sposób zadeklarować, które zdarzenia płaszczyzny sterowania
|
||||
powinny później go aktywować.
|
||||
Użyj `activation`, gdy plugin może w prosty sposób zadeklarować, które zdarzenia płaszczyzny sterowania
|
||||
powinny aktywować go później.
|
||||
|
||||
Ten blok zawiera wyłącznie metadane. Nie rejestruje zachowania runtime i nie
|
||||
zastępuje `register(...)`, `setupEntry` ani innych punktów wejścia runtime/pluginu.
|
||||
Ten blok zawiera tylko metadane. Nie rejestruje zachowania środowiska uruchomieniowego i nie
|
||||
zastępuje `register(...)`, `setupEntry` ani innych punktów wejścia środowiska uruchomieniowego/pluginu.
|
||||
Obecni konsumenci używają go jako wskazówki zawężającej przed szerszym ładowaniem pluginu, więc
|
||||
brak metadanych aktywacji wpływa tylko na wydajność; nie powinien zmieniać
|
||||
poprawności.
|
||||
|
||||
```json
|
||||
{
|
||||
@ -240,18 +242,22 @@ zastępuje `register(...)`, `setupEntry` ani innych punktów wejścia runtime/pl
|
||||
}
|
||||
```
|
||||
|
||||
| Pole | Wymagane | Typ | Co oznacza |
|
||||
| ---------------- | -------- | ---------------------------------------------------- | ------------------------------------------------------------------- |
|
||||
| Pole | Wymagane | Typ | Co oznacza |
|
||||
| ---------------- | -------- | ---------------------------------------------------- | --------------------------------------------------------------------- |
|
||||
| `onProviders` | Nie | `string[]` | Identyfikatory dostawców, które powinny aktywować ten plugin po żądaniu. |
|
||||
| `onCommands` | Nie | `string[]` | Identyfikatory poleceń, które powinny aktywować ten plugin. |
|
||||
| `onChannels` | Nie | `string[]` | Identyfikatory kanałów, które powinny aktywować ten plugin. |
|
||||
| `onRoutes` | Nie | `string[]` | Rodzaje tras, które powinny aktywować ten plugin. |
|
||||
| `onCapabilities` | Nie | `Array<"provider" \| "channel" \| "tool" \| "hook">` | Ogólne wskazówki dotyczące możliwości używane przez planowanie aktywacji płaszczyzny sterowania. |
|
||||
| `onCommands` | Nie | `string[]` | Identyfikatory poleceń, które powinny aktywować ten plugin. |
|
||||
| `onChannels` | Nie | `string[]` | Identyfikatory kanałów, które powinny aktywować ten plugin. |
|
||||
| `onRoutes` | Nie | `string[]` | Rodzaje tras, które powinny aktywować ten plugin. |
|
||||
| `onCapabilities` | Nie | `Array<"provider" \| "channel" \| "tool" \| "hook">` | Ogólne wskazówki dotyczące możliwości używane przy planowaniu aktywacji płaszczyzny sterowania. |
|
||||
|
||||
## Odniesienie do `setup`
|
||||
W przypadku planowania wyzwalanego poleceniem OpenClaw nadal korzysta z awaryjnego mechanizmu
|
||||
opartego na starszych `commandAliases[].cliCommand` lub `commandAliases[].name`, gdy plugin
|
||||
nie dodał jeszcze jawnych metadanych `activation.onCommands`.
|
||||
|
||||
Używaj `setup`, gdy powierzchnie konfiguracji i onboardingu potrzebują lekkich metadanych należących do pluginu
|
||||
przed załadowaniem runtime.
|
||||
## Odwołanie do `setup`
|
||||
|
||||
Użyj `setup`, gdy powierzchnie konfiguracji i onboardingu potrzebują prostych metadanych należących do pluginu
|
||||
przed załadowaniem środowiska uruchomieniowego.
|
||||
|
||||
```json
|
||||
{
|
||||
@ -272,35 +278,46 @@ przed załadowaniem runtime.
|
||||
|
||||
Pole najwyższego poziomu `cliBackends` pozostaje prawidłowe i nadal opisuje backendy inferencji CLI.
|
||||
`setup.cliBackends` to powierzchnia deskryptorów specyficzna dla konfiguracji dla
|
||||
przepływów płaszczyzny sterowania/konfiguracji, która powinna pozostać wyłącznie metadanymi.
|
||||
przepływów płaszczyzny sterowania/konfiguracji, które powinny pozostać wyłącznie metadanymi.
|
||||
|
||||
### Odniesienie do `setup.providers`
|
||||
Gdy są obecne, `setup.providers` i `setup.cliBackends` są preferowaną
|
||||
powierzchnią wyszukiwania opartą najpierw na deskryptorach dla wykrywania konfiguracji. Jeśli deskryptor
|
||||
jedynie zawęża kandydujący plugin, a konfiguracja nadal potrzebuje bogatszych hooków czasu konfiguracji,
|
||||
ustaw `requiresRuntime: true` i pozostaw `setup-api` jako
|
||||
awaryjną ścieżkę wykonania.
|
||||
|
||||
| Pole | Wymagane | Typ | Co oznacza |
|
||||
| ------------- | -------- | ---------- | ----------------------------------------------------------------------------------------- |
|
||||
| `id` | Tak | `string` | Identyfikator dostawcy udostępniany podczas konfiguracji lub onboardingu. |
|
||||
| `authMethods` | Nie | `string[]` | Identyfikatory metod konfiguracji/auth, które ten dostawca obsługuje bez ładowania pełnego runtime. |
|
||||
| `envVars` | Nie | `string[]` | Zmienne środowiskowe, które ogólne powierzchnie konfiguracji/statusu mogą sprawdzać przed załadowaniem runtime pluginu. |
|
||||
Ponieważ wyszukiwanie konfiguracji może wykonywać kod `setup-api` należący do pluginu,
|
||||
znormalizowane wartości `setup.providers[].id` i `setup.cliBackends[]` muszą pozostać unikalne globalnie
|
||||
wśród wykrytych pluginów. Niejednoznaczna własność kończy się bezpieczną odmową zamiast wybierania
|
||||
zwycięzcy na podstawie kolejności wykrywania.
|
||||
|
||||
### Odwołanie do `setup.providers`
|
||||
|
||||
| Pole | Wymagane | Typ | Co oznacza |
|
||||
| ------------- | -------- | ---------- | --------------------------------------------------------------------------------------- |
|
||||
| `id` | Tak | `string` | Identyfikator dostawcy udostępniany podczas konfiguracji lub onboardingu. Zachowaj globalną unikalność znormalizowanych identyfikatorów. |
|
||||
| `authMethods` | Nie | `string[]` | Identyfikatory metod konfiguracji/uwierzytelniania obsługiwanych przez tego dostawcę bez ładowania pełnego środowiska uruchomieniowego. |
|
||||
| `envVars` | Nie | `string[]` | Zmienne env, które ogólne powierzchnie konfiguracji/statusu mogą sprawdzać przed załadowaniem środowiska uruchomieniowego pluginu. |
|
||||
|
||||
### Pola `setup`
|
||||
|
||||
| Pole | Wymagane | Typ | Co oznacza |
|
||||
| ------------------ | -------- | ---------- | ----------------------------------------------------------------------------- |
|
||||
| `providers` | Nie | `object[]` | Deskryptory konfiguracji dostawców udostępniane podczas konfiguracji i onboardingu. |
|
||||
| `cliBackends` | Nie | `string[]` | Identyfikatory backendów dostępnych podczas konfiguracji bez pełnej aktywacji runtime. |
|
||||
| `configMigrations` | Nie | `string[]` | Identyfikatory migracji konfiguracji należące do powierzchni konfiguracji tego pluginu. |
|
||||
| `requiresRuntime` | Nie | `boolean` | Czy konfiguracja nadal wymaga wykonania runtime pluginu po wyszukaniu deskryptora. |
|
||||
| Pole | Wymagane | Typ | Co oznacza |
|
||||
| ------------------ | -------- | ---------- | --------------------------------------------------------------------------------------------------- |
|
||||
| `providers` | Nie | `object[]` | Deskryptory konfiguracji dostawców udostępniane podczas konfiguracji i onboardingu. |
|
||||
| `cliBackends` | Nie | `string[]` | Identyfikatory backendów czasu konfiguracji używane do wyszukiwania konfiguracji opartego najpierw na deskryptorach. Zachowaj globalną unikalność znormalizowanych identyfikatorów. |
|
||||
| `configMigrations` | Nie | `string[]` | Identyfikatory migracji konfiguracji należące do powierzchni konfiguracji tego pluginu. |
|
||||
| `requiresRuntime` | Nie | `boolean` | Czy konfiguracja nadal wymaga wykonania `setup-api` po wyszukaniu deskryptora. |
|
||||
|
||||
## Odniesienie do `uiHints`
|
||||
## Odwołanie do `uiHints`
|
||||
|
||||
`uiHints` to mapa od nazw pól konfiguracji do niewielkich wskazówek renderowania.
|
||||
`uiHints` to mapa od nazw pól konfiguracji do małych wskazówek renderowania.
|
||||
|
||||
```json
|
||||
{
|
||||
"uiHints": {
|
||||
"apiKey": {
|
||||
"label": "API key",
|
||||
"help": "Used for OpenRouter requests",
|
||||
"label": "Klucz API",
|
||||
"help": "Używany do żądań OpenRouter",
|
||||
"placeholder": "sk-or-v1-...",
|
||||
"sensitive": true
|
||||
}
|
||||
@ -310,19 +327,19 @@ przepływów płaszczyzny sterowania/konfiguracji, która powinna pozostać wył
|
||||
|
||||
Każda wskazówka pola może zawierać:
|
||||
|
||||
| Pole | Typ | Co oznacza |
|
||||
| ------------- | ---------- | ---------------------------------------- |
|
||||
| `label` | `string` | Etykieta pola widoczna dla użytkownika. |
|
||||
| `help` | `string` | Krótki tekst pomocniczy. |
|
||||
| `tags` | `string[]` | Opcjonalne tagi UI. |
|
||||
| `advanced` | `boolean` | Oznacza pole jako zaawansowane. |
|
||||
| `sensitive` | `boolean` | Oznacza pole jako sekretne lub wrażliwe. |
|
||||
| `placeholder` | `string` | Tekst placeholdera dla pól formularza. |
|
||||
| Pole | Typ | Co oznacza |
|
||||
| ------------- | ---------- | --------------------------------------- |
|
||||
| `label` | `string` | Etykieta pola widoczna dla użytkownika. |
|
||||
| `help` | `string` | Krótki tekst pomocniczy. |
|
||||
| `tags` | `string[]` | Opcjonalne tagi UI. |
|
||||
| `advanced` | `boolean` | Oznacza pole jako zaawansowane. |
|
||||
| `sensitive` | `boolean` | Oznacza pole jako tajne lub wrażliwe. |
|
||||
| `placeholder` | `string` | Tekst placeholdera dla pól formularza. |
|
||||
|
||||
## Odniesienie do `contracts`
|
||||
## Odwołanie do `contracts`
|
||||
|
||||
Używaj `contracts` wyłącznie do statycznych metadanych własności możliwości, które OpenClaw może
|
||||
odczytać bez importowania runtime pluginu.
|
||||
Używaj `contracts` tylko dla statycznych metadanych własności możliwości, które OpenClaw może
|
||||
odczytać bez importowania środowiska uruchomieniowego pluginu.
|
||||
|
||||
```json
|
||||
{
|
||||
@ -344,20 +361,20 @@ Każda lista jest opcjonalna:
|
||||
|
||||
| Pole | Typ | Co oznacza |
|
||||
| -------------------------------- | ---------- | --------------------------------------------------------------- |
|
||||
| `speechProviders` | `string[]` | Identyfikatory dostawców mowy należące do tego pluginu. |
|
||||
| `realtimeTranscriptionProviders` | `string[]` | Identyfikatory dostawców transkrypcji w czasie rzeczywistym należące do tego pluginu. |
|
||||
| `realtimeVoiceProviders` | `string[]` | Identyfikatory dostawców głosu w czasie rzeczywistym należące do tego pluginu. |
|
||||
| `mediaUnderstandingProviders` | `string[]` | Identyfikatory dostawców rozumienia multimediów należące do tego pluginu. |
|
||||
| `imageGenerationProviders` | `string[]` | Identyfikatory dostawców generowania obrazów należące do tego pluginu. |
|
||||
| `videoGenerationProviders` | `string[]` | Identyfikatory dostawców generowania wideo należące do tego pluginu. |
|
||||
| `webFetchProviders` | `string[]` | Identyfikatory dostawców pobierania z sieci należące do tego pluginu. |
|
||||
| `webSearchProviders` | `string[]` | Identyfikatory dostawców wyszukiwania w sieci należące do tego pluginu. |
|
||||
| `tools` | `string[]` | Nazwy narzędzi agenta należące do tego pluginu na potrzeby sprawdzania kontraktów bundlowanych. |
|
||||
| `speechProviders` | `string[]` | Identyfikatory dostawców mowy należących do tego pluginu. |
|
||||
| `realtimeTranscriptionProviders` | `string[]` | Identyfikatory dostawców transkrypcji w czasie rzeczywistym należących do tego pluginu. |
|
||||
| `realtimeVoiceProviders` | `string[]` | Identyfikatory dostawców głosu w czasie rzeczywistym należących do tego pluginu. |
|
||||
| `mediaUnderstandingProviders` | `string[]` | Identyfikatory dostawców rozumienia mediów należących do tego pluginu. |
|
||||
| `imageGenerationProviders` | `string[]` | Identyfikatory dostawców generowania obrazów należących do tego pluginu. |
|
||||
| `videoGenerationProviders` | `string[]` | Identyfikatory dostawców generowania wideo należących do tego pluginu. |
|
||||
| `webFetchProviders` | `string[]` | Identyfikatory dostawców pobierania z sieci należących do tego pluginu. |
|
||||
| `webSearchProviders` | `string[]` | Identyfikatory dostawców wyszukiwania w sieci należących do tego pluginu. |
|
||||
| `tools` | `string[]` | Nazwy narzędzi agenta należących do tego pluginu na potrzeby kontroli kontraktów pakietowych. |
|
||||
|
||||
## Odniesienie do `channelConfigs`
|
||||
## Odwołanie do `channelConfigs`
|
||||
|
||||
Używaj `channelConfigs`, gdy plugin kanału potrzebuje lekkich metadanych konfiguracji przed
|
||||
załadowaniem runtime.
|
||||
Użyj `channelConfigs`, gdy plugin kanału potrzebuje prostych metadanych konfiguracji przed
|
||||
załadowaniem środowiska uruchomieniowego.
|
||||
|
||||
```json
|
||||
{
|
||||
@ -372,12 +389,12 @@ załadowaniem runtime.
|
||||
},
|
||||
"uiHints": {
|
||||
"homeserverUrl": {
|
||||
"label": "Homeserver URL",
|
||||
"label": "URL homeserwera",
|
||||
"placeholder": "https://matrix.example.com"
|
||||
}
|
||||
},
|
||||
"label": "Matrix",
|
||||
"description": "Połączenie z homeserverem Matrix",
|
||||
"description": "Połączenie z homeserwerem Matrix",
|
||||
"preferOver": ["matrix-legacy"]
|
||||
}
|
||||
}
|
||||
@ -386,18 +403,18 @@ załadowaniem runtime.
|
||||
|
||||
Każdy wpis kanału może zawierać:
|
||||
|
||||
| Pole | Typ | Co oznacza |
|
||||
| ------------- | ------------------------ | --------------------------------------------------------------------------------------------- |
|
||||
| Pole | Typ | Co oznacza |
|
||||
| ------------- | ------------------------ | ------------------------------------------------------------------------------------------ |
|
||||
| `schema` | `object` | Schemat JSON dla `channels.<id>`. Wymagany dla każdego zadeklarowanego wpisu konfiguracji kanału. |
|
||||
| `uiHints` | `Record<string, object>` | Opcjonalne etykiety UI/placeholdery/wskazówki dotyczące wrażliwości dla tej sekcji konfiguracji kanału. |
|
||||
| `label` | `string` | Etykieta kanału scalana z powierzchniami wyboru i inspekcji, gdy metadane runtime nie są jeszcze gotowe. |
|
||||
| `description` | `string` | Krótki opis kanału dla powierzchni inspekcji i katalogu. |
|
||||
| `preferOver` | `string[]` | Starsze lub mniej priorytetowe identyfikatory pluginów, które ten kanał powinien wyprzedzać na powierzchniach wyboru. |
|
||||
| `label` | `string` | Etykieta kanału scalana z powierzchniami selektora i inspekcji, gdy metadane środowiska uruchomieniowego nie są gotowe. |
|
||||
| `description` | `string` | Krótki opis kanału dla powierzchni inspekcji i katalogu. |
|
||||
| `preferOver` | `string[]` | Starsze lub niżej priorytetowe identyfikatory pluginów, które ten kanał powinien wyprzedzać na powierzchniach wyboru. |
|
||||
|
||||
## Odniesienie do `modelSupport`
|
||||
## Odwołanie do `modelSupport`
|
||||
|
||||
Używaj `modelSupport`, gdy OpenClaw ma wywnioskować plugin Twojego dostawcy na podstawie
|
||||
skróconych identyfikatorów modeli, takich jak `gpt-5.4` lub `claude-sonnet-4.6`, zanim runtime pluginu
|
||||
Użyj `modelSupport`, gdy OpenClaw ma wnioskować o pluginie dostawcy na podstawie
|
||||
skrótowych identyfikatorów modeli, takich jak `gpt-5.4` lub `claude-sonnet-4.6`, zanim środowisko uruchomieniowe pluginu
|
||||
zostanie załadowane.
|
||||
|
||||
```json
|
||||
@ -411,69 +428,69 @@ zostanie załadowane.
|
||||
|
||||
OpenClaw stosuje następujący priorytet:
|
||||
|
||||
- jawne odwołania `provider/model` używają należących do właściciela metadanych manifestu `providers`
|
||||
- jawne odwołania `provider/model` używają metadanych manifestu `providers` właściciela
|
||||
- `modelPatterns` mają pierwszeństwo przed `modelPrefixes`
|
||||
- jeśli pasują jednocześnie jeden plugin niebundlowany i jeden plugin bundlowany, wygrywa plugin niebundlowany
|
||||
- pozostała niejednoznaczność jest ignorowana, dopóki użytkownik lub konfiguracja nie określą dostawcy
|
||||
- jeśli jeden plugin zewnętrzny i jeden plugin pakietowy pasują jednocześnie, wygrywa plugin zewnętrzny
|
||||
- pozostała niejednoznaczność jest ignorowana, dopóki użytkownik lub konfiguracja nie określi dostawcy
|
||||
|
||||
Pola:
|
||||
|
||||
| Pole | Typ | Co oznacza |
|
||||
| --------------- | ---------- | --------------------------------------------------------------------------------- |
|
||||
| `modelPrefixes` | `string[]` | Prefiksy dopasowywane przez `startsWith` do skróconych identyfikatorów modeli. |
|
||||
| `modelPatterns` | `string[]` | Źródła regex dopasowywane do skróconych identyfikatorów modeli po usunięciu sufiksu profilu. |
|
||||
| Pole | Typ | Co oznacza |
|
||||
| --------------- | ---------- | ----------------------------------------------------------------------------- |
|
||||
| `modelPrefixes` | `string[]` | Prefiksy dopasowywane za pomocą `startsWith` do skrótowych identyfikatorów modeli. |
|
||||
| `modelPatterns` | `string[]` | Źródła regex dopasowywane do skrótowych identyfikatorów modeli po usunięciu sufiksu profilu. |
|
||||
|
||||
Starsze klucze możliwości na najwyższym poziomie są przestarzałe. Użyj `openclaw doctor --fix`, aby
|
||||
Starsze klucze możliwości najwyższego poziomu są przestarzałe. Użyj `openclaw doctor --fix`, aby
|
||||
przenieść `speechProviders`, `realtimeTranscriptionProviders`,
|
||||
`realtimeVoiceProviders`, `mediaUnderstandingProviders`,
|
||||
`imageGenerationProviders`, `videoGenerationProviders`,
|
||||
`webFetchProviders` i `webSearchProviders` pod `contracts`; zwykłe
|
||||
`webFetchProviders` i `webSearchProviders` do `contracts`; zwykłe
|
||||
ładowanie manifestu nie traktuje już tych pól najwyższego poziomu jako
|
||||
własności możliwości.
|
||||
|
||||
## Manifest a package.json
|
||||
|
||||
Te dwa pliki służą do różnych zadań:
|
||||
Te dwa pliki pełnią różne role:
|
||||
|
||||
| Plik | Używaj go do |
|
||||
| ---------------------- | --------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `openclaw.plugin.json` | Wykrywania, walidacji konfiguracji, metadanych wyboru auth i wskazówek UI, które muszą istnieć przed uruchomieniem kodu pluginu |
|
||||
| `package.json` | Metadanych npm, instalacji zależności i bloku `openclaw` używanego do punktów wejścia, ograniczeń instalacji, konfiguracji lub metadanych katalogu |
|
||||
| Plik | Używaj go do |
|
||||
| ---------------------- | ------------------------------------------------------------------------------------------------------------------------------ |
|
||||
| `openclaw.plugin.json` | Wykrywania, walidacji konfiguracji, metadanych wyboru uwierzytelniania i wskazówek UI, które muszą istnieć przed uruchomieniem kodu pluginu |
|
||||
| `package.json` | Metadanych npm, instalacji zależności oraz bloku `openclaw` używanego do punktów wejścia, kontroli instalacji, konfiguracji lub metadanych katalogu |
|
||||
|
||||
Jeśli nie masz pewności, gdzie powinien znaleźć się dany fragment metadanych, użyj tej zasady:
|
||||
|
||||
- jeśli OpenClaw musi znać go przed załadowaniem kodu pluginu, umieść go w `openclaw.plugin.json`
|
||||
- jeśli dotyczy pakowania, plików wejściowych lub zachowania instalacji npm, umieść go w `package.json`
|
||||
- jeśli OpenClaw musi o tym wiedzieć przed załadowaniem kodu pluginu, umieść to w `openclaw.plugin.json`
|
||||
- jeśli dotyczy to pakowania, plików wejściowych lub zachowania instalacji npm, umieść to w `package.json`
|
||||
|
||||
### Pola `package.json`, które wpływają na wykrywanie
|
||||
|
||||
Niektóre metadane pluginu sprzed uruchomienia runtime celowo znajdują się w `package.json` pod
|
||||
blokiem `openclaw`, a nie w `openclaw.plugin.json`.
|
||||
Niektóre metadane pluginów sprzed uruchomienia celowo znajdują się w `package.json` w bloku
|
||||
`openclaw`, a nie w `openclaw.plugin.json`.
|
||||
|
||||
Ważne przykłady:
|
||||
|
||||
| Pole | Co oznacza |
|
||||
| ----------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `openclaw.extensions` | Deklaruje natywne punkty wejścia pluginu. |
|
||||
| `openclaw.setupEntry` | Lekki punkt wejścia wyłącznie do konfiguracji używany podczas onboardingu i odroczonego uruchamiania kanału. |
|
||||
| `openclaw.channel` | Lekkie metadane katalogu kanałów, takie jak etykiety, ścieżki dokumentacji, aliasy i tekst wyboru. |
|
||||
| `openclaw.channel.configuredState` | Lekkie metadane sprawdzania stanu skonfigurowania, które mogą odpowiedzieć na pytanie „czy konfiguracja wyłącznie przez env już istnieje?” bez ładowania pełnego runtime kanału. |
|
||||
| `openclaw.channel.persistedAuthState` | Lekkie metadane sprawdzania utrwalonego auth, które mogą odpowiedzieć na pytanie „czy cokolwiek jest już zalogowane?” bez ładowania pełnego runtime kanału. |
|
||||
| `openclaw.install.npmSpec` / `openclaw.install.localPath` | Wskazówki instalacji/aktualizacji dla pluginów bundlowanych i publikowanych zewnętrznie. |
|
||||
| `openclaw.install.defaultChoice` | Preferowana ścieżka instalacji, gdy dostępnych jest wiele źródeł instalacji. |
|
||||
| `openclaw.install.minHostVersion` | Minimalna obsługiwana wersja hosta OpenClaw, z użyciem dolnej granicy semver, takiej jak `>=2026.3.22`. |
|
||||
| `openclaw.install.allowInvalidConfigRecovery` | Umożliwia wąską ścieżkę odzyskiwania przez ponowną instalację pluginu bundlowanego, gdy konfiguracja jest nieprawidłowa. |
|
||||
| `openclaw.startup.deferConfiguredChannelFullLoadUntilAfterListen` | Pozwala powierzchniom kanału tylko do konfiguracji ładować się przed pełnym pluginem kanału podczas uruchamiania. |
|
||||
| ----------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `openclaw.extensions` | Deklaruje natywne punkty wejścia Plugin. |
|
||||
| `openclaw.setupEntry` | Lekki punkt wejścia tylko do konfiguracji używany podczas onboardingu i odroczonego uruchamiania kanału. |
|
||||
| `openclaw.channel` | Lekkie metadane katalogu kanałów, takie jak etykiety, ścieżki dokumentacji, aliasy i teksty wyboru. |
|
||||
| `openclaw.channel.configuredState` | Lekkie metadane modułu sprawdzania stanu konfiguracji, które mogą odpowiedzieć na pytanie „czy konfiguracja oparta wyłącznie na env już istnieje?” bez ładowania pełnego środowiska uruchomieniowego kanału. |
|
||||
| `openclaw.channel.persistedAuthState` | Lekkie metadane modułu sprawdzania utrwalonego stanu uwierzytelniania, które mogą odpowiedzieć na pytanie „czy cokolwiek jest już zalogowane?” bez ładowania pełnego środowiska uruchomieniowego kanału. |
|
||||
| `openclaw.install.npmSpec` / `openclaw.install.localPath` | Wskazówki instalacji/aktualizacji dla pluginów pakietowych i publikowanych zewnętrznie. |
|
||||
| `openclaw.install.defaultChoice` | Preferowana ścieżka instalacji, gdy dostępnych jest wiele źródeł instalacji. |
|
||||
| `openclaw.install.minHostVersion` | Minimalna obsługiwana wersja hosta OpenClaw z użyciem dolnego ograniczenia semver, na przykład `>=2026.3.22`. |
|
||||
| `openclaw.install.allowInvalidConfigRecovery` | Umożliwia wąską ścieżkę odzyskiwania przez ponowną instalację pluginu pakietowego, gdy konfiguracja jest nieprawidłowa. |
|
||||
| `openclaw.startup.deferConfiguredChannelFullLoadUntilAfterListen` | Pozwala powierzchniom kanału tylko do konfiguracji ładować się przed pełnym pluginem kanału podczas uruchamiania. |
|
||||
|
||||
`openclaw.install.minHostVersion` jest egzekwowane podczas instalacji i ładowania rejestru
|
||||
manifestu. Nieprawidłowe wartości są odrzucane; nowsze, ale prawidłowe wartości powodują pominięcie
|
||||
`openclaw.install.minHostVersion` jest egzekwowane podczas instalacji i
|
||||
ładowania rejestru manifestów. Nieprawidłowe wartości są odrzucane; nowsze, ale poprawne wartości powodują pominięcie
|
||||
pluginu na starszych hostach.
|
||||
|
||||
`openclaw.install.allowInvalidConfigRecovery` jest celowo bardzo wąskie. Nie
|
||||
sprawia, że dowolnie uszkodzone konfiguracje stają się możliwe do zainstalowania. Obecnie pozwala jedynie przepływom instalacji
|
||||
odzyskać sprawność po określonych nieaktualnych błędach aktualizacji pluginu bundlowanego, takich jak
|
||||
brak ścieżki do pluginu bundlowanego lub nieaktualny wpis `channels.<id>` dla tego samego
|
||||
pluginu bundlowanego. Niepowiązane błędy konfiguracji nadal blokują instalację i kierują operatorów
|
||||
`openclaw.install.allowInvalidConfigRecovery` jest celowo wąskie. Nie
|
||||
sprawia, że dowolne uszkodzone konfiguracje stają się możliwe do zainstalowania. Obecnie pozwala tylko przepływom instalacji
|
||||
odzyskiwać po konkretnych nieaktualnych awariach aktualizacji pluginów pakietowych, takich jak
|
||||
brakująca ścieżka pluginu pakietowego lub nieaktualny wpis `channels.<id>` dla tego samego
|
||||
pluginu pakietowego. Niezwiązane błędy konfiguracji nadal blokują instalację i kierują operatorów
|
||||
do `openclaw doctor --fix`.
|
||||
|
||||
`openclaw.channel.persistedAuthState` to metadane pakietu dla małego modułu sprawdzającego:
|
||||
@ -492,13 +509,12 @@ do `openclaw doctor --fix`.
|
||||
}
|
||||
```
|
||||
|
||||
Używaj tego, gdy przepływy konfiguracji, doctor lub stanu skonfigurowania potrzebują taniego sondowania auth
|
||||
typu tak/nie przed załadowaniem pełnego pluginu kanału. Docelowy eksport powinien być małą
|
||||
funkcją odczytującą wyłącznie stan utrwalony; nie prowadź go przez pełny barrel runtime
|
||||
kanału.
|
||||
Użyj tego, gdy przepływy konfiguracji, doctor lub stanu konfiguracji potrzebują prostego sprawdzenia
|
||||
uwierzytelniania typu tak/nie przed załadowaniem pełnego pluginu kanału. Docelowy eksport powinien być małą
|
||||
funkcją, która odczytuje tylko utrwalony stan; nie prowadź go przez pełną beczkę środowiska uruchomieniowego kanału.
|
||||
|
||||
`openclaw.channel.configuredState` ma taki sam kształt dla tanich sprawdzeń
|
||||
skonfigurowania tylko na podstawie env:
|
||||
`openclaw.channel.configuredState` ma ten sam kształt dla prostych kontroli
|
||||
stanu konfiguracji opartych wyłącznie na env:
|
||||
|
||||
```json
|
||||
{
|
||||
@ -514,64 +530,64 @@ skonfigurowania tylko na podstawie env:
|
||||
}
|
||||
```
|
||||
|
||||
Używaj tego, gdy kanał może określić stan skonfigurowania na podstawie env lub innych małych
|
||||
wejść niezwiązanych z runtime. Jeśli sprawdzenie wymaga pełnego rozpoznania konfiguracji lub rzeczywistego
|
||||
runtime kanału, pozostaw tę logikę w hooku `config.hasConfiguredState` pluginu.
|
||||
Użyj tego, gdy kanał może odpowiedzieć o stanie konfiguracji na podstawie env lub innych małych
|
||||
wejść niebędących częścią środowiska uruchomieniowego. Jeśli sprawdzenie wymaga pełnego rozstrzygania konfiguracji lub rzeczywistego
|
||||
środowiska uruchomieniowego kanału, pozostaw tę logikę w hooku pluginu `config.hasConfiguredState`.
|
||||
|
||||
## Wymagania schematu JSON
|
||||
|
||||
- **Każdy plugin musi dostarczać schemat JSON**, nawet jeśli nie akceptuje żadnej konfiguracji.
|
||||
- Pusty schemat jest akceptowalny, na przykład `{ "type": "object", "additionalProperties": false }`.
|
||||
- Schematy są walidowane podczas odczytu/zapisu konfiguracji, a nie w runtime.
|
||||
- **Każdy plugin musi dostarczać schemat JSON**, nawet jeśli nie przyjmuje żadnej konfiguracji.
|
||||
- Pusty schemat jest akceptowalny (na przykład `{ "type": "object", "additionalProperties": false }`).
|
||||
- Schematy są walidowane podczas odczytu/zapisu konfiguracji, a nie w czasie działania.
|
||||
|
||||
## Zachowanie walidacji
|
||||
|
||||
- Nieznane klucze `channels.*` to **błędy**, chyba że identyfikator kanału jest zadeklarowany przez
|
||||
- Nieznane klucze `channels.*` są **błędami**, chyba że identyfikator kanału jest zadeklarowany przez
|
||||
manifest pluginu.
|
||||
- `plugins.entries.<id>`, `plugins.allow`, `plugins.deny` i `plugins.slots.*`
|
||||
muszą odwoływać się do identyfikatorów pluginów, które można **wykryć**. Nieznane identyfikatory to **błędy**.
|
||||
muszą odwoływać się do **wykrywalnych** identyfikatorów pluginów. Nieznane identyfikatory są **błędami**.
|
||||
- Jeśli plugin jest zainstalowany, ale ma uszkodzony lub brakujący manifest albo schemat,
|
||||
walidacja kończy się niepowodzeniem, a Doctor zgłasza błąd pluginu.
|
||||
- Jeśli konfiguracja pluginu istnieje, ale plugin jest **wyłączony**, konfiguracja jest zachowywana, a
|
||||
w Doctor + logach pojawia się **ostrzeżenie**.
|
||||
- Jeśli konfiguracja pluginu istnieje, ale plugin jest **wyłączony**, konfiguracja jest zachowywana i
|
||||
pojawia się **ostrzeżenie** w Doctor + logach.
|
||||
|
||||
Zobacz [Odniesienie do konfiguracji](/pl/gateway/configuration), aby poznać pełny schemat `plugins.*`.
|
||||
Pełny schemat `plugins.*` znajdziesz w [Odwołaniu do konfiguracji](/pl/gateway/configuration).
|
||||
|
||||
## Uwagi
|
||||
|
||||
- Manifest jest **wymagany dla natywnych pluginów OpenClaw**, w tym przy ładowaniu z lokalnego systemu plików.
|
||||
- Runtime nadal ładuje moduł pluginu osobno; manifest służy wyłącznie do
|
||||
- Manifest jest **wymagany dla natywnych Plugin OpenClaw**, w tym dla ładowań z lokalnego systemu plików.
|
||||
- Środowisko uruchomieniowe nadal ładuje moduł pluginu osobno; manifest służy tylko do
|
||||
wykrywania + walidacji.
|
||||
- Natywne manifesty są parsowane przy użyciu JSON5, więc komentarze, końcowe przecinki i
|
||||
nieujęte w cudzysłowy klucze są akceptowane, o ile końcowa wartość nadal jest obiektem.
|
||||
- Loader manifestu odczytuje tylko udokumentowane pola manifestu. Unikaj dodawania
|
||||
tutaj własnych kluczy najwyższego poziomu.
|
||||
- `providerAuthEnvVars` to tania ścieżka metadanych dla sondowania auth, walidacji
|
||||
znaczników env i podobnych powierzchni uwierzytelniania dostawcy, które nie powinny uruchamiać runtime pluginu
|
||||
klucze bez cudzysłowów są akceptowane, o ile końcowa wartość nadal jest obiektem.
|
||||
- Ładowarka manifestu odczytuje tylko udokumentowane pola manifestu. Unikaj dodawania
|
||||
tutaj niestandardowych kluczy najwyższego poziomu.
|
||||
- `providerAuthEnvVars` to lekka ścieżka metadanych dla sond uwierzytelniania, walidacji znaczników env
|
||||
i podobnych powierzchni uwierzytelniania dostawcy, które nie powinny uruchamiać środowiska uruchomieniowego pluginu
|
||||
tylko po to, aby sprawdzić nazwy env.
|
||||
- `providerAuthAliases` pozwala wariantom dostawcy ponownie używać auth
|
||||
env vars, profili auth, auth opartego na konfiguracji i wyboru onboardingu klucza API innego dostawcy
|
||||
bez twardego kodowania tej relacji w rdzeniu.
|
||||
- `channelEnvVars` to tania ścieżka metadanych dla rezerwowego użycia env powłoki, promptów konfiguracji
|
||||
i podobnych powierzchni kanału, które nie powinny uruchamiać runtime pluginu
|
||||
- `providerAuthAliases` pozwala wariantom dostawcy ponownie używać zmiennych env uwierzytelniania innego dostawcy,
|
||||
profili uwierzytelniania, uwierzytelniania opartego na konfiguracji oraz wyboru onboardingu klucza API
|
||||
bez kodowania tej relacji na sztywno w rdzeniu.
|
||||
- `channelEnvVars` to lekka ścieżka metadanych dla awaryjnego użycia shell env, promptów konfiguracji
|
||||
i podobnych powierzchni kanału, które nie powinny uruchamiać środowiska uruchomieniowego pluginu
|
||||
tylko po to, aby sprawdzić nazwy env.
|
||||
- `providerAuthChoices` to tania ścieżka metadanych dla selektorów wyboru auth,
|
||||
rozpoznawania `--auth-choice`, mapowania preferowanego dostawcy i prostej rejestracji flag CLI
|
||||
onboardingu przed załadowaniem runtime dostawcy. Metadane kreatora runtime,
|
||||
które wymagają kodu dostawcy, znajdziesz w
|
||||
[Hookach runtime dostawcy](/pl/plugins/architecture#provider-runtime-hooks).
|
||||
- `providerAuthChoices` to lekka ścieżka metadanych dla selektorów wyboru uwierzytelniania,
|
||||
rozstrzygania `--auth-choice`, mapowania preferowanego dostawcy i prostej rejestracji flag CLI
|
||||
dla onboardingu przed załadowaniem środowiska uruchomieniowego dostawcy. W przypadku metadanych kreatora środowiska uruchomieniowego,
|
||||
które wymagają kodu dostawcy, zobacz
|
||||
[Hooki środowiska uruchomieniowego dostawcy](/pl/plugins/architecture#provider-runtime-hooks).
|
||||
- Wyłączne rodzaje pluginów są wybierane przez `plugins.slots.*`.
|
||||
- `kind: "memory"` jest wybierane przez `plugins.slots.memory`.
|
||||
- `kind: "context-engine"` jest wybierane przez `plugins.slots.contextEngine`
|
||||
(domyślnie: wbudowane `legacy`).
|
||||
- `kind: "memory"` jest wybierany przez `plugins.slots.memory`.
|
||||
- `kind: "context-engine"` jest wybierany przez `plugins.slots.contextEngine`
|
||||
(domyślnie: wbudowany `legacy`).
|
||||
- `channels`, `providers`, `cliBackends` i `skills` można pominąć, gdy
|
||||
plugin ich nie potrzebuje.
|
||||
- Jeśli Twój plugin zależy od modułów natywnych, udokumentuj kroki budowania oraz wszelkie
|
||||
wymagania dotyczące listy dozwolonych menedżera pakietów, na przykład pnpm `allow-build-scripts`
|
||||
- `pnpm rebuild <package>`.
|
||||
- Jeśli twój plugin zależy od modułów natywnych, udokumentuj kroki budowania oraz wszelkie
|
||||
wymagania listy dozwolonych elementów menedżera pakietów (na przykład pnpm `allow-build-scripts`
|
||||
- `pnpm rebuild <package>`).
|
||||
|
||||
## Powiązane
|
||||
|
||||
- [Tworzenie pluginów](/pl/plugins/building-plugins) — jak zacząć pracę z pluginami
|
||||
- [Architektura pluginów](/pl/plugins/architecture) — architektura wewnętrzna
|
||||
- [Przegląd SDK](/pl/plugins/sdk-overview) — odniesienie do SDK pluginów
|
||||
- [Tworzenie Plugin](/pl/plugins/building-plugins) — wprowadzenie do pluginów
|
||||
- [Architektura Plugin](/pl/plugins/architecture) — architektura wewnętrzna
|
||||
- [Przegląd SDK](/pl/plugins/sdk-overview) — dokumentacja SDK Plugin
|
||||
|
||||
@ -1,118 +1,123 @@
|
||||
---
|
||||
read_when:
|
||||
- Ręczne bootstrapowanie workspace'a
|
||||
summary: Szablon workspace dla AGENTS.md
|
||||
- Ręczne inicjowanie obszaru roboczego
|
||||
summary: Szablon obszaru roboczego dla AGENTS.md
|
||||
title: Szablon AGENTS.md
|
||||
x-i18n:
|
||||
generated_at: "2026-04-11T02:48:00Z"
|
||||
generated_at: "2026-04-12T09:33:43Z"
|
||||
model: gpt-5.4
|
||||
provider: openai
|
||||
source_hash: 6d8a3e96f547da6cc082d747c042555b0ec4963b66921d1700b4590f0e0c38b4
|
||||
source_hash: b7a68a1f0b4b837298bfe6edf8ce855d6ef6902ea8e7277b0d9a8442b23daf54
|
||||
source_path: reference/templates/AGENTS.md
|
||||
workflow: 15
|
||||
---
|
||||
|
||||
# AGENTS.md - Twój workspace
|
||||
# AGENTS.md — Twój obszar roboczy
|
||||
|
||||
Ten folder jest domem. Traktuj go w ten sposób.
|
||||
Ten folder jest domem. Traktuj go właśnie tak.
|
||||
|
||||
## Pierwsze uruchomienie
|
||||
|
||||
Jeśli istnieje `BOOTSTRAP.md`, to jest to Twój akt urodzenia. Postępuj zgodnie z nim, ustal, kim jesteś, a potem go usuń. Nie będzie już potrzebny.
|
||||
|
||||
## Start sesji
|
||||
## Rozpoczęcie sesji
|
||||
|
||||
Zanim zrobisz cokolwiek innego:
|
||||
Najpierw korzystaj z kontekstu startowego dostarczonego przez runtime.
|
||||
|
||||
1. Przeczytaj `SOUL.md` — to mówi, kim jesteś
|
||||
2. Przeczytaj `USER.md` — to opisuje, komu pomagasz
|
||||
3. Przeczytaj `memory/YYYY-MM-DD.md` (dzisiaj + wczoraj), aby uzyskać ostatni kontekst
|
||||
4. **Jeśli jesteś w MAIN SESSION** (bezpośredni czat z człowiekiem): przeczytaj też `MEMORY.md`
|
||||
Ten kontekst może już zawierać:
|
||||
|
||||
Nie pytaj o zgodę. Po prostu to zrób.
|
||||
- `AGENTS.md`, `SOUL.md` i `USER.md`
|
||||
- ostatnią dzienną pamięć, taką jak `memory/YYYY-MM-DD.md`
|
||||
- `MEMORY.md`, gdy jest to główna sesja
|
||||
|
||||
Nie odczytuj ręcznie ponownie plików startowych, chyba że:
|
||||
|
||||
1. Użytkownik wyraźnie o to poprosi
|
||||
2. W dostarczonym kontekście brakuje czegoś, czego potrzebujesz
|
||||
3. Potrzebujesz głębszego odczytu uzupełniającego poza dostarczonym kontekstem startowym
|
||||
|
||||
## Pamięć
|
||||
|
||||
W każdej sesji budzisz się od nowa. Te pliki zapewniają Ci ciągłość:
|
||||
|
||||
- **Codzienne notatki:** `memory/YYYY-MM-DD.md` (utwórz `memory/`, jeśli trzeba) — surowe logi tego, co się wydarzyło
|
||||
- **Długoterminowa:** `MEMORY.md` — Twoje wyselekcjonowane wspomnienia, jak długoterminowa pamięć człowieka
|
||||
- **Notatki dzienne:** `memory/YYYY-MM-DD.md` (utwórz `memory/`, jeśli to potrzebne) — surowe logi tego, co się wydarzyło
|
||||
- **Długoterminowo:** `MEMORY.md` — Twoje uporządkowane wspomnienia, jak ludzka pamięć długoterminowa
|
||||
|
||||
Zapisuj to, co ważne. Decyzje, kontekst, rzeczy do zapamiętania. Pomijaj sekrety, chyba że poproszono o ich zachowanie.
|
||||
Zapisuj to, co istotne. Decyzje, kontekst, rzeczy do zapamiętania. Pomijaj sekrety, chyba że ktoś poprosi, by je zachować.
|
||||
|
||||
### 🧠 MEMORY.md - Twoja pamięć długoterminowa
|
||||
### 🧠 MEMORY.md — Twoja pamięć długoterminowa
|
||||
|
||||
- **Ładuj TYLKO w main session** (bezpośrednie czaty z człowiekiem)
|
||||
- **NIE ładuj we współdzielonych kontekstach** (Discord, czaty grupowe, sesje z innymi osobami)
|
||||
- To kwestia **bezpieczeństwa** — zawiera osobisty kontekst, który nie powinien wyciec do obcych
|
||||
- Możesz swobodnie **czytać, edytować i aktualizować** `MEMORY.md` w main sessions
|
||||
- Zapisuj znaczące wydarzenia, myśli, decyzje, opinie, wyciągnięte wnioski
|
||||
- To Twoja wyselekcjonowana pamięć — skondensowana esencja, nie surowe logi
|
||||
- **Ładuj TYLKO w głównej sesji** (bezpośrednie czaty z Twoim człowiekiem)
|
||||
- **NIE ładuj w kontekstach współdzielonych** (Discord, czaty grupowe, sesje z innymi osobami)
|
||||
- To służy **bezpieczeństwu** — zawiera osobisty kontekst, który nie powinien wyciec do obcych
|
||||
- Możesz swobodnie **czytać, edytować i aktualizować** `MEMORY.md` w głównych sesjach
|
||||
- Zapisuj istotne wydarzenia, myśli, decyzje, opinie, wyciągnięte wnioski
|
||||
- To Twoja uporządkowana pamięć — skondensowana esencja, nie surowe logi
|
||||
- Z czasem przeglądaj codzienne pliki i aktualizuj `MEMORY.md` o to, co warto zachować
|
||||
|
||||
### 📝 Zapisuj to - żadnych „notatek w głowie”!
|
||||
### 📝 Zapisuj to — żadnych „notatek mentalnych”!
|
||||
|
||||
- **Pamięć jest ograniczona** — jeśli chcesz coś zapamiętać, ZAPISZ TO W PLIKU
|
||||
- „Notatki w głowie” nie przetrwają restartów sesji. Pliki tak.
|
||||
- Gdy ktoś mówi „zapamiętaj to” → zaktualizuj `memory/YYYY-MM-DD.md` albo odpowiedni plik
|
||||
- Gdy wyciągniesz wniosek → zaktualizuj AGENTS.md, TOOLS.md albo odpowiednią skill
|
||||
- Gdy popełnisz błąd → udokumentuj go, żeby Twoje przyszłe-ja go nie powtórzyło
|
||||
- „Notatki mentalne” nie przetrwają restartów sesji. Pliki przetrwają.
|
||||
- Gdy ktoś mówi „zapamiętaj to” → zaktualizuj `memory/YYYY-MM-DD.md` lub odpowiedni plik
|
||||
- Gdy czegoś się nauczysz → zaktualizuj AGENTS.md, TOOLS.md lub odpowiedni skill
|
||||
- Gdy popełnisz błąd → udokumentuj go, żeby Twoje przyszłe ja go nie powtórzyło
|
||||
- **Tekst > mózg** 📝
|
||||
|
||||
## Czerwone linie
|
||||
|
||||
- Nigdy nie wyprowadzaj prywatnych danych. Nigdy.
|
||||
- Nigdy nie wyprowadzaj prywatnych danych.
|
||||
- Nie uruchamiaj destrukcyjnych poleceń bez pytania.
|
||||
- `trash` > `rm` (możliwość odzyskania jest lepsza niż zniknięcie na zawsze)
|
||||
- `trash` > `rm` (możliwość odzyskania jest lepsza niż utrata na zawsze)
|
||||
- W razie wątpliwości pytaj.
|
||||
|
||||
## Zewnętrzne vs wewnętrzne
|
||||
## Zewnętrzne a wewnętrzne
|
||||
|
||||
**Możesz robić swobodnie:**
|
||||
**Można robić swobodnie:**
|
||||
|
||||
- Czytać pliki, eksplorować, organizować, uczyć się
|
||||
- Przeszukiwać sieć, sprawdzać kalendarze
|
||||
- Pracować w obrębie tego workspace
|
||||
- Czytać pliki, eksplorować, porządkować, uczyć się
|
||||
- Przeszukiwać internet, sprawdzać kalendarze
|
||||
- Pracować w obrębie tego obszaru roboczego
|
||||
|
||||
**Najpierw zapytaj:**
|
||||
|
||||
- O wysyłanie e-maili, tweetów, publicznych postów
|
||||
- O wszystko, co opuszcza maszynę
|
||||
- O wszystko, czego nie jesteś pewien
|
||||
- Wysyłanie e-maili, tweetów, publicznych postów
|
||||
- Cokolwiek, co opuszcza maszynę
|
||||
- Cokolwiek, co budzi Twoją niepewność
|
||||
|
||||
## Czaty grupowe
|
||||
|
||||
Masz dostęp do rzeczy swojego człowieka. To nie znaczy, że _udostępniasz_ jego rzeczy. W grupach jesteś uczestnikiem — nie jego głosem, nie jego pełnomocnikiem. Zastanów się, zanim coś powiesz.
|
||||
Masz dostęp do rzeczy swojego człowieka. To nie znaczy, że _udostępniasz_ jego rzeczy. W grupach jesteś uczestnikiem — nie jego głosem ani pełnomocnikiem. Zastanów się, zanim coś powiesz.
|
||||
|
||||
### 💬 Wiedz, kiedy się odzywać!
|
||||
### 💬 Wiedz, kiedy się odezwać!
|
||||
|
||||
W czatach grupowych, gdzie otrzymujesz każdą wiadomość, bądź **rozsądny w decydowaniu, kiedy się włączyć**:
|
||||
W czatach grupowych, w których otrzymujesz każdą wiadomość, bądź **rozsądny w kwestii tego, kiedy się włączyć**:
|
||||
|
||||
**Odpowiadaj, gdy:**
|
||||
|
||||
- Zostałeś bezpośrednio wspomniany albo zadano Ci pytanie
|
||||
- Możesz wnieść realną wartość (informację, wgląd, pomoc)
|
||||
- Coś błyskotliwego/zabawnego naturalnie pasuje
|
||||
- Zostaniesz bezpośrednio wspomniany lub ktoś zada Ci pytanie
|
||||
- Możesz wnieść realną wartość (informację, spostrzeżenie, pomoc)
|
||||
- Coś błyskotliwego/zabawnego pasuje naturalnie
|
||||
- Korygujesz ważną dezinformację
|
||||
- Masz podsumować, gdy o to poproszono
|
||||
- Proszeni jesteś o podsumowanie
|
||||
|
||||
**Milcz (`HEARTBEAT_OK`), gdy:**
|
||||
|
||||
- To tylko luźna rozmowa między ludźmi
|
||||
- To tylko luźna wymiana zdań między ludźmi
|
||||
- Ktoś już odpowiedział na pytanie
|
||||
- Twoja odpowiedź byłaby tylko „tak” albo „fajnie”
|
||||
- Rozmowa dobrze płynie bez Ciebie
|
||||
- Twoja odpowiedź byłaby tylko „tak” albo „spoko”
|
||||
- Rozmowa płynie dobrze bez Ciebie
|
||||
- Dodanie wiadomości zepsułoby klimat
|
||||
|
||||
**Zasada człowieka:** Ludzie na czatach grupowych nie odpowiadają na każdą pojedynczą wiadomość. Ty też nie powinieneś. Jakość > ilość. Jeśli nie wysłałbyś tego w prawdziwym grupowym czacie ze znajomymi, nie wysyłaj tego.
|
||||
**Ludzka zasada:** Ludzie na czatach grupowych nie odpowiadają na każdą pojedynczą wiadomość. Ty też nie powinieneś. Jakość > ilość. Jeśli nie wysłałbyś tego w prawdziwym czacie grupowym ze znajomymi, nie wysyłaj.
|
||||
|
||||
**Unikaj potrójnego stuknięcia:** Nie odpowiadaj wiele razy na tę samą wiadomość różnymi reakcjami. Jedna przemyślana odpowiedź jest lepsza niż trzy fragmenty.
|
||||
**Unikaj potrójnego stuknięcia:** Nie odpowiadaj wielokrotnie na tę samą wiadomość różnymi reakcjami. Jedna przemyślana odpowiedź jest lepsza niż trzy fragmenty.
|
||||
|
||||
Uczestnicz, nie dominuj.
|
||||
|
||||
### 😊 Reaguj jak człowiek!
|
||||
|
||||
Na platformach obsługujących reakcje (Discord, Slack) używaj reakcji emoji w naturalny sposób:
|
||||
Na platformach obsługujących reakcje (Discord, Slack) używaj emoji naturalnie:
|
||||
|
||||
**Reaguj, gdy:**
|
||||
|
||||
@ -123,55 +128,55 @@ Na platformach obsługujących reakcje (Discord, Slack) używaj reakcji emoji w
|
||||
- To prosta sytuacja typu tak/nie albo akceptacja (✅, 👀)
|
||||
|
||||
**Dlaczego to ważne:**
|
||||
Reakcje to lekkie sygnały społeczne. Ludzie używają ich cały czas — mówią „widziałem to, przyjmuję do wiadomości” bez zaśmiecania czatu. Ty też powinieneś.
|
||||
Reakcje są lekkimi sygnałami społecznymi. Ludzie używają ich bez przerwy — mówią „widziałem to, przyjmuję do wiadomości” bez zaśmiecania czatu. Ty też powinieneś.
|
||||
|
||||
**Nie przesadzaj:** Maksymalnie jedna reakcja na wiadomość. Wybierz tę, która pasuje najlepiej.
|
||||
**Nie przesadzaj:** maksymalnie jedna reakcja na wiadomość. Wybierz tę, która najlepiej pasuje.
|
||||
|
||||
## Narzędzia
|
||||
|
||||
Skills dostarczają Twoje narzędzia. Gdy któregoś potrzebujesz, sprawdź jego `SKILL.md`. Lokalne notatki (nazwy kamer, szczegóły SSH, preferencje głosowe) trzymaj w `TOOLS.md`.
|
||||
Skills zapewniają Ci narzędzia. Gdy któregoś potrzebujesz, sprawdź jego `SKILL.md`. Lokalne notatki (nazwy kamer, szczegóły SSH, preferencje głosowe) zapisuj w `TOOLS.md`.
|
||||
|
||||
**🎭 Storytelling głosowy:** Jeśli masz `sag` (ElevenLabs TTS), używaj głosu do opowieści, streszczeń filmów i momentów „storytime”! To dużo bardziej angażujące niż ściany tekstu. Zaskakuj ludzi zabawnymi głosami.
|
||||
**🎭 Opowiadanie głosem:** Jeśli masz `sag` (ElevenLabs TTS), używaj głosu do opowieści, streszczeń filmów i momentów typu „storytime”! To o wiele bardziej angażujące niż ściany tekstu. Zaskakuj ludzi zabawnymi głosami.
|
||||
|
||||
**📝 Formatowanie platformowe:**
|
||||
**📝 Formatowanie na platformach:**
|
||||
|
||||
- **Discord/WhatsApp:** Bez tabel markdown! Zamiast tego używaj list punktowanych
|
||||
- **Linki Discord:** Owiń wiele linków w `<>`, aby wyłączyć podglądy: `<https://example.com>`
|
||||
- **WhatsApp:** Bez nagłówków — używaj **pogrubienia** albo WIELKICH LITER dla wyróżnienia
|
||||
- **Discord/WhatsApp:** bez tabel Markdown! Zamiast tego używaj list punktowanych
|
||||
- **Linki na Discordzie:** umieszczaj wiele linków w `<>`, aby wyłączyć podglądy: `<https://example.com>`
|
||||
- **WhatsApp:** bez nagłówków — używaj **pogrubienia** lub WIELKICH LITER dla wyróżnienia
|
||||
|
||||
## 💓 Heartbeat - bądź proaktywny!
|
||||
## 💓 Heartbeaty — działaj proaktywnie!
|
||||
|
||||
Gdy otrzymasz poll heartbeat (wiadomość pasuje do skonfigurowanego promptu heartbeat), nie odpowiadaj za każdym razem tylko `HEARTBEAT_OK`. Wykorzystuj heartbeat produktywnie!
|
||||
Gdy otrzymasz ankietę heartbeat (wiadomość pasuje do skonfigurowanego promptu heartbeat), nie odpowiadaj za każdym razem tylko `HEARTBEAT_OK`. Wykorzystuj heartbeat produktywnie!
|
||||
|
||||
Możesz swobodnie edytować `HEARTBEAT.md`, dodając krótką checklistę lub przypomnienia. Trzymaj ją małą, aby ograniczyć zużycie tokenów.
|
||||
Możesz swobodnie edytować `HEARTBEAT.md`, dodając krótką checklistę lub przypomnienia. Zachowaj mały rozmiar, aby ograniczyć zużycie tokenów.
|
||||
|
||||
### Heartbeat vs Cron: kiedy używać którego
|
||||
### Heartbeat a Cron: kiedy używać którego
|
||||
|
||||
**Używaj heartbeat, gdy:**
|
||||
|
||||
- Wiele kontroli można połączyć w jedną partię (skrzynka odbiorcza + kalendarz + powiadomienia w jednej turze)
|
||||
- Wiele kontroli można połączyć w jedną partię (skrzynka odbiorcza + kalendarz + powiadomienia w jednym przebiegu)
|
||||
- Potrzebujesz konwersacyjnego kontekstu z ostatnich wiadomości
|
||||
- Czas może się lekko przesuwać (co ~30 min jest OK, nie musi być dokładnie)
|
||||
- Chcesz ograniczyć liczbę wywołań API przez łączenie okresowych kontroli
|
||||
- Czas może się nieco przesuwać (co około 30 min jest w porządku, nie musi być co do minuty)
|
||||
- Chcesz ograniczyć liczbę wywołań API przez łączenie cyklicznych kontroli
|
||||
|
||||
**Używaj cron, gdy:**
|
||||
**Używaj Cron, gdy:**
|
||||
|
||||
- Dokładny czas ma znaczenie („9:00 sharp w każdy poniedziałek”)
|
||||
- Zadanie wymaga izolacji od historii głównej sesji
|
||||
- Chcesz innego modelu albo poziomu rozumowania dla zadania
|
||||
- Potrzebujesz jednorazowych przypomnień („przypomnij mi za 20 minut”)
|
||||
- Wynik ma zostać dostarczony bezpośrednio do kanału bez udziału głównej sesji
|
||||
- Liczy się dokładny czas („dokładnie o 9:00 w każdy poniedziałek”)
|
||||
- Zadanie musi być odizolowane od historii głównej sesji
|
||||
- Chcesz użyć innego modelu lub poziomu rozumowania dla zadania
|
||||
- Chodzi o jednorazowe przypomnienia („przypomnij mi za 20 minut”)
|
||||
- Wynik powinien zostać dostarczony bezpośrednio do kanału bez udziału głównej sesji
|
||||
|
||||
**Wskazówka:** Grupuj podobne okresowe kontrole w `HEARTBEAT.md` zamiast tworzyć wiele zadań cron. Używaj cron do precyzyjnych harmonogramów i samodzielnych zadań.
|
||||
**Wskazówka:** Łącz podobne kontrole okresowe w `HEARTBEAT.md` zamiast tworzyć wiele zadań Cron. Używaj Cron dla precyzyjnych harmonogramów i samodzielnych zadań.
|
||||
|
||||
**Rzeczy do sprawdzenia (rotuj je, 2-4 razy dziennie):**
|
||||
**Rzeczy do sprawdzania (rotacyjnie, 2–4 razy dziennie):**
|
||||
|
||||
- **E-maile** - Czy są jakieś pilne nieprzeczytane wiadomości?
|
||||
- **Kalendarz** - Czy w ciągu najbliższych 24-48 h są nadchodzące wydarzenia?
|
||||
- **Wzmianki** - Powiadomienia z Twittera/social mediów?
|
||||
- **Pogoda** - Istotna, jeśli Twój człowiek może wychodzić?
|
||||
- **E-maile** — czy są jakieś pilne nieprzeczytane wiadomości?
|
||||
- **Kalendarz** — czy są nadchodzące wydarzenia w ciągu najbliższych 24–48 h?
|
||||
- **Wzmianki** — powiadomienia z Twittera/mediów społecznościowych?
|
||||
- **Pogoda** — istotna, jeśli Twój człowiek może wychodzić?
|
||||
|
||||
**Śledź swoje kontrole** w `memory/heartbeat-state.json`:
|
||||
**Śledź kontrole** w `memory/heartbeat-state.json`:
|
||||
|
||||
```json
|
||||
{
|
||||
@ -185,39 +190,39 @@ Możesz swobodnie edytować `HEARTBEAT.md`, dodając krótką checklistę lub pr
|
||||
|
||||
**Kiedy się odezwać:**
|
||||
|
||||
- Przyszedł ważny e-mail
|
||||
- Zbliża się wydarzenie w kalendarzu (<2h)
|
||||
- Przyszła ważna wiadomość e-mail
|
||||
- Zbliża się wydarzenie w kalendarzu (`<2h`)
|
||||
- Znalazłeś coś interesującego
|
||||
- Minęło >8h od Twojej ostatniej wypowiedzi
|
||||
- Minęło >8 h od Twojej ostatniej wiadomości
|
||||
|
||||
**Kiedy zachować ciszę (`HEARTBEAT_OK`):**
|
||||
**Kiedy pozostać cicho (`HEARTBEAT_OK`):**
|
||||
|
||||
- Późna noc (23:00-08:00), chyba że sprawa jest pilna
|
||||
- Późna noc (23:00–08:00), chyba że to pilne
|
||||
- Człowiek jest wyraźnie zajęty
|
||||
- Od ostatniej kontroli nie ma nic nowego
|
||||
- Sprawdzałeś coś mniej niż <30 minut temu
|
||||
- Sprawdzałeś to mniej niż 30 minut temu
|
||||
|
||||
**Proaktywne działania, które możesz wykonywać bez pytania:**
|
||||
**Proaktywna praca, którą możesz wykonywać bez pytania:**
|
||||
|
||||
- Czytać i porządkować pliki pamięci
|
||||
- Sprawdzać projekty (git status itd.)
|
||||
- Sprawdzać projekty (`git status` itp.)
|
||||
- Aktualizować dokumentację
|
||||
- Commitować i pushować własne zmiany
|
||||
- **Przeglądać i aktualizować MEMORY.md** (zobacz niżej)
|
||||
- Zatwierdzać i wypychać własne zmiany
|
||||
- **Przeglądać i aktualizować `MEMORY.md`** (patrz poniżej)
|
||||
|
||||
### 🔄 Utrzymanie pamięci (podczas heartbeatów)
|
||||
|
||||
Okresowo (co kilka dni) użyj heartbeat do:
|
||||
Okresowo (co kilka dni) używaj heartbeat do tego, aby:
|
||||
|
||||
1. Przeczytania ostatnich plików `memory/YYYY-MM-DD.md`
|
||||
2. Zidentyfikowania ważnych wydarzeń, lekcji albo spostrzeżeń, które warto zachować długoterminowo
|
||||
3. Zaktualizowania `MEMORY.md` o skondensowane wnioski
|
||||
4. Usunięcia z `MEMORY.md` nieaktualnych informacji, które nie są już istotne
|
||||
1. Przeczytać ostatnie pliki `memory/YYYY-MM-DD.md`
|
||||
2. Zidentyfikować istotne wydarzenia, wnioski lub spostrzeżenia warte zachowania na dłużej
|
||||
3. Zaktualizować `MEMORY.md` o skondensowane wnioski
|
||||
4. Usunąć z `MEMORY.md` nieaktualne informacje, które nie są już istotne
|
||||
|
||||
Pomyśl o tym jak o człowieku przeglądającym swój dziennik i aktualizującym swój model mentalny. Codzienne pliki to surowe notatki; `MEMORY.md` to wyselekcjonowana mądrość.
|
||||
Pomyśl o tym jak o człowieku przeglądającym swój dziennik i aktualizującym swój model mentalny. Codzienne pliki to surowe notatki; `MEMORY.md` to uporządkowana mądrość.
|
||||
|
||||
Cel: być pomocnym bez bycia irytującym. Odzywaj się kilka razy dziennie, wykonuj użyteczną pracę w tle, ale szanuj czas ciszy.
|
||||
Cel: być pomocnym, nie irytującym. Odzywaj się kilka razy dziennie, wykonuj przydatną pracę w tle, ale szanuj czas ciszy.
|
||||
|
||||
## Dostosuj to do siebie
|
||||
## Uczyń to swoim
|
||||
|
||||
To punkt wyjścia. Dodawaj własne konwencje, styl i zasady, gdy odkrywasz, co działa najlepiej.
|
||||
To punkt wyjścia. Dodawaj własne konwencje, styl i zasady, gdy zrozumiesz, co działa najlepiej.
|
||||
|
||||
@ -1,14 +1,14 @@
|
||||
---
|
||||
read_when:
|
||||
- Wyjaśnianie użycia tokenów, kosztów lub okien kontekstu
|
||||
- Debugowanie wzrostu kontekstu lub zachowania kompakcji
|
||||
- Wyjaśnianie użycia tokenów, kosztów lub okien kontekstowych
|
||||
- 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-07T09:50:11Z"
|
||||
generated_at: "2026-04-12T09:34:14Z"
|
||||
model: gpt-5.4
|
||||
provider: openai
|
||||
source_hash: 0683693d6c6fcde7d5fba236064ba97dd4b317ae6bea3069db969fcd178119d9
|
||||
source_hash: f8c856549cd28b8364a640e6fa9ec26aa736895c7a993e96cbe85838e7df2dfb
|
||||
source_path: reference/token-use.md
|
||||
workflow: 15
|
||||
---
|
||||
@ -16,78 +16,78 @@ 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 ma średnio około 4 znaków na token dla tekstu angielskiego.
|
||||
modeli w stylu OpenAI daje średnio około 4 znaków 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 przez `read`)
|
||||
- Instrukcje samodzielnej aktualizacji
|
||||
- Pliki workspace + bootstrap (`AGENTS.md`, `SOUL.md`, `TOOLS.md`, `IDENTITY.md`, `USER.md`, `HEARTBEAT.md`, `BOOTSTRAP.md`, gdy są nowe, oraz `MEMORY.md`, gdy istnieje, lub `memory.md` jako fallback w małych literach). Duże pliki są obcinane przez `agents.defaults.bootstrapMaxChars` (domyślnie: 20000), a całkowity zastrzyk bootstrap jest ograniczony przez `agents.defaults.bootstrapTotalMaxChars` (domyślnie: 150000). Pliki `memory/*.md` są ładowane na żądanie przez narzędzia pamięci i nie są wstrzykiwane automatycznie.
|
||||
- Czas (UTC + strefa czasowa użytkownika)
|
||||
- Tagi odpowiedzi + zachowanie heartbeat
|
||||
- Metadane środowiska wykonawczego (host/OS/model/thinking)
|
||||
- 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)
|
||||
|
||||
Pełny podział znajdziesz w [System Prompt](/pl/concepts/system-prompt).
|
||||
Pełny podział znajdziesz w [Prompt systemowy](/pl/concepts/system-prompt).
|
||||
|
||||
## Co liczy się do okna kontekstu
|
||||
## Co liczy się do okna kontekstowego
|
||||
|
||||
Wszystko, co otrzymuje model, liczy się do limitu 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 kompakcji i artefakty przycinania
|
||||
- Wrappery dostawców lub nagłówki bezpieczeństwa (niewidoczne, ale nadal liczone)
|
||||
- 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)
|
||||
|
||||
Dla obrazów OpenClaw skaluje w dół payloady obrazów z transkryptów/narzędzi przed wywołaniami dostawców.
|
||||
Aby to dostroić, użyj `agents.defaults.imageMaxDimensionPx` (domyślnie: `1200`):
|
||||
Dla obrazów OpenClaw zmniejsza rozdzielczość ładunków obrazów w transkrypcjach/narzędziach 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 payloadu.
|
||||
- Wyższe wartości zachowują więcej szczegółów wizualnych dla OCR/zrzutów ekranu interfejsu.
|
||||
- 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
|
||||
|
||||
Aby zobaczyć praktyczny podział (dla każdego wstrzykniętego pliku, narzędzi, Skills i rozmiaru promptu systemowego), użyj `/context list` lub `/context detail`. Zobacz [Context](/pl/concepts/context).
|
||||
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).
|
||||
|
||||
## Jak sprawdzić bieżące użycie tokenów
|
||||
## Jak zobaczyć bieżące użycie tokenów
|
||||
|
||||
Użyj tych poleceń na czacie:
|
||||
|
||||
- `/status` → **karta statusu bogata w emoji** z modelem sesji, użyciem kontekstu,
|
||||
- `/status` → **bogata w emoji karta statusu** z modelem sesji, wykorzystaniem kontekstu,
|
||||
tokenami wejścia/wyjścia ostatniej odpowiedzi oraz **szacowanym kosztem** (tylko klucz API).
|
||||
- `/usage off|tokens|full` → dołącza **stopkę użycia dla każdej odpowiedzi** do każdej odpowiedzi.
|
||||
- Jest utrwalane per sesja (zapisane jako `responseUsage`).
|
||||
- Uwierzytelnianie OAuth **ukrywa koszt** (pokazuje tylko tokeny).
|
||||
- `/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).
|
||||
- `/usage cost` → pokazuje lokalne podsumowanie kosztów z logów sesji OpenClaw.
|
||||
|
||||
Inne powierzchnie:
|
||||
|
||||
- **TUI/Web TUI:** obsługiwane są `/status` i `/usage`.
|
||||
- **TUI/Web TUI:** obsługiwane są `/status` + `/usage`.
|
||||
- **CLI:** `openclaw status --usage` i `openclaw channels list` pokazują
|
||||
znormalizowane okna limitów dostawców (`X% left`, a nie koszty dla pojedynczych odpowiedzi).
|
||||
Aktualni dostawcy okien użycia: Anthropic, GitHub Copilot, Gemini CLI,
|
||||
znormalizowane okna limitów dostawcy (`X% left`, a nie koszty dla poszczególnych odpowiedzi).
|
||||
Obecni dostawcy okien użycia: Anthropic, GitHub Copilot, Gemini CLI,
|
||||
OpenAI Codex, MiniMax, Xiaomi i z.ai.
|
||||
|
||||
Powierzchnie użycia normalizują przed wyświetleniem typowe aliasy pól natywnych dla dostawców.
|
||||
Powierzchnie użycia normalizują typowe aliasy pól natywnych dostawców przed wyświetleniem.
|
||||
Dla ruchu OpenAI-family Responses obejmuje to zarówno `input_tokens` /
|
||||
`output_tokens`, jak i `prompt_tokens` / `completion_tokens`, dzięki czemu nazwy pól specyficzne dla transportu
|
||||
nie zmieniają `/status`, `/usage` ani podsumowań sesji.
|
||||
Użycie JSON Gemini CLI również jest normalizowane: tekst odpowiedzi pochodzi z `response`, a
|
||||
`stats.cached` jest mapowane na `cacheRead`, przy czym używane jest `stats.input_tokens - stats.cached`,
|
||||
`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
|
||||
`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 przechodzą na znormalizowane wejście + wyjście, gdy
|
||||
`total_tokens` nie istnieje lub wynosi `0`.
|
||||
Gdy bieżący snapshot sesji jest ubogi, `/status` i `session_status` mogą
|
||||
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ą
|
||||
również odzyskać liczniki tokenów/cache oraz etykietę aktywnego modelu runtime z
|
||||
najnowszego logu użycia transkryptu. Istniejące niezerowe wartości live nadal mają
|
||||
priorytet nad wartościami awaryjnymi z transkryptu, a większe sumy transkryptu zorientowane na prompt
|
||||
mogą wygrać, gdy zapisane sumy nie istnieją albo są mniejsze.
|
||||
Uwierzytelnianie użycia dla okien limitów dostawców pochodzi z hooków specyficznych dla dostawcy, jeśli są dostępne;
|
||||
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, środowiska lub konfiguracji.
|
||||
z profili uwierzytelniania, env lub konfiguracji.
|
||||
|
||||
## Szacowanie kosztów (gdy jest pokazywane)
|
||||
|
||||
@ -97,35 +97,35 @@ Koszty są szacowane na podstawie konfiguracji cen modelu:
|
||||
models.providers.<provider>.models[].cost
|
||||
```
|
||||
|
||||
Są to wartości **USD za 1M tokenów** dla `input`, `output`, `cacheRead` oraz
|
||||
`cacheWrite`. Jeśli brak informacji o cenach, OpenClaw pokazuje tylko tokeny. Tokeny OAuth
|
||||
Są to wartości **USD za 1M tokenów** dla `input`, `output`, `cacheRead` i
|
||||
`cacheWrite`. Jeśli brakuje cen, OpenClaw pokazuje tylko tokeny. Tokeny OAuth
|
||||
nigdy nie pokazują kosztu w dolarach.
|
||||
|
||||
## Wpływ TTL cache i przycinania
|
||||
|
||||
Pamięć podręczna 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 zapisnego w cache kontekstu zamiast ponownie cache'ować pełną historię. Dzięki temu koszty
|
||||
zapisu cache są niższe, gdy sesja pozostaje bezczynna dłużej niż TTL.
|
||||
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.
|
||||
|
||||
Skonfiguruj to w [Gateway configuration](/pl/gateway/configuration), a szczegóły
|
||||
działania znajdziesz w [Session pruning](/pl/concepts/session-pruning).
|
||||
Skonfiguruj to w [Konfiguracja Gateway](/pl/gateway/configuration), a szczegóły
|
||||
działania 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 tuż poniżej tej wartości (np. `55m`) może zapobiec
|
||||
ponownemu cache'owaniu pełnego promptu, zmniejszając koszty zapisu cache.
|
||||
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.
|
||||
|
||||
W konfiguracjach z wieloma agentami możesz utrzymać jedną wspólną konfigurację modelu i dostrajać zachowanie 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`.
|
||||
|
||||
Pełny przewodnik po wszystkich opcjach znajdziesz w [Prompt Caching](/pl/reference/prompt-caching).
|
||||
Pełny przewodnik po wszystkich ustawieniach znajdziesz w [Prompt Caching](/pl/reference/prompt-caching).
|
||||
|
||||
Dla cen API Anthropic odczyty z cache są znacznie tańsze niż tokeny wejściowe,
|
||||
podczas gdy zapisy cache są rozliczane z wyższym mnożnikiem. Najnowsze stawki i mnożniki TTL znajdziesz w cenniku prompt caching Anthropic:
|
||||
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:
|
||||
[https://docs.anthropic.com/docs/build-with-claude/prompt-caching](https://docs.anthropic.com/docs/build-with-claude/prompt-caching)
|
||||
|
||||
### Przykład: utrzymanie ciepłego cache 1h za pomocą heartbeat
|
||||
### Przykład: utrzymanie 1h cache w cieple za pomocą Heartbeat
|
||||
|
||||
```yaml
|
||||
agents:
|
||||
@ -140,7 +140,7 @@ agents:
|
||||
every: "55m"
|
||||
```
|
||||
|
||||
### Przykład: mieszany ruch ze strategią cache per agent
|
||||
### Przykład: ruch mieszany ze strategią cache per agent
|
||||
|
||||
```yaml
|
||||
agents:
|
||||
@ -155,7 +155,7 @@ agents:
|
||||
- id: "research"
|
||||
default: true
|
||||
heartbeat:
|
||||
every: "55m" # utrzymuj długi cache ciepły dla głębokich sesji
|
||||
every: "55m" # utrzymuj długi cache w cieple dla głębokich sesji
|
||||
- id: "alerts"
|
||||
params:
|
||||
cacheRetention: "none" # unikaj zapisów cache dla skokowych powiadomień
|
||||
@ -164,10 +164,10 @@ agents:
|
||||
`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.
|
||||
|
||||
### Przykład: włącz nagłówek beta Anthropic 1M context
|
||||
### Przykład: włączenie nagłówka beta Anthropic 1M context
|
||||
|
||||
Okno kontekstu 1M w Anthropic jest obecnie ograniczone do wersji beta. OpenClaw może wstrzyknąć
|
||||
wymaganą wartość `anthropic-beta`, gdy włączysz `context1m` w obsługiwanych modelach Opus
|
||||
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
|
||||
lub Sonnet.
|
||||
|
||||
```yaml
|
||||
@ -181,21 +181,21 @@ agents:
|
||||
|
||||
To mapuje się na nagłówek beta Anthropic `context-1m-2025-08-07`.
|
||||
|
||||
Dotyczy to tylko sytuacji, gdy `context1m: true` jest ustawione dla wpisu tego modelu.
|
||||
Ma to zastosowanie tylko wtedy, gdy dla tego wpisu modelu ustawiono `context1m: true`.
|
||||
|
||||
Wymaganie: poświadczenie musi kwalifikować się do użycia długiego kontekstu. W przeciwnym razie
|
||||
Anthropic odpowiada dla tego żądania błędem limitu szybkości po stronie dostawcy.
|
||||
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-*`),
|
||||
OpenClaw pomija nagłówek beta `context-1m-*`, ponieważ Anthropic obecnie
|
||||
odrzuca to połączenie z HTTP 401.
|
||||
odrzuca tę kombinację z HTTP 401.
|
||||
|
||||
## Wskazówki dotyczące zmniejszania presji tokenów
|
||||
## Wskazówki dotyczące zmniejszania presji tokenowej
|
||||
|
||||
- Użyj `/compact`, aby podsumować długie sesje.
|
||||
- Ogranicz duże wyjścia narzędzi w swoich workflow.
|
||||
- Przycinaj duże wyjścia narzędzi w swoich workflow.
|
||||
- Obniż `agents.defaults.imageMaxDimensionPx` dla sesji z dużą liczbą zrzutów ekranu.
|
||||
- Zachowuj krótkie opisy Skills (lista Skills jest wstrzykiwana do promptu).
|
||||
- Do rozwlekłej, eksploracyjnej pracy preferuj mniejsze modele.
|
||||
- Utrzymuj krótkie opisy Skills (lista Skills jest wstrzykiwana do promptu).
|
||||
- Preferuj mniejsze modele do rozwlekłej, eksploracyjnej pracy.
|
||||
|
||||
Dokładny wzór narzutu listy Skills znajdziesz w [Skills](/pl/tools/skills).
|
||||
|
||||
Loading…
Reference in New Issue
Block a user