chore(i18n): refresh pl translations
This commit is contained in:
parent
85d6260920
commit
b5ebae404b
@ -1,40 +1,39 @@
|
||||
---
|
||||
read_when:
|
||||
- Musisz wyjaśnić obszar roboczy agenta lub układ jego plików
|
||||
- Chcesz utworzyć kopię zapasową lub przenieść obszar roboczy agenta
|
||||
summary: 'Obszar roboczy agenta: lokalizacja, układ i strategia tworzenia kopii zapasowych'
|
||||
- Musisz wyjaśnić obszar roboczy agenta lub jego układ plików.
|
||||
- Chcesz utworzyć kopię zapasową obszaru roboczego agenta lub go zmigrować.
|
||||
summary: 'Obszar roboczy agenta: lokalizacja, układ i strategia kopii zapasowych'
|
||||
title: Obszar roboczy agenta
|
||||
x-i18n:
|
||||
generated_at: "2026-04-05T13:50:15Z"
|
||||
generated_at: "2026-04-18T09:34:52Z"
|
||||
model: gpt-5.4
|
||||
provider: openai
|
||||
source_hash: 3735633f1098c733415369f9836fdbbc0bf869636a24ed42e95e6784610d964a
|
||||
source_hash: dd2e74614d8d45df04b1bbda48e2224e778b621803d774d38e4b544195eb234e
|
||||
source_path: concepts/agent-workspace.md
|
||||
workflow: 15
|
||||
---
|
||||
|
||||
# Obszar roboczy agenta
|
||||
|
||||
Obszar roboczy jest domem agenta. Jest to jedyny katalog roboczy używany przez
|
||||
narzędzia plikowe i jako kontekst obszaru roboczego. Zachowaj go jako prywatny
|
||||
i traktuj jak pamięć.
|
||||
Obszar roboczy to dom agenta. Jest to jedyny katalog roboczy używany przez
|
||||
narzędzia plikowe i dla kontekstu obszaru roboczego. Zachowaj go jako prywatny i traktuj jak pamięć.
|
||||
|
||||
To jest oddzielne od `~/.openclaw/`, które przechowuje konfigurację, dane uwierzytelniające i
|
||||
To jest oddzielone od `~/.openclaw/`, które przechowuje konfigurację, dane uwierzytelniające i
|
||||
sesje.
|
||||
|
||||
**Ważne:** obszar roboczy jest **domyślnym cwd**, a nie twardym sandboxem. Narzędzia
|
||||
**Ważne:** obszar roboczy to **domyślny cwd**, a nie twarda piaskownica. Narzędzia
|
||||
rozwiązują ścieżki względne względem obszaru roboczego, ale ścieżki bezwzględne nadal mogą sięgać
|
||||
do innych miejsc na hoście, chyba że włączono sandboxing. Jeśli potrzebujesz izolacji, użyj
|
||||
[`agents.defaults.sandbox`](/gateway/sandboxing) (i/lub konfiguracji sandbox dla poszczególnych agentów).
|
||||
Gdy sandboxing jest włączony, a `workspaceAccess` nie ma wartości `"rw"`, narzędzia działają
|
||||
wewnątrz obszaru roboczego sandbox w `~/.openclaw/sandboxes`, a nie w obszarze roboczym hosta.
|
||||
innych miejsc na hoście, chyba że piaskownica jest włączona. Jeśli potrzebujesz izolacji, użyj
|
||||
[`agents.defaults.sandbox`](/pl/gateway/sandboxing) (i/lub konfiguracji piaskownicy per agent).
|
||||
Gdy piaskownica jest włączona i `workspaceAccess` nie jest równe `"rw"`, narzędzia działają
|
||||
wewnątrz obszaru roboczego piaskownicy w `~/.openclaw/sandboxes`, a nie w obszarze roboczym hosta.
|
||||
|
||||
## Domyślna lokalizacja
|
||||
|
||||
- Domyślnie: `~/.openclaw/workspace`
|
||||
- Jeśli ustawiono `OPENCLAW_PROFILE` i nie ma ono wartości `"default"`, domyślną wartością staje się
|
||||
- Jeśli `OPENCLAW_PROFILE` jest ustawione i nie jest równe `"default"`, wartością domyślną staje się
|
||||
`~/.openclaw/workspace-<profile>`.
|
||||
- Nadpisz w `~/.openclaw/openclaw.json`:
|
||||
- Nadpisanie w `~/.openclaw/openclaw.json`:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -44,13 +43,11 @@ wewnątrz obszaru roboczego sandbox w `~/.openclaw/sandboxes`, a nie w obszarze
|
||||
}
|
||||
```
|
||||
|
||||
`openclaw onboard`, `openclaw configure` lub `openclaw setup` utworzą
|
||||
obszar roboczy i zasieją pliki bootstrap, jeśli ich brakuje.
|
||||
Kopie seed dla sandbox przyjmują tylko zwykłe pliki wewnątrz obszaru roboczego; aliasy
|
||||
symlink/hardlink, które rozwiązują się poza źródłowym obszarem roboczym, są ignorowane.
|
||||
`openclaw onboard`, `openclaw configure` lub `openclaw setup` utworzy
|
||||
obszar roboczy i doda początkowe pliki bootstrap, jeśli ich brakuje.
|
||||
Kopie inicjalizujące piaskownicę akceptują tylko zwykłe pliki znajdujące się w obszarze roboczym; aliasy symlink/hardlink, które wskazują poza źródłowy obszar roboczy, są ignorowane.
|
||||
|
||||
Jeśli już samodzielnie zarządzasz plikami obszaru roboczego, możesz wyłączyć tworzenie
|
||||
plików bootstrap:
|
||||
Jeśli już samodzielnie zarządzasz plikami obszaru roboczego, możesz wyłączyć tworzenie plików bootstrap:
|
||||
|
||||
```json5
|
||||
{ agent: { skipBootstrap: true } }
|
||||
@ -58,9 +55,9 @@ plików bootstrap:
|
||||
|
||||
## Dodatkowe foldery obszaru roboczego
|
||||
|
||||
Starsze instalacje mogły tworzyć `~/openclaw`. Pozostawienie wielu katalogów obszaru roboczego
|
||||
może powodować mylące rozbieżności uwierzytelnienia lub stanu, ponieważ naraz aktywny jest tylko
|
||||
jeden obszar roboczy.
|
||||
Starsze instalacje mogły utworzyć `~/openclaw`. Pozostawienie wielu katalogów obszaru roboczego
|
||||
może powodować mylące rozbieżności w uwierzytelnianiu lub stanie, ponieważ w danym momencie aktywny jest tylko jeden
|
||||
obszar roboczy.
|
||||
|
||||
**Zalecenie:** utrzymuj jeden aktywny obszar roboczy. Jeśli nie używasz już
|
||||
dodatkowych folderów, zarchiwizuj je lub przenieś do Kosza (na przykład `trash ~/openclaw`).
|
||||
@ -71,37 +68,37 @@ Jeśli celowo utrzymujesz wiele obszarów roboczych, upewnij się, że
|
||||
|
||||
## Mapa plików obszaru roboczego (co oznacza każdy plik)
|
||||
|
||||
To są standardowe pliki, których OpenClaw oczekuje w obszarze roboczym:
|
||||
To są standardowe pliki, których OpenClaw oczekuje wewnątrz obszaru roboczego:
|
||||
|
||||
- `AGENTS.md`
|
||||
- Instrukcje operacyjne dla agenta i sposób, w jaki powinien używać pamięci.
|
||||
- Wczytywany na początku każdej sesji.
|
||||
- Dobre miejsce na reguły, priorytety i szczegóły „jak się zachowywać”.
|
||||
- Dobre miejsce na reguły, priorytety i szczegóły typu „jak się zachowywać”.
|
||||
|
||||
- `SOUL.md`
|
||||
- Persona, ton i granice.
|
||||
- Wczytywany w każdej sesji.
|
||||
- Przewodnik: [Przewodnik po osobowości SOUL.md](/concepts/soul)
|
||||
- Przewodnik: [Przewodnik po osobowości SOUL.md](/pl/concepts/soul)
|
||||
|
||||
- `USER.md`
|
||||
- Kim jest użytkownik i jak się do niego zwracać.
|
||||
- Wczytywany w każdej sesji.
|
||||
|
||||
- `IDENTITY.md`
|
||||
- Imię agenta, klimat i emoji.
|
||||
- Nazwa agenta, klimat i emoji.
|
||||
- Tworzony/aktualizowany podczas rytuału bootstrap.
|
||||
|
||||
- `TOOLS.md`
|
||||
- Uwagi o lokalnych narzędziach i konwencjach.
|
||||
- Nie kontroluje dostępności narzędzi; służy tylko jako wskazówka.
|
||||
- Nie kontroluje dostępności narzędzi; to tylko wskazówki.
|
||||
|
||||
- `HEARTBEAT.md`
|
||||
- Opcjonalna mała lista kontrolna dla uruchomień heartbeat.
|
||||
- Zachowaj ją krótką, aby nie zużywać niepotrzebnie tokenów.
|
||||
- Opcjonalna krótka lista kontrolna dla przebiegów Heartbeat.
|
||||
- Zachowaj ją krótką, aby nie marnować tokenów.
|
||||
|
||||
- `BOOT.md`
|
||||
- Opcjonalna lista kontrolna startu wykonywana przy restarcie gateway, gdy włączone są wewnętrzne hooki.
|
||||
- Zachowaj ją krótką; do wysyłania na zewnątrz używaj narzędzia wiadomości.
|
||||
- Opcjonalna lista kontrolna uruchamiania wykonywana przy restarcie Gateway, gdy włączone są hooki wewnętrzne.
|
||||
- Zachowaj ją krótką; do wysyłek wychodzących używaj narzędzia wiadomości.
|
||||
|
||||
- `BOOTSTRAP.md`
|
||||
- Jednorazowy rytuał pierwszego uruchomienia.
|
||||
@ -110,26 +107,26 @@ To są standardowe pliki, których OpenClaw oczekuje w obszarze roboczym:
|
||||
|
||||
- `memory/YYYY-MM-DD.md`
|
||||
- Dzienny dziennik pamięci (jeden plik na dzień).
|
||||
- Zalecane do odczytu: dzisiaj + wczoraj na początku sesji.
|
||||
- Zalecane do odczytu: dzisiaj + wczoraj przy starcie sesji.
|
||||
|
||||
- `MEMORY.md` (opcjonalnie)
|
||||
- Kuratorowana pamięć długoterminowa.
|
||||
- Wczytuj tylko w głównej, prywatnej sesji (nie we współdzielonych/grupowych kontekstach).
|
||||
- Ładuj tylko w głównej, prywatnej sesji (nie we współdzielonych/grupowych kontekstach).
|
||||
|
||||
Zobacz [Pamięć](/concepts/memory), aby poznać przepływ pracy i automatyczne opróżnianie pamięci.
|
||||
Zobacz [Pamięć](/pl/concepts/memory), aby poznać workflow i automatyczny flush pamięci.
|
||||
|
||||
- `skills/` (opcjonalnie)
|
||||
- Skills specyficzne dla obszaru roboczego.
|
||||
- Lokalizacja skills o najwyższym priorytecie dla tego obszaru roboczego.
|
||||
- Nadpisuje skills agenta projektu, skills osobiste agenta, skills zarządzane, skills wbudowane oraz `skills.load.extraDirs`, gdy nazwy się pokrywają.
|
||||
- Lokalizacja Skills o najwyższym priorytecie dla tego obszaru roboczego.
|
||||
- Zastępuje project agent skills, personal agent skills, managed skills, bundled skills i `skills.load.extraDirs`, gdy nazwy się pokrywają.
|
||||
|
||||
- `canvas/` (opcjonalnie)
|
||||
- Pliki interfejsu Canvas dla widoków węzłów (na przykład `canvas/index.html`).
|
||||
|
||||
Jeśli brakuje któregokolwiek pliku bootstrap, OpenClaw wstrzykuje do
|
||||
Jeśli brakuje jakiegokolwiek pliku bootstrap, OpenClaw wstrzykuje do
|
||||
sesji znacznik „missing file” i kontynuuje. Duże pliki bootstrap są obcinane podczas wstrzykiwania;
|
||||
dostosuj limity za pomocą `agents.defaults.bootstrapMaxChars` (domyślnie: 20000) oraz
|
||||
`agents.defaults.bootstrapTotalMaxChars` (domyślnie: 150000).
|
||||
dostosuj limity za pomocą `agents.defaults.bootstrapMaxChars` (domyślnie: 12000) i
|
||||
`agents.defaults.bootstrapTotalMaxChars` (domyślnie: 60000).
|
||||
`openclaw setup` może odtworzyć brakujące wartości domyślne bez nadpisywania istniejących
|
||||
plików.
|
||||
|
||||
@ -139,19 +136,19 @@ Te elementy znajdują się w `~/.openclaw/` i NIE powinny być commitowane do re
|
||||
|
||||
- `~/.openclaw/openclaw.json` (konfiguracja)
|
||||
- `~/.openclaw/agents/<agentId>/agent/auth-profiles.json` (profile uwierzytelniania modeli: OAuth + klucze API)
|
||||
- `~/.openclaw/credentials/` (stan kanału/providera oraz starsze dane importu OAuth)
|
||||
- `~/.openclaw/credentials/` (stan kanałów/dostawców oraz starsze dane importu OAuth)
|
||||
- `~/.openclaw/agents/<agentId>/sessions/` (transkrypcje sesji + metadane)
|
||||
- `~/.openclaw/skills/` (zarządzane skills)
|
||||
- `~/.openclaw/skills/` (managed skills)
|
||||
|
||||
Jeśli musisz przenieść sesje lub konfigurację, skopiuj je osobno i trzymaj je
|
||||
Jeśli musisz zmigrować sesje lub konfigurację, skopiuj je osobno i trzymaj
|
||||
poza kontrolą wersji.
|
||||
|
||||
## Kopia zapasowa Git (zalecana, prywatna)
|
||||
## Kopia zapasowa Git (zalecane, prywatne)
|
||||
|
||||
Traktuj obszar roboczy jako prywatną pamięć. Umieść go w **prywatnym** repozytorium git, aby był
|
||||
zarchiwizowany i możliwy do odzyskania.
|
||||
zabezpieczony kopią zapasową i możliwy do odzyskania.
|
||||
|
||||
Wykonaj te kroki na maszynie, na której działa Gateway (tam znajduje się
|
||||
Wykonaj te kroki na maszynie, na której działa Gateway (to tam znajduje się
|
||||
obszar roboczy).
|
||||
|
||||
### 1) Zainicjalizuj repozytorium
|
||||
@ -166,14 +163,14 @@ git add AGENTS.md SOUL.md TOOLS.md IDENTITY.md USER.md HEARTBEAT.md memory/
|
||||
git commit -m "Add agent workspace"
|
||||
```
|
||||
|
||||
### 2) Dodaj prywatny zdalny remote (opcje przyjazne początkującym)
|
||||
### 2) Dodaj prywatny zdalny remote (opcje przyjazne dla początkujących)
|
||||
|
||||
Opcja A: interfejs webowy GitHub
|
||||
|
||||
1. Utwórz nowe **prywatne** repozytorium na GitHub.
|
||||
2. Nie inicjalizuj go plikiem README (pozwala to uniknąć konfliktów scalania).
|
||||
3. Skopiuj adres URL zdalnego HTTPS.
|
||||
4. Dodaj remote i wypchnij:
|
||||
2. Nie inicjalizuj go plikiem README (pozwoli to uniknąć konfliktów scalania).
|
||||
3. Skopiuj adres URL zdalnego repozytorium HTTPS.
|
||||
4. Dodaj remote i wypchnij zmiany:
|
||||
|
||||
```bash
|
||||
git branch -M main
|
||||
@ -191,9 +188,9 @@ gh repo create openclaw-workspace --private --source . --remote origin --push
|
||||
Opcja C: interfejs webowy GitLab
|
||||
|
||||
1. Utwórz nowe **prywatne** repozytorium na GitLab.
|
||||
2. Nie inicjalizuj go plikiem README (pozwala to uniknąć konfliktów scalania).
|
||||
3. Skopiuj adres URL zdalnego HTTPS.
|
||||
4. Dodaj remote i wypchnij:
|
||||
2. Nie inicjalizuj go plikiem README (pozwoli to uniknąć konfliktów scalania).
|
||||
3. Skopiuj adres URL zdalnego repozytorium HTTPS.
|
||||
4. Dodaj remote i wypchnij zmiany:
|
||||
|
||||
```bash
|
||||
git branch -M main
|
||||
@ -214,11 +211,11 @@ git push
|
||||
|
||||
Nawet w prywatnym repozytorium unikaj przechowywania sekretów w obszarze roboczym:
|
||||
|
||||
- kluczy API, tokenów OAuth, haseł lub prywatnych danych uwierzytelniających;
|
||||
- czegokolwiek z `~/.openclaw/`;
|
||||
- surowych zrzutów czatów lub wrażliwych załączników.
|
||||
- Kluczy API, tokenów OAuth, haseł lub prywatnych danych uwierzytelniających.
|
||||
- Czegokolwiek z `~/.openclaw/`.
|
||||
- Surowych zrzutów czatów lub wrażliwych załączników.
|
||||
|
||||
Jeśli musisz przechowywać wrażliwe odwołania, użyj placeholderów i trzymaj prawdziwy
|
||||
Jeśli musisz przechowywać wrażliwe odwołania, używaj placeholderów i trzymaj właściwy
|
||||
sekret gdzie indziej (menedżer haseł, zmienne środowiskowe lub `~/.openclaw/`).
|
||||
|
||||
Sugerowany początkowy `.gitignore`:
|
||||
@ -233,9 +230,9 @@ Sugerowany początkowy `.gitignore`:
|
||||
|
||||
## Przenoszenie obszaru roboczego na nową maszynę
|
||||
|
||||
1. Sklonuj repozytorium do żądanej ścieżki (domyślnie `~/.openclaw/workspace`).
|
||||
1. Sklonuj repozytorium do wybranej ścieżki (domyślnie `~/.openclaw/workspace`).
|
||||
2. Ustaw `agents.defaults.workspace` na tę ścieżkę w `~/.openclaw/openclaw.json`.
|
||||
3. Uruchom `openclaw setup --workspace <path>`, aby zasilić brakujące pliki.
|
||||
3. Uruchom `openclaw setup --workspace <path>`, aby dodać brakujące pliki.
|
||||
4. Jeśli potrzebujesz sesji, skopiuj `~/.openclaw/agents/<agentId>/sessions/` ze
|
||||
starej maszyny osobno.
|
||||
|
||||
@ -243,12 +240,11 @@ Sugerowany początkowy `.gitignore`:
|
||||
|
||||
- Routing wielu agentów może używać różnych obszarów roboczych dla różnych agentów. Zobacz
|
||||
[Routing kanałów](/pl/channels/channel-routing), aby poznać konfigurację routingu.
|
||||
- Jeśli `agents.defaults.sandbox` jest włączone, sesje inne niż główna mogą używać obszarów roboczych
|
||||
sandbox dla każdej sesji w `agents.defaults.sandbox.workspaceRoot`.
|
||||
- Jeśli `agents.defaults.sandbox` jest włączone, sesje inne niż główna mogą używać per-session obszarów roboczych piaskownicy w `agents.defaults.sandbox.workspaceRoot`.
|
||||
|
||||
## Powiązane
|
||||
|
||||
- [Standing Orders](/pl/automation/standing-orders) — trwałe instrukcje w plikach obszaru roboczego
|
||||
- [Heartbeat](/gateway/heartbeat) — plik obszaru roboczego HEARTBEAT.md
|
||||
- [Session](/concepts/session) — ścieżki przechowywania sesji
|
||||
- [Sandboxing](/gateway/sandboxing) — dostęp do obszaru roboczego w środowiskach sandbox
|
||||
- [Stałe polecenia](/pl/automation/standing-orders) — trwałe instrukcje w plikach obszaru roboczego
|
||||
- [Heartbeat](/pl/gateway/heartbeat) — plik obszaru roboczego HEARTBEAT.md
|
||||
- [Sesja](/pl/concepts/session) — ścieżki przechowywania sesji
|
||||
- [Piaskownica](/pl/gateway/sandboxing) — dostęp do obszaru roboczego w środowiskach sandboxed
|
||||
|
||||
@ -6,50 +6,50 @@ read_when:
|
||||
summary: 'Kontekst: co widzi model, jak jest zbudowany i jak go sprawdzić'
|
||||
title: Kontekst
|
||||
x-i18n:
|
||||
generated_at: "2026-04-12T23:28:04Z"
|
||||
generated_at: "2026-04-18T09:34:53Z"
|
||||
model: gpt-5.4
|
||||
provider: openai
|
||||
source_hash: 3620db1a8c1956d91a01328966df491388d3a32c4003dc4447197eb34316c77d
|
||||
source_hash: 477ccb1d9654968d0e904b6846b32b8c14db6b6c0d3d2ec2b7409639175629f9
|
||||
source_path: concepts/context.md
|
||||
workflow: 15
|
||||
---
|
||||
|
||||
# Kontekst
|
||||
|
||||
„Kontekst” to **wszystko, co OpenClaw wysyła do modelu dla danego uruchomienia**. Jest on ograniczony przez **okno kontekstowe** modelu (limit tokenów).
|
||||
„Kontekst” to **wszystko, co OpenClaw wysyła do modelu podczas uruchomienia**. Jest on ograniczony przez **okno kontekstu** modelu (limit tokenów).
|
||||
|
||||
Model mentalny dla początkujących:
|
||||
|
||||
- **System prompt** (zbudowany przez OpenClaw): reguły, narzędzia, lista Skills, czas/środowisko uruchomieniowe oraz wstrzyknięte pliki workspace.
|
||||
- **Historia rozmowy**: Twoje wiadomości + wiadomości asystenta dla tej sesji.
|
||||
- **Wywołania/wyniki narzędzi + załączniki**: wyniki poleceń, odczyty plików, obrazy/audio itd.
|
||||
- **System prompt** (budowany przez OpenClaw): reguły, narzędzia, lista Skills, czas/środowisko uruchomieniowe oraz wstrzyknięte pliki obszaru roboczego.
|
||||
- **Historia rozmowy**: Twoje wiadomości + wiadomości asystenta z tej sesji.
|
||||
- **Wywołania/wyniki narzędzi + załączniki**: wyjście poleceń, odczyty plików, obrazy/audio itd.
|
||||
|
||||
Kontekst _nie jest tym samym_ co „pamięć”: pamięć może być zapisana na dysku i wczytana później; kontekst to to, co znajduje się w bieżącym oknie modelu.
|
||||
Kontekst _nie jest tym samym_ co „pamięć”: pamięć może być przechowywana na dysku i później ponownie wczytana; kontekst to to, co znajduje się w bieżącym oknie modelu.
|
||||
|
||||
## Szybki start (sprawdzanie kontekstu)
|
||||
|
||||
- `/status` → szybki widok „jak bardzo zapełnione jest moje okno?” + ustawienia sesji.
|
||||
- `/context list` → co jest wstrzyknięte + przybliżone rozmiary (dla każdego pliku + łącznie).
|
||||
- `/context detail` → głębszy rozkład: rozmiary dla każdego pliku, dla każdego schematu narzędzia, dla każdego wpisu Skills oraz rozmiar system promptu.
|
||||
- `/usage tokens` → dołącza stopkę z użyciem tokenów do zwykłych odpowiedzi.
|
||||
- `/context list` → co jest wstrzyknięte + przybliżone rozmiary (na plik + sumy).
|
||||
- `/context detail` → głębszy podział: rozmiary dla poszczególnych plików, schematów narzędzi, wpisów Skills oraz rozmiar system promptu.
|
||||
- `/usage tokens` → dodaje stopkę z użyciem tokenów do zwykłych odpowiedzi.
|
||||
- `/compact` → podsumowuje starszą historię do zwartego wpisu, aby zwolnić miejsce w oknie.
|
||||
|
||||
Zobacz też: [Polecenia slash](/pl/tools/slash-commands), [Użycie tokenów i koszty](/pl/reference/token-use), [Compaction](/pl/concepts/compaction).
|
||||
|
||||
## Przykładowe dane wyjściowe
|
||||
## Przykładowe wyjście
|
||||
|
||||
Wartości różnią się w zależności od modelu, dostawcy, polityki narzędzi i tego, co znajduje się w Twoim workspace.
|
||||
Wartości różnią się w zależności od modelu, dostawcy, zasad dotyczących narzędzi i zawartości obszaru roboczego.
|
||||
|
||||
### `/context list`
|
||||
|
||||
```
|
||||
🧠 Rozkład kontekstu
|
||||
🧠 Podział kontekstu
|
||||
Workspace: <workspaceDir>
|
||||
Maks. bootstrap/plik: 20,000 chars
|
||||
Bootstrap max/file: 12,000 chars
|
||||
Sandbox: mode=non-main sandboxed=false
|
||||
System prompt (uruchomienie): 38,412 chars (~9,603 tok) (Project Context 23,901 chars (~5,976 tok))
|
||||
System prompt (run): 38,412 chars (~9,603 tok) (Project Context 23,901 chars (~5,976 tok))
|
||||
|
||||
Wstrzyknięte pliki workspace:
|
||||
Injected workspace files:
|
||||
- AGENTS.md: OK | raw 1,742 chars (~436 tok) | injected 1,742 chars (~436 tok)
|
||||
- SOUL.md: OK | raw 912 chars (~228 tok) | injected 912 chars (~228 tok)
|
||||
- TOOLS.md: TRUNCATED | raw 54,210 chars (~13,553 tok) | injected 20,962 chars (~5,241 tok)
|
||||
@ -58,32 +58,32 @@ Wstrzyknięte pliki workspace:
|
||||
- HEARTBEAT.md: MISSING | raw 0 | injected 0
|
||||
- BOOTSTRAP.md: OK | raw 0 chars (~0 tok) | injected 0 chars (~0 tok)
|
||||
|
||||
Lista Skills (tekst system promptu): 2,184 chars (~546 tok) (12 skills)
|
||||
Narzędzia: read, edit, write, exec, process, browser, message, sessions_send, …
|
||||
Lista narzędzi (tekst system promptu): 1,032 chars (~258 tok)
|
||||
Schematy narzędzi (JSON): 31,988 chars (~7,997 tok) (wliczają się do kontekstu; nie są pokazane jako tekst)
|
||||
Narzędzia: (takie same jak powyżej)
|
||||
Skills list (system prompt text): 2,184 chars (~546 tok) (12 skills)
|
||||
Tools: read, edit, write, exec, process, browser, message, sessions_send, …
|
||||
Tool list (system prompt text): 1,032 chars (~258 tok)
|
||||
Tool schemas (JSON): 31,988 chars (~7,997 tok) (counts toward context; not shown as text)
|
||||
Tools: (same as above)
|
||||
|
||||
Tokeny sesji (z cache): 14,250 łącznie / ctx=32,000
|
||||
Session tokens (cached): 14,250 total / ctx=32,000
|
||||
```
|
||||
|
||||
### `/context detail`
|
||||
|
||||
```
|
||||
🧠 Rozkład kontekstu (szczegółowy)
|
||||
🧠 Podział kontekstu (szczegółowy)
|
||||
…
|
||||
Największe Skills (rozmiar wpisu promptu):
|
||||
Top skills (prompt entry size):
|
||||
- frontend-design: 412 chars (~103 tok)
|
||||
- oracle: 401 chars (~101 tok)
|
||||
… (+10 more skills)
|
||||
|
||||
Największe narzędzia (rozmiar schematu):
|
||||
Top tools (schema size):
|
||||
- browser: 9,812 chars (~2,453 tok)
|
||||
- exec: 6,240 chars (~1,560 tok)
|
||||
… (+N more tools)
|
||||
```
|
||||
|
||||
## Co wlicza się do okna kontekstowego
|
||||
## Co wlicza się do okna kontekstu
|
||||
|
||||
Wlicza się wszystko, co otrzymuje model, w tym:
|
||||
|
||||
@ -92,24 +92,24 @@ Wlicza się wszystko, co otrzymuje model, w tym:
|
||||
- Wywołania narzędzi + wyniki narzędzi.
|
||||
- Załączniki/transkrypcje (obrazy/audio/pliki).
|
||||
- Podsumowania Compaction i artefakty przycinania.
|
||||
- „Opakowania” dostawcy lub ukryte nagłówki (niewidoczne, ale nadal liczone).
|
||||
- „Wrappery” dostawcy lub ukryte nagłówki (niewidoczne, ale nadal liczone).
|
||||
|
||||
## Jak OpenClaw buduje system prompt
|
||||
|
||||
System prompt jest **własnością OpenClaw** i jest przebudowywany przy każdym uruchomieniu. Zawiera:
|
||||
System prompt jest **własnością OpenClaw** i jest budowany od nowa przy każdym uruchomieniu. Zawiera:
|
||||
|
||||
- Listę narzędzi + krótkie opisy.
|
||||
- Listę Skills (tylko metadane; zobacz niżej).
|
||||
- Lokalizację workspace.
|
||||
- Listę Skills (tylko metadane; patrz poniżej).
|
||||
- Lokalizację obszaru roboczego.
|
||||
- Czas (UTC + przeliczony czas użytkownika, jeśli skonfigurowano).
|
||||
- Metadane środowiska uruchomieniowego (host/OS/model/myślenie).
|
||||
- Wstrzyknięte pliki bootstrap workspace w sekcji **Project Context**.
|
||||
- Metadane środowiska uruchomieniowego (host/OS/model/thinking).
|
||||
- Wstrzyknięte pliki bootstrap obszaru roboczego w sekcji **Project Context**.
|
||||
|
||||
Pełny opis: [System Prompt](/pl/concepts/system-prompt).
|
||||
Pełny podział: [System Prompt](/pl/concepts/system-prompt).
|
||||
|
||||
## Wstrzyknięte pliki workspace (Project Context)
|
||||
## Wstrzyknięte pliki obszaru roboczego (Project Context)
|
||||
|
||||
Domyślnie OpenClaw wstrzykuje stały zestaw plików workspace (jeśli istnieją):
|
||||
Domyślnie OpenClaw wstrzykuje stały zestaw plików obszaru roboczego (jeśli są obecne):
|
||||
|
||||
- `AGENTS.md`
|
||||
- `SOUL.md`
|
||||
@ -119,68 +119,68 @@ Domyślnie OpenClaw wstrzykuje stały zestaw plików workspace (jeśli istnieją
|
||||
- `HEARTBEAT.md`
|
||||
- `BOOTSTRAP.md` (tylko przy pierwszym uruchomieniu)
|
||||
|
||||
Duże pliki są przycinane osobno dla każdego pliku zgodnie z `agents.defaults.bootstrapMaxChars` (domyślnie `20000` znaków). OpenClaw wymusza także łączny limit wstrzykiwania bootstrap dla wszystkich plików przez `agents.defaults.bootstrapTotalMaxChars` (domyślnie `150000` znaków). `/context` pokazuje rozmiary **raw vs injected** oraz to, czy wystąpiło przycięcie.
|
||||
Duże pliki są obcinane dla każdego pliku osobno zgodnie z `agents.defaults.bootstrapMaxChars` (domyślnie `12000` znaków). OpenClaw wymusza też łączny limit wstrzykiwania bootstrapu dla wszystkich plików przez `agents.defaults.bootstrapTotalMaxChars` (domyślnie `60000` znaków). `/context` pokazuje rozmiary **raw vs injected** oraz informację, czy nastąpiło obcięcie.
|
||||
|
||||
Gdy dochodzi do przycięcia, środowisko uruchomieniowe może wstrzyknąć ostrzeżenie bezpośrednio w prompt w sekcji Project Context. Skonfigurujesz to przez `agents.defaults.bootstrapPromptTruncationWarning` (`off`, `once`, `always`; domyślnie `once`).
|
||||
Gdy dochodzi do obcięcia, środowisko uruchomieniowe może wstrzyknąć blok ostrzeżenia bezpośrednio do promptu w sekcji Project Context. Skonfigurujesz to przez `agents.defaults.bootstrapPromptTruncationWarning` (`off`, `once`, `always`; domyślnie `once`).
|
||||
|
||||
## Skills: wstrzyknięte vs ładowane na żądanie
|
||||
## Skills: wstrzykiwane vs ładowane na żądanie
|
||||
|
||||
System prompt zawiera zwartą **listę Skills** (nazwa + opis + lokalizacja). Ta lista ma realny narzut.
|
||||
|
||||
Instrukcje Skills _nie są_ domyślnie dołączane. Oczekuje się, że model odczyta `SKILL.md` danej umiejętności przez `read` **tylko wtedy, gdy jest to potrzebne**.
|
||||
Instrukcje Skills _nie_ są domyślnie dołączane. Oczekuje się, że model odczyta `SKILL.md` danej Skills przez `read` **tylko wtedy, gdy będzie to potrzebne**.
|
||||
|
||||
## Narzędzia: są dwa koszty
|
||||
## Narzędzia: są dwa rodzaje kosztów
|
||||
|
||||
Narzędzia wpływają na kontekst na dwa sposoby:
|
||||
|
||||
1. **Tekst listy narzędzi** w system prompcie (to, co widzisz jako „Tooling”).
|
||||
1. **Tekst listy narzędzi** w system promptcie (to, co widzisz jako „Tooling”).
|
||||
2. **Schematy narzędzi** (JSON). Są wysyłane do modelu, aby mógł wywoływać narzędzia. Wliczają się do kontekstu, mimo że nie widzisz ich jako zwykłego tekstu.
|
||||
|
||||
`/context detail` rozbija największe schematy narzędzi, aby pokazać, co dominuje.
|
||||
`/context detail` pokazuje podział największych schematów narzędzi, dzięki czemu możesz zobaczyć, co dominuje.
|
||||
|
||||
## Polecenia, dyrektywy i „skróty inline”
|
||||
|
||||
Polecenia slash są obsługiwane przez Gateway. Występuje tu kilka różnych zachowań:
|
||||
Polecenia slash są obsługiwane przez Gateway. Występuje kilka różnych zachowań:
|
||||
|
||||
- **Polecenia samodzielne**: wiadomość zawierająca wyłącznie `/...` jest uruchamiana jako polecenie.
|
||||
- **Polecenia samodzielne**: wiadomość, która zawiera tylko `/...`, jest uruchamiana jako polecenie.
|
||||
- **Dyrektywy**: `/think`, `/verbose`, `/trace`, `/reasoning`, `/elevated`, `/model`, `/queue` są usuwane, zanim model zobaczy wiadomość.
|
||||
- Wiadomości zawierające wyłącznie dyrektywy utrwalają ustawienia sesji.
|
||||
- Dyrektywy inline w zwykłej wiadomości działają jako wskazówki dla tej konkretnej wiadomości.
|
||||
- **Skróty inline** (tylko dla nadawców z allowlisty): niektóre tokeny `/...` w zwykłej wiadomości mogą zostać uruchomione natychmiast (na przykład: „hej /status”) i są usuwane, zanim model zobaczy pozostały tekst.
|
||||
- Wiadomości zawierające tylko dyrektywy zapisują ustawienia sesji.
|
||||
- Dyrektywy inline w zwykłej wiadomości działają jako wskazówki dla pojedynczej wiadomości.
|
||||
- **Skróty inline** (tylko nadawcy z allowlist): niektóre tokeny `/...` wewnątrz zwykłej wiadomości mogą uruchomić się natychmiast (przykład: „hej /status”) i są usuwane, zanim model zobaczy pozostały tekst.
|
||||
|
||||
Szczegóły: [Polecenia slash](/pl/tools/slash-commands).
|
||||
|
||||
## Sesje, Compaction i przycinanie (co jest trwałe)
|
||||
## Sesje, Compaction i przycinanie (co jest zachowywane)
|
||||
|
||||
To, co pozostaje między wiadomościami, zależy od mechanizmu:
|
||||
|
||||
- **Zwykła historia** pozostaje w transkrypcie sesji, dopóki nie zostanie skompaktowana/przycięta zgodnie z polityką.
|
||||
- **Compaction** zapisuje podsumowanie w transkrypcie i zachowuje nienaruszone ostatnie wiadomości.
|
||||
- **Pruning** usuwa stare wyniki narzędzi z promptu _w pamięci_ dla danego uruchomienia, ale nie przepisuje transkryptu.
|
||||
- **Zwykła historia** pozostaje w transkrypcji sesji, dopóki nie zostanie poddana Compaction/przycięciu zgodnie z polityką.
|
||||
- **Compaction** zapisuje podsumowanie do transkrypcji i pozostawia nienaruszone ostatnie wiadomości.
|
||||
- **Przycinanie** usuwa stare wyniki narzędzi z promptu _w pamięci_ dla danego uruchomienia, ale nie przepisuje transkrypcji.
|
||||
|
||||
Dokumentacja: [Session](/pl/concepts/session), [Compaction](/pl/concepts/compaction), [Session pruning](/pl/concepts/session-pruning).
|
||||
Dokumentacja: [Sesja](/pl/concepts/session), [Compaction](/pl/concepts/compaction), [Przycinanie sesji](/pl/concepts/session-pruning).
|
||||
|
||||
Domyślnie OpenClaw używa wbudowanego silnika kontekstu `legacy` do składania kontekstu i
|
||||
Compaction. Jeśli zainstalujesz Plugin, który udostępnia `kind: "context-engine"` i
|
||||
wybierzesz go za pomocą `plugins.slots.contextEngine`, OpenClaw przekaże temu
|
||||
silnikowi składanie kontekstu, `/compact` oraz powiązane hooki cyklu życia
|
||||
kontekstu subagenta. `ownsCompaction: false` nie powoduje automatycznego powrotu
|
||||
do silnika `legacy`; aktywny silnik nadal musi poprawnie implementować `compact()`. Zobacz
|
||||
wybierzesz go przez `plugins.slots.contextEngine`, OpenClaw przekaże składanie
|
||||
kontekstu, `/compact` oraz powiązane hooki cyklu życia kontekstu subagentów temu
|
||||
silnikowi. `ownsCompaction: false` nie powoduje automatycznego powrotu do silnika
|
||||
legacy; aktywny silnik nadal musi poprawnie implementować `compact()`. Zobacz
|
||||
[Context Engine](/pl/concepts/context-engine), aby poznać pełny
|
||||
interfejs z możliwością podłączania, hooki cyklu życia i konfigurację.
|
||||
interfejs z obsługą Plugin, hooki cyklu życia i konfigurację.
|
||||
|
||||
## Co tak naprawdę raportuje `/context`
|
||||
## Co faktycznie raportuje `/context`
|
||||
|
||||
`/context` preferuje najnowszy raport system promptu **zbudowanego podczas uruchomienia**, jeśli jest dostępny:
|
||||
|
||||
- `System prompt (run)` = przechwycony z ostatniego osadzonego uruchomienia (z obsługą narzędzi) i utrwalony w magazynie sesji.
|
||||
- `System prompt (estimate)` = obliczany na bieżąco, gdy nie istnieje raport z uruchomienia (lub gdy uruchamiasz przez backend CLI, który nie generuje raportu).
|
||||
- `System prompt (run)` = przechwycony z ostatniego osadzonego uruchomienia (z obsługą narzędzi) i zapisany w magazynie sesji.
|
||||
- `System prompt (estimate)` = obliczony na bieżąco, gdy nie istnieje raport z uruchomienia (albo przy uruchamianiu przez backend CLI, który nie generuje raportu).
|
||||
|
||||
W obu przypadkach raportuje rozmiary i największe składniki; **nie** zrzuca pełnego system promptu ani schematów narzędzi.
|
||||
W obu przypadkach raportuje rozmiary i głównych uczestników; **nie** wypisuje pełnego system promptu ani schematów narzędzi.
|
||||
|
||||
## Powiązane
|
||||
|
||||
- [Context Engine](/pl/concepts/context-engine) — niestandardowe wstrzykiwanie kontekstu przez pluginy
|
||||
- [Context Engine](/pl/concepts/context-engine) — niestandardowe wstrzykiwanie kontekstu przez Pluginy
|
||||
- [Compaction](/pl/concepts/compaction) — podsumowywanie długich rozmów
|
||||
- [System Prompt](/pl/concepts/system-prompt) — jak budowany jest system prompt
|
||||
- [Agent Loop](/pl/concepts/agent-loop) — pełny cykl działania agenta
|
||||
- [Agent Loop](/pl/concepts/agent-loop) — pełny cykl wykonywania agenta
|
||||
|
||||
@ -2,22 +2,22 @@
|
||||
read_when:
|
||||
- Rozszerzanie qa-lab lub qa-channel
|
||||
- Dodawanie scenariuszy QA opartych na repozytorium
|
||||
- Tworzenie bardziej realistycznej automatyzacji QA wokół panelu Gateway
|
||||
summary: Prywatny kształt automatyzacji QA dla qa-lab, qa-channel, scenariuszy z seedem i raportów protokołu
|
||||
- Budowanie bardziej realistycznej automatyzacji QA wokół panelu Gateway
|
||||
summary: Prywatna struktura automatyzacji QA dla qa-lab, qa-channel, scenariuszy seedowanych i raportów protokołu
|
||||
title: Automatyzacja QA E2E
|
||||
x-i18n:
|
||||
generated_at: "2026-04-17T09:49:38Z"
|
||||
generated_at: "2026-04-18T09:34:51Z"
|
||||
model: gpt-5.4
|
||||
provider: openai
|
||||
source_hash: 51f97293c184d7c04c95d9858305668fbc0f93273f587ec7e54896ad5d603ab0
|
||||
source_hash: adf8c5f74e8fabdc8e9fd7ecd41afce8b60354c7dd24d92ac926d3c527927cd4
|
||||
source_path: concepts/qa-e2e-automation.md
|
||||
workflow: 15
|
||||
---
|
||||
|
||||
# Automatyzacja QA E2E
|
||||
|
||||
Prywatny stos QA ma na celu testowanie OpenClaw w sposób bardziej realistyczny,
|
||||
ukształtowany przez kanały, niż może to zrobić pojedynczy test jednostkowy.
|
||||
Prywatny stos QA ma na celu testowanie OpenClaw w bardziej realistyczny,
|
||||
kanałowy sposób niż pojedynczy test jednostkowy.
|
||||
|
||||
Obecne elementy:
|
||||
|
||||
@ -25,8 +25,7 @@ Obecne elementy:
|
||||
reakcji, edycji i usuwania.
|
||||
- `extensions/qa-lab`: interfejs debuggera i magistrala QA do obserwowania transkryptu,
|
||||
wstrzykiwania wiadomości przychodzących i eksportowania raportu Markdown.
|
||||
- `qa/`: zasoby seedów oparte na repozytorium dla zadania startowego i bazowych
|
||||
scenariuszy QA.
|
||||
- `qa/`: zasoby seedowane oparte na repozytorium dla zadania startowego i bazowych scenariuszy QA.
|
||||
|
||||
Obecny przepływ pracy operatora QA to dwupanelowa witryna QA:
|
||||
|
||||
@ -39,13 +38,13 @@ Uruchom za pomocą:
|
||||
pnpm qa:lab:up
|
||||
```
|
||||
|
||||
To buduje witrynę QA, uruchamia ścieżkę Gateway opartą na Dockerze i udostępnia
|
||||
stronę QA Lab, gdzie operator lub pętla automatyzacji może dać agentowi misję QA,
|
||||
obserwować rzeczywiste zachowanie kanału oraz rejestrować, co zadziałało, co się nie powiodło
|
||||
i co pozostało zablokowane.
|
||||
To buduje witrynę QA, uruchamia opartą na Dockerze ścieżkę gateway i udostępnia
|
||||
stronę QA Lab, na której operator lub pętla automatyzacji może zlecić agentowi
|
||||
misję QA, obserwować rzeczywiste zachowanie kanału oraz rejestrować, co zadziałało,
|
||||
co się nie udało i co pozostało zablokowane.
|
||||
|
||||
Aby szybciej iterować nad interfejsem QA Lab bez przebudowywania obrazu Dockera za każdym razem,
|
||||
uruchom stos z pakietem QA Lab montowanym przez bind mount:
|
||||
Aby szybciej iterować nad interfejsem QA Lab bez przebudowywania obrazu Docker przy każdej zmianie,
|
||||
uruchom stos z podmontowanym pakietem QA Lab:
|
||||
|
||||
```bash
|
||||
pnpm openclaw qa docker-build-image
|
||||
@ -54,54 +53,53 @@ pnpm qa:lab:up:fast
|
||||
pnpm qa:lab:watch
|
||||
```
|
||||
|
||||
`qa:lab:up:fast` utrzymuje usługi Dockera na wcześniej zbudowanym obrazie i montuje przez bind mount
|
||||
`qa:lab:up:fast` utrzymuje usługi Docker na wcześniej zbudowanym obrazie i bind-mountuje
|
||||
`extensions/qa-lab/web/dist` do kontenera `qa-lab`. `qa:lab:watch`
|
||||
przebudowuje ten pakiet przy zmianach, a przeglądarka automatycznie przeładowuje się, gdy zmienia się hash zasobów QA Lab.
|
||||
|
||||
Aby uruchomić ścieżkę smoke z rzeczywistym transportem Matrix, wykonaj:
|
||||
Dla ścieżki smoke Matrix z rzeczywistym transportem uruchom:
|
||||
|
||||
```bash
|
||||
pnpm openclaw qa matrix
|
||||
```
|
||||
|
||||
Ta ścieżka tworzy w Dockerze jednorazowy homeserver Tuwunel, rejestruje
|
||||
tymczasowych użytkowników driver, SUT i observer, tworzy jeden prywatny pokój, a następnie uruchamia
|
||||
rzeczywistą wtyczkę Matrix wewnątrz procesu podrzędnego QA Gateway. Ścieżka z żywym transportem utrzymuje
|
||||
konfigurację procesu podrzędnego ograniczoną do testowanego transportu, więc Matrix działa bez
|
||||
`qa-channel` w konfiguracji procesu podrzędnego. Zapisuje uporządkowane artefakty raportu oraz
|
||||
połączony log stdout/stderr do wybranego katalogu wyjściowego Matrix QA. Aby przechwycić
|
||||
również zewnętrzne dane wyjściowe budowania/uruchamiania z `scripts/run-node.mjs`, ustaw
|
||||
`OPENCLAW_RUN_NODE_OUTPUT_LOG=<path>` na plik logu lokalny względem repozytorium.
|
||||
Ta ścieżka udostępnia jednorazowy homeserver Tuwunel w Dockerze, rejestruje
|
||||
tymczasowych użytkowników drivera, SUT i obserwatora, tworzy jeden prywatny pokój,
|
||||
a następnie uruchamia prawdziwy Plugin Matrix wewnątrz procesu podrzędnego QA gateway. Ścieżka z żywym transportem utrzymuje konfigurację procesu podrzędnego ograniczoną do testowanego transportu, dzięki czemu Matrix działa bez
|
||||
`qa-channel` w konfiguracji procesu podrzędnego. Zapisuje ustrukturyzowane artefakty raportu oraz
|
||||
połączony log stdout/stderr do wybranego katalogu wyjściowego Matrix QA. Aby
|
||||
przechwycić także zewnętrzne dane wyjściowe budowania/uruchamiania z `scripts/run-node.mjs`,
|
||||
ustaw `OPENCLAW_RUN_NODE_OUTPUT_LOG=<path>` na plik logu lokalny względem repozytorium.
|
||||
|
||||
Aby uruchomić ścieżkę smoke z rzeczywistym transportem Telegram, wykonaj:
|
||||
Dla ścieżki smoke Telegram z rzeczywistym transportem uruchom:
|
||||
|
||||
```bash
|
||||
pnpm openclaw qa telegram
|
||||
```
|
||||
|
||||
Ta ścieżka jest kierowana do jednej rzeczywistej prywatnej grupy Telegram zamiast tworzyć
|
||||
Ta ścieżka kieruje ruch do jednej prawdziwej prywatnej grupy Telegram zamiast udostępniać
|
||||
jednorazowy serwer. Wymaga `OPENCLAW_QA_TELEGRAM_GROUP_ID`,
|
||||
`OPENCLAW_QA_TELEGRAM_DRIVER_BOT_TOKEN` oraz
|
||||
`OPENCLAW_QA_TELEGRAM_DRIVER_BOT_TOKEN` i
|
||||
`OPENCLAW_QA_TELEGRAM_SUT_BOT_TOKEN`, a także dwóch różnych botów w tej samej
|
||||
prywatnej grupie. Bot SUT musi mieć nazwę użytkownika Telegram, a obserwacja bot-do-bot
|
||||
działa najlepiej, gdy oba boty mają włączony tryb Bot-to-Bot Communication Mode
|
||||
prywatnej grupie. Bot SUT musi mieć nazwę użytkownika Telegram, a obserwacja bot-do-bota
|
||||
działa najlepiej, gdy oba boty mają włączony Bot-to-Bot Communication Mode
|
||||
w `@BotFather`.
|
||||
|
||||
Ścieżki z żywym transportem współdzielą teraz jeden mniejszy kontrakt zamiast tego, by każda definiowała
|
||||
własny kształt listy scenariuszy:
|
||||
|
||||
`qa-channel` pozostaje szerokim syntetycznym zestawem testów zachowania produktu i nie jest częścią
|
||||
`qa-channel` pozostaje szerokim syntetycznym zestawem zachowań produktu i nie jest częścią
|
||||
macierzy pokrycia dla żywego transportu.
|
||||
|
||||
| Ścieżka | Canary | Ograniczanie odpowiedzi wzmiankami | Blokada allowlist | Odpowiedź najwyższego poziomu | Wznowienie po restarcie | Kontynuacja wątku | Izolacja wątku | Obserwacja reakcji | Polecenie pomocy |
|
||||
| -------- | ------ | ---------------------------------- | ----------------- | ----------------------------- | ----------------------- | ----------------- | -------------- | ------------------ | ---------------- |
|
||||
| Matrix | x | x | x | x | x | x | x | x | |
|
||||
| Telegram | x | | | | | | | | x |
|
||||
| Ścieżka | Canary | Bramka wzmianki | Blokada allowlisty | Odpowiedź najwyższego poziomu | Wznowienie po restarcie | Dalszy ciąg w wątku | Izolacja wątku | Obserwacja reakcji | Polecenie pomocy |
|
||||
| -------- | ------ | --------------- | ------------------ | ----------------------------- | ----------------------- | ------------------- | -------------- | ------------------ | ---------------- |
|
||||
| Matrix | x | x | x | x | x | x | x | x | |
|
||||
| Telegram | x | | | | | | | | x |
|
||||
|
||||
Dzięki temu `qa-channel` pozostaje szerokim zestawem testów zachowania produktu, podczas gdy Matrix,
|
||||
Telegram i przyszłe żywe transporty współdzielą jedną jawną checklistę kontraktu transportu.
|
||||
Dzięki temu `qa-channel` pozostaje szerokim zestawem zachowań produktu, podczas gdy Matrix,
|
||||
Telegram i przyszłe żywe transporty współdzielą jedną jawną checklistę kontraktu transportowego.
|
||||
|
||||
Aby uruchomić jednorazową ścieżkę na maszynie wirtualnej Linux bez włączania Dockera do ścieżki QA, wykonaj:
|
||||
Dla ścieżki z jednorazową maszyną wirtualną Linux bez wprowadzania Dockera do ścieżki QA uruchom:
|
||||
|
||||
```bash
|
||||
pnpm openclaw qa suite --runner multipass --scenario channel-chat-baseline
|
||||
@ -111,95 +109,99 @@ To uruchamia świeżego gościa Multipass, instaluje zależności, buduje OpenCl
|
||||
wewnątrz gościa, uruchamia `qa suite`, a następnie kopiuje zwykły raport QA i
|
||||
podsumowanie z powrotem do `.artifacts/qa-e2e/...` na hoście.
|
||||
Wykorzystuje to samo zachowanie wyboru scenariuszy co `qa suite` na hoście.
|
||||
Uruchomienia hosta i Multipass suite wykonują domyślnie wiele wybranych scenariuszy równolegle
|
||||
z izolowanymi workerami Gateway, do 64 workerów lub liczby wybranych scenariuszy.
|
||||
Użyj `--concurrency <count>`, aby dostroić liczbę workerów, lub
|
||||
`--concurrency 1` dla wykonania sekwencyjnego.
|
||||
Uruchomienia live przekazują obsługiwane wejścia uwierzytelniania QA, które są praktyczne dla
|
||||
gościa: klucze dostawcy oparte na env, ścieżkę konfiguracji dostawcy QA live oraz
|
||||
`CODEX_HOME`, jeśli jest obecne. Zachowaj `--output-dir` pod katalogiem głównym repozytorium, aby gość
|
||||
mógł zapisywać z powrotem przez zamontowaną przestrzeń roboczą.
|
||||
Uruchomienia hosta i Multipass suite domyślnie wykonują wiele wybranych scenariuszy równolegle
|
||||
z izolowanymi workerami gateway, maksymalnie do 64 workerów lub liczby wybranych
|
||||
scenariuszy. Użyj `--concurrency <count>`, aby dostroić liczbę workerów, albo
|
||||
`--concurrency 1` dla wykonania szeregowego.
|
||||
Uruchomienia na żywo przekazują obsługiwane dane uwierzytelniające QA, które są praktyczne dla
|
||||
gościa: klucze dostawców oparte na zmiennych środowiskowych, ścieżkę konfiguracji dostawcy QA live oraz
|
||||
`CODEX_HOME`, jeśli jest obecne. Zachowaj `--output-dir` w katalogu głównym repozytorium, aby gość
|
||||
mógł zapisywać z powrotem przez podmontowany obszar roboczy.
|
||||
|
||||
## Seedy oparte na repozytorium
|
||||
|
||||
Zasoby seedów znajdują się w `qa/`:
|
||||
Zasoby seedowane znajdują się w `qa/`:
|
||||
|
||||
- `qa/scenarios/index.md`
|
||||
- `qa/scenarios/*.md`
|
||||
- `qa/scenarios/<theme>/*.md`
|
||||
|
||||
Są one celowo przechowywane w git, aby plan QA był widoczny zarówno dla ludzi, jak i dla
|
||||
agenta.
|
||||
|
||||
`qa-lab` powinien pozostać ogólnym runnerem Markdown. Każdy plik Markdown scenariusza jest
|
||||
źródłem prawdy dla jednego przebiegu testowego i powinien definiować:
|
||||
`qa-lab` powinien pozostać generycznym runnerem Markdown. Każdy plik scenariusza Markdown jest
|
||||
źródłem prawdy dla jednego uruchomienia testowego i powinien definiować:
|
||||
|
||||
- metadane scenariusza
|
||||
- opcjonalne metadane kategorii, możliwości, ścieżki i ryzyka
|
||||
- odwołania do dokumentacji i kodu
|
||||
- opcjonalne wymagania dotyczące wtyczek
|
||||
- opcjonalną łatkę konfiguracji Gateway
|
||||
- opcjonalne wymagania Plugin
|
||||
- opcjonalną łatkę konfiguracji gateway
|
||||
- wykonywalny `qa-flow`
|
||||
|
||||
Współdzielona powierzchnia runtime, która obsługuje `qa-flow`, może pozostać ogólna
|
||||
i przekrojowa. Na przykład scenariusze Markdown mogą łączyć pomocniki po stronie transportu
|
||||
z pomocnikami po stronie przeglądarki, które sterują osadzonym Control UI przez
|
||||
interfejs Gateway `browser.request`, bez dodawania specjalnego runnera.
|
||||
Powtarzalna powierzchnia runtime, która stoi za `qa-flow`, może pozostać generyczna
|
||||
i przekrojowa. Na przykład scenariusze Markdown mogą łączyć helpery po stronie
|
||||
transportu z helperami po stronie przeglądarki, które sterują osadzonym interfejsem Control UI przez
|
||||
powierzchnię Gateway `browser.request`, bez dodawania runnera specjalnego przypadku.
|
||||
|
||||
Lista bazowa powinna pozostać na tyle szeroka, aby obejmować:
|
||||
Pliki scenariuszy powinny być grupowane według możliwości produktu, a nie według folderu
|
||||
drzewa źródłowego. Zachowuj stabilność ID scenariuszy przy przenoszeniu plików; używaj `docsRefs` i `codeRefs`
|
||||
dla identyfikowalności implementacji.
|
||||
|
||||
Lista bazowa powinna pozostać wystarczająco szeroka, by obejmować:
|
||||
|
||||
- czat DM i kanałowy
|
||||
- zachowanie wątku
|
||||
- cykl życia akcji wiadomości
|
||||
- zachowanie wątków
|
||||
- cykl życia akcji na wiadomościach
|
||||
- wywołania zwrotne Cron
|
||||
- przywoływanie pamięci
|
||||
- przełączanie modeli
|
||||
- przekazanie do subagenta
|
||||
- odczyt repozytorium i dokumentacji
|
||||
- jedno małe zadanie budowania, takie jak Lobster Invaders
|
||||
- jedno małe zadanie build, takie jak Lobster Invaders
|
||||
|
||||
## Ścieżki mock dostawców
|
||||
## Ścieżki z mockami dostawców
|
||||
|
||||
`qa suite` ma dwie lokalne ścieżki mock dostawców:
|
||||
`qa suite` ma dwie lokalne ścieżki z mockami dostawców:
|
||||
|
||||
- `mock-openai` to świadomy scenariuszy mock OpenClaw. Pozostaje domyślną
|
||||
deterministyczną ścieżką mock dla QA opartego na repozytorium i bramek parzystości.
|
||||
deterministyczną ścieżką mock dla QA opartego na repozytorium i bramek zgodności.
|
||||
- `aimock` uruchamia serwer dostawcy oparty na AIMock do eksperymentalnego pokrycia
|
||||
protokołu, fixture, record/replay i chaos. Jest dodatkiem i nie zastępuje
|
||||
dispatcher scenariuszy `mock-openai`.
|
||||
dyspozytora scenariuszy `mock-openai`.
|
||||
|
||||
Implementacja ścieżek dostawców znajduje się w `extensions/qa-lab/src/providers/`.
|
||||
Każdy dostawca zarządza własnymi ustawieniami domyślnymi, uruchamianiem lokalnego serwera,
|
||||
konfiguracją modelu Gateway, potrzebami etapowania profilu auth oraz flagami możliwości live/mock.
|
||||
Współdzielony kod suite i Gateway powinien kierować przez rejestr dostawców zamiast rozgałęziać się
|
||||
na podstawie nazw dostawców.
|
||||
Każdy dostawca zarządza własnymi ustawieniami domyślnymi, uruchamianiem lokalnego serwera, konfiguracją modeli gateway,
|
||||
potrzebami przygotowania profilu auth oraz flagami możliwości live/mock. Współdzielony kod suite i gateway
|
||||
powinien routować przez rejestr dostawców zamiast rozgałęziać się według nazw dostawców.
|
||||
|
||||
## Adaptery transportu
|
||||
|
||||
`qa-lab` posiada ogólny interfejs transportu dla scenariuszy QA w Markdown.
|
||||
`qa-channel` jest pierwszym adapterem tego interfejsu, ale docelowy projekt jest szerszy:
|
||||
przyszłe kanały rzeczywiste lub syntetyczne powinny podłączać się do tego samego runnera suite
|
||||
`qa-lab` zarządza generyczną powierzchnią transportu dla scenariuszy QA Markdown.
|
||||
`qa-channel` jest pierwszym adapterem na tej powierzchni, ale docelowy projekt jest szerszy:
|
||||
przyszłe prawdziwe lub syntetyczne kanały powinny podłączać się do tego samego runnera suite
|
||||
zamiast dodawania runnera QA specyficznego dla transportu.
|
||||
|
||||
Na poziomie architektury podział wygląda następująco:
|
||||
|
||||
- `qa-lab` odpowiada za ogólne wykonywanie scenariuszy, współbieżność workerów, zapisywanie artefaktów i raportowanie.
|
||||
- adapter transportu odpowiada za konfigurację Gateway, gotowość, obserwację wejścia i wyjścia, akcje transportu oraz znormalizowany stan transportu.
|
||||
- pliki scenariuszy Markdown w `qa/scenarios/` definiują przebieg testu; `qa-lab` dostarcza współdzieloną powierzchnię runtime, która go wykonuje.
|
||||
- `qa-lab` zarządza generycznym wykonywaniem scenariuszy, współbieżnością workerów, zapisem artefaktów i raportowaniem.
|
||||
- adapter transportu zarządza konfiguracją gateway, gotowością, obserwacją ruchu przychodzącego i wychodzącego, akcjami transportu oraz znormalizowanym stanem transportu.
|
||||
- pliki scenariuszy Markdown w `qa/scenarios/` definiują przebieg testu; `qa-lab` zapewnia powtarzalną powierzchnię runtime, która je wykonuje.
|
||||
|
||||
Wskazówki wdrożeniowe dla maintainerów dotyczące nowych adapterów kanałów znajdują się w
|
||||
[Testing](/pl/help/testing#adding-a-channel-to-qa).
|
||||
|
||||
## Raportowanie
|
||||
|
||||
`qa-lab` eksportuje raport protokołu Markdown na podstawie obserwowanej osi czasu magistrali.
|
||||
`qa-lab` eksportuje raport protokołu Markdown z obserwowanej osi czasu magistrali.
|
||||
Raport powinien odpowiadać na pytania:
|
||||
|
||||
- Co zadziałało
|
||||
- Co się nie powiodło
|
||||
- Co się nie udało
|
||||
- Co pozostało zablokowane
|
||||
- Jakie scenariusze uzupełniające warto dodać
|
||||
|
||||
Aby przeprowadzić sprawdzenia charakteru i stylu, uruchom ten sam scenariusz na wielu referencjach modeli live
|
||||
i zapisz oceniany raport Markdown:
|
||||
Dla sprawdzania charakteru i stylu uruchom ten sam scenariusz na wielu refach modeli live
|
||||
i zapisz oceniony raport Markdown:
|
||||
|
||||
```bash
|
||||
pnpm openclaw qa character-eval \
|
||||
@ -218,36 +220,35 @@ pnpm openclaw qa character-eval \
|
||||
--judge-concurrency 16
|
||||
```
|
||||
|
||||
To polecenie uruchamia lokalne procesy podrzędne QA Gateway, a nie Docker. Scenariusze
|
||||
Polecenie uruchamia lokalne procesy podrzędne QA gateway, a nie Docker. Scenariusze
|
||||
character eval powinny ustawiać personę przez `SOUL.md`, a następnie wykonywać zwykłe tury użytkownika,
|
||||
takie jak czat, pomoc w przestrzeni roboczej i małe zadania na plikach. Kandydacki model
|
||||
takie jak czat, pomoc dotycząca workspace i małe zadania na plikach. Kandydacki model
|
||||
nie powinien być informowany, że jest oceniany. Polecenie zachowuje każdy pełny
|
||||
transkrypt, rejestruje podstawowe statystyki uruchomienia, a następnie prosi modele oceniające w trybie fast z
|
||||
rozumowaniem `xhigh`, aby uszeregowały przebiegi według naturalności, klimatu i humoru.
|
||||
Użyj `--blind-judge-models` podczas porównywania dostawców: prompt sędziego nadal otrzymuje
|
||||
każdy transkrypt i status uruchomienia, ale referencje kandydatów są zastępowane
|
||||
neutralnymi etykietami, takimi jak `candidate-01`; raport mapuje rankingi z powrotem na rzeczywiste referencje po
|
||||
rozumowaniem `xhigh` o uszeregowanie uruchomień według naturalności, klimatu i humoru.
|
||||
Użyj `--blind-judge-models` przy porównywaniu dostawców: prompt sędziego nadal otrzymuje
|
||||
każdy transkrypt i status uruchomienia, ale refy kandydatów są zastępowane neutralnymi
|
||||
etykietami takimi jak `candidate-01`; raport mapuje rankingi z powrotem na rzeczywiste refy po
|
||||
parsowaniu.
|
||||
Przebiegi kandydatów domyślnie używają poziomu myślenia `high`, z `xhigh` dla modeli OpenAI, które
|
||||
go obsługują. Zastąp ustawienie konkretnego kandydata inline przez
|
||||
Uruchomienia kandydatów domyślnie używają poziomu myślenia `high`, z `xhigh` dla modeli OpenAI,
|
||||
które to obsługują. Zastąp ustawienie dla konkretnego kandydata inline przez
|
||||
`--model provider/model,thinking=<level>`. `--thinking <level>` nadal ustawia
|
||||
globalny fallback, a starsza forma `--model-thinking <provider/model=level>` jest
|
||||
zachowana dla kompatybilności.
|
||||
Referencje kandydatów OpenAI domyślnie używają trybu fast, aby tam, gdzie dostawca to obsługuje,
|
||||
wykorzystywane było przetwarzanie priorytetowe. Dodaj inline `,fast`, `,no-fast` lub `,fast=false`, gdy
|
||||
zachowana dla zgodności.
|
||||
Refy kandydatów OpenAI domyślnie używają trybu fast, aby tam, gdzie dostawca to obsługuje, wykorzystywane było przetwarzanie priorytetowe. Dodaj inline `,fast`, `,no-fast` lub `,fast=false`, gdy
|
||||
pojedynczy kandydat lub sędzia wymaga nadpisania. Przekaż `--fast` tylko wtedy, gdy chcesz
|
||||
wymusić tryb fast dla każdego modelu kandydata. Czasy trwania dla kandydatów i sędziów są
|
||||
rejestrowane w raporcie na potrzeby analizy benchmarków, ale prompty sędziów wyraźnie mówią,
|
||||
aby nie oceniać na podstawie szybkości.
|
||||
Zarówno przebiegi modeli kandydatów, jak i sędziów domyślnie używają współbieżności 16. Zmniejsz
|
||||
`--concurrency` lub `--judge-concurrency`, gdy limity dostawcy lub obciążenie lokalnego Gateway
|
||||
powodują, że przebieg staje się zbyt zaszumiony.
|
||||
Gdy nie przekazano żadnego kandydata `--model`, character eval domyślnie używa
|
||||
wymusić tryb fast dla każdego modelu kandydata. Czasy trwania kandydatów i sędziów są
|
||||
rejestrowane w raporcie do analizy benchmarków, ale prompty sędziów wyraźnie mówią,
|
||||
aby nie oceniać według szybkości.
|
||||
Uruchomienia modeli kandydatów i sędziów domyślnie używają współbieżności 16. Zmniejsz
|
||||
`--concurrency` lub `--judge-concurrency`, gdy limity dostawcy lub obciążenie lokalnego gateway
|
||||
sprawiają, że uruchomienie jest zbyt zaszumione.
|
||||
Gdy nie zostanie przekazany żaden kandydacki `--model`, character eval domyślnie używa
|
||||
`openai/gpt-5.4`, `openai/gpt-5.2`, `openai/gpt-5`, `anthropic/claude-opus-4-6`,
|
||||
`anthropic/claude-sonnet-4-6`, `zai/glm-5.1`,
|
||||
`moonshot/kimi-k2.5` oraz
|
||||
`google/gemini-3.1-pro-preview`, gdy nie przekazano `--model`.
|
||||
Gdy nie przekazano `--judge-model`, sędziowie domyślnie używają
|
||||
`google/gemini-3.1-pro-preview`, gdy nie zostanie przekazany żaden `--model`.
|
||||
Gdy nie zostanie przekazany żaden `--judge-model`, sędziowie domyślnie używają
|
||||
`openai/gpt-5.4,thinking=xhigh,fast` oraz
|
||||
`anthropic/claude-opus-4-6,thinking=high`.
|
||||
|
||||
|
||||
@ -1,103 +1,103 @@
|
||||
---
|
||||
read_when:
|
||||
- Edytowanie tekstu promptu systemowego, listy narzędzi lub sekcji czasu/Heartbeat
|
||||
- Zmiana zachowania bootstrapu przestrzeni roboczej lub wstrzykiwania Skills
|
||||
- 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-15T19:41:38Z"
|
||||
generated_at: "2026-04-18T09:34:50Z"
|
||||
model: gpt-5.4
|
||||
provider: openai
|
||||
source_hash: c740e4646bc4980567338237bfb55126af0df72499ca00a48e4848d9a3608ab4
|
||||
source_hash: e60705994cebdd9768926168cb1c6d17ab717d7ff02353a5d5e7478ba8191cab
|
||||
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 buduje 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.
|
||||
|
||||
Pluginy dostawców mogą wnosić wskazówki do promptu uwzględniające cache bez zastępowania
|
||||
pełnego promptu należącego do OpenClaw. Runtime dostawcy może:
|
||||
Wtyczki dostawców mogą wnosić wskazówki do promptu uwzględniające pamięć podręczną bez zastępowania
|
||||
całego promptu będącego własnością OpenClaw. Środowisko uruchomieniowe dostawcy może:
|
||||
|
||||
- zastąpić mały zestaw nazwanych sekcji rdzeniowych (`interaction_style`,
|
||||
- zastąpić niewielki zestaw nazwanych sekcji rdzenia (`interaction_style`,
|
||||
`tool_call_style`, `execution_bias`)
|
||||
- wstrzyknąć **stabilny prefiks** powyżej granicy cache promptu
|
||||
- wstrzyknąć **dynamiczny sufiks** poniżej granicy cache promptu
|
||||
- wstrzyknąć **stabilny prefiks** ponad granicą pamięci podręcznej promptu
|
||||
- wstrzyknąć **dynamiczny sufiks** pod granicą pamięci podręcznej promptu
|
||||
|
||||
Używaj wkładów należących do dostawcy do dostrajania specyficznego dla rodziny modeli. Zachowaj starszą
|
||||
mutację promptu `before_prompt_build` dla zgodności lub rzeczywiście globalnych zmian promptu, a nie dla zwykłego zachowania dostawcy.
|
||||
mutację promptu `before_prompt_build` dla zgodności lub dla naprawdę globalnych zmian promptu, a nie dla zwykłego zachowania dostawcy.
|
||||
|
||||
## Struktura
|
||||
|
||||
Prompt jest celowo zwięzły i używa stałych sekcji:
|
||||
|
||||
- **Tooling**: przypomnienie o źródle prawdy dla narzędzi strukturalnych oraz wskazówki dotyczące użycia narzędzi w runtime.
|
||||
- **Safety**: krótkie przypomnienie o zabezpieczeniach, aby unikać zachowań dążących do przejęcia kontroli lub omijania nadzoru.
|
||||
- **Skills** (gdy dostępne): informuje model, jak na żądanie ładować instrukcje umiejętności.
|
||||
- **OpenClaw Self-Update**: jak bezpiecznie sprawdzać konfigurację za pomocą
|
||||
`config.schema.lookup`, modyfikować konfigurację za pomocą `config.patch`, zastępować pełną
|
||||
konfigurację za pomocą `config.apply` i uruchamiać `update.run` tylko na wyraźną
|
||||
- **Narzędzia**: przypomnienie o źródle prawdy dla narzędzi strukturalnych oraz wskazówki środowiska uruchomieniowego dotyczące użycia narzędzi.
|
||||
- **Bezpieczeństwo**: krótkie przypomnienie o zabezpieczeniach, aby unikać zachowań dążących do zdobycia władzy lub obchodzenia nadzoru.
|
||||
- **Skills** (gdy są dostępne): mówi modelowi, jak w razie potrzeby wczytywać instrukcje umiejętności.
|
||||
- **Samoaktualizacja OpenClaw**: jak bezpiecznie sprawdzać konfigurację za pomocą
|
||||
`config.schema.lookup`, łatać konfigurację za pomocą `config.patch`, zastępować całą
|
||||
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
|
||||
`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`).
|
||||
- **Documentation**: lokalna ścieżka do dokumentacji OpenClaw (repozytorium lub pakiet npm) i kiedy ją czytać.
|
||||
- **Workspace Files (injected)**: wskazuje, że pliki bootstrap są dołączone poniżej.
|
||||
- **Sandbox** (gdy włączony): wskazuje środowisko sandbox, ścieżki sandboxa i to, czy podwyższony exec jest dostępny.
|
||||
- **Current Date & Time**: lokalny czas użytkownika, strefa czasowa i format czasu.
|
||||
- **Reply Tags**: opcjonalna składnia tagów odpowiedzi dla obsługiwanych dostawców.
|
||||
- **Heartbeats**: prompt heartbeat i zachowanie potwierdzenia, gdy heartbeat jest włączony dla domyślnego agenta.
|
||||
- **Runtime**: host, system operacyjny, node, model, katalog główny repozytorium (gdy wykryty), poziom myślenia (jedna linia).
|
||||
- **Reasoning**: bieżący poziom widoczności + podpowiedź przełączania `/reasoning`.
|
||||
- **Obszar roboczy**: katalog roboczy (`agents.defaults.workspace`).
|
||||
- **Dokumentacja**: lokalna ścieżka do dokumentacji OpenClaw (repozytorium lub pakiet npm) i informacja, kiedy ją czytać.
|
||||
- **Pliki obszaru roboczego (wstrzyknięte)**: wskazuje, że pliki bootstrap są dołączone poniżej.
|
||||
- **Sandbox** (gdy włączony): wskazuje środowisko uruchomieniowe w sandboxie, ścieżki sandboxa oraz to, czy podwyższone exec jest dostępne.
|
||||
- **Bieżąca data i godzina**: czas lokalny użytkownika, strefa czasowa i format czasu.
|
||||
- **Tagi odpowiedzi**: opcjonalna składnia tagów odpowiedzi dla obsługiwanych dostawców.
|
||||
- **Heartbeat**: prompt Heartbeat i zachowanie potwierdzeń, gdy Heartbeat jest włączony dla domyślnego agenta.
|
||||
- **Środowisko uruchomieniowe**: host, system operacyjny, node, katalog główny repozytorium (jeśli wykryto), poziom myślenia (jedna linia).
|
||||
- **Rozumowanie**: bieżący poziom widoczności + wskazówka przełączania `/reasoning`.
|
||||
|
||||
Sekcja Tooling zawiera również wskazówki runtime dla długotrwałej pracy:
|
||||
Sekcja Narzędzia zawiera też wskazówki środowiska uruchomieniowego dotyczące długotrwałej pracy:
|
||||
|
||||
- używaj Cron do przyszłych działań następczych (`check back later`, przypomnienia, zadania cykliczne)
|
||||
zamiast pętli uśpienia `exec`, trików opóźnień `yieldMs` lub powtarzanego odpytywania `process`
|
||||
- używaj `exec` / `process` tylko dla poleceń, które uruchamiają się teraz i nadal działają
|
||||
- używaj cron do przyszłych działań następczych (`check back later`, przypomnienia, praca cykliczna)
|
||||
zamiast pętli `exec` ze `sleep`, trików opóźnienia `yieldMs` lub powtarzanego
|
||||
odpytywania `process`
|
||||
- używaj `exec` / `process` tylko do poleceń, które uruchamiają się teraz i dalej działają
|
||||
w tle
|
||||
- gdy włączone jest automatyczne wybudzanie po zakończeniu, uruchom polecenie raz i polegaj na
|
||||
mechanizmie wybudzania opartym na push, gdy wygeneruje wynik lub zakończy się błędem
|
||||
- używaj `process` do logów, statusu, wejścia lub interwencji, gdy musisz
|
||||
ścieżce wybudzania typu push, gdy wygeneruje dane wyjściowe lub zakończy się błędem
|
||||
- używaj `process` do logów, stanu, danych wejściowych lub interwencji, gdy musisz
|
||||
sprawdzić działające polecenie
|
||||
- jeśli zadanie jest większe, preferuj `sessions_spawn`; zakończenie sub-agentów działa
|
||||
w oparciu o push i jest automatycznie ogłaszane z powrotem do żądającego
|
||||
- nie odpytywuj `subagents list` / `sessions_list` w pętli tylko po to, by czekać na
|
||||
- jeśli zadanie jest większe, preferuj `sessions_spawn`; zakończenie podagenta jest
|
||||
oparte na push i automatycznie ogłaszane z powrotem do zlecającego
|
||||
- nie odpytywaj w pętli `subagents list` / `sessions_list` tylko po to, by czekać na
|
||||
zakończenie
|
||||
|
||||
Gdy eksperymentalne narzędzie `update_plan` jest włączone, Tooling informuje również model,
|
||||
Gdy eksperymentalne narzędzie `update_plan` jest włączone, sekcja Narzędzia mówi modelowi również,
|
||||
aby używać go tylko do nietrywialnej pracy wieloetapowej, utrzymywać dokładnie jeden krok
|
||||
`in_progress` i unikać powtarzania całego planu po każdej aktualizacji.
|
||||
|
||||
Zabezpieczenia bezpieczeństwa w prompcie systemowym mają charakter doradczy. Kierują zachowaniem modelu, ale nie wymuszają polityki. Do twardego egzekwowania używaj polityki narzędzi, zatwierdzeń exec, sandboxingu i list dozwolonych kanałów; operatorzy mogą je celowo wyłączyć.
|
||||
|
||||
Na kanałach z natywnymi kartami/przyciskami zatwierdzania prompt runtime informuje teraz
|
||||
agenta, aby najpierw polegał na tym natywnym interfejsie zatwierdzania. Powinien uwzględniać ręczne
|
||||
polecenie `/approve` tylko wtedy, gdy wynik narzędzia mówi, że zatwierdzenia w czacie są niedostępne lub
|
||||
ręczne zatwierdzenie jest jedyną drogą.
|
||||
Na kanałach z natywnymi kartami/przyciskami zatwierdzania prompt środowiska uruchomieniowego informuje teraz
|
||||
agenta, by 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
|
||||
jedyną drogą jest ręczne zatwierdzenie.
|
||||
|
||||
## Tryby promptu
|
||||
|
||||
OpenClaw może renderować mniejsze prompty systemowe dla sub-agentów. Runtime ustawia
|
||||
OpenClaw może renderować mniejsze prompty systemowe dla podagentów. Środowisko uruchomieniowe 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 sub-agentów; pomija **Skills**, **Memory Recall**, **OpenClaw
|
||||
Self-Update**, **Model Aliases**, **User Identity**, **Reply Tags**,
|
||||
**Messaging**, **Silent Replies** i **Heartbeats**. Tooling, **Safety**,
|
||||
Workspace, Sandbox, Current Date & Time (gdy znane), Runtime i wstrzyknięty
|
||||
- `full` (domyślnie): zawiera wszystkie sekcje powyżej.
|
||||
- `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 **Heartbeat**. Narzędzia, **Bezpieczeństwo**,
|
||||
Obszar roboczy, Sandbox, Bieżąca data i godzina (gdy znane), Środowisko uruchomieniowe i 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 **Subagent
|
||||
Context** zamiast **Group Chat Context**.
|
||||
Gdy `promptMode=minimal`, dodatkowe wstrzyknięte prompty są oznaczane jako **Kontekst podagenta**
|
||||
zamiast **Kontekst czatu grupowego**.
|
||||
|
||||
## Wstrzykiwanie bootstrapu przestrzeni roboczej
|
||||
## Wstrzykiwanie bootstrapu obszaru roboczego
|
||||
|
||||
Pliki bootstrap są przycinane i dołączane w sekcji **Project Context**, aby model widział kontekst tożsamości i profilu bez potrzeby ich jawnego odczytu:
|
||||
Pliki bootstrap są przycinane i dołączane w sekcji **Kontekst projektu**, aby model widział tożsamość i kontekst profilu bez potrzeby jawnych odczytów:
|
||||
|
||||
- `AGENTS.md`
|
||||
- `SOUL.md`
|
||||
@ -105,68 +105,67 @@ Pliki bootstrap są przycinane i dołączane w sekcji **Project Context**, aby m
|
||||
- `IDENTITY.md`
|
||||
- `USER.md`
|
||||
- `HEARTBEAT.md`
|
||||
- `BOOTSTRAP.md` (tylko w zupełnie nowych przestrzeniach roboczych)
|
||||
- `MEMORY.md`, jeśli istnieje, w przeciwnym razie `memory.md` jako zapasowy wariant pisany małymi literami
|
||||
- `BOOTSTRAP.md` (tylko w zupełnie nowych obszarach roboczych)
|
||||
- `MEMORY.md`, jeśli istnieje, w przeciwnym razie `memory.md` jako rezerwa z małych liter
|
||||
|
||||
Wszystkie te pliki są **wstrzykiwane do okna kontekstowego** przy każdej turze, chyba że
|
||||
obowiązuje bramka specyficzna dla danego pliku. `HEARTBEAT.md` jest pomijany przy zwykłych uruchomieniach, gdy
|
||||
heartbeat jest wyłączony dla domyślnego agenta lub
|
||||
Wszystkie te pliki są **wstrzykiwane do okna kontekstu** przy każdej turze, chyba że ma zastosowanie bramka specyficzna dla pliku. `HEARTBEAT.md` jest pomijany przy zwykłych uruchomieniach, gdy
|
||||
Heartbeat jest wyłączony dla domyślnego agenta lub
|
||||
`agents.defaults.heartbeat.includeSystemPromptSection` ma wartość false. Utrzymuj wstrzykiwane
|
||||
pliki zwięzłe — szczególnie `MEMORY.md`, który może z czasem rosnąć i prowadzić do
|
||||
nieoczekiwanie wysokiego użycia kontekstu oraz częstszej Compaction.
|
||||
nieoczekiwanie wysokiego zużycia kontekstu oraz częstszej Compaction.
|
||||
|
||||
> **Uwaga:** codzienne pliki `memory/*.md` **nie** są częścią zwykłego bootstrapowego
|
||||
> Project Context. W zwykłych turach są odczytywane na żądanie przez
|
||||
> **Uwaga:** dzienne pliki `memory/*.md` **nie** są częścią zwykłego bootstrapowego
|
||||
> Kontekstu projektu. Przy standardowych turach są dostępne na żądanie przez
|
||||
> narzędzia `memory_search` i `memory_get`, więc nie liczą się do
|
||||
> okna kontekstowego, chyba że model jawnie je odczyta. Wyjątkiem są zwykłe tury `/new` i
|
||||
> `/reset`: runtime może dołączyć ostatnią codzienną pamięć jako jednorazowy blok
|
||||
> kontekstu startowego dla tej pierwszej tury.
|
||||
> okna kontekstu, chyba że model wyraźnie je odczyta. Wyjątkiem są zwykłe tury `/new` i
|
||||
> `/reset`: środowisko uruchomieniowe może poprzedzić pierwszy obrót jednorazowym blokiem
|
||||
> kontekstu startowego zawierającym ostatnią dzienną pamięć.
|
||||
|
||||
Duże pliki są przycinane z markerem. Maksymalny rozmiar na plik jest kontrolowany przez
|
||||
`agents.defaults.bootstrapMaxChars` (domyślnie: 20000). Łączna wstrzyknięta zawartość bootstrapu
|
||||
Duże pliki są obcinane i oznaczane znacznikiem. Maksymalny rozmiar na plik jest kontrolowany przez
|
||||
`agents.defaults.bootstrapMaxChars` (domyślnie: 12000). 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 dochodzi do przycięcia,
|
||||
OpenClaw może wstrzyknąć blok ostrzeżenia w Project Context; kontroluje się to przez
|
||||
(domyślnie: 60000). 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; steruje tym
|
||||
`agents.defaults.bootstrapPromptTruncationWarning` (`off`, `once`, `always`;
|
||||
domyślnie: `once`).
|
||||
|
||||
Sesje sub-agentów wstrzykują tylko `AGENTS.md` i `TOOLS.md` (pozostałe pliki bootstrap
|
||||
są odfiltrowywane, aby zachować mały kontekst sub-agenta).
|
||||
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 bootstrap (na przykład zamieniając `SOUL.md` na alternatywną personę).
|
||||
wstrzyknięte 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).
|
||||
|
||||
Aby sprawdzić, jaki wkład ma każdy wstrzyknięty plik (surowy vs wstrzyknięty, przycięcie oraz narzut schematu narzędzi), użyj `/context list` lub `/context detail`. Zobacz [Context](/pl/concepts/context).
|
||||
Aby sprawdzić, jaki wkład wnosi każdy wstrzyknięty plik (surowy vs wstrzyknięty, obcięcie, plus narzut schematu narzędzi), użyj `/context list` lub `/context detail`. Zobacz [Kontekst](/pl/concepts/context).
|
||||
|
||||
## Obsługa czasu
|
||||
|
||||
Prompt systemowy zawiera dedykowaną sekcję **Current Date & Time**, gdy znana jest
|
||||
strefa czasowa użytkownika. Aby zachować stabilność cache promptu, zawiera teraz tylko
|
||||
Prompt systemowy zawiera dedykowaną sekcję **Bieżąca data i godzina**, gdy znana jest
|
||||
strefa czasowa użytkownika. Aby zachować stabilność pamięci podręcznej promptu, zawiera teraz tylko
|
||||
**strefę czasową** (bez dynamicznego zegara ani formatu czasu).
|
||||
|
||||
Użyj `session_status`, gdy agent potrzebuje bieżącego czasu; karta statusu
|
||||
zawiera wiersz znacznika czasu. To samo narzędzie może opcjonalnie ustawić
|
||||
nadpisanie modelu dla sesji (`model=default` je czyści).
|
||||
Użyj `session_status`, gdy agent potrzebuje bieżącego czasu; karta stanu
|
||||
zawiera wiersz ze znacznikiem czasu. To samo narzędzie może opcjonalnie ustawić zastąpienie
|
||||
modelu dla sesji (`model=default` je czyści).
|
||||
|
||||
Konfiguracja:
|
||||
|
||||
- `agents.defaults.userTimezone`
|
||||
- `agents.defaults.timeFormat` (`auto` | `12` | `24`)
|
||||
|
||||
Pełne szczegóły zachowania znajdziesz w [Date & Time](/pl/date-time).
|
||||
Pełne szczegóły zachowania znajdziesz w [Data i czas](/pl/date-time).
|
||||
|
||||
## Skills
|
||||
|
||||
Gdy istnieją kwalifikujące się Skills, OpenClaw wstrzykuje zwartą **listę dostępnych Skills**
|
||||
(`formatSkillsForPrompt`), która zawiera **ścieżkę pliku** dla każdego Skill. Prompt
|
||||
nakazuje modelowi użyć `read`, aby wczytać SKILL.md z podanej
|
||||
lokalizacji (przestrzeń robocza, zarządzana lub dołączona). Jeśli nie ma kwalifikujących się Skills, sekcja
|
||||
Gdy istnieją kwalifikujące się Skills, OpenClaw wstrzykuje zwięzłą **listę dostępnych Skills**
|
||||
(`formatSkillsForPrompt`), która zawiera **ścieżkę do pliku** dla każdego Skill. Prompt
|
||||
instruuje model, aby użyć `read` do wczytania pliku SKILL.md z podanej
|
||||
lokalizacji (obszar roboczy, zarządzane lub wbudowane). Jeśli nie ma kwalifikujących się Skills, sekcja
|
||||
Skills jest pomijana.
|
||||
|
||||
Kwalifikacja obejmuje bramki metadanych Skill, kontrole środowiska runtime/konfiguracji
|
||||
Kwalifikowalność obejmuje bramki metadanych Skill, kontrole środowiska uruchomieniowego/konfiguracji
|
||||
oraz efektywną listę dozwolonych Skills agenta, gdy skonfigurowano `agents.defaults.skills` lub
|
||||
`agents.list[].skills`.
|
||||
|
||||
@ -180,26 +179,26 @@ oraz efektywną listę dozwolonych Skills agenta, gdy skonfigurowano `agents.def
|
||||
</available_skills>
|
||||
```
|
||||
|
||||
Pozwala to zachować mały podstawowy prompt, a jednocześnie umożliwia ukierunkowane użycie Skills.
|
||||
Pozwala to zachować mały bazowy prompt, a jednocześnie nadal umożliwiać ukierunkowane użycie Skills.
|
||||
|
||||
Budżet listy Skills należy do podsystemu Skills:
|
||||
|
||||
- Globalna wartość domyślna: `skills.limits.maxSkillsPromptChars`
|
||||
- Nadpisanie dla agenta: `agents.list[].skillsLimits.maxSkillsPromptChars`
|
||||
- Zastąpienie dla agenta: `agents.list[].skillsLimits.maxSkillsPromptChars`
|
||||
|
||||
Ogólne ograniczone fragmenty runtime używają innej powierzchni:
|
||||
Ogólne ograniczone fragmenty środowiska uruchomieniowego używają innej powierzchni:
|
||||
|
||||
- `agents.defaults.contextLimits.*`
|
||||
- `agents.list[].contextLimits.*`
|
||||
|
||||
Ten podział utrzymuje rozmiar Skills oddzielnie od rozmiaru odczytu/wstrzykiwania runtime, takiego jak
|
||||
`memory_get`, wyniki narzędzi na żywo i odświeżenia AGENTS.md po Compaction.
|
||||
Ten podział oddziela rozmiar Skills od rozmiaru odczytu/wstrzykiwania środowiska uruchomieniowego
|
||||
takiego jak `memory_get`, wyniki narzędzi na żywo i odświeżenia `AGENTS.md` po Compaction.
|
||||
|
||||
## Documentation
|
||||
## Dokumentacja
|
||||
|
||||
Gdy to możliwe, prompt systemowy zawiera sekcję **Documentation**, która wskazuje
|
||||
lokalny katalog dokumentacji OpenClaw (albo `docs/` w przestrzeni roboczej repozytorium, albo dokumentację
|
||||
dołączonego pakietu npm) oraz wspomina też o publicznym mirrorze, repozytorium źródłowym, społecznościowym Discordzie i
|
||||
Gdy jest dostępna, prompt systemowy zawiera sekcję **Dokumentacja**, która wskazuje
|
||||
lokalny katalog dokumentacji OpenClaw (albo `docs/` w obszarze roboczym repozytorium, albo dokumentację
|
||||
dołączoną do pakietu npm) oraz wspomina o publicznym lustrze, źródłowym repozytorium, społecznościowym Discordzie i
|
||||
ClawHub ([https://clawhub.ai](https://clawhub.ai)) do odkrywania Skills. Prompt instruuje model, aby najpierw konsultował lokalną dokumentację
|
||||
w sprawach zachowania, poleceń, konfiguracji lub architektury OpenClaw oraz aby
|
||||
samodzielnie uruchamiał `openclaw status`, kiedy to możliwe (prosząc użytkownika tylko wtedy, gdy nie ma dostępu).
|
||||
w sprawach dotyczących 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
File diff suppressed because it is too large
Load Diff
@ -1,16 +1,16 @@
|
||||
---
|
||||
read_when:
|
||||
- Tworzysz nowy Plugin kanału komunikatora
|
||||
- Chcesz połączyć OpenClaw z platformą komunikacyjną
|
||||
- Musisz zrozumieć powierzchnię adaptera ChannelPlugin
|
||||
- Tworzysz nowy Plugin kanału wiadomości.
|
||||
- Chcesz połączyć OpenClaw z platformą komunikacyjną.
|
||||
- Musisz zrozumieć powierzchnię adaptera ChannelPlugin.
|
||||
sidebarTitle: Channel Plugins
|
||||
summary: Przewodnik krok po kroku dotyczący tworzenia Pluginu kanału komunikatora dla OpenClaw
|
||||
summary: Przewodnik krok po kroku po tworzeniu Pluginu kanału wiadomości dla OpenClaw
|
||||
title: Tworzenie Pluginów kanałów
|
||||
x-i18n:
|
||||
generated_at: "2026-04-15T19:41:36Z"
|
||||
generated_at: "2026-04-18T09:34:53Z"
|
||||
model: gpt-5.4
|
||||
provider: openai
|
||||
source_hash: 80e47e61d1e47738361692522b79aff276544446c58a7b41afe5296635dfad4b
|
||||
source_hash: 3dda53c969bc7356a450c2a5bf49fb82bf1283c23e301dec832d8724b11e724b
|
||||
source_path: plugins/sdk-channel-plugins.md
|
||||
workflow: 15
|
||||
---
|
||||
@ -20,7 +20,7 @@ x-i18n:
|
||||
Ten przewodnik przeprowadzi Cię przez tworzenie Pluginu kanału, który łączy OpenClaw z platformą komunikacyjną. Na końcu będziesz mieć działający kanał z zabezpieczeniami DM, parowaniem, wątkowaniem odpowiedzi i wiadomościami wychodzącymi.
|
||||
|
||||
<Info>
|
||||
Jeśli nie tworzyłeś wcześniej żadnego Pluginu OpenClaw, najpierw przeczytaj
|
||||
Jeśli nie tworzyłeś jeszcze żadnego Pluginu OpenClaw, najpierw przeczytaj
|
||||
[Pierwsze kroki](/pl/plugins/building-plugins), aby poznać podstawową strukturę
|
||||
pakietu i konfigurację manifestu.
|
||||
</Info>
|
||||
@ -30,62 +30,60 @@ Ten przewodnik przeprowadzi Cię przez tworzenie Pluginu kanału, który łączy
|
||||
Pluginy kanałów nie potrzebują własnych narzędzi do wysyłania/edycji/reakcji. OpenClaw utrzymuje jedno współdzielone narzędzie `message` w rdzeniu. Twój Plugin odpowiada za:
|
||||
|
||||
- **Konfigurację** — rozpoznawanie konta i kreator konfiguracji
|
||||
- **Bezpieczeństwo** — zasady DM i listy dozwolonych
|
||||
- **Bezpieczeństwo** — politykę DM i listy dozwolonych
|
||||
- **Parowanie** — przepływ zatwierdzania DM
|
||||
- **Gramatykę sesji** — sposób, w jaki identyfikatory konwersacji specyficzne dla dostawcy są mapowane na czaty bazowe, identyfikatory wątków i zapasowe elementy nadrzędne
|
||||
- **Gramatykę sesji** — sposób, w jaki specyficzne dla dostawcy identyfikatory konwersacji mapują się na czaty bazowe, identyfikatory wątków i rezerwowe elementy nadrzędne
|
||||
- **Ruch wychodzący** — wysyłanie tekstu, multimediów i ankiet na platformę
|
||||
- **Wątkowanie** — sposób wątkowania odpowiedzi
|
||||
|
||||
Rdzeń odpowiada za współdzielone narzędzie wiadomości, połączenie promptów, zewnętrzny kształt klucza sesji, ogólne księgowanie `:thread:` i dyspozycję.
|
||||
Rdzeń odpowiada za współdzielone narzędzie wiadomości, podłączenie promptów, zewnętrzny kształt klucza sesji, ogólne śledzenie `:thread:` oraz dyspozycję.
|
||||
|
||||
Jeśli Twój kanał dodaje parametry narzędzia wiadomości, które przenoszą źródła multimediów, udostępnij te nazwy parametrów przez `describeMessageTool(...).mediaSourceParams`. Rdzeń używa tej jawnej listy do normalizacji ścieżek sandboxa i zasad dostępu do multimediów wychodzących, więc Pluginy nie potrzebują wyjątków w współdzielonym rdzeniu dla parametrów awatarów, załączników lub obrazów okładek specyficznych dla dostawcy.
|
||||
Preferuj zwracanie mapy kluczowanej akcją, takiej jak
|
||||
`{ "set-profile": ["avatarUrl", "avatarPath"] }`, aby niezwiązane akcje nie dziedziczyły argumentów multimediów innej akcji. Płaska tablica nadal działa dla parametrów, które celowo są współdzielone przez każdą udostępnioną akcję.
|
||||
Jeśli Twój kanał dodaje parametry narzędzia wiadomości, które przenoszą źródła multimediów, udostępnij te nazwy parametrów przez `describeMessageTool(...).mediaSourceParams`. Rdzeń używa tej jawnej listy do normalizacji ścieżek sandboxa i polityki dostępu do multimediów wychodzących, więc Pluginy nie potrzebują wyjątków we współdzielonym rdzeniu dla specyficznych dla dostawcy parametrów avatarów, załączników czy obrazów okładki.
|
||||
Preferuj zwracanie mapy z kluczami akcji, takiej jak
|
||||
`{ "set-profile": ["avatarUrl", "avatarPath"] }`, aby niepowiązane akcje nie dziedziczyły argumentów multimedialnych innej akcji. Płaska tablica nadal działa dla parametrów, które są celowo współdzielone przez każdą udostępnioną akcję.
|
||||
|
||||
Jeśli Twoja platforma przechowuje dodatkowy zakres wewnątrz identyfikatorów konwersacji, zachowaj to parsowanie w Pluginie za pomocą `messaging.resolveSessionConversation(...)`. To jest kanoniczny hook do mapowania `rawId` na bazowy identyfikator konwersacji, opcjonalny identyfikator wątku, jawny `baseConversationId` i wszelkie `parentConversationCandidates`.
|
||||
Gdy zwracasz `parentConversationCandidates`, zachowaj ich kolejność od najbardziej zawężonego elementu nadrzędnego do najszerszej/bazowej konwersacji.
|
||||
Jeśli Twoja platforma przechowuje dodatkowy zakres w identyfikatorach konwersacji, zachowaj to parsowanie w Pluginie za pomocą `messaging.resolveSessionConversation(...)`. To kanoniczny hook do mapowania `rawId` na bazowy identyfikator konwersacji, opcjonalny identyfikator wątku, jawny `baseConversationId` oraz dowolne `parentConversationCandidates`.
|
||||
Gdy zwracasz `parentConversationCandidates`, zachowaj ich kolejność od najwęższego elementu nadrzędnego do najszerszej/bazowej konwersacji.
|
||||
|
||||
Bundlowane Pluginy, które potrzebują tego samego parsowania przed uruchomieniem rejestru kanałów, mogą także udostępniać plik najwyższego poziomu `session-key-api.ts` z pasującym eksportem `resolveSessionConversation(...)`. Rdzeń używa tej bezpiecznej dla bootstrapu powierzchni tylko wtedy, gdy rejestr Pluginów środowiska uruchomieniowego nie jest jeszcze dostępny.
|
||||
Bundlowane Pluginy, które potrzebują tego samego parsowania przed uruchomieniem rejestru kanałów, mogą też udostępniać plik najwyższego poziomu `session-key-api.ts` z pasującym eksportem `resolveSessionConversation(...)`. Rdzeń używa tej bezpiecznej dla bootstrapu powierzchni tylko wtedy, gdy rejestr Pluginów środowiska uruchomieniowego nie jest jeszcze dostępny.
|
||||
|
||||
`messaging.resolveParentConversationCandidates(...)` pozostaje dostępne jako starszy, zgodnościowy mechanizm zapasowy, gdy Plugin potrzebuje jedynie zapasowych elementów nadrzędnych ponad ogólnym/nieprzetworzonym identyfikatorem. Jeśli istnieją oba hooki, rdzeń najpierw używa
|
||||
`resolveSessionConversation(...).parentConversationCandidates`, a do
|
||||
`resolveParentConversationCandidates(...)` wraca tylko wtedy, gdy kanoniczny hook ich nie zwraca.
|
||||
`messaging.resolveParentConversationCandidates(...)` pozostaje dostępne jako starszy, zgodnościowy mechanizm rezerwowy, gdy Plugin potrzebuje jedynie rezerwowych elementów nadrzędnych ponad ogólnym/surowym identyfikatorem. Jeśli istnieją oba hooki, rdzeń najpierw używa `resolveSessionConversation(...).parentConversationCandidates`, a do `resolveParentConversationCandidates(...)` wraca tylko wtedy, gdy kanoniczny hook ich nie zwraca.
|
||||
|
||||
## Zatwierdzenia i możliwości kanału
|
||||
|
||||
Większość Pluginów kanałów nie potrzebuje kodu specyficznego dla zatwierdzeń.
|
||||
|
||||
- Rdzeń odpowiada za `/approve` w tym samym czacie, współdzielone payloady przycisków zatwierdzeń i ogólne dostarczanie zapasowe.
|
||||
- Preferuj pojedynczy obiekt `approvalCapability` na Pluginie kanału, gdy kanał potrzebuje zachowania specyficznego dla zatwierdzeń.
|
||||
- `ChannelPlugin.approvals` zostało usunięte. Umieść fakty dotyczące dostarczania/natywności/renderowania/uwierzytelniania zatwierdzeń w `approvalCapability`.
|
||||
- `plugin.auth` służy tylko do logowania/wylogowania; rdzeń nie odczytuje już hooków uwierzytelniania zatwierdzeń z tego obiektu.
|
||||
- Rdzeń odpowiada za `/approve` w tym samym czacie, współdzielone ładunki przycisków zatwierdzania i ogólne dostarczanie rezerwowe.
|
||||
- Preferuj pojedynczy obiekt `approvalCapability` w Pluginie kanału, gdy kanał potrzebuje zachowania specyficznego dla zatwierdzeń.
|
||||
- `ChannelPlugin.approvals` zostało usunięte. Umieść informacje o dostarczaniu/renderowaniu/uwierzytelnianiu natywnych zatwierdzeń w `approvalCapability`.
|
||||
- `plugin.auth` służy tylko do logowania/wylogowywania; rdzeń nie odczytuje już hooków uwierzytelniania zatwierdzeń z tego obiektu.
|
||||
- `approvalCapability.authorizeActorAction` i `approvalCapability.getActionAvailabilityState` to kanoniczna powierzchnia uwierzytelniania zatwierdzeń.
|
||||
- Użyj `approvalCapability.getActionAvailabilityState` do dostępności uwierzytelniania zatwierdzeń w tym samym czacie.
|
||||
- Jeśli Twój kanał udostępnia natywne zatwierdzenia exec, użyj `approvalCapability.getExecInitiatingSurfaceState` dla stanu powierzchni inicjującej/klienta natywnego, gdy różni się on od uwierzytelniania zatwierdzeń w tym samym czacie. Rdzeń używa tego hooka specyficznego dla exec, aby odróżniać `enabled` od `disabled`, zdecydować, czy kanał inicjujący obsługuje natywne zatwierdzenia exec, i uwzględnić kanał we wskazówkach zapasowych dla klienta natywnego. `createApproverRestrictedNativeApprovalCapability(...)` wypełnia to dla typowego przypadku.
|
||||
- Użyj `outbound.shouldSuppressLocalPayloadPrompt` lub `outbound.beforeDeliverPayload` dla zachowań cyklu życia payloadu specyficznych dla kanału, takich jak ukrywanie zduplikowanych lokalnych promptów zatwierdzeń lub wysyłanie wskaźników pisania przed dostarczeniem.
|
||||
- Użyj `approvalCapability.delivery` tylko do natywnego trasowania zatwierdzeń lub wyłączania mechanizmu zapasowego.
|
||||
- Użyj `approvalCapability.nativeRuntime` dla natywnych faktów zatwierdzeń należących do kanału. Zachowaj leniwe ładowanie dla gorących entrypointów kanału za pomocą `createLazyChannelApprovalNativeRuntimeAdapter(...)`, które może importować moduł runtime na żądanie, jednocześnie pozwalając rdzeniowi złożyć cykl życia zatwierdzenia.
|
||||
- Użyj `approvalCapability.render` tylko wtedy, gdy kanał naprawdę potrzebuje niestandardowych payloadów zatwierdzeń zamiast współdzielonego renderera.
|
||||
- Użyj `approvalCapability.describeExecApprovalSetup`, gdy kanał chce, aby odpowiedź na ścieżce wyłączonej wyjaśniała dokładne przełączniki konfiguracyjne potrzebne do włączenia natywnych zatwierdzeń exec. Hook otrzymuje `{ channel, channelLabel, accountId }`; kanały z nazwanymi kontami powinny renderować ścieżki o zakresie konta, takie jak `channels.<channel>.accounts.<id>.execApprovals.*`, zamiast domyślnych ścieżek najwyższego poziomu.
|
||||
- Jeśli kanał może wywnioskować stabilne tożsamości typu właściciela DM z istniejącej konfiguracji, użyj `createResolvedApproverActionAuthAdapter` z `openclaw/plugin-sdk/approval-runtime`, aby ograniczyć `/approve` w tym samym czacie bez dodawania logiki specyficznej dla zatwierdzeń w rdzeniu.
|
||||
- Jeśli kanał potrzebuje natywnego dostarczania zatwierdzeń, utrzymuj kod kanału skupiony na normalizacji celu oraz faktach dotyczących transportu/prezentacji. Użyj `createChannelExecApprovalProfile`, `createChannelNativeOriginTargetResolver`, `createChannelApproverDmTargetResolver` i `createApproverRestrictedNativeApprovalCapability` z `openclaw/plugin-sdk/approval-runtime`. Umieść fakty specyficzne dla kanału za `approvalCapability.nativeRuntime`, najlepiej przez `createChannelApprovalNativeRuntimeAdapter(...)` lub `createLazyChannelApprovalNativeRuntimeAdapter(...)`, aby rdzeń mógł złożyć handler i przejąć filtrowanie żądań, trasowanie, deduplikację, wygasanie, subskrypcję Gateway oraz powiadomienia o przekierowaniu gdzie indziej. `nativeRuntime` jest podzielone na kilka mniejszych powierzchni:
|
||||
- `availability` — czy konto jest skonfigurowane i czy żądanie powinno zostać obsłużone
|
||||
- `presentation` — mapowanie współdzielonego modelu widoku zatwierdzenia na oczekujące/rozwiązane/wygasłe natywne payloady lub działania końcowe
|
||||
- `transport` — przygotowywanie celów oraz wysyłanie/aktualizowanie/usuwanie natywnych wiadomości zatwierdzeń
|
||||
- Używaj `approvalCapability.getActionAvailabilityState` do dostępności uwierzytelniania zatwierdzeń w tym samym czacie.
|
||||
- Jeśli Twój kanał udostępnia natywne zatwierdzenia wykonania, użyj `approvalCapability.getExecInitiatingSurfaceState` dla stanu powierzchni inicjującej/natywnego klienta, gdy różni się on od uwierzytelniania zatwierdzeń w tym samym czacie. Rdzeń używa tego hooka specyficznego dla wykonania, aby odróżniać `enabled` od `disabled`, decydować, czy kanał inicjujący obsługuje natywne zatwierdzenia wykonania, oraz uwzględniać kanał w wskazówkach dotyczących natywnego klienta jako rozwiązania rezerwowego. `createApproverRestrictedNativeApprovalCapability(...)` wypełnia to dla typowego przypadku.
|
||||
- Używaj `outbound.shouldSuppressLocalPayloadPrompt` lub `outbound.beforeDeliverPayload` dla zachowań cyklu życia ładunku specyficznych dla kanału, takich jak ukrywanie zduplikowanych lokalnych promptów zatwierdzenia lub wysyłanie wskaźników pisania przed dostarczeniem.
|
||||
- Używaj `approvalCapability.delivery` tylko do routingu natywnych zatwierdzeń lub wyłączania dostarczania rezerwowego.
|
||||
- Używaj `approvalCapability.nativeRuntime` dla faktów dotyczących natywnych zatwierdzeń należących do kanału. Zachowaj leniwe ładowanie na gorących punktach wejścia kanału za pomocą `createLazyChannelApprovalNativeRuntimeAdapter(...)`, który może importować Twój moduł środowiska uruchomieniowego na żądanie, a jednocześnie pozwalać rdzeniowi składać cykl życia zatwierdzenia.
|
||||
- Używaj `approvalCapability.render` tylko wtedy, gdy kanał naprawdę potrzebuje niestandardowych ładunków zatwierdzeń zamiast współdzielonego renderera.
|
||||
- Używaj `approvalCapability.describeExecApprovalSetup`, gdy kanał chce, aby odpowiedź na ścieżce wyłączonej wyjaśniała dokładne pokrętła konfiguracyjne potrzebne do włączenia natywnych zatwierdzeń wykonania. Hook otrzymuje `{ channel, channelLabel, accountId }`; kanały z nazwanymi kontami powinny renderować ścieżki o zakresie konta, takie jak `channels.<channel>.accounts.<id>.execApprovals.*`, zamiast domyślnych ścieżek najwyższego poziomu.
|
||||
- Jeśli kanał potrafi wywnioskować stabilne tożsamości DM podobne do właściciela z istniejącej konfiguracji, użyj `createResolvedApproverActionAuthAdapter` z `openclaw/plugin-sdk/approval-runtime`, aby ograniczyć `/approve` w tym samym czacie bez dodawania do rdzenia logiki specyficznej dla zatwierdzeń.
|
||||
- Jeśli kanał potrzebuje natywnego dostarczania zatwierdzeń, utrzymuj kod kanału skupiony na normalizacji celu oraz faktach dotyczących transportu/prezentacji. Użyj `createChannelExecApprovalProfile`, `createChannelNativeOriginTargetResolver`, `createChannelApproverDmTargetResolver` i `createApproverRestrictedNativeApprovalCapability` z `openclaw/plugin-sdk/approval-runtime`. Umieść fakty specyficzne dla kanału za `approvalCapability.nativeRuntime`, najlepiej przez `createChannelApprovalNativeRuntimeAdapter(...)` lub `createLazyChannelApprovalNativeRuntimeAdapter(...)`, aby rdzeń mógł złożyć handler i przejąć filtrowanie żądań, routing, deduplikację, wygasanie, subskrypcję Gateway oraz powiadomienia o przekierowaniu. `nativeRuntime` jest podzielone na kilka mniejszych powierzchni:
|
||||
- `availability` — czy konto jest skonfigurowane i czy żądanie powinno być obsłużone
|
||||
- `presentation` — mapowanie współdzielonego modelu widoku zatwierdzeń na oczekujące/rozwiązane/wygasłe natywne ładunki lub końcowe akcje
|
||||
- `transport` — przygotowanie celów oraz wysyłanie/aktualizowanie/usuwanie natywnych wiadomości zatwierdzeń
|
||||
- `interactions` — opcjonalne hooki bind/unbind/clear-action dla natywnych przycisków lub reakcji
|
||||
- `observe` — opcjonalne hooki diagnostyki dostarczeń
|
||||
- Jeśli kanał potrzebuje obiektów należących do runtime, takich jak klient, token, aplikacja Bolt lub odbiornik Webhooków, zarejestruj je przez `openclaw/plugin-sdk/channel-runtime-context`. Ogólny rejestr kontekstu runtime pozwala rdzeniowi uruchamiać handlery sterowane możliwościami na podstawie stanu uruchomienia kanału bez dodawania kodu opakowującego specyficznego dla zatwierdzeń.
|
||||
- Sięgaj po niższopoziomowe `createChannelApprovalHandler` lub `createChannelNativeApprovalRuntime` tylko wtedy, gdy powierzchnia oparta na możliwościach nie jest jeszcze wystarczająco ekspresyjna.
|
||||
- Kanały natywnych zatwierdzeń muszą trasować zarówno `accountId`, jak i `approvalKind` przez te helpery. `accountId` utrzymuje zasady zatwierdzeń wielu kont w odpowiednim zakresie konta bota, a `approvalKind` utrzymuje zachowanie zatwierdzeń exec vs Plugin dostępne dla kanału bez zakodowanych na sztywno rozgałęzień w rdzeniu.
|
||||
- Rdzeń odpowiada teraz również za powiadomienia o przekierowaniu zatwierdzeń. Pluginy kanałów nie powinny wysyłać własnych wiadomości uzupełniających typu „zatwierdzenie trafiło do DM / innego kanału” z `createChannelNativeApprovalRuntime`; zamiast tego udostępnij dokładne trasowanie pochodzenia + DM osoby zatwierdzającej przez współdzielone helpery możliwości zatwierdzeń i pozwól rdzeniowi agregować rzeczywiste dostarczenia przed opublikowaniem powiadomienia z powrotem do czatu inicjującego.
|
||||
- Zachowuj typ identyfikatora dostarczonego zatwierdzenia od początku do końca. Klienci natywni nie powinni zgadywać ani przepisywać trasowania zatwierdzeń exec vs Plugin na podstawie lokalnego stanu kanału.
|
||||
- Różne typy zatwierdzeń mogą celowo udostępniać różne powierzchnie natywne.
|
||||
- `observe` — opcjonalne hooki diagnostyki dostarczania
|
||||
- Jeśli kanał potrzebuje obiektów należących do środowiska uruchomieniowego, takich jak klient, token, aplikacja Bolt lub odbiornik Webhooków, zarejestruj je przez `openclaw/plugin-sdk/channel-runtime-context`. Ogólny rejestr kontekstu środowiska uruchomieniowego pozwala rdzeniowi uruchamiać handlery sterowane możliwościami na podstawie stanu startowego kanału bez dodawania kleju opakowującego specyficznego dla zatwierdzeń.
|
||||
- Sięgaj po niższopoziomowe `createChannelApprovalHandler` lub `createChannelNativeApprovalRuntime` tylko wtedy, gdy powierzchnia sterowana możliwościami nie jest jeszcze wystarczająco ekspresyjna.
|
||||
- Kanały natywnych zatwierdzeń muszą kierować zarówno `accountId`, jak i `approvalKind` przez te helpery. `accountId` utrzymuje politykę zatwierdzeń dla wielu kont w zakresie właściwego konta bota, a `approvalKind` utrzymuje dostępność zachowania zatwierdzeń wykonania vs zatwierdzeń Pluginu dla kanału bez zakodowanych na stałe gałęzi w rdzeniu.
|
||||
- Rdzeń odpowiada teraz także za powiadomienia o przekierowaniu zatwierdzeń. Pluginy kanałów nie powinny wysyłać własnych wiadomości uzupełniających typu „zatwierdzenie trafiło do DM / innego kanału” z `createChannelNativeApprovalRuntime`; zamiast tego udostępnij dokładny routing pochodzenia + DM zatwierdzającego przez współdzielone helpery możliwości zatwierdzeń i pozwól rdzeniowi agregować rzeczywiste dostarczenia przed opublikowaniem jakiegokolwiek powiadomienia z powrotem do czatu inicjującego.
|
||||
- Zachowuj typ dostarczonego identyfikatora zatwierdzenia end-to-end. Natywni klienci nie powinni zgadywać ani przepisywać routingu zatwierdzeń wykonania vs zatwierdzeń Pluginu na podstawie stanu lokalnego kanału.
|
||||
- Różne rodzaje zatwierdzeń mogą celowo udostępniać różne natywne powierzchnie.
|
||||
Obecne przykłady bundlowane:
|
||||
- Slack zachowuje natywne trasowanie zatwierdzeń dostępne zarówno dla identyfikatorów exec, jak i Plugin.
|
||||
- Matrix zachowuje to samo natywne trasowanie DM/kanału i UX reakcji dla zatwierdzeń exec i Plugin, jednocześnie nadal pozwalając, by uwierzytelnianie różniło się w zależności od typu zatwierdzenia.
|
||||
- `createApproverRestrictedNativeApprovalAdapter` nadal istnieje jako opakowanie zgodnościowe, ale nowy kod powinien preferować konstruktor możliwości i udostępniać `approvalCapability` w Pluginie.
|
||||
- Slack zachowuje dostępność natywnego routingu zatwierdzeń zarówno dla identyfikatorów wykonania, jak i Pluginu.
|
||||
- Matrix zachowuje ten sam natywny routing DM/kanału i UX reakcji dla zatwierdzeń wykonania i Pluginu, jednocześnie nadal pozwalając, aby uwierzytelnianie różniło się w zależności od rodzaju zatwierdzenia.
|
||||
- `createApproverRestrictedNativeApprovalAdapter` nadal istnieje jako opakowanie zgodnościowe, ale nowy kod powinien preferować kreator możliwości i udostępniać `approvalCapability` w Pluginie.
|
||||
|
||||
Dla gorących entrypointów kanału preferuj węższe podścieżki runtime, gdy potrzebujesz tylko jednej części tej rodziny:
|
||||
Dla gorących punktów wejścia kanału preferuj węższe podścieżki środowiska uruchomieniowego, gdy potrzebujesz tylko jednej części tej rodziny:
|
||||
|
||||
- `openclaw/plugin-sdk/approval-auth-runtime`
|
||||
- `openclaw/plugin-sdk/approval-client-runtime`
|
||||
@ -102,81 +100,80 @@ Podobnie preferuj `openclaw/plugin-sdk/setup-runtime`,
|
||||
`openclaw/plugin-sdk/reply-runtime`,
|
||||
`openclaw/plugin-sdk/reply-dispatch-runtime`,
|
||||
`openclaw/plugin-sdk/reply-reference` i
|
||||
`openclaw/plugin-sdk/reply-chunking`, gdy nie potrzebujesz szerszej, zbiorczej
|
||||
powierzchni.
|
||||
`openclaw/plugin-sdk/reply-chunking`, gdy nie potrzebujesz szerszej powierzchni parasolowej.
|
||||
|
||||
Konkretnie dla konfiguracji:
|
||||
|
||||
- `openclaw/plugin-sdk/setup-runtime` obejmuje bezpieczne dla runtime helpery konfiguracji:
|
||||
adaptery patchowania konfiguracji bezpieczne importowo (`createPatchedAccountSetupAdapter`,
|
||||
- `openclaw/plugin-sdk/setup-runtime` obejmuje bezpieczne dla środowiska uruchomieniowego helpery konfiguracji:
|
||||
bezpieczne importowo adaptery łatania konfiguracji (`createPatchedAccountSetupAdapter`,
|
||||
`createEnvPatchedAccountSetupAdapter`,
|
||||
`createSetupInputPresenceValidator`), wyjście notatek wyszukiwania,
|
||||
`promptResolvedAllowFrom`, `splitSetupEntries` i delegowane
|
||||
konstruktory proxy konfiguracji
|
||||
- `openclaw/plugin-sdk/setup-adapter-runtime` to wąska powierzchnia adaptera świadoma env
|
||||
dla `createEnvPatchedAccountSetupAdapter`
|
||||
- `openclaw/plugin-sdk/channel-setup` obejmuje konstruktory konfiguracji opcjonalnej instalacji
|
||||
oraz kilka prymitywów bezpiecznych dla konfiguracji:
|
||||
`promptResolvedAllowFrom`, `splitSetupEntries` oraz delegowane
|
||||
kreatory proxy konfiguracji
|
||||
- `openclaw/plugin-sdk/setup-adapter-runtime` to wąska powierzchnia adaptera
|
||||
świadoma środowiska dla `createEnvPatchedAccountSetupAdapter`
|
||||
- `openclaw/plugin-sdk/channel-setup` obejmuje kreatory konfiguracji
|
||||
opcjonalnej instalacji oraz kilka bezpiecznych dla konfiguracji prymitywów:
|
||||
`createOptionalChannelSetupSurface`, `createOptionalChannelSetupAdapter`,
|
||||
|
||||
Jeśli Twój kanał obsługuje konfigurację lub uwierzytelnianie sterowane przez env i ogólne przepływy uruchamiania/konfiguracji powinny znać te nazwy env jeszcze przed załadowaniem runtime, zadeklaruj je w manifeście Pluginu za pomocą `channelEnvVars`. Zachowaj `envVars` runtime kanału lub lokalne stałe tylko dla kopii przeznaczonej dla operatora.
|
||||
Jeśli Twój kanał obsługuje konfigurację lub uwierzytelnianie sterowane zmiennymi środowiskowymi i ogólne przepływy uruchamiania/konfiguracji powinny znać te nazwy zmiennych środowiskowych przed załadowaniem środowiska uruchomieniowego, zadeklaruj je w manifeście Pluginu za pomocą `channelEnvVars`. Zachowaj środowiskouruchomieniowe `envVars` kanału lub lokalne stałe tylko dla kopii przeznaczonej dla operatora.
|
||||
`createOptionalChannelSetupWizard`, `DEFAULT_ACCOUNT_ID`,
|
||||
`createTopLevelChannelDmPolicy`, `setSetupChannelEnabled` i
|
||||
`splitSetupEntries`
|
||||
|
||||
- używaj szerszej powierzchni `openclaw/plugin-sdk/setup` tylko wtedy, gdy potrzebujesz również
|
||||
cięższych współdzielonych helperów konfiguracji/ustawień, takich jak
|
||||
- używaj szerszej powierzchni `openclaw/plugin-sdk/setup` tylko wtedy, gdy potrzebujesz także
|
||||
cięższych współdzielonych helperów konfiguracji, takich jak
|
||||
`moveSingleAccountChannelSectionToDefaultAccount(...)`
|
||||
|
||||
Jeśli Twój kanał chce jedynie komunikować na powierzchniach konfiguracji „najpierw zainstaluj ten Plugin”, preferuj `createOptionalChannelSetupSurface(...)`. Wygenerowany adapter/kreator domyślnie odmawia zapisu konfiguracji i finalizacji, a także ponownie wykorzystuje ten sam komunikat wymagający instalacji w walidacji, finalizacji i treści z linkiem do dokumentacji.
|
||||
Jeśli Twój kanał chce jedynie reklamować „najpierw zainstaluj ten Plugin” na powierzchniach konfiguracji, preferuj `createOptionalChannelSetupSurface(...)`. Wygenerowany adapter/kreator domyślnie blokuje zapisy konfiguracji i finalizację, a także ponownie wykorzystuje ten sam komunikat o wymaganej instalacji w walidacji, finalizacji i kopii linku do dokumentacji.
|
||||
|
||||
Dla innych gorących ścieżek kanału preferuj wąskie helpery zamiast szerszych starszych powierzchni:
|
||||
|
||||
- `openclaw/plugin-sdk/account-core`,
|
||||
`openclaw/plugin-sdk/account-id`,
|
||||
`openclaw/plugin-sdk/account-resolution` i
|
||||
`openclaw/plugin-sdk/account-helpers` dla konfiguracji wielu kont i
|
||||
zapasowego przejścia do konta domyślnego
|
||||
`openclaw/plugin-sdk/account-helpers` do konfiguracji wielu kont i
|
||||
rezerwowego konta domyślnego
|
||||
- `openclaw/plugin-sdk/inbound-envelope` i
|
||||
`openclaw/plugin-sdk/inbound-reply-dispatch` dla tras/kopert przychodzących oraz
|
||||
połączenia zapisywania i dyspozycji
|
||||
- `openclaw/plugin-sdk/messaging-targets` dla parsowania/dopasowywania celów
|
||||
`openclaw/plugin-sdk/inbound-reply-dispatch` do routingu/koperty wejściowej oraz
|
||||
okablowania rejestracji i dyspozycji
|
||||
- `openclaw/plugin-sdk/messaging-targets` do parsowania/dopasowywania celów
|
||||
- `openclaw/plugin-sdk/outbound-media` i
|
||||
`openclaw/plugin-sdk/outbound-runtime` dla ładowania multimediów oraz delegatów
|
||||
tożsamości/wysyłki ruchu wychodzącego
|
||||
- `openclaw/plugin-sdk/thread-bindings-runtime` dla cyklu życia powiązań wątków
|
||||
`openclaw/plugin-sdk/outbound-runtime` do ładowania multimediów oraz delegatów
|
||||
tożsamości/wysyłania ruchu wychodzącego
|
||||
- `openclaw/plugin-sdk/thread-bindings-runtime` do cyklu życia powiązań wątków
|
||||
i rejestracji adapterów
|
||||
- `openclaw/plugin-sdk/agent-media-payload` tylko wtedy, gdy nadal wymagany jest
|
||||
starszy układ pól payloadu agenta/multimediów
|
||||
- `openclaw/plugin-sdk/telegram-command-config` dla normalizacji niestandardowych poleceń Telegram,
|
||||
walidacji duplikatów/konfliktów oraz kontraktu konfiguracji poleceń
|
||||
stabilnego względem mechanizmu zapasowego
|
||||
- `openclaw/plugin-sdk/agent-media-payload` tylko wtedy, gdy nadal wymagany
|
||||
jest starszy układ pól ładunku agenta/multimediów
|
||||
- `openclaw/plugin-sdk/telegram-command-config` do normalizacji niestandardowych poleceń Telegram, walidacji duplikatów/konfliktów i umowy konfiguracji poleceń stabilnej wobec mechanizmu rezerwowego
|
||||
|
||||
Kanały tylko z uwierzytelnianiem zwykle mogą zakończyć na ścieżce domyślnej: rdzeń obsługuje zatwierdzenia, a Plugin jedynie udostępnia możliwości ruchu wychodzącego/uwierzytelniania. Kanały natywnych zatwierdzeń, takie jak Matrix, Slack, Telegram i niestandardowe transporty czatu, powinny używać współdzielonych helperów natywnych zamiast implementować własny cykl życia zatwierdzeń.
|
||||
Kanały tylko z uwierzytelnianiem zwykle mogą zakończyć na ścieżce domyślnej: rdzeń obsługuje zatwierdzenia, a Plugin jedynie udostępnia możliwości outbound/auth. Kanały natywnych zatwierdzeń, takie jak Matrix, Slack, Telegram i niestandardowe transporty czatu, powinny używać współdzielonych helperów natywnych zamiast implementować własny cykl życia zatwierdzeń.
|
||||
|
||||
## Zasady wzmianek przychodzących
|
||||
## Polityka wzmianek przychodzących
|
||||
|
||||
Obsługę wzmianek przychodzących utrzymuj podzieloną na dwie warstwy:
|
||||
Obsługę przychodzących wzmianek utrzymuj rozdzieloną na dwie warstwy:
|
||||
|
||||
- gromadzenie danych należące do Pluginu
|
||||
- współdzielone ocenianie zasad
|
||||
- współdzielona ocena polityki
|
||||
|
||||
Dla warstwy współdzielonej użyj `openclaw/plugin-sdk/channel-inbound`.
|
||||
Do decyzji dotyczących polityki wzmianek używaj `openclaw/plugin-sdk/channel-mention-gating`.
|
||||
Z `openclaw/plugin-sdk/channel-inbound` korzystaj tylko wtedy, gdy potrzebujesz
|
||||
szerszego zbioru helperów dla ruchu przychodzącego.
|
||||
|
||||
Dobrze pasuje do logiki lokalnej dla Pluginu:
|
||||
Dobrze pasuje do lokalnej logiki Pluginu:
|
||||
|
||||
- wykrywanie odpowiedzi do bota
|
||||
- wykrywanie cytatu bota
|
||||
- sprawdzanie udziału w wątku
|
||||
- wykluczenia wiadomości usługowych/systemowych
|
||||
- sprawdzanie udziału we wątku
|
||||
- wykluczanie wiadomości serwisowych/systemowych
|
||||
- natywne dla platformy cache potrzebne do potwierdzenia udziału bota
|
||||
|
||||
Dobrze pasuje do współdzielonego helpera:
|
||||
|
||||
- `requireMention`
|
||||
- jawny wynik wzmianki
|
||||
- lista dozwolonych niejawnych wzmianek
|
||||
- obejście poleceń
|
||||
- lista dozwolonych domyślnych wzmianek
|
||||
- obejście dla poleceń
|
||||
- ostateczna decyzja o pominięciu
|
||||
|
||||
Preferowany przepływ:
|
||||
@ -223,7 +220,7 @@ if (decision.shouldSkip) return;
|
||||
```
|
||||
|
||||
`api.runtime.channel.mentions` udostępnia te same współdzielone helpery wzmianek dla
|
||||
bundlowanych Pluginów kanałów, które już zależą od wstrzykiwania runtime:
|
||||
bundlowanych Pluginów kanałów, które już zależą od wstrzykiwania środowiska uruchomieniowego:
|
||||
|
||||
- `buildMentionRegexes`
|
||||
- `matchesMentionPatterns`
|
||||
@ -231,18 +228,23 @@ bundlowanych Pluginów kanałów, które już zależą od wstrzykiwania runtime:
|
||||
- `implicitMentionKindWhen`
|
||||
- `resolveInboundMentionDecision`
|
||||
|
||||
Jeśli potrzebujesz tylko `implicitMentionKindWhen` i
|
||||
`resolveInboundMentionDecision`, importuj z
|
||||
`openclaw/plugin-sdk/channel-mention-gating`, aby uniknąć ładowania niepowiązanych
|
||||
helperów środowiska uruchomieniowego dla ruchu przychodzącego.
|
||||
|
||||
Starsze helpery `resolveMentionGating*` pozostają w
|
||||
`openclaw/plugin-sdk/channel-inbound` jedynie jako eksporty zgodnościowe. Nowy kod
|
||||
`openclaw/plugin-sdk/channel-inbound` wyłącznie jako eksporty zgodnościowe. Nowy kod
|
||||
powinien używać `resolveInboundMentionDecision({ facts, policy })`.
|
||||
|
||||
## Przewodnik
|
||||
## Przewodnik krok po kroku
|
||||
|
||||
<Steps>
|
||||
<a id="step-1-package-and-manifest"></a>
|
||||
<Step title="Pakiet i manifest">
|
||||
Utwórz standardowe pliki Pluginu. Pole `channel` w `package.json` to
|
||||
właśnie to, co sprawia, że jest to Plugin kanału. Pełną powierzchnię metadanych pakietu
|
||||
znajdziesz w [Konfiguracja Pluginu i Config](/pl/plugins/sdk-setup#openclaw-channel):
|
||||
Utwórz standardowe pliki Pluginu. Pole `channel` w `package.json`
|
||||
sprawia, że jest to Plugin kanału. Pełny opis powierzchni metadanych pakietu
|
||||
znajdziesz w [Konfiguracja i setup Pluginu](/pl/plugins/sdk-setup#openclaw-channel):
|
||||
|
||||
<CodeGroup>
|
||||
```json package.json
|
||||
@ -256,7 +258,7 @@ powinien używać `resolveInboundMentionDecision({ facts, policy })`.
|
||||
"channel": {
|
||||
"id": "acme-chat",
|
||||
"label": "Acme Chat",
|
||||
"blurb": "Połącz OpenClaw z Acme Chat."
|
||||
"blurb": "Connect OpenClaw to Acme Chat."
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -268,7 +270,7 @@ powinien używać `resolveInboundMentionDecision({ facts, policy })`.
|
||||
"kind": "channel",
|
||||
"channels": ["acme-chat"],
|
||||
"name": "Acme Chat",
|
||||
"description": "Plugin kanału Acme Chat",
|
||||
"description": "Acme Chat channel plugin",
|
||||
"configSchema": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
@ -293,7 +295,7 @@ powinien używać `resolveInboundMentionDecision({ facts, policy })`.
|
||||
|
||||
<Step title="Zbuduj obiekt Pluginu kanału">
|
||||
Interfejs `ChannelPlugin` ma wiele opcjonalnych powierzchni adapterów. Zacznij od
|
||||
minimum — `id` i `setup` — i dodawaj adaptery w razie potrzeby.
|
||||
minimum — `id` i `setup` — i dodawaj adaptery w miarę potrzeb.
|
||||
|
||||
Utwórz `src/channel.ts`:
|
||||
|
||||
@ -303,7 +305,7 @@ powinien używać `resolveInboundMentionDecision({ facts, policy })`.
|
||||
createChannelPluginBase,
|
||||
} from "openclaw/plugin-sdk/channel-core";
|
||||
import type { OpenClawConfig } from "openclaw/plugin-sdk/channel-core";
|
||||
import { acmeChatApi } from "./client.js"; // klient API Twojej platformy
|
||||
import { acmeChatApi } from "./client.js"; // your platform API client
|
||||
|
||||
type ResolvedAccount = {
|
||||
accountId: string | null;
|
||||
@ -344,7 +346,7 @@ powinien używać `resolveInboundMentionDecision({ facts, policy })`.
|
||||
},
|
||||
}),
|
||||
|
||||
// Bezpieczeństwo DM: kto może wysyłać wiadomości do bota
|
||||
// DM security: who can message the bot
|
||||
security: {
|
||||
dm: {
|
||||
channelKey: "acme-chat",
|
||||
@ -354,21 +356,21 @@ powinien używać `resolveInboundMentionDecision({ facts, policy })`.
|
||||
},
|
||||
},
|
||||
|
||||
// Parowanie: przepływ zatwierdzania dla nowych kontaktów DM
|
||||
// Pairing: approval flow for new DM contacts
|
||||
pairing: {
|
||||
text: {
|
||||
idLabel: "Nazwa użytkownika Acme Chat",
|
||||
message: "Wyślij ten kod, aby zweryfikować swoją tożsamość:",
|
||||
idLabel: "Acme Chat username",
|
||||
message: "Send this code to verify your identity:",
|
||||
notify: async ({ target, code }) => {
|
||||
await acmeChatApi.sendDm(target, `Pairing code: ${code}`);
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
// Wątkowanie: sposób dostarczania odpowiedzi
|
||||
// Threading: how replies are delivered
|
||||
threading: { topLevelReplyToMode: "reply" },
|
||||
|
||||
// Ruch wychodzący: wysyłanie wiadomości na platformę
|
||||
// Outbound: send messages to the platform
|
||||
outbound: {
|
||||
attachedResults: {
|
||||
sendText: async (params) => {
|
||||
@ -389,17 +391,17 @@ powinien używać `resolveInboundMentionDecision({ facts, policy })`.
|
||||
```
|
||||
|
||||
<Accordion title="Co robi za Ciebie createChatChannelPlugin">
|
||||
Zamiast ręcznie implementować niskopoziomowe interfejsy adapterów,
|
||||
przekazujesz deklaratywne opcje, a konstruktor składa je razem:
|
||||
Zamiast ręcznie implementować niskopoziomowe interfejsy adapterów, przekazujesz
|
||||
deklaratywne opcje, a kreator składa je razem:
|
||||
|
||||
| Opcja | Co podłącza |
|
||||
| --- | --- |
|
||||
| `security.dm` | Resolver bezpieczeństwa DM o zakresie z pól config |
|
||||
| `pairing.text` | Przepływ parowania DM oparty na tekście z wymianą kodu |
|
||||
| `threading` | Resolver trybu odpowiedzi (stały, o zakresie konta lub niestandardowy) |
|
||||
| `outbound.attachedResults` | Funkcje wysyłania, które zwracają metadane wyniku (identyfikatory wiadomości) |
|
||||
| `security.dm` | Ograniczony zakresem resolver zabezpieczeń DM na podstawie pól konfiguracji |
|
||||
| `pairing.text` | Tekstowy przepływ parowania DM z wymianą kodu |
|
||||
| `threading` | Resolver trybu odpowiedzi (stały, ograniczony do konta lub niestandardowy) |
|
||||
| `outbound.attachedResults` | Funkcje wysyłania zwracające metadane wyniku (identyfikatory wiadomości) |
|
||||
|
||||
Możesz też przekazać surowe obiekty adapterów zamiast deklaratywnych opcji,
|
||||
Możesz też przekazać surowe obiekty adapterów zamiast opcji deklaratywnych,
|
||||
jeśli potrzebujesz pełnej kontroli.
|
||||
</Accordion>
|
||||
|
||||
@ -415,20 +417,20 @@ powinien używać `resolveInboundMentionDecision({ facts, policy })`.
|
||||
export default defineChannelPluginEntry({
|
||||
id: "acme-chat",
|
||||
name: "Acme Chat",
|
||||
description: "Plugin kanału Acme Chat",
|
||||
description: "Acme Chat channel plugin",
|
||||
plugin: acmeChatPlugin,
|
||||
registerCliMetadata(api) {
|
||||
api.registerCli(
|
||||
({ program }) => {
|
||||
program
|
||||
.command("acme-chat")
|
||||
.description("Zarządzanie Acme Chat");
|
||||
.description("Acme Chat management");
|
||||
},
|
||||
{
|
||||
descriptors: [
|
||||
{
|
||||
name: "acme-chat",
|
||||
description: "Zarządzanie Acme Chat",
|
||||
description: "Acme Chat management",
|
||||
hasSubcommands: false,
|
||||
},
|
||||
],
|
||||
@ -441,21 +443,21 @@ powinien używać `resolveInboundMentionDecision({ facts, policy })`.
|
||||
});
|
||||
```
|
||||
|
||||
Umieść deskryptory CLI należące do kanału w `registerCliMetadata(...)`, aby OpenClaw
|
||||
mógł pokazywać je w głównej pomocy bez aktywowania pełnego runtime kanału,
|
||||
podczas gdy zwykłe pełne ładowania nadal pobiorą te same deskryptory do rzeczywistej
|
||||
rejestracji poleceń. `registerFull(...)` zachowaj dla pracy wyłącznie w runtime.
|
||||
Umieszczaj deskryptory CLI należące do kanału w `registerCliMetadata(...)`, aby OpenClaw
|
||||
mógł wyświetlać je w głównej pomocy bez aktywowania pełnego środowiska uruchomieniowego kanału,
|
||||
podczas gdy zwykłe pełne ładowania nadal przechwytują te same deskryptory do rzeczywistej rejestracji poleceń.
|
||||
Zachowaj `registerFull(...)` dla pracy wyłącznie środowiska uruchomieniowego.
|
||||
Jeśli `registerFull(...)` rejestruje metody RPC Gateway, użyj
|
||||
prefiksu specyficznego dla Pluginu. Przestrzenie nazw administracyjnych rdzenia (`config.*`,
|
||||
prefiksu specyficznego dla Pluginu. Przestrzenie nazw administratora rdzenia (`config.*`,
|
||||
`exec.approvals.*`, `wizard.*`, `update.*`) pozostają zarezerwowane i zawsze
|
||||
są rozwiązywane do `operator.admin`.
|
||||
`defineChannelPluginEntry` automatycznie obsługuje podział trybów rejestracji. Zobacz
|
||||
`defineChannelPluginEntry` automatycznie obsługuje ten podział trybu rejestracji. Zobacz
|
||||
[Punkty wejścia](/pl/plugins/sdk-entrypoints#definechannelpluginentry), aby poznać wszystkie
|
||||
opcje.
|
||||
|
||||
</Step>
|
||||
|
||||
<Step title="Dodaj wpis konfiguracji">
|
||||
<Step title="Dodaj punkt wejścia konfiguracji">
|
||||
Utwórz `setup-entry.ts` do lekkiego ładowania podczas onboardingu:
|
||||
|
||||
```typescript setup-entry.ts
|
||||
@ -466,32 +468,32 @@ powinien używać `resolveInboundMentionDecision({ facts, policy })`.
|
||||
```
|
||||
|
||||
OpenClaw ładuje to zamiast pełnego punktu wejścia, gdy kanał jest wyłączony
|
||||
lub nieskonfigurowany. Pozwala to uniknąć wciągania ciężkiego kodu runtime podczas przepływów konfiguracji.
|
||||
Szczegóły znajdziesz w [Konfiguracja i Config](/pl/plugins/sdk-setup#setup-entry).
|
||||
lub nieskonfigurowany. Pozwala to uniknąć wciągania ciężkiego kodu środowiska uruchomieniowego podczas przepływów konfiguracji.
|
||||
Szczegóły znajdziesz w [Konfiguracja i setup](/pl/plugins/sdk-setup#setup-entry).
|
||||
|
||||
Bundlowane kanały workspace, które rozdzielają eksporty bezpieczne dla konfiguracji do modułów
|
||||
pomocniczych, mogą używać `defineBundledChannelSetupEntry(...)` z
|
||||
`openclaw/plugin-sdk/channel-entry-contract`, gdy potrzebują także
|
||||
jawnego settera runtime dla czasu konfiguracji.
|
||||
jawnego settera środowiska uruchomieniowego na czas konfiguracji.
|
||||
|
||||
</Step>
|
||||
|
||||
<Step title="Obsłuż wiadomości przychodzące">
|
||||
Twój Plugin musi odbierać wiadomości z platformy i przekazywać je do
|
||||
OpenClaw. Typowy wzorzec to Webhook, który weryfikuje żądanie i
|
||||
przekazuje je przez handler przychodzący Twojego kanału:
|
||||
przekazuje je przez handler ruchu przychodzącego Twojego kanału:
|
||||
|
||||
```typescript
|
||||
registerFull(api) {
|
||||
api.registerHttpRoute({
|
||||
path: "/acme-chat/webhook",
|
||||
auth: "plugin", // uwierzytelnianie zarządzane przez Plugin (samodzielnie zweryfikuj podpisy)
|
||||
auth: "plugin", // plugin-managed auth (verify signatures yourself)
|
||||
handler: async (req, res) => {
|
||||
const event = parseWebhookPayload(req);
|
||||
|
||||
// Twój handler przychodzący przekazuje wiadomość do OpenClaw.
|
||||
// Dokładne podłączenie zależy od SDK Twojej platformy —
|
||||
// zobacz rzeczywisty przykład w bundlowanym pakiecie Pluginu Microsoft Teams lub Google Chat.
|
||||
// Your inbound handler dispatches the message to OpenClaw.
|
||||
// The exact wiring depends on your platform SDK —
|
||||
// see a real example in the bundled Microsoft Teams or Google Chat plugin package.
|
||||
await handleAcmeChatInbound(api, event);
|
||||
|
||||
res.statusCode = 200;
|
||||
@ -504,22 +506,22 @@ powinien używać `resolveInboundMentionDecision({ facts, policy })`.
|
||||
|
||||
<Note>
|
||||
Obsługa wiadomości przychodzących jest specyficzna dla kanału. Każdy Plugin kanału
|
||||
posiada własny potok przychodzący. Zobacz bundlowane Pluginy kanałów
|
||||
ma własny potok ruchu przychodzącego. Zobacz bundlowane Pluginy kanałów
|
||||
(na przykład pakiet Pluginu Microsoft Teams lub Google Chat), aby poznać rzeczywiste wzorce.
|
||||
</Note>
|
||||
|
||||
</Step>
|
||||
|
||||
<a id="step-6-test"></a>
|
||||
<Step title="Test">
|
||||
Pisz testy współlokowane w `src/channel.test.ts`:
|
||||
<Step title="Testy">
|
||||
Pisz współlokowane testy w `src/channel.test.ts`:
|
||||
|
||||
```typescript src/channel.test.ts
|
||||
import { describe, it, expect } from "vitest";
|
||||
import { acmeChatPlugin } from "./channel.js";
|
||||
|
||||
describe("plugin acme-chat", () => {
|
||||
it("rozpoznaje konto na podstawie config", () => {
|
||||
describe("acme-chat plugin", () => {
|
||||
it("resolves account from config", () => {
|
||||
const cfg = {
|
||||
channels: {
|
||||
"acme-chat": { token: "test-token", allowFrom: ["user1"] },
|
||||
@ -529,7 +531,7 @@ Pisz testy współlokowane w `src/channel.test.ts`:
|
||||
expect(account.token).toBe("test-token");
|
||||
});
|
||||
|
||||
it("sprawdza konto bez materializowania sekretów", () => {
|
||||
it("inspects account without materializing secrets", () => {
|
||||
const cfg = {
|
||||
channels: { "acme-chat": { token: "test-token" } },
|
||||
} as any;
|
||||
@ -538,7 +540,7 @@ Pisz testy współlokowane w `src/channel.test.ts`:
|
||||
expect(result.tokenStatus).toBe("available");
|
||||
});
|
||||
|
||||
it("zgłasza brakujący config", () => {
|
||||
it("reports missing config", () => {
|
||||
const cfg = { channels: {} } as any;
|
||||
const result = acmeChatPlugin.setup!.inspectAccount!(cfg, undefined);
|
||||
expect(result.configured).toBe(false);
|
||||
@ -550,7 +552,7 @@ Pisz testy współlokowane w `src/channel.test.ts`:
|
||||
pnpm test -- <bundled-plugin-root>/acme-chat/
|
||||
```
|
||||
|
||||
Informacje o współdzielonych helperach testowych znajdziesz w sekcji [Testowanie](/pl/plugins/sdk-testing).
|
||||
W przypadku współdzielonych helperów testowych zobacz [Testowanie](/pl/plugins/sdk-testing).
|
||||
|
||||
</Step>
|
||||
</Steps>
|
||||
@ -560,31 +562,31 @@ Pisz testy współlokowane w `src/channel.test.ts`:
|
||||
```
|
||||
<bundled-plugin-root>/acme-chat/
|
||||
├── package.json # metadane openclaw.channel
|
||||
├── openclaw.plugin.json # Manifest z schematem config
|
||||
├── openclaw.plugin.json # Manifest ze schematem konfiguracji
|
||||
├── index.ts # defineChannelPluginEntry
|
||||
├── setup-entry.ts # defineSetupPluginEntry
|
||||
├── api.ts # Eksporty publiczne (opcjonalnie)
|
||||
├── runtime-api.ts # Eksporty wewnętrznego runtime (opcjonalnie)
|
||||
├── runtime-api.ts # Wewnętrzne eksporty środowiska uruchomieniowego (opcjonalnie)
|
||||
└── src/
|
||||
├── channel.ts # ChannelPlugin przez createChatChannelPlugin
|
||||
├── channel.test.ts # Testy
|
||||
├── client.ts # Klient API platformy
|
||||
└── runtime.ts # Magazyn runtime (jeśli potrzebny)
|
||||
└── runtime.ts # Magazyn środowiska uruchomieniowego (jeśli potrzebny)
|
||||
```
|
||||
|
||||
## Tematy zaawansowane
|
||||
|
||||
<CardGroup cols={2}>
|
||||
<Card title="Opcje wątkowania" icon="git-branch" href="/pl/plugins/sdk-entrypoints#registration-mode">
|
||||
Stałe, o zakresie konta lub niestandardowe tryby odpowiedzi
|
||||
Stałe, ograniczone do konta lub niestandardowe tryby odpowiedzi
|
||||
</Card>
|
||||
<Card title="Integracja z narzędziem wiadomości" icon="puzzle" href="/pl/plugins/architecture#channel-plugins-and-the-shared-message-tool">
|
||||
<Card title="Integracja narzędzia wiadomości" icon="puzzle" href="/pl/plugins/architecture#channel-plugins-and-the-shared-message-tool">
|
||||
describeMessageTool i wykrywanie akcji
|
||||
</Card>
|
||||
<Card title="Rozpoznawanie celu" icon="crosshair" href="/pl/plugins/architecture#channel-target-resolution">
|
||||
inferTargetChatType, looksLikeId, resolveTarget
|
||||
</Card>
|
||||
<Card title="Helpery runtime" icon="settings" href="/pl/plugins/sdk-runtime">
|
||||
<Card title="Helpery środowiska uruchomieniowego" icon="settings" href="/pl/plugins/sdk-runtime">
|
||||
TTS, STT, multimedia, subagent przez api.runtime
|
||||
</Card>
|
||||
</CardGroup>
|
||||
|
||||
@ -1,27 +1,27 @@
|
||||
---
|
||||
read_when:
|
||||
- Musisz wiedzieć, z której podścieżki SDK importować.
|
||||
- Potrzebujesz dokumentacji wszystkich metod rejestracji w `OpenClawPluginApi`.
|
||||
- Szukasz konkretnego eksportu SDK.
|
||||
- Musisz wiedzieć, z którego podścieżki SDK importować
|
||||
- Potrzebujesz opisu wszystkich metod rejestracji w `OpenClawPluginApi`
|
||||
- Szukasz konkretnego eksportu SDK
|
||||
sidebarTitle: SDK Overview
|
||||
summary: Mapa importów, dokumentacja API rejestracji i architektura SDK
|
||||
summary: Mapa importów, opis interfejsu API rejestracji i architektura SDK
|
||||
title: Przegląd Plugin SDK
|
||||
x-i18n:
|
||||
generated_at: "2026-04-17T09:49:37Z"
|
||||
generated_at: "2026-04-18T09:34:53Z"
|
||||
model: gpt-5.4
|
||||
provider: openai
|
||||
source_hash: b177fdb6830f415d998a24812bc2c7db8124d3ba77b0174c9a67ac7d747f7e5a
|
||||
source_hash: 05d3d0022cca32d29c76f6cea01cdf4f88ac69ef0ef3d7fb8a60fbf9a6b9b331
|
||||
source_path: plugins/sdk-overview.md
|
||||
workflow: 15
|
||||
---
|
||||
|
||||
# Przegląd Plugin SDK
|
||||
|
||||
Plugin SDK to typowany kontrakt między pluginami a częścią core. Ta strona jest
|
||||
dokumentacją tego, **co importować** i **co można rejestrować**.
|
||||
Plugin SDK to typowany kontrakt między pluginami a rdzeniem. Ta strona jest
|
||||
punktem odniesienia dla **czego importować** i **co można rejestrować**.
|
||||
|
||||
<Tip>
|
||||
**Szukasz poradnika?**
|
||||
**Szukasz przewodnika krok po kroku?**
|
||||
- Pierwszy plugin? Zacznij od [Pierwsze kroki](/pl/plugins/building-plugins)
|
||||
- Plugin kanału? Zobacz [Pluginy kanałów](/pl/plugins/sdk-channel-plugins)
|
||||
- Plugin dostawcy? Zobacz [Pluginy dostawców](/pl/plugins/sdk-provider-plugins)
|
||||
@ -36,270 +36,284 @@ import { definePluginEntry } from "openclaw/plugin-sdk/plugin-entry";
|
||||
import { defineChannelPluginEntry } from "openclaw/plugin-sdk/channel-core";
|
||||
```
|
||||
|
||||
Każda podścieżka jest małym, samowystarczalnym modułem. Dzięki temu uruchamianie
|
||||
pozostaje szybkie i pozwala uniknąć problemów z zależnościami cyklicznymi. W przypadku pomocników wejścia/budowy specyficznych dla kanałów,
|
||||
preferuj `openclaw/plugin-sdk/channel-core`; `openclaw/plugin-sdk/core` zachowaj dla
|
||||
szerszej powierzchni zbiorczej i współdzielonych pomocników, takich jak
|
||||
Każda podścieżka jest małym, samodzielnym modułem. Dzięki temu uruchamianie jest
|
||||
szybkie i pozwala uniknąć problemów z zależnościami cyklicznymi. Dla
|
||||
specyficznych dla kanałów helperów entry/build preferuj `openclaw/plugin-sdk/channel-core`; `openclaw/plugin-sdk/core` zachowaj
|
||||
dla szerszej powierzchni zbiorczej i współdzielonych helperów, takich jak
|
||||
`buildChannelConfigSchema`.
|
||||
|
||||
Nie dodawaj ani nie opieraj się na wygodnych warstwach nazwanych od dostawców, takich jak
|
||||
Nie dodawaj ani nie polegaj na wygodnych ścieżkach nazwanych od dostawców, takich jak
|
||||
`openclaw/plugin-sdk/slack`, `openclaw/plugin-sdk/discord`,
|
||||
`openclaw/plugin-sdk/signal`, `openclaw/plugin-sdk/whatsapp` ani
|
||||
warstwach pomocniczych oznaczonych marką kanału. Pluginy dostarczane w pakiecie powinny składać generyczne
|
||||
podścieżki SDK we własnych barrelach `api.ts` lub `runtime-api.ts`, a core
|
||||
powinien albo używać tych lokalnych barrelli pluginu, albo dodać wąski generyczny
|
||||
kontrakt SDK, gdy potrzeba rzeczywiście dotyczy wielu kanałów.
|
||||
`openclaw/plugin-sdk/signal`, `openclaw/plugin-sdk/whatsapp`, ani
|
||||
helperowych ścieżkach markowanych kanałami. Bundled pluginy powinny składać ogólne
|
||||
podścieżki SDK we własnych barrelach `api.ts` lub `runtime-api.ts`, a rdzeń
|
||||
powinien albo używać tych lokalnych barreli pluginu, albo dodać wąski ogólny kontrakt SDK,
|
||||
gdy potrzeba jest rzeczywiście międzykanałowa.
|
||||
|
||||
Wygenerowana mapa eksportów nadal zawiera niewielki zestaw warstw pomocniczych dla pluginów dostarczanych w pakiecie,
|
||||
takich jak `plugin-sdk/feishu`, `plugin-sdk/feishu-setup`,
|
||||
Wygenerowana mapa eksportów nadal zawiera niewielki zestaw helperowych
|
||||
ścieżek dla bundled pluginów, takich jak `plugin-sdk/feishu`, `plugin-sdk/feishu-setup`,
|
||||
`plugin-sdk/zalo`, `plugin-sdk/zalo-setup` i `plugin-sdk/matrix*`. Te
|
||||
podścieżki istnieją wyłącznie na potrzeby utrzymania zgodności i konserwacji pluginów dostarczanych w pakiecie; są
|
||||
celowo pominięte w poniższej wspólnej tabeli i nie są zalecaną
|
||||
podścieżki istnieją wyłącznie na potrzeby utrzymania bundled pluginów i zgodności;
|
||||
są celowo pominięte w poniższej wspólnej tabeli i nie są zalecaną
|
||||
ścieżką importu dla nowych pluginów zewnętrznych.
|
||||
|
||||
## Dokumentacja podścieżek
|
||||
## Opis podścieżek
|
||||
|
||||
Najczęściej używane podścieżki, pogrupowane według przeznaczenia. Wygenerowana pełna lista
|
||||
ponad 200 podścieżek znajduje się w `scripts/lib/plugin-sdk-entrypoints.json`.
|
||||
|
||||
Zastrzeżone podścieżki pomocnicze dla pluginów dostarczanych w pakiecie nadal pojawiają się na tej wygenerowanej liście.
|
||||
Traktuj je jako powierzchnie implementacyjne/zgodnościowe, chyba że strona dokumentacji
|
||||
Zastrzeżone helperowe podścieżki bundled pluginów nadal pojawiają się w tej wygenerowanej liście.
|
||||
Traktuj je jako szczegół implementacyjny lub powierzchnie zgodności, chyba że strona dokumentacji
|
||||
wyraźnie promuje którąś z nich jako publiczną.
|
||||
|
||||
### Wejście pluginu
|
||||
### Entry pluginu
|
||||
|
||||
| Podścieżka | Kluczowe eksporty |
|
||||
| -------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `plugin-sdk/plugin-entry` | `definePluginEntry` |
|
||||
| `plugin-sdk/core` | `defineChannelPluginEntry`, `createChatChannelPlugin`, `createChannelPluginBase`, `defineSetupPluginEntry`, `buildChannelConfigSchema` |
|
||||
| `plugin-sdk/config-schema` | `OpenClawSchema` |
|
||||
| `plugin-sdk/provider-entry` | `defineSingleProviderPluginEntry` |
|
||||
| Subpath | Kluczowe eksporty |
|
||||
| --------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `plugin-sdk/plugin-entry` | `definePluginEntry` |
|
||||
| `plugin-sdk/core` | `defineChannelPluginEntry`, `createChatChannelPlugin`, `createChannelPluginBase`, `defineSetupPluginEntry`, `buildChannelConfigSchema` |
|
||||
| `plugin-sdk/config-schema` | `OpenClawSchema` |
|
||||
| `plugin-sdk/provider-entry` | `defineSingleProviderPluginEntry` |
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="Podścieżki kanałów">
|
||||
| Podścieżka | Kluczowe eksporty |
|
||||
| Subpath | Kluczowe eksporty |
|
||||
| --- | --- |
|
||||
| `plugin-sdk/channel-core` | `defineChannelPluginEntry`, `defineSetupPluginEntry`, `createChatChannelPlugin`, `createChannelPluginBase` |
|
||||
| `plugin-sdk/config-schema` | Eksport głównego schematu Zod `openclaw.json` (`OpenClawSchema`) |
|
||||
| `plugin-sdk/config-schema` | Eksport głównego schematu Zod dla `openclaw.json` (`OpenClawSchema`) |
|
||||
| `plugin-sdk/channel-setup` | `createOptionalChannelSetupSurface`, `createOptionalChannelSetupAdapter`, `createOptionalChannelSetupWizard`, a także `DEFAULT_ACCOUNT_ID`, `createTopLevelChannelDmPolicy`, `setSetupChannelEnabled`, `splitSetupEntries` |
|
||||
| `plugin-sdk/setup` | Współdzielone pomocniki kreatora konfiguracji, prompty allowlisty, konstruktory statusu konfiguracji |
|
||||
| `plugin-sdk/setup` | Współdzielone helpery kreatora konfiguracji, prompty allowlist i konstruktory statusu konfiguracji |
|
||||
| `plugin-sdk/setup-runtime` | `createPatchedAccountSetupAdapter`, `createEnvPatchedAccountSetupAdapter`, `createSetupInputPresenceValidator`, `noteChannelLookupFailure`, `noteChannelLookupSummary`, `promptResolvedAllowFrom`, `splitSetupEntries`, `createAllowlistSetupWizardProxy`, `createDelegatedSetupWizardProxy` |
|
||||
| `plugin-sdk/setup-adapter-runtime` | `createEnvPatchedAccountSetupAdapter` |
|
||||
| `plugin-sdk/setup-tools` | `formatCliCommand`, `detectBinary`, `extractArchive`, `resolveBrewExecutable`, `formatDocsLink`, `CONFIG_DIR` |
|
||||
| `plugin-sdk/account-core` | Pomocniki konfiguracji/wrót działań dla wielu kont, pomocniki domyślnego fallbacku konta |
|
||||
| `plugin-sdk/account-id` | `DEFAULT_ACCOUNT_ID`, pomocniki normalizacji identyfikatora konta |
|
||||
| `plugin-sdk/account-resolution` | Wyszukiwanie konta + pomocniki domyślnego fallbacku |
|
||||
| `plugin-sdk/account-helpers` | Wąskie pomocniki listy kont/działań na koncie |
|
||||
| `plugin-sdk/account-core` | Helpery konfiguracji wielu kont / bramek akcji oraz helpery fallbacku konta domyślnego |
|
||||
| `plugin-sdk/account-id` | `DEFAULT_ACCOUNT_ID`, helpery normalizacji identyfikatorów kont |
|
||||
| `plugin-sdk/account-resolution` | Wyszukiwanie kont i helpery fallbacku domyślnego |
|
||||
| `plugin-sdk/account-helpers` | Wąskie helpery list kont i akcji na kontach |
|
||||
| `plugin-sdk/channel-pairing` | `createChannelPairingController` |
|
||||
| `plugin-sdk/channel-reply-pipeline` | `createChannelReplyPipeline` |
|
||||
| `plugin-sdk/channel-config-helpers` | `createHybridChannelConfigAdapter` |
|
||||
| `plugin-sdk/channel-config-schema` | Typy schematu konfiguracji kanału |
|
||||
| `plugin-sdk/telegram-command-config` | Pomocniki normalizacji/walidacji niestandardowych komend Telegram z fallbackiem do kontraktu dostarczanego w pakiecie |
|
||||
| `plugin-sdk/channel-config-schema` | Typy schematów konfiguracji kanałów |
|
||||
| `plugin-sdk/telegram-command-config` | Helpery normalizacji i walidacji niestandardowych komend Telegram z fallbackiem bundled-contract |
|
||||
| `plugin-sdk/command-gating` | Wąskie helpery bramek autoryzacji komend |
|
||||
| `plugin-sdk/channel-policy` | `resolveChannelGroupRequireMention` |
|
||||
| `plugin-sdk/channel-lifecycle` | `createAccountStatusSink` |
|
||||
| `plugin-sdk/inbound-envelope` | Współdzielone pomocniki tras wejściowych + budowania envelope |
|
||||
| `plugin-sdk/inbound-reply-dispatch` | Współdzielone pomocniki zapisu i dyspozycji wejściowej |
|
||||
| `plugin-sdk/messaging-targets` | Pomocniki parsowania/dopasowywania celów |
|
||||
| `plugin-sdk/outbound-media` | Współdzielone pomocniki ładowania mediów wychodzących |
|
||||
| `plugin-sdk/outbound-runtime` | Pomocniki delegatów tożsamości/wysyłki wychodzącej |
|
||||
| `plugin-sdk/thread-bindings-runtime` | Pomocniki cyklu życia i adapterów wiązań wątków |
|
||||
| `plugin-sdk/inbound-envelope` | Współdzielone helpery routingu wejściowego i budowania envelope |
|
||||
| `plugin-sdk/inbound-reply-dispatch` | Współdzielone helpery zapisu rekordów wejściowych i dispatchu |
|
||||
| `plugin-sdk/messaging-targets` | Helpery parsowania i dopasowywania celów |
|
||||
| `plugin-sdk/outbound-media` | Współdzielone helpery ładowania mediów wychodzących |
|
||||
| `plugin-sdk/outbound-runtime` | Helpery tożsamości wychodzącej i delegatów wysyłania |
|
||||
| `plugin-sdk/poll-runtime` | Wąskie helpery normalizacji ankiet |
|
||||
| `plugin-sdk/thread-bindings-runtime` | Helpery cyklu życia powiązań wątków i adapterów |
|
||||
| `plugin-sdk/agent-media-payload` | Starszy konstruktor ładunku mediów agenta |
|
||||
| `plugin-sdk/conversation-runtime` | Pomocniki wiązania konwersacji/wątku, parowania i skonfigurowanych wiązań |
|
||||
| `plugin-sdk/runtime-config-snapshot` | Pomocnik migawki konfiguracji runtime |
|
||||
| `plugin-sdk/runtime-group-policy` | Pomocniki rozstrzygania polityk grupowych w runtime |
|
||||
| `plugin-sdk/channel-status` | Współdzielone pomocniki migawki/podsumowania statusu kanału |
|
||||
| `plugin-sdk/channel-config-primitives` | Wąskie prymitywy schematu konfiguracji kanału |
|
||||
| `plugin-sdk/channel-config-writes` | Pomocniki autoryzacji zapisu konfiguracji kanału |
|
||||
| `plugin-sdk/channel-plugin-common` | Współdzielone eksporty preludium pluginu kanału |
|
||||
| `plugin-sdk/allowlist-config-edit` | Pomocniki odczytu/edycji konfiguracji allowlisty |
|
||||
| `plugin-sdk/group-access` | Współdzielone pomocniki decyzji o dostępie grupowym |
|
||||
| `plugin-sdk/direct-dm` | Współdzielone pomocniki auth/guard dla bezpośrednich wiadomości |
|
||||
| `plugin-sdk/interactive-runtime` | Pomocniki normalizacji/redukcji interaktywnych ładunków odpowiedzi |
|
||||
| `plugin-sdk/channel-inbound` | Pomocniki debounce wejściowego, dopasowania wzmianek, polityki wzmianek oraz envelope |
|
||||
| `plugin-sdk/conversation-runtime` | Helpery konwersacji/powiązań wątków, parowania i skonfigurowanych powiązań |
|
||||
| `plugin-sdk/runtime-config-snapshot` | Helper zrzutu konfiguracji runtime |
|
||||
| `plugin-sdk/runtime-group-policy` | Helpery rozwiązywania zasad grup runtime |
|
||||
| `plugin-sdk/channel-status` | Współdzielone helpery zrzutów i podsumowań statusu kanałów |
|
||||
| `plugin-sdk/channel-config-primitives` | Wąskie prymitywy schematów konfiguracji kanałów |
|
||||
| `plugin-sdk/channel-config-writes` | Helpery autoryzacji zapisu konfiguracji kanałów |
|
||||
| `plugin-sdk/channel-plugin-common` | Współdzielone eksporty prelude dla pluginów kanałów |
|
||||
| `plugin-sdk/allowlist-config-edit` | Helpery edycji i odczytu konfiguracji allowlist |
|
||||
| `plugin-sdk/group-access` | Współdzielone helpery decyzji dostępu grupowego |
|
||||
| `plugin-sdk/direct-dm` | Współdzielone helpery auth/guard dla bezpośrednich DM |
|
||||
| `plugin-sdk/interactive-runtime` | Helpery normalizacji i redukcji interaktywnych ładunków odpowiedzi |
|
||||
| `plugin-sdk/channel-inbound` | Barrel zgodności dla debounce wejścia, dopasowywania mention, helperów zasad mention i helperów envelope |
|
||||
| `plugin-sdk/channel-mention-gating` | Wąskie helpery zasad mention bez szerszej powierzchni runtime dla wejścia |
|
||||
| `plugin-sdk/channel-location` | Helpery kontekstu lokalizacji kanału i formatowania |
|
||||
| `plugin-sdk/channel-logging` | Helpery logowania kanałów dla odrzuceń wejścia oraz błędów typing/ack |
|
||||
| `plugin-sdk/channel-send-result` | Typy wyników odpowiedzi |
|
||||
| `plugin-sdk/channel-actions` | `createMessageToolButtonsSchema`, `createMessageToolCardSchema` |
|
||||
| `plugin-sdk/channel-targets` | Pomocniki parsowania/dopasowywania celów |
|
||||
| `plugin-sdk/channel-contract` | Typy kontraktu kanału |
|
||||
| `plugin-sdk/channel-feedback` | Powiązanie informacji zwrotnej/reakcji |
|
||||
| `plugin-sdk/channel-secret-runtime` | Wąskie pomocniki kontraktu sekretów, takie jak `collectSimpleChannelFieldAssignments`, `getChannelSurface`, `pushAssignment`, oraz typy celu sekretu |
|
||||
| `plugin-sdk/channel-targets` | Helpery parsowania i dopasowywania celów |
|
||||
| `plugin-sdk/channel-contract` | Typy kontraktów kanałów |
|
||||
| `plugin-sdk/channel-feedback` | Okablowanie feedbacku/reakcji |
|
||||
| `plugin-sdk/channel-secret-runtime` | Wąskie helpery kontraktu sekretów, takie jak `collectSimpleChannelFieldAssignments`, `getChannelSurface`, `pushAssignment`, oraz typy docelowe sekretów |
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Podścieżki dostawców">
|
||||
| Podścieżka | Kluczowe eksporty |
|
||||
| Subpath | Kluczowe eksporty |
|
||||
| --- | --- |
|
||||
| `plugin-sdk/provider-entry` | `defineSingleProviderPluginEntry` |
|
||||
| `plugin-sdk/provider-setup` | Starannie dobrane pomocniki konfiguracji lokalnych/samohostowanych dostawców |
|
||||
| `plugin-sdk/self-hosted-provider-setup` | Ukierunkowane pomocniki konfiguracji samohostowanych dostawców zgodnych z OpenAI |
|
||||
| `plugin-sdk/cli-backend` | Domyślne ustawienia backendu CLI + stałe watchdog |
|
||||
| `plugin-sdk/provider-auth-runtime` | Pomocniki rozstrzygania kluczy API w runtime dla pluginów dostawców |
|
||||
| `plugin-sdk/provider-auth-api-key` | Pomocniki onboardingu/zapisu profilu dla kluczy API, takie jak `upsertApiKeyProfile` |
|
||||
| `plugin-sdk/provider-setup` | Dobrane helpery konfiguracji lokalnych i self-hosted dostawców |
|
||||
| `plugin-sdk/self-hosted-provider-setup` | Ukierunkowane helpery konfiguracji self-hosted dostawców zgodnych z OpenAI |
|
||||
| `plugin-sdk/cli-backend` | Domyślne ustawienia backendu CLI i stałe watchdog |
|
||||
| `plugin-sdk/provider-auth-runtime` | Helpery runtime do rozwiązywania kluczy API dla pluginów dostawców |
|
||||
| `plugin-sdk/provider-auth-api-key` | Helpery onboardingu kluczy API i zapisu profili, takie jak `upsertApiKeyProfile` |
|
||||
| `plugin-sdk/provider-auth-result` | Standardowy konstruktor wyniku auth OAuth |
|
||||
| `plugin-sdk/provider-auth-login` | Współdzielone interaktywne pomocniki logowania dla pluginów dostawców |
|
||||
| `plugin-sdk/provider-env-vars` | Pomocniki wyszukiwania zmiennych środowiskowych auth dostawców |
|
||||
| `plugin-sdk/provider-auth-login` | Współdzielone helpery interaktywnego logowania dla pluginów dostawców |
|
||||
| `plugin-sdk/provider-env-vars` | Helpery wyszukiwania zmiennych środowiskowych auth dostawców |
|
||||
| `plugin-sdk/provider-auth` | `createProviderApiKeyAuthMethod`, `ensureApiKeyFromOptionEnvOrPrompt`, `upsertAuthProfile`, `upsertApiKeyProfile`, `writeOAuthCredentials` |
|
||||
| `plugin-sdk/provider-model-shared` | `ProviderReplayFamily`, `buildProviderReplayFamilyHooks`, `normalizeModelCompat`, współdzielone konstruktory polityk replay, pomocniki endpointów dostawców oraz pomocniki normalizacji identyfikatorów modeli, takie jak `normalizeNativeXaiModelId` |
|
||||
| `plugin-sdk/provider-model-shared` | `ProviderReplayFamily`, `buildProviderReplayFamilyHooks`, `normalizeModelCompat`, współdzielone konstruktory zasad replay, helpery endpointów dostawców oraz helpery normalizacji identyfikatorów modeli, takie jak `normalizeNativeXaiModelId` |
|
||||
| `plugin-sdk/provider-catalog-shared` | `findCatalogTemplate`, `buildSingleProviderApiKeyCatalog`, `supportsNativeStreamingUsageCompat`, `applyProviderNativeStreamingUsageCompat` |
|
||||
| `plugin-sdk/provider-http` | Generyczne pomocniki możliwości HTTP/endpointów dostawców |
|
||||
| `plugin-sdk/provider-web-fetch-contract` | Wąskie pomocniki kontraktu konfiguracji/wyboru web-fetch, takie jak `enablePluginInConfig` i `WebFetchProviderPlugin` |
|
||||
| `plugin-sdk/provider-web-fetch` | Pomocniki rejestracji/cache dostawców web-fetch |
|
||||
| `plugin-sdk/provider-web-search-config-contract` | Wąskie pomocniki konfiguracji/danych uwierzytelniających web-search dla dostawców, którzy nie potrzebują powiązania włączania pluginu |
|
||||
| `plugin-sdk/provider-web-search-contract` | Wąskie pomocniki kontraktu konfiguracji/danych uwierzytelniających web-search, takie jak `createWebSearchProviderContractFields`, `enablePluginInConfig`, `resolveProviderWebSearchPluginConfig` oraz zakresowane settery/gettery danych uwierzytelniających |
|
||||
| `plugin-sdk/provider-web-search` | Pomocniki rejestracji/cache/runtime dostawców web-search |
|
||||
| `plugin-sdk/provider-tools` | `ProviderToolCompatFamily`, `buildProviderToolCompatFamilyHooks`, czyszczenie schematów Gemini + diagnostyka oraz pomocniki zgodności xAI, takie jak `resolveXaiModelCompatPatch` / `applyXaiModelCompat` |
|
||||
| `plugin-sdk/provider-http` | Ogólne helpery zdolności HTTP/endpointów dostawców |
|
||||
| `plugin-sdk/provider-web-fetch-contract` | Wąskie helpery kontraktu konfiguracji/wyboru web-fetch, takie jak `enablePluginInConfig` i `WebFetchProviderPlugin` |
|
||||
| `plugin-sdk/provider-web-fetch` | Helpery rejestracji i cache dla dostawców web-fetch |
|
||||
| `plugin-sdk/provider-web-search-config-contract` | Wąskie helpery konfiguracji/poświadczeń web-search dla dostawców, którzy nie potrzebują okablowania włączania pluginu |
|
||||
| `plugin-sdk/provider-web-search-contract` | Wąskie helpery kontraktu konfiguracji/poświadczeń web-search, takie jak `createWebSearchProviderContractFields`, `enablePluginInConfig`, `resolveProviderWebSearchPluginConfig` oraz zakresowane settery/gettery poświadczeń |
|
||||
| `plugin-sdk/provider-web-search` | Helpery rejestracji, cache i runtime dla dostawców web-search |
|
||||
| `plugin-sdk/provider-tools` | `ProviderToolCompatFamily`, `buildProviderToolCompatFamilyHooks`, czyszczenie schematów Gemini i diagnostyka oraz helpery zgodności xAI, takie jak `resolveXaiModelCompatPatch` / `applyXaiModelCompat` |
|
||||
| `plugin-sdk/provider-usage` | `fetchClaudeUsage` i podobne |
|
||||
| `plugin-sdk/provider-stream` | `ProviderStreamFamily`, `buildProviderStreamFamilyHooks`, `composeProviderStreamWrappers`, typy wrapperów strumieni oraz współdzielone pomocniki wrapperów Anthropic/Bedrock/Google/Kilocode/Moonshot/OpenAI/OpenRouter/Z.A.I/MiniMax/Copilot |
|
||||
| `plugin-sdk/provider-onboard` | Pomocniki łatek konfiguracji onboardingu |
|
||||
| `plugin-sdk/global-singleton` | Pomocniki lokalnych dla procesu singletonów/map/cache |
|
||||
| `plugin-sdk/provider-stream` | `ProviderStreamFamily`, `buildProviderStreamFamilyHooks`, `composeProviderStreamWrappers`, typy wrapperów strumieni oraz współdzielone helpery wrapperów Anthropic/Bedrock/Google/Kilocode/Moonshot/OpenAI/OpenRouter/Z.A.I/MiniMax/Copilot |
|
||||
| `plugin-sdk/provider-onboard` | Helpery poprawek konfiguracji onboardingu |
|
||||
| `plugin-sdk/global-singleton` | Helpery singletonów/map/cache lokalnych dla procesu |
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Podścieżki auth i bezpieczeństwa">
|
||||
| Podścieżka | Kluczowe eksporty |
|
||||
| Subpath | Kluczowe eksporty |
|
||||
| --- | --- |
|
||||
| `plugin-sdk/command-auth` | `resolveControlCommandGate`, pomocniki rejestru komend, pomocniki autoryzacji nadawcy |
|
||||
| `plugin-sdk/command-auth` | `resolveControlCommandGate`, helpery rejestru komend, helpery autoryzacji nadawcy |
|
||||
| `plugin-sdk/command-status` | Konstruktory komunikatów komend/pomocy, takie jak `buildCommandsMessagePaginated` i `buildHelpMessage` |
|
||||
| `plugin-sdk/approval-auth-runtime` | Pomocniki rozstrzygania zatwierdzającego i auth działań w tym samym czacie |
|
||||
| `plugin-sdk/approval-client-runtime` | Pomocniki profilu/filtra zatwierdzania dla natywnego wykonania |
|
||||
| `plugin-sdk/approval-delivery-runtime` | Adaptery dostarczania/możliwości natywnego zatwierdzania |
|
||||
| `plugin-sdk/approval-gateway-runtime` | Współdzielony pomocnik rozstrzygania Gateway zatwierdzania |
|
||||
| `plugin-sdk/approval-handler-adapter-runtime` | Lekkie pomocniki ładowania natywnego adaptera zatwierdzania dla gorących punktów wejścia kanałów |
|
||||
| `plugin-sdk/approval-handler-runtime` | Szersze pomocniki runtime obsługi zatwierdzania; gdy wystarczą, preferuj węższe warstwy adaptera/Gateway |
|
||||
| `plugin-sdk/approval-native-runtime` | Pomocniki celu natywnego zatwierdzania + wiązania konta |
|
||||
| `plugin-sdk/approval-reply-runtime` | Pomocniki ładunku odpowiedzi zatwierdzania exec/pluginu |
|
||||
| `plugin-sdk/command-auth-native` | Pomocniki natywnego auth komend + natywnego celu sesji |
|
||||
| `plugin-sdk/command-detection` | Współdzielone pomocniki wykrywania komend |
|
||||
| `plugin-sdk/command-surface` | Pomocniki normalizacji treści komend i powierzchni komend |
|
||||
| `plugin-sdk/approval-auth-runtime` | Rozwiązywanie approverów i helpery auth akcji w tym samym czacie |
|
||||
| `plugin-sdk/approval-client-runtime` | Helpery profili/filtrów natywnego zatwierdzania exec |
|
||||
| `plugin-sdk/approval-delivery-runtime` | Adaptery natywnych możliwości/dostarczania zatwierdzeń |
|
||||
| `plugin-sdk/approval-gateway-runtime` | Współdzielony helper rozwiązywania Gateway dla zatwierdzeń |
|
||||
| `plugin-sdk/approval-handler-adapter-runtime` | Lekkie helpery ładowania natywnych adapterów zatwierdzeń dla gorących entrypointów kanałów |
|
||||
| `plugin-sdk/approval-handler-runtime` | Szersze helpery runtime obsługi zatwierdzeń; preferuj węższe ścieżki adapter/gateway, gdy są wystarczające |
|
||||
| `plugin-sdk/approval-native-runtime` | Helpery natywnych celów zatwierdzania i powiązań kont |
|
||||
| `plugin-sdk/approval-reply-runtime` | Helpery ładunku odpowiedzi zatwierdzeń exec/pluginów |
|
||||
| `plugin-sdk/command-auth-native` | Natywne auth komend i helpery natywnych celów sesji |
|
||||
| `plugin-sdk/command-detection` | Współdzielone helpery wykrywania komend |
|
||||
| `plugin-sdk/command-surface` | Helpery normalizacji treści komend i powierzchni komend |
|
||||
| `plugin-sdk/allow-from` | `formatAllowFromLowercase` |
|
||||
| `plugin-sdk/channel-secret-runtime` | Wąskie pomocniki zbierania kontraktów sekretów dla powierzchni sekretów kanałów/pluginów |
|
||||
| `plugin-sdk/secret-ref-runtime` | Wąskie pomocniki `coerceSecretRef` i typowania SecretRef do parsowania kontraktu sekretów/konfiguracji |
|
||||
| `plugin-sdk/security-runtime` | Współdzielone pomocniki zaufania, bramkowania DM, treści zewnętrznych i zbierania sekretów |
|
||||
| `plugin-sdk/ssrf-policy` | Pomocniki polityki SSRF dla allowlisty hostów i sieci prywatnych |
|
||||
| `plugin-sdk/ssrf-runtime` | Pomocniki pinned-dispatcher, fetch chronionego przez SSRF i polityki SSRF |
|
||||
| `plugin-sdk/secret-input` | Pomocniki parsowania wejścia sekretów |
|
||||
| `plugin-sdk/webhook-ingress` | Pomocniki żądań/celów Webhook |
|
||||
| `plugin-sdk/webhook-request-guards` | Pomocniki rozmiaru treści żądania/timeoutu |
|
||||
| `plugin-sdk/channel-secret-runtime` | Wąskie helpery zbierania kontraktów sekretów dla powierzchni sekretów kanałów/pluginów |
|
||||
| `plugin-sdk/secret-ref-runtime` | Wąskie helpery `coerceSecretRef` i typowania SecretRef do parsowania kontraktów sekretów/konfiguracji |
|
||||
| `plugin-sdk/security-runtime` | Współdzielone helpery zaufania, bramek DM, treści zewnętrznych i zbierania sekretów |
|
||||
| `plugin-sdk/ssrf-policy` | Helpery polityk SSRF dla allowlist hostów i sieci prywatnych |
|
||||
| `plugin-sdk/ssrf-dispatcher` | Wąskie helpery pinned-dispatcher bez szerokiej powierzchni infra runtime |
|
||||
| `plugin-sdk/ssrf-runtime` | Helpery pinned-dispatcher, fetch chronionego przez SSRF i polityki SSRF |
|
||||
| `plugin-sdk/secret-input` | Helpery parsowania danych wejściowych sekretów |
|
||||
| `plugin-sdk/webhook-ingress` | Helpery żądań/docelów Webhook |
|
||||
| `plugin-sdk/webhook-request-guards` | Helpery rozmiaru body i timeoutów żądań |
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Podścieżki runtime i storage">
|
||||
| Podścieżka | Kluczowe eksporty |
|
||||
| Subpath | Kluczowe eksporty |
|
||||
| --- | --- |
|
||||
| `plugin-sdk/runtime` | Szerokie pomocniki runtime/logowania/kopii zapasowych/instalacji pluginów |
|
||||
| `plugin-sdk/runtime-env` | Wąskie pomocniki env runtime, loggera, timeoutu, ponawiania i backoff |
|
||||
| `plugin-sdk/channel-runtime-context` | Generyczne pomocniki rejestracji i wyszukiwania kontekstu runtime kanału |
|
||||
| `plugin-sdk/runtime` | Szerokie helpery runtime, logowania, backupu i instalacji pluginów |
|
||||
| `plugin-sdk/runtime-env` | Wąskie helpery środowiska runtime, loggera, timeoutów, retry i backoff |
|
||||
| `plugin-sdk/channel-runtime-context` | Ogólne helpery rejestracji i wyszukiwania kontekstu runtime kanałów |
|
||||
| `plugin-sdk/runtime-store` | `createPluginRuntimeStore` |
|
||||
| `plugin-sdk/plugin-runtime` | Współdzielone pomocniki komend/hooków/http/interakcji pluginów |
|
||||
| `plugin-sdk/hook-runtime` | Współdzielone pomocniki pipeline webhooków/wewnętrznych hooków |
|
||||
| `plugin-sdk/lazy-runtime` | Pomocniki leniwego importu/wiązania runtime, takie jak `createLazyRuntimeModule`, `createLazyRuntimeMethod` i `createLazyRuntimeSurface` |
|
||||
| `plugin-sdk/process-runtime` | Pomocniki wykonywania procesów |
|
||||
| `plugin-sdk/cli-runtime` | Pomocniki formatowania, oczekiwania i wersji CLI |
|
||||
| `plugin-sdk/gateway-runtime` | Pomocniki klienta Gateway i łatania statusu kanału |
|
||||
| `plugin-sdk/config-runtime` | Pomocniki ładowania/zapisu konfiguracji |
|
||||
| `plugin-sdk/telegram-command-config` | Pomocniki normalizacji nazw/opisów komend Telegram oraz sprawdzania duplikatów/konfliktów, nawet gdy powierzchnia kontraktu Telegram dostarczana w pakiecie jest niedostępna |
|
||||
| `plugin-sdk/approval-runtime` | Pomocniki zatwierdzania exec/pluginów, konstruktory możliwości zatwierdzania, pomocniki auth/profili, pomocniki natywnego routingu/runtime |
|
||||
| `plugin-sdk/reply-runtime` | Współdzielone pomocniki runtime wejścia/odpowiedzi, chunkingu, dyspozycji, Heartbeat, planera odpowiedzi |
|
||||
| `plugin-sdk/reply-dispatch-runtime` | Wąskie pomocniki dyspozycji/finalizacji odpowiedzi |
|
||||
| `plugin-sdk/reply-history` | Współdzielone pomocniki historii odpowiedzi dla krótkich okien czasowych, takie jak `buildHistoryContext`, `recordPendingHistoryEntry` i `clearHistoryEntriesIfEnabled` |
|
||||
| `plugin-sdk/plugin-runtime` | Współdzielone helpery komend, hooków, HTTP i interakcji pluginów |
|
||||
| `plugin-sdk/hook-runtime` | Współdzielone helpery pipeline Webhook i hooków wewnętrznych |
|
||||
| `plugin-sdk/lazy-runtime` | Helpery leniwego importu/powiązań runtime, takie jak `createLazyRuntimeModule`, `createLazyRuntimeMethod` i `createLazyRuntimeSurface` |
|
||||
| `plugin-sdk/process-runtime` | Helpery wykonywania procesów |
|
||||
| `plugin-sdk/cli-runtime` | Helpery formatowania CLI, oczekiwania i wersji |
|
||||
| `plugin-sdk/gateway-runtime` | Helpery klienta Gateway i poprawek statusu kanałów |
|
||||
| `plugin-sdk/config-runtime` | Helpery ładowania/zapisu konfiguracji |
|
||||
| `plugin-sdk/telegram-command-config` | Helpery normalizacji nazw/opisów komend Telegram oraz sprawdzania duplikatów/konfliktów, nawet gdy bundled powierzchnia kontraktu Telegram jest niedostępna |
|
||||
| `plugin-sdk/text-autolink-runtime` | Wykrywanie autolinków odwołań do plików bez szerokiego barrel `text-runtime` |
|
||||
| `plugin-sdk/approval-runtime` | Helpery zatwierdzeń exec/pluginów, konstruktory możliwości zatwierdzeń, helpery auth/profili, helpery natywnego routingu/runtime |
|
||||
| `plugin-sdk/reply-runtime` | Współdzielone helpery runtime dla wejścia/odpowiedzi, chunkingu, dispatchu, Heartbeat i planera odpowiedzi |
|
||||
| `plugin-sdk/reply-dispatch-runtime` | Wąskie helpery dispatchu/finalizacji odpowiedzi |
|
||||
| `plugin-sdk/reply-history` | Współdzielone helpery krótkiego okna historii odpowiedzi, takie jak `buildHistoryContext`, `recordPendingHistoryEntry` i `clearHistoryEntriesIfEnabled` |
|
||||
| `plugin-sdk/reply-reference` | `createReplyReferencePlanner` |
|
||||
| `plugin-sdk/reply-chunking` | Wąskie pomocniki chunkingu tekstu/Markdown |
|
||||
| `plugin-sdk/session-store-runtime` | Pomocniki ścieżki storage sesji + `updated-at` |
|
||||
| `plugin-sdk/state-paths` | Pomocniki ścieżek katalogów stanu/OAuth |
|
||||
| `plugin-sdk/routing` | Pomocniki tras/kluczy sesji/wiązania kont, takie jak `resolveAgentRoute`, `buildAgentSessionKey` i `resolveDefaultAgentBoundAccountId` |
|
||||
| `plugin-sdk/status-helpers` | Współdzielone pomocniki podsumowania statusu kanału/konta, domyślne ustawienia stanu runtime i pomocniki metadanych problemów |
|
||||
| `plugin-sdk/target-resolver-runtime` | Współdzielone pomocniki rozstrzygania celów |
|
||||
| `plugin-sdk/string-normalization-runtime` | Pomocniki normalizacji slugów/ciągów znaków |
|
||||
| `plugin-sdk/request-url` | Wyodrębniaj adresy URL jako ciągi znaków z wejść typu fetch/request |
|
||||
| `plugin-sdk/run-command` | Uruchamianie komend z limitem czasu i znormalizowanymi wynikami stdout/stderr |
|
||||
| `plugin-sdk/param-readers` | Typowe czytniki parametrów narzędzi/CLI |
|
||||
| `plugin-sdk/tool-payload` | Wyodrębnianie znormalizowanych ładunków z obiektów wyników narzędzi |
|
||||
| `plugin-sdk/reply-chunking` | Wąskie helpery chunkingu tekstu/Markdown |
|
||||
| `plugin-sdk/session-store-runtime` | Helpery ścieżek session store i `updated-at` |
|
||||
| `plugin-sdk/state-paths` | Helpery ścieżek katalogów stanu/OAuth |
|
||||
| `plugin-sdk/routing` | Helpery routingu, kluczy sesji i powiązań kont, takie jak `resolveAgentRoute`, `buildAgentSessionKey` i `resolveDefaultAgentBoundAccountId` |
|
||||
| `plugin-sdk/status-helpers` | Współdzielone helpery podsumowań statusu kanałów/kont, domyślne wartości stanu runtime i helpery metadanych problemów |
|
||||
| `plugin-sdk/target-resolver-runtime` | Współdzielone helpery rozwiązywania celów |
|
||||
| `plugin-sdk/string-normalization-runtime` | Helpery normalizacji slugów/ciągów |
|
||||
| `plugin-sdk/request-url` | Wyodrębnianie tekstowych URL-i z wejść podobnych do fetch/request |
|
||||
| `plugin-sdk/run-command` | Runner komend z limitem czasu i znormalizowanymi wynikami stdout/stderr |
|
||||
| `plugin-sdk/param-readers` | Wspólne czytniki parametrów narzędzi/CLI |
|
||||
| `plugin-sdk/tool-payload` | Wyodrębnianie znormalizowanych payloadów z obiektów wyników narzędzi |
|
||||
| `plugin-sdk/tool-send` | Wyodrębnianie kanonicznych pól celu wysyłki z argumentów narzędzi |
|
||||
| `plugin-sdk/temp-path` | Współdzielone pomocniki ścieżek tymczasowego pobierania |
|
||||
| `plugin-sdk/logging-core` | Pomocniki loggera subsystemu i redakcji |
|
||||
| `plugin-sdk/markdown-table-runtime` | Pomocniki trybu tabel Markdown |
|
||||
| `plugin-sdk/json-store` | Małe pomocniki odczytu/zapisu stanu JSON |
|
||||
| `plugin-sdk/file-lock` | Pomocniki reentrant locków plików |
|
||||
| `plugin-sdk/persistent-dedupe` | Pomocniki cache deduplikacji opartego na dysku |
|
||||
| `plugin-sdk/acp-runtime` | Pomocniki ACP runtime/sesji i dyspozycji odpowiedzi |
|
||||
| `plugin-sdk/temp-path` | Współdzielone helpery ścieżek tymczasowego pobierania |
|
||||
| `plugin-sdk/logging-core` | Helpery loggera podsystemu i redakcji |
|
||||
| `plugin-sdk/markdown-table-runtime` | Helpery trybu tabel Markdown |
|
||||
| `plugin-sdk/json-store` | Małe helpery odczytu/zapisu stanu JSON |
|
||||
| `plugin-sdk/file-lock` | Helpery reentrant file-lock |
|
||||
| `plugin-sdk/persistent-dedupe` | Helpery cache deduplikacji opartej na dysku |
|
||||
| `plugin-sdk/acp-runtime` | Helpery runtime/sesji ACP i dispatchu odpowiedzi |
|
||||
| `plugin-sdk/acp-binding-resolve-runtime` | Rozwiązywanie powiązań ACP tylko do odczytu bez importów uruchamiania cyklu życia |
|
||||
| `plugin-sdk/agent-config-primitives` | Wąskie prymitywy schematu konfiguracji runtime agenta |
|
||||
| `plugin-sdk/boolean-param` | Elastyczny czytnik parametrów logicznych |
|
||||
| `plugin-sdk/dangerous-name-runtime` | Pomocniki rozstrzygania dopasowania niebezpiecznych nazw |
|
||||
| `plugin-sdk/device-bootstrap` | Pomocniki bootstrapu urządzeń i tokenów parowania |
|
||||
| `plugin-sdk/extension-shared` | Współdzielone prymitywy pomocnicze dla kanałów pasywnych, statusu i ambient proxy |
|
||||
| `plugin-sdk/models-provider-runtime` | Pomocniki odpowiedzi dostawców/komendy `/models` |
|
||||
| `plugin-sdk/skill-commands-runtime` | Pomocniki listowania komend Skills |
|
||||
| `plugin-sdk/native-command-registry` | Pomocniki rejestru/budowy/serializacji natywnych komend |
|
||||
| `plugin-sdk/agent-harness` | Eksperymentalna powierzchnia zaufanego pluginu dla niskopoziomowych harnessów agentów: typy harnessów, pomocniki sterowania/przerywania aktywnego uruchomienia, pomocniki mostu narzędzi OpenClaw oraz narzędzia wyników prób |
|
||||
| `plugin-sdk/provider-zai-endpoint` | Pomocniki wykrywania endpointów Z.AI |
|
||||
| `plugin-sdk/infra-runtime` | Pomocniki zdarzeń systemowych/Heartbeat |
|
||||
| `plugin-sdk/collection-runtime` | Małe pomocniki cache z ograniczeniem rozmiaru |
|
||||
| `plugin-sdk/diagnostic-runtime` | Pomocniki flag i zdarzeń diagnostycznych |
|
||||
| `plugin-sdk/error-runtime` | Graf błędów, formatowanie, współdzielone pomocniki klasyfikacji błędów, `isApprovalNotFoundError` |
|
||||
| `plugin-sdk/fetch-runtime` | Pomocniki opakowanego fetch, proxy i pinned lookup |
|
||||
| `plugin-sdk/host-runtime` | Pomocniki normalizacji nazwy hosta i hosta SCP |
|
||||
| `plugin-sdk/retry-runtime` | Pomocniki konfiguracji ponawiania i uruchamiania ponowień |
|
||||
| `plugin-sdk/agent-runtime` | Pomocniki katalogu/tożsamości/workspace agenta |
|
||||
| `plugin-sdk/directory-runtime` | Zapytania/deduplikacja katalogów oparta na konfiguracji |
|
||||
| `plugin-sdk/boolean-param` | Elastyczny czytnik parametrów boolowskich |
|
||||
| `plugin-sdk/dangerous-name-runtime` | Helpery rozwiązywania dopasowań niebezpiecznych nazw |
|
||||
| `plugin-sdk/device-bootstrap` | Helpery bootstrapu urządzenia i tokenów parowania |
|
||||
| `plugin-sdk/extension-shared` | Współdzielone prymitywy helperów dla kanałów pasywnych, statusu i ambient proxy |
|
||||
| `plugin-sdk/models-provider-runtime` | Helpery odpowiedzi dostawców i komendy `/models` |
|
||||
| `plugin-sdk/skill-commands-runtime` | Helpery listowania komend Skills |
|
||||
| `plugin-sdk/native-command-registry` | Helpery rejestru/budowania/serializacji natywnych komend |
|
||||
| `plugin-sdk/agent-harness` | Eksperymentalna powierzchnia zaufanego pluginu dla niskopoziomowych harnessów agentów: typy harnessów, helpery sterowania/przerywania aktywnego uruchomienia, helpery mostka narzędzi OpenClaw i narzędzia wyników prób |
|
||||
| `plugin-sdk/provider-zai-endpoint` | Helpery wykrywania endpointów Z.AI |
|
||||
| `plugin-sdk/infra-runtime` | Helpery zdarzeń systemowych/Heartbeat |
|
||||
| `plugin-sdk/collection-runtime` | Małe helpery ograniczonego cache |
|
||||
| `plugin-sdk/diagnostic-runtime` | Helpery flag i zdarzeń diagnostycznych |
|
||||
| `plugin-sdk/error-runtime` | Graf błędów, formatowanie, współdzielone helpery klasyfikacji błędów, `isApprovalNotFoundError` |
|
||||
| `plugin-sdk/fetch-runtime` | Helpery opakowanego fetch, proxy i pinned lookup |
|
||||
| `plugin-sdk/runtime-fetch` | Fetch runtime świadomy dispatchera bez importów proxy/guarded-fetch |
|
||||
| `plugin-sdk/response-limit-runtime` | Ograniczony czytnik body odpowiedzi bez szerokiej powierzchni media runtime |
|
||||
| `plugin-sdk/session-binding-runtime` | Bieżący stan powiązań konwersacji bez routingu skonfigurowanych powiązań lub store’ów parowania |
|
||||
| `plugin-sdk/session-store-runtime` | Helpery odczytu session store bez szerokich importów zapisu/utrzymania konfiguracji |
|
||||
| `plugin-sdk/context-visibility-runtime` | Rozwiązywanie widoczności kontekstu i filtrowanie kontekstu uzupełniającego bez szerokich importów konfiguracji/bezpieczeństwa |
|
||||
| `plugin-sdk/string-coerce-runtime` | Wąskie helpery wymuszania i normalizacji rekordów/ciągów prymitywnych bez importów Markdown/logowania |
|
||||
| `plugin-sdk/host-runtime` | Helpery normalizacji nazw hostów i hostów SCP |
|
||||
| `plugin-sdk/retry-runtime` | Helpery konfiguracji retry i runnera retry |
|
||||
| `plugin-sdk/agent-runtime` | Helpery katalogu/tożsamości/workspace agenta |
|
||||
| `plugin-sdk/directory-runtime` | Oparte na konfiguracji zapytania o katalogi/deduplikacja |
|
||||
| `plugin-sdk/keyed-async-queue` | `KeyedAsyncQueue` |
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Podścieżki możliwości i testowania">
|
||||
| Podścieżka | Kluczowe eksporty |
|
||||
| Subpath | Kluczowe eksporty |
|
||||
| --- | --- |
|
||||
| `plugin-sdk/media-runtime` | Współdzielone pomocniki pobierania/przekształcania/storage mediów oraz konstruktory ładunków mediów |
|
||||
| `plugin-sdk/media-generation-runtime` | Współdzielone pomocniki failover generowania mediów, wybór kandydatów i komunikaty o brakujących modelach |
|
||||
| `plugin-sdk/media-understanding` | Typy dostawców rozumienia mediów oraz eksporty pomocnicze dla obrazów/audio skierowane do dostawców |
|
||||
| `plugin-sdk/text-runtime` | Współdzielone pomocniki tekstu/Markdown/logowania, takie jak usuwanie tekstu widocznego dla asystenta, pomocniki renderowania/chunkingu/tabel Markdown, pomocniki redakcji, pomocniki tagów dyrektyw i narzędzia bezpiecznego tekstu |
|
||||
| `plugin-sdk/text-chunking` | Pomocnik chunkingu tekstu wychodzącego |
|
||||
| `plugin-sdk/speech` | Typy dostawców mowy oraz eksporty pomocnicze dla dyrektyw, rejestru i walidacji skierowane do dostawców |
|
||||
| `plugin-sdk/speech-core` | Współdzielone typy dostawców mowy, pomocniki rejestru, dyrektyw i normalizacji |
|
||||
| `plugin-sdk/realtime-transcription` | Typy dostawców transkrypcji w czasie rzeczywistym i pomocniki rejestru |
|
||||
| `plugin-sdk/realtime-voice` | Typy dostawców głosu w czasie rzeczywistym i pomocniki rejestru |
|
||||
| `plugin-sdk/media-runtime` | Współdzielone helpery pobierania, transformacji i przechowywania mediów oraz konstruktory payloadów mediów |
|
||||
| `plugin-sdk/media-generation-runtime` | Współdzielone helpery failover generowania mediów, wybór kandydatów i komunikaty o brakujących modelach |
|
||||
| `plugin-sdk/media-understanding` | Typy dostawców rozumienia mediów oraz eksporty helperów obrazów/audio dla dostawców |
|
||||
| `plugin-sdk/text-runtime` | Współdzielone helpery tekstu/Markdown/logowania, takie jak usuwanie tekstu widocznego dla asystenta, helpery renderowania/chunkingu/tabel Markdown, helpery redakcji, helpery tagów dyrektyw i narzędzia bezpiecznego tekstu |
|
||||
| `plugin-sdk/text-chunking` | Helper chunkingu tekstu wychodzącego |
|
||||
| `plugin-sdk/speech` | Typy dostawców mowy oraz eksporty helperów dyrektyw, rejestru i walidacji dla dostawców |
|
||||
| `plugin-sdk/speech-core` | Współdzielone typy dostawców mowy oraz helpery rejestru, dyrektyw i normalizacji |
|
||||
| `plugin-sdk/realtime-transcription` | Typy dostawców transkrypcji w czasie rzeczywistym i helpery rejestru |
|
||||
| `plugin-sdk/realtime-voice` | Typy dostawców głosu w czasie rzeczywistym i helpery rejestru |
|
||||
| `plugin-sdk/image-generation` | Typy dostawców generowania obrazów |
|
||||
| `plugin-sdk/image-generation-core` | Współdzielone typy generowania obrazów, pomocniki failover, auth i rejestru |
|
||||
| `plugin-sdk/image-generation-core` | Współdzielone typy generowania obrazów oraz helpery failover, auth i rejestru |
|
||||
| `plugin-sdk/music-generation` | Typy dostawców/żądań/wyników generowania muzyki |
|
||||
| `plugin-sdk/music-generation-core` | Współdzielone typy generowania muzyki, pomocniki failover, wyszukiwanie dostawców i parsowanie model-ref |
|
||||
| `plugin-sdk/music-generation-core` | Współdzielone typy generowania muzyki oraz helpery failover, wyszukiwania dostawców i parsowania model-ref |
|
||||
| `plugin-sdk/video-generation` | Typy dostawców/żądań/wyników generowania wideo |
|
||||
| `plugin-sdk/video-generation-core` | Współdzielone typy generowania wideo, pomocniki failover, wyszukiwanie dostawców i parsowanie model-ref |
|
||||
| `plugin-sdk/webhook-targets` | Rejestr celów Webhook i pomocniki instalacji tras |
|
||||
| `plugin-sdk/webhook-path` | Pomocniki normalizacji ścieżek Webhook |
|
||||
| `plugin-sdk/web-media` | Współdzielone pomocniki ładowania mediów zdalnych/lokalnych |
|
||||
| `plugin-sdk/zod` | Reeksport `zod` dla użytkowników Plugin SDK |
|
||||
| `plugin-sdk/video-generation-core` | Współdzielone typy generowania wideo oraz helpery failover, wyszukiwania dostawców i parsowania model-ref |
|
||||
| `plugin-sdk/webhook-targets` | Rejestr celów Webhook i helpery instalacji tras |
|
||||
| `plugin-sdk/webhook-path` | Helpery normalizacji ścieżek Webhook |
|
||||
| `plugin-sdk/web-media` | Współdzielone helpery ładowania mediów zdalnych/lokalnych |
|
||||
| `plugin-sdk/zod` | Reeksportowany `zod` dla odbiorców Plugin SDK |
|
||||
| `plugin-sdk/testing` | `installCommonResolveTargetErrorCases`, `shouldAckReaction` |
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Podścieżki pamięci">
|
||||
| Podścieżka | Kluczowe eksporty |
|
||||
| Subpath | Kluczowe eksporty |
|
||||
| --- | --- |
|
||||
| `plugin-sdk/memory-core` | Powierzchnia pomocnicza `memory-core` dostarczana w pakiecie dla pomocników managera/konfiguracji/plików/CLI |
|
||||
| `plugin-sdk/memory-core` | Powierzchnia helperów bundled `memory-core` dla managera, konfiguracji, plików i helperów CLI |
|
||||
| `plugin-sdk/memory-core-engine-runtime` | Fasada runtime indeksowania/wyszukiwania pamięci |
|
||||
| `plugin-sdk/memory-core-host-engine-foundation` | Eksporty silnika foundation hosta pamięci |
|
||||
| `plugin-sdk/memory-core-host-engine-embeddings` | Kontrakty embeddingów hosta pamięci, dostęp do rejestru, lokalny dostawca oraz generyczne pomocniki batch/zdalne |
|
||||
| `plugin-sdk/memory-core-host-engine-foundation` | Eksporty silnika bazowego hosta pamięci |
|
||||
| `plugin-sdk/memory-core-host-engine-embeddings` | Kontrakty embeddingów hosta pamięci, dostęp do rejestru, lokalny dostawca oraz ogólne helpery batch/zdalne |
|
||||
| `plugin-sdk/memory-core-host-engine-qmd` | Eksporty silnika QMD hosta pamięci |
|
||||
| `plugin-sdk/memory-core-host-engine-storage` | Eksporty silnika storage hosta pamięci |
|
||||
| `plugin-sdk/memory-core-host-multimodal` | Pomocniki multimodalne hosta pamięci |
|
||||
| `plugin-sdk/memory-core-host-query` | Pomocniki zapytań hosta pamięci |
|
||||
| `plugin-sdk/memory-core-host-secret` | Pomocniki sekretów hosta pamięci |
|
||||
| `plugin-sdk/memory-core-host-events` | Pomocniki dziennika zdarzeń hosta pamięci |
|
||||
| `plugin-sdk/memory-core-host-status` | Pomocniki statusu hosta pamięci |
|
||||
| `plugin-sdk/memory-core-host-runtime-cli` | Pomocniki CLI runtime hosta pamięci |
|
||||
| `plugin-sdk/memory-core-host-runtime-core` | Pomocniki core runtime hosta pamięci |
|
||||
| `plugin-sdk/memory-core-host-runtime-files` | Pomocniki plików/runtime hosta pamięci |
|
||||
| `plugin-sdk/memory-host-core` | Neutralny względem dostawcy alias dla pomocników core runtime hosta pamięci |
|
||||
| `plugin-sdk/memory-host-events` | Neutralny względem dostawcy alias dla pomocników dziennika zdarzeń hosta pamięci |
|
||||
| `plugin-sdk/memory-host-files` | Neutralny względem dostawcy alias dla pomocników plików/runtime hosta pamięci |
|
||||
| `plugin-sdk/memory-host-markdown` | Współdzielone pomocniki zarządzanego Markdown dla pluginów powiązanych z pamięcią |
|
||||
| `plugin-sdk/memory-host-search` | Fasada runtime Active Memory dla dostępu do managera wyszukiwania |
|
||||
| `plugin-sdk/memory-host-status` | Neutralny względem dostawcy alias dla pomocników statusu hosta pamięci |
|
||||
| `plugin-sdk/memory-lancedb` | Powierzchnia pomocnicza `memory-lancedb` dostarczana w pakiecie |
|
||||
| `plugin-sdk/memory-core-host-multimodal` | Multimodalne helpery hosta pamięci |
|
||||
| `plugin-sdk/memory-core-host-query` | Helpery zapytań hosta pamięci |
|
||||
| `plugin-sdk/memory-core-host-secret` | Helpery sekretów hosta pamięci |
|
||||
| `plugin-sdk/memory-core-host-events` | Helpery dziennika zdarzeń hosta pamięci |
|
||||
| `plugin-sdk/memory-core-host-status` | Helpery statusu hosta pamięci |
|
||||
| `plugin-sdk/memory-core-host-runtime-cli` | Helpery runtime CLI hosta pamięci |
|
||||
| `plugin-sdk/memory-core-host-runtime-core` | Helpery głównego runtime hosta pamięci |
|
||||
| `plugin-sdk/memory-core-host-runtime-files` | Helpery plików/runtime hosta pamięci |
|
||||
| `plugin-sdk/memory-host-core` | Neutralny wobec dostawcy alias dla helperów głównego runtime hosta pamięci |
|
||||
| `plugin-sdk/memory-host-events` | Neutralny wobec dostawcy alias dla helperów dziennika zdarzeń hosta pamięci |
|
||||
| `plugin-sdk/memory-host-files` | Neutralny wobec dostawcy alias dla helperów plików/runtime hosta pamięci |
|
||||
| `plugin-sdk/memory-host-markdown` | Współdzielone helpery zarządzanego Markdown dla pluginów powiązanych z pamięcią |
|
||||
| `plugin-sdk/memory-host-search` | Fasada runtime Active Memory do dostępu do menedżera wyszukiwania |
|
||||
| `plugin-sdk/memory-host-status` | Neutralny wobec dostawcy alias dla helperów statusu hosta pamięci |
|
||||
| `plugin-sdk/memory-lancedb` | Powierzchnia helperów bundled `memory-lancedb` |
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Zastrzeżone podścieżki pomocnicze dostarczane w pakiecie">
|
||||
| Rodzina | Bieżące podścieżki | Zamierzone użycie |
|
||||
<Accordion title="Zastrzeżone podścieżki bundled-helper">
|
||||
| Family | Bieżące podścieżki | Zamierzone użycie |
|
||||
| --- | --- | --- |
|
||||
| Browser | `plugin-sdk/browser-cdp`, `plugin-sdk/browser-config-runtime`, `plugin-sdk/browser-config-support`, `plugin-sdk/browser-control-auth`, `plugin-sdk/browser-node-runtime`, `plugin-sdk/browser-profiles`, `plugin-sdk/browser-security-runtime`, `plugin-sdk/browser-setup-tools`, `plugin-sdk/browser-support` | Pomocniki wsparcia dla pluginu Browser dostarczanego w pakiecie (`browser-support` pozostaje barrelem zgodnościowym) |
|
||||
| Matrix | `plugin-sdk/matrix`, `plugin-sdk/matrix-helper`, `plugin-sdk/matrix-runtime-heavy`, `plugin-sdk/matrix-runtime-shared`, `plugin-sdk/matrix-runtime-surface`, `plugin-sdk/matrix-surface`, `plugin-sdk/matrix-thread-bindings` | Powierzchnia pomocnicza/runtime Matrix dostarczana w pakiecie |
|
||||
| Line | `plugin-sdk/line`, `plugin-sdk/line-core`, `plugin-sdk/line-runtime`, `plugin-sdk/line-surface` | Powierzchnia pomocnicza/runtime LINE dostarczana w pakiecie |
|
||||
| IRC | `plugin-sdk/irc`, `plugin-sdk/irc-surface` | Powierzchnia pomocnicza IRC dostarczana w pakiecie |
|
||||
| Pomocniki specyficzne dla kanałów | `plugin-sdk/googlechat`, `plugin-sdk/zalouser`, `plugin-sdk/bluebubbles`, `plugin-sdk/bluebubbles-policy`, `plugin-sdk/mattermost`, `plugin-sdk/mattermost-policy`, `plugin-sdk/feishu-conversation`, `plugin-sdk/msteams`, `plugin-sdk/nextcloud-talk`, `plugin-sdk/nostr`, `plugin-sdk/tlon`, `plugin-sdk/twitch` | Warstwy zgodnościowe/pomocnicze kanałów dostarczanych w pakiecie |
|
||||
| Pomocniki specyficzne dla auth/pluginów | `plugin-sdk/github-copilot-login`, `plugin-sdk/github-copilot-token`, `plugin-sdk/diagnostics-otel`, `plugin-sdk/diffs`, `plugin-sdk/llm-task`, `plugin-sdk/thread-ownership`, `plugin-sdk/voice-call` | Warstwy pomocnicze funkcji/pluginów dostarczanych w pakiecie; `plugin-sdk/github-copilot-token` obecnie eksportuje `DEFAULT_COPILOT_API_BASE_URL`, `deriveCopilotApiBaseUrlFromToken` i `resolveCopilotApiToken` |
|
||||
| Browser | `plugin-sdk/browser-cdp`, `plugin-sdk/browser-config-runtime`, `plugin-sdk/browser-config-support`, `plugin-sdk/browser-control-auth`, `plugin-sdk/browser-node-runtime`, `plugin-sdk/browser-profiles`, `plugin-sdk/browser-security-runtime`, `plugin-sdk/browser-setup-tools`, `plugin-sdk/browser-support` | Helpery wsparcia bundled pluginu Browser (`browser-support` pozostaje barrelem zgodności) |
|
||||
| Matrix | `plugin-sdk/matrix`, `plugin-sdk/matrix-helper`, `plugin-sdk/matrix-runtime-heavy`, `plugin-sdk/matrix-runtime-shared`, `plugin-sdk/matrix-runtime-surface`, `plugin-sdk/matrix-surface`, `plugin-sdk/matrix-thread-bindings` | Powierzchnia helperów/runtime dla bundled Matrix |
|
||||
| Line | `plugin-sdk/line`, `plugin-sdk/line-core`, `plugin-sdk/line-runtime`, `plugin-sdk/line-surface` | Powierzchnia helperów/runtime dla bundled LINE |
|
||||
| IRC | `plugin-sdk/irc`, `plugin-sdk/irc-surface` | Powierzchnia helperów dla bundled IRC |
|
||||
| Helpery specyficzne dla kanałów | `plugin-sdk/googlechat`, `plugin-sdk/zalouser`, `plugin-sdk/bluebubbles`, `plugin-sdk/bluebubbles-policy`, `plugin-sdk/mattermost`, `plugin-sdk/mattermost-policy`, `plugin-sdk/feishu-conversation`, `plugin-sdk/msteams`, `plugin-sdk/nextcloud-talk`, `plugin-sdk/nostr`, `plugin-sdk/tlon`, `plugin-sdk/twitch` | Ścieżki zgodności/helperów dla bundled kanałów |
|
||||
| Helpery specyficzne dla auth/pluginów | `plugin-sdk/github-copilot-login`, `plugin-sdk/github-copilot-token`, `plugin-sdk/diagnostics-otel`, `plugin-sdk/diffs`, `plugin-sdk/llm-task`, `plugin-sdk/thread-ownership`, `plugin-sdk/voice-call` | Ścieżki helperów dla bundled funkcji/pluginów; `plugin-sdk/github-copilot-token` obecnie eksportuje `DEFAULT_COPILOT_API_BASE_URL`, `deriveCopilotApiBaseUrlFromToken` i `resolveCopilotApiToken` |
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
@ -310,58 +324,58 @@ metodami:
|
||||
|
||||
### Rejestracja możliwości
|
||||
|
||||
| Metoda | Co rejestruje |
|
||||
| Method | Co rejestruje |
|
||||
| ------------------------------------------------ | ------------------------------------- |
|
||||
| `api.registerProvider(...)` | Inferencję tekstową (LLM) |
|
||||
| `api.registerAgentHarness(...)` | Eksperymentalny niskopoziomowy wykonawca agenta |
|
||||
| `api.registerCliBackend(...)` | Lokalny backend inferencji CLI |
|
||||
| `api.registerChannel(...)` | Kanał komunikacyjny |
|
||||
| `api.registerSpeechProvider(...)` | Syntezę tekst-na-mowę / STT |
|
||||
| `api.registerRealtimeTranscriptionProvider(...)` | Strumieniową transkrypcję w czasie rzeczywistym |
|
||||
| `api.registerProvider(...)` | Wnioskowanie tekstowe (LLM) |
|
||||
| `api.registerAgentHarness(...)` | Eksperymentalny niskopoziomowy executor agenta |
|
||||
| `api.registerCliBackend(...)` | Lokalny backend wnioskowania CLI |
|
||||
| `api.registerChannel(...)` | Kanał wiadomości |
|
||||
| `api.registerSpeechProvider(...)` | Synteza tekst-na-mowę / STT |
|
||||
| `api.registerRealtimeTranscriptionProvider(...)` | Strumieniowa transkrypcja w czasie rzeczywistym |
|
||||
| `api.registerRealtimeVoiceProvider(...)` | Dwukierunkowe sesje głosowe w czasie rzeczywistym |
|
||||
| `api.registerMediaUnderstandingProvider(...)` | Analizę obrazów/audio/wideo |
|
||||
| `api.registerMediaUnderstandingProvider(...)` | Analiza obrazów/audio/wideo |
|
||||
| `api.registerImageGenerationProvider(...)` | Generowanie obrazów |
|
||||
| `api.registerMusicGenerationProvider(...)` | Generowanie muzyki |
|
||||
| `api.registerVideoGenerationProvider(...)` | Generowanie wideo |
|
||||
| `api.registerWebFetchProvider(...)` | Dostawcę web fetch / scrape |
|
||||
| `api.registerWebFetchProvider(...)` | Dostawca web fetch / scrape |
|
||||
| `api.registerWebSearchProvider(...)` | Wyszukiwanie w sieci |
|
||||
|
||||
### Narzędzia i komendy
|
||||
|
||||
| Metoda | Co rejestruje |
|
||||
| Method | Co rejestruje |
|
||||
| ------------------------------- | --------------------------------------------- |
|
||||
| `api.registerTool(tool, opts?)` | Narzędzie agenta (wymagane lub `{ optional: true }`) |
|
||||
| `api.registerCommand(def)` | Komendę niestandardową (z pominięciem LLM) |
|
||||
| `api.registerCommand(def)` | Komenda niestandardowa (omija LLM) |
|
||||
|
||||
### Infrastruktura
|
||||
|
||||
| Metoda | Co rejestruje |
|
||||
| Method | Co rejestruje |
|
||||
| ---------------------------------------------- | --------------------------------------- |
|
||||
| `api.registerHook(events, handler, opts?)` | Hook zdarzeń |
|
||||
| `api.registerHttpRoute(params)` | Punkt końcowy HTTP Gateway |
|
||||
| `api.registerGatewayMethod(name, handler)` | Metodę RPC Gateway |
|
||||
| `api.registerCli(registrar, opts?)` | Podkomendę CLI |
|
||||
| `api.registerService(service)` | Usługę działającą w tle |
|
||||
| `api.registerInteractiveHandler(registration)` | Interaktywny handler |
|
||||
| `api.registerMemoryPromptSupplement(builder)` | Dodatkową sekcję promptu związaną z pamięcią |
|
||||
| `api.registerMemoryCorpusSupplement(adapter)` | Dodatkowy korpus pamięci do wyszukiwania/odczytu |
|
||||
| `api.registerHttpRoute(params)` | Endpoint HTTP Gateway |
|
||||
| `api.registerGatewayMethod(name, handler)` | Metoda RPC Gateway |
|
||||
| `api.registerCli(registrar, opts?)` | Podkomenda CLI |
|
||||
| `api.registerService(service)` | Usługa działająca w tle |
|
||||
| `api.registerInteractiveHandler(registration)` | Handler interaktywny |
|
||||
| `api.registerMemoryPromptSupplement(builder)` | Dodatkowa sekcja promptu powiązana z pamięcią |
|
||||
| `api.registerMemoryCorpusSupplement(adapter)` | Dodatkowy korpus wyszukiwania/odczytu pamięci |
|
||||
|
||||
Zastrzeżone przestrzenie nazw administracyjnych core (`config.*`, `exec.approvals.*`, `wizard.*`,
|
||||
Zastrzeżone przestrzenie nazw administracyjnych rdzenia (`config.*`, `exec.approvals.*`, `wizard.*`,
|
||||
`update.*`) zawsze pozostają `operator.admin`, nawet jeśli plugin próbuje przypisać
|
||||
węższy zakres metody Gateway. Dla
|
||||
metod należących do pluginu preferuj prefiksy specyficzne dla pluginu.
|
||||
|
||||
### Metadane rejestracji CLI
|
||||
|
||||
`api.registerCli(registrar, opts?)` akceptuje dwa rodzaje metadanych najwyższego poziomu:
|
||||
`api.registerCli(registrar, opts?)` przyjmuje dwa rodzaje metadanych najwyższego poziomu:
|
||||
|
||||
- `commands`: jawne korzenie komend należące do rejestratora
|
||||
- `descriptors`: deskryptory komend czasu parsowania używane dla głównej pomocy CLI,
|
||||
- `commands`: jawne korzenie komend należące do registrar
|
||||
- `descriptors`: deskryptory komend na etapie parsowania używane do pomocy głównego CLI,
|
||||
routingu i leniwej rejestracji CLI pluginu
|
||||
|
||||
Jeśli chcesz, aby komenda pluginu pozostała leniwie ładowana w zwykłej ścieżce głównego CLI,
|
||||
Jeśli chcesz, aby komenda pluginu pozostawała leniwie ładowana w zwykłej ścieżce głównego CLI,
|
||||
podaj `descriptors`, które obejmują każdy korzeń komendy najwyższego poziomu udostępniany przez ten
|
||||
rejestrator.
|
||||
registrar.
|
||||
|
||||
```typescript
|
||||
api.registerCli(
|
||||
@ -381,85 +395,84 @@ api.registerCli(
|
||||
);
|
||||
```
|
||||
|
||||
Używaj samego `commands` tylko wtedy, gdy nie potrzebujesz leniwej rejestracji w głównym CLI.
|
||||
Używaj samego `commands` tylko wtedy, gdy nie potrzebujesz leniwej rejestracji głównego CLI.
|
||||
Ta zgodnościowa ścieżka eager nadal jest wspierana, ale nie instaluje
|
||||
placeholderów opartych na deskryptorach do leniwego ładowania w czasie parsowania.
|
||||
placeholderów opartych na deskryptorach do leniwego ładowania na etapie parsowania.
|
||||
|
||||
### Rejestracja backendu CLI
|
||||
|
||||
`api.registerCliBackend(...)` pozwala pluginowi przejąć domyślną konfigurację dla lokalnego
|
||||
`api.registerCliBackend(...)` pozwala pluginowi zarządzać domyślną konfiguracją lokalnego
|
||||
backendu CLI AI, takiego jak `codex-cli`.
|
||||
|
||||
- `id` backendu staje się prefiksem dostawcy w odwołaniach do modeli takich jak `codex-cli/gpt-5`.
|
||||
- `id` backendu staje się prefiksem dostawcy w odwołaniach do modeli, takich jak `codex-cli/gpt-5`.
|
||||
- `config` backendu używa tego samego kształtu co `agents.defaults.cliBackends.<id>`.
|
||||
- Konfiguracja użytkownika nadal ma pierwszeństwo. OpenClaw scala `agents.defaults.cliBackends.<id>` z domyślną konfiguracją
|
||||
pluginu przed uruchomieniem CLI.
|
||||
- Konfiguracja użytkownika nadal ma pierwszeństwo. OpenClaw scala `agents.defaults.cliBackends.<id>` z domyślną konfiguracją pluginu przed uruchomieniem CLI.
|
||||
- Użyj `normalizeConfig`, gdy backend potrzebuje przepisania zgodności po scaleniu
|
||||
(na przykład normalizacji starych kształtów flag).
|
||||
|
||||
### Sloty wyłączne
|
||||
### Wyłączne sloty
|
||||
|
||||
| Metoda | Co rejestruje |
|
||||
| Method | Co rejestruje |
|
||||
| ------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `api.registerContextEngine(id, factory)` | Silnik kontekstu (aktywny może być tylko jeden naraz). Callback `assemble()` otrzymuje `availableTools` i `citationsMode`, aby silnik mógł dopasować dodatki do promptu. |
|
||||
| `api.registerMemoryCapability(capability)` | Ujednoliconą możliwość pamięci |
|
||||
| `api.registerMemoryPromptSection(builder)` | Konstruktor sekcji promptu pamięci |
|
||||
| `api.registerMemoryFlushPlan(resolver)` | Resolver planu opróżniania pamięci |
|
||||
| `api.registerMemoryRuntime(runtime)` | Adapter runtime pamięci |
|
||||
| `api.registerContextEngine(id, factory)` | Silnik kontekstu (aktywny tylko jeden naraz). Callback `assemble()` otrzymuje `availableTools` i `citationsMode`, aby silnik mógł dostosować dodatki do promptu. |
|
||||
| `api.registerMemoryCapability(capability)` | Ujednolicona możliwość pamięci |
|
||||
| `api.registerMemoryPromptSection(builder)` | Konstruktor sekcji promptu pamięci |
|
||||
| `api.registerMemoryFlushPlan(resolver)` | Resolver planu opróżniania pamięci |
|
||||
| `api.registerMemoryRuntime(runtime)` | Adapter runtime pamięci |
|
||||
|
||||
### Adaptery embeddingów pamięci
|
||||
|
||||
| Metoda | Co rejestruje |
|
||||
| ---------------------------------------------- | ---------------------------------------------- |
|
||||
| Method | Co rejestruje |
|
||||
| ---------------------------------------------- | ------------------------------------------ |
|
||||
| `api.registerMemoryEmbeddingProvider(adapter)` | Adapter embeddingów pamięci dla aktywnego pluginu |
|
||||
|
||||
- `registerMemoryCapability` to preferowane wyłączne API pluginu pamięci.
|
||||
- `registerMemoryCapability` może także udostępniać `publicArtifacts.listArtifacts(...)`,
|
||||
aby pluginy towarzyszące mogły korzystać z eksportowanych artefaktów pamięci przez
|
||||
`openclaw/plugin-sdk/memory-host-core`, zamiast sięgać do prywatnego układu
|
||||
`openclaw/plugin-sdk/memory-host-core` zamiast sięgać do prywatnego układu
|
||||
konkretnego pluginu pamięci.
|
||||
- `registerMemoryPromptSection`, `registerMemoryFlushPlan` i
|
||||
`registerMemoryRuntime` to zgodnościowe starsze wyłączne API pluginu pamięci.
|
||||
- `registerMemoryEmbeddingProvider` pozwala aktywnemu pluginowi pamięci rejestrować jeden
|
||||
lub więcej identyfikatorów adapterów embeddingów (na przykład `openai`, `gemini` lub niestandardowy
|
||||
identyfikator zdefiniowany przez plugin).
|
||||
- `registerMemoryPromptSection`, `registerMemoryFlushPlan` oraz
|
||||
`registerMemoryRuntime` to starsze, zgodnościowe wyłączne API pluginów pamięci.
|
||||
- `registerMemoryEmbeddingProvider` pozwala aktywnemu pluginowi pamięci zarejestrować jeden
|
||||
lub więcej identyfikatorów adapterów embeddingów (na przykład `openai`, `gemini` lub
|
||||
niestandardowy identyfikator zdefiniowany przez plugin).
|
||||
- Konfiguracja użytkownika, taka jak `agents.defaults.memorySearch.provider` i
|
||||
`agents.defaults.memorySearch.fallback`, jest rozstrzygana względem tych zarejestrowanych
|
||||
`agents.defaults.memorySearch.fallback`, jest rozwiązywana względem tych zarejestrowanych
|
||||
identyfikatorów adapterów.
|
||||
|
||||
### Zdarzenia i cykl życia
|
||||
|
||||
| Metoda | Co robi |
|
||||
| -------------------------------------------- | --------------------------- |
|
||||
| `api.on(hookName, handler, opts?)` | Typowany hook cyklu życia |
|
||||
| `api.onConversationBindingResolved(handler)` | Callback rozstrzygnięcia wiązania konwersacji |
|
||||
| Method | Co robi |
|
||||
| -------------------------------------------- | ---------------------------- |
|
||||
| `api.on(hookName, handler, opts?)` | Typowany hook cyklu życia |
|
||||
| `api.onConversationBindingResolved(handler)` | Callback rozwiązania powiązania konwersacji |
|
||||
|
||||
### Semantyka decyzji hooków
|
||||
|
||||
- `before_tool_call`: zwrócenie `{ block: true }` jest rozstrzygające. Gdy dowolny handler to ustawi, handlery o niższym priorytecie są pomijane.
|
||||
- `before_tool_call`: zwrócenie `{ block: true }` jest końcowe. Gdy dowolny handler to ustawi, handlery o niższym priorytecie są pomijane.
|
||||
- `before_tool_call`: zwrócenie `{ block: false }` jest traktowane jako brak decyzji (tak samo jak pominięcie `block`), a nie jako nadpisanie.
|
||||
- `before_install`: zwrócenie `{ block: true }` jest rozstrzygające. Gdy dowolny handler to ustawi, handlery o niższym priorytecie są pomijane.
|
||||
- `before_install`: zwrócenie `{ block: true }` jest końcowe. Gdy dowolny handler to ustawi, handlery o niższym priorytecie są pomijane.
|
||||
- `before_install`: zwrócenie `{ block: false }` jest traktowane jako brak decyzji (tak samo jak pominięcie `block`), a nie jako nadpisanie.
|
||||
- `reply_dispatch`: zwrócenie `{ handled: true, ... }` jest rozstrzygające. Gdy dowolny handler przejmie dyspozycję, handlery o niższym priorytecie i domyślna ścieżka dyspozycji modelu są pomijane.
|
||||
- `message_sending`: zwrócenie `{ cancel: true }` jest rozstrzygające. Gdy dowolny handler to ustawi, handlery o niższym priorytecie są pomijane.
|
||||
- `reply_dispatch`: zwrócenie `{ handled: true, ... }` jest końcowe. Gdy dowolny handler przejmie dispatch, handlery o niższym priorytecie oraz domyślna ścieżka dispatchu modelu są pomijane.
|
||||
- `message_sending`: zwrócenie `{ cancel: true }` jest końcowe. Gdy dowolny handler to ustawi, handlery o niższym priorytecie są pomijane.
|
||||
- `message_sending`: zwrócenie `{ cancel: false }` jest traktowane jako brak decyzji (tak samo jak pominięcie `cancel`), a nie jako nadpisanie.
|
||||
|
||||
### Pola obiektu API
|
||||
|
||||
| Pole | Typ | Opis |
|
||||
| ------------------------ | ------------------------- | ------------------------------------------------------------------------------------------ |
|
||||
| `api.id` | `string` | Identyfikator pluginu |
|
||||
| `api.name` | `string` | Nazwa wyświetlana |
|
||||
| `api.version` | `string?` | Wersja pluginu (opcjonalna) |
|
||||
| `api.description` | `string?` | Opis pluginu (opcjonalny) |
|
||||
| `api.source` | `string` | Ścieżka źródłowa pluginu |
|
||||
| `api.rootDir` | `string?` | Katalog główny pluginu (opcjonalny) |
|
||||
| `api.config` | `OpenClawConfig` | Bieżąca migawka konfiguracji (aktywny snapshot runtime w pamięci, gdy jest dostępny) |
|
||||
| `api.pluginConfig` | `Record<string, unknown>` | Konfiguracja specyficzna dla pluginu z `plugins.entries.<id>.config` |
|
||||
| `api.runtime` | `PluginRuntime` | [Pomocniki runtime](/pl/plugins/sdk-runtime) |
|
||||
| `api.logger` | `PluginLogger` | Logger o zawężonym zakresie (`debug`, `info`, `warn`, `error`) |
|
||||
| `api.registrationMode` | `PluginRegistrationMode` | Bieżący tryb ładowania; `"setup-runtime"` to lekkie okno uruchamiania/konfiguracji przed pełnym wejściem |
|
||||
| `api.resolvePath(input)` | `(string) => string` | Rozstrzyga ścieżkę względem katalogu głównego pluginu |
|
||||
| Field | Type | Description |
|
||||
| ------------------------ | ------------------------- | ------------------------------------------------------------------------------------------- |
|
||||
| `api.id` | `string` | Identyfikator pluginu |
|
||||
| `api.name` | `string` | Nazwa wyświetlana |
|
||||
| `api.version` | `string?` | Wersja pluginu (opcjonalnie) |
|
||||
| `api.description` | `string?` | Opis pluginu (opcjonalnie) |
|
||||
| `api.source` | `string` | Ścieżka źródłowa pluginu |
|
||||
| `api.rootDir` | `string?` | Katalog główny pluginu (opcjonalnie) |
|
||||
| `api.config` | `OpenClawConfig` | Bieżący zrzut konfiguracji (aktywny zrzut runtime w pamięci, gdy jest dostępny) |
|
||||
| `api.pluginConfig` | `Record<string, unknown>` | Konfiguracja specyficzna dla pluginu z `plugins.entries.<id>.config` |
|
||||
| `api.runtime` | `PluginRuntime` | [Helpery runtime](/pl/plugins/sdk-runtime) |
|
||||
| `api.logger` | `PluginLogger` | Logger z zakresem (`debug`, `info`, `warn`, `error`) |
|
||||
| `api.registrationMode` | `PluginRegistrationMode` | Bieżący tryb ładowania; `"setup-runtime"` to lekkie okno uruchamiania/konfiguracji przed pełnym entry |
|
||||
| `api.resolvePath(input)` | `(string) => string` | Rozwiązywanie ścieżki względem katalogu głównego pluginu |
|
||||
|
||||
## Konwencja modułów wewnętrznych
|
||||
|
||||
@ -468,9 +481,9 @@ W obrębie pluginu używaj lokalnych plików barrel do importów wewnętrznych:
|
||||
```
|
||||
my-plugin/
|
||||
api.ts # Publiczne eksporty dla zewnętrznych odbiorców
|
||||
runtime-api.ts # Eksporty runtime wyłącznie do użytku wewnętrznego
|
||||
runtime-api.ts # Eksporty runtime tylko do użytku wewnętrznego
|
||||
index.ts # Punkt wejścia pluginu
|
||||
setup-entry.ts # Lekki punkt wejścia tylko do konfiguracji (opcjonalny)
|
||||
setup-entry.ts # Lekki entry tylko do konfiguracji (opcjonalnie)
|
||||
```
|
||||
|
||||
<Warning>
|
||||
@ -479,37 +492,37 @@ my-plugin/
|
||||
`./runtime-api.ts`. Ścieżka SDK jest wyłącznie kontraktem zewnętrznym.
|
||||
</Warning>
|
||||
|
||||
Ładowane przez fasadę publiczne powierzchnie pluginów dostarczanych w pakiecie (`api.ts`, `runtime-api.ts`,
|
||||
`index.ts`, `setup-entry.ts` i podobne publiczne pliki wejściowe) preferują teraz
|
||||
aktywną migawkę konfiguracji runtime, gdy OpenClaw już działa. Jeśli migawka runtime
|
||||
nie istnieje jeszcze, wracają do rozstrzygniętego pliku konfiguracji na dysku.
|
||||
Ładowane przez fasadę publiczne powierzchnie bundled pluginów (`api.ts`, `runtime-api.ts`,
|
||||
`index.ts`, `setup-entry.ts` oraz podobne publiczne pliki entry) preferują teraz
|
||||
aktywny zrzut konfiguracji runtime, gdy OpenClaw już działa. Jeśli zrzut runtime
|
||||
nie istnieje jeszcze, wracają do rozwiązanej konfiguracji na dysku.
|
||||
|
||||
Pluginy dostawców mogą także udostępniać wąski lokalny barrel kontraktu pluginu, gdy
|
||||
pomocnik jest celowo specyficzny dla dostawcy i nie należy jeszcze do generycznej podścieżki SDK.
|
||||
Bieżący przykład dostarczany w pakiecie: dostawca Anthropic przechowuje swoje pomocniki
|
||||
strumieni Claude we własnej publicznej warstwie `api.ts` / `contract-api.ts`, zamiast
|
||||
promować logikę nagłówków beta Anthropic i `service_tier` do generycznego
|
||||
kontraktu `plugin-sdk/*`.
|
||||
Pluginy dostawców mogą również udostępniać wąski, lokalny barrel kontraktów pluginu, gdy
|
||||
helper jest celowo specyficzny dla dostawcy i nie należy jeszcze do ogólnej podścieżki SDK.
|
||||
Bieżący bundled przykład: dostawca Anthropic trzyma swoje helpery strumieni Claude
|
||||
we własnej publicznej ścieżce `api.ts` / `contract-api.ts`, zamiast promować logikę
|
||||
nagłówków beta Anthropic i `service_tier` do ogólnego kontraktu
|
||||
`plugin-sdk/*`.
|
||||
|
||||
Inne bieżące przykłady dostarczane w pakiecie:
|
||||
Inne bieżące bundled przykłady:
|
||||
|
||||
- `@openclaw/openai-provider`: `api.ts` eksportuje konstruktory dostawców,
|
||||
pomocniki modeli domyślnych i konstruktory dostawców realtime
|
||||
helpery modeli domyślnych i konstruktory dostawców realtime
|
||||
- `@openclaw/openrouter-provider`: `api.ts` eksportuje konstruktor dostawcy oraz
|
||||
pomocniki onboardingu/konfiguracji
|
||||
helpery onboardingu/konfiguracji
|
||||
|
||||
<Warning>
|
||||
Kod produkcyjny rozszerzeń powinien także unikać importów `openclaw/plugin-sdk/<other-plugin>`.
|
||||
Jeśli pomocnik jest rzeczywiście współdzielony, przenieś go do neutralnej podścieżki SDK,
|
||||
Kod produkcyjny rozszerzeń powinien również unikać importów `openclaw/plugin-sdk/<other-plugin>`.
|
||||
Jeśli helper jest rzeczywiście współdzielony, przenieś go do neutralnej podścieżki SDK,
|
||||
takiej jak `openclaw/plugin-sdk/speech`, `.../provider-model-shared` lub innej
|
||||
powierzchni zorientowanej na możliwości, zamiast ściśle wiązać ze sobą dwa pluginy.
|
||||
powierzchni zorientowanej na możliwości, zamiast wiązać ze sobą dwa pluginy.
|
||||
</Warning>
|
||||
|
||||
## Powiązane
|
||||
|
||||
- [Punkty wejścia](/pl/plugins/sdk-entrypoints) — opcje `definePluginEntry` i `defineChannelPluginEntry`
|
||||
- [Pomocniki runtime](/pl/plugins/sdk-runtime) — pełna dokumentacja przestrzeni nazw `api.runtime`
|
||||
- [Helpery runtime](/pl/plugins/sdk-runtime) — pełny opis przestrzeni nazw `api.runtime`
|
||||
- [Konfiguracja i config](/pl/plugins/sdk-setup) — pakowanie, manifesty, schematy konfiguracji
|
||||
- [Testowanie](/pl/plugins/sdk-testing) — narzędzia testowe i reguły lint
|
||||
- [Migracja SDK](/pl/plugins/sdk-migration) — migracja ze starszych, wycofywanych powierzchni
|
||||
- [Migracja SDK](/pl/plugins/sdk-migration) — migracja z przestarzałych powierzchni
|
||||
- [Wnętrze pluginów](/pl/plugins/architecture) — szczegółowa architektura i model możliwości
|
||||
|
||||
@ -1,34 +1,34 @@
|
||||
---
|
||||
x-i18n:
|
||||
generated_at: "2026-04-08T06:02:00Z"
|
||||
generated_at: "2026-04-18T09:35:21Z"
|
||||
model: gpt-5.4
|
||||
provider: openai
|
||||
source_hash: 4a9066b2a939c5a9ba69141d75405f0e8097997b523164340e2f0e9a0d5060dd
|
||||
source_hash: dbb2c70c82da7f6f12d90e25666635ff4147c52e8a94135e902d1de4f5cbccca
|
||||
source_path: refactor/qa.md
|
||||
workflow: 15
|
||||
---
|
||||
|
||||
# Refaktoryzacja QA
|
||||
|
||||
Status: podstawowa migracja została wdrożona.
|
||||
Status: migracja fundamentalna została wdrożona.
|
||||
|
||||
## Cel
|
||||
|
||||
Przenieść QA OpenClaw z modelu podzielonych definicji do jednego źródła prawdy:
|
||||
Przenieść QA OpenClaw z modelu rozdzielonych definicji do jednego źródła prawdy dla:
|
||||
|
||||
- metadane scenariuszy
|
||||
- prompty wysyłane do modelu
|
||||
- konfiguracja początkowa i końcowa
|
||||
- logika harnessu
|
||||
- asercje i kryteria powodzenia
|
||||
- artefakty i wskazówki do raportów
|
||||
- metadanych scenariusza
|
||||
- promptów wysyłanych do modelu
|
||||
- konfiguracji i teardown
|
||||
- logiki harnessu
|
||||
- asercji i kryteriów sukcesu
|
||||
- artefaktów i wskazówek do raportów
|
||||
|
||||
Docelowym stanem ma być generyczny harness QA, który wczytuje rozbudowane pliki definicji scenariuszy zamiast kodować większość zachowań na sztywno w TypeScript.
|
||||
Pożądanym stanem końcowym jest generyczny harness QA, który ładuje rozbudowane pliki definicji scenariuszy zamiast hardcodować większość zachowań w TypeScript.
|
||||
|
||||
## Stan obecny
|
||||
|
||||
Główne źródło prawdy znajduje się teraz w `qa/scenarios/index.md` oraz w jednym pliku
|
||||
na scenariusz w `qa/scenarios/*.md`.
|
||||
Główne źródło prawdy znajduje się teraz w `qa/scenarios/index.md` oraz po jednym pliku na
|
||||
scenariusz w `qa/scenarios/<theme>/*.md`.
|
||||
|
||||
Wdrożone:
|
||||
|
||||
@ -36,104 +36,104 @@ Wdrożone:
|
||||
- kanoniczne metadane pakietu QA
|
||||
- tożsamość operatora
|
||||
- misja startowa
|
||||
- `qa/scenarios/*.md`
|
||||
- jeden plik Markdown na scenariusz
|
||||
- `qa/scenarios/<theme>/*.md`
|
||||
- jeden plik markdown na scenariusz
|
||||
- metadane scenariusza
|
||||
- powiązania handlerów
|
||||
- konfiguracja wykonania specyficzna dla scenariusza
|
||||
- `extensions/qa-lab/src/scenario-catalog.ts`
|
||||
- parser pakietu Markdown + walidacja zod
|
||||
- parser pakietu markdown + walidacja zod
|
||||
- `extensions/qa-lab/src/qa-agent-bootstrap.ts`
|
||||
- renderowanie planu z pakietu Markdown
|
||||
- renderowanie planu z pakietu markdown
|
||||
- `extensions/qa-lab/src/qa-agent-workspace.ts`
|
||||
- seeduje wygenerowane pliki zgodności oraz `QA_SCENARIOS.md`
|
||||
- `extensions/qa-lab/src/suite.ts`
|
||||
- wybiera wykonywalne scenariusze przez zdefiniowane w Markdown powiązania handlerów
|
||||
- Protokół magistrali QA + UI
|
||||
- generyczne osadzone załączniki do renderowania obrazów/wideo/audio/plików
|
||||
- wybiera wykonywalne scenariusze przez powiązania handlerów zdefiniowane w markdown
|
||||
- protokół magistrali QA + UI
|
||||
- generyczne załączniki inline do renderowania obrazów/wideo/audio/plików
|
||||
|
||||
Pozostałe rozdzielone powierzchnie:
|
||||
|
||||
- `extensions/qa-lab/src/suite.ts`
|
||||
- nadal zawiera większość wykonywalnej niestandardowej logiki handlerów
|
||||
- nadal zawiera większość wykonywalnej logiki niestandardowych handlerów
|
||||
- `extensions/qa-lab/src/report.ts`
|
||||
- nadal wyprowadza strukturę raportu na podstawie wyników wykonania
|
||||
- nadal wyprowadza strukturę raportu z wyników runtime
|
||||
|
||||
Czyli podział źródła prawdy został naprawiony, ale wykonanie nadal jest w większości oparte na handlerach zamiast w pełni deklaratywne.
|
||||
Rozdzielenie źródła prawdy zostało więc naprawione, ale wykonanie nadal jest w większości oparte na handlerach, a nie w pełni deklaratywne.
|
||||
|
||||
## Jak naprawdę wygląda powierzchnia scenariuszy
|
||||
## Jak wygląda rzeczywista powierzchnia scenariuszy
|
||||
|
||||
Odczyt obecnego suite pokazuje kilka odrębnych klas scenariuszy.
|
||||
Odczyt bieżącego suite pokazuje kilka odrębnych klas scenariuszy.
|
||||
|
||||
### Prosta interakcja
|
||||
|
||||
- bazowy kanał
|
||||
- bazowa DM
|
||||
- wątkowana kontynuacja
|
||||
- przełączenie modelu
|
||||
- dokończenie po zatwierdzeniu
|
||||
- bazowy DM
|
||||
- dalszy ciąg w wątku
|
||||
- przełączanie modelu
|
||||
- doprowadzenie zatwierdzenia do końca
|
||||
- reakcja/edycja/usunięcie
|
||||
|
||||
### Mutacja konfiguracji i środowiska uruchomieniowego
|
||||
### Mutacja konfiguracji i runtime
|
||||
|
||||
- wyłączenie umiejętności przez poprawkę konfiguracji
|
||||
- config patch skill disable
|
||||
- config apply restart wake-up
|
||||
- zmiana możliwości po restarcie konfiguracji
|
||||
- sprawdzenie dryfu inwentarza runtime
|
||||
- config restart capability flip
|
||||
- runtime inventory drift check
|
||||
|
||||
### Asercje dotyczące systemu plików i repozytorium
|
||||
### Asercje systemu plików i repozytorium
|
||||
|
||||
- raport odkrywania źródeł/dokumentacji
|
||||
- zbudowanie Lobster Invaders
|
||||
- wyszukiwanie wygenerowanego artefaktu obrazu
|
||||
- source/docs discovery report
|
||||
- build Lobster Invaders
|
||||
- generated image artifact lookup
|
||||
|
||||
### Orkiestracja pamięci
|
||||
|
||||
- przywołanie pamięci
|
||||
- narzędzia pamięci w kontekście kanału
|
||||
- awaryjny fallback pamięci
|
||||
- ranking pamięci sesji
|
||||
- izolacja pamięci wątku
|
||||
- przebieg śnienia pamięci
|
||||
- memory recall
|
||||
- memory tools in channel context
|
||||
- memory failure fallback
|
||||
- session memory ranking
|
||||
- thread memory isolation
|
||||
- memory dreaming sweep
|
||||
|
||||
### Integracja narzędzi i pluginów
|
||||
### Integracja narzędzi i Plugin
|
||||
|
||||
- wywołanie MCP plugin-tools
|
||||
- widoczność Skills
|
||||
- hot install umiejętności
|
||||
- natywne generowanie obrazów
|
||||
- roundtrip obrazu
|
||||
- rozumienie obrazu z załącznika
|
||||
- MCP plugin-tools call
|
||||
- skill visibility
|
||||
- skill hot install
|
||||
- native image generation
|
||||
- image roundtrip
|
||||
- image understanding from attachment
|
||||
|
||||
### Wieloturowe i wieloosobowe
|
||||
### Wiele tur i wielu aktorów
|
||||
|
||||
- przekazanie do subagenta
|
||||
- synteza fanout subagentów
|
||||
- przepływy w stylu odzyskiwania po restarcie
|
||||
- subagent handoff
|
||||
- subagent fanout synthesis
|
||||
- flows w stylu restart recovery
|
||||
|
||||
Te kategorie są ważne, ponieważ wyznaczają wymagania DSL. Płaska lista promptów + oczekiwanego tekstu nie wystarczy.
|
||||
Te kategorie mają znaczenie, ponieważ determinują wymagania DSL. Płaska lista prompt + oczekiwany tekst nie wystarczy.
|
||||
|
||||
## Kierunek
|
||||
|
||||
### Jedno źródło prawdy
|
||||
|
||||
Używać `qa/scenarios/index.md` oraz `qa/scenarios/*.md` jako redagowanego źródła
|
||||
prawdy.
|
||||
Używaj `qa/scenarios/index.md` oraz `qa/scenarios/<theme>/*.md` jako autorskiego
|
||||
źródła prawdy.
|
||||
|
||||
Pakiet powinien pozostać:
|
||||
|
||||
- czytelny dla człowieka w przeglądzie
|
||||
- czytelny dla człowieka w review
|
||||
- parsowalny maszynowo
|
||||
- wystarczająco bogaty, by napędzać:
|
||||
- wykonywanie suite
|
||||
- bootstrap przestrzeni roboczej QA
|
||||
- wystarczająco bogaty, aby obsługiwać:
|
||||
- wykonanie suite
|
||||
- bootstrap obszaru roboczego QA
|
||||
- metadane UI QA Lab
|
||||
- prompty dokumentacji/odkrywania
|
||||
- prompty docs/discovery
|
||||
- generowanie raportów
|
||||
|
||||
### Preferowany format redagowania
|
||||
### Preferowany format autorski
|
||||
|
||||
Używać Markdown jako formatu najwyższego poziomu, ze strukturalnym YAML wewnątrz.
|
||||
Używaj markdown jako formatu najwyższego poziomu, ze strukturalnym YAML w środku.
|
||||
|
||||
Zalecany kształt:
|
||||
|
||||
@ -144,25 +144,25 @@ Zalecany kształt:
|
||||
- tags
|
||||
- docs refs
|
||||
- code refs
|
||||
- nadpisania modelu/dostawcy
|
||||
- wymagania wstępne
|
||||
- sekcje opisowe
|
||||
- cel
|
||||
- uwagi
|
||||
- wskazówki debugowania
|
||||
- model/provider overrides
|
||||
- prerequisites
|
||||
- sekcje prozy
|
||||
- objective
|
||||
- notes
|
||||
- debugging hints
|
||||
- ogrodzone bloki YAML
|
||||
- setup
|
||||
- steps
|
||||
- assertions
|
||||
- cleanup
|
||||
|
||||
Daje to:
|
||||
To daje:
|
||||
|
||||
- lepszą czytelność PR niż ogromny JSON
|
||||
- bogatszy kontekst niż czysty YAML
|
||||
- ścisłe parsowanie i walidację zod
|
||||
|
||||
Surowy JSON jest akceptowalny tylko jako pośrednia forma generowana.
|
||||
Surowy JSON jest akceptowalny tylko jako pośrednia forma wygenerowana.
|
||||
|
||||
## Proponowany kształt pliku scenariusza
|
||||
|
||||
@ -239,9 +239,9 @@ Verify generated media is reattached on the follow-up turn.
|
||||
|
||||
## Możliwości runnera, które DSL musi obejmować
|
||||
|
||||
Na podstawie obecnego suite generyczny runner potrzebuje czegoś więcej niż wykonywania promptów.
|
||||
Na podstawie bieżącego suite generyczny runner potrzebuje więcej niż wykonywania promptów.
|
||||
|
||||
### Akcje środowiskowe i konfiguracyjne
|
||||
### Akcje środowiska i konfiguracji
|
||||
|
||||
- `bus.reset`
|
||||
- `gateway.waitHealthy`
|
||||
@ -266,7 +266,7 @@ Na podstawie obecnego suite generyczny runner potrzebuje czegoś więcej niż wy
|
||||
- `tools.effective`
|
||||
- `skills.status`
|
||||
|
||||
### Akcje na plikach i artefaktach
|
||||
### Akcje plików i artefaktów
|
||||
|
||||
- `file.write`
|
||||
- `file.read`
|
||||
@ -275,7 +275,7 @@ Na podstawie obecnego suite generyczny runner potrzebuje czegoś więcej niż wy
|
||||
- `artifact.captureGeneratedImage`
|
||||
- `artifact.capturePath`
|
||||
|
||||
### Akcje pamięci i crona
|
||||
### Akcje pamięci i Cron
|
||||
|
||||
- `memory.indexForce`
|
||||
- `memory.searchCli`
|
||||
@ -305,66 +305,66 @@ Na podstawie obecnego suite generyczny runner potrzebuje czegoś więcej niż wy
|
||||
- `cron.managedPresent`
|
||||
- `artifact.exists`
|
||||
|
||||
## Zmienne i odwołania do artefaktów
|
||||
## Zmienne i referencje do artefaktów
|
||||
|
||||
DSL musi obsługiwać zapisane wyniki i późniejsze odwołania.
|
||||
DSL musi obsługiwać zapisane wyjścia i późniejsze referencje.
|
||||
|
||||
Przykłady z obecnego suite:
|
||||
Przykłady z bieżącego suite:
|
||||
|
||||
- utworzyć wątek, a potem ponownie użyć `threadId`
|
||||
- utworzyć sesję, a potem ponownie użyć `sessionKey`
|
||||
- wygenerować obraz, a następnie dołączyć plik w kolejnej turze
|
||||
- wygenerować ciąg znacznika wybudzenia, a następnie sprawdzić, że pojawia się później
|
||||
- utworzyć wątek, a następnie ponownie użyć `threadId`
|
||||
- utworzyć sesję, a następnie ponownie użyć `sessionKey`
|
||||
- wygenerować obraz, a następnie dołączyć plik w następnej turze
|
||||
- wygenerować ciąg wake marker, a następnie sprawdzić, czy pojawi się później
|
||||
|
||||
Potrzebne możliwości:
|
||||
|
||||
- `saveAs`
|
||||
- `${vars.name}`
|
||||
- `${artifacts.name}`
|
||||
- typowane odwołania do ścieżek, kluczy sesji, identyfikatorów wątków, znaczników, wyników narzędzi
|
||||
- typowane referencje dla ścieżek, kluczy sesji, identyfikatorów wątków, markerów, wyjść narzędzi
|
||||
|
||||
Bez obsługi zmiennych harness będzie dalej przeciekał logiką scenariuszy z powrotem do TypeScript.
|
||||
Bez obsługi zmiennych harness będzie nadal wypychał logikę scenariuszy z powrotem do TypeScript.
|
||||
|
||||
## Co powinno pozostać furtkami awaryjnymi
|
||||
## Co powinno pozostać jako escape hatches
|
||||
|
||||
W fazie 1 w pełni czysto deklaratywny runner nie jest realistyczny.
|
||||
W pełni czysto deklaratywny runner nie jest realistyczny w fazie 1.
|
||||
|
||||
Niektóre scenariusze są z natury silnie orkiestracyjne:
|
||||
Niektóre scenariusze z natury wymagają cięższej orkiestracji:
|
||||
|
||||
- przebieg śnienia pamięci
|
||||
- memory dreaming sweep
|
||||
- config apply restart wake-up
|
||||
- config restart capability flip
|
||||
- rozwiązywanie wygenerowanego artefaktu obrazu po znaczniku czasu/ścieżce
|
||||
- ocena discovery-report
|
||||
- generated image artifact resolution by timestamp/path
|
||||
- discovery-report evaluation
|
||||
|
||||
Na razie powinny używać jawnych niestandardowych handlerów.
|
||||
Na razie powinny one używać jawnych niestandardowych handlerów.
|
||||
|
||||
Zalecana reguła:
|
||||
Zalecana zasada:
|
||||
|
||||
- 85-90% deklaratywnie
|
||||
- jawne kroki `customHandler` dla trudnej reszty
|
||||
- tylko nazwane i udokumentowane niestandardowe handlery
|
||||
- bez anonimowego kodu inline w pliku scenariusza
|
||||
- jawne kroki `customHandler` dla trudnej pozostałości
|
||||
- tylko nazwane i udokumentowane custom handlery
|
||||
- brak anonimowego kodu inline w pliku scenariusza
|
||||
|
||||
To utrzymuje generyczny silnik w czystości, a jednocześnie pozwala nadal robić postępy.
|
||||
To utrzymuje generyczny silnik w czystości, a jednocześnie pozwala iść naprzód.
|
||||
|
||||
## Zmiana architektury
|
||||
|
||||
### Obecnie
|
||||
|
||||
Markdown scenariuszy jest już źródłem prawdy dla:
|
||||
Markdown scenariusza jest już źródłem prawdy dla:
|
||||
|
||||
- wykonywania suite
|
||||
- plików bootstrap przestrzeni roboczej
|
||||
- wykonania suite
|
||||
- plików bootstrap obszaru roboczego
|
||||
- katalogu scenariuszy UI QA Lab
|
||||
- metadanych raportów
|
||||
- promptów discovery
|
||||
|
||||
Wygenerowana zgodność:
|
||||
|
||||
- seedowana przestrzeń robocza nadal zawiera `QA_KICKOFF_TASK.md`
|
||||
- seedowana przestrzeń robocza nadal zawiera `QA_SCENARIO_PLAN.md`
|
||||
- seedowana przestrzeń robocza zawiera teraz także `QA_SCENARIOS.md`
|
||||
- seedowany obszar roboczy nadal zawiera `QA_KICKOFF_TASK.md`
|
||||
- seedowany obszar roboczy nadal zawiera `QA_SCENARIO_PLAN.md`
|
||||
- seedowany obszar roboczy zawiera teraz także `QA_SCENARIOS.md`
|
||||
|
||||
## Plan refaktoryzacji
|
||||
|
||||
@ -373,69 +373,69 @@ Wygenerowana zgodność:
|
||||
Gotowe.
|
||||
|
||||
- dodano `qa/scenarios/index.md`
|
||||
- rozdzielono scenariusze do `qa/scenarios/*.md`
|
||||
- dodano parser dla nazwanej zawartości pakietu Markdown YAML
|
||||
- rozdzielono scenariusze do `qa/scenarios/<theme>/*.md`
|
||||
- dodano parser nazwanej zawartości pakietu markdown YAML
|
||||
- zwalidowano za pomocą zod
|
||||
- przełączono konsumentów na sparsowany pakiet
|
||||
- usunięto repozytoryjne `qa/seed-scenarios.json` oraz `qa/QA_KICKOFF_TASK.md`
|
||||
- usunięto repo-level `qa/seed-scenarios.json` oraz `qa/QA_KICKOFF_TASK.md`
|
||||
|
||||
### Faza 2: silnik generyczny
|
||||
### Faza 2: generyczny silnik
|
||||
|
||||
- podzielić `extensions/qa-lab/src/suite.ts` na:
|
||||
- rozdziel `extensions/qa-lab/src/suite.ts` na:
|
||||
- loader
|
||||
- engine
|
||||
- silnik
|
||||
- rejestr akcji
|
||||
- rejestr asercji
|
||||
- niestandardowe handlery
|
||||
- zachować istniejące funkcje pomocnicze jako operacje silnika
|
||||
- custom handlery
|
||||
- zachowaj istniejące funkcje pomocnicze jako operacje silnika
|
||||
|
||||
Rezultat:
|
||||
|
||||
- silnik wykonuje proste scenariusze deklaratywne
|
||||
|
||||
Zacząć od scenariuszy, które w większości sprowadzają się do prompt + wait + assert:
|
||||
Zacznij od scenariuszy, które są głównie prompt + wait + assert:
|
||||
|
||||
- wątkowana kontynuacja
|
||||
- rozumienie obrazu z załącznika
|
||||
- widoczność i wywoływanie umiejętności
|
||||
- bazowy kanał
|
||||
- threaded follow-up
|
||||
- image understanding from attachment
|
||||
- skill visibility and invocation
|
||||
- channel baseline
|
||||
|
||||
Rezultat:
|
||||
|
||||
- pierwsze rzeczywiste scenariusze zdefiniowane w Markdown dostarczane przez generyczny silnik
|
||||
- pierwsze rzeczywiste scenariusze zdefiniowane w markdown dostarczane przez generyczny silnik
|
||||
|
||||
### Faza 4: migracja scenariuszy średniej trudności
|
||||
|
||||
- roundtrip generowania obrazu
|
||||
- narzędzia pamięci w kontekście kanału
|
||||
- ranking pamięci sesji
|
||||
- przekazanie do subagenta
|
||||
- synteza fanout subagentów
|
||||
- image generation roundtrip
|
||||
- memory tools in channel context
|
||||
- session memory ranking
|
||||
- subagent handoff
|
||||
- subagent fanout synthesis
|
||||
|
||||
Rezultat:
|
||||
|
||||
- sprawdzone zmienne, artefakty, asercje narzędzi oraz asercje request-log
|
||||
- udowodnione zmienne, artefakty, asercje narzędzi i asercje request-log
|
||||
|
||||
### Faza 5: pozostawić trudne scenariusze na niestandardowych handlerach
|
||||
### Faza 5: pozostawienie trudnych scenariuszy na custom handlerach
|
||||
|
||||
- przebieg śnienia pamięci
|
||||
- memory dreaming sweep
|
||||
- config apply restart wake-up
|
||||
- config restart capability flip
|
||||
- dryf inwentarza runtime
|
||||
- runtime inventory drift
|
||||
|
||||
Rezultat:
|
||||
|
||||
- ten sam format redagowania, ale z jawnymi blokami niestandardowych kroków tam, gdzie są potrzebne
|
||||
- ten sam format autorski, ale z jawnymi blokami custom-step tam, gdzie to potrzebne
|
||||
|
||||
### Faza 6: usunięcie zakodowanej na sztywno mapy scenariuszy
|
||||
### Faza 6: usunięcie hardcodowanej mapy scenariuszy
|
||||
|
||||
Gdy pokrycie pakietu będzie wystarczająco dobre:
|
||||
|
||||
- usunąć większość rozgałęzień TypeScript specyficznych dla scenariuszy z `extensions/qa-lab/src/suite.ts`
|
||||
- usuń większość branchingu TypeScript specyficznego dla scenariuszy z `extensions/qa-lab/src/suite.ts`
|
||||
|
||||
## Fake Slack / obsługa bogatych mediów
|
||||
## Obsługa fake Slack / rich media
|
||||
|
||||
Obecna magistrala QA jest zorientowana głównie na tekst.
|
||||
Obecna magistrala QA jest zorientowana przede wszystkim na tekst.
|
||||
|
||||
Istotne pliki:
|
||||
|
||||
@ -445,17 +445,17 @@ Istotne pliki:
|
||||
- `extensions/qa-lab/src/bus-server.ts`
|
||||
- `extensions/qa-lab/web/src/ui-render.ts`
|
||||
|
||||
Obecnie magistrala QA obsługuje:
|
||||
Dziś magistrala QA obsługuje:
|
||||
|
||||
- tekst
|
||||
- reakcje
|
||||
- wątki
|
||||
|
||||
Nie modeluje jeszcze osadzonych załączników multimedialnych.
|
||||
Nie modeluje jeszcze załączników multimedialnych inline.
|
||||
|
||||
### Potrzebny kontrakt transportowy
|
||||
|
||||
Dodać generyczny model załączników magistrali QA:
|
||||
Dodaj generyczny model załączników magistrali QA:
|
||||
|
||||
```ts
|
||||
type QaBusAttachment = {
|
||||
@ -474,7 +474,7 @@ type QaBusAttachment = {
|
||||
};
|
||||
```
|
||||
|
||||
Następnie dodać `attachments?: QaBusAttachment[]` do:
|
||||
Następnie dodaj `attachments?: QaBusAttachment[]` do:
|
||||
|
||||
- `QaBusMessage`
|
||||
- `QaBusInboundMessageInput`
|
||||
@ -482,32 +482,32 @@ Następnie dodać `attachments?: QaBusAttachment[]` do:
|
||||
|
||||
### Dlaczego najpierw generycznie
|
||||
|
||||
Nie budować modelu mediów tylko dla Slack.
|
||||
Nie buduj modelu mediów tylko dla Slack.
|
||||
|
||||
Zamiast tego:
|
||||
|
||||
- jeden generyczny model transportu QA
|
||||
- wiele rendererów nad nim
|
||||
- obecny czat QA Lab
|
||||
- przyszły fake Slack web
|
||||
- wszelkie inne widoki fałszywego transportu
|
||||
- bieżący czat QA Lab
|
||||
- przyszły web fake Slack
|
||||
- dowolne inne widoki fałszywego transportu
|
||||
|
||||
To zapobiega duplikacji logiki i pozwala scenariuszom multimedialnym pozostać niezależnymi od transportu.
|
||||
|
||||
### Potrzebne prace w UI
|
||||
|
||||
Zaktualizować UI QA, aby renderowało:
|
||||
Zaktualizuj UI QA, aby renderować:
|
||||
|
||||
- podgląd obrazu inline
|
||||
- odtwarzacz audio inline
|
||||
- odtwarzacz wideo inline
|
||||
- chip załącznika pliku
|
||||
|
||||
Obecne UI potrafi już renderować wątki i reakcje, więc renderowanie załączników powinno dać się nałożyć na ten sam model kart wiadomości.
|
||||
Obecne UI potrafi już renderować wątki i reakcje, więc renderowanie załączników powinno zostać dołożone do tego samego modelu karty wiadomości.
|
||||
|
||||
### Prace nad scenariuszami odblokowane przez transport mediów
|
||||
### Prace nad scenariuszami odblokowane przez transport multimediów
|
||||
|
||||
Gdy załączniki zaczną przepływać przez magistralę QA, będzie można dodać bogatsze scenariusze fałszywego czatu:
|
||||
Gdy załączniki będą przepływać przez magistralę QA, będzie można dodać bogatsze scenariusze fake-chat:
|
||||
|
||||
- odpowiedź z obrazem inline w fake Slack
|
||||
- rozumienie załącznika audio
|
||||
@ -517,24 +517,24 @@ Gdy załączniki zaczną przepływać przez magistralę QA, będzie można doda
|
||||
|
||||
## Rekomendacja
|
||||
|
||||
Kolejny etap implementacji powinien obejmować:
|
||||
Następny fragment implementacji powinien obejmować:
|
||||
|
||||
1. dodanie loadera scenariuszy Markdown + schematu zod
|
||||
2. wygenerowanie obecnego katalogu z Markdown
|
||||
1. dodanie loadera scenariuszy markdown + schematu zod
|
||||
2. generowanie bieżącego katalogu z markdown
|
||||
3. najpierw migrację kilku prostych scenariuszy
|
||||
4. dodanie generycznej obsługi załączników magistrali QA
|
||||
5. renderowanie obrazu inline w UI QA
|
||||
6. a potem rozszerzenie na audio i wideo
|
||||
6. następnie rozszerzenie na audio i wideo
|
||||
|
||||
To najmniejsza ścieżka, która potwierdza oba cele:
|
||||
|
||||
- generyczne QA zdefiniowane w Markdown
|
||||
- generyczne QA definiowane w markdown
|
||||
- bogatsze fałszywe powierzchnie komunikacyjne
|
||||
|
||||
## Otwarte pytania
|
||||
|
||||
- czy pliki scenariuszy powinny pozwalać na osadzone szablony promptów Markdown z interpolacją zmiennych
|
||||
- czy setup/cleanup powinny być nazwanymi sekcjami, czy tylko uporządkowanymi listami akcji
|
||||
- czy odwołania do artefaktów powinny być silnie typowane w schemacie, czy oparte na ciągach znaków
|
||||
- czy niestandardowe handlery powinny znajdować się w jednym rejestrze, czy w rejestrach per surface
|
||||
- czy wygenerowany plik zgodności JSON powinien pozostać zatwierdzany w repozytorium podczas migracji
|
||||
- czy pliki scenariuszy powinny pozwalać na osadzone szablony promptów w markdown z interpolacją zmiennych
|
||||
- czy setup/cleanup powinny być nazwanymi sekcjami, czy po prostu uporządkowanymi listami akcji
|
||||
- czy referencje do artefaktów powinny być silnie typowane w schemacie, czy oparte na stringach
|
||||
- czy custom handlery powinny znajdować się w jednym rejestrze, czy w rejestrach per surface
|
||||
- czy wygenerowany plik zgodności JSON powinien pozostać commitowany w trakcie migracji
|
||||
|
||||
Loading…
Reference in New Issue
Block a user