chore(i18n): refresh pl translations
This commit is contained in:
parent
10043b31f8
commit
0422aa9d1d
File diff suppressed because it is too large
Load Diff
@ -1,35 +1,35 @@
|
||||
---
|
||||
read_when:
|
||||
- Chcesz, aby promowanie pamięci uruchamiało się automatycznie
|
||||
- Chcesz zrozumieć, co robi każda faza dreaming
|
||||
- Chcesz, aby promocja pamięci uruchamiała się automatycznie
|
||||
- Chcesz zrozumieć, co robi każda faza Dreaming
|
||||
- Chcesz dostroić konsolidację bez zaśmiecania `MEMORY.md`
|
||||
summary: Konsolidacja pamięci w tle z fazami light, deep i REM oraz Dream Diary
|
||||
summary: Konsolidacja pamięci w tle z fazami lekkiego, głębokiego i REM snu oraz Dziennikiem snów
|
||||
title: Dreaming (eksperymentalne)
|
||||
x-i18n:
|
||||
generated_at: "2026-04-09T01:27:48Z"
|
||||
generated_at: "2026-04-15T09:51:05Z"
|
||||
model: gpt-5.4
|
||||
provider: openai
|
||||
source_hash: 26476eddb8260e1554098a6adbb069cf7f5e284cf2e09479c6d9d8f8b93280ef
|
||||
source_hash: 5882a5068f2eabe54ca9893184e5385330a432b921870c38626399ce11c31e25
|
||||
source_path: concepts/dreaming.md
|
||||
workflow: 15
|
||||
---
|
||||
|
||||
# Dreaming (eksperymentalne)
|
||||
|
||||
Dreaming to system konsolidacji pamięci w tle w `memory-core`.
|
||||
Pomaga OpenClaw przenosić silne krótkoterminowe sygnały do trwałej pamięci, jednocześnie
|
||||
zachowując przejrzystość i możliwość przeglądu procesu.
|
||||
Dreaming to system konsolidacji pamięci działający w tle w `memory-core`.
|
||||
Pomaga OpenClaw przenosić silne sygnały krótkoterminowe do trwałej pamięci,
|
||||
zachowując przy tym przejrzystość i możliwość przeglądu procesu.
|
||||
|
||||
Dreaming jest funkcją **opt-in** i domyślnie jest wyłączone.
|
||||
Dreaming jest **opcjonalne** i domyślnie wyłączone.
|
||||
|
||||
## Co zapisuje dreaming
|
||||
## Co zapisuje Dreaming
|
||||
|
||||
Dreaming utrzymuje dwa rodzaje danych wyjściowych:
|
||||
Dreaming utrzymuje dwa rodzaje wyników:
|
||||
|
||||
- **Stan maszyny** w `memory/.dreams/` (magazyn przypomnień, sygnały faz, punkty kontrolne ingestii, blokady).
|
||||
- **Dane czytelne dla człowieka** w `DREAMS.md` (lub istniejącym `dreams.md`) oraz opcjonalne pliki raportów faz w `memory/dreaming/<phase>/YYYY-MM-DD.md`.
|
||||
- **Stan maszyny** w `memory/.dreams/` (magazyn recall, sygnały faz, punkty kontrolne ingestii, blokady).
|
||||
- **Czytelne dla człowieka dane wyjściowe** w `DREAMS.md` (lub istniejącym `dreams.md`) oraz opcjonalnych plikach raportów faz w `memory/dreaming/<phase>/YYYY-MM-DD.md`.
|
||||
|
||||
Promowanie do pamięci długoterminowej nadal zapisuje wyłącznie do `MEMORY.md`.
|
||||
Promocja do pamięci długoterminowej nadal zapisuje wyłącznie do `MEMORY.md`.
|
||||
|
||||
## Model faz
|
||||
|
||||
@ -37,102 +37,106 @@ Dreaming używa trzech współpracujących faz:
|
||||
|
||||
| Faza | Cel | Trwały zapis |
|
||||
| ----- | ----------------------------------------- | ----------------- |
|
||||
| Light | Sortowanie i przygotowanie ostatnich materiałów krótkoterminowych | Nie |
|
||||
| Deep | Ocenianie i promowanie trwałych kandydatów | Tak (`MEMORY.md`) |
|
||||
| REM | Refleksja nad tematami i powracającymi ideami | Nie |
|
||||
| Lekka | Sortowanie i przygotowanie ostatnich materiałów krótkoterminowych | Nie |
|
||||
| Głęboka | Ocenianie i promowanie trwałych kandydatów | Tak (`MEMORY.md`) |
|
||||
| REM | Refleksja nad tematami i powracającymi ideami | Nie |
|
||||
|
||||
Te fazy są wewnętrznymi szczegółami implementacji, a nie oddzielnymi
|
||||
konfigurowanymi przez użytkownika „trybami”.
|
||||
|
||||
### Faza light
|
||||
### Faza lekka
|
||||
|
||||
Faza light pobiera ostatnie dzienne sygnały pamięci i ślady przypomnień, usuwa duplikaty
|
||||
i przygotowuje wiersze kandydatów.
|
||||
Faza lekka pobiera ostatnie dzienne sygnały pamięci i ślady recall, usuwa duplikaty
|
||||
i przygotowuje kandydackie linie.
|
||||
|
||||
- Odczytuje stan krótkoterminowych przypomnień, ostatnie dzienne pliki pamięci oraz zredagowane transkrypty sesji, gdy są dostępne.
|
||||
- Odczytuje dane ze stanu recall krótkoterminowego, ostatnich dziennych plików pamięci oraz zredagowanych transkrypcji sesji, jeśli są dostępne.
|
||||
- Zapisuje zarządzany blok `## Light Sleep`, gdy magazyn zawiera dane wyjściowe inline.
|
||||
- Rejestruje sygnały wzmacniające na potrzeby późniejszego rankingu deep.
|
||||
- Rejestruje sygnały wzmacniające do późniejszego rankingu fazy głębokiej.
|
||||
- Nigdy nie zapisuje do `MEMORY.md`.
|
||||
|
||||
### Faza deep
|
||||
### Faza głęboka
|
||||
|
||||
Faza deep decyduje, co staje się pamięcią długoterminową.
|
||||
Faza głęboka decyduje, co staje się pamięcią długoterminową.
|
||||
|
||||
- Ustala ranking kandydatów przy użyciu ważonej punktacji i progów.
|
||||
- Wymaga spełnienia wartości `minScore`, `minRecallCount` i `minUniqueQueries`.
|
||||
- Przed zapisem ponownie pobiera fragmenty z aktywnych plików dziennych, więc nieaktualne/usunięte fragmenty są pomijane.
|
||||
- Klasyfikuje kandydatów przy użyciu ważonego scoringu i progów granicznych.
|
||||
- Wymaga spełnienia `minScore`, `minRecallCount` i `minUniqueQueries`.
|
||||
- Przed zapisem ponownie odtwarza fragmenty z aktywnych plików dziennych, więc nieaktualne lub usunięte fragmenty są pomijane.
|
||||
- Dopisuje promowane wpisy do `MEMORY.md`.
|
||||
- Zapisuje podsumowanie `## Deep Sleep` do `DREAMS.md` i opcjonalnie zapisuje `memory/dreaming/deep/YYYY-MM-DD.md`.
|
||||
- Zapisuje podsumowanie `## Deep Sleep` w `DREAMS.md` i opcjonalnie zapisuje `memory/dreaming/deep/YYYY-MM-DD.md`.
|
||||
|
||||
### Faza REM
|
||||
|
||||
Faza REM wyodrębnia wzorce i sygnały refleksyjne.
|
||||
|
||||
- Buduje podsumowania tematów i refleksji na podstawie ostatnich krótkoterminowych śladów.
|
||||
- Buduje podsumowania tematów i refleksji na podstawie ostatnich śladów krótkoterminowych.
|
||||
- Zapisuje zarządzany blok `## REM Sleep`, gdy magazyn zawiera dane wyjściowe inline.
|
||||
- Rejestruje sygnały wzmacniające REM używane przez ranking deep.
|
||||
- Rejestruje sygnały wzmacniające REM używane przez ranking fazy głębokiej.
|
||||
- Nigdy nie zapisuje do `MEMORY.md`.
|
||||
|
||||
## Ingestia transkryptów sesji
|
||||
## Ingestia transkrypcji sesji
|
||||
|
||||
Dreaming może pobierać zredagowane transkrypty sesji do korpusu dreaming. Gdy
|
||||
transkrypty są dostępne, są przekazywane do fazy light razem z dziennymi
|
||||
sygnałami pamięci i śladami przypomnień. Treści osobiste i wrażliwe są redagowane
|
||||
Dreaming może pobierać zredagowane transkrypcje sesji do korpusu Dreaming. Gdy
|
||||
transkrypcje są dostępne, są przekazywane do fazy lekkiej razem z dziennymi
|
||||
sygnałami pamięci i śladami recall. Treści osobiste i wrażliwe są redagowane
|
||||
przed ingestą.
|
||||
|
||||
## Dream Diary
|
||||
|
||||
Dreaming prowadzi także narracyjny **Dream Diary** w `DREAMS.md`.
|
||||
Gdy po każdej fazie zgromadzi się wystarczająco dużo materiału, `memory-core` uruchamia w tle
|
||||
podrzędny turn subagenta typu best-effort (przy użyciu domyślnego modelu runtime)
|
||||
Dreaming prowadzi również narracyjny **Dream Diary** w `DREAMS.md`.
|
||||
Gdy po każdej fazie zbierze się wystarczająco dużo materiału, `memory-core` uruchamia
|
||||
w tle, w trybie best-effort, turę subagenta (z użyciem domyślnego modelu runtime)
|
||||
i dopisuje krótki wpis do dziennika.
|
||||
|
||||
Ten dziennik jest przeznaczony do odczytu przez człowieka w interfejsie Dreams, a nie jako źródło promocji.
|
||||
Ten dziennik służy do czytania przez człowieka w interfejsie Dreams, a nie jako
|
||||
źródło promocji.
|
||||
Artefakty dziennika/raportów generowane przez Dreaming są wykluczone z promocji
|
||||
krótkoterminowej. Do promocji do `MEMORY.md` kwalifikują się wyłącznie
|
||||
ugruntowane fragmenty pamięci.
|
||||
|
||||
Istnieje również ugruntowana ścieżka historycznego backfill dla przeglądu i odzyskiwania:
|
||||
Istnieje również ugruntowana ścieżka historycznego backfillu do prac przeglądowych i odzyskiwania:
|
||||
|
||||
- `memory rem-harness --path ... --grounded` wyświetla podgląd ugruntowanych wpisów dziennika na podstawie historycznych notatek `YYYY-MM-DD.md`.
|
||||
- `memory rem-harness --path ... --grounded` wyświetla podgląd ugruntowanych danych wyjściowych dziennika na podstawie historycznych notatek `YYYY-MM-DD.md`.
|
||||
- `memory rem-backfill --path ...` zapisuje odwracalne ugruntowane wpisy dziennika do `DREAMS.md`.
|
||||
- `memory rem-backfill --path ... --stage-short-term` przygotowuje ugruntowanych trwałych kandydatów w tym samym magazynie dowodów krótkoterminowych, którego używa już normalna faza deep.
|
||||
- `memory rem-backfill --rollback` i `--rollback-short-term` usuwają te przygotowane artefakty backfill bez naruszania zwykłych wpisów dziennika ani aktywnych krótkoterminowych przypomnień.
|
||||
- `memory rem-backfill --path ... --stage-short-term` przygotowuje ugruntowanych trwałych kandydatów w tym samym magazynie dowodów krótkoterminowych, którego używa już zwykła faza głęboka.
|
||||
- `memory rem-backfill --rollback` i `--rollback-short-term` usuwają te przygotowane artefakty backfillu bez naruszania zwykłych wpisów dziennika ani aktywnego recall krótkoterminowego.
|
||||
|
||||
Control UI udostępnia ten sam przepływ backfill/reset dziennika, dzięki czemu możesz sprawdzić
|
||||
wyniki w scenie Dreams przed podjęciem decyzji, czy ugruntowani kandydaci
|
||||
zasługują na promocję. Scena pokazuje też odrębny ugruntowany tor, aby było widać,
|
||||
Control UI udostępnia ten sam przepływ backfillu/resetu dziennika, dzięki czemu możesz sprawdzić
|
||||
wyniki w scenie Dreams, zanim zdecydujesz, czy ugruntowani kandydaci
|
||||
zasługują na promocję. Scena pokazuje również odrębny ugruntowany tor, dzięki czemu możesz zobaczyć,
|
||||
które przygotowane wpisy krótkoterminowe pochodzą z historycznego odtworzenia, które promowane
|
||||
elementy były prowadzone przez grounded, oraz umożliwia wyczyszczenie tylko ugruntowanych przygotowanych wpisów bez
|
||||
naruszania zwykłego aktywnego stanu krótkoterminowego.
|
||||
elementy były prowadzone przez dane ugruntowane, i czyścić tylko przygotowane wpisy wyłącznie ugruntowane
|
||||
bez naruszania zwykłego aktywnego stanu krótkoterminowego.
|
||||
|
||||
## Sygnały rankingu deep
|
||||
## Sygnały rankingu fazy głębokiej
|
||||
|
||||
Ranking deep używa sześciu ważonych sygnałów bazowych oraz wzmocnienia fazowego:
|
||||
Ranking fazy głębokiej wykorzystuje sześć ważonych sygnałów bazowych oraz wzmocnienie fazowe:
|
||||
|
||||
| Sygnał | Waga | Opis |
|
||||
| Sygnał | Waga | Opis |
|
||||
| ------------------- | ------ | ------------------------------------------------- |
|
||||
| Częstotliwość | 0.24 | Ile krótkoterminowych sygnałów zgromadził wpis |
|
||||
| Trafność | 0.30 | Średnia jakość odzyskiwania dla wpisu |
|
||||
| Różnorodność zapytań | 0.15 | Odrębne konteksty zapytania/dnia, które go ujawniły |
|
||||
| Aktualność | 0.15 | Wynik świeżości z zanikiem w czasie |
|
||||
| Konsolidacja | 0.10 | Siła nawrotów w wielu dniach |
|
||||
| Bogactwo pojęciowe | 0.06 | Gęstość tagów pojęciowych z fragmentu/ścieżki |
|
||||
| Częstotliwość | 0.24 | Ile sygnałów krótkoterminowych zgromadził wpis |
|
||||
| Trafność | 0.30 | Średnia jakość odzyskiwania dla wpisu |
|
||||
| Różnorodność zapytań | 0.15 | Różne konteksty zapytań/dni, w których się pojawił |
|
||||
| Świeżość | 0.15 | Wynik świeżości osłabiany w czasie |
|
||||
| Konsolidacja | 0.10 | Siła powtarzalności między dniami |
|
||||
| Bogactwo pojęciowe | 0.06 | Gęstość tagów pojęciowych z fragmentu/ścieżki |
|
||||
|
||||
Trafienia w fazach light i REM dodają niewielkie wzmocnienie z zanikiem aktualności z
|
||||
Trafienia fazy lekkiej i REM dodają niewielkie wzmocnienie osłabiane w czasie z
|
||||
`memory/.dreams/phase-signals.json`.
|
||||
|
||||
## Harmonogram
|
||||
|
||||
Po włączeniu `memory-core` automatycznie zarządza jednym zadaniem cron dla pełnego
|
||||
przebiegu dreaming. Każdy przebieg uruchamia fazy po kolei: light -> REM -> deep.
|
||||
Po włączeniu `memory-core` automatycznie zarządza jednym zadaniem Cron dla pełnego
|
||||
przebiegu Dreaming. Każdy przebieg uruchamia fazy po kolei: lekka -> REM -> głęboka.
|
||||
|
||||
Domyślne zachowanie kadencji:
|
||||
Domyślne zachowanie harmonogramu:
|
||||
|
||||
| Ustawienie | Domyślnie |
|
||||
| ------------------- | ---------- |
|
||||
| Ustawienie | Domyślnie |
|
||||
| -------------------- | ----------- |
|
||||
| `dreaming.frequency` | `0 3 * * *` |
|
||||
|
||||
## Szybki start
|
||||
|
||||
Włącz dreaming:
|
||||
Włącz Dreaming:
|
||||
|
||||
```json
|
||||
{
|
||||
@ -150,7 +154,7 @@ Włącz dreaming:
|
||||
}
|
||||
```
|
||||
|
||||
Włącz dreaming z niestandardową kadencją przebiegu:
|
||||
Włącz Dreaming z własnym harmonogramem przebiegu:
|
||||
|
||||
```json
|
||||
{
|
||||
@ -170,7 +174,7 @@ Włącz dreaming z niestandardową kadencją przebiegu:
|
||||
}
|
||||
```
|
||||
|
||||
## Komenda slash
|
||||
## Polecenie slash
|
||||
|
||||
```
|
||||
/dreaming status
|
||||
@ -181,7 +185,7 @@ Włącz dreaming z niestandardową kadencją przebiegu:
|
||||
|
||||
## Przepływ pracy CLI
|
||||
|
||||
Użyj promowania przez CLI do podglądu lub ręcznego zastosowania:
|
||||
Użyj promocji CLI do podglądu lub ręcznego zastosowania:
|
||||
|
||||
```bash
|
||||
openclaw memory promote
|
||||
@ -190,17 +194,17 @@ openclaw memory promote --limit 5
|
||||
openclaw memory status --deep
|
||||
```
|
||||
|
||||
Ręczne `memory promote` domyślnie używa progów fazy deep, chyba że zostaną nadpisane
|
||||
Ręczne `memory promote` domyślnie używa progów fazy głębokiej, chyba że zostaną nadpisane
|
||||
flagami CLI.
|
||||
|
||||
Wyjaśnij, dlaczego konkretny kandydat zostałby lub nie zostałby promowany:
|
||||
Wyjaśnij, dlaczego konkretny kandydat zostałby albo nie zostałby promowany:
|
||||
|
||||
```bash
|
||||
openclaw memory promote-explain "router vlan"
|
||||
openclaw memory promote-explain "router vlan" --json
|
||||
```
|
||||
|
||||
Wyświetl podgląd refleksji REM, prawd kandydatów i danych wyjściowych promocji deep bez
|
||||
Wyświetl podgląd refleksji REM, prawd kandydatów i wyników promocji fazy głębokiej bez
|
||||
zapisywania czegokolwiek:
|
||||
|
||||
```bash
|
||||
@ -210,32 +214,32 @@ openclaw memory rem-harness --json
|
||||
|
||||
## Kluczowe wartości domyślne
|
||||
|
||||
Wszystkie ustawienia znajdują się w `plugins.entries.memory-core.config.dreaming`.
|
||||
Wszystkie ustawienia znajdują się pod `plugins.entries.memory-core.config.dreaming`.
|
||||
|
||||
| Klucz | Domyślnie |
|
||||
| ---------- | ---------- |
|
||||
| Key | Domyślnie |
|
||||
| ----------- | ----------- |
|
||||
| `enabled` | `false` |
|
||||
| `frequency` | `0 3 * * *` |
|
||||
|
||||
Polityka faz, progi i zachowanie magazynu są wewnętrznymi szczegółami implementacji
|
||||
(nie są to ustawienia dostępne dla użytkownika).
|
||||
(a nie konfiguracją dostępną dla użytkownika).
|
||||
|
||||
Pełną listę kluczy znajdziesz w [Memory configuration reference](/pl/reference/memory-config#dreaming-experimental).
|
||||
Pełną listę kluczy znajdziesz w [referencji konfiguracji pamięci](/pl/reference/memory-config#dreaming-experimental).
|
||||
|
||||
## Interfejs Dreams
|
||||
|
||||
Po włączeniu karta **Dreams** w Gateway pokazuje:
|
||||
|
||||
- bieżący stan włączenia dreaming
|
||||
- stan na poziomie faz oraz obecność zarządzanego przebiegu
|
||||
- bieżący stan włączenia Dreaming
|
||||
- stan na poziomie faz i obecność zarządzanego przebiegu
|
||||
- liczby elementów krótkoterminowych, ugruntowanych, sygnałów i promowanych dzisiaj
|
||||
- czas następnego zaplanowanego uruchomienia
|
||||
- odrębny ugruntowany tor sceny dla przygotowanych wpisów historycznego odtworzenia
|
||||
- czas do następnego zaplanowanego uruchomienia
|
||||
- odrębny tor sceny ugruntowanej dla przygotowanych wpisów historycznego odtworzenia
|
||||
- rozwijany czytnik Dream Diary oparty na `doctor.memory.dreamDiary`
|
||||
|
||||
## Powiązane
|
||||
|
||||
- [Memory](/pl/concepts/memory)
|
||||
- [Memory Search](/pl/concepts/memory-search)
|
||||
- [memory CLI](/cli/memory)
|
||||
- [Memory configuration reference](/pl/reference/memory-config)
|
||||
- [Pamięć](/pl/concepts/memory)
|
||||
- [Wyszukiwanie w pamięci](/pl/concepts/memory-search)
|
||||
- [CLI memory](/cli/memory)
|
||||
- [Referencja konfiguracji pamięci](/pl/reference/memory-config)
|
||||
|
||||
@ -6,51 +6,56 @@ read_when:
|
||||
summary: Jak wyszukiwanie pamięci znajduje odpowiednie notatki za pomocą embeddingów i wyszukiwania hybrydowego
|
||||
title: Wyszukiwanie pamięci
|
||||
x-i18n:
|
||||
generated_at: "2026-04-12T23:28:04Z"
|
||||
generated_at: "2026-04-15T09:51:03Z"
|
||||
model: gpt-5.4
|
||||
provider: openai
|
||||
source_hash: 71fde251b7d2dc455574aa458e7e09136f30613609ad8dafeafd53b2729a0310
|
||||
source_hash: f5757aa8fe8f7fec30ef5c826f72230f591ce4cad591d81a091189d50d4262ed
|
||||
source_path: concepts/memory-search.md
|
||||
workflow: 15
|
||||
---
|
||||
|
||||
# Wyszukiwanie pamięci
|
||||
|
||||
`memory_search` znajduje odpowiednie notatki z Twoich plików pamięci, nawet gdy sformułowania różnią się od oryginalnego tekstu. Działa przez indeksowanie pamięci w małych fragmentach i przeszukiwanie ich za pomocą embeddingów, słów kluczowych albo obu tych metod.
|
||||
`memory_search` znajduje odpowiednie notatki z Twoich plików pamięci, nawet gdy
|
||||
sformułowanie różni się od oryginalnego tekstu. Działa przez indeksowanie pamięci w małych
|
||||
fragmentach i przeszukiwanie ich za pomocą embeddingów, słów kluczowych albo obu metod naraz.
|
||||
|
||||
## Szybki start
|
||||
|
||||
Jeśli masz skonfigurowany klucz API OpenAI, Gemini, Voyage lub Mistral, wyszukiwanie pamięci działa automatycznie. Aby jawnie ustawić dostawcę:
|
||||
Jeśli masz subskrypcję GitHub Copilot albo skonfigurowany klucz API OpenAI, Gemini, Voyage lub Mistral,
|
||||
wyszukiwanie pamięci działa automatycznie. Aby jawnie ustawić dostawcę:
|
||||
|
||||
```json5
|
||||
{
|
||||
agents: {
|
||||
defaults: {
|
||||
memorySearch: {
|
||||
provider: "openai", // lub "gemini", "local", "ollama" itp.
|
||||
provider: "openai", // lub "gemini", "local", "ollama" itd.
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
W przypadku lokalnych embeddingów bez klucza API użyj `provider: "local"` (wymaga `node-llama-cpp`).
|
||||
Do lokalnych embeddingów bez klucza API użyj `provider: "local"` (wymaga
|
||||
node-llama-cpp).
|
||||
|
||||
## Obsługiwani dostawcy
|
||||
|
||||
| Dostawca | ID | Wymaga klucza API | Uwagi |
|
||||
| -------- | --------- | ----------------- | ---------------------------------------------------- |
|
||||
| OpenAI | `openai` | Tak | Wykrywany automatycznie, szybki |
|
||||
| Gemini | `gemini` | Tak | Obsługuje indeksowanie obrazów i dźwięku |
|
||||
| Voyage | `voyage` | Tak | Wykrywany automatycznie |
|
||||
| Mistral | `mistral` | Tak | Wykrywany automatycznie |
|
||||
| Bedrock | `bedrock` | Nie | Wykrywany automatycznie, gdy łańcuch poświadczeń AWS zostanie rozwiązany |
|
||||
| Ollama | `ollama` | Nie | Lokalny, trzeba ustawić jawnie |
|
||||
| Local | `local` | Nie | Model GGUF, pobieranie ~0,6 GB |
|
||||
| Dostawca | ID | Wymaga klucza API | Uwagi |
|
||||
| -------------- | ---------------- | ----------------- | ---------------------------------------------------- |
|
||||
| Bedrock | `bedrock` | Nie | Wykrywany automatycznie, gdy łańcuch poświadczeń AWS zostanie rozwiązany |
|
||||
| Gemini | `gemini` | Tak | Obsługuje indeksowanie obrazów/dźwięku |
|
||||
| GitHub Copilot | `github-copilot` | Nie | Wykrywany automatycznie, używa subskrypcji Copilot |
|
||||
| Local | `local` | Nie | Model GGUF, pobranie ~0,6 GB |
|
||||
| Mistral | `mistral` | Tak | Wykrywany automatycznie |
|
||||
| Ollama | `ollama` | Nie | Lokalny, trzeba ustawić jawnie |
|
||||
| OpenAI | `openai` | Tak | Wykrywany automatycznie, szybki |
|
||||
| Voyage | `voyage` | Tak | Wykrywany automatycznie |
|
||||
|
||||
## Jak działa wyszukiwanie
|
||||
|
||||
OpenClaw uruchamia równolegle dwie ścieżki wyszukiwania i scala wyniki:
|
||||
OpenClaw uruchamia równolegle dwie ścieżki pobierania i scala wyniki:
|
||||
|
||||
```mermaid
|
||||
flowchart LR
|
||||
@ -63,12 +68,14 @@ flowchart LR
|
||||
M --> R["Top Results"]
|
||||
```
|
||||
|
||||
- **Wyszukiwanie wektorowe** znajduje notatki o podobnym znaczeniu („gateway host” pasuje do „maszyna, na której działa OpenClaw”).
|
||||
- **Wyszukiwanie słów kluczowych BM25** znajduje dokładne dopasowania (ID, ciągi błędów, klucze konfiguracji).
|
||||
- **Wyszukiwanie wektorowe** znajduje notatki o podobnym znaczeniu (`"gateway host"` pasuje
|
||||
do `"the machine running OpenClaw"`).
|
||||
- **Wyszukiwanie słów kluczowych BM25** znajduje dokładne dopasowania (ID, ciągi błędów, klucze
|
||||
konfiguracji).
|
||||
|
||||
Jeśli dostępna jest tylko jedna ścieżka (brak embeddingów albo brak FTS), działa tylko ta jedna.
|
||||
Jeśli dostępna jest tylko jedna ścieżka (brak embeddingów albo brak FTS), działa tylko ta druga.
|
||||
|
||||
Gdy embeddingi są niedostępne, OpenClaw nadal używa rankingu leksykalnego na wynikach FTS zamiast sprowadzać się wyłącznie do surowego porządku dokładnych dopasowań. Ten tryb obniżonej jakości wzmacnia fragmenty z lepszym pokryciem terminów zapytania i odpowiednimi ścieżkami plików, co pomaga zachować użyteczny recall nawet bez `sqlite-vec` lub dostawcy embeddingów.
|
||||
Gdy embeddingi są niedostępne, OpenClaw nadal używa rankingu leksykalnego względem wyników FTS zamiast wracać wyłącznie do surowego porządku dokładnych dopasowań. Ten tryb obniżonej jakości wzmacnia fragmenty z lepszym pokryciem terminów zapytania i odpowiednimi ścieżkami plików, co pomaga zachować użyteczną trafność nawet bez `sqlite-vec` albo dostawcy embeddingów.
|
||||
|
||||
## Poprawa jakości wyszukiwania
|
||||
|
||||
@ -76,18 +83,23 @@ Dwie opcjonalne funkcje pomagają, gdy masz dużą historię notatek:
|
||||
|
||||
### Zanikanie czasowe
|
||||
|
||||
Stare notatki stopniowo tracą wagę rankingową, dzięki czemu nowsze informacje pojawiają się wyżej. Przy domyślnym okresie połowicznego zaniku wynoszącym 30 dni notatka z zeszłego miesiąca zachowuje 50% swojej pierwotnej wagi. Pliki trwałe, takie jak `MEMORY.md`, nigdy nie podlegają zanikowi.
|
||||
Stare notatki stopniowo tracą wagę rankingową, dzięki czemu najpierw pojawiają się nowsze informacje.
|
||||
Przy domyślnym okresie połowicznego zaniku wynoszącym 30 dni notatka z zeszłego miesiąca ma wynik równy 50%
|
||||
swojej pierwotnej wagi. Pliki stałe, takie jak `MEMORY.md`, nigdy nie podlegają zanikaniu.
|
||||
|
||||
<Tip>
|
||||
Włącz zanikanie czasowe, jeśli Twój agent ma miesiące codziennych notatek, a nieaktualne informacje stale wyprzedzają nowszy kontekst.
|
||||
Włącz zanikanie czasowe, jeśli Twój agent ma miesiące codziennych notatek, a nieaktualne
|
||||
informacje stale wyprzedzają nowszy kontekst.
|
||||
</Tip>
|
||||
|
||||
### MMR (różnorodność)
|
||||
|
||||
Ogranicza redundantne wyniki. Jeśli pięć notatek wspomina tę samą konfigurację routera, MMR sprawia, że najwyższe wyniki obejmują różne tematy zamiast się powtarzać.
|
||||
Ogranicza powtarzające się wyniki. Jeśli pięć notatek wspomina tę samą konfigurację routera, MMR
|
||||
sprawia, że najwyższe wyniki obejmują różne tematy zamiast się powtarzać.
|
||||
|
||||
<Tip>
|
||||
Włącz MMR, jeśli `memory_search` stale zwraca niemal identyczne fragmenty z różnych codziennych notatek.
|
||||
Włącz MMR, jeśli `memory_search` stale zwraca niemal identyczne fragmenty z
|
||||
różnych codziennych notatek.
|
||||
</Tip>
|
||||
|
||||
### Włącz oba
|
||||
@ -111,22 +123,31 @@ Włącz MMR, jeśli `memory_search` stale zwraca niemal identyczne fragmenty z r
|
||||
|
||||
## Pamięć multimodalna
|
||||
|
||||
Dzięki Gemini Embedding 2 możesz indeksować obrazy i pliki audio obok Markdownu. Zapytania wyszukiwania nadal pozostają tekstowe, ale dopasowują się do treści wizualnych i dźwiękowych. Informacje o konfiguracji znajdziesz w [referencji konfiguracji pamięci](/pl/reference/memory-config).
|
||||
Z Gemini Embedding 2 możesz indeksować obrazy i pliki audio razem z
|
||||
Markdownem. Zapytania wyszukiwania nadal pozostają tekstowe, ale dopasowują się do
|
||||
treści wizualnych i audio. Zobacz [odnośnik do konfiguracji pamięci](/pl/reference/memory-config), aby poznać
|
||||
konfigurację.
|
||||
|
||||
## Wyszukiwanie pamięci sesji
|
||||
## Wyszukiwanie w pamięci sesji
|
||||
|
||||
Możesz opcjonalnie indeksować transkrypcje sesji, aby `memory_search` mogło przywoływać wcześniejsze rozmowy. Jest to funkcja opt-in przez `memorySearch.experimental.sessionMemory`. Szczegóły znajdziesz w [referencji konfiguracji](/pl/reference/memory-config).
|
||||
Możesz opcjonalnie indeksować transkrypty sesji, aby `memory_search` mógł przywoływać
|
||||
wcześniejsze rozmowy. To funkcja opt-in przez
|
||||
`memorySearch.experimental.sessionMemory`. Szczegóły znajdziesz w
|
||||
[odnośniku do konfiguracji](/pl/reference/memory-config).
|
||||
|
||||
## Rozwiązywanie problemów
|
||||
|
||||
**Brak wyników?** Uruchom `openclaw memory status`, aby sprawdzić indeks. Jeśli jest pusty, uruchom `openclaw memory index --force`.
|
||||
**Brak wyników?** Uruchom `openclaw memory status`, aby sprawdzić indeks. Jeśli jest pusty, uruchom
|
||||
`openclaw memory index --force`.
|
||||
|
||||
**Tylko dopasowania słów kluczowych?** Twój dostawca embeddingów może nie być skonfigurowany. Sprawdź `openclaw memory status --deep`.
|
||||
**Tylko dopasowania słów kluczowych?** Twój dostawca embeddingów może nie być skonfigurowany. Sprawdź
|
||||
`openclaw memory status --deep`.
|
||||
|
||||
**Nie znajduje tekstu CJK?** Przebuduj indeks FTS za pomocą `openclaw memory index --force`.
|
||||
**Nie znajduje tekstu CJK?** Odbuduj indeks FTS za pomocą
|
||||
`openclaw memory index --force`.
|
||||
|
||||
## Dalsza lektura
|
||||
|
||||
- [Active Memory](/pl/concepts/active-memory) -- pamięć podagenta dla interaktywnych sesji czatu
|
||||
- [Active Memory](/pl/concepts/active-memory) -- pamięć subagenta dla interaktywnych sesji czatu
|
||||
- [Pamięć](/pl/concepts/memory) -- układ plików, backendy, narzędzia
|
||||
- [Referencja konfiguracji pamięci](/pl/reference/memory-config) -- wszystkie opcje konfiguracji
|
||||
- [Odnośnik do konfiguracji pamięci](/pl/reference/memory-config) -- wszystkie opcje konfiguracji
|
||||
|
||||
@ -2,27 +2,27 @@
|
||||
read_when:
|
||||
- Chcesz udostępniać modele z własnej maszyny z GPU
|
||||
- Konfigurujesz LM Studio lub proxy zgodne z OpenAI
|
||||
- Potrzebujesz najbezpieczniejszych wskazówek dotyczących modeli lokalnych
|
||||
summary: Uruchamiaj OpenClaw na lokalnych LLM-ach (LM Studio, vLLM, LiteLLM, niestandardowe endpointy OpenAI)
|
||||
title: Modele lokalne
|
||||
- Potrzebujesz najbezpieczniejszych wskazówek dotyczących lokalnych modeli
|
||||
summary: Uruchamiaj OpenClaw na lokalnych modelach LLM (LM Studio, vLLM, LiteLLM, niestandardowe endpointy OpenAI)
|
||||
title: Lokalne modele
|
||||
x-i18n:
|
||||
generated_at: "2026-04-14T09:50:55Z"
|
||||
generated_at: "2026-04-15T09:51:03Z"
|
||||
model: gpt-5.4
|
||||
provider: openai
|
||||
source_hash: 1544c522357ba4b18dfa6d05ea8d60c7c6262281b53863d9aee7002464703ca7
|
||||
source_hash: 8778cc1c623a356ff3cf306c494c046887f9417a70ec71e659e4a8aae912a780
|
||||
source_path: gateway/local-models.md
|
||||
workflow: 15
|
||||
---
|
||||
|
||||
# Modele lokalne
|
||||
# Lokalne modele
|
||||
|
||||
Lokalnie da się to zrobić, ale OpenClaw oczekuje dużego kontekstu + silnych zabezpieczeń przed prompt injection. Małe karty obcinają kontekst i osłabiają bezpieczeństwo. Celuj wysoko: **≥2 w pełni wyposażone Mac Studio lub równoważny zestaw GPU (~30 tys. USD+)**. Pojedyncze GPU **24 GB** działa tylko przy lżejszych promptach i z większymi opóźnieniami. Używaj **największego / pełnowymiarowego wariantu modelu, jaki jesteś w stanie uruchomić**; agresywnie kwantyzowane lub „małe” checkpointy zwiększają ryzyko prompt injection (zobacz [Bezpieczeństwo](/pl/gateway/security)).
|
||||
Lokalnie da się to uruchomić, ale OpenClaw oczekuje dużego kontekstu oraz silnych zabezpieczeń przed prompt injection. Małe karty obcinają kontekst i osłabiają bezpieczeństwo. Celuj wysoko: **≥2 w pełni wyposażone Mac Studio lub równoważny zestaw GPU (~30 tys. USD+)**. Pojedynczy procesor GPU z **24 GB** działa tylko przy lżejszych promptach i z większymi opóźnieniami. Używaj **największego / pełnowymiarowego wariantu modelu, jaki jesteś w stanie uruchomić**; mocno kwantyzowane lub „małe” checkpointy zwiększają ryzyko prompt injection (zobacz [Bezpieczeństwo](/pl/gateway/security)).
|
||||
|
||||
Jeśli chcesz najprostszej konfiguracji lokalnej, zacznij od [LM Studio](/pl/providers/lmstudio) lub [Ollama](/pl/providers/ollama) i `openclaw onboard`. Ta strona to praktyczny przewodnik po bardziej zaawansowanych stosach lokalnych i niestandardowych lokalnych serwerach zgodnych z OpenAI.
|
||||
Jeśli chcesz najprostszej lokalnej konfiguracji, zacznij od [LM Studio](/pl/providers/lmstudio) lub [Ollama](/pl/providers/ollama) i `openclaw onboard`. Ta strona to opiniotwórczy przewodnik po bardziej zaawansowanych lokalnych stosach i niestandardowych lokalnych serwerach zgodnych z OpenAI.
|
||||
|
||||
## Zalecane: LM Studio + duży model lokalny (Responses API)
|
||||
## Zalecane: LM Studio + duży lokalny model (Responses API)
|
||||
|
||||
Obecnie najlepszy lokalny stos. Załaduj duży model w LM Studio (na przykład pełnowymiarową wersję Qwen, DeepSeek lub Llama), włącz serwer lokalny (domyślnie `http://127.0.0.1:1234`), i użyj Responses API, aby oddzielić rozumowanie od końcowego tekstu.
|
||||
Obecnie najlepszy lokalny stos. Załaduj duży model w LM Studio (na przykład pełnowymiarową wersję Qwen, DeepSeek lub Llama), włącz lokalny serwer (domyślnie `http://127.0.0.1:1234`) i użyj Responses API, aby oddzielić rozumowanie od końcowego tekstu.
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -65,10 +65,10 @@ Obecnie najlepszy lokalny stos. Załaduj duży model w LM Studio (na przykład p
|
||||
- W LM Studio pobierz **największą dostępną wersję modelu** (unikaj wariantów „small” / mocno kwantyzowanych), uruchom serwer i potwierdź, że `http://127.0.0.1:1234/v1/models` go wyświetla.
|
||||
- Zastąp `my-local-model` rzeczywistym identyfikatorem modelu widocznym w LM Studio.
|
||||
- Utrzymuj model załadowany; zimne ładowanie zwiększa opóźnienie startu.
|
||||
- Dostosuj `contextWindow` / `maxTokens`, jeśli Twoja wersja LM Studio różni się od tej tutaj.
|
||||
- Dostosuj `contextWindow`/`maxTokens`, jeśli Twoja wersja LM Studio różni się od tej opisanej tutaj.
|
||||
- W przypadku WhatsApp trzymaj się Responses API, aby wysyłany był tylko końcowy tekst.
|
||||
|
||||
Zachowaj też konfigurację modeli hostowanych, nawet jeśli działasz lokalnie; użyj `models.mode: "merge"`, aby fallbacki pozostały dostępne.
|
||||
Nawet przy pracy lokalnej zachowaj konfigurację modeli hostowanych; użyj `models.mode: "merge"`, aby fallbacki nadal były dostępne.
|
||||
|
||||
### Konfiguracja hybrydowa: hostowany model główny, lokalny fallback
|
||||
|
||||
@ -111,18 +111,18 @@ Zachowaj też konfigurację modeli hostowanych, nawet jeśli działasz lokalnie;
|
||||
}
|
||||
```
|
||||
|
||||
### Podejście local-first z hostowaną siatką bezpieczeństwa
|
||||
### Najpierw lokalnie, z hostowaną siatką bezpieczeństwa
|
||||
|
||||
Zamień miejscami kolejność modelu głównego i fallbacków; zachowaj ten sam blok providerów oraz `models.mode: "merge"`, aby móc przełączyć się na Sonnet lub Opus, gdy lokalna maszyna będzie niedostępna.
|
||||
Zamień kolejność modelu głównego i fallbacku; zachowaj ten sam blok providers oraz `models.mode: "merge"`, aby móc wrócić do Sonnet lub Opus, gdy lokalna maszyna będzie niedostępna.
|
||||
|
||||
### Hosting regionalny / trasowanie danych
|
||||
|
||||
- Hostowane warianty MiniMax / Kimi / GLM są też dostępne w OpenRouter z endpointami przypiętymi do regionu (np. hostowanymi w USA). Wybierz tam wariant regionalny, aby utrzymać ruch w wybranej jurysdykcji, jednocześnie nadal używając `models.mode: "merge"` dla fallbacków Anthropic / OpenAI.
|
||||
- Podejście wyłącznie lokalne pozostaje najlepszą ścieżką prywatności; hostowane trasowanie regionalne to rozwiązanie pośrednie, gdy potrzebujesz funkcji dostawcy, ale chcesz zachować kontrolę nad przepływem danych.
|
||||
- Hostowane warianty MiniMax/Kimi/GLM są też dostępne w OpenRouter z endpointami przypiętymi do regionu (np. hostowanymi w USA). Wybierz tam wariant regionalny, aby utrzymać ruch w wybranej jurysdykcji, nadal używając `models.mode: "merge"` dla fallbacków Anthropic/OpenAI.
|
||||
- Tryb wyłącznie lokalny pozostaje najlepszą ścieżką pod względem prywatności; hostowane trasowanie regionalne to rozwiązanie pośrednie, gdy potrzebujesz funkcji dostawcy, ale chcesz kontrolować przepływ danych.
|
||||
|
||||
## Inne lokalne proxy zgodne z OpenAI
|
||||
|
||||
vLLM, LiteLLM, OAI-proxy lub niestandardowe Gateway działają, jeśli udostępniają endpoint `/v1` w stylu OpenAI. Zastąp powyższy blok providera swoim endpointem i identyfikatorem modelu:
|
||||
vLLM, LiteLLM, OAI-proxy lub niestandardowe Gateway działają, jeśli udostępniają endpoint `/v1` w stylu OpenAI. Zastąp powyższy blok provider swoim endpointem i identyfikatorem modelu:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -152,40 +152,41 @@ vLLM, LiteLLM, OAI-proxy lub niestandardowe Gateway działają, jeśli udostępn
|
||||
|
||||
Zachowaj `models.mode: "merge"`, aby hostowane modele nadal były dostępne jako fallbacki.
|
||||
|
||||
Uwaga dotycząca działania backendów lokalnych / proxowanych `/v1`:
|
||||
Uwaga dotycząca działania lokalnych/proksowanych backendów `/v1`:
|
||||
|
||||
- OpenClaw traktuje je jako trasy zgodne z OpenAI w stylu proxy, a nie natywne endpointy OpenAI
|
||||
- natywne formatowanie żądań przeznaczone wyłącznie dla OpenAI nie ma tu zastosowania: brak
|
||||
`service_tier`, brak `store` w Responses, brak formatowania payloadu zgodności rozumowania OpenAI
|
||||
i brak wskazówek dotyczących pamięci podręcznej promptów
|
||||
- OpenClaw traktuje je jako trasy proxy zgodne z OpenAI, a nie natywne endpointy OpenAI
|
||||
- natywne dla OpenAI kształtowanie żądań nie ma tu zastosowania: brak
|
||||
`service_tier`, brak `store` w Responses, brak kształtowania payloadu
|
||||
zgodności z rozumowaniem OpenAI oraz brak wskazówek dla prompt cache
|
||||
- ukryte nagłówki atrybucji OpenClaw (`originator`, `version`, `User-Agent`)
|
||||
nie są wstrzykiwane do tych niestandardowych URL-i proxy
|
||||
nie są wstrzykiwane do tych niestandardowych adresów URL proxy
|
||||
|
||||
Uwagi dotyczące zgodności z bardziej restrykcyjnymi backendami zgodnymi z OpenAI:
|
||||
Uwagi o zgodności dla bardziej rygorystycznych backendów zgodnych z OpenAI:
|
||||
|
||||
- Niektóre serwery akceptują tylko ciąg znaków w `messages[].content` dla Chat Completions, a nie
|
||||
ustrukturyzowane tablice części treści. Ustaw
|
||||
- Niektóre serwery akceptują wyłącznie ciąg znaków w `messages[].content` w Chat Completions, a nie
|
||||
uporządkowane tablice części treści. Ustaw
|
||||
`models.providers.<provider>.models[].compat.requiresStringContent: true` dla
|
||||
takich endpointów.
|
||||
- Niektóre mniejsze lub bardziej restrykcyjne lokalne backendy są niestabilne przy pełnym
|
||||
kształcie promptu środowiska uruchomieniowego agenta OpenClaw, zwłaszcza gdy dołączone są schematy narzędzi. Jeśli
|
||||
backend działa dla małych bezpośrednich wywołań `/v1/chat/completions`, ale zawodzi przy zwykłych
|
||||
- Niektóre mniejsze lub bardziej rygorystyczne lokalne backendy są niestabilne z pełnym
|
||||
kształtem promptu środowiska uruchomieniowego agenta w OpenClaw, zwłaszcza gdy dołączone są schematy narzędzi. Jeśli
|
||||
backend działa przy małych bezpośrednich wywołaniach `/v1/chat/completions`, ale nie działa przy zwykłych
|
||||
turach agenta OpenClaw, najpierw spróbuj
|
||||
`agents.defaults.localModelMode: "lean"`, aby usunąć cięższe domyślne narzędzia
|
||||
takie jak `browser`, `cron` i `message`; jeśli to nadal nie pomoże, spróbuj
|
||||
`models.providers.<provider>.models[].compat.supportsTools: false`.
|
||||
- Jeśli backend nadal zawodzi tylko przy większych uruchomieniach OpenClaw, pozostały problem
|
||||
zwykle leży po stronie pojemności modelu / serwera albo błędu backendu, a nie warstwy
|
||||
transportowej OpenClaw.
|
||||
- Jeśli backend nadal zawodzi tylko przy większych uruchomieniach OpenClaw,
|
||||
pozostały problem zwykle leży po stronie pojemności modelu/serwera upstream albo błędu backendu, a nie warstwy transportowej OpenClaw.
|
||||
|
||||
## Rozwiązywanie problemów
|
||||
|
||||
- Gateway może połączyć się z proxy? `curl http://127.0.0.1:1234/v1/models`.
|
||||
- Model LM Studio został wyładowany? Załaduj go ponownie; zimny start to częsta przyczyna „zawieszania się”.
|
||||
- OpenClaw ostrzega, gdy wykryte okno kontekstu jest mniejsze niż **32k**, i blokuje działanie poniżej **16k**. Jeśli trafisz na ten preflight, zwiększ limit kontekstu serwera / modelu albo wybierz większy model.
|
||||
- OpenClaw ostrzega, gdy wykryte okno kontekstu jest mniejsze niż **32k**, i blokuje działanie poniżej **16k**. Jeśli trafiasz na ten wstępny test, zwiększ limit kontekstu serwera/modelu albo wybierz większy model.
|
||||
- Błędy kontekstu? Zmniejsz `contextWindow` albo zwiększ limit serwera.
|
||||
- Serwer zgodny z OpenAI zwraca `messages[].content ... expected a string`?
|
||||
Dodaj `compat.requiresStringContent: true` do wpisu tego modelu.
|
||||
- Bezpośrednie małe wywołania `/v1/chat/completions` działają, ale `openclaw infer model run`
|
||||
zawodzi na Gemma lub innym modelu lokalnym? Najpierw wyłącz schematy narzędzi przez
|
||||
`compat.supportsTools: false`, a potem przetestuj ponownie. Jeśli serwer nadal zawiesza się tylko
|
||||
przy większych promptach OpenClaw, traktuj to jako ograniczenie modelu / serwera po stronie upstream.
|
||||
- Bezpieczeństwo: modele lokalne pomijają filtry po stronie dostawcy; ograniczaj zakres agentów i pozostaw Compaction włączone, aby zmniejszyć skutki prompt injection.
|
||||
Dodaj `compat.requiresStringContent: true` w tym wpisie modelu.
|
||||
- Małe bezpośrednie wywołania `/v1/chat/completions` działają, ale `openclaw infer model run`
|
||||
nie działa na Gemma lub innym lokalnym modelu? Najpierw wyłącz schematy narzędzi przez
|
||||
`compat.supportsTools: false`, a potem przetestuj ponownie. Jeśli serwer nadal się wyłącza tylko
|
||||
przy większych promptach OpenClaw, traktuj to jako ograniczenie modelu/serwera upstream.
|
||||
- Bezpieczeństwo: lokalne modele pomijają filtry po stronie dostawcy; utrzymuj agentów w wąskim zakresie i pozostaw Compaction włączone, aby ograniczyć zasięg prompt injection.
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,75 +1,74 @@
|
||||
---
|
||||
read_when:
|
||||
- Tworzysz Plugin OpenClaw
|
||||
- Musisz dostarczyć schemat konfiguracji Pluginu albo debugować błędy walidacji Pluginu
|
||||
summary: Manifest Pluginu + wymagania schematu JSON (ścisła walidacja konfiguracji)
|
||||
title: Manifest Pluginu
|
||||
- Musisz dostarczyć schemat konfiguracji Plugin lub debugować błędy walidacji Plugin
|
||||
summary: Wymagania dotyczące manifestu Plugin + schematu JSON (ścisła walidacja konfiguracji)
|
||||
title: Manifest Plugin
|
||||
x-i18n:
|
||||
generated_at: "2026-04-12T23:28:43Z"
|
||||
generated_at: "2026-04-15T09:51:04Z"
|
||||
model: gpt-5.4
|
||||
provider: openai
|
||||
source_hash: 93b57c7373e4ccd521b10945346db67991543bd2bed4cc8b6641e1f215b48579
|
||||
source_hash: ba2183bfa8802871e4ef33a0ebea290606e8351e9e83e25ee72456addb768730
|
||||
source_path: plugins/manifest.md
|
||||
workflow: 15
|
||||
---
|
||||
|
||||
# Manifest Pluginu (`openclaw.plugin.json`)
|
||||
# Manifest Plugin (`openclaw.plugin.json`)
|
||||
|
||||
Ta strona dotyczy wyłącznie **natywnego manifestu Pluginu OpenClaw**.
|
||||
Ta strona dotyczy wyłącznie **natywnego manifestu Plugin OpenClaw**.
|
||||
|
||||
Informacje o zgodnych układach bundli znajdziesz tutaj: [Bundle Pluginów](/pl/plugins/bundles).
|
||||
Informacje o zgodnych układach bundli znajdziesz w [Plugin bundles](/pl/plugins/bundles).
|
||||
|
||||
Zgodne formaty bundli używają innych plików manifestu:
|
||||
|
||||
- Bundle Codex: `.codex-plugin/plugin.json`
|
||||
- Bundle Claude: `.claude-plugin/plugin.json` albo domyślny układ komponentów Claude
|
||||
- bundle Codex: `.codex-plugin/plugin.json`
|
||||
- bundle Claude: `.claude-plugin/plugin.json` lub domyślny układ komponentu Claude
|
||||
bez manifestu
|
||||
- Bundle Cursor: `.cursor-plugin/plugin.json`
|
||||
- bundle Cursor: `.cursor-plugin/plugin.json`
|
||||
|
||||
OpenClaw automatycznie wykrywa również te układy bundli, ale nie są one walidowane
|
||||
względem opisanego tutaj schematu `openclaw.plugin.json`.
|
||||
OpenClaw również automatycznie wykrywa te układy bundli, ale nie są one walidowane
|
||||
względem schematu `openclaw.plugin.json` opisanego tutaj.
|
||||
|
||||
W przypadku zgodnych bundli OpenClaw obecnie odczytuje metadane bundla oraz zadeklarowane
|
||||
korzenie Skills, korzenie poleceń Claude, domyślne wartości `settings.json` bundla Claude,
|
||||
domyślne wartości LSP bundla Claude oraz obsługiwane pakiety hooków, gdy układ odpowiada
|
||||
korzenie skilli, korzenie poleceń Claude, domyślne wartości `settings.json` bundla Claude,
|
||||
domyślne ustawienia LSP bundla Claude oraz obsługiwane pakiety hooków, gdy układ odpowiada
|
||||
oczekiwaniom środowiska uruchomieniowego OpenClaw.
|
||||
|
||||
Każdy natywny Plugin OpenClaw **musi** dostarczać plik `openclaw.plugin.json` w
|
||||
**katalogu głównym Pluginu**. OpenClaw używa tego manifestu do walidacji konfiguracji
|
||||
**bez wykonywania kodu Pluginu**. Brakujące lub nieprawidłowe manifesty są traktowane jako
|
||||
błędy Pluginu i blokują walidację konfiguracji.
|
||||
**katalogu głównym Plugin**. OpenClaw używa tego manifestu do walidacji konfiguracji
|
||||
**bez wykonywania kodu Plugin**. Brakujące lub nieprawidłowe manifesty są traktowane jako
|
||||
błędy Plugin i blokują walidację konfiguracji.
|
||||
|
||||
Zobacz pełny przewodnik po systemie Pluginów: [Pluginy](/pl/tools/plugin).
|
||||
Informacje o natywnym modelu capabilities i aktualnych wskazówkach dotyczących zgodności zewnętrznej:
|
||||
[Model capabilities](/pl/plugins/architecture#public-capability-model).
|
||||
Zobacz pełny przewodnik po systemie Plugin: [Plugins](/pl/tools/plugin).
|
||||
Informacje o natywnym modelu możliwości i aktualnych wytycznych dotyczących zewnętrznej kompatybilności:
|
||||
[Model możliwości](/pl/plugins/architecture#public-capability-model).
|
||||
|
||||
## Do czego służy ten plik
|
||||
|
||||
`openclaw.plugin.json` to metadane, które OpenClaw odczytuje, zanim załaduje kod
|
||||
Twojego Pluginu.
|
||||
`openclaw.plugin.json` to metadane, które OpenClaw odczytuje przed załadowaniem
|
||||
kodu Twojego Plugin.
|
||||
|
||||
Używaj go do:
|
||||
|
||||
- tożsamości Pluginu
|
||||
- tożsamości Plugin
|
||||
- walidacji konfiguracji
|
||||
- metadanych auth i onboardingu, które powinny być dostępne bez uruchamiania środowiska uruchomieniowego Pluginu
|
||||
- lekkich wskazówek aktywacji, które powierzchnie płaszczyzny sterowania mogą sprawdzać przed załadowaniem środowiska uruchomieniowego
|
||||
- lekkich deskryptorów konfiguracji, które powierzchnie konfiguracji/onboardingu mogą sprawdzać przed załadowaniem środowiska uruchomieniowego
|
||||
- metadanych aliasów i auto-enable, które powinny zostać rozstrzygnięte przed załadowaniem środowiska uruchomieniowego Pluginu
|
||||
- skróconych metadanych własności rodzin modeli, które powinny auto-activate
|
||||
Plugin przed załadowaniem środowiska uruchomieniowego
|
||||
- statycznych snapshotów własności capabilities używanych do zgodnego okablowania bundli i pokrycia kontraktów
|
||||
- metadanych konfiguracji specyficznych dla kanału, które powinny zostać scalone z powierzchniami katalogu i walidacji
|
||||
bez ładowania środowiska uruchomieniowego
|
||||
- metadanych uwierzytelniania i onboardingu, które powinny być dostępne bez uruchamiania środowiska uruchomieniowego Plugin
|
||||
- tanich wskazówek aktywacji, które powierzchnie płaszczyzny sterowania mogą sprawdzać przed załadowaniem środowiska uruchomieniowego
|
||||
- tanich deskryptorów konfiguracji, które powierzchnie konfiguracji/onboardingu mogą sprawdzać przed załadowaniem środowiska uruchomieniowego
|
||||
- metadanych aliasów i automatycznego włączania, które powinny być rozstrzygane przed załadowaniem środowiska uruchomieniowego Plugin
|
||||
- skróconych metadanych własności rodziny modeli, które powinny automatycznie aktywować Plugin przed załadowaniem środowiska uruchomieniowego
|
||||
- statycznych migawek własności możliwości używanych do zgodnego okablowania bundli i pokrycia kontraktów
|
||||
- tanich metadanych runnera QA, które współdzielony host `openclaw qa` może sprawdzać przed załadowaniem środowiska uruchomieniowego Plugin
|
||||
- metadanych konfiguracji specyficznych dla kanału, które powinny zostać scalone z powierzchniami katalogu i walidacji bez ładowania środowiska uruchomieniowego
|
||||
- wskazówek UI konfiguracji
|
||||
|
||||
Nie używaj go do:
|
||||
|
||||
- rejestrowania zachowania środowiska uruchomieniowego
|
||||
- deklarowania entrypointów kodu
|
||||
- rejestrowania zachowania w czasie wykonywania
|
||||
- deklarowania punktów wejścia kodu
|
||||
- metadanych instalacji npm
|
||||
|
||||
To należy do kodu Pluginu i `package.json`.
|
||||
Te elementy należą do kodu Plugin i `package.json`.
|
||||
|
||||
## Minimalny przykład
|
||||
|
||||
@ -140,64 +139,65 @@ To należy do kodu Pluginu i `package.json`.
|
||||
}
|
||||
```
|
||||
|
||||
## Informacje o polach najwyższego poziomu
|
||||
## Opis pól najwyższego poziomu
|
||||
|
||||
| Pole | Wymagane | Typ | Co oznacza |
|
||||
| Pole | Wymagane | Typ | Znaczenie |
|
||||
| ----------------------------------- | -------- | -------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
||||
| `id` | Tak | `string` | Kanoniczny identyfikator Pluginu. To identyfikator używany w `plugins.entries.<id>`. |
|
||||
| `configSchema` | Tak | `object` | Wbudowany schemat JSON dla konfiguracji tego Pluginu. |
|
||||
| `enabledByDefault` | Nie | `true` | Oznacza bundlowy Plugin jako domyślnie włączony. Pomiń to pole albo ustaw dowolną wartość inną niż `true`, aby pozostawić Plugin domyślnie wyłączony. |
|
||||
| `legacyPluginIds` | Nie | `string[]` | Starsze identyfikatory, które są normalizowane do tego kanonicznego identyfikatora Pluginu. |
|
||||
| `autoEnableWhenConfiguredProviders` | Nie | `string[]` | Identyfikatory dostawców, które powinny automatycznie włączać ten Plugin, gdy auth, konfiguracja lub odwołania do modeli na nie wskazują. |
|
||||
| `kind` | Nie | `"memory"` \| `"context-engine"` | Deklaruje wyłączny rodzaj Pluginu używany przez `plugins.slots.*`. |
|
||||
| `channels` | Nie | `string[]` | Identyfikatory kanałów należących do tego Pluginu. Używane do wykrywania i walidacji konfiguracji. |
|
||||
| `providers` | Nie | `string[]` | Identyfikatory dostawców należących do tego Pluginu. |
|
||||
| `modelSupport` | Nie | `object` | Należące do manifestu skrócone metadane rodzin modeli używane do automatycznego załadowania Pluginu przed środowiskiem uruchomieniowym. |
|
||||
| `cliBackends` | Nie | `string[]` | Identyfikatory backendów inferencji CLI należących do tego Pluginu. Używane do automatycznej aktywacji przy uruchomieniu na podstawie jawnych odwołań w konfiguracji. |
|
||||
| `commandAliases` | Nie | `object[]` | Nazwy poleceń należące do tego Pluginu, które powinny generować diagnostykę konfiguracji i CLI uwzględniającą Plugin jeszcze przed załadowaniem środowiska uruchomieniowego. |
|
||||
| `providerAuthEnvVars` | Nie | `Record<string, string[]>` | Lekkie metadane env dla auth dostawców, które OpenClaw może sprawdzać bez ładowania kodu Pluginu. |
|
||||
| `providerAuthAliases` | Nie | `Record<string, string>` | Identyfikatory dostawców, które powinny ponownie używać innego identyfikatora dostawcy do wyszukiwania auth, na przykład dostawca kodowania, który współdzieli bazowy klucz API dostawcy i profile auth. |
|
||||
| `channelEnvVars` | Nie | `Record<string, string[]>` | Lekkie metadane env dla kanałów, które OpenClaw może sprawdzać bez ładowania kodu Pluginu. Używaj tego dla konfiguracji kanałów sterowanej przez env albo powierzchni auth, które powinny widzieć ogólne pomocniki uruchamiania/konfiguracji. |
|
||||
| `providerAuthChoices` | Nie | `object[]` | Lekkie metadane wyboru auth dla selektorów onboardingu, rozstrzygania preferowanego dostawcy i prostego okablowania flag CLI. |
|
||||
| `activation` | Nie | `object` | Lekkie wskazówki aktywacji dla ładowania wyzwalanego przez dostawcę, polecenie, kanał, trasę i capability. Tylko metadane; rzeczywiste zachowanie nadal należy do środowiska uruchomieniowego Pluginu. |
|
||||
| `setup` | Nie | `object` | Lekkie deskryptory konfiguracji/onboardingu, które powierzchnie wykrywania i konfiguracji mogą sprawdzać bez ładowania środowiska uruchomieniowego Pluginu. |
|
||||
| `contracts` | Nie | `object` | Statyczny snapshot bundlowych capabilities dla speech, realtime transcription, realtime voice, media-understanding, image-generation, music-generation, video-generation, web-fetch, web search i własności narzędzi. |
|
||||
| `channelConfigs` | Nie | `Record<string, object>` | Metadane konfiguracji kanału należące do manifestu, scalane z powierzchniami wykrywania i walidacji przed załadowaniem środowiska uruchomieniowego. |
|
||||
| `skills` | Nie | `string[]` | Katalogi Skills do załadowania, względne względem katalogu głównego Pluginu. |
|
||||
| `name` | Nie | `string` | Przyjazna dla człowieka nazwa Pluginu. |
|
||||
| `description` | Nie | `string` | Krótkie podsumowanie wyświetlane na powierzchniach Pluginu. |
|
||||
| `version` | Nie | `string` | Informacyjna wersja Pluginu. |
|
||||
| `id` | Tak | `string` | Kanoniczny identyfikator Plugin. Jest to identyfikator używany w `plugins.entries.<id>`. |
|
||||
| `configSchema` | Tak | `object` | Wbudowany schemat JSON Schema dla konfiguracji tego Plugin. |
|
||||
| `enabledByDefault` | Nie | `true` | Oznacza bundlowany Plugin jako domyślnie włączony. Pomiń to pole lub ustaw dowolną wartość inną niż `true`, aby pozostawić Plugin domyślnie wyłączony. |
|
||||
| `legacyPluginIds` | Nie | `string[]` | Starsze identyfikatory normalizowane do tego kanonicznego identyfikatora Plugin. |
|
||||
| `autoEnableWhenConfiguredProviders` | Nie | `string[]` | Identyfikatory dostawców, które powinny automatycznie włączyć ten Plugin, gdy uwierzytelnianie, konfiguracja lub odwołania do modeli o nich wspominają. |
|
||||
| `kind` | Nie | `"memory"` \| `"context-engine"` | Deklaruje wyłączny rodzaj Plugin używany przez `plugins.slots.*`. |
|
||||
| `channels` | Nie | `string[]` | Identyfikatory kanałów należących do tego Plugin. Używane do wykrywania i walidacji konfiguracji. |
|
||||
| `providers` | Nie | `string[]` | Identyfikatory dostawców należących do tego Plugin. |
|
||||
| `modelSupport` | Nie | `object` | Należące do manifestu skrócone metadane rodziny modeli używane do automatycznego ładowania Plugin przed uruchomieniem środowiska wykonawczego. |
|
||||
| `cliBackends` | Nie | `string[]` | Identyfikatory backendów inferencji CLI należących do tego Plugin. Używane do automatycznej aktywacji przy uruchomieniu na podstawie jawnych odwołań w konfiguracji. |
|
||||
| `commandAliases` | Nie | `object[]` | Nazwy poleceń należących do tego Plugin, które powinny generować diagnostykę konfiguracji i CLI świadomą Plugin przed załadowaniem środowiska uruchomieniowego. |
|
||||
| `providerAuthEnvVars` | Nie | `Record<string, string[]>` | Lekkie metadane zmiennych środowiskowych uwierzytelniania dostawcy, które OpenClaw może sprawdzać bez ładowania kodu Plugin. |
|
||||
| `providerAuthAliases` | Nie | `Record<string, string>` | Identyfikatory dostawców, które powinny ponownie używać innego identyfikatora dostawcy do wyszukiwania uwierzytelniania, na przykład dostawca kodowania współdzielący bazowy klucz API i profile auth. |
|
||||
| `channelEnvVars` | Nie | `Record<string, string[]>` | Lekkie metadane zmiennych środowiskowych kanału, które OpenClaw może sprawdzać bez ładowania kodu Plugin. Użyj tego dla konfiguracji kanału sterowanej przez env lub powierzchni auth, które powinny być widoczne dla generycznych pomocników uruchamiania/konfiguracji. |
|
||||
| `providerAuthChoices` | Nie | `object[]` | Lekkie metadane wyboru uwierzytelniania dla selektorów onboardingu, rozstrzygania preferowanego dostawcy i prostego mapowania flag CLI. |
|
||||
| `activation` | Nie | `object` | Lekkie wskazówki aktywacji dla ładowania wyzwalanego przez dostawcę, polecenie, kanał, trasę i możliwości. Tylko metadane; rzeczywiste zachowanie nadal należy do środowiska uruchomieniowego Plugin. |
|
||||
| `setup` | Nie | `object` | Lekkie deskryptory konfiguracji/onboardingu, które powierzchnie wykrywania i konfiguracji mogą sprawdzać bez ładowania środowiska uruchomieniowego Plugin. |
|
||||
| `qaRunners` | Nie | `object[]` | Lekkie deskryptory runnerów QA używane przez współdzielony host `openclaw qa` przed załadowaniem środowiska uruchomieniowego Plugin. |
|
||||
| `contracts` | Nie | `object` | Statyczna migawka możliwości bundla dla speech, realtime transcription, realtime voice, media-understanding, image-generation, music-generation, video-generation, web-fetch, web search i własności narzędzi. |
|
||||
| `channelConfigs` | Nie | `Record<string, object>` | Należące do manifestu metadane konfiguracji kanału scalane z powierzchniami wykrywania i walidacji przed załadowaniem środowiska uruchomieniowego. |
|
||||
| `skills` | Nie | `string[]` | Katalogi Skills do załadowania, względne względem katalogu głównego Plugin. |
|
||||
| `name` | Nie | `string` | Czytelna dla człowieka nazwa Plugin. |
|
||||
| `description` | Nie | `string` | Krótkie podsumowanie wyświetlane na powierzchniach Plugin. |
|
||||
| `version` | Nie | `string` | Informacyjna wersja Plugin. |
|
||||
| `uiHints` | Nie | `Record<string, object>` | Etykiety UI, placeholdery i wskazówki dotyczące wrażliwości dla pól konfiguracji. |
|
||||
|
||||
## Informacje o `providerAuthChoices`
|
||||
## Opis `providerAuthChoices`
|
||||
|
||||
Każdy wpis `providerAuthChoices` opisuje jeden wybór onboardingu lub auth.
|
||||
OpenClaw odczytuje to, zanim załaduje się środowisko uruchomieniowe dostawcy.
|
||||
Każdy wpis `providerAuthChoices` opisuje jeden wybór onboardingu lub uwierzytelniania.
|
||||
OpenClaw odczytuje to przed załadowaniem środowiska uruchomieniowego dostawcy.
|
||||
|
||||
| Pole | Wymagane | Typ | Co oznacza |
|
||||
| --------------------- | -------- | ----------------------------------------------- | -------------------------------------------------------------------------------------------------------- |
|
||||
| `provider` | Tak | `string` | Identyfikator dostawcy, do którego należy ten wybór. |
|
||||
| `method` | Tak | `string` | Identyfikator metody auth, do której należy przekazać sterowanie. |
|
||||
| `choiceId` | Tak | `string` | Stabilny identyfikator wyboru auth używany przez onboarding i przepływy CLI. |
|
||||
| `choiceLabel` | Nie | `string` | Etykieta widoczna dla użytkownika. Jeśli zostanie pominięta, OpenClaw użyje `choiceId`. |
|
||||
| `choiceHint` | Nie | `string` | Krótki tekst pomocniczy dla selektora. |
|
||||
| `assistantPriority` | Nie | `number` | Niższe wartości są sortowane wcześniej w interaktywnych selektorach sterowanych przez asystenta. |
|
||||
| `assistantVisibility` | Nie | `"visible"` \| `"manual-only"` | Ukrywa wybór w selektorach asystenta, nadal pozwalając na ręczny wybór w CLI. |
|
||||
| `deprecatedChoiceIds` | Nie | `string[]` | Starsze identyfikatory wyboru, które powinny przekierowywać użytkowników do tego wyboru zastępczego. |
|
||||
| `groupId` | Nie | `string` | Opcjonalny identyfikator grupy do grupowania powiązanych wyborów. |
|
||||
| `groupLabel` | Nie | `string` | Etykieta tej grupy widoczna dla użytkownika. |
|
||||
| `groupHint` | Nie | `string` | Krótki tekst pomocniczy dla grupy. |
|
||||
| `optionKey` | Nie | `string` | Wewnętrzny klucz opcji dla prostych przepływów auth z jedną flagą. |
|
||||
| `cliFlag` | Nie | `string` | Nazwa flagi CLI, taka jak `--openrouter-api-key`. |
|
||||
| `cliOption` | Nie | `string` | Pełna postać opcji CLI, taka jak `--openrouter-api-key <key>`. |
|
||||
| `cliDescription` | Nie | `string` | Opis używany w pomocy CLI. |
|
||||
| `onboardingScopes` | Nie | `Array<"text-inference" \| "image-generation">` | Na których powierzchniach onboardingu ten wybór powinien się pojawiać. Jeśli zostanie pominięte, domyślnie używane jest `["text-inference"]`. |
|
||||
| Pole | Wymagane | Typ | Znaczenie |
|
||||
| --------------------- | -------- | ----------------------------------------------- | ---------------------------------------------------------------------------------------------------------- |
|
||||
| `provider` | Tak | `string` | Identyfikator dostawcy, do którego należy ten wybór. |
|
||||
| `method` | Tak | `string` | Identyfikator metody uwierzytelniania, do której należy przekazać sterowanie. |
|
||||
| `choiceId` | Tak | `string` | Stabilny identyfikator wyboru uwierzytelniania używany przez onboarding i przepływy CLI. |
|
||||
| `choiceLabel` | Nie | `string` | Etykieta widoczna dla użytkownika. Jeśli zostanie pominięta, OpenClaw użyje `choiceId`. |
|
||||
| `choiceHint` | Nie | `string` | Krótki tekst pomocniczy dla selektora. |
|
||||
| `assistantPriority` | Nie | `number` | Niższe wartości są sortowane wcześniej w interaktywnych selektorach sterowanych przez asystenta. |
|
||||
| `assistantVisibility` | Nie | `"visible"` \| `"manual-only"` | Ukrywa wybór przed selektorami asystenta, nadal pozwalając na ręczny wybór w CLI. |
|
||||
| `deprecatedChoiceIds` | Nie | `string[]` | Starsze identyfikatory wyboru, które powinny przekierowywać użytkowników do tego wyboru zastępczego. |
|
||||
| `groupId` | Nie | `string` | Opcjonalny identyfikator grupy do grupowania powiązanych wyborów. |
|
||||
| `groupLabel` | Nie | `string` | Etykieta tej grupy widoczna dla użytkownika. |
|
||||
| `groupHint` | Nie | `string` | Krótki tekst pomocniczy dla grupy. |
|
||||
| `optionKey` | Nie | `string` | Wewnętrzny klucz opcji dla prostych przepływów uwierzytelniania z jedną flagą. |
|
||||
| `cliFlag` | Nie | `string` | Nazwa flagi CLI, na przykład `--openrouter-api-key`. |
|
||||
| `cliOption` | Nie | `string` | Pełny kształt opcji CLI, na przykład `--openrouter-api-key <key>`. |
|
||||
| `cliDescription` | Nie | `string` | Opis używany w pomocy CLI. |
|
||||
| `onboardingScopes` | Nie | `Array<"text-inference" \| "image-generation">` | Określa, na których powierzchniach onboardingu ten wybór powinien się pojawiać. Jeśli zostanie pominięte, domyślnie używane jest `["text-inference"]`. |
|
||||
|
||||
## Informacje o `commandAliases`
|
||||
## Opis `commandAliases`
|
||||
|
||||
Używaj `commandAliases`, gdy Plugin posiada nazwę polecenia środowiska uruchomieniowego, którą użytkownicy mogą
|
||||
omyłkowo umieścić w `plugins.allow` albo próbować uruchomić jako główne polecenie CLI. OpenClaw
|
||||
używa tych metadanych do diagnostyki bez importowania kodu środowiska uruchomieniowego Pluginu.
|
||||
Używaj `commandAliases`, gdy Plugin jest właścicielem nazwy polecenia czasu wykonywania, którą użytkownicy mogą
|
||||
omyłkowo umieścić w `plugins.allow` lub próbować uruchomić jako główne polecenie CLI. OpenClaw
|
||||
używa tych metadanych do diagnostyki bez importowania kodu środowiska uruchomieniowego Plugin.
|
||||
|
||||
```json
|
||||
{
|
||||
@ -211,22 +211,45 @@ używa tych metadanych do diagnostyki bez importowania kodu środowiska uruchomi
|
||||
}
|
||||
```
|
||||
|
||||
| Pole | Wymagane | Typ | Co oznacza |
|
||||
| ------------ | -------- | ----------------- | ----------------------------------------------------------------------------------- |
|
||||
| `name` | Tak | `string` | Nazwa polecenia należąca do tego Pluginu. |
|
||||
| `kind` | Nie | `"runtime-slash"` | Oznacza alias jako polecenie ukośnikowe czatu, a nie główne polecenie CLI. |
|
||||
| `cliCommand` | Nie | `string` | Powiązane główne polecenie CLI, które należy zasugerować dla operacji CLI, jeśli istnieje. |
|
||||
| Pole | Wymagane | Typ | Znaczenie |
|
||||
| ------------ | -------- | ----------------- | ---------------------------------------------------------------------- |
|
||||
| `name` | Tak | `string` | Nazwa polecenia należąca do tego Plugin. |
|
||||
| `kind` | Nie | `"runtime-slash"` | Oznacza alias jako polecenie slash czatu, a nie główne polecenie CLI. |
|
||||
| `cliCommand` | Nie | `string` | Powiązane główne polecenie CLI sugerowane dla operacji CLI, jeśli istnieje. |
|
||||
|
||||
## Informacje o `activation`
|
||||
## Opis `activation`
|
||||
|
||||
Używaj `activation`, gdy Plugin może w prosty sposób zadeklarować, które zdarzenia płaszczyzny sterowania
|
||||
powinny aktywować go później.
|
||||
|
||||
Ten blok zawiera wyłącznie metadane. Nie rejestruje zachowania środowiska uruchomieniowego i nie
|
||||
zastępuje `register(...)`, `setupEntry` ani innych entrypointów środowiska uruchomieniowego/Pluginu.
|
||||
Obecni konsumenci używają go jako wskazówki zawężającej przed szerszym ładowaniem Pluginów, więc
|
||||
brak metadanych aktywacji zwykle wpływa tylko na wydajność; nie powinien zmieniać
|
||||
poprawności, dopóki nadal istnieją starsze fallbacki własności manifestu.
|
||||
## Opis `qaRunners`
|
||||
|
||||
Używaj `qaRunners`, gdy Plugin dodaje jeden lub więcej runnerów transportu pod
|
||||
wspólnym korzeniem `openclaw qa`. Zachowaj te metadane jako lekkie i statyczne; środowisko uruchomieniowe Plugin
|
||||
nadal odpowiada za faktyczną rejestrację CLI przez lekką powierzchnię
|
||||
`runtime-api.ts`, która eksportuje `qaRunnerCliRegistrations`.
|
||||
|
||||
```json
|
||||
{
|
||||
"qaRunners": [
|
||||
{
|
||||
"commandName": "matrix",
|
||||
"description": "Uruchom wspieraną przez Docker ścieżkę live QA Matrix na jednorazowym homeserverze"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
| Pole | Wymagane | Typ | Znaczenie |
|
||||
| ------------- | -------- | -------- | ------------------------------------------------------------------- |
|
||||
| `commandName` | Tak | `string` | Podpolecenie montowane pod `openclaw qa`, na przykład `matrix`. |
|
||||
| `description` | Nie | `string` | Zapasowy tekst pomocy używany, gdy współdzielony host potrzebuje polecenia zastępczego. |
|
||||
|
||||
Ten blok to tylko metadane. Nie rejestruje zachowania w czasie wykonywania i nie
|
||||
zastępuje `register(...)`, `setupEntry` ani innych punktów wejścia runtime/Plugin.
|
||||
Obecni konsumenci używają go jako wskazówki zawężającej przed szerszym ładowaniem Plugin, więc
|
||||
brak metadanych aktywacji zwykle wpływa tylko na wydajność; nie powinien
|
||||
zmieniać poprawności, dopóki istnieją jeszcze starsze fallbacki własności manifestu.
|
||||
|
||||
```json
|
||||
{
|
||||
@ -240,27 +263,26 @@ poprawności, dopóki nadal istnieją starsze fallbacki własności manifestu.
|
||||
}
|
||||
```
|
||||
|
||||
| Pole | Wymagane | Typ | Co oznacza |
|
||||
| ---------------- | -------- | ---------------------------------------------------- | ------------------------------------------------------------------- |
|
||||
| `onProviders` | Nie | `string[]` | Identyfikatory dostawców, które powinny aktywować ten Plugin po zażądaniu. |
|
||||
| `onCommands` | Nie | `string[]` | Identyfikatory poleceń, które powinny aktywować ten Plugin. |
|
||||
| `onChannels` | Nie | `string[]` | Identyfikatory kanałów, które powinny aktywować ten Plugin. |
|
||||
| `onRoutes` | Nie | `string[]` | Rodzaje tras, które powinny aktywować ten Plugin. |
|
||||
| `onCapabilities` | Nie | `Array<"provider" \| "channel" \| "tool" \| "hook">` | Szerokie wskazówki capabilities używane przez planowanie aktywacji płaszczyzny sterowania. |
|
||||
| Pole | Wymagane | Typ | Znaczenie |
|
||||
| ---------------- | -------- | ---------------------------------------------------- | ------------------------------------------------------------------ |
|
||||
| `onProviders` | Nie | `string[]` | Identyfikatory dostawców, które powinny aktywować ten Plugin po żądaniu. |
|
||||
| `onCommands` | Nie | `string[]` | Identyfikatory poleceń, które powinny aktywować ten Plugin. |
|
||||
| `onChannels` | Nie | `string[]` | Identyfikatory kanałów, które powinny aktywować ten Plugin. |
|
||||
| `onRoutes` | Nie | `string[]` | Rodzaje tras, które powinny aktywować ten Plugin. |
|
||||
| `onCapabilities` | Nie | `Array<"provider" \| "channel" \| "tool" \| "hook">` | Szerokie wskazówki dotyczące możliwości używane przez planowanie aktywacji płaszczyzny sterowania. |
|
||||
|
||||
Obecni aktywni konsumenci:
|
||||
|
||||
- planowanie CLI wyzwalane poleceniem wraca awaryjnie do starszych
|
||||
`commandAliases[].cliCommand` albo `commandAliases[].name`
|
||||
- planowanie konfiguracji/kanałów wyzwalane kanałem wraca awaryjnie do starszej własności
|
||||
`channels[]`, gdy brakuje jawnych metadanych aktywacji kanału
|
||||
- planowanie konfiguracji/środowiska uruchomieniowego wyzwalane dostawcą wraca awaryjnie do starszej
|
||||
własności `providers[]` i `cliBackends[]` najwyższego poziomu, gdy brakuje jawnych metadanych
|
||||
aktywacji dostawcy
|
||||
- planowanie CLI wyzwalane poleceniem korzysta awaryjnie ze starszego
|
||||
`commandAliases[].cliCommand` lub `commandAliases[].name`
|
||||
- planowanie konfiguracji/kanału wyzwalane kanałem korzysta awaryjnie ze starszej
|
||||
własności `channels[]`, gdy brakuje jawnych metadanych aktywacji kanału
|
||||
- planowanie konfiguracji/runtime wyzwalane dostawcą korzysta awaryjnie ze starszej
|
||||
własności `providers[]` i najwyższego poziomu `cliBackends[]`, gdy brakuje jawnych metadanych aktywacji dostawcy
|
||||
|
||||
## Informacje o `setup`
|
||||
## Opis `setup`
|
||||
|
||||
Używaj `setup`, gdy powierzchnie konfiguracji i onboardingu potrzebują lekkich metadanych należących do Pluginu
|
||||
Używaj `setup`, gdy powierzchnie konfiguracji i onboardingu potrzebują lekkich metadanych należących do Plugin
|
||||
przed załadowaniem środowiska uruchomieniowego.
|
||||
|
||||
```json
|
||||
@ -280,41 +302,41 @@ przed załadowaniem środowiska uruchomieniowego.
|
||||
}
|
||||
```
|
||||
|
||||
`cliBackends` najwyższego poziomu pozostaje prawidłowe i nadal opisuje backendy
|
||||
Najwyższego poziomu `cliBackends` pozostaje prawidłowe i nadal opisuje backendy
|
||||
inferencji CLI. `setup.cliBackends` to powierzchnia deskryptorów specyficzna dla konfiguracji
|
||||
dla przepływów płaszczyzny sterowania/konfiguracji, które powinny pozostać wyłącznie metadanymi.
|
||||
|
||||
Jeśli są obecne, `setup.providers` i `setup.cliBackends` są preferowaną
|
||||
powierzchnią wyszukiwania najpierw po deskryptorach dla wykrywania konfiguracji. Jeśli deskryptor tylko
|
||||
zawęża kandydujący Plugin, a konfiguracja nadal potrzebuje bogatszych hooków środowiska uruchomieniowego w czasie konfiguracji,
|
||||
powierzchnią wyszukiwania konfiguracji w modelu descriptor-first dla wykrywania konfiguracji. Jeśli deskryptor tylko
|
||||
zawęża kandydujący Plugin, a konfiguracja nadal potrzebuje bogatszych hooków runtime na etapie konfiguracji,
|
||||
ustaw `requiresRuntime: true` i pozostaw `setup-api` jako
|
||||
awaryjną ścieżkę wykonania.
|
||||
zapasową ścieżkę wykonania.
|
||||
|
||||
Ponieważ wyszukiwanie konfiguracji może wykonywać należący do Pluginu kod `setup-api`,
|
||||
znormalizowane wartości `setup.providers[].id` i `setup.cliBackends[]` muszą pozostać unikalne globalnie
|
||||
wśród wykrytych Pluginów. Niejednoznaczna własność kończy się bez wyboru zwycięzcy
|
||||
według kolejności wykrycia.
|
||||
Ponieważ wyszukiwanie konfiguracji może wykonywać należący do Plugin kod `setup-api`,
|
||||
znormalizowane wartości `setup.providers[].id` i `setup.cliBackends[]` muszą pozostać unikalne
|
||||
we wszystkich wykrytych Plugin. Niejednoznaczna własność kończy się bezpieczną odmową zamiast wybierania
|
||||
zwycięzcy na podstawie kolejności wykrywania.
|
||||
|
||||
### Informacje o `setup.providers`
|
||||
### Opis `setup.providers`
|
||||
|
||||
| Pole | Wymagane | Typ | Co oznacza |
|
||||
| ------------- | -------- | ---------- | -------------------------------------------------------------------------------------------- |
|
||||
| `id` | Tak | `string` | Identyfikator dostawcy udostępniany podczas konfiguracji lub onboardingu. Znormalizowane identyfikatory muszą być globalnie unikalne. |
|
||||
| `authMethods` | Nie | `string[]` | Identyfikatory metod konfiguracji/auth obsługiwanych przez tego dostawcę bez ładowania pełnego środowiska uruchomieniowego. |
|
||||
| `envVars` | Nie | `string[]` | Zmienne env, które ogólne powierzchnie konfiguracji/statusu mogą sprawdzać przed załadowaniem środowiska uruchomieniowego Pluginu. |
|
||||
| Pole | Wymagane | Typ | Znaczenie |
|
||||
| ------------- | -------- | ---------- | ------------------------------------------------------------------------------------------ |
|
||||
| `id` | Tak | `string` | Identyfikator dostawcy ujawniany podczas konfiguracji lub onboardingu. Zachowaj globalnie unikalne znormalizowane identyfikatory. |
|
||||
| `authMethods` | Nie | `string[]` | Identyfikatory metod konfiguracji/uwierzytelniania, które ten dostawca obsługuje bez ładowania pełnego runtime. |
|
||||
| `envVars` | Nie | `string[]` | Zmienne środowiskowe, które generyczne powierzchnie konfiguracji/statusu mogą sprawdzać przed załadowaniem środowiska uruchomieniowego Plugin. |
|
||||
|
||||
### Pola `setup`
|
||||
|
||||
| Pole | Wymagane | Typ | Co oznacza |
|
||||
| ------------------ | -------- | ---------- | ---------------------------------------------------------------------------------------------------- |
|
||||
| `providers` | Nie | `object[]` | Deskryptory konfiguracji dostawców udostępniane podczas konfiguracji i onboardingu. |
|
||||
| `cliBackends` | Nie | `string[]` | Identyfikatory backendów czasu konfiguracji używane do wyszukiwania konfiguracji najpierw po deskryptorach. Znormalizowane identyfikatory muszą być globalnie unikalne. |
|
||||
| `configMigrations` | Nie | `string[]` | Identyfikatory migracji konfiguracji należące do powierzchni konfiguracji tego Pluginu. |
|
||||
| `requiresRuntime` | Nie | `boolean` | Czy konfiguracja nadal wymaga wykonania `setup-api` po wyszukaniu deskryptora. |
|
||||
| Pole | Wymagane | Typ | Znaczenie |
|
||||
| ------------------ | -------- | ---------- | ----------------------------------------------------------------------------------------------------- |
|
||||
| `providers` | Nie | `object[]` | Deskryptory konfiguracji dostawców ujawniane podczas konfiguracji i onboardingu. |
|
||||
| `cliBackends` | Nie | `string[]` | Identyfikatory backendów czasu konfiguracji używane do wyszukiwania konfiguracji w modelu descriptor-first. Zachowaj globalnie unikalne znormalizowane identyfikatory. |
|
||||
| `configMigrations` | Nie | `string[]` | Identyfikatory migracji konfiguracji należące do powierzchni konfiguracji tego Plugin. |
|
||||
| `requiresRuntime` | Nie | `boolean` | Czy konfiguracja nadal wymaga wykonania `setup-api` po wyszukaniu deskryptora. |
|
||||
|
||||
## Informacje o `uiHints`
|
||||
## Opis `uiHints`
|
||||
|
||||
`uiHints` to mapa od nazw pól konfiguracji do małych wskazówek renderowania.
|
||||
`uiHints` to mapa nazw pól konfiguracji do małych wskazówek renderowania.
|
||||
|
||||
```json
|
||||
{
|
||||
@ -331,7 +353,7 @@ według kolejności wykrycia.
|
||||
|
||||
Każda wskazówka pola może zawierać:
|
||||
|
||||
| Pole | Typ | Co oznacza |
|
||||
| Pole | Typ | Znaczenie |
|
||||
| ------------- | ---------- | ---------------------------------------- |
|
||||
| `label` | `string` | Etykieta pola widoczna dla użytkownika. |
|
||||
| `help` | `string` | Krótki tekst pomocniczy. |
|
||||
@ -340,10 +362,10 @@ Każda wskazówka pola może zawierać:
|
||||
| `sensitive` | `boolean` | Oznacza pole jako sekretne lub wrażliwe. |
|
||||
| `placeholder` | `string` | Tekst placeholdera dla pól formularza. |
|
||||
|
||||
## Informacje o `contracts`
|
||||
## Opis `contracts`
|
||||
|
||||
Używaj `contracts` wyłącznie dla statycznych metadanych własności capabilities, które OpenClaw może
|
||||
odczytać bez importowania środowiska uruchomieniowego Pluginu.
|
||||
Używaj `contracts` tylko dla statycznych metadanych własności możliwości, które OpenClaw może
|
||||
odczytać bez importowania środowiska uruchomieniowego Plugin.
|
||||
|
||||
```json
|
||||
{
|
||||
@ -363,21 +385,21 @@ odczytać bez importowania środowiska uruchomieniowego Pluginu.
|
||||
|
||||
Każda lista jest opcjonalna:
|
||||
|
||||
| Pole | Typ | Co oznacza |
|
||||
| -------------------------------- | ---------- | ------------------------------------------------------------ |
|
||||
| `speechProviders` | `string[]` | Identyfikatory dostawców speech należących do tego Pluginu. |
|
||||
| `realtimeTranscriptionProviders` | `string[]` | Identyfikatory dostawców realtime transcription należących do tego Pluginu. |
|
||||
| `realtimeVoiceProviders` | `string[]` | Identyfikatory dostawców realtime voice należących do tego Pluginu. |
|
||||
| `mediaUnderstandingProviders` | `string[]` | Identyfikatory dostawców media-understanding należących do tego Pluginu. |
|
||||
| `imageGenerationProviders` | `string[]` | Identyfikatory dostawców image-generation należących do tego Pluginu. |
|
||||
| `videoGenerationProviders` | `string[]` | Identyfikatory dostawców video-generation należących do tego Pluginu. |
|
||||
| `webFetchProviders` | `string[]` | Identyfikatory dostawców web-fetch należących do tego Pluginu. |
|
||||
| `webSearchProviders` | `string[]` | Identyfikatory dostawców web search należących do tego Pluginu. |
|
||||
| `tools` | `string[]` | Nazwy narzędzi agenta należących do tego Pluginu dla bundlowych kontroli kontraktów. |
|
||||
| Pole | Typ | Znaczenie |
|
||||
| -------------------------------- | ---------- | ------------------------------------------------------------------- |
|
||||
| `speechProviders` | `string[]` | Identyfikatory dostawców speech należących do tego Plugin. |
|
||||
| `realtimeTranscriptionProviders` | `string[]` | Identyfikatory dostawców realtime transcription należących do tego Plugin. |
|
||||
| `realtimeVoiceProviders` | `string[]` | Identyfikatory dostawców realtime voice należących do tego Plugin. |
|
||||
| `mediaUnderstandingProviders` | `string[]` | Identyfikatory dostawców media-understanding należących do tego Plugin. |
|
||||
| `imageGenerationProviders` | `string[]` | Identyfikatory dostawców image-generation należących do tego Plugin. |
|
||||
| `videoGenerationProviders` | `string[]` | Identyfikatory dostawców video-generation należących do tego Plugin. |
|
||||
| `webFetchProviders` | `string[]` | Identyfikatory dostawców web-fetch należących do tego Plugin. |
|
||||
| `webSearchProviders` | `string[]` | Identyfikatory dostawców web search należących do tego Plugin. |
|
||||
| `tools` | `string[]` | Nazwy narzędzi agenta należących do tego Plugin dla sprawdzania kontraktów bundli. |
|
||||
|
||||
## Informacje o `channelConfigs`
|
||||
## Opis `channelConfigs`
|
||||
|
||||
Używaj `channelConfigs`, gdy Plugin kanału potrzebuje lekkich metadanych konfiguracji przed
|
||||
Używaj `channelConfigs`, gdy kanałowy Plugin potrzebuje lekkich metadanych konfiguracji przed
|
||||
załadowaniem środowiska uruchomieniowego.
|
||||
|
||||
```json
|
||||
@ -393,12 +415,12 @@ załadowaniem środowiska uruchomieniowego.
|
||||
},
|
||||
"uiHints": {
|
||||
"homeserverUrl": {
|
||||
"label": "URL Homeservera",
|
||||
"label": "URL homeserwera",
|
||||
"placeholder": "https://matrix.example.com"
|
||||
}
|
||||
},
|
||||
"label": "Matrix",
|
||||
"description": "Połączenie z homeserverem Matrix",
|
||||
"description": "Połączenie z homeserwerem Matrix",
|
||||
"preferOver": ["matrix-legacy"]
|
||||
}
|
||||
}
|
||||
@ -407,18 +429,18 @@ załadowaniem środowiska uruchomieniowego.
|
||||
|
||||
Każdy wpis kanału może zawierać:
|
||||
|
||||
| Pole | Typ | Co oznacza |
|
||||
| ------------- | ------------------------ | -------------------------------------------------------------------------------------------- |
|
||||
| `schema` | `object` | Schemat JSON dla `channels.<id>`. Wymagany dla każdego zadeklarowanego wpisu konfiguracji kanału. |
|
||||
| `uiHints` | `Record<string, object>` | Opcjonalne etykiety UI/placeholdery/wskazówki dotyczące wrażliwości dla tej sekcji konfiguracji kanału. |
|
||||
| `label` | `string` | Etykieta kanału scalana z powierzchniami wyboru i inspekcji, gdy metadane środowiska uruchomieniowego nie są jeszcze gotowe. |
|
||||
| `description` | `string` | Krótki opis kanału dla powierzchni inspekcji i katalogu. |
|
||||
| `preferOver` | `string[]` | Starsze lub mniej priorytetowe identyfikatory Pluginów, które ten kanał powinien wyprzedzać na powierzchniach wyboru. |
|
||||
| Pole | Typ | Znaczenie |
|
||||
| ------------- | ------------------------ | ------------------------------------------------------------------------------------------ |
|
||||
| `schema` | `object` | JSON Schema dla `channels.<id>`. Wymagane dla każdego zadeklarowanego wpisu konfiguracji kanału. |
|
||||
| `uiHints` | `Record<string, object>` | Opcjonalne etykiety UI/placeholdery/wskazówki wrażliwości dla tej sekcji konfiguracji kanału. |
|
||||
| `label` | `string` | Etykieta kanału scalana z powierzchniami wyboru i inspekcji, gdy metadane runtime nie są gotowe. |
|
||||
| `description` | `string` | Krótki opis kanału dla powierzchni inspekcji i katalogu. |
|
||||
| `preferOver` | `string[]` | Starsze lub niższopriorytetowe identyfikatory Plugin, które ten kanał powinien wyprzedzać na powierzchniach wyboru. |
|
||||
|
||||
## Informacje o `modelSupport`
|
||||
## Opis `modelSupport`
|
||||
|
||||
Używaj `modelSupport`, gdy OpenClaw powinien wywnioskować Plugin dostawcy na podstawie
|
||||
skróconych identyfikatorów modeli, takich jak `gpt-5.4` albo `claude-sonnet-4.6`, zanim załaduje się środowisko uruchomieniowe Pluginu.
|
||||
Używaj `modelSupport`, gdy OpenClaw powinien wywnioskować Twój Plugin dostawcy na podstawie
|
||||
skrótowych identyfikatorów modeli takich jak `gpt-5.4` lub `claude-sonnet-4.6` przed załadowaniem runtime Plugin.
|
||||
|
||||
```json
|
||||
{
|
||||
@ -431,73 +453,73 @@ skróconych identyfikatorów modeli, takich jak `gpt-5.4` albo `claude-sonnet-4.
|
||||
|
||||
OpenClaw stosuje następujący priorytet:
|
||||
|
||||
- jawne odwołania `provider/model` używają należących do właściciela metadanych manifestu `providers`
|
||||
- `modelPatterns` mają wyższy priorytet niż `modelPrefixes`
|
||||
- jeśli pasuje jeden Plugin zewnętrzny i jeden Plugin bundlowy, wygrywa Plugin zewnętrzny
|
||||
- pozostała niejednoznaczność jest ignorowana, dopóki użytkownik lub konfiguracja nie wskaże dostawcy
|
||||
- jawne odwołania `provider/model` używają metadanych manifestu `providers` właściciela
|
||||
- `modelPatterns` mają pierwszeństwo przed `modelPrefixes`
|
||||
- jeśli pasują jednocześnie jeden Plugin niebundlowany i jeden bundlowany, wygrywa Plugin
|
||||
niebundlowany
|
||||
- pozostała niejednoznaczność jest ignorowana, dopóki użytkownik lub konfiguracja nie określi dostawcy
|
||||
|
||||
Pola:
|
||||
|
||||
| Pole | Typ | Co oznacza |
|
||||
| Pole | Typ | Znaczenie |
|
||||
| --------------- | ---------- | ------------------------------------------------------------------------------ |
|
||||
| `modelPrefixes` | `string[]` | Prefiksy dopasowywane przez `startsWith` do skróconych identyfikatorów modeli. |
|
||||
| `modelPatterns` | `string[]` | Źródła regex dopasowywane do skróconych identyfikatorów modeli po usunięciu sufiksu profilu. |
|
||||
| `modelPrefixes` | `string[]` | Prefiksy dopasowywane przez `startsWith` do skrótowych identyfikatorów modeli. |
|
||||
| `modelPatterns` | `string[]` | Źródła regex dopasowywane do skrótowych identyfikatorów modeli po usunięciu sufiksu profilu. |
|
||||
|
||||
Starsze klucze capabilities najwyższego poziomu są przestarzałe. Użyj `openclaw doctor --fix`, aby
|
||||
Starsze klucze możliwości najwyższego poziomu są przestarzałe. Użyj `openclaw doctor --fix`, aby
|
||||
przenieść `speechProviders`, `realtimeTranscriptionProviders`,
|
||||
`realtimeVoiceProviders`, `mediaUnderstandingProviders`,
|
||||
`imageGenerationProviders`, `videoGenerationProviders`,
|
||||
`webFetchProviders` i `webSearchProviders` do `contracts`; zwykłe
|
||||
ładowanie manifestu nie traktuje już tych pól najwyższego poziomu jako
|
||||
własności capabilities.
|
||||
własności możliwości.
|
||||
|
||||
## Manifest a `package.json`
|
||||
## Manifest a package.json
|
||||
|
||||
Te dwa pliki służą do różnych zadań:
|
||||
Te dwa pliki pełnią różne role:
|
||||
|
||||
| Plik | Używaj go do |
|
||||
| ---------------------- | ---------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `openclaw.plugin.json` | Wykrywania, walidacji konfiguracji, metadanych wyboru auth i wskazówek UI, które muszą istnieć przed uruchomieniem kodu Pluginu |
|
||||
| `package.json` | Metadanych npm, instalacji zależności oraz bloku `openclaw` używanego do entrypointów, bramek instalacji, konfiguracji lub metadanych katalogu |
|
||||
| Plik | Użycie |
|
||||
| ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `openclaw.plugin.json` | Wykrywanie, walidacja konfiguracji, metadane wyboru uwierzytelniania i wskazówki UI, które muszą istnieć przed uruchomieniem kodu Plugin |
|
||||
| `package.json` | Metadane npm, instalacja zależności oraz blok `openclaw` używany dla punktów wejścia, blokowania instalacji, konfiguracji lub metadanych katalogu |
|
||||
|
||||
Jeśli nie masz pewności, gdzie powinien trafić dany fragment metadanych, stosuj tę zasadę:
|
||||
Jeśli nie masz pewności, gdzie powinien należeć dany fragment metadanych, użyj tej zasady:
|
||||
|
||||
- jeśli OpenClaw musi znać go przed załadowaniem kodu Pluginu, umieść go w `openclaw.plugin.json`
|
||||
- jeśli dotyczy pakowania, plików wejściowych albo zachowania instalacji npm, umieść go w `package.json`
|
||||
- jeśli OpenClaw musi znać go przed załadowaniem kodu Plugin, umieść go w `openclaw.plugin.json`
|
||||
- jeśli dotyczy pakowania, plików wejściowych lub zachowania instalacji npm, umieść go w `package.json`
|
||||
|
||||
### Pola `package.json`, które wpływają na wykrywanie
|
||||
### Pola package.json wpływające na wykrywanie
|
||||
|
||||
Niektóre metadane Pluginów przed uruchomieniem celowo znajdują się w `package.json` w bloku
|
||||
Część metadanych Plugin używanych przed uruchomieniem celowo znajduje się w `package.json` w bloku
|
||||
`openclaw`, a nie w `openclaw.plugin.json`.
|
||||
|
||||
Ważne przykłady:
|
||||
|
||||
| Pole | Co oznacza |
|
||||
| ----------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `openclaw.extensions` | Deklaruje natywne entrypointy Pluginów. |
|
||||
| `openclaw.setupEntry` | Lekki entrypoint tylko do konfiguracji, używany podczas onboardingu i odroczonego uruchamiania kanału. |
|
||||
| `openclaw.channel` | Lekkie metadane katalogu kanałów, takie jak etykiety, ścieżki do dokumentacji, aliasy i tekst wyboru. |
|
||||
| `openclaw.channel.configuredState` | Lekkie metadane sprawdzania stanu konfiguracji, które mogą odpowiedzieć na pytanie „czy konfiguracja oparta wyłącznie na env już istnieje?” bez ładowania pełnego środowiska uruchomieniowego kanału. |
|
||||
| `openclaw.channel.persistedAuthState` | Lekkie metadane sprawdzania trwałego stanu auth, które mogą odpowiedzieć na pytanie „czy cokolwiek jest już zalogowane?” bez ładowania pełnego środowiska uruchomieniowego kanału. |
|
||||
| `openclaw.install.npmSpec` / `openclaw.install.localPath` | Wskazówki instalacji/aktualizacji dla Pluginów bundlowych i publikowanych zewnętrznie. |
|
||||
| Pole | Znaczenie |
|
||||
| ----------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `openclaw.extensions` | Deklaruje natywne punkty wejścia Plugin. |
|
||||
| `openclaw.setupEntry` | Lekki punkt wejścia tylko do konfiguracji, używany podczas onboardingu i odroczonego uruchamiania kanału. |
|
||||
| `openclaw.channel` | Lekkie metadane katalogu kanału, takie jak etykiety, ścieżki dokumentacji, aliasy i teksty wyboru. |
|
||||
| `openclaw.channel.configuredState` | Lekkie metadane sprawdzania stanu skonfigurowania, które potrafią odpowiedzieć na pytanie „czy konfiguracja tylko z env już istnieje?” bez ładowania pełnego runtime kanału. |
|
||||
| `openclaw.channel.persistedAuthState` | Lekkie metadane sprawdzania utrwalonego stanu auth, które potrafią odpowiedzieć na pytanie „czy cokolwiek jest już zalogowane?” bez ładowania pełnego runtime kanału. |
|
||||
| `openclaw.install.npmSpec` / `openclaw.install.localPath` | Wskazówki instalacji/aktualizacji dla Plugin bundlowanych i publikowanych zewnętrznie. |
|
||||
| `openclaw.install.defaultChoice` | Preferowana ścieżka instalacji, gdy dostępnych jest wiele źródeł instalacji. |
|
||||
| `openclaw.install.minHostVersion` | Minimalna obsługiwana wersja hosta OpenClaw, z użyciem dolnego ograniczenia semver, takiego jak `>=2026.3.22`. |
|
||||
| `openclaw.install.allowInvalidConfigRecovery` | Umożliwia wąską ścieżkę odzyskiwania po ponownej instalacji bundlowego Pluginu, gdy konfiguracja jest nieprawidłowa. |
|
||||
| `openclaw.startup.deferConfiguredChannelFullLoadUntilAfterListen` | Pozwala powierzchniom kanałów tylko do konfiguracji załadować się przed pełnym Pluginem kanału podczas uruchamiania. |
|
||||
| `openclaw.install.minHostVersion` | Minimalna obsługiwana wersja hosta OpenClaw, używająca dolnego ograniczenia semver, na przykład `>=2026.3.22`. |
|
||||
| `openclaw.install.allowInvalidConfigRecovery` | Pozwala na wąską ścieżkę odzyskiwania przez ponowną instalację bundlowanego Plugin, gdy konfiguracja jest nieprawidłowa. |
|
||||
| `openclaw.startup.deferConfiguredChannelFullLoadUntilAfterListen` | Pozwala ładować powierzchnie kanału tylko do konfiguracji przed pełnym Plugin kanału podczas uruchamiania. |
|
||||
|
||||
`openclaw.install.minHostVersion` jest wymuszane podczas instalacji i
|
||||
ładowania rejestru manifestów. Nieprawidłowe wartości są odrzucane; nowsze, ale poprawne wartości powodują pominięcie
|
||||
Pluginu na starszych hostach.
|
||||
`openclaw.install.minHostVersion` jest wymuszane podczas instalacji i ładowania
|
||||
rejestru manifestu. Nieprawidłowe wartości są odrzucane; nowsze, ale prawidłowe wartości powodują pominięcie
|
||||
Plugin na starszych hostach.
|
||||
|
||||
`openclaw.install.allowInvalidConfigRecovery` jest celowo wąskie. Nie
|
||||
sprawia, że dowolnie uszkodzone konfiguracje stają się możliwe do zainstalowania. Obecnie pozwala tylko
|
||||
przepływom instalacji odzyskać sprawność po określonych niepowodzeniach aktualizacji bundlowych Pluginów, takich jak
|
||||
brak ścieżki bundlowego Pluginu albo nieaktualny wpis `channels.<id>` dla tego samego
|
||||
bundlowego Pluginu. Niezwiązane błędy konfiguracji nadal blokują instalację i kierują operatorów
|
||||
sprawia, że dowolnie uszkodzone konfiguracje stają się możliwe do zainstalowania. Obecnie pozwala jedynie przepływom instalacji
|
||||
odzyskać działanie po określonych nieaktualnych błędach aktualizacji bundlowanego Plugin, takich jak
|
||||
brakująca ścieżka bundlowanego Plugin lub nieaktualny wpis `channels.<id>` dla tego samego
|
||||
bundlowanego Plugin. Niepowiązane błędy konfiguracji nadal blokują instalację i kierują operatorów
|
||||
do `openclaw doctor --fix`.
|
||||
|
||||
`openclaw.channel.persistedAuthState` to metadane pakietu dla małego modułu
|
||||
sprawdzającego:
|
||||
`openclaw.channel.persistedAuthState` to metadane pakietu dla małego modułu sprawdzającego:
|
||||
|
||||
```json
|
||||
{
|
||||
@ -513,12 +535,12 @@ sprawdzającego:
|
||||
}
|
||||
```
|
||||
|
||||
Używaj tego, gdy przepływy konfiguracji, doctor albo configured-state potrzebują prostego
|
||||
sprawdzenia auth typu tak/nie, zanim załaduje się pełny Plugin kanału. Docelowy eksport powinien być małą
|
||||
funkcją, która odczytuje wyłącznie stan trwały; nie kieruj tego przez pełny barrel środowiska uruchomieniowego kanału.
|
||||
Używaj tego, gdy przepływy konfiguracji, doctor lub configured-state potrzebują lekkiego sprawdzenia auth
|
||||
typu tak/nie przed załadowaniem pełnego Plugin kanału. Docelowy eksport powinien być małą
|
||||
funkcją, która odczytuje wyłącznie stan utrwalony; nie kieruj go przez pełny barrel runtime kanału.
|
||||
|
||||
`openclaw.channel.configuredState` ma taki sam kształt dla lekkich sprawdzeń
|
||||
konfiguracji opartych wyłącznie na env:
|
||||
`openclaw.channel.configuredState` ma ten sam kształt dla lekkich sprawdzeń
|
||||
skonfigurowania opartych wyłącznie na env:
|
||||
|
||||
```json
|
||||
{
|
||||
@ -534,56 +556,57 @@ konfiguracji opartych wyłącznie na env:
|
||||
}
|
||||
```
|
||||
|
||||
Używaj tego, gdy kanał może odpowiedzieć o stanie konfiguracji na podstawie env lub innych małych
|
||||
wejść niezwiązanych ze środowiskiem uruchomieniowym. Jeśli sprawdzenie wymaga pełnego rozstrzygnięcia konfiguracji albo rzeczywistego
|
||||
środowiska uruchomieniowego kanału, pozostaw tę logikę w hooku Pluginu `config.hasConfiguredState`.
|
||||
Używaj tego, gdy kanał może odpowiedzieć na pytanie o stan skonfigurowania na podstawie env lub innych małych
|
||||
wejść nieruntime. Jeśli sprawdzenie wymaga pełnego rozstrzygnięcia konfiguracji lub rzeczywistego
|
||||
runtime kanału, zachowaj tę logikę w hooku Plugin `config.hasConfiguredState`.
|
||||
|
||||
## Wymagania schematu JSON
|
||||
## Wymagania JSON Schema
|
||||
|
||||
- **Każdy Plugin musi dostarczać schemat JSON**, nawet jeśli nie przyjmuje żadnej konfiguracji.
|
||||
- Pusty schemat jest akceptowalny (na przykład `{ "type": "object", "additionalProperties": false }`).
|
||||
- Schematy są walidowane podczas odczytu/zapisu konfiguracji, a nie w czasie działania.
|
||||
- **Każdy Plugin musi dostarczać JSON Schema**, nawet jeśli nie przyjmuje żadnej konfiguracji.
|
||||
- Pusty schemat jest dopuszczalny (na przykład `{ "type": "object", "additionalProperties": false }`).
|
||||
- Schematy są walidowane podczas odczytu/zapisu konfiguracji, a nie w czasie wykonywania.
|
||||
|
||||
## Zachowanie walidacji
|
||||
|
||||
- Nieznane klucze `channels.*` są **błędami**, chyba że identyfikator kanału jest zadeklarowany przez
|
||||
manifest Pluginu.
|
||||
- Nieznane klucze `channels.*` to **błędy**, chyba że identyfikator kanału został zadeklarowany przez
|
||||
manifest Plugin.
|
||||
- `plugins.entries.<id>`, `plugins.allow`, `plugins.deny` i `plugins.slots.*`
|
||||
muszą odwoływać się do **wykrywalnych** identyfikatorów Pluginów. Nieznane identyfikatory są **błędami**.
|
||||
muszą odwoływać się do **wykrywalnych** identyfikatorów Plugin. Nieznane identyfikatory to **błędy**.
|
||||
- Jeśli Plugin jest zainstalowany, ale ma uszkodzony lub brakujący manifest albo schemat,
|
||||
walidacja kończy się niepowodzeniem, a Doctor zgłasza błąd Pluginu.
|
||||
- Jeśli konfiguracja Pluginu istnieje, ale Plugin jest **wyłączony**, konfiguracja jest zachowywana i
|
||||
w Doctor + logach wyświetlane jest **ostrzeżenie**.
|
||||
walidacja kończy się niepowodzeniem, a Doctor zgłasza błąd Plugin.
|
||||
- Jeśli konfiguracja Plugin istnieje, ale Plugin jest **wyłączony**, konfiguracja jest zachowywana i
|
||||
pojawia się **ostrzeżenie** w Doctor + logach.
|
||||
|
||||
Pełny schemat `plugins.*` znajdziesz tutaj: [Informacje o konfiguracji](/pl/gateway/configuration).
|
||||
Pełny schemat `plugins.*` znajdziesz w [Configuration reference](/pl/gateway/configuration).
|
||||
|
||||
## Uwagi
|
||||
|
||||
- Manifest jest **wymagany dla natywnych Pluginów OpenClaw**, w tym dla ładowania z lokalnego systemu plików.
|
||||
- Środowisko uruchomieniowe nadal ładuje moduł Pluginu osobno; manifest służy tylko do
|
||||
- Manifest jest **wymagany dla natywnych Plugin OpenClaw**, w tym dla ładowań z lokalnego systemu plików.
|
||||
- Runtime nadal ładuje moduł Plugin osobno; manifest służy wyłącznie do
|
||||
wykrywania + walidacji.
|
||||
- Natywne manifesty są parsowane przy użyciu JSON5, więc komentarze, końcowe przecinki i
|
||||
klucze bez cudzysłowów są akceptowane, o ile wartość końcowa nadal jest obiektem.
|
||||
klucze bez cudzysłowów są akceptowane, o ile końcowa wartość nadal jest obiektem.
|
||||
- Loader manifestu odczytuje tylko udokumentowane pola manifestu. Unikaj dodawania
|
||||
tutaj własnych kluczy najwyższego poziomu.
|
||||
- `providerAuthEnvVars` to lekka ścieżka metadanych dla sond auth, walidacji
|
||||
znaczników env i podobnych powierzchni auth dostawców, które nie powinny uruchamiać środowiska uruchomieniowego Pluginu tylko po to, by sprawdzić nazwy env.
|
||||
- `providerAuthAliases` pozwala wariantom dostawców ponownie używać zmiennych env auth,
|
||||
profili auth, auth opartych na konfiguracji oraz wyboru onboardingu klucza API innego dostawcy
|
||||
bez kodowania tej relacji na sztywno w core.
|
||||
tutaj niestandardowych kluczy najwyższego poziomu.
|
||||
- `providerAuthEnvVars` to lekka ścieżka metadanych dla sprawdzeń auth, walidacji znaczników env
|
||||
i podobnych powierzchni auth dostawcy, które nie powinny uruchamiać runtime Plugin
|
||||
tylko po to, by sprawdzić nazwy env.
|
||||
- `providerAuthAliases` pozwala wariantom dostawców ponownie używać zmiennych env auth innego dostawcy,
|
||||
profili auth, auth opartego na konfiguracji i wyboru onboardingu klucza API
|
||||
bez hardkodowania tej relacji w core.
|
||||
- `channelEnvVars` to lekka ścieżka metadanych dla fallbacku shell-env, promptów konfiguracji
|
||||
i podobnych powierzchni kanałów, które nie powinny uruchamiać środowiska uruchomieniowego Pluginu
|
||||
i podobnych powierzchni kanału, które nie powinny uruchamiać runtime Plugin
|
||||
tylko po to, by sprawdzić nazwy env.
|
||||
- `providerAuthChoices` to lekka ścieżka metadanych dla selektorów wyboru auth,
|
||||
rozstrzygania `--auth-choice`, mapowania preferowanego dostawcy i prostej rejestracji flag CLI
|
||||
onboardingu przed załadowaniem środowiska uruchomieniowego dostawcy. W przypadku metadanych kreatora środowiska uruchomieniowego,
|
||||
które wymagają kodu dostawcy, zobacz
|
||||
[Hooki środowiska uruchomieniowego dostawcy](/pl/plugins/architecture#provider-runtime-hooks).
|
||||
- Wyłączne rodzaje Pluginów są wybierane przez `plugins.slots.*`.
|
||||
onboardingu przed załadowaniem runtime dostawcy. Metadane kreatora runtime,
|
||||
które wymagają kodu dostawcy, opisano w
|
||||
[Provider runtime hooks](/pl/plugins/architecture#provider-runtime-hooks).
|
||||
- Wyłączne rodzaje Plugin są wybierane przez `plugins.slots.*`.
|
||||
- `kind: "memory"` jest wybierany przez `plugins.slots.memory`.
|
||||
- `kind: "context-engine"` jest wybierany przez `plugins.slots.contextEngine`
|
||||
(domyślnie: wbudowany `legacy`).
|
||||
- `channels`, `providers`, `cliBackends` i `skills` można pominąć, jeśli
|
||||
- `channels`, `providers`, `cliBackends` i `skills` można pominąć, gdy
|
||||
Plugin ich nie potrzebuje.
|
||||
- Jeśli Twój Plugin zależy od modułów natywnych, udokumentuj kroki budowania oraz wszelkie
|
||||
wymagania dotyczące allowlist menedżera pakietów (na przykład pnpm `allow-build-scripts`
|
||||
@ -591,6 +614,6 @@ Pełny schemat `plugins.*` znajdziesz tutaj: [Informacje o konfiguracji](/pl/gat
|
||||
|
||||
## Powiązane
|
||||
|
||||
- [Tworzenie Pluginów](/pl/plugins/building-plugins) — pierwsze kroki z Pluginami
|
||||
- [Architektura Pluginów](/pl/plugins/architecture) — architektura wewnętrzna
|
||||
- [Przegląd SDK](/pl/plugins/sdk-overview) — dokumentacja Plugin SDK
|
||||
- [Building Plugins](/pl/plugins/building-plugins) — pierwsze kroki z Plugin
|
||||
- [Plugin Architecture](/pl/plugins/architecture) — architektura wewnętrzna
|
||||
- [SDK Overview](/pl/plugins/sdk-overview) — opis Plugin SDK
|
||||
|
||||
@ -1,105 +1,89 @@
|
||||
---
|
||||
read_when:
|
||||
- Tworzysz nowy plugin kanału wiadomości
|
||||
- Chcesz połączyć OpenClaw z platformą komunikacyjną
|
||||
- Musisz zrozumieć powierzchnię adaptera ChannelPlugin
|
||||
- Tworzysz nowy Plugin kanału wiadomości.
|
||||
- Chcesz połączyć OpenClaw z platformą komunikacyjną.
|
||||
- Musisz zrozumieć powierzchnię adaptera ChannelPlugin.
|
||||
sidebarTitle: Channel Plugins
|
||||
summary: Przewodnik krok po kroku po tworzeniu pluginu kanału wiadomości dla OpenClaw
|
||||
title: Tworzenie pluginów kanałów
|
||||
summary: Przewodnik krok po kroku dotyczący tworzenia Pluginu kanału wiadomości dla OpenClaw
|
||||
title: Tworzenie Pluginów kanałów
|
||||
x-i18n:
|
||||
generated_at: "2026-04-11T02:46:34Z"
|
||||
generated_at: "2026-04-15T09:51:14Z"
|
||||
model: gpt-5.4
|
||||
provider: openai
|
||||
source_hash: 8a026e924f9ae8a3ddd46287674443bcfccb0247be504261522b078e1f440aef
|
||||
source_hash: a7f4c746fe3163a8880e14c433f4db4a1475535d91716a53fb879551d8d62f65
|
||||
source_path: plugins/sdk-channel-plugins.md
|
||||
workflow: 15
|
||||
---
|
||||
|
||||
# Tworzenie pluginów kanałów
|
||||
# Tworzenie Pluginów kanałów
|
||||
|
||||
Ten przewodnik przeprowadza 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.
|
||||
Ten przewodnik krok po kroku pokazuje, jak zbudować Plugin kanału, który łączy OpenClaw z platformą komunikacyjną. Po jego ukończeniu będziesz mieć działający kanał z zabezpieczeniami DM, parowaniem, wątkowaniem odpowiedzi oraz wiadomościami wychodzącymi.
|
||||
|
||||
<Info>
|
||||
Jeśli nie utworzono jeszcze żadnego pluginu OpenClaw,
|
||||
najpierw przeczytaj
|
||||
[Pierwsze kroki](/pl/plugins/building-plugins), aby poznać podstawową
|
||||
strukturę pakietu i konfigurację manifestu.
|
||||
Jeśli nie zbudowano jeszcze żadnego Pluginu OpenClaw, najpierw przeczytaj
|
||||
[Pierwsze kroki](/pl/plugins/building-plugins), aby poznać podstawową strukturę
|
||||
pakietu i konfigurację manifestu.
|
||||
</Info>
|
||||
|
||||
## Jak działają pluginy kanałów
|
||||
## Jak działają Pluginy kanałów
|
||||
|
||||
Pluginy kanałów nie potrzebują własnych narzędzi send/edit/react. OpenClaw utrzymuje jedno
|
||||
wspólne narzędzie `message` w rdzeniu. Twój plugin odpowiada za:
|
||||
Pluginy kanałów nie potrzebują własnych narzędzi do wysyłania/edytowania/reakcji. OpenClaw utrzymuje jedno współdzielone narzędzie `message` w rdzeniu. Twój Plugin odpowiada za:
|
||||
|
||||
- **Konfigurację** — rozstrzyganie kont i kreator konfiguracji
|
||||
- **Bezpieczeństwo** — politykę DM i listy dozwolonych
|
||||
- **Parowanie** — przepływ zatwierdzania DM
|
||||
- **Gramatykę sesji** — sposób, w jaki identyfikatory konwersacji specyficzne dla dostawcy mapują się na czaty bazowe, identyfikatory wątków i zapasowe elementy nadrzędne
|
||||
- **Ruch wychodzący** — wysyłanie tekstu, multimediów i ankiet na platformę
|
||||
- **Wątkowanie** — sposób wątkowania odpowiedzi
|
||||
- **Config** — rozpoznawanie kont i kreator konfiguracji
|
||||
- **Security** — politykę DM i listy dozwolonych
|
||||
- **Pairing** — przepływ zatwierdzania DM
|
||||
- **Session grammar** — sposób, w jaki identyfikatory rozmów specyficzne dla dostawcy mapują się na bazowe czaty, identyfikatory wątków i rezerwy nadrzędne
|
||||
- **Outbound** — wysyłanie tekstu, multimediów i ankiet na platformę
|
||||
- **Threading** — sposób wątkowania odpowiedzi
|
||||
|
||||
Rdzeń odpowiada za wspólne narzędzie wiadomości, łączenie monitów, zewnętrzny kształt klucza sesji,
|
||||
ogólne księgowanie `:thread:` i wysyłkę.
|
||||
Rdzeń odpowiada za współdzielone narzędzie wiadomości, połączenia z promptami, zewnętrzny kształt klucza sesji, ogólne księgowanie `:thread:` oraz dyspozycję.
|
||||
|
||||
Jeśli twoja platforma przechowuje dodatkowy zakres w identyfikatorach 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 dowolne `parentConversationCandidates`.
|
||||
Gdy zwracasz `parentConversationCandidates`, zachowaj ich kolejność od
|
||||
najwęższego elementu nadrzędnego do najszerszej/bazowej konwersacji.
|
||||
Jeśli Twój kanał dodaje parametry narzędzia wiadomości, które przenoszą źródła multimediów, ujawnij nazwy tych parametrów przez `describeMessageTool(...).mediaSourceParams`. Rdzeń używa tej jawnej listy do normalizacji ścieżek w sandboxie i polityki dostępu do multimediów wychodzących, więc Pluginy nie potrzebują wyjątków specyficznych dla dostawcy we współdzielonym rdzeniu dla parametrów awatara, załączników lub obrazów okładki.
|
||||
Preferuj zwracanie mapy kluczowanej akcjami, takiej jak
|
||||
`{ "set-profile": ["avatarUrl", "avatarPath"] }`, aby niezwiązane akcje nie dziedziczyły argumentów multimedialnych innej akcji. Płaska tablica nadal działa dla parametrów, które celowo są współdzielone przez każdą ujawnioną akcję.
|
||||
|
||||
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.
|
||||
Jeśli Twoja platforma przechowuje dodatkowy zakres w identyfikatorach rozmów, pozostaw to parsowanie w Pluginie za pomocą `messaging.resolveSessionConversation(...)`. To kanoniczny hak do mapowania `rawId` na bazowy identyfikator rozmowy, opcjonalny identyfikator wątku, jawne `baseConversationId` oraz wszelkie `parentConversationCandidates`.
|
||||
Gdy zwracasz `parentConversationCandidates`, zachowaj ich kolejność od najwęższego rodzica do najszerszej/bazowej rozmowy.
|
||||
|
||||
`messaging.resolveParentConversationCandidates(...)` pozostaje dostępne jako
|
||||
starszy awaryjny mechanizm zgodności, gdy plugin potrzebuje tylko zapasowych elementów nadrzędnych
|
||||
na bazie ogólnego/surowego identyfikatora. Jeśli istnieją oba hooki, rdzeń używa najpierw
|
||||
`resolveSessionConversation(...).parentConversationCandidates`, a do
|
||||
`resolveParentConversationCandidates(...)` wraca tylko wtedy, gdy hook kanoniczny
|
||||
ich nie zwraca.
|
||||
Bundlowane Pluginy, które potrzebują tego samego parsowania przed uruchomieniem rejestru kanałów, mogą też udostępniać plik najwyższego poziomu `session-key-api.ts` z pasującym eksportem `resolveSessionConversation(...)`. Rdzeń używa tej bezpiecznej dla bootstrapu powierzchni tylko wtedy, gdy rejestr Pluginów runtime nie jest jeszcze dostępny.
|
||||
|
||||
`messaging.resolveParentConversationCandidates(...)` pozostaje dostępne jako starsza rezerwa zgodności, gdy Plugin potrzebuje jedynie rezerw nadrzędnych ponad ogólnym/surowym identyfikatorem. Jeśli istnieją oba haki, rdzeń najpierw używa `resolveSessionConversation(...).parentConversationCandidates`, a do `resolveParentConversationCandidates(...)` wraca tylko wtedy, gdy kanoniczny hak ich nie zwraca.
|
||||
|
||||
## Zatwierdzenia i możliwości kanału
|
||||
|
||||
Większość pluginów kanałów nie potrzebuje kodu specyficznego dla zatwierdzeń.
|
||||
Większość Pluginów kanałów nie potrzebuje kodu specyficznego dla zatwierdzeń.
|
||||
|
||||
- Rdzeń odpowiada za `/approve` w tym samym czacie, wspólne ładunki przycisków zatwierdzania oraz ogólne dostarczanie awaryjne.
|
||||
- Gdy kanał potrzebuje zachowania specyficznego dla zatwierdzeń, preferuj pojedynczy obiekt `approvalCapability` w pluginie kanału.
|
||||
- `ChannelPlugin.approvals` zostało usunięte. Fakty dotyczące dostarczania/renderowania/natywności/uwierzytelniania zatwierdzeń umieszczaj w `approvalCapability`.
|
||||
- `plugin.auth` służy tylko do login/logout; rdzeń nie odczytuje już hooków uwierzytelniania zatwierdzeń z tego obiektu.
|
||||
- `approvalCapability.authorizeActorAction` oraz `approvalCapability.getActionAvailabilityState` to kanoniczna powierzchnia dla uwierzytelniania zatwierdzeń.
|
||||
- Użyj `approvalCapability.getActionAvailabilityState` dla dostępności uwierzytelniania zatwierdzeń w tym samym czacie.
|
||||
- Jeśli kanał udostępnia natywne zatwierdzanie exec, użyj `approvalCapability.getExecInitiatingSurfaceState` dla stanu powierzchni inicjującej/klienta natywnego, gdy różni się od uwierzytelniania zatwierdzeń w tym samym czacie. Rdzeń używa tego hooka specyficznego dla exec, aby odróżnić `enabled` od `disabled`, zdecydować, czy kanał inicjujący obsługuje natywne zatwierdzenia exec, i uwzględnić kanał w instrukcjach awaryjnych dla klienta natywnego. `createApproverRestrictedNativeApprovalCapability(...)` wypełnia to dla typowego przypadku.
|
||||
- Użyj `outbound.shouldSuppressLocalPayloadPrompt` lub `outbound.beforeDeliverPayload` dla zachowań cyklu życia ładunku specyficznych dla kanału, takich jak ukrywanie zduplikowanych lokalnych monitów zatwierdzania lub wysyłanie wskaźników pisania przed dostarczeniem.
|
||||
- Używaj `approvalCapability.delivery` tylko do natywnego routingu zatwierdzeń lub tłumienia dostarczania awaryjnego.
|
||||
- Używaj `approvalCapability.nativeRuntime` dla natywnych faktów zatwierdzania należących do kanału. Utrzymuj je w trybie lazy na gorących entrypointach kanału za pomocą `createLazyChannelApprovalNativeRuntimeAdapter(...)`, które może importować moduł środowiska uruchomieniowego na żądanie, jednocześnie pozwalając rdzeniowi złożyć cykl życia zatwierdzania.
|
||||
- Używaj `approvalCapability.render` tylko wtedy, gdy kanał rzeczywiście potrzebuje własnych ładunków zatwierdzania zamiast wspólnego renderera.
|
||||
- Użyj `approvalCapability.describeExecApprovalSetup`, gdy kanał chce, aby odpowiedź dla ścieżki wyłączonej wyjaśniała dokładnie, jakie przełączniki konfiguracji są potrzebne do włączenia natywnych zatwierdzeń exec. Hook otrzymuje `{ channel, channelLabel, accountId }`; kanały z nazwanymi kontami powinny renderować ścieżki ograniczone do 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 logiki specyficznej dla zatwierdzeń do rdzenia.
|
||||
- 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`. Fakty specyficzne dla kanału umieść za `approvalCapability.nativeRuntime`, najlepiej przez `createChannelApprovalNativeRuntimeAdapter(...)` lub `createLazyChannelApprovalNativeRuntimeAdapter(...)`, aby rdzeń mógł złożyć obsługę i przejąć filtrowanie żądań, routing, deduplikację, wygasanie, subskrypcję bramy oraz komunikaty „przekierowano gdzie indziej”. `nativeRuntime` jest podzielone na kilka mniejszych powierzchni:
|
||||
- Rdzeń odpowiada za `/approve` w tym samym czacie, współdzielone ładunki przycisków zatwierdzania oraz ogólne dostarczanie rezerwowe.
|
||||
- Preferuj pojedynczy obiekt `approvalCapability` w Pluginie kanału, gdy kanał potrzebuje zachowania specyficznego dla zatwierdzeń.
|
||||
- `ChannelPlugin.approvals` zostało usunięte. Umieść fakty dotyczące dostarczania/natywnego/renderowania/uwierzytelniania zatwierdzeń w `approvalCapability`.
|
||||
- `plugin.auth` służy tylko do logowania/wylogowania; rdzeń nie odczytuje już haków uwierzytelniania zatwierdzeń z tego obiektu.
|
||||
- `approvalCapability.authorizeActorAction` i `approvalCapability.getActionAvailabilityState` to kanoniczna powierzchnia uwierzytelniania zatwierdzeń.
|
||||
- Używaj `approvalCapability.getActionAvailabilityState` dla dostępności uwierzytelniania zatwierdzeń w tym samym czacie.
|
||||
- Jeśli Twój kanał udostępnia natywne zatwierdzenia exec, użyj `approvalCapability.getExecInitiatingSurfaceState` dla stanu powierzchni inicjującej/klienta natywnego, gdy różni się on od uwierzytelniania zatwierdzeń w tym samym czacie. Rdzeń używa tego haka specyficznego dla exec, aby rozróżnić `enabled` i `disabled`, zdecydować, czy kanał inicjujący obsługuje natywne zatwierdzenia exec, oraz uwzględnić ten kanał w wskazówkach dotyczących rezerwy klienta natywnego. `createApproverRestrictedNativeApprovalCapability(...)` wypełnia to dla typowego przypadku.
|
||||
- Używaj `outbound.shouldSuppressLocalPayloadPrompt` lub `outbound.beforeDeliverPayload` do zachowań cyklu życia ładunku specyficznych dla kanału, takich jak ukrywanie zduplikowanych lokalnych promptów zatwierdzeń lub wysyłanie wskaźników pisania przed dostarczeniem.
|
||||
- Używaj `approvalCapability.delivery` tylko do natywnego routingu zatwierdzeń lub wyciszania rezerwy.
|
||||
- Używaj `approvalCapability.nativeRuntime` dla faktów natywnych zatwierdzeń należących do kanału. Zachowaj leniwe ładowanie na gorących punktach wejścia kanału za pomocą `createLazyChannelApprovalNativeRuntimeAdapter(...)`, które może importować moduł runtime na żądanie, a jednocześnie pozwala rdzeniowi składać cykl życia zatwierdzeń.
|
||||
- Używaj `approvalCapability.render` tylko wtedy, gdy kanał naprawdę potrzebuje niestandardowych ładunków zatwierdzeń zamiast współdzielonego renderera.
|
||||
- Używaj `approvalCapability.describeExecApprovalSetup`, gdy kanał chce, aby odpowiedź dla ścieżki wyłączonej wyjaśniała dokładne pokrętła konfiguracji potrzebne do włączenia natywnych zatwierdzeń exec. Hak otrzymuje `{ channel, channelLabel, accountId }`; kanały z nazwanymi kontami powinny renderować ścieżki z zakresem konta, takie jak `channels.<channel>.accounts.<id>.execApprovals.*`, zamiast domyślnych ścieżek najwyższego poziomu.
|
||||
- Jeśli kanał może wnioskować o stabilnych tożsamościach DM podobnych do właściciela na podstawie istniejącej konfiguracji, użyj `createResolvedApproverActionAuthAdapter` z `openclaw/plugin-sdk/approval-runtime`, aby ograniczyć `/approve` w tym samym czacie bez dodawania logiki specyficznej dla zatwierdzeń do rdzenia.
|
||||
- Jeśli kanał potrzebuje natywnego dostarczania zatwierdzeń, skup kod kanału na normalizacji celu oraz faktach transportu/prezentacji. Użyj `createChannelExecApprovalProfile`, `createChannelNativeOriginTargetResolver`, `createChannelApproverDmTargetResolver` i `createApproverRestrictedNativeApprovalCapability` z `openclaw/plugin-sdk/approval-runtime`. Umieść fakty specyficzne dla kanału za `approvalCapability.nativeRuntime`, najlepiej przez `createChannelApprovalNativeRuntimeAdapter(...)` lub `createLazyChannelApprovalNativeRuntimeAdapter(...)`, aby rdzeń mógł złożyć obsługę i przejąć filtrowanie żądań, routing, usuwanie duplikatów, wygaśnięcie, subskrypcję Gateway oraz powiadomienia o przekierowaniu. `nativeRuntime` jest podzielone na kilka mniejszych powierzchni:
|
||||
- `availability` — czy konto jest skonfigurowane i czy żądanie powinno zostać obsłużone
|
||||
- `presentation` — mapowanie wspólnego modelu widoku zatwierdzenia na oczekujące/rozstrzygnięte/wygasłe ładunki natywne lub działania końcowe
|
||||
- `transport` — przygotowanie celów oraz wysyłanie/aktualizowanie/usuwanie natywnych wiadomości zatwierdzania
|
||||
- `interactions` — opcjonalne hooki bind/unbind/clear-action dla natywnych przycisków lub reakcji
|
||||
- `observe` — opcjonalne hooki diagnostyki dostarczania
|
||||
- Jeśli kanał potrzebuje obiektów należących do środowiska uruchomieniowego, takich jak klient, token, aplikacja Bolt lub odbiornik webhooka, zarejestruj je przez `openclaw/plugin-sdk/channel-runtime-context`. Ogólny rejestr runtime-context pozwala rdzeniowi uruchamiać handlery oparte na możliwościach na podstawie stanu startowego kanału bez dodawania kodu kleją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 z natywnymi zatwierdzeniami muszą przekazywać przez te helpery zarówno `accountId`, jak i `approvalKind`. `accountId` utrzymuje politykę zatwierdzeń dla wielu kont w zakresie właściwego konta bota, a `approvalKind` utrzymuje zachowanie zatwierdzeń exec vs plugin dostępne dla kanału bez zakodowanych na sztywno gałęzi w rdzeniu.
|
||||
- Rdzeń odpowiada teraz także za komunikaty 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 poprawny routing pochodzenia + DM zatwierdzającego przez wspólne helpery możliwości zatwierdzania i pozwól rdzeniowi agregować rzeczywiste dostarczenia przed opublikowaniem ewentualnego komunikatu z powrotem do czatu inicjującego.
|
||||
- Zachowuj rodzaj dostarczonego identyfikatora zatwierdzenia od początku do końca. Klienci natywni nie powinni
|
||||
zgadywać ani przepisywać routingu zatwierdzeń exec vs plugin na podstawie lokalnego stanu kanału.
|
||||
- Różne rodzaje zatwierdzeń mogą celowo udostępniać różne powierzchnie natywne.
|
||||
Bieżące przykłady bundlowane:
|
||||
- Slack zachowuje dostępny natywny routing zatwierdzeń zarówno dla identyfikatorów exec, jak i plugin.
|
||||
- Matrix utrzymuje ten sam natywny routing DM/kanał i UX reakcji dla zatwierdzeń exec
|
||||
i plugin, jednocześnie pozwalając, by uwierzytelnianie różniło się zależnie od rodzaju zatwierdzenia.
|
||||
- `createApproverRestrictedNativeApprovalAdapter` nadal istnieje jako opakowanie zgodności, ale nowy kod powinien preferować konstruktor możliwości i udostępniać `approvalCapability` w pluginie.
|
||||
- `presentation` — mapowanie współdzielonego modelu widoku zatwierdzenia na oczekujące/rozwiązane/wygasłe ładunki natywne lub działania końcowe
|
||||
- `transport` — przygotowanie celów oraz wysyłanie/aktualizowanie/usuwanie natywnych wiadomości zatwierdzeń
|
||||
- `interactions` — opcjonalne haki bind/unbind/clear-action dla natywnych przycisków lub reakcji
|
||||
- `observe` — opcjonalne haki diagnostyki dostarczania
|
||||
- Jeśli kanał potrzebuje obiektów należących do runtime, takich jak klient, token, aplikacja Bolt lub odbiornik Webhook, zarejestruj je przez `openclaw/plugin-sdk/channel-runtime-context`. Ogólny rejestr kontekstu runtime pozwala rdzeniowi bootstrapować handlery sterowane możliwościami na podstawie stanu uruchomienia kanału bez dodawania kleju opakowującego specyficznego dla zatwierdzeń.
|
||||
- Sięgaj po niższopoziomowe `createChannelApprovalHandler` lub `createChannelNativeApprovalRuntime` tylko wtedy, gdy powierzchnia sterowana możliwościami nie jest jeszcze wystarczająco ekspresyjna.
|
||||
- Kanały natywnych zatwierdzeń muszą routować zarówno `accountId`, jak i `approvalKind` przez te helpery. `accountId` utrzymuje politykę zatwierdzeń dla wielu kont w zakresie właściwego konta bota, a `approvalKind` zachowuje dla kanału dostępność zachowania zatwierdzeń exec vs Plugin bez zakodowanych na sztywno gałęzi w rdzeniu.
|
||||
- Rdzeń odpowiada teraz także za powiadomienia o przekierowaniu zatwierdzeń. Pluginy kanałów nie powinny wysyłać własnych wiadomości uzupełniających typu „zatwierdzenie trafiło do DM / innego kanału” z `createChannelNativeApprovalRuntime`; zamiast tego ujawnij dokładny routing źródła i DM zatwierdzającego przez współdzielone helpery możliwości zatwierdzeń i pozwól rdzeniowi agregować rzeczywiste dostarczenia przed opublikowaniem powiadomienia z powrotem do czatu inicjującego.
|
||||
- Zachowuj rodzaj identyfikatora dostarczonego zatwierdzenia od początku do końca. Klienci natywni nie powinni zgadywać ani przepisywać routingu zatwierdzeń exec vs Plugin na podstawie lokalnego stanu kanału.
|
||||
- Różne rodzaje zatwierdzeń mogą celowo ujawniać różne powierzchnie natywne.
|
||||
Obecne przykłady bundlowane:
|
||||
- Slack zachowuje dostępny natywny routing zatwierdzeń zarówno dla identyfikatorów exec, jak i Plugin.
|
||||
- Matrix zachowuje ten sam natywny routing DM/kanału i UX reakcji dla zatwierdzeń exec i Plugin, nadal pozwalając, by uwierzytelnianie różniło się zależnie od rodzaju zatwierdzenia.
|
||||
- `createApproverRestrictedNativeApprovalAdapter` nadal istnieje jako opakowanie zgodności, ale nowy kod powinien preferować kreator możliwości i ujawniać `approvalCapability` w Pluginie.
|
||||
|
||||
Dla gorących entrypointów kanału preferuj węższe podścieżki środowiska uruchomieniowego, gdy potrzebujesz tylko
|
||||
jednej części tej rodziny:
|
||||
Dla gorących punktów wejścia kanału preferuj węższe podścieżki runtime, gdy potrzebujesz tylko jednej części tej rodziny:
|
||||
|
||||
- `openclaw/plugin-sdk/approval-auth-runtime`
|
||||
- `openclaw/plugin-sdk/approval-client-runtime`
|
||||
@ -116,94 +100,86 @@ Podobnie preferuj `openclaw/plugin-sdk/setup-runtime`,
|
||||
`openclaw/plugin-sdk/reply-runtime`,
|
||||
`openclaw/plugin-sdk/reply-dispatch-runtime`,
|
||||
`openclaw/plugin-sdk/reply-reference` oraz
|
||||
`openclaw/plugin-sdk/reply-chunking`, gdy nie potrzebujesz szerszej
|
||||
powierzchni parasolowej.
|
||||
`openclaw/plugin-sdk/reply-chunking`, gdy nie potrzebujesz szerszej powierzchni parasolowej.
|
||||
|
||||
Konkretnie dla konfiguracji:
|
||||
W przypadku konfiguracji w szczególności:
|
||||
|
||||
- `openclaw/plugin-sdk/setup-runtime` obejmuje bezpieczne dla środowiska uruchomieniowego helpery konfiguracji:
|
||||
bezpieczne przy imporcie adaptery łatania konfiguracji (`createPatchedAccountSetupAdapter`,
|
||||
- `openclaw/plugin-sdk/setup-runtime` obejmuje bezpieczne dla runtime helpery konfiguracji:
|
||||
bezpieczne dla importu adaptery łatania konfiguracji (`createPatchedAccountSetupAdapter`,
|
||||
`createEnvPatchedAccountSetupAdapter`,
|
||||
`createSetupInputPresenceValidator`), dane wyjściowe notatek lookup,
|
||||
`createSetupInputPresenceValidator`), wyjście notatek wyszukiwania,
|
||||
`promptResolvedAllowFrom`, `splitSetupEntries` oraz delegowane
|
||||
konstruktory proxy konfiguracji
|
||||
- `openclaw/plugin-sdk/setup-adapter-runtime` to wąska, świadoma środowiska surface adaptera
|
||||
dla `createEnvPatchedAccountSetupAdapter`
|
||||
- `openclaw/plugin-sdk/channel-setup` obejmuje konstruktory konfiguracji z opcjonalną instalacją
|
||||
kreatory proxy konfiguracji
|
||||
- `openclaw/plugin-sdk/setup-adapter-runtime` to wąska, świadoma środowiska powierzchnia
|
||||
adaptera dla `createEnvPatchedAccountSetupAdapter`
|
||||
- `openclaw/plugin-sdk/channel-setup` obejmuje kreatory konfiguracji opcjonalnej instalacji
|
||||
oraz kilka prymitywów bezpiecznych dla konfiguracji:
|
||||
`createOptionalChannelSetupSurface`, `createOptionalChannelSetupAdapter`,
|
||||
|
||||
Jeśli twój kanał obsługuje konfigurację lub uwierzytelnianie sterowane przez env, a ogólne przepływy uruchamiania/konfiguracji
|
||||
powinny znać te nazwy zmiennych env przed załadowaniem środowiska uruchomieniowego, zadeklaruj je w
|
||||
manifeście pluginu za pomocą `channelEnvVars`. Zachowaj runtime `envVars` kanału lub lokalne
|
||||
stałe wyłącznie dla tekstów operatora.
|
||||
Jeśli Twój kanał obsługuje konfigurację lub uwierzytelnianie sterowane środowiskiem i ogólne przepływy uruchamiania/konfiguracji powinny znać te nazwy zmiennych środowiskowych przed załadowaniem runtime, zadeklaruj je w manifeście Pluginu za pomocą `channelEnvVars`. Zachowaj runtime `envVars` kanału lub lokalne stałe tylko dla kopii skierowanej do operatora.
|
||||
`createOptionalChannelSetupWizard`, `DEFAULT_ACCOUNT_ID`,
|
||||
`createTopLevelChannelDmPolicy`, `setSetupChannelEnabled` oraz
|
||||
`splitSetupEntries`
|
||||
|
||||
- używaj szerszej powierzchni `openclaw/plugin-sdk/setup` tylko wtedy, gdy potrzebujesz także
|
||||
cięższych wspólnych helperów konfiguracji/ustawień, takich jak
|
||||
- używaj szerszej powierzchni `openclaw/plugin-sdk/setup` tylko wtedy, gdy potrzebujesz również
|
||||
cięższych współdzielonych helperów konfiguracji/ustawień, takich jak
|
||||
`moveSingleAccountChannelSectionToDefaultAccount(...)`
|
||||
|
||||
Jeśli kanał chce tylko reklamować „najpierw zainstaluj ten plugin” w powierzchniach konfiguracji,
|
||||
preferuj `createOptionalChannelSetupSurface(...)`. Wygenerowany
|
||||
adapter/kreator domyślnie blokuje zapis konfiguracji i finalizację, a także ponownie używa
|
||||
tego samego komunikatu o wymaganej instalacji w walidacji, finalizacji i tekstach z linkiem do dokumentacji.
|
||||
Jeśli Twój kanał chce jedynie reklamować „najpierw zainstaluj ten Plugin” w powierzchniach konfiguracji, preferuj `createOptionalChannelSetupSurface(...)`. Wygenerowany adapter/kreator domyślnie odmawia zapisów konfiguracji i finalizacji oraz ponownie wykorzystuje ten sam komunikat o wymaganej instalacji w walidacji, finalizacji i treści linku do dokumentacji.
|
||||
|
||||
Dla innych gorących ścieżek kanału preferuj wąskie helpery zamiast szerszych starszych
|
||||
powierzchni:
|
||||
Dla innych gorących ścieżek kanału preferuj wąskie helpery zamiast szerszych starszych powierzchni:
|
||||
|
||||
- `openclaw/plugin-sdk/account-core`,
|
||||
`openclaw/plugin-sdk/account-id`,
|
||||
`openclaw/plugin-sdk/account-resolution` oraz
|
||||
`openclaw/plugin-sdk/account-helpers` dla konfiguracji wielu kont i
|
||||
awaryjnego powrotu do konta domyślnego
|
||||
rezerwy konta domyślnego
|
||||
- `openclaw/plugin-sdk/inbound-envelope` oraz
|
||||
`openclaw/plugin-sdk/inbound-reply-dispatch` dla routingu/koperty wejściowej i
|
||||
łączenia zapisu z wysyłką
|
||||
- `openclaw/plugin-sdk/messaging-targets` do parsowania/dopasowywania celów
|
||||
`openclaw/plugin-sdk/inbound-reply-dispatch` dla routingu/koperty wejściowej oraz
|
||||
połączeń rejestrowania i dyspozycji
|
||||
- `openclaw/plugin-sdk/messaging-targets` dla parsowania/dopasowywania celów
|
||||
- `openclaw/plugin-sdk/outbound-media` oraz
|
||||
`openclaw/plugin-sdk/outbound-runtime` do ładowania multimediów oraz delegatów
|
||||
`openclaw/plugin-sdk/outbound-runtime` dla ładowania multimediów oraz delegatów
|
||||
tożsamości/wysyłania wychodzącego
|
||||
- `openclaw/plugin-sdk/thread-bindings-runtime` dla cyklu życia powiązań wątków
|
||||
i rejestracji adapterów
|
||||
- `openclaw/plugin-sdk/agent-media-payload` tylko wtedy, gdy nadal wymagany jest
|
||||
starszy układ pól ładunku agenta/multimediów
|
||||
- `openclaw/plugin-sdk/telegram-command-config` do normalizacji niestandardowych poleceń Telegram,
|
||||
walidacji duplikatów/konfliktów oraz stabilnego awaryjnie kontraktu konfiguracji poleceń
|
||||
starszy układ pól ładunku agent/media
|
||||
- `openclaw/plugin-sdk/telegram-command-config` dla normalizacji niestandardowych komend Telegram,
|
||||
walidacji duplikatów/konfliktów oraz stabilnego dla rezerw kontraktu konfiguracji komend
|
||||
|
||||
Kanały wyłącznie uwierzytelniające zwykle mogą zatrzymać się na ścieżce domyślnej: rdzeń obsługuje zatwierdzenia, a plugin jedynie udostępnia możliwości outbound/auth. Kanały z natywnymi zatwierdzeniami, takie jak Matrix, Slack, Telegram i niestandardowe transporty czatu, powinny używać wspólnych helperów natywnych zamiast implementować własny cykl życia zatwierdzeń.
|
||||
Kanały tylko z uwierzytelnianiem zwykle mogą zatrzymać się na ścieżce domyślnej: rdzeń obsługuje zatwierdzenia, a Plugin jedynie udostępnia możliwości outbound/auth. Kanały natywnych zatwierdzeń, takie jak Matrix, Slack, Telegram i niestandardowe transporty czatu, powinny używać współdzielonych helperów natywnych zamiast implementować własny cykl życia zatwierdzeń.
|
||||
|
||||
## Polityka wzmianek przychodzących
|
||||
## Zasady wzmianek przychodzących
|
||||
|
||||
Obsługę wzmianek przychodzących utrzymuj rozdzieloną na dwie warstwy:
|
||||
Obsługę wzmianek przychodzących utrzymuj w podziale na dwie warstwy:
|
||||
|
||||
- gromadzenie danych należące do pluginu
|
||||
- współdzieloną ocenę polityki
|
||||
- gromadzenie danych należące do Pluginu
|
||||
- współdzielona ocena zasad
|
||||
|
||||
Dla warstwy współdzielonej używaj `openclaw/plugin-sdk/channel-inbound`.
|
||||
|
||||
Dobre zastosowania dla logiki lokalnej pluginu:
|
||||
Dobre dopasowanie do logiki lokalnej dla Pluginu:
|
||||
|
||||
- wykrywanie odpowiedzi do bota
|
||||
- wykrywanie cytatu bota
|
||||
- sprawdzanie uczestnictwa w wątku
|
||||
- wykluczenia wiadomości usługowych/systemowych
|
||||
- natywne dla platformy pamięci podręczne potrzebne do potwierdzenia uczestnictwa bota
|
||||
- wykrywanie cytatów bota
|
||||
- sprawdzanie uczestnictwa we wątku
|
||||
- wykluczanie wiadomości usługowych/systemowych
|
||||
- natywne dla platformy cache potrzebne do udowodnienia uczestnictwa bota
|
||||
|
||||
Dobre zastosowania dla wspólnego helpera:
|
||||
Dobre dopasowanie do współdzielonego helpera:
|
||||
|
||||
- `requireMention`
|
||||
- jawny wynik wzmianki
|
||||
- lista dozwolonych wzmianek niejawnych
|
||||
- obejście dla poleceń
|
||||
- końcowa decyzja o pominięciu
|
||||
- lista dozwolonych niejawnych wzmianek
|
||||
- obejście komend
|
||||
- ostateczna decyzja o pominięciu
|
||||
|
||||
Preferowany przepływ:
|
||||
|
||||
1. Oblicz lokalne fakty dotyczące wzmianki.
|
||||
1. Oblicz lokalne fakty dotyczące wzmianek.
|
||||
2. Przekaż te fakty do `resolveInboundMentionDecision({ facts, policy })`.
|
||||
3. Użyj `decision.effectiveWasMentioned`, `decision.shouldBypassMention` i `decision.shouldSkip` w bramce wejściowej.
|
||||
3. Użyj `decision.effectiveWasMentioned`, `decision.shouldBypassMention` i `decision.shouldSkip` w swojej bramce wejściowej.
|
||||
|
||||
```typescript
|
||||
import {
|
||||
@ -242,8 +218,8 @@ const decision = resolveInboundMentionDecision({
|
||||
if (decision.shouldSkip) return;
|
||||
```
|
||||
|
||||
`api.runtime.channel.mentions` udostępnia te same wspólne helpery wzmiankowania dla
|
||||
bundlowanych pluginów kanałów, które już zależą od wstrzykiwania środowiska uruchomieniowego:
|
||||
`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:
|
||||
|
||||
- `buildMentionRegexes`
|
||||
- `matchesMentionPatterns`
|
||||
@ -252,17 +228,17 @@ bundlowanych pluginów kanałów, które już zależą od wstrzykiwania środowi
|
||||
- `resolveInboundMentionDecision`
|
||||
|
||||
Starsze helpery `resolveMentionGating*` pozostają w
|
||||
`openclaw/plugin-sdk/channel-inbound` wyłącznie jako eksporty zgodności. Nowy kod
|
||||
`openclaw/plugin-sdk/channel-inbound` jedynie jako eksporty zgodności. Nowy kod
|
||||
powinien używać `resolveInboundMentionDecision({ facts, policy })`.
|
||||
|
||||
## Instrukcja krok po kroku
|
||||
## Omówienie
|
||||
|
||||
<Steps>
|
||||
<a id="step-1-package-and-manifest"></a>
|
||||
<Step title="Pakiet i manifest">
|
||||
Utwórz standardowe pliki pluginu. Pole `channel` w `package.json` sprawia,
|
||||
że jest to plugin kanału. Aby zobaczyć pełną powierzchnię metadanych pakietu,
|
||||
zobacz [Konfiguracja pluginu i ustawienia](/pl/plugins/sdk-setup#openclaw-channel):
|
||||
Utwórz standardowe pliki Pluginu. Pole `channel` w `package.json`
|
||||
sprawia, że jest to Plugin kanału. Pełną powierzchnię metadanych pakietu
|
||||
znajdziesz w [Konfiguracja i ustawienia Pluginu](/pl/plugins/sdk-setup#openclaw-channel):
|
||||
|
||||
<CodeGroup>
|
||||
```json package.json
|
||||
@ -311,9 +287,9 @@ powinien używać `resolveInboundMentionDecision({ facts, policy })`.
|
||||
|
||||
</Step>
|
||||
|
||||
<Step title="Zbuduj obiekt pluginu kanału">
|
||||
<Step title="Zbuduj obiekt Pluginu kanału">
|
||||
Interfejs `ChannelPlugin` ma wiele opcjonalnych powierzchni adapterów. Zacznij od
|
||||
minimum — `id` i `setup` — a następnie dodawaj adaptery według potrzeb.
|
||||
minimum — `id` i `setup` — i dodawaj adaptery w miarę potrzeb.
|
||||
|
||||
Utwórz `src/channel.ts`:
|
||||
|
||||
@ -410,22 +386,22 @@ powinien używać `resolveInboundMentionDecision({ facts, policy })`.
|
||||
|
||||
<Accordion title="Co robi za Ciebie createChatChannelPlugin">
|
||||
Zamiast ręcznie implementować niskopoziomowe interfejsy adapterów, przekazujesz
|
||||
opcje deklaratywne, a konstruktor je składa:
|
||||
deklaratywne opcje, a kreator je składa:
|
||||
|
||||
| Opcja | Co jest podłączane |
|
||||
| Opcja | Co podłącza |
|
||||
| --- | --- |
|
||||
| `security.dm` | Resolver bezpieczeństwa DM ograniczony do konfiguracji pól |
|
||||
| `pairing.text` | Tekstowy przepływ parowania DM z wymianą kodu |
|
||||
| `threading` | Resolver trybu reply-to (stały, ograniczony do konta lub niestandardowy) |
|
||||
| `outbound.attachedResults` | Funkcje wysyłania, które zwracają metadane wyniku (identyfikatory wiadomości) |
|
||||
| `security.dm` | Rozpoznawanie zabezpieczeń DM z zakresem z pól konfiguracji |
|
||||
| `pairing.text` | Przepływ parowania DM oparty na tekście z wymianą kodów |
|
||||
| `threading` | Rozpoznawanie trybu reply-to (stały, z zakresem konta lub niestandardowy) |
|
||||
| `outbound.attachedResults` | Funkcje wysyłania zwracające metadane wyniku (identyfikatory wiadomości) |
|
||||
|
||||
Możesz także przekazać surowe obiekty adapterów zamiast opcji deklaratywnych,
|
||||
Możesz również przekazać surowe obiekty adapterów zamiast opcji deklaratywnych,
|
||||
jeśli potrzebujesz pełnej kontroli.
|
||||
</Accordion>
|
||||
|
||||
</Step>
|
||||
|
||||
<Step title="Podłącz entrypoint">
|
||||
<Step title="Podłącz punkt wejścia">
|
||||
Utwórz `index.ts`:
|
||||
|
||||
```typescript index.ts
|
||||
@ -462,20 +438,19 @@ powinien używać `resolveInboundMentionDecision({ facts, policy })`.
|
||||
```
|
||||
|
||||
Umieść deskryptory CLI należące do kanału w `registerCliMetadata(...)`, aby OpenClaw
|
||||
mógł pokazywać je w pomocy głównej bez aktywowania pełnego środowiska uruchomieniowego kanału,
|
||||
podczas gdy zwykłe pełne ładowanie nadal pobiera te same deskryptory do rzeczywistej
|
||||
rejestracji poleceń. Zachowaj `registerFull(...)` dla prac tylko środowiska uruchomieniowego.
|
||||
Jeśli `registerFull(...)` rejestruje metody RPC bramy, użyj
|
||||
prefiksu specyficznego dla pluginu. Przestrzenie nazw administracyjnych rdzenia (`config.*`,
|
||||
mógł pokazywać je w pomocy głównej bez aktywowania pełnego runtime kanału,
|
||||
podczas gdy zwykłe pełne ładowania nadal pobierają te same deskryptory do rzeczywistej
|
||||
rejestracji komend. Zachowaj `registerFull(...)` dla pracy tylko w runtime.
|
||||
Jeśli `registerFull(...)` rejestruje metody RPC Gateway, użyj prefiksu
|
||||
specyficznego dla Pluginu. Przestrzenie nazw administratora rdzenia (`config.*`,
|
||||
`exec.approvals.*`, `wizard.*`, `update.*`) pozostają zarezerwowane i zawsze
|
||||
są rozstrzygane do `operator.admin`.
|
||||
`defineChannelPluginEntry` automatycznie obsługuje podział trybu rejestracji. Zobacz
|
||||
[Entry Points](/pl/plugins/sdk-entrypoints#definechannelpluginentry), aby poznać wszystkie
|
||||
opcje.
|
||||
rozwiązują się do `operator.admin`.
|
||||
`defineChannelPluginEntry` automatycznie obsługuje podział trybów rejestracji. Wszystkie
|
||||
opcje znajdziesz w [Punkty wejścia](/pl/plugins/sdk-entrypoints#definechannelpluginentry).
|
||||
|
||||
</Step>
|
||||
|
||||
<Step title="Dodaj entry konfiguracji">
|
||||
<Step title="Dodaj wpis konfiguracji">
|
||||
Utwórz `setup-entry.ts` do lekkiego ładowania podczas onboardingu:
|
||||
|
||||
```typescript setup-entry.ts
|
||||
@ -485,16 +460,16 @@ powinien używać `resolveInboundMentionDecision({ facts, policy })`.
|
||||
export default defineSetupPluginEntry(acmeChatPlugin);
|
||||
```
|
||||
|
||||
OpenClaw ładuje to zamiast pełnego entry, gdy kanał jest wyłączony
|
||||
lub nieskonfigurowany. Pozwala to uniknąć pobierania ciężkiego kodu środowiska uruchomieniowego podczas przepływów konfiguracji.
|
||||
OpenClaw ładuje to zamiast pełnego punktu wejścia, gdy kanał jest wyłączony
|
||||
lub nieskonfigurowany. Pozwala to uniknąć wciągania ciężkiego kodu runtime podczas przepływów konfiguracji.
|
||||
Szczegóły znajdziesz w [Konfiguracja i ustawienia](/pl/plugins/sdk-setup#setup-entry).
|
||||
|
||||
</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
|
||||
wysyła je przez handler wejściowy twojego kanału:
|
||||
Twój Plugin musi odbierać wiadomości z platformy i przekazywać je do
|
||||
OpenClaw. Typowy wzorzec to Webhook, który weryfikuje żądanie i
|
||||
dyspozytuje je przez handler wejściowy Twojego kanału:
|
||||
|
||||
```typescript
|
||||
registerFull(api) {
|
||||
@ -518,16 +493,16 @@ powinien używać `resolveInboundMentionDecision({ facts, policy })`.
|
||||
```
|
||||
|
||||
<Note>
|
||||
Obsługa wiadomości przychodzących jest specyficzna dla kanału. Każdy plugin kanału odpowiada
|
||||
za własny potok wejściowy. Zobacz bundlowane pluginy kanałów
|
||||
(na przykład pakiet pluginu Microsoft Teams lub Google Chat), aby poznać rzeczywiste wzorce.
|
||||
Obsługa wiadomości przychodzących jest specyficzna dla kanału. Każdy Plugin kanału
|
||||
odpowiada za własny pipeline wejściowy. Zobacz bundlowane Pluginy kanałów
|
||||
(na przykład pakiet Pluginu Microsoft Teams lub Google Chat), aby poznać rzeczywiste wzorce.
|
||||
</Note>
|
||||
|
||||
</Step>
|
||||
|
||||
<a id="step-6-test"></a>
|
||||
<Step title="Testy">
|
||||
Napisz testy współlokowane w `src/channel.test.ts`:
|
||||
<Step title="Testuj">
|
||||
Napisz testy kolokowane w `src/channel.test.ts`:
|
||||
|
||||
```typescript src/channel.test.ts
|
||||
import { describe, it, expect } from "vitest";
|
||||
@ -565,7 +540,7 @@ Napisz testy współlokowane w `src/channel.test.ts`:
|
||||
pnpm test -- <bundled-plugin-root>/acme-chat/
|
||||
```
|
||||
|
||||
Informacje o współdzielonych helperach testowych znajdziesz w [Testowanie](/pl/plugins/sdk-testing).
|
||||
Informacje o współdzielonych helperach testowych znajdziesz w sekcji [Testowanie](/pl/plugins/sdk-testing).
|
||||
|
||||
</Step>
|
||||
</Steps>
|
||||
@ -579,41 +554,41 @@ Napisz testy współlokowane w `src/channel.test.ts`:
|
||||
├── index.ts # defineChannelPluginEntry
|
||||
├── setup-entry.ts # defineSetupPluginEntry
|
||||
├── api.ts # Eksporty publiczne (opcjonalnie)
|
||||
├── runtime-api.ts # Wewnętrzne eksporty środowiska uruchomieniowego (opcjonalnie)
|
||||
├── runtime-api.ts # Wewnętrzne eksporty runtime (opcjonalnie)
|
||||
└── src/
|
||||
├── channel.ts # ChannelPlugin przez createChatChannelPlugin
|
||||
├── channel.test.ts # Testy
|
||||
├── client.ts # Klient API platformy
|
||||
└── runtime.ts # Magazyn środowiska uruchomieniowego (w razie potrzeby)
|
||||
└── runtime.ts # Magazyn runtime (w razie potrzeby)
|
||||
```
|
||||
|
||||
## Tematy zaawansowane
|
||||
|
||||
<CardGroup cols={2}>
|
||||
<Card title="Opcje wątkowania" icon="git-branch" href="/pl/plugins/sdk-entrypoints#registration-mode">
|
||||
Stałe, ograniczone do konta lub niestandardowe tryby odpowiedzi
|
||||
Stałe, z zakresem 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">
|
||||
describeMessageTool i wykrywanie działań
|
||||
<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="Rozstrzyganie celu" icon="crosshair" href="/pl/plugins/architecture#channel-target-resolution">
|
||||
<Card title="Rozpoznawanie celu" icon="crosshair" href="/pl/plugins/architecture#channel-target-resolution">
|
||||
inferTargetChatType, looksLikeId, resolveTarget
|
||||
</Card>
|
||||
<Card title="Helpery środowiska uruchomieniowego" icon="settings" href="/pl/plugins/sdk-runtime">
|
||||
TTS, STT, multimedia, podagent przez api.runtime
|
||||
<Card title="Helpery runtime" icon="settings" href="/pl/plugins/sdk-runtime">
|
||||
TTS, STT, multimedia, subagent przez api.runtime
|
||||
</Card>
|
||||
</CardGroup>
|
||||
|
||||
<Note>
|
||||
Niektóre bundlowane powierzchnie helperów nadal istnieją na potrzeby utrzymania bundlowanych pluginów i
|
||||
zgodności. Nie są one zalecanym wzorcem dla nowych pluginów kanałów;
|
||||
Niektóre bundlowane powierzchnie helperów nadal istnieją na potrzeby utrzymania
|
||||
bundlowanych Pluginów i zgodności. Nie są one zalecanym wzorcem dla nowych Pluginów kanałów;
|
||||
preferuj ogólne podścieżki channel/setup/reply/runtime ze wspólnej
|
||||
powierzchni SDK, chyba że bezpośrednio utrzymujesz tę rodzinę bundlowanych pluginów.
|
||||
powierzchni SDK, chyba że bezpośrednio utrzymujesz tę rodzinę bundlowanych Pluginów.
|
||||
</Note>
|
||||
|
||||
## Kolejne kroki
|
||||
## Następne kroki
|
||||
|
||||
- [Pluginy dostawców](/pl/plugins/sdk-provider-plugins) — jeśli twój plugin udostępnia także modele
|
||||
- [Przegląd SDK](/pl/plugins/sdk-overview) — pełna dokumentacja importów podścieżek
|
||||
- [Pluginy dostawców](/pl/plugins/sdk-provider-plugins) — jeśli Twój Plugin udostępnia także modele
|
||||
- [Przegląd SDK](/pl/plugins/sdk-overview) — pełne odniesienie do importów podścieżek
|
||||
- [Testowanie SDK](/pl/plugins/sdk-testing) — narzędzia testowe i testy kontraktowe
|
||||
- [Manifest pluginu](/pl/plugins/manifest) — pełny schemat manifestu
|
||||
- [Manifest Pluginu](/pl/plugins/manifest) — pełny schemat manifestu
|
||||
|
||||
@ -2,28 +2,28 @@
|
||||
read_when:
|
||||
- Chcesz używać GitHub Copilot jako dostawcy modeli
|
||||
- Potrzebujesz przepływu `openclaw models auth login-github-copilot`
|
||||
summary: Zaloguj się do GitHub Copilot z OpenClaw przy użyciu device flow
|
||||
summary: Zaloguj się do GitHub Copilot z OpenClaw za pomocą przepływu urządzenia
|
||||
title: GitHub Copilot
|
||||
x-i18n:
|
||||
generated_at: "2026-04-12T23:31:02Z"
|
||||
generated_at: "2026-04-15T09:51:32Z"
|
||||
model: gpt-5.4
|
||||
provider: openai
|
||||
source_hash: 51fee006e7d4e78e37b0c29356b0090b132de727d99b603441767d3fb642140b
|
||||
source_hash: b8258fecff22fb73b057de878462941f6eb86d0c5f775c5eac4840e95ba5eccf
|
||||
source_path: providers/github-copilot.md
|
||||
workflow: 15
|
||||
---
|
||||
|
||||
# GitHub Copilot
|
||||
|
||||
GitHub Copilot to asystent kodowania AI od GitHub. Zapewnia dostęp do modeli
|
||||
Copilot dla Twojego konta i planu GitHub. OpenClaw może używać Copilot jako
|
||||
dostawcy modeli na dwa różne sposoby.
|
||||
GitHub Copilot to asystent kodowania AI od GitHub. Zapewnia dostęp do modeli Copilot
|
||||
dla Twojego konta i planu GitHub. OpenClaw może używać Copilot jako dostawcy modeli
|
||||
na dwa różne sposoby.
|
||||
|
||||
## Dwa sposoby używania Copilot w OpenClaw
|
||||
|
||||
<Tabs>
|
||||
<Tab title="Wbudowany dostawca (github-copilot)">
|
||||
Użyj natywnego przepływu logowania przez urządzenie, aby uzyskać token GitHub, a następnie wymieniaj go na
|
||||
Użyj natywnego przepływu logowania urządzenia, aby uzyskać token GitHub, a następnie wymienić go na
|
||||
tokeny API Copilot podczas działania OpenClaw. To **domyślna** i najprostsza ścieżka,
|
||||
ponieważ nie wymaga VS Code.
|
||||
|
||||
@ -33,15 +33,15 @@ dostawcy modeli na dwa różne sposoby.
|
||||
openclaw models auth login-github-copilot
|
||||
```
|
||||
|
||||
Zostaniesz poproszony o przejście pod URL i wpisanie jednorazowego kodu. Pozostaw
|
||||
terminal otwarty do czasu zakończenia procesu.
|
||||
Zostaniesz poproszony o odwiedzenie adresu URL i wpisanie jednorazowego kodu. Pozostaw
|
||||
terminal otwarty, aż proces się zakończy.
|
||||
</Step>
|
||||
<Step title="Ustaw model domyślny">
|
||||
```bash
|
||||
openclaw models set github-copilot/gpt-4o
|
||||
```
|
||||
|
||||
Albo w konfiguracji:
|
||||
Lub w konfiguracji:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -55,60 +55,60 @@ dostawcy modeli na dwa różne sposoby.
|
||||
|
||||
<Tab title="Plugin Copilot Proxy (copilot-proxy)">
|
||||
Użyj rozszerzenia VS Code **Copilot Proxy** jako lokalnego mostu. OpenClaw komunikuje się z
|
||||
endpointem `/v1` serwera proxy i używa listy modeli skonfigurowanej tam przez Ciebie.
|
||||
endpointem `/v1` proxy i używa listy modeli skonfigurowanej w tym miejscu.
|
||||
|
||||
<Note>
|
||||
Wybierz to, jeśli już uruchamiasz Copilot Proxy w VS Code lub potrzebujesz kierować ruch
|
||||
przez niego. Musisz włączyć Plugin i utrzymywać uruchomione rozszerzenie VS Code.
|
||||
Wybierz tę opcję, jeśli już używasz Copilot Proxy w VS Code albo musisz kierować ruch
|
||||
przez niego. Musisz włączyć Plugin i pozostawić uruchomione rozszerzenie VS Code.
|
||||
</Note>
|
||||
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
## Opcjonalne flagi
|
||||
## Flagi opcjonalne
|
||||
|
||||
| Flaga | Opis |
|
||||
| -------------- | ----------------------------------------------------- |
|
||||
| `--yes` | Pomija monit o potwierdzenie |
|
||||
| `--set-default` | Ustawia także zalecany domyślny model tego dostawcy |
|
||||
| Flaga | Opis |
|
||||
| --------------- | --------------------------------------------------- |
|
||||
| `--yes` | Pomiń monit o potwierdzenie |
|
||||
| `--set-default` | Zastosuj także zalecany domyślny model dostawcy |
|
||||
|
||||
```bash
|
||||
# Pomiń potwierdzenie
|
||||
openclaw models auth login-github-copilot --yes
|
||||
|
||||
# Zaloguj się i ustaw model domyślny w jednym kroku
|
||||
# Zaloguj i ustaw model domyślny w jednym kroku
|
||||
openclaw models auth login --provider github-copilot --method device --set-default
|
||||
```
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="Wymagany interaktywny TTY">
|
||||
Przepływ logowania przez urządzenie wymaga interaktywnego TTY. Uruchom go bezpośrednio w
|
||||
Przepływ logowania urządzenia wymaga interaktywnego TTY. Uruchom go bezpośrednio w
|
||||
terminalu, a nie w nieinteraktywnym skrypcie ani potoku CI.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Dostępność modeli zależy od Twojego planu">
|
||||
Dostępność modeli Copilot zależy od Twojego planu GitHub. Jeśli model
|
||||
zostanie odrzucony, spróbuj innego identyfikatora (na przykład `github-copilot/gpt-4.1`).
|
||||
Dostępność modeli Copilot zależy od Twojego planu GitHub. Jeśli model zostanie
|
||||
odrzucony, spróbuj użyć innego ID (na przykład `github-copilot/gpt-4.1`).
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Wybór transportu">
|
||||
Identyfikatory modeli Claude automatycznie używają transportu Anthropic Messages. Modele GPT,
|
||||
serii o i Gemini zachowują transport OpenAI Responses. OpenClaw
|
||||
ID modeli Claude automatycznie używają transportu Anthropic Messages. Modele GPT,
|
||||
o-series i Gemini zachowują transport OpenAI Responses. OpenClaw
|
||||
wybiera właściwy transport na podstawie odwołania do modelu.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Kolejność rozpoznawania zmiennych środowiskowych">
|
||||
OpenClaw rozpoznaje uwierzytelnianie Copilot ze zmiennych środowiskowych w następującej
|
||||
<Accordion title="Kolejność rozwiązywania zmiennych środowiskowych">
|
||||
OpenClaw rozwiązuje uwierzytelnianie Copilot ze zmiennych środowiskowych w następującej
|
||||
kolejności priorytetów:
|
||||
|
||||
| Priorytet | Zmienna | Uwagi |
|
||||
| --------- | -------------------- | ------------------------------------- |
|
||||
| Priorytet | Zmienna | Uwagi |
|
||||
| --------- | -------------------- | -------------------------------------- |
|
||||
| 1 | `COPILOT_GITHUB_TOKEN` | Najwyższy priorytet, specyficzna dla Copilot |
|
||||
| 2 | `GH_TOKEN` | Token GitHub CLI (awaryjnie) |
|
||||
| 3 | `GITHUB_TOKEN` | Standardowy token GitHub (najniższy) |
|
||||
| 2 | `GH_TOKEN` | Token GitHub CLI (zapasowy) |
|
||||
| 3 | `GITHUB_TOKEN` | Standardowy token GitHub (najniższy) |
|
||||
|
||||
Gdy ustawionych jest kilka zmiennych, OpenClaw używa tej o najwyższym priorytecie.
|
||||
Przepływ logowania przez urządzenie (`openclaw models auth login-github-copilot`) zapisuje
|
||||
Gdy ustawionych jest wiele zmiennych, OpenClaw używa tej o najwyższym priorytecie.
|
||||
Przepływ logowania urządzenia (`openclaw models auth login-github-copilot`) zapisuje
|
||||
swój token w magazynie profili uwierzytelniania i ma pierwszeństwo przed wszystkimi
|
||||
zmiennymi środowiskowymi.
|
||||
|
||||
@ -122,15 +122,55 @@ openclaw models auth login --provider github-copilot --method device --set-defau
|
||||
</AccordionGroup>
|
||||
|
||||
<Warning>
|
||||
Wymaga interaktywnego TTY. Uruchom polecenie logowania bezpośrednio w terminalu, a nie
|
||||
wewnątrz bezobsługowego skryptu ani zadania CI.
|
||||
Wymagany jest interaktywny TTY. Uruchom polecenie logowania bezpośrednio w terminalu, a nie
|
||||
wewnątrz skryptu bez interfejsu ani zadania CI.
|
||||
</Warning>
|
||||
|
||||
## Embeddingi wyszukiwania pamięci
|
||||
|
||||
GitHub Copilot może również służyć jako dostawca embeddingów dla
|
||||
[wyszukiwania pamięci](/pl/concepts/memory-search). Jeśli masz subskrypcję Copilot i
|
||||
się zalogowałeś, OpenClaw może używać go do embeddingów bez osobnego klucza API.
|
||||
|
||||
### Automatyczne wykrywanie
|
||||
|
||||
Gdy `memorySearch.provider` ma wartość `"auto"` (domyślnie), GitHub Copilot jest sprawdzany
|
||||
z priorytetem 15 — po lokalnych embeddingach, ale przed OpenAI i innymi płatnymi
|
||||
dostawcami. Jeśli token GitHub jest dostępny, OpenClaw wykrywa dostępne
|
||||
modele embeddingów z API Copilot i automatycznie wybiera najlepszy.
|
||||
|
||||
### Jawna konfiguracja
|
||||
|
||||
```json5
|
||||
{
|
||||
agents: {
|
||||
defaults: {
|
||||
memorySearch: {
|
||||
provider: "github-copilot",
|
||||
// Opcjonalnie: zastąp automatycznie wykryty model
|
||||
model: "text-embedding-3-small",
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
### Jak to działa
|
||||
|
||||
1. OpenClaw rozwiązuje Twój token GitHub (ze zmiennych środowiskowych lub profilu uwierzytelniania).
|
||||
2. Wymienia go na krótkotrwały token API Copilot.
|
||||
3. Odpytuje endpoint Copilot `/models`, aby wykryć dostępne modele embeddingów.
|
||||
4. Wybiera najlepszy model (preferuje `text-embedding-3-small`).
|
||||
5. Wysyła żądania embeddingów do endpointu Copilot `/embeddings`.
|
||||
|
||||
Dostępność modeli zależy od Twojego planu GitHub. Jeśli żadne modele embeddingów nie są
|
||||
dostępne, OpenClaw pomija Copilot i próbuje użyć następnego dostawcy.
|
||||
|
||||
## Powiązane
|
||||
|
||||
<CardGroup cols={2}>
|
||||
<Card title="Wybór modelu" href="/pl/concepts/model-providers" icon="layers">
|
||||
Wybór dostawców, odwołań do modeli i zachowania failover.
|
||||
Wybór dostawców, odwołań do modeli i zachowania awaryjnego.
|
||||
</Card>
|
||||
<Card title="OAuth i uwierzytelnianie" href="/pl/gateway/authentication" icon="key">
|
||||
Szczegóły uwierzytelniania i zasady ponownego użycia poświadczeń.
|
||||
|
||||
@ -1,25 +1,25 @@
|
||||
---
|
||||
read_when:
|
||||
- Szukasz definicji publicznych kanałów wydań
|
||||
- Szukasz publicznych definicji kanałów wydań
|
||||
- Szukasz nazewnictwa wersji i harmonogramu wydań
|
||||
summary: Publiczne kanały wydań, nazewnictwo wersji i harmonogram wydawniczy
|
||||
title: Zasady wydań
|
||||
summary: Publiczne kanały wydań, nazewnictwo wersji i harmonogram publikacji
|
||||
title: Polityka wydań
|
||||
x-i18n:
|
||||
generated_at: "2026-04-14T09:50:55Z"
|
||||
generated_at: "2026-04-15T09:51:33Z"
|
||||
model: gpt-5.4
|
||||
provider: openai
|
||||
source_hash: 3eaf9f1786b8c9fd4f5a9c657b623cb69d1a485958e1a9b8f108511839b63587
|
||||
source_hash: 88724307269ab783a9fbf8a0540fea198d8a3add68457f4e64d5707114fa518c
|
||||
source_path: reference/RELEASING.md
|
||||
workflow: 15
|
||||
---
|
||||
|
||||
# Zasady wydań
|
||||
# Polityka wydań
|
||||
|
||||
OpenClaw ma trzy publiczne kanały wydań:
|
||||
OpenClaw ma trzy publiczne ścieżki wydań:
|
||||
|
||||
- stable: tagowane wydania, które domyślnie publikują do npm `beta`, albo do npm `latest`, gdy zostanie to wyraźnie wskazane
|
||||
- beta: tagi wydań przedpremierowych, które publikują do npm `beta`
|
||||
- dev: ruchoma głowa gałęzi `main`
|
||||
- stable: oznaczone tagami wydania, które domyślnie publikują do npm `beta`, albo do npm `latest`, gdy zostanie to wyraźnie wskazane
|
||||
- beta: tagi wydań wstępnych publikowane do npm `beta`
|
||||
- dev: ruchoma głowa `main`
|
||||
|
||||
## Nazewnictwo wersji
|
||||
|
||||
@ -27,125 +27,162 @@ OpenClaw ma trzy publiczne kanały wydań:
|
||||
- Tag Git: `vYYYY.M.D`
|
||||
- Wersja poprawkowego wydania stable: `YYYY.M.D-N`
|
||||
- Tag Git: `vYYYY.M.D-N`
|
||||
- Wersja wydania przedpremierowego beta: `YYYY.M.D-beta.N`
|
||||
- Wersja beta prerelease: `YYYY.M.D-beta.N`
|
||||
- Tag Git: `vYYYY.M.D-beta.N`
|
||||
- Nie dodawaj zer wiodących do miesiąca ani dnia
|
||||
- `latest` oznacza aktualne promowane stabilne wydanie npm
|
||||
- `beta` oznacza aktualny cel instalacji beta
|
||||
- Wydania stable i poprawkowe wydania stable domyślnie publikują do npm `beta`; operatorzy wydań mogą jawnie wskazać `latest` albo później promować zweryfikowaną kompilację beta
|
||||
- Nie dopełniaj miesiąca ani dnia zerami z przodu
|
||||
- `latest` oznacza aktualnie promowane stabilne wydanie npm
|
||||
- `beta` oznacza bieżący docelowy kanał instalacji beta
|
||||
- Wydania stable i poprawkowe wydania stable domyślnie publikują do npm `beta`; operatorzy wydań mogą jawnie wskazać `latest` albo później wypromować zweryfikowaną wersję beta
|
||||
- Każde wydanie OpenClaw obejmuje jednocześnie pakiet npm i aplikację macOS
|
||||
|
||||
## Harmonogram wydań
|
||||
|
||||
- Wydania przechodzą najpierw przez beta
|
||||
- Stable pojawia się dopiero po zweryfikowaniu najnowszej bety
|
||||
- Szczegółowa procedura wydania, zatwierdzenia, poświadczenia i uwagi dotyczące odzyskiwania są przeznaczone wyłącznie dla maintainerów
|
||||
- Wydania najpierw trafiają do beta
|
||||
- Stable pojawia się dopiero po zweryfikowaniu najnowszej wersji beta
|
||||
- Szczegółowa procedura wydania, zatwierdzenia, poświadczenia i notatki dotyczące odzyskiwania są
|
||||
dostępne wyłącznie dla maintainerów
|
||||
|
||||
## Kontrola przed wydaniem
|
||||
## Wstępna walidacja wydania
|
||||
|
||||
- Uruchom `pnpm build && pnpm ui:build` przed `pnpm release:check`, aby oczekiwane artefakty wydania `dist/*` oraz pakiet Control UI istniały na potrzeby kroku walidacji pakietu
|
||||
- Uruchom `pnpm release:check` przed każdym tagowanym wydaniem
|
||||
- Kontrole wydania są teraz uruchamiane w osobnym ręcznym workflow:
|
||||
- Uruchom `pnpm build && pnpm ui:build` przed `pnpm release:check`, aby oczekiwane
|
||||
artefakty wydania `dist/*` i bundle Control UI istniały na potrzeby kroku
|
||||
walidacji paczki
|
||||
- Uruchom `pnpm release:check` przed każdym wydaniem oznaczonym tagiem
|
||||
- Kontrole wydań są teraz uruchamiane w osobnym ręcznym workflow:
|
||||
`OpenClaw Release Checks`
|
||||
- Ten podział jest celowy: rzeczywista ścieżka wydania npm ma pozostać krótka, deterministyczna i skoncentrowana na artefaktach, podczas gdy wolniejsze testy live mają pozostać w osobnym kanale, aby nie opóźniały ani nie blokowały publikacji
|
||||
- Kontrole wydania muszą być uruchamiane z referencji workflow `main`, aby logika workflow i sekrety pozostały kanoniczne
|
||||
- Ten workflow akceptuje istniejący tag wydania albo bieżący pełny 40-znakowy SHA commita `main`
|
||||
- W trybie commit-SHA akceptowany jest tylko bieżący HEAD `origin/main`; dla starszych commitów wydania użyj tagu wydania
|
||||
- Walidacyjny preflight `OpenClaw NPM Release` również akceptuje bieżący pełny 40-znakowy SHA commita `main` bez wymagania wypchniętego tagu
|
||||
- Ścieżka SHA jest tylko walidacyjna i nie może zostać promowana do rzeczywistej publikacji
|
||||
- W trybie SHA workflow syntetyzuje `v<package.json version>` wyłącznie na potrzeby sprawdzenia metadanych pakietu; rzeczywista publikacja nadal wymaga prawdziwego tagu wydania
|
||||
- Oba workflow utrzymują rzeczywistą ścieżkę publikacji i promocji na runnerach hostowanych przez GitHub, podczas gdy niemutująca ścieżka walidacji może używać większych runnerów Blacksmith Linux
|
||||
- Międzyplatformowa walidacja instalacji i aktualizacji w czasie działania jest wywoływana z
|
||||
prywatnego workflow wywołującego
|
||||
`openclaw/releases-private/.github/workflows/openclaw-cross-os-release-checks.yml`,
|
||||
który uruchamia wielokrotnego użytku publiczny workflow
|
||||
`.github/workflows/openclaw-cross-os-release-checks-reusable.yml`
|
||||
- Ten podział jest celowy: prawdziwa ścieżka wydania npm ma pozostać krótka,
|
||||
deterministyczna i skupiona na artefaktach, podczas gdy wolniejsze kontrole na żywo pozostają w
|
||||
osobnym torze, aby nie opóźniały ani nie blokowały publikacji
|
||||
- Kontrole wydań muszą być uruchamiane z referencji workflow `main`, aby logika
|
||||
workflow i sekrety pozostawały kanoniczne
|
||||
- Ten workflow akceptuje albo istniejący tag wydania, albo bieżący pełny
|
||||
40-znakowy SHA commita `main`
|
||||
- W trybie commit-SHA akceptowany jest tylko bieżący HEAD `origin/main`; dla
|
||||
starszych commitów wydania użyj tagu wydania
|
||||
- Wstępna walidacja `OpenClaw NPM Release` w trybie tylko walidacji także akceptuje bieżący
|
||||
pełny 40-znakowy SHA commita `main` bez wymogu wypchniętego tagu
|
||||
- Ta ścieżka SHA służy wyłącznie do walidacji i nie może zostać wypromowana do rzeczywistej publikacji
|
||||
- W trybie SHA workflow syntetyzuje `v<package.json version>` wyłącznie na potrzeby
|
||||
sprawdzenia metadanych pakietu; prawdziwa publikacja nadal wymaga rzeczywistego tagu wydania
|
||||
- Oba workflow utrzymują rzeczywistą ścieżkę publikacji i promocji na runnerach hostowanych przez GitHub, podczas gdy niezmieniająca stanu
|
||||
ścieżka walidacji może korzystać z większych
|
||||
runnerów Blacksmith Linux
|
||||
- Ten workflow uruchamia
|
||||
`OPENCLAW_LIVE_TEST=1 OPENCLAW_LIVE_CACHE_TEST=1 pnpm test:live:cache`
|
||||
z użyciem sekretów workflow `OPENAI_API_KEY` i `ANTHROPIC_API_KEY`
|
||||
- Preflight wydania npm nie czeka już na osobny kanał kontroli wydania
|
||||
- Przed zatwierdzeniem uruchom `RELEASE_TAG=vYYYY.M.D node --import tsx scripts/openclaw-npm-release-check.ts`
|
||||
(albo odpowiadający tag beta/poprawkowy)
|
||||
- Po publikacji do npm uruchom
|
||||
- Wstępna walidacja wydania npm nie czeka już na oddzielny tor kontroli wydań
|
||||
- Przed zatwierdzeniem uruchom
|
||||
`RELEASE_TAG=vYYYY.M.D node --import tsx scripts/openclaw-npm-release-check.ts`
|
||||
(lub odpowiadający tag beta/poprawkowy)
|
||||
- Po publikacji npm uruchom
|
||||
`node --import tsx scripts/openclaw-npm-postpublish-verify.ts YYYY.M.D`
|
||||
(albo odpowiadającą wersję beta/poprawkową), aby zweryfikować opublikowaną ścieżkę instalacji z rejestru w świeżym tymczasowym prefiksie
|
||||
- Automatyzacja wydań maintainerów używa teraz modelu preflight-then-promote:
|
||||
(lub odpowiadającą wersję beta/poprawkową), aby zweryfikować opublikowaną ścieżkę
|
||||
instalacji z rejestru w świeżym tymczasowym prefiksie
|
||||
- Automatyzacja wydań maintainerów używa teraz podejścia preflight-then-promote:
|
||||
- rzeczywista publikacja npm musi przejść pomyślny npm `preflight_run_id`
|
||||
- wydania stable do npm domyślnie trafiają do `beta`
|
||||
- publikacja stable do npm może jawnie wskazać `latest` przez input workflow
|
||||
- promocja stable w npm z `beta` do `latest` nadal jest dostępna jako jawny tryb ręczny w zaufanym workflow `OpenClaw NPM Release`
|
||||
- bezpośrednie publikacje stable mogą także uruchamiać jawny tryb synchronizacji dist-tag, który kieruje zarówno `latest`, jak i `beta` na już opublikowaną wersję stable
|
||||
- te tryby dist-tag nadal wymagają poprawnego `NPM_TOKEN` w środowisku `npm-release`, ponieważ zarządzanie `npm dist-tag` jest oddzielne od zaufanej publikacji
|
||||
- stabilne wydania npm domyślnie trafiają do `beta`
|
||||
- stabilna publikacja npm może jawnie kierować do `latest` przez input workflow
|
||||
- zmiana npm dist-tag oparta na tokenie znajduje się teraz w
|
||||
`openclaw/releases-private/.github/workflows/openclaw-npm-dist-tags.yml`
|
||||
ze względów bezpieczeństwa, ponieważ `npm dist-tag add` nadal wymaga `NPM_TOKEN`, podczas gdy
|
||||
publiczne repo zachowuje publikację wyłącznie przez OIDC
|
||||
- publiczne `macOS Release` służy wyłącznie do walidacji
|
||||
- rzeczywista prywatna publikacja mac musi przejść pomyślne prywatne mac
|
||||
- rzeczywista prywatna publikacja mac musi przejść pomyślne prywatne uruchomienia mac
|
||||
`preflight_run_id` i `validate_run_id`
|
||||
- rzeczywiste ścieżki publikacji promują przygotowane artefakty zamiast ponownie je budować
|
||||
- W przypadku poprawkowych wydań stable, takich jak `YYYY.M.D-N`, weryfikator po publikacji sprawdza również tę samą ścieżkę aktualizacji w tymczasowym prefiksie z `YYYY.M.D` do `YYYY.M.D-N`, aby poprawki wydań nie mogły po cichu pozostawić starszych globalnych instalacji przy bazowym ładunku stable
|
||||
- Preflight wydania npm kończy się błędem w trybie fail-closed, chyba że tarball zawiera zarówno `dist/control-ui/index.html`, jak i niepustą zawartość `dist/control-ui/assets/`, abyśmy nie wysłali ponownie pustego panelu przeglądarkowego
|
||||
- `pnpm test:install:smoke` wymusza również limit `unpackedSize` dla `npm pack` na kandydacie tarballa aktualizacji, dzięki czemu e2e instalatora wychwytuje przypadkowe zwiększenie rozmiaru pakietu przed ścieżką publikacji wydania
|
||||
- Jeśli prace nad wydaniem dotyczyły planowania CI, manifestów czasu rozszerzeń albo macierzy testów rozszerzeń, przed zatwierdzeniem zregeneruj i przejrzyj należące do planera wyjścia macierzy workflow `checks-node-extensions` z `.github/workflows/ci.yml`, aby informacje o wydaniu nie opisywały nieaktualnego układu CI
|
||||
- rzeczywiste ścieżki publikacji promują przygotowane artefakty zamiast budować
|
||||
je ponownie
|
||||
- Dla poprawkowych wydań stable takich jak `YYYY.M.D-N`, weryfikator po publikacji
|
||||
sprawdza także tę samą ścieżkę aktualizacji w tymczasowym prefiksie z `YYYY.M.D` do `YYYY.M.D-N`,
|
||||
aby poprawki wydań nie mogły po cichu pozostawić starszych globalnych instalacji na
|
||||
bazowym stabilnym payloadzie
|
||||
- Wstępna walidacja wydania npm kończy się błędem domyślnie, jeśli tarball nie zawiera zarówno
|
||||
`dist/control-ui/index.html`, jak i niepustego payloadu `dist/control-ui/assets/`,
|
||||
abyśmy nie wysłali ponownie pustego panelu przeglądarkowego
|
||||
- `pnpm test:install:smoke` wymusza także budżet `unpackedSize` dla paczki npm na
|
||||
kandydackim tarballu aktualizacji, dzięki czemu e2e instalatora wychwytuje przypadkowy wzrost
|
||||
rozmiaru paczki przed ścieżką publikacji wydania
|
||||
- Jeśli prace nad wydaniem dotyczyły planowania CI, manifestów czasowych rozszerzeń albo
|
||||
macierzy testów rozszerzeń, przed zatwierdzeniem zregeneruj i sprawdź
|
||||
należące do planera wyniki macierzy workflow `checks-node-extensions` z `.github/workflows/ci.yml`,
|
||||
aby notatki do wydania nie opisywały nieaktualnego układu CI
|
||||
- Gotowość stabilnego wydania macOS obejmuje także powierzchnie aktualizatora:
|
||||
- wydanie GitHub musi ostatecznie zawierać spakowane `.zip`, `.dmg` i `.dSYM.zip`
|
||||
- wydanie GitHub musi ostatecznie zawierać spakowane pliki `.zip`, `.dmg` i `.dSYM.zip`
|
||||
- `appcast.xml` na `main` musi po publikacji wskazywać nowy stabilny plik zip
|
||||
- spakowana aplikacja musi zachować niedebugowe bundle id, niepusty adres URL kanału Sparkle oraz `CFBundleVersion` równy lub wyższy od kanonicznego minimalnego poziomu kompilacji Sparkle dla tej wersji wydania
|
||||
- spakowana aplikacja musi zachować niedebugowy bundle id, niepusty URL kanału Sparkle
|
||||
oraz `CFBundleVersion` nie niższy niż kanoniczny minimalny poziom builda Sparkle
|
||||
dla tej wersji wydania
|
||||
|
||||
## Inputy workflow NPM
|
||||
## Wejścia workflow NPM
|
||||
|
||||
`OpenClaw NPM Release` akceptuje następujące inputy sterowane przez operatora:
|
||||
`OpenClaw NPM Release` akceptuje następujące wejścia sterowane przez operatora:
|
||||
|
||||
- `tag`: wymagany tag wydania, taki jak `v2026.4.2`, `v2026.4.2-1` albo
|
||||
`v2026.4.2-beta.1`; gdy `preflight_only=true`, może to być również bieżący
|
||||
pełny 40-znakowy SHA commita `main` dla walidacyjnego preflightu
|
||||
- `preflight_only`: `true` dla samej walidacji/budowania/pakowania, `false` dla rzeczywistej ścieżki publikacji
|
||||
- `preflight_run_id`: wymagany w rzeczywistej ścieżce publikacji, aby workflow ponownie wykorzystał przygotowany tarball z pomyślnego uruchomienia preflightu
|
||||
- `preflight_only`: `true` tylko dla walidacji/budowy/pakowania, `false` dla
|
||||
rzeczywistej ścieżki publikacji
|
||||
- `preflight_run_id`: wymagane w rzeczywistej ścieżce publikacji, aby workflow ponownie użył
|
||||
przygotowanego tarballa z pomyślnego uruchomienia preflightu
|
||||
- `npm_dist_tag`: docelowy tag npm dla ścieżki publikacji; domyślnie `beta`
|
||||
- `promote_beta_to_latest`: `true`, aby pominąć publikację i przenieść już opublikowaną stabilną kompilację `beta` na `latest`
|
||||
- `sync_stable_dist_tags`: `true`, aby pominąć publikację i skierować zarówno `latest`, jak i `beta` na już opublikowaną stabilną wersję
|
||||
|
||||
`OpenClaw Release Checks` akceptuje następujące inputy sterowane przez operatora:
|
||||
`OpenClaw Release Checks` akceptuje następujące wejścia sterowane przez operatora:
|
||||
|
||||
- `ref`: istniejący tag wydania albo bieżący pełny 40-znakowy SHA commita `main` do zweryfikowania
|
||||
- `ref`: istniejący tag wydania albo bieżący pełny 40-znakowy SHA commita `main`
|
||||
do zwalidowania
|
||||
|
||||
Reguły:
|
||||
Zasady:
|
||||
|
||||
- Tagi stable i poprawkowe mogą publikować zarówno do `beta`, jak i do `latest`
|
||||
- Tagi wydań przedpremierowych beta mogą publikować wyłącznie do `beta`
|
||||
- Pełny input SHA commita jest dozwolony tylko wtedy, gdy `preflight_only=true`
|
||||
- Tryb commit-SHA kontroli wydania wymaga również bieżącego HEAD `origin/main`
|
||||
- Rzeczywista ścieżka publikacji musi używać tego samego `npm_dist_tag`, który został użyty podczas preflightu; workflow weryfikuje te metadane przed kontynuacją publikacji
|
||||
- Tryb promocji musi używać tagu stable albo poprawkowego, `preflight_only=false`,
|
||||
pustego `preflight_run_id` oraz `npm_dist_tag=beta`
|
||||
- Tryb synchronizacji dist-tag musi używać tagu stable albo poprawkowego,
|
||||
`preflight_only=false`, pustego `preflight_run_id`, `npm_dist_tag=latest`
|
||||
oraz `promote_beta_to_latest=false`
|
||||
- Tryby promocji i synchronizacji dist-tag również wymagają poprawnego `NPM_TOKEN`, ponieważ `npm dist-tag add` nadal wymaga zwykłego uwierzytelnienia npm; zaufana publikacja obejmuje tylko ścieżkę publikacji pakietu
|
||||
- Tagi stable i poprawkowe mogą publikować albo do `beta`, albo do `latest`
|
||||
- Tagi beta prerelease mogą publikować wyłącznie do `beta`
|
||||
- Pełny SHA commita jest dozwolony tylko wtedy, gdy `preflight_only=true`
|
||||
- Tryb commit-SHA w kontrolach wydań również wymaga bieżącego HEAD `origin/main`
|
||||
- Rzeczywista ścieżka publikacji musi używać tego samego `npm_dist_tag`, którego użyto podczas preflightu;
|
||||
workflow weryfikuje te metadane, zanim publikacja będzie kontynuowana
|
||||
|
||||
## Sekwencja wydania stable npm
|
||||
## Sekwencja stabilnego wydania npm
|
||||
|
||||
Podczas przygotowywania stabilnego wydania npm:
|
||||
|
||||
1. Uruchom `OpenClaw NPM Release` z `preflight_only=true`
|
||||
- Zanim tag będzie istniał, możesz użyć bieżącego pełnego SHA commita `main`
|
||||
do walidacyjnego próbnego uruchomienia workflow preflight
|
||||
2. Wybierz `npm_dist_tag=beta` dla zwykłego przepływu beta-first albo `latest` tylko wtedy, gdy celowo chcesz wykonać bezpośrednią publikację stable
|
||||
3. Uruchom osobno `OpenClaw Release Checks` z tym samym tagiem albo pełnym bieżącym SHA `main`, gdy chcesz uzyskać pokrycie live dla cache promptów
|
||||
- To rozdzielenie jest celowe, aby pokrycie live pozostawało dostępne bez ponownego łączenia długotrwałych albo niestabilnych kontroli z workflow publikacji
|
||||
4. Zapisz pomyślny `preflight_run_id`
|
||||
- Zanim pojawi się tag, możesz użyć bieżącego pełnego SHA commita `main` do
|
||||
walidacyjnego dry run workflow preflight
|
||||
2. Wybierz `npm_dist_tag=beta` dla normalnego przepływu beta-first albo `latest` tylko
|
||||
wtedy, gdy celowo chcesz bezpośrednio opublikować stabilne wydanie
|
||||
3. Uruchom oddzielnie `OpenClaw Release Checks` z tym samym tagiem albo
|
||||
pełnym bieżącym SHA `main`, jeśli chcesz objąć testami prompt cache na żywo
|
||||
- To rozdzielenie jest celowe, aby pokrycie na żywo pozostawało dostępne bez
|
||||
ponownego łączenia długotrwałych lub niestabilnych kontroli z workflow publikacji
|
||||
4. Zachowaj pomyślne `preflight_run_id`
|
||||
5. Uruchom ponownie `OpenClaw NPM Release` z `preflight_only=false`, tym samym
|
||||
`tag`, tym samym `npm_dist_tag` i zapisanym `preflight_run_id`
|
||||
6. Jeśli wydanie trafiło do `beta`, uruchom później `OpenClaw NPM Release` z tym samym stabilnym `tag`, `promote_beta_to_latest=true`, `preflight_only=false`,
|
||||
pustym `preflight_run_id` i `npm_dist_tag=beta`, gdy chcesz przenieść tę
|
||||
opublikowaną kompilację do `latest`
|
||||
6. Jeśli wydanie trafiło do `beta`, użyj prywatnego workflow
|
||||
`openclaw/releases-private/.github/workflows/openclaw-npm-dist-tags.yml`,
|
||||
aby wypromować tę stabilną wersję z `beta` do `latest`
|
||||
7. Jeśli wydanie zostało celowo opublikowane bezpośrednio do `latest` i `beta`
|
||||
powinno wskazywać tę samą stabilną kompilację, uruchom `OpenClaw NPM Release` z tym samym stabilnym `tag`, `sync_stable_dist_tags=true`, `promote_beta_to_latest=false`, `preflight_only=false`, pustym `preflight_run_id` i `npm_dist_tag=latest`
|
||||
powinno od razu wskazywać ten sam stabilny build, użyj tego samego prywatnego
|
||||
workflow, aby skierować oba dist-tagi na stabilną wersję, albo pozwól, aby jego zaplanowana
|
||||
samonaprawcza synchronizacja przesunęła `beta` później
|
||||
|
||||
Tryby promocji i synchronizacji dist-tag nadal wymagają zatwierdzenia środowiska `npm-release` oraz poprawnego `NPM_TOKEN` dostępnego dla tego uruchomienia workflow.
|
||||
Zmiana dist-tag znajduje się w prywatnym repo ze względów bezpieczeństwa, ponieważ nadal
|
||||
wymaga `NPM_TOKEN`, podczas gdy publiczne repo zachowuje publikację wyłącznie przez OIDC.
|
||||
|
||||
Dzięki temu zarówno ścieżka bezpośredniej publikacji, jak i ścieżka promocji beta-first pozostają udokumentowane i widoczne dla operatora.
|
||||
To sprawia, że zarówno ścieżka publikacji bezpośredniej, jak i ścieżka promocji beta-first są
|
||||
udokumentowane i widoczne dla operatora.
|
||||
|
||||
## Publiczne odniesienia
|
||||
|
||||
- [`.github/workflows/openclaw-npm-release.yml`](https://github.com/openclaw/openclaw/blob/main/.github/workflows/openclaw-npm-release.yml)
|
||||
- [`.github/workflows/openclaw-release-checks.yml`](https://github.com/openclaw/openclaw/blob/main/.github/workflows/openclaw-release-checks.yml)
|
||||
- [`.github/workflows/openclaw-cross-os-release-checks-reusable.yml`](https://github.com/openclaw/openclaw/blob/main/.github/workflows/openclaw-cross-os-release-checks-reusable.yml)
|
||||
- [`scripts/openclaw-npm-release-check.ts`](https://github.com/openclaw/openclaw/blob/main/scripts/openclaw-npm-release-check.ts)
|
||||
- [`scripts/package-mac-dist.sh`](https://github.com/openclaw/openclaw/blob/main/scripts/package-mac-dist.sh)
|
||||
- [`scripts/make_appcast.sh`](https://github.com/openclaw/openclaw/blob/main/scripts/make_appcast.sh)
|
||||
|
||||
Maintainerzy używają prywatnej dokumentacji wydań w
|
||||
Maintainerzy korzystają z prywatnej dokumentacji wydań w
|
||||
[`openclaw/maintainers/release/README.md`](https://github.com/openclaw/maintainers/blob/main/release/README.md)
|
||||
jako właściwego runbooka.
|
||||
|
||||
@ -4,92 +4,93 @@ read_when:
|
||||
- Chcesz skonfigurować backend QMD
|
||||
- Chcesz dostroić wyszukiwanie hybrydowe, MMR lub zanik czasowy
|
||||
- Chcesz włączyć multimodalne indeksowanie pamięci
|
||||
summary: Wszystkie opcje konfiguracji dotyczące wyszukiwania pamięci, dostawców embeddingów, QMD, wyszukiwania hybrydowego i indeksowania multimodalnego
|
||||
title: Dokumentacja konfiguracji pamięci
|
||||
summary: Wszystkie opcje konfiguracji wyszukiwania w pamięci, dostawców embeddingów, QMD, wyszukiwania hybrydowego i indeksowania multimodalnego
|
||||
title: Referencja konfiguracji pamięci
|
||||
x-i18n:
|
||||
generated_at: "2026-04-12T23:33:59Z"
|
||||
generated_at: "2026-04-15T09:51:45Z"
|
||||
model: gpt-5.4
|
||||
provider: openai
|
||||
source_hash: 299ca9b69eea292ea557a2841232c637f5c1daf2bc0f73c0a42f7c0d8d566ce2
|
||||
source_hash: a13f6e982ee47401cc9a71bf2ee6a5305d06158b806a04703bcdcd92e340e4d5
|
||||
source_path: reference/memory-config.md
|
||||
workflow: 15
|
||||
---
|
||||
|
||||
# Dokumentacja konfiguracji pamięci
|
||||
# Referencja konfiguracji pamięci
|
||||
|
||||
Ta strona zawiera wszystkie opcje konfiguracji wyszukiwania pamięci OpenClaw. Aby zapoznać się z omówieniami koncepcyjnymi, zobacz:
|
||||
Ta strona zawiera wszystkie opcje konfiguracji wyszukiwania pamięci w OpenClaw. Omówienia koncepcyjne znajdziesz tutaj:
|
||||
|
||||
- [Przegląd pamięci](/pl/concepts/memory) -- jak działa pamięć
|
||||
- [Wbudowany silnik](/pl/concepts/memory-builtin) -- domyślny backend SQLite
|
||||
- [Silnik QMD](/pl/concepts/memory-qmd) -- lokalny sidecar działający lokalnie w pierwszej kolejności
|
||||
- [Wyszukiwanie pamięci](/pl/concepts/memory-search) -- pipeline wyszukiwania i dostrajanie
|
||||
- [Active Memory](/pl/concepts/active-memory) -- włączanie sub-agenta pamięci dla interaktywnych sesji
|
||||
- [Silnik QMD](/pl/concepts/memory-qmd) -- lokalny sidecar
|
||||
- [Wyszukiwanie w pamięci](/pl/concepts/memory-search) -- pipeline wyszukiwania i dostrajanie
|
||||
- [Active Memory](/pl/concepts/active-memory) -- włączanie subagenta pamięci dla interaktywnych sesji
|
||||
|
||||
Wszystkie ustawienia wyszukiwania pamięci znajdują się w `agents.defaults.memorySearch` w
|
||||
`openclaw.json`, o ile nie zaznaczono inaczej.
|
||||
|
||||
Jeśli szukasz przełącznika funkcji **Active Memory** i konfiguracji sub-agenta,
|
||||
Jeśli szukasz przełącznika funkcji **Active Memory** i konfiguracji subagenta,
|
||||
znajdują się one w `plugins.entries.active-memory`, a nie w `memorySearch`.
|
||||
|
||||
Active Memory używa modelu dwóch bramek:
|
||||
|
||||
1. Plugin musi być włączony i wskazywać bieżący identyfikator agenta
|
||||
2. Żądanie musi być kwalifikującą się interaktywną trwałą sesją czatu
|
||||
1. Plugin musi być włączony i kierowany na bieżący identyfikator agenta
|
||||
2. Żądanie musi dotyczyć kwalifikującej się interaktywnej trwałej sesji czatu
|
||||
|
||||
Zobacz [Active Memory](/pl/concepts/active-memory), aby poznać model aktywacji,
|
||||
konfigurację należącą do Pluginu, trwałość transkryptów i bezpieczny wzorzec wdrażania.
|
||||
Model aktywacji, konfigurację należącą do Pluginu, trwałość transkryptów i bezpieczny wzorzec wdrażania opisano w [Active Memory](/pl/concepts/active-memory).
|
||||
|
||||
---
|
||||
|
||||
## Wybór dostawcy
|
||||
|
||||
| Klucz | Typ | Domyślnie | Opis |
|
||||
| --------- | --------- | --------------- | ------------------------------------------------------------------------------------------ |
|
||||
| `provider` | `string` | wykrywane automatycznie | Id adaptera embeddingów: `openai`, `gemini`, `voyage`, `mistral`, `bedrock`, `ollama`, `local` |
|
||||
| `model` | `string` | domyślny dla dostawcy | Nazwa modelu embeddingów |
|
||||
| `fallback` | `string` | `"none"` | Id adaptera zapasowego, gdy główny zawiedzie |
|
||||
| `enabled` | `boolean` | `true` | Włącza lub wyłącza wyszukiwanie pamięci |
|
||||
| Key | Type | Default | Opis |
|
||||
| ---------- | --------- | ---------------- | ------------------------------------------------------------------------------------------------------------- |
|
||||
| `provider` | `string` | wykrywany automatycznie | Identyfikator adaptera embeddingów: `bedrock`, `gemini`, `github-copilot`, `local`, `mistral`, `ollama`, `openai`, `voyage` |
|
||||
| `model` | `string` | domyślny dostawcy | Nazwa modelu embeddingów |
|
||||
| `fallback` | `string` | `"none"` | Identyfikator adaptera zapasowego, gdy podstawowy zawiedzie |
|
||||
| `enabled` | `boolean` | `true` | Włącza lub wyłącza wyszukiwanie pamięci |
|
||||
|
||||
### Kolejność automatycznego wykrywania
|
||||
|
||||
Gdy `provider` nie jest ustawiony, OpenClaw wybiera pierwszy dostępny:
|
||||
|
||||
1. `local` -- jeśli skonfigurowano `memorySearch.local.modelPath` i plik istnieje.
|
||||
2. `openai` -- jeśli można rozwiązać klucz OpenAI.
|
||||
3. `gemini` -- jeśli można rozwiązać klucz Gemini.
|
||||
4. `voyage` -- jeśli można rozwiązać klucz Voyage.
|
||||
5. `mistral` -- jeśli można rozwiązać klucz Mistral.
|
||||
6. `bedrock` -- jeśli łańcuch poświadczeń AWS SDK zostanie rozwiązany (rola instancji, klucze dostępu, profil, SSO, tożsamość web lub współdzielona konfiguracja).
|
||||
1. `local` -- jeśli `memorySearch.local.modelPath` jest skonfigurowane i plik istnieje.
|
||||
2. `github-copilot` -- jeśli można rozwiązać token GitHub Copilot (zmienna środowiskowa lub profil uwierzytelniania).
|
||||
3. `openai` -- jeśli można rozwiązać klucz OpenAI.
|
||||
4. `gemini` -- jeśli można rozwiązać klucz Gemini.
|
||||
5. `voyage` -- jeśli można rozwiązać klucz Voyage.
|
||||
6. `mistral` -- jeśli można rozwiązać klucz Mistral.
|
||||
7. `bedrock` -- jeśli łańcuch poświadczeń AWS SDK zostanie rozwiązany (rola instancji, klucze dostępu, profil, SSO, tożsamość webowa lub współdzielona konfiguracja).
|
||||
|
||||
`ollama` jest obsługiwane, ale nie jest wykrywane automatycznie (ustaw je jawnie).
|
||||
|
||||
### Rozwiązywanie klucza API
|
||||
|
||||
Zdalne embeddingi wymagają klucza API. Bedrock używa zamiast tego domyślnego
|
||||
Zdalne embeddingi wymagają klucza API. Bedrock zamiast tego używa domyślnego
|
||||
łańcucha poświadczeń AWS SDK (role instancji, SSO, klucze dostępu).
|
||||
|
||||
| Dostawca | Zmienna env | Klucz konfiguracji |
|
||||
| -------- | ---------------------------- | -------------------------------- |
|
||||
| OpenAI | `OPENAI_API_KEY` | `models.providers.openai.apiKey` |
|
||||
| Gemini | `GEMINI_API_KEY` | `models.providers.google.apiKey` |
|
||||
| Voyage | `VOYAGE_API_KEY` | `models.providers.voyage.apiKey` |
|
||||
| Mistral | `MISTRAL_API_KEY` | `models.providers.mistral.apiKey` |
|
||||
| Bedrock | łańcuch poświadczeń AWS | Klucz API nie jest potrzebny |
|
||||
| Ollama | `OLLAMA_API_KEY` (placeholder) | -- |
|
||||
| Provider | Env var | Config key |
|
||||
| -------------- | -------------------------------------------------- | --------------------------------- |
|
||||
| Bedrock | łańcuch poświadczeń AWS | Klucz API nie jest wymagany |
|
||||
| Gemini | `GEMINI_API_KEY` | `models.providers.google.apiKey` |
|
||||
| GitHub Copilot | `COPILOT_GITHUB_TOKEN`, `GH_TOKEN`, `GITHUB_TOKEN` | Profil uwierzytelniania przez logowanie urządzenia |
|
||||
| Mistral | `MISTRAL_API_KEY` | `models.providers.mistral.apiKey` |
|
||||
| Ollama | `OLLAMA_API_KEY` (symbol zastępczy) | -- |
|
||||
| OpenAI | `OPENAI_API_KEY` | `models.providers.openai.apiKey` |
|
||||
| Voyage | `VOYAGE_API_KEY` | `models.providers.voyage.apiKey` |
|
||||
|
||||
Codex OAuth obejmuje tylko chat/completions i nie spełnia wymagań żądań embeddingów.
|
||||
OAuth Codex obejmuje tylko czat/completions i nie spełnia wymagań żądań embeddingów.
|
||||
|
||||
---
|
||||
|
||||
## Konfiguracja zdalnego punktu końcowego
|
||||
## Konfiguracja zdalnego endpointu
|
||||
|
||||
Dla niestandardowych punktów końcowych zgodnych z OpenAI lub nadpisywania wartości domyślnych dostawcy:
|
||||
Dla własnych endpointów zgodnych z OpenAI lub nadpisywania ustawień domyślnych dostawcy:
|
||||
|
||||
| Klucz | Typ | Opis |
|
||||
| ---------------- | -------- | ---------------------------------------------------- |
|
||||
| `remote.baseUrl` | `string` | Niestandardowy bazowy URL API |
|
||||
| `remote.apiKey` | `string` | Nadpisanie klucza API |
|
||||
| `remote.headers` | `object` | Dodatkowe nagłówki HTTP (łączone z domyślnymi dostawcy) |
|
||||
| Key | Type | Opis |
|
||||
| ---------------- | -------- | -------------------------------------------------- |
|
||||
| `remote.baseUrl` | `string` | Własny bazowy URL API |
|
||||
| `remote.apiKey` | `string` | Nadpisanie klucza API |
|
||||
| `remote.headers` | `object` | Dodatkowe nagłówki HTTP (łączone z domyślnymi ustawieniami dostawcy) |
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -112,13 +113,13 @@ Dla niestandardowych punktów końcowych zgodnych z OpenAI lub nadpisywania wart
|
||||
|
||||
## Konfiguracja specyficzna dla Gemini
|
||||
|
||||
| Klucz | Typ | Domyślnie | Opis |
|
||||
| Key | Type | Default | Opis |
|
||||
| ---------------------- | -------- | ---------------------- | ------------------------------------------ |
|
||||
| `model` | `string` | `gemini-embedding-001` | Obsługuje także `gemini-embedding-2-preview` |
|
||||
| `outputDimensionality` | `number` | `3072` | Dla Embedding 2: 768, 1536 lub 3072 |
|
||||
|
||||
<Warning>
|
||||
Zmiana modelu lub `outputDimensionality` uruchamia automatyczne pełne ponowne indeksowanie.
|
||||
Zmiana modelu lub `outputDimensionality` powoduje automatyczne pełne przeindeksowanie.
|
||||
</Warning>
|
||||
|
||||
---
|
||||
@ -126,7 +127,7 @@ Zmiana modelu lub `outputDimensionality` uruchamia automatyczne pełne ponowne i
|
||||
## Konfiguracja embeddingów Bedrock
|
||||
|
||||
Bedrock używa domyślnego łańcucha poświadczeń AWS SDK -- nie są potrzebne klucze API.
|
||||
Jeśli OpenClaw działa na EC2 z rolą instancji z włączonym Bedrock, po prostu ustaw
|
||||
Jeśli OpenClaw działa na EC2 z rolą instancji z włączonym Bedrock, wystarczy ustawić
|
||||
dostawcę i model:
|
||||
|
||||
```json5
|
||||
@ -142,28 +143,28 @@ dostawcę i model:
|
||||
}
|
||||
```
|
||||
|
||||
| Klucz | Typ | Domyślnie | Opis |
|
||||
| ---------------------- | -------- | ----------------------------- | --------------------------------- |
|
||||
| `model` | `string` | `amazon.titan-embed-text-v2:0` | Dowolny identyfikator modelu embeddingów Bedrock |
|
||||
| `outputDimensionality` | `number` | domyślna dla modelu | Dla Titan V2: 256, 512 lub 1024 |
|
||||
| Key | Type | Default | Opis |
|
||||
| ---------------------- | -------- | ------------------------------ | ------------------------------- |
|
||||
| `model` | `string` | `amazon.titan-embed-text-v2:0` | Dowolny identyfikator modelu embeddingów Bedrock |
|
||||
| `outputDimensionality` | `number` | domyślna wartość modelu | Dla Titan V2: 256, 512 lub 1024 |
|
||||
|
||||
### Obsługiwane modele
|
||||
|
||||
Obsługiwane są następujące modele (z wykrywaniem rodziny i domyślnymi
|
||||
wymiarami):
|
||||
|
||||
| Id modelu | Dostawca | Domyślne wymiary | Konfigurowalne wymiary |
|
||||
| ------------------------------------------ | ---------- | ---------------- | ---------------------- |
|
||||
| `amazon.titan-embed-text-v2:0` | Amazon | 1024 | 256, 512, 1024 |
|
||||
| `amazon.titan-embed-text-v1` | Amazon | 1536 | -- |
|
||||
| `amazon.titan-embed-g1-text-02` | Amazon | 1536 | -- |
|
||||
| `amazon.titan-embed-image-v1` | Amazon | 1024 | -- |
|
||||
| `amazon.nova-2-multimodal-embeddings-v1:0` | Amazon | 1024 | 256, 384, 1024, 3072 |
|
||||
| `cohere.embed-english-v3` | Cohere | 1024 | -- |
|
||||
| `cohere.embed-multilingual-v3` | Cohere | 1024 | -- |
|
||||
| `cohere.embed-v4:0` | Cohere | 1536 | 256-1536 |
|
||||
| `twelvelabs.marengo-embed-3-0-v1:0` | TwelveLabs | 512 | -- |
|
||||
| `twelvelabs.marengo-embed-2-7-v1:0` | TwelveLabs | 1024 | -- |
|
||||
| Model ID | Provider | Default Dims | Configurable Dims |
|
||||
| ------------------------------------------ | ---------- | ------------ | -------------------- |
|
||||
| `amazon.titan-embed-text-v2:0` | Amazon | 1024 | 256, 512, 1024 |
|
||||
| `amazon.titan-embed-text-v1` | Amazon | 1536 | -- |
|
||||
| `amazon.titan-embed-g1-text-02` | Amazon | 1536 | -- |
|
||||
| `amazon.titan-embed-image-v1` | Amazon | 1024 | -- |
|
||||
| `amazon.nova-2-multimodal-embeddings-v1:0` | Amazon | 1024 | 256, 384, 1024, 3072 |
|
||||
| `cohere.embed-english-v3` | Cohere | 1024 | -- |
|
||||
| `cohere.embed-multilingual-v3` | Cohere | 1024 | -- |
|
||||
| `cohere.embed-v4:0` | Cohere | 1536 | 256-1536 |
|
||||
| `twelvelabs.marengo-embed-3-0-v1:0` | TwelveLabs | 512 | -- |
|
||||
| `twelvelabs.marengo-embed-2-7-v1:0` | TwelveLabs | 1024 | -- |
|
||||
|
||||
Warianty z sufiksem przepustowości (np. `amazon.titan-embed-text-v1:2:8k`) dziedziczą
|
||||
konfigurację modelu bazowego.
|
||||
@ -174,12 +175,12 @@ Uwierzytelnianie Bedrock używa standardowej kolejności rozwiązywania poświad
|
||||
|
||||
1. Zmienne środowiskowe (`AWS_ACCESS_KEY_ID` + `AWS_SECRET_ACCESS_KEY`)
|
||||
2. Pamięć podręczna tokenów SSO
|
||||
3. Poświadczenia tokenu tożsamości web
|
||||
3. Poświadczenia tokena tożsamości webowej
|
||||
4. Współdzielone pliki poświadczeń i konfiguracji
|
||||
5. Poświadczenia metadanych ECS lub EC2
|
||||
|
||||
Region jest rozwiązywany z `AWS_REGION`, `AWS_DEFAULT_REGION`, `baseUrl`
|
||||
dostawcy `amazon-bedrock` lub domyślnie przyjmuje wartość `us-east-1`.
|
||||
Region jest rozwiązywany na podstawie `AWS_REGION`, `AWS_DEFAULT_REGION`,
|
||||
`baseUrl` dostawcy `amazon-bedrock` lub domyślnie przyjmuje wartość `us-east-1`.
|
||||
|
||||
### Uprawnienia IAM
|
||||
|
||||
@ -201,14 +202,14 @@ arn:aws:bedrock:*::foundation-model/amazon.titan-embed-text-v2:0
|
||||
|
||||
---
|
||||
|
||||
## Konfiguracja lokalnych embeddingów
|
||||
## Konfiguracja embeddingów lokalnych
|
||||
|
||||
| Klucz | Typ | Domyślnie | Opis |
|
||||
| --------------------- | -------- | ----------------------- | ----------------------------------- |
|
||||
| `local.modelPath` | `string` | pobierany automatycznie | Ścieżka do pliku modelu GGUF |
|
||||
| `local.modelCacheDir` | `string` | domyślna dla node-llama-cpp | Katalog cache dla pobranych modeli |
|
||||
| Key | Type | Default | Opis |
|
||||
| --------------------- | -------- | ---------------------- | ------------------------------- |
|
||||
| `local.modelPath` | `string` | pobierany automatycznie | Ścieżka do pliku modelu GGUF |
|
||||
| `local.modelCacheDir` | `string` | domyślna wartość node-llama-cpp | Katalog pamięci podręcznej dla pobranych modeli |
|
||||
|
||||
Domyślny model: `embeddinggemma-300m-qat-Q8_0.gguf` (~0,6 GB, pobierany automatycznie).
|
||||
Domyślny model: `embeddinggemma-300m-qat-Q8_0.gguf` (~0.6 GB, pobierany automatycznie).
|
||||
Wymaga natywnego builda: `pnpm approve-builds`, a następnie `pnpm rebuild node-llama-cpp`.
|
||||
|
||||
---
|
||||
@ -217,26 +218,26 @@ Wymaga natywnego builda: `pnpm approve-builds`, a następnie `pnpm rebuild node-
|
||||
|
||||
Wszystko w `memorySearch.query.hybrid`:
|
||||
|
||||
| Klucz | Typ | Domyślnie | Opis |
|
||||
| --------------------- | --------- | --------- | ------------------------------------ |
|
||||
| `enabled` | `boolean` | `true` | Włącza hybrydowe wyszukiwanie BM25 + wektorowe |
|
||||
| `vectorWeight` | `number` | `0.7` | Waga dla wyników wektorowych (0-1) |
|
||||
| `textWeight` | `number` | `0.3` | Waga dla wyników BM25 (0-1) |
|
||||
| `candidateMultiplier` | `number` | `4` | Mnożnik rozmiaru puli kandydatów |
|
||||
| Key | Type | Default | Opis |
|
||||
| --------------------- | --------- | ------- | ---------------------------------- |
|
||||
| `enabled` | `boolean` | `true` | Włącza wyszukiwanie hybrydowe BM25 + wektorowe |
|
||||
| `vectorWeight` | `number` | `0.7` | Waga dla wyników wektorowych (0-1) |
|
||||
| `textWeight` | `number` | `0.3` | Waga dla wyników BM25 (0-1) |
|
||||
| `candidateMultiplier` | `number` | `4` | Mnożnik rozmiaru puli kandydatów |
|
||||
|
||||
### MMR (różnorodność)
|
||||
|
||||
| Klucz | Typ | Domyślnie | Opis |
|
||||
| ------------- | --------- | --------- | ----------------------------------------- |
|
||||
| `mmr.enabled` | `boolean` | `false` | Włącza ponowne rangowanie MMR |
|
||||
| `mmr.lambda` | `number` | `0.7` | 0 = maks. różnorodność, 1 = maks. trafność |
|
||||
| Key | Type | Default | Opis |
|
||||
| ------------- | --------- | ------- | ------------------------------------ |
|
||||
| `mmr.enabled` | `boolean` | `false` | Włącza ponowne rankingowanie MMR |
|
||||
| `mmr.lambda` | `number` | `0.7` | 0 = maksymalna różnorodność, 1 = maksymalna trafność |
|
||||
|
||||
### Zanik czasowy (świeżość)
|
||||
|
||||
| Klucz | Typ | Domyślnie | Opis |
|
||||
| ---------------------------- | --------- | --------- | ------------------------------- |
|
||||
| `temporalDecay.enabled` | `boolean` | `false` | Włącza wzmocnienie świeżości |
|
||||
| `temporalDecay.halfLifeDays` | `number` | `30` | Wynik spada o połowę co N dni |
|
||||
| Key | Type | Default | Opis |
|
||||
| ---------------------------- | --------- | ------- | ------------------------- |
|
||||
| `temporalDecay.enabled` | `boolean` | `false` | Włącza zwiększenie wyniku za świeżość |
|
||||
| `temporalDecay.halfLifeDays` | `number` | `30` | Wynik zmniejsza się o połowę co N dni |
|
||||
|
||||
Pliki evergreen (`MEMORY.md`, pliki bez daty w `memory/`) nigdy nie podlegają zanikowi.
|
||||
|
||||
@ -265,8 +266,8 @@ Pliki evergreen (`MEMORY.md`, pliki bez daty w `memory/`) nigdy nie podlegają z
|
||||
|
||||
## Dodatkowe ścieżki pamięci
|
||||
|
||||
| Klucz | Typ | Opis |
|
||||
| ----------- | ---------- | ----------------------------------------- |
|
||||
| Key | Type | Opis |
|
||||
| ------------ | ---------- | ---------------------------------------- |
|
||||
| `extraPaths` | `string[]` | Dodatkowe katalogi lub pliki do indeksowania |
|
||||
|
||||
```json5
|
||||
@ -281,31 +282,33 @@ Pliki evergreen (`MEMORY.md`, pliki bez daty w `memory/`) nigdy nie podlegają z
|
||||
}
|
||||
```
|
||||
|
||||
Ścieżki mogą być bezwzględne lub względne względem obszaru roboczego. Katalogi są skanowane
|
||||
rekurencyjnie w poszukiwaniu plików `.md`. Obsługa symlinków zależy od aktywnego backendu:
|
||||
wbudowany silnik ignoruje symlinki, natomiast QMD stosuje zachowanie skanera QMD.
|
||||
Ścieżki mogą być bezwzględne lub względne względem workspace. Katalogi są skanowane
|
||||
rekurencyjnie w poszukiwaniu plików `.md`. Obsługa dowiązań symbolicznych zależy od aktywnego backendu:
|
||||
wbudowany silnik ignoruje dowiązania symboliczne, podczas gdy QMD stosuje zachowanie
|
||||
bazowego skanera QMD.
|
||||
|
||||
W przypadku wyszukiwania transkryptów między agentami o zakresie agenta użyj
|
||||
W przypadku wyszukiwania transkryptów między agentami w zakresie agenta użyj
|
||||
`agents.list[].memorySearch.qmd.extraCollections` zamiast `memory.qmd.paths`.
|
||||
Te dodatkowe kolekcje używają tego samego kształtu `{ path, name, pattern? }`, ale
|
||||
są scalane per agent i mogą zachować jawne współdzielone nazwy, gdy ścieżka
|
||||
wskazuje poza bieżący obszar roboczy.
|
||||
Jeśli ta sama rozwiązana ścieżka pojawia się zarówno w `memory.qmd.paths`, jak i
|
||||
`memorySearch.qmd.extraCollections`, QMD zachowuje pierwszy wpis i pomija duplikat.
|
||||
Te dodatkowe kolekcje mają ten sam kształt `{ path, name, pattern? }`, ale
|
||||
są scalane dla każdego agenta i mogą zachować jawne współdzielone nazwy, gdy ścieżka
|
||||
wskazuje poza bieżący workspace.
|
||||
Jeśli ta sama rozwiązana ścieżka pojawi się zarówno w `memory.qmd.paths`, jak i w
|
||||
`memorySearch.qmd.extraCollections`, QMD zachowuje pierwszy wpis i pomija
|
||||
duplikat.
|
||||
|
||||
---
|
||||
|
||||
## Pamięć multimodalna (Gemini)
|
||||
|
||||
Indeksuj obrazy i audio obok Markdown przy użyciu Gemini Embedding 2:
|
||||
Indeksuj obrazy i audio razem z Markdownem za pomocą Gemini Embedding 2:
|
||||
|
||||
| Klucz | Typ | Domyślnie | Opis |
|
||||
| ------------------------- | ---------- | ---------- | ---------------------------------------- |
|
||||
| `multimodal.enabled` | `boolean` | `false` | Włącza indeksowanie multimodalne |
|
||||
| `multimodal.modalities` | `string[]` | -- | `["image"]`, `["audio"]` lub `["all"]` |
|
||||
| `multimodal.maxFileBytes` | `number` | `10000000` | Maksymalny rozmiar pliku do indeksowania |
|
||||
| Key | Type | Default | Opis |
|
||||
| ------------------------- | ---------- | ---------- | -------------------------------------- |
|
||||
| `multimodal.enabled` | `boolean` | `false` | Włącza indeksowanie multimodalne |
|
||||
| `multimodal.modalities` | `string[]` | -- | `["image"]`, `["audio"]` lub `["all"]` |
|
||||
| `multimodal.maxFileBytes` | `number` | `10000000` | Maksymalny rozmiar pliku do indeksowania |
|
||||
|
||||
Dotyczy tylko plików w `extraPaths`. Domyślne katalogi główne pamięci pozostają tylko dla Markdown.
|
||||
Dotyczy tylko plików w `extraPaths`. Domyślne korzenie pamięci pozostają tylko dla Markdowna.
|
||||
Wymaga `gemini-embedding-2-preview`. `fallback` musi mieć wartość `"none"`.
|
||||
|
||||
Obsługiwane formaty: `.jpg`, `.jpeg`, `.png`, `.webp`, `.gif`, `.heic`, `.heif`
|
||||
@ -315,64 +318,64 @@ Obsługiwane formaty: `.jpg`, `.jpeg`, `.png`, `.webp`, `.gif`, `.heic`, `.heif`
|
||||
|
||||
## Cache embeddingów
|
||||
|
||||
| Klucz | Typ | Domyślnie | Opis |
|
||||
| ------------------ | --------- | --------- | ----------------------------------- |
|
||||
| `cache.enabled` | `boolean` | `false` | Buforuje embeddingi chunków w SQLite |
|
||||
| `cache.maxEntries` | `number` | `50000` | Maksymalna liczba buforowanych embeddingów |
|
||||
| Key | Type | Default | Opis |
|
||||
| ------------------ | --------- | ------- | -------------------------------- |
|
||||
| `cache.enabled` | `boolean` | `false` | Buforuje embeddingi chunków w SQLite |
|
||||
| `cache.maxEntries` | `number` | `50000` | Maksymalna liczba buforowanych embeddingów |
|
||||
|
||||
Zapobiega ponownemu tworzeniu embeddingów dla niezmienionego tekstu podczas ponownego indeksowania lub aktualizacji transkryptów.
|
||||
Zapobiega ponownemu tworzeniu embeddingów dla niezmienionego tekstu podczas przeindeksowania lub aktualizacji transkryptów.
|
||||
|
||||
---
|
||||
|
||||
## Indeksowanie wsadowe
|
||||
|
||||
| Klucz | Typ | Domyślnie | Opis |
|
||||
| ----------------------------- | --------- | --------- | ---------------------------- |
|
||||
| `remote.batch.enabled` | `boolean` | `false` | Włącza API embeddingów wsadowych |
|
||||
| `remote.batch.concurrency` | `number` | `2` | Równoległe zadania wsadowe |
|
||||
| `remote.batch.wait` | `boolean` | `true` | Czeka na zakończenie wsadu |
|
||||
| `remote.batch.pollIntervalMs` | `number` | -- | Interwał odpytywania |
|
||||
| `remote.batch.timeoutMinutes` | `number` | -- | Limit czasu wsadu |
|
||||
| Key | Type | Default | Opis |
|
||||
| ----------------------------- | --------- | ------- | -------------------------- |
|
||||
| `remote.batch.enabled` | `boolean` | `false` | Włącza wsadowe API embeddingów |
|
||||
| `remote.batch.concurrency` | `number` | `2` | Równoległe zadania wsadowe |
|
||||
| `remote.batch.wait` | `boolean` | `true` | Czeka na zakończenie wsadu |
|
||||
| `remote.batch.pollIntervalMs` | `number` | -- | Interwał odpytywania |
|
||||
| `remote.batch.timeoutMinutes` | `number` | -- | Limit czasu wsadu |
|
||||
|
||||
Dostępne dla `openai`, `gemini` i `voyage`. Wsad OpenAI jest zazwyczaj
|
||||
najszybszy i najtańszy przy dużych uzupełnieniach danych.
|
||||
Dostępne dla `openai`, `gemini` i `voyage`. Wsady OpenAI są zazwyczaj
|
||||
najszybsze i najtańsze przy dużych backfillach.
|
||||
|
||||
---
|
||||
|
||||
## Wyszukiwanie pamięci sesji (eksperymentalne)
|
||||
|
||||
Indeksuj transkrypcje sesji i udostępniaj je przez `memory_search`:
|
||||
Indeksuj transkrypty sesji i udostępniaj je przez `memory_search`:
|
||||
|
||||
| Klucz | Typ | Domyślnie | Opis |
|
||||
| --------------------------- | ---------- | ------------ | ------------------------------------------ |
|
||||
| `experimental.sessionMemory` | `boolean` | `false` | Włącza indeksowanie sesji |
|
||||
| `sources` | `string[]` | `["memory"]` | Dodaj `"sessions"`, aby uwzględnić transkrypty |
|
||||
| `sync.sessions.deltaBytes` | `number` | `100000` | Próg bajtów dla ponownego indeksowania |
|
||||
| `sync.sessions.deltaMessages` | `number` | `50` | Próg liczby wiadomości dla ponownego indeksowania |
|
||||
| Key | Type | Default | Opis |
|
||||
| ----------------------------- | ---------- | ------------ | --------------------------------------- |
|
||||
| `experimental.sessionMemory` | `boolean` | `false` | Włącza indeksowanie sesji |
|
||||
| `sources` | `string[]` | `["memory"]` | Dodaj `"sessions"`, aby uwzględnić transkrypty |
|
||||
| `sync.sessions.deltaBytes` | `number` | `100000` | Próg bajtów do przeindeksowania |
|
||||
| `sync.sessions.deltaMessages` | `number` | `50` | Próg wiadomości do przeindeksowania |
|
||||
|
||||
Indeksowanie sesji jest opt-in i działa asynchronicznie. Wyniki mogą być nieco
|
||||
nieaktualne. Logi sesji są przechowywane na dysku, więc traktuj dostęp do systemu plików jako granicę zaufania.
|
||||
Indeksowanie sesji jest opcjonalne i działa asynchronicznie. Wyniki mogą być nieco
|
||||
nieaktualne. Logi sesji są przechowywane na dysku, więc dostęp do systemu plików należy traktować jako granicę zaufania.
|
||||
|
||||
---
|
||||
|
||||
## Przyspieszenie wektorowe SQLite (`sqlite-vec`)
|
||||
## Akceleracja wektorowa SQLite (`sqlite-vec`)
|
||||
|
||||
| Klucz | Typ | Domyślnie | Opis |
|
||||
| ------------------------ | --------- | --------- | ------------------------------------- |
|
||||
| `store.vector.enabled` | `boolean` | `true` | Używa `sqlite-vec` do zapytań wektorowych |
|
||||
| `store.vector.extensionPath` | `string` | bundlowane | Nadpisuje ścieżkę `sqlite-vec` |
|
||||
| Key | Type | Default | Opis |
|
||||
| ---------------------------- | --------- | ------- | --------------------------------- |
|
||||
| `store.vector.enabled` | `boolean` | `true` | Używa `sqlite-vec` do zapytań wektorowych |
|
||||
| `store.vector.extensionPath` | `string` | bundled | Nadpisuje ścieżkę `sqlite-vec` |
|
||||
|
||||
Gdy `sqlite-vec` nie jest dostępne, OpenClaw automatycznie przechodzi na obliczanie
|
||||
podobieństwa cosinusowego w procesie.
|
||||
Gdy `sqlite-vec` jest niedostępne, OpenClaw automatycznie przechodzi na
|
||||
podobieństwo cosinusowe w procesie.
|
||||
|
||||
---
|
||||
|
||||
## Przechowywanie indeksu
|
||||
## Magazyn indeksu
|
||||
|
||||
| Klucz | Typ | Domyślnie | Opis |
|
||||
| -------------------- | -------- | ------------------------------------- | -------------------------------------------- |
|
||||
| `store.path` | `string` | `~/.openclaw/memory/{agentId}.sqlite` | Lokalizacja indeksu (obsługuje token `{agentId}`) |
|
||||
| `store.fts.tokenizer` | `string` | `unicode61` | Tokenizer FTS5 (`unicode61` lub `trigram`) |
|
||||
| Key | Type | Default | Opis |
|
||||
| --------------------- | -------- | ------------------------------------- | ------------------------------------------- |
|
||||
| `store.path` | `string` | `~/.openclaw/memory/{agentId}.sqlite` | Lokalizacja indeksu (obsługuje token `{agentId}`) |
|
||||
| `store.fts.tokenizer` | `string` | `unicode61` | Tokenizer FTS5 (`unicode61` lub `trigram`) |
|
||||
|
||||
---
|
||||
|
||||
@ -381,45 +384,46 @@ podobieństwa cosinusowego w procesie.
|
||||
Ustaw `memory.backend = "qmd"`, aby włączyć. Wszystkie ustawienia QMD znajdują się w
|
||||
`memory.qmd`:
|
||||
|
||||
| Klucz | Typ | Domyślnie | Opis |
|
||||
| ----------------------- | --------- | --------- | --------------------------------------------- |
|
||||
| `command` | `string` | `qmd` | Ścieżka wykonywalna QMD |
|
||||
| `searchMode` | `string` | `search` | Polecenie wyszukiwania: `search`, `vsearch`, `query` |
|
||||
| `includeDefaultMemory` | `boolean` | `true` | Automatycznie indeksuje `MEMORY.md` + `memory/**/*.md` |
|
||||
| `paths[]` | `array` | -- | Dodatkowe ścieżki: `{ name, path, pattern? }` |
|
||||
| `sessions.enabled` | `boolean` | `false` | Indeksuje transkrypty sesji |
|
||||
| `sessions.retentionDays` | `number` | -- | Retencja transkryptów |
|
||||
| `sessions.exportDir` | `string` | -- | Katalog eksportu |
|
||||
| Key | Type | Default | Opis |
|
||||
| ------------------------ | --------- | -------- | -------------------------------------------- |
|
||||
| `command` | `string` | `qmd` | Ścieżka do pliku wykonywalnego QMD |
|
||||
| `searchMode` | `string` | `search` | Polecenie wyszukiwania: `search`, `vsearch`, `query` |
|
||||
| `includeDefaultMemory` | `boolean` | `true` | Automatycznie indeksuje `MEMORY.md` + `memory/**/*.md` |
|
||||
| `paths[]` | `array` | -- | Dodatkowe ścieżki: `{ name, path, pattern? }` |
|
||||
| `sessions.enabled` | `boolean` | `false` | Indeksuje transkrypty sesji |
|
||||
| `sessions.retentionDays` | `number` | -- | Retencja transkryptów |
|
||||
| `sessions.exportDir` | `string` | -- | Katalog eksportu |
|
||||
|
||||
OpenClaw preferuje bieżące kształty kolekcji QMD i zapytań MCP, ale utrzymuje
|
||||
zgodność ze starszymi wydaniami QMD, przechodząc awaryjnie na starsze flagi kolekcji `--mask`
|
||||
i starsze nazwy narzędzi MCP, gdy jest to potrzebne.
|
||||
OpenClaw preferuje bieżące kształty kolekcji QMD i zapytań MCP, ale nadal
|
||||
obsługuje starsze wydania QMD, wracając w razie potrzeby do starszych flag kolekcji `--mask`
|
||||
i starszych nazw narzędzi MCP.
|
||||
|
||||
Nadpisania modeli QMD pozostają po stronie QMD, a nie w konfiguracji OpenClaw. Jeśli chcesz
|
||||
globalnie nadpisać modele QMD, ustaw zmienne środowiskowe takie jak
|
||||
`QMD_EMBED_MODEL`, `QMD_RERANK_MODEL` i `QMD_GENERATE_MODEL` w środowisku uruchomieniowym Gateway.
|
||||
`QMD_EMBED_MODEL`, `QMD_RERANK_MODEL` i `QMD_GENERATE_MODEL` w środowisku
|
||||
runtime Gateway.
|
||||
|
||||
### Harmonogram aktualizacji
|
||||
|
||||
| Klucz | Typ | Domyślnie | Opis |
|
||||
| ------------------------- | --------- | --------- | ----------------------------------------- |
|
||||
| `update.interval` | `string` | `5m` | Interwał odświeżania |
|
||||
| `update.debounceMs` | `number` | `15000` | Debounce zmian plików |
|
||||
| `update.onBoot` | `boolean` | `true` | Odświeżanie przy starcie |
|
||||
| `update.waitForBootSync` | `boolean` | `false` | Blokuje start do zakończenia odświeżenia |
|
||||
| `update.embedInterval` | `string` | -- | Osobny harmonogram embeddingów |
|
||||
| `update.commandTimeoutMs` | `number` | -- | Limit czasu dla poleceń QMD |
|
||||
| `update.updateTimeoutMs` | `number` | -- | Limit czasu dla operacji aktualizacji QMD |
|
||||
| `update.embedTimeoutMs` | `number` | -- | Limit czasu dla operacji embeddingów QMD |
|
||||
| Key | Type | Default | Opis |
|
||||
| ------------------------- | --------- | ------- | ------------------------------------- |
|
||||
| `update.interval` | `string` | `5m` | Interwał odświeżania |
|
||||
| `update.debounceMs` | `number` | `15000` | Debounce zmian plików |
|
||||
| `update.onBoot` | `boolean` | `true` | Odświeża przy starcie |
|
||||
| `update.waitForBootSync` | `boolean` | `false` | Blokuje start do czasu zakończenia odświeżenia |
|
||||
| `update.embedInterval` | `string` | -- | Oddzielny harmonogram embeddingu |
|
||||
| `update.commandTimeoutMs` | `number` | -- | Limit czasu dla poleceń QMD |
|
||||
| `update.updateTimeoutMs` | `number` | -- | Limit czasu dla operacji aktualizacji QMD |
|
||||
| `update.embedTimeoutMs` | `number` | -- | Limit czasu dla operacji embeddingu QMD |
|
||||
|
||||
### Limity
|
||||
|
||||
| Klucz | Typ | Domyślnie | Opis |
|
||||
| ------------------------- | -------- | --------- | ------------------------------- |
|
||||
| `limits.maxResults` | `number` | `6` | Maksymalna liczba wyników wyszukiwania |
|
||||
| `limits.maxSnippetChars` | `number` | -- | Ogranicza długość fragmentu |
|
||||
| `limits.maxInjectedChars` | `number` | -- | Ogranicza łączną liczbę wstrzykniętych znaków |
|
||||
| `limits.timeoutMs` | `number` | `4000` | Limit czasu wyszukiwania |
|
||||
| Key | Type | Default | Opis |
|
||||
| ------------------------- | -------- | ------- | -------------------------- |
|
||||
| `limits.maxResults` | `number` | `6` | Maksymalna liczba wyników wyszukiwania |
|
||||
| `limits.maxSnippetChars` | `number` | -- | Ogranicza długość fragmentu |
|
||||
| `limits.maxInjectedChars` | `number` | -- | Ogranicza łączną liczbę wstrzykniętych znaków |
|
||||
| `limits.timeoutMs` | `number` | `4000` | Limit czasu wyszukiwania |
|
||||
|
||||
### Zakres
|
||||
|
||||
@ -439,21 +443,21 @@ Kontroluje, które sesje mogą otrzymywać wyniki wyszukiwania QMD. Ten sam sche
|
||||
}
|
||||
```
|
||||
|
||||
Dostarczana domyślna konfiguracja dopuszcza sesje bezpośrednie i kanałowe, nadal odrzucając
|
||||
Dostarczana domyślna konfiguracja dopuszcza sesje direct i channel, nadal odrzucając
|
||||
grupy.
|
||||
|
||||
Domyślnie tylko DM. `match.keyPrefix` dopasowuje znormalizowany klucz sesji;
|
||||
`match.rawKeyPrefix` dopasowuje surowy klucz, włącznie z `agent:<id>:`.
|
||||
Wartością domyślną jest tylko DM. `match.keyPrefix` dopasowuje znormalizowany klucz sesji;
|
||||
`match.rawKeyPrefix` dopasowuje surowy klucz, w tym `agent:<id>:`.
|
||||
|
||||
### Cytowania
|
||||
|
||||
`memory.citations` dotyczy wszystkich backendów:
|
||||
|
||||
| Wartość | Zachowanie |
|
||||
| ---------------- | -------------------------------------------------- |
|
||||
| `auto` (domyślnie) | Dodaje stopkę `Source: <path#line>` w fragmentach |
|
||||
| `on` | Zawsze dodaje stopkę |
|
||||
| `off` | Pomija stopkę (ścieżka nadal jest wewnętrznie przekazywana agentowi) |
|
||||
| Value | Behavior |
|
||||
| ---------------- | --------------------------------------------------- |
|
||||
| `auto` (domyślnie) | Dołącza stopkę `Source: <path#line>` do fragmentów |
|
||||
| `on` | Zawsze dołącza stopkę |
|
||||
| `off` | Pomija stopkę (ścieżka nadal jest przekazywana wewnętrznie do agenta) |
|
||||
|
||||
### Pełny przykład QMD
|
||||
|
||||
@ -483,17 +487,17 @@ Domyślnie tylko DM. `match.keyPrefix` dopasowuje znormalizowany klucz sesji;
|
||||
Dreaming jest konfigurowane w `plugins.entries.memory-core.config.dreaming`,
|
||||
a nie w `agents.defaults.memorySearch`.
|
||||
|
||||
Dreaming działa jako jeden zaplanowany przebieg i wykorzystuje wewnętrzne fazy light/deep/REM jako
|
||||
szczegół implementacyjny.
|
||||
Dreaming działa jako jeden zaplanowany przebieg i używa wewnętrznych faz light/deep/REM jako
|
||||
szczegółu implementacyjnego.
|
||||
|
||||
Aby poznać zachowanie koncepcyjne i polecenia slash, zobacz [Dreaming](/pl/concepts/dreaming).
|
||||
Opis zachowania koncepcyjnego i poleceń slash znajdziesz w [Dreaming](/pl/concepts/dreaming).
|
||||
|
||||
### Ustawienia użytkownika
|
||||
|
||||
| Klucz | Typ | Domyślnie | Opis |
|
||||
| ---------- | --------- | ------------ | -------------------------------------------------- |
|
||||
| `enabled` | `boolean` | `false` | Całkowicie włącza lub wyłącza Dreaming |
|
||||
| `frequency` | `string` | `0 3 * * *` | Opcjonalna składnia Cron dla pełnego przebiegu Dreaming |
|
||||
| Key | Type | Default | Opis |
|
||||
| ----------- | --------- | ----------- | ------------------------------------------------- |
|
||||
| `enabled` | `boolean` | `false` | Włącza lub wyłącza Dreaming całkowicie |
|
||||
| `frequency` | `string` | `0 3 * * *` | Opcjonalny harmonogram Cron dla pełnego przebiegu Dreaming |
|
||||
|
||||
### Przykład
|
||||
|
||||
@ -517,5 +521,5 @@ Aby poznać zachowanie koncepcyjne i polecenia slash, zobacz [Dreaming](/pl/conc
|
||||
Uwagi:
|
||||
|
||||
- Dreaming zapisuje stan maszyny do `memory/.dreams/`.
|
||||
- Dreaming zapisuje czytelne dla człowieka wyjście narracyjne do `DREAMS.md` (lub istniejącego `dreams.md`).
|
||||
- Zasady i progi faz light/deep/REM są zachowaniem wewnętrznym, a nie konfiguracją skierowaną do użytkownika.
|
||||
- Dreaming zapisuje czytelne dla człowieka dane narracyjne do `DREAMS.md` (lub istniejącego `dreams.md`).
|
||||
- Polityka faz light/deep/REM i progi są zachowaniem wewnętrznym, a nie konfiguracją dostępną dla użytkownika.
|
||||
|
||||
@ -1,15 +1,15 @@
|
||||
---
|
||||
read_when:
|
||||
- Weryfikowanie zakresu poświadczeń SecretRef
|
||||
- Weryfikowanie zakresu obsługi poświadczeń SecretRef
|
||||
- Sprawdzanie, czy poświadczenie kwalifikuje się do `secrets configure` lub `secrets apply`
|
||||
- Weryfikowanie, dlaczego poświadczenie jest poza obsługiwaną powierzchnią
|
||||
summary: Kanoniczna powierzchnia obsługiwanych i nieobsługiwanych poświadczeń SecretRef
|
||||
- Weryfikowanie, dlaczego poświadczenie znajduje się poza obsługiwaną powierzchnią
|
||||
summary: Kanoniczna obsługiwana i nieobsługiwana powierzchnia poświadczeń SecretRef
|
||||
title: Powierzchnia poświadczeń SecretRef
|
||||
x-i18n:
|
||||
generated_at: "2026-04-07T09:49:31Z"
|
||||
generated_at: "2026-04-15T09:52:14Z"
|
||||
model: gpt-5.4
|
||||
provider: openai
|
||||
source_hash: 211f4b504c5808f7790683066fc2c8b700c705c598f220a264daf971b81cc593
|
||||
source_hash: dd0b9c379236b17a72f552d6360b8b5a2269009e019c138c6bb50f4f7328ddaf
|
||||
source_path: reference/secretref-credential-surface.md
|
||||
workflow: 15
|
||||
---
|
||||
@ -18,10 +18,10 @@ x-i18n:
|
||||
|
||||
Ta strona definiuje kanoniczną powierzchnię poświadczeń SecretRef.
|
||||
|
||||
Cel zakresu:
|
||||
Zakres:
|
||||
|
||||
- W zakresie: ściśle poświadczenia dostarczane przez użytkownika, których OpenClaw nie tworzy ani nie rotuje.
|
||||
- Poza zakresem: poświadczenia tworzone w runtime lub rotowane, materiały odświeżania OAuth oraz artefakty podobne do sesji.
|
||||
- W zakresie: wyłącznie poświadczenia dostarczane przez użytkownika, których OpenClaw nie wystawia ani nie rotuje.
|
||||
- Poza zakresem: poświadczenia wystawiane lub rotowane w czasie działania, materiały odświeżania OAuth oraz artefakty podobne do sesji.
|
||||
|
||||
## Obsługiwane poświadczenia
|
||||
|
||||
@ -49,6 +49,7 @@ Cel zakresu:
|
||||
- `messages.tts.providers.*.apiKey`
|
||||
- `tools.web.fetch.firecrawl.apiKey`
|
||||
- `plugins.entries.brave.config.webSearch.apiKey`
|
||||
- `plugins.entries.exa.config.webSearch.apiKey`
|
||||
- `plugins.entries.google.config.webSearch.apiKey`
|
||||
- `plugins.entries.xai.config.webSearch.apiKey`
|
||||
- `plugins.entries.moonshot.config.webSearch.apiKey`
|
||||
@ -107,8 +108,8 @@ Cel zakresu:
|
||||
- `channels.zalo.webhookSecret`
|
||||
- `channels.zalo.accounts.*.botToken`
|
||||
- `channels.zalo.accounts.*.webhookSecret`
|
||||
- `channels.googlechat.serviceAccount` przez sąsiedni `serviceAccountRef` (wyjątek zgodności)
|
||||
- `channels.googlechat.accounts.*.serviceAccount` przez sąsiedni `serviceAccountRef` (wyjątek zgodności)
|
||||
- `channels.googlechat.serviceAccount` przez sąsiednie `serviceAccountRef` (wyjątek zgodności)
|
||||
- `channels.googlechat.accounts.*.serviceAccount` przez sąsiednie `serviceAccountRef` (wyjątek zgodności)
|
||||
|
||||
### Cele `auth-profiles.json` (`secrets configure` + `secrets apply` + `secrets audit`)
|
||||
|
||||
@ -120,16 +121,16 @@ Cel zakresu:
|
||||
Uwagi:
|
||||
|
||||
- Cele planu profili uwierzytelniania wymagają `agentId`.
|
||||
- Wpisy planu są kierowane do `profiles.*.key` / `profiles.*.token` i zapisują sąsiednie referencje (`keyRef` / `tokenRef`).
|
||||
- Referencje profili uwierzytelniania są uwzględnione w rozwiązywaniu runtime i zakresie audytu.
|
||||
- Ochrona polityki OAuth: `auth.profiles.<id>.mode = "oauth"` nie może być łączone z wejściami SecretRef dla tego profilu. Uruchomienie/przeładowanie oraz rozwiązywanie profilu uwierzytelniania kończą się błędem natychmiast po naruszeniu tej polityki.
|
||||
- Dla dostawców modeli zarządzanych przez SecretRef wygenerowane wpisy `agents/*/agent/models.json` zapisują znaczniki niebędące sekretami (a nie rozpoznane wartości sekretów) dla powierzchni `apiKey`/nagłówków.
|
||||
- Trwałość znaczników jest źródłowo autorytatywna: OpenClaw zapisuje znaczniki z aktywnego snapshotu konfiguracji źródłowej (przed rozpoznaniem), a nie z rozpoznanych wartości sekretów runtime.
|
||||
- Wpisy planu wskazują na `profiles.*.key` / `profiles.*.token` i zapisują sąsiednie referencje (`keyRef` / `tokenRef`).
|
||||
- Referencje profili uwierzytelniania są uwzględniane podczas rozwiązywania w czasie działania i w zakresie audytu.
|
||||
- Ograniczenie zasad OAuth: `auth.profiles.<id>.mode = "oauth"` nie może być łączone z wejściami SecretRef dla tego profilu. Uruchomienie/przeładowanie oraz rozwiązywanie profilu uwierzytelniania kończą się błędem natychmiast po naruszeniu tej zasady.
|
||||
- Dla dostawców modeli zarządzanych przez SecretRef wygenerowane wpisy `agents/*/agent/models.json` zapisują znaczniki niesekretne (a nie rozwiązane wartości sekretów) dla powierzchni `apiKey`/nagłówków.
|
||||
- Trwałość znaczników jest autorytatywna względem źródła: OpenClaw zapisuje znaczniki z aktywnego snapshotu konfiguracji źródłowej (przed rozwiązaniem), a nie z rozwiązanych wartości sekretów w czasie działania.
|
||||
- Dla wyszukiwania w sieci:
|
||||
- W trybie jawnego dostawcy (ustawione `tools.web.search.provider`) aktywny jest tylko klucz wybranego dostawcy.
|
||||
- W trybie auto (nieustawione `tools.web.search.provider`) aktywny jest tylko pierwszy klucz dostawcy, który zostanie rozpoznany zgodnie z priorytetem.
|
||||
- W trybie auto referencje niewybranych dostawców są traktowane jako nieaktywne, dopóki nie zostaną wybrane.
|
||||
- Starsze ścieżki dostawców `tools.web.search.*` nadal są rozpoznawane w oknie zgodności, ale kanoniczną powierzchnią SecretRef jest `plugins.entries.<plugin>.config.webSearch.*`.
|
||||
- W trybie automatycznym (nieustawione `tools.web.search.provider`) aktywny jest tylko pierwszy klucz dostawcy, który rozwiąże się zgodnie z kolejnością pierwszeństwa.
|
||||
- W trybie automatycznym referencje niewybranych dostawców są traktowane jako nieaktywne do momentu wyboru.
|
||||
- Starsze ścieżki dostawców `tools.web.search.*` nadal rozwiązują się w okresie zgodności, ale kanoniczną powierzchnią SecretRef jest `plugins.entries.<plugin>.config.webSearch.*`.
|
||||
|
||||
## Nieobsługiwane poświadczenia
|
||||
|
||||
@ -151,4 +152,4 @@ Poświadczenia poza zakresem obejmują:
|
||||
|
||||
Uzasadnienie:
|
||||
|
||||
- Te poświadczenia są tworzone, rotowane, niosą stan sesji albo należą do trwałych klas OAuth, które nie pasują do wyłącznie odczytowego zewnętrznego rozwiązywania SecretRef.
|
||||
- Te poświadczenia należą do klas wystawianych, rotowanych, sesyjnych lub trwałych OAuth, które nie pasują do rozwiązywania zewnętrznego SecretRef tylko do odczytu.
|
||||
|
||||
@ -1,130 +1,157 @@
|
||||
---
|
||||
description: Real-world OpenClaw projects from the community
|
||||
read_when:
|
||||
- Szukasz prawdziwych przykładów użycia OpenClaw
|
||||
- Aktualizujesz wyróżnienia projektów społeczności
|
||||
summary: Projekty i integracje stworzone przez społeczność z użyciem OpenClaw
|
||||
title: Prezentacje
|
||||
- Szukasz rzeczywistych przykładów użycia OpenClaw
|
||||
- Aktualizowanie wyróżnionych projektów społecznościowych
|
||||
summary: Projekty i integracje tworzone przez społeczność, oparte na OpenClaw
|
||||
title: Prezentacja
|
||||
x-i18n:
|
||||
generated_at: "2026-04-05T14:07:03Z"
|
||||
generated_at: "2026-04-15T09:52:26Z"
|
||||
model: gpt-5.4
|
||||
provider: openai
|
||||
source_hash: 2917e9a476ef527ddb3e51c610bbafbd145e705c9cc29f191639fb63d238ef70
|
||||
source_hash: 797d0b85c9eca920240c79d870eb9636216714f3eba871c5ebd0f7f40cf7bbf1
|
||||
source_path: start/showcase.md
|
||||
workflow: 15
|
||||
---
|
||||
|
||||
# Prezentacje
|
||||
<!-- markdownlint-disable MD033 -->
|
||||
|
||||
Prawdziwe projekty społeczności. Zobacz, co ludzie budują z OpenClaw.
|
||||
# Prezentacja
|
||||
|
||||
<div className="showcase-hero">
|
||||
<p className="showcase-kicker">Tworzone w czatach, terminalach, przeglądarkach i salonach</p>
|
||||
<p className="showcase-lead">
|
||||
Projekty OpenClaw to nie są zabawkowe dema. Ludzie wdrażają pętle przeglądu PR, aplikacje mobilne, automatykę domową,
|
||||
systemy głosowe, narzędzia deweloperskie i przepływy pracy intensywnie korzystające z pamięci z kanałów, których już używają.
|
||||
</p>
|
||||
<div className="showcase-actions">
|
||||
<a href="#videos">Obejrzyj dema</a>
|
||||
<a href="#fresh-from-discord">Przeglądaj projekty</a>
|
||||
<a href="https://discord.gg/clawd">Udostępnij swój</a>
|
||||
</div>
|
||||
<div className="showcase-highlights">
|
||||
<div className="showcase-highlight">
|
||||
<strong>Tworzenie natywne dla czatu</strong>
|
||||
<span>Telegram, WhatsApp, Discord, Beeper, czat webowy i przepływy pracy z terminalem na pierwszym planie.</span>
|
||||
</div>
|
||||
<div className="showcase-highlight">
|
||||
<strong>Prawdziwa automatyzacja</strong>
|
||||
<span>Rezerwacje, zakupy, wsparcie, raportowanie i sterowanie przeglądarką bez czekania na API.</span>
|
||||
</div>
|
||||
<div className="showcase-highlight">
|
||||
<strong>Świat lokalny i fizyczny</strong>
|
||||
<span>Drukarki, odkurzacze, kamery, dane zdrowotne, systemy domowe i osobiste bazy wiedzy.</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<Info>
|
||||
**Chcesz się tu znaleźć?** Udostępnij swój projekt w [#self-promotion na Discordzie](https://discord.gg/clawd) lub [oznacz @openclaw na X](https://x.com/openclaw).
|
||||
**Chcesz zostać wyróżniony?** Udostępnij swój projekt w [#self-promotion na Discordzie](https://discord.gg/clawd) albo [oznacz @openclaw na X](https://x.com/openclaw).
|
||||
</Info>
|
||||
|
||||
## 🎥 OpenClaw w akcji
|
||||
|
||||
Pełny przewodnik konfiguracji (28 min) autorstwa VelvetShark.
|
||||
|
||||
<div
|
||||
style={{
|
||||
position: "relative",
|
||||
paddingBottom: "56.25%",
|
||||
height: 0,
|
||||
overflow: "hidden",
|
||||
borderRadius: 16,
|
||||
}}
|
||||
>
|
||||
<iframe
|
||||
src="https://www.youtube-nocookie.com/embed/SaWSPZoPX34"
|
||||
title="OpenClaw: The self-hosted AI that Siri should have been (Full setup)"
|
||||
style={{ position: "absolute", top: 0, left: 0, width: "100%", height: "100%" }}
|
||||
frameBorder="0"
|
||||
loading="lazy"
|
||||
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
|
||||
allowFullScreen
|
||||
/>
|
||||
<div className="showcase-jump-links">
|
||||
<a href="#videos">Wideo</a>
|
||||
<a href="#fresh-from-discord">Nowości z Discorda</a>
|
||||
<a href="#automation-workflows">Automatyzacja</a>
|
||||
<a href="#knowledge-memory">Pamięć</a>
|
||||
<a href="#voice-phone">Głos i telefon</a>
|
||||
<a href="#infrastructure-deployment">Infrastruktura</a>
|
||||
<a href="#home-hardware">Dom i sprzęt</a>
|
||||
<a href="#community-projects">Społeczność</a>
|
||||
<a href="#submit-your-project">Dodaj projekt</a>
|
||||
</div>
|
||||
|
||||
[Obejrzyj na YouTube](https://www.youtube.com/watch?v=SaWSPZoPX34)
|
||||
<h2 id="videos">Wideo</h2>
|
||||
|
||||
<div
|
||||
style={{
|
||||
position: "relative",
|
||||
paddingBottom: "56.25%",
|
||||
height: 0,
|
||||
overflow: "hidden",
|
||||
borderRadius: 16,
|
||||
}}
|
||||
>
|
||||
<iframe
|
||||
src="https://www.youtube-nocookie.com/embed/mMSKQvlmFuQ"
|
||||
title="OpenClaw showcase video"
|
||||
style={{ position: "absolute", top: 0, left: 0, width: "100%", height: "100%" }}
|
||||
frameBorder="0"
|
||||
loading="lazy"
|
||||
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
|
||||
allowFullScreen
|
||||
/>
|
||||
<p className="showcase-section-intro">
|
||||
Zacznij tutaj, jeśli chcesz przejść najkrótszą drogę od „co to jest?” do „okej, rozumiem”.
|
||||
</p>
|
||||
|
||||
<div className="showcase-video-grid">
|
||||
<div className="showcase-video-card">
|
||||
<div className="showcase-video-shell">
|
||||
<iframe
|
||||
src="https://www.youtube-nocookie.com/embed/SaWSPZoPX34"
|
||||
title="OpenClaw: Self-hostowane AI, którym Siri powinna była być (pełna konfiguracja)"
|
||||
loading="lazy"
|
||||
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
|
||||
allowFullScreen
|
||||
/>
|
||||
</div>
|
||||
<h3>Pełny przewodnik po konfiguracji</h3>
|
||||
<p>VelvetShark, 28 minut. Instalacja, onboarding i uruchomienie pierwszego działającego asystenta od początku do końca.</p>
|
||||
<a href="https://www.youtube.com/watch?v=SaWSPZoPX34">Obejrzyj na YouTube</a>
|
||||
</div>
|
||||
|
||||
<div className="showcase-video-card">
|
||||
<div className="showcase-video-shell">
|
||||
<iframe
|
||||
src="https://www.youtube-nocookie.com/embed/mMSKQvlmFuQ"
|
||||
title="Wideo prezentujące OpenClaw"
|
||||
loading="lazy"
|
||||
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
|
||||
allowFullScreen
|
||||
/>
|
||||
</div>
|
||||
<h3>Przegląd projektów społeczności</h3>
|
||||
<p>Szybszy przegląd prawdziwych projektów, powierzchni i przepływów pracy zbudowanych wokół OpenClaw.</p>
|
||||
<a href="https://www.youtube.com/watch?v=mMSKQvlmFuQ">Obejrzyj na YouTube</a>
|
||||
</div>
|
||||
|
||||
<div className="showcase-video-card">
|
||||
<div className="showcase-video-shell">
|
||||
<iframe
|
||||
src="https://www.youtube-nocookie.com/embed/5kkIJNUGFho"
|
||||
title="Prezentacja społeczności OpenClaw"
|
||||
loading="lazy"
|
||||
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
|
||||
allowFullScreen
|
||||
/>
|
||||
</div>
|
||||
<h3>Projekty w praktyce</h3>
|
||||
<p>Przykłady ze społeczności — od pętli programowania natywnych dla czatu po sprzęt i osobistą automatyzację.</p>
|
||||
<a href="https://www.youtube.com/watch?v=5kkIJNUGFho">Obejrzyj na YouTube</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
[Obejrzyj na YouTube](https://www.youtube.com/watch?v=mMSKQvlmFuQ)
|
||||
<h2 id="fresh-from-discord">Nowości z Discorda</h2>
|
||||
|
||||
<div
|
||||
style={{
|
||||
position: "relative",
|
||||
paddingBottom: "56.25%",
|
||||
height: 0,
|
||||
overflow: "hidden",
|
||||
borderRadius: 16,
|
||||
}}
|
||||
>
|
||||
<iframe
|
||||
src="https://www.youtube-nocookie.com/embed/5kkIJNUGFho"
|
||||
title="OpenClaw community showcase"
|
||||
style={{ position: "absolute", top: 0, left: 0, width: "100%", height: "100%" }}
|
||||
frameBorder="0"
|
||||
loading="lazy"
|
||||
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
|
||||
allowFullScreen
|
||||
/>
|
||||
</div>
|
||||
|
||||
[Obejrzyj na YouTube](https://www.youtube.com/watch?v=5kkIJNUGFho)
|
||||
|
||||
## 🆕 Świeżo z Discorda
|
||||
<p className="showcase-section-intro">
|
||||
Ostatnie wyróżniające się przykłady z obszaru kodowania, narzędzi deweloperskich, mobile i budowania produktów natywnych dla czatu.
|
||||
</p>
|
||||
|
||||
<CardGroup cols={2}>
|
||||
|
||||
<Card title="Przegląd PR → opinia w Telegramie" icon="code-pull-request" href="https://x.com/i/status/2010878524543131691">
|
||||
<Card title="Przegląd PR → Informacja zwrotna na Telegramie" icon="code-pull-request" href="https://x.com/i/status/2010878524543131691">
|
||||
**@bangnokia** • `review` `github` `telegram`
|
||||
|
||||
OpenCode kończy zmianę → otwiera PR → OpenClaw przegląda diff i odpowiada w Telegramie, podając „drobne sugestie” oraz jasny werdykt dotyczący mergowania (w tym krytyczne poprawki do zastosowania najpierw).
|
||||
OpenCode kończy zmianę → otwiera PR → OpenClaw przegląda diff i odpowiada na Telegramie „drobne sugestie” oraz jasny werdykt dotyczący mergowania (w tym krytyczne poprawki do zastosowania najpierw).
|
||||
|
||||
<img src="/assets/showcase/pr-review-telegram.jpg" alt="Informacja zwrotna z przeglądu PR OpenClaw dostarczona w Telegramie" />
|
||||
<img src="/assets/showcase/pr-review-telegram.jpg" alt="Informacja zwrotna z przeglądu PR OpenClaw dostarczona na Telegramie" />
|
||||
</Card>
|
||||
|
||||
<Card title="Skill piwniczki z winem w kilka minut" icon="wine-glass" href="https://x.com/i/status/2010916352454791216">
|
||||
<Card title="Skill do piwniczki z winem w kilka minut" icon="wine-glass" href="https://x.com/i/status/2010916352454791216">
|
||||
**@prades_maxime** • `skills` `local` `csv`
|
||||
|
||||
Poproszono „Robby’ego” (@openclaw) o lokalny skill do piwniczki z winem. Prosi o przykładowy eksport CSV i miejsce jego przechowywania, a następnie szybko buduje/testuje skill (962 butelki w przykładzie).
|
||||
|
||||
<img src="/assets/showcase/wine-cellar-skill.jpg" alt="OpenClaw budujący lokalny skill piwniczki z winem z CSV" />
|
||||
<img src="/assets/showcase/wine-cellar-skill.jpg" alt="OpenClaw budujący lokalny skill do piwniczki z winem na podstawie CSV" />
|
||||
</Card>
|
||||
|
||||
<Card title="Autopilot zakupów Tesco" icon="cart-shopping" href="https://x.com/i/status/2009724862470689131">
|
||||
**@marchattonhere** • `automation` `browser` `shopping`
|
||||
|
||||
Cotygodniowy plan posiłków → stałe produkty → rezerwacja slotu dostawy → potwierdzenie zamówienia. Bez API, tylko sterowanie przeglądarką.
|
||||
Tygodniowy plan posiłków → produkty stałe → rezerwacja terminu dostawy → potwierdzenie zamówienia. Bez API, tylko sterowanie przeglądarką.
|
||||
|
||||
<img src="/assets/showcase/tesco-shop.jpg" alt="Automatyzacja zakupów Tesco przez czat" />
|
||||
</Card>
|
||||
|
||||
<Card title="SNAG: zrzut ekranu do Markdown" icon="scissors" href="https://github.com/am-will/snag">
|
||||
<Card title="SNAG Screenshot-to-Markdown" icon="scissors" href="https://github.com/am-will/snag">
|
||||
**@am-will** • `devtools` `screenshots` `markdown`
|
||||
|
||||
Skrót klawiszowy do zaznaczenia obszaru ekranu → Gemini vision → natychmiastowy Markdown w schowku.
|
||||
Skrót klawiszowy do zaznaczenia obszaru ekranu → wizja Gemini → natychmiastowy Markdown w schowku.
|
||||
|
||||
<img src="/assets/showcase/snag.png" alt="Narzędzie SNAG do zamiany zrzutu ekranu na Markdown" />
|
||||
<img src="/assets/showcase/snag.png" alt="Narzędzie SNAG screenshot-to-markdown" />
|
||||
</Card>
|
||||
|
||||
<Card title="Agents UI" icon="window-maximize" href="https://releaseflow.net/kitze/agents-ui">
|
||||
@ -138,17 +165,17 @@ Aplikacja desktopowa do zarządzania Skills/poleceniami w Agents, Claude, Codex
|
||||
<Card title="Notatki głosowe Telegrama (papla.media)" icon="microphone" href="https://papla.media/docs">
|
||||
**Społeczność** • `voice` `tts` `telegram`
|
||||
|
||||
Opakowuje TTS papla.media i wysyła wyniki jako notatki głosowe w Telegramie (bez irytującego autoplay).
|
||||
Opakowuje TTS papla.media i wysyła wyniki jako notatki głosowe Telegrama (bez irytującego automatycznego odtwarzania).
|
||||
|
||||
<img src="/assets/showcase/papla-tts.jpg" alt="Wyjście notatki głosowej Telegrama z TTS" />
|
||||
<img src="/assets/showcase/papla-tts.jpg" alt="Wyjście TTS jako notatka głosowa Telegrama" />
|
||||
</Card>
|
||||
|
||||
<Card title="CodexMonitor" icon="eye" href="https://clawhub.ai/odrobnik/codexmonitor">
|
||||
**@odrobnik** • `devtools` `codex` `brew`
|
||||
|
||||
Pomocnik instalowany przez Homebrew do wyświetlania/listowania/śledzenia lokalnych sesji OpenAI Codex (CLI + VS Code).
|
||||
Pomocnik instalowany przez Homebrew do listowania/sprawdzania/śledzenia lokalnych sesji OpenAI Codex (CLI + VS Code).
|
||||
|
||||
<img src="/assets/showcase/codexmonitor.png" alt="CodexMonitor na ClawHub" />
|
||||
<img src="/assets/showcase/codexmonitor.png" alt="CodexMonitor w ClawHub" />
|
||||
</Card>
|
||||
|
||||
<Card title="Sterowanie drukarką 3D Bambu" icon="print" href="https://clawhub.ai/tobiasbischoff/bambu-cli">
|
||||
@ -156,72 +183,76 @@ Pomocnik instalowany przez Homebrew do wyświetlania/listowania/śledzenia lokal
|
||||
|
||||
Sterowanie i diagnozowanie drukarek BambuLab: status, zadania, kamera, AMS, kalibracja i nie tylko.
|
||||
|
||||
<img src="/assets/showcase/bambu-cli.png" alt="Skill Bambu CLI na ClawHub" />
|
||||
<img src="/assets/showcase/bambu-cli.png" alt="Skill Bambu CLI w ClawHub" />
|
||||
</Card>
|
||||
|
||||
<Card title="Transport w Wiedniu (Wiener Linien)" icon="train" href="https://clawhub.ai/hjanuschka/wienerlinien">
|
||||
<Card title="Transport wiedeński (Wiener Linien)" icon="train" href="https://clawhub.ai/hjanuschka/wienerlinien">
|
||||
**@hjanuschka** • `travel` `transport` `skill`
|
||||
|
||||
Odjazdy w czasie rzeczywistym, utrudnienia, status wind i trasy dla transportu publicznego w Wiedniu.
|
||||
Odjazdy w czasie rzeczywistym, zakłócenia, status wind i wyznaczanie tras dla transportu publicznego w Wiedniu.
|
||||
|
||||
<img src="/assets/showcase/wienerlinien.png" alt="Skill Wiener Linien na ClawHub" />
|
||||
<img src="/assets/showcase/wienerlinien.png" alt="Skill Wiener Linien w ClawHub" />
|
||||
</Card>
|
||||
|
||||
<Card title="Szkolne posiłki ParentPay" icon="utensils" href="#">
|
||||
<Card title="Posiłki szkolne ParentPay" icon="utensils">
|
||||
**@George5562** • `automation` `browser` `parenting`
|
||||
|
||||
Zautomatyzowana rezerwacja szkolnych posiłków w Wielkiej Brytanii przez ParentPay. Używa współrzędnych myszy do niezawodnego klikania komórek tabeli.
|
||||
Zautomatyzowana rezerwacja posiłków szkolnych w Wielkiej Brytanii przez ParentPay. Używa współrzędnych myszy do niezawodnego klikania komórek tabeli.
|
||||
</Card>
|
||||
|
||||
<Card title="Upload do R2 (wyślij mi moje pliki)" icon="cloud-arrow-up" href="https://clawhub.ai/skills/r2-upload">
|
||||
<Card title="Przesyłanie do R2 (Send Me My Files)" icon="cloud-arrow-up" href="https://clawhub.ai/skills/r2-upload">
|
||||
**@julianengel** • `files` `r2` `presigned-urls`
|
||||
|
||||
Przesyłanie do Cloudflare R2/S3 i generowanie bezpiecznych linków pobierania presigned. Idealne dla zdalnych instancji OpenClaw.
|
||||
Przesyłaj do Cloudflare R2/S3 i generuj bezpieczne presigned linki do pobierania. Idealne dla zdalnych instancji OpenClaw.
|
||||
</Card>
|
||||
|
||||
<Card title="Aplikacja iOS przez Telegram" icon="mobile" href="#">
|
||||
<Card title="Aplikacja iOS przez Telegram" icon="mobile">
|
||||
**@coard** • `ios` `xcode` `testflight`
|
||||
|
||||
Zbudowano kompletną aplikację iOS z mapami i nagrywaniem głosu, wdrożoną do TestFlight całkowicie przez czat w Telegramie.
|
||||
Zbudowano kompletną aplikację iOS z mapami i nagrywaniem głosu, wdrożoną do TestFlight całkowicie przez czat na Telegramie.
|
||||
|
||||
<img src="/assets/showcase/ios-testflight.jpg" alt="Aplikacja iOS w TestFlight" />
|
||||
</Card>
|
||||
|
||||
<Card title="Asystent zdrowia Oura Ring" icon="heart-pulse" href="#">
|
||||
<Card title="Asystent zdrowia Oura Ring" icon="heart-pulse">
|
||||
**@AS** • `health` `oura` `calendar`
|
||||
|
||||
Osobisty asystent zdrowia AI integrujący dane z Oura Ring z kalendarzem, wizytami i harmonogramem siłowni.
|
||||
Osobisty asystent zdrowia AI integrujący dane Oura ring z kalendarzem, wizytami i planem siłowni.
|
||||
|
||||
<img src="/assets/showcase/oura-health.png" alt="Asystent zdrowia Oura Ring" />
|
||||
<img src="/assets/showcase/oura-health.png" alt="Asystent zdrowia Oura ring" />
|
||||
</Card>
|
||||
<Card title="Dream Team Keva (14+ agentów)" icon="robot" href="https://github.com/adam91holt/orchestrated-ai-articles">
|
||||
<Card title="Kev's Dream Team (14+ agentów)" icon="robot" href="https://github.com/adam91holt/orchestrated-ai-articles">
|
||||
**@adam91holt** • `multi-agent` `orchestration` `architecture` `manifesto`
|
||||
|
||||
Ponad 14 agentów pod jedną bramą z orkiestratorem Opus 4.5 delegującym zadania do workerów Codex. Obszerne [opracowanie techniczne](https://github.com/adam91holt/orchestrated-ai-articles) obejmuje skład Dream Team, dobór modeli, sandboxing, webhooki, heartbeaty i przepływy delegowania. [Clawdspace](https://github.com/adam91holt/clawdspace) do sandboxingu agentów. [Wpis na blogu](https://adams-ai-journey.ghost.io/2026-the-year-of-the-orchestrator/).
|
||||
Ponad 14 agentów pod jedną bramą z orkiestratorem Opus 4.5 delegującym do workerów Codex. Kompleksowy [opis techniczny](https://github.com/adam91holt/orchestrated-ai-articles) obejmujący skład Dream Team, wybór modeli, sandboxing, webhooki, Heartbeat i przepływy delegowania. [Clawdspace](https://github.com/adam91holt/clawdspace) do sandboxingu agentów. [Wpis na blogu](https://adams-ai-journey.ghost.io/2026-the-year-of-the-orchestrator/).
|
||||
</Card>
|
||||
|
||||
<Card title="Linear CLI" icon="terminal" href="https://github.com/Finesssee/linear-cli">
|
||||
**@NessZerra** • `devtools` `linear` `cli` `issues`
|
||||
|
||||
CLI dla Linear, które integruje się z przepływami agentowymi (Claude Code, OpenClaw). Zarządzanie zgłoszeniami, projektami i przepływami pracy z terminala. Pierwszy zewnętrzny PR został zmergowany!
|
||||
CLI dla Linear, które integruje się z przepływami pracy agentowych systemów (Claude Code, OpenClaw). Zarządzaj zgłoszeniami, projektami i przepływami pracy z terminala. Pierwszy zewnętrzny PR został zmergowany!
|
||||
</Card>
|
||||
|
||||
<Card title="Beeper CLI" icon="message" href="https://github.com/blqke/beepcli">
|
||||
**@jules** • `messaging` `beeper` `cli` `automation`
|
||||
|
||||
Odczytywanie, wysyłanie i archiwizowanie wiadomości przez Beeper Desktop. Używa lokalnego API MCP Beeper, dzięki czemu agenci mogą zarządzać wszystkimi Twoimi czatami (iMessage, WhatsApp itd.) w jednym miejscu.
|
||||
Odczytuj, wysyłaj i archiwizuj wiadomości przez Beeper Desktop. Używa lokalnego API MCP Beeper, dzięki czemu agenci mogą zarządzać wszystkimi Twoimi czatami (iMessage, WhatsApp itd.) w jednym miejscu.
|
||||
</Card>
|
||||
|
||||
</CardGroup>
|
||||
|
||||
## 🤖 Automatyzacja i przepływy pracy
|
||||
<h2 id="automation-workflows">Automatyzacja i przepływy pracy</h2>
|
||||
|
||||
<p className="showcase-section-intro">
|
||||
Planowanie, sterowanie przeglądarką, pętle wsparcia i ta strona produktu, która mówi „po prostu zrób to zadanie za mnie”.
|
||||
</p>
|
||||
|
||||
<CardGroup cols={2}>
|
||||
|
||||
<Card title="Sterowanie oczyszczaczem powietrza Winix" icon="wind" href="https://x.com/antonplex/status/2010518442471006253">
|
||||
**@antonplex** • `automation` `hardware` `air-quality`
|
||||
|
||||
Claude Code odkrył i potwierdził sterowanie oczyszczaczem, a następnie OpenClaw przejmuje zarządzanie jakością powietrza w pomieszczeniu.
|
||||
Claude Code wykrył i potwierdził sterowanie oczyszczaczem, a potem OpenClaw przejmuje zarządzanie jakością powietrza w pomieszczeniu.
|
||||
|
||||
<img src="/assets/showcase/winix-air-purifier.jpg" alt="Sterowanie oczyszczaczem powietrza Winix przez OpenClaw" />
|
||||
</Card>
|
||||
@ -229,195 +260,219 @@ Claude Code odkrył i potwierdził sterowanie oczyszczaczem, a następnie OpenCl
|
||||
<Card title="Ładne ujęcia nieba z kamery" icon="camera" href="https://x.com/signalgaining/status/2010523120604746151">
|
||||
**@signalgaining** • `automation` `camera` `skill` `images`
|
||||
|
||||
Wyzwalane przez kamerę na dachu: poproś OpenClaw, aby zrobił zdjęcie nieba, kiedy wygląda pięknie — zaprojektował skill i zrobił zdjęcie.
|
||||
Wyzwalane przez kamerę na dachu: poproś OpenClaw o zrobienie zdjęcia nieba, kiedy wygląda pięknie — zaprojektował skill i wykonał zdjęcie.
|
||||
|
||||
<img src="/assets/showcase/roof-camera-sky.jpg" alt="Migawka nieba z kamery dachowej wykonana przez OpenClaw" />
|
||||
</Card>
|
||||
|
||||
<Card title="Wizualna scena porannego briefingu" icon="robot" href="https://x.com/buddyhadry/status/2010005331925954739">
|
||||
<Card title="Wizualna poranna scena informacyjna" icon="robot" href="https://x.com/buddyhadry/status/2010005331925954739">
|
||||
**@buddyhadry** • `automation` `briefing` `images` `telegram`
|
||||
|
||||
Zaplanowany prompt generuje każdego ranka pojedynczy obraz „sceny” (pogoda, zadania, data, ulubiony post/cytat) za pomocą persony OpenClaw.
|
||||
Zaplanowany prompt generuje każdego ranka pojedynczy obraz „sceny” (pogoda, zadania, data, ulubiony post/cytat) przez personę OpenClaw.
|
||||
</Card>
|
||||
|
||||
<Card title="Rezerwacja kortu do padla" icon="calendar-check" href="https://github.com/joshp123/padel-cli">
|
||||
**@joshp123** • `automation` `booking` `cli`
|
||||
|
||||
Kontrola dostępności w Playtomic + CLI do rezerwacji. Już nigdy nie przegapisz wolnego kortu.
|
||||
Sprawdzanie dostępności w Playtomic + CLI do rezerwacji. Nigdy więcej nie przegap wolnego kortu.
|
||||
|
||||
<img src="/assets/showcase/padel-screenshot.jpg" alt="Zrzut ekranu padel-cli" />
|
||||
</Card>
|
||||
|
||||
<Card title="Obsługa księgowości" icon="file-invoice-dollar">
|
||||
<Card title="Przyjmowanie dokumentów księgowych" icon="file-invoice-dollar">
|
||||
**Społeczność** • `automation` `email` `pdf`
|
||||
|
||||
Zbiera pliki PDF z e-maili, przygotowuje dokumenty dla doradcy podatkowego. Miesięczna księgowość na autopilocie.
|
||||
Zbiera pliki PDF z e-maila, przygotowuje dokumenty dla doradcy podatkowego. Miesięczna księgowość na autopilocie.
|
||||
</Card>
|
||||
|
||||
<Card title="Tryb deweloperski z kanapy" icon="couch" href="https://davekiss.com">
|
||||
<Card title="Tryb programisty z kanapy" icon="couch" href="https://davekiss.com">
|
||||
**@davekiss** • `telegram` `website` `migration` `astro`
|
||||
|
||||
Przebudowa całej osobistej strony przez Telegram podczas oglądania Netflixa — Notion → Astro, migracja 18 wpisów, DNS do Cloudflare. Ani razu nie otwarto laptopa.
|
||||
Zbudował od nowa całą osobistą stronę przez Telegram, oglądając Netflix — Notion → Astro, przeniesionych 18 wpisów, DNS do Cloudflare. Ani razu nie otworzył laptopa.
|
||||
</Card>
|
||||
|
||||
<Card title="Agent do szukania pracy" icon="briefcase">
|
||||
**@attol8** • `automation` `api` `skill`
|
||||
|
||||
Wyszukuje oferty pracy, dopasowuje je do słów kluczowych z CV i zwraca trafne możliwości z linkami. Zbudowany w 30 minut z użyciem API JSearch.
|
||||
Przeszukuje oferty pracy, dopasowuje je do słów kluczowych z CV i zwraca odpowiednie możliwości wraz z linkami. Zbudowany w 30 minut przy użyciu API JSearch.
|
||||
</Card>
|
||||
|
||||
<Card title="Budowniczy skillu Jira" icon="diagram-project" href="https://x.com/jdrhyne/status/2008336434827002232">
|
||||
<Card title="Generator skilla Jira" icon="diagram-project" href="https://x.com/jdrhyne/status/2008336434827002232">
|
||||
**@jdrhyne** • `automation` `jira` `skill` `devtools`
|
||||
|
||||
OpenClaw połączył się z Jira, a następnie wygenerował nowy skill w locie (zanim pojawił się na ClawHub).
|
||||
OpenClaw połączył się z Jira, a następnie wygenerował nowy skill na bieżąco (zanim pojawił się w ClawHub).
|
||||
</Card>
|
||||
|
||||
<Card title="Skill Todoist przez Telegram" icon="list-check" href="https://x.com/iamsubhrajyoti/status/2009949389884920153">
|
||||
**@iamsubhrajyoti** • `automation` `todoist` `skill` `telegram`
|
||||
|
||||
Zautomatyzowano zadania Todoist, a OpenClaw wygenerował skill bezpośrednio w czacie Telegram.
|
||||
Zautomatyzował zadania Todoist i kazał OpenClaw wygenerować skill bezpośrednio w czacie Telegrama.
|
||||
</Card>
|
||||
|
||||
<Card title="Analiza TradingView" icon="chart-line">
|
||||
**@bheem1798** • `finance` `browser` `automation`
|
||||
|
||||
Loguje się do TradingView przez automatyzację przeglądarki, wykonuje zrzuty wykresów i przeprowadza analizę techniczną na żądanie. Bez API — tylko sterowanie przeglądarką.
|
||||
Loguje się do TradingView przez automatyzację przeglądarki, robi zrzuty wykresów i na żądanie wykonuje analizę techniczną. Bez API — tylko sterowanie przeglądarką.
|
||||
</Card>
|
||||
|
||||
<Card title="Automatyczne wsparcie w Slacku" icon="slack">
|
||||
<Card title="Automatyczne wsparcie na Slacku" icon="slack">
|
||||
**@henrymascot** • `slack` `automation` `support`
|
||||
|
||||
Obserwuje firmowy kanał Slack, pomocnie odpowiada i przekazuje powiadomienia do Telegrama. Samodzielnie naprawił błąd produkcyjny we wdrożonej aplikacji bez polecenia.
|
||||
Obserwuje firmowy kanał Slack, pomocnie odpowiada i przekazuje powiadomienia do Telegrama. Samodzielnie naprawił błąd produkcyjny we wdrożonej aplikacji bez żadnej prośby.
|
||||
</Card>
|
||||
|
||||
</CardGroup>
|
||||
|
||||
## 🧠 Wiedza i pamięć
|
||||
<h2 id="knowledge-memory">Wiedza i pamięć</h2>
|
||||
|
||||
<p className="showcase-section-intro">
|
||||
Systemy, które indeksują, wyszukują, zapamiętują i rozumują na podstawie wiedzy osobistej lub zespołowej.
|
||||
</p>
|
||||
|
||||
<CardGroup cols={2}>
|
||||
|
||||
<Card title="xuezh - nauka chińskiego" icon="language" href="https://github.com/joshp123/xuezh">
|
||||
<Card title="xuezh do nauki chińskiego" icon="language" href="https://github.com/joshp123/xuezh">
|
||||
**@joshp123** • `learning` `voice` `skill`
|
||||
|
||||
Silnik do nauki chińskiego z informacją zwrotną o wymowie i przepływami nauki przez OpenClaw.
|
||||
|
||||
<img src="/assets/showcase/xuezh-pronunciation.jpeg" alt="Informacja zwrotna o wymowie xuezh" />
|
||||
<img src="/assets/showcase/xuezh-pronunciation.jpeg" alt="Informacja zwrotna o wymowie w xuezh" />
|
||||
</Card>
|
||||
|
||||
<Card title="Skarbiec pamięci WhatsApp" icon="vault">
|
||||
**Społeczność** • `memory` `transcription` `indexing`
|
||||
|
||||
Importuje pełne eksporty WhatsApp, transkrybuje ponad 1 tys. notatek głosowych, porównuje je z logami git i generuje powiązane raporty markdown.
|
||||
Importuje pełne eksporty WhatsApp, transkrybuje ponad 1 tys. notatek głosowych, porównuje je z logami git i generuje powiązane raporty w Markdownie.
|
||||
</Card>
|
||||
|
||||
<Card title="Wyszukiwanie semantyczne Karakeep" icon="magnifying-glass" href="https://github.com/jamesbrooksco/karakeep-semantic-search">
|
||||
**@jamesbrooksco** • `search` `vector` `bookmarks`
|
||||
|
||||
Dodaje wyszukiwanie wektorowe do zakładek Karakeep przy użyciu Qdrant + embeddingów OpenAI/Ollama.
|
||||
Dodaje wyszukiwanie wektorowe do zakładek Karakeep przy użyciu embeddingów Qdrant + OpenAI/Ollama.
|
||||
</Card>
|
||||
|
||||
<Card title="Pamięć Inside-Out-2" icon="brain">
|
||||
**Społeczność** • `memory` `beliefs` `self-model`
|
||||
|
||||
Oddzielny menedżer pamięci, który zamienia pliki sesji w wspomnienia → przekonania → ewoluujący model siebie.
|
||||
Osobny menedżer pamięci, który zamienia pliki sesji w wspomnienia → przekonania → ewoluujący model siebie.
|
||||
</Card>
|
||||
|
||||
</CardGroup>
|
||||
|
||||
## 🎙️ Głos i telefon
|
||||
<h2 id="voice-phone">Głos i telefon</h2>
|
||||
|
||||
<p className="showcase-section-intro">
|
||||
Punkty wejścia oparte na mowie, mosty telefoniczne i przepływy pracy intensywnie korzystające z transkrypcji.
|
||||
</p>
|
||||
|
||||
<CardGroup cols={2}>
|
||||
|
||||
<Card title="Most telefoniczny Clawdia" icon="phone" href="https://github.com/alejandroOPI/clawdia-bridge">
|
||||
**@alejandroOPI** • `voice` `vapi` `bridge`
|
||||
|
||||
Most HTTP między asystentem głosowym Vapi a OpenClaw. Prawie rzeczywiste rozmowy telefoniczne z Twoim agentem.
|
||||
Most HTTP Vapi voice assistant ↔ OpenClaw. Rozmowy telefoniczne z Twoim agentem niemal w czasie rzeczywistym.
|
||||
</Card>
|
||||
|
||||
<Card title="Transkrypcja przez OpenRouter" icon="microphone" href="https://clawhub.ai/obviyus/openrouter-transcribe">
|
||||
<Card title="Transkrypcja OpenRouter" icon="microphone" href="https://clawhub.ai/obviyus/openrouter-transcribe">
|
||||
**@obviyus** • `transcription` `multilingual` `skill`
|
||||
|
||||
Wielojęzyczna transkrypcja audio przez OpenRouter (Gemini itd.). Dostępne na ClawHub.
|
||||
Wielojęzyczna transkrypcja audio przez OpenRouter (Gemini itd.). Dostępne w ClawHub.
|
||||
</Card>
|
||||
|
||||
</CardGroup>
|
||||
|
||||
## 🏗️ Infrastruktura i wdrażanie
|
||||
<h2 id="infrastructure-deployment">Infrastruktura i wdrożenie</h2>
|
||||
|
||||
<p className="showcase-section-intro">
|
||||
Pakowanie, wdrażanie i integracje, które ułatwiają uruchamianie i rozszerzanie OpenClaw.
|
||||
</p>
|
||||
|
||||
<CardGroup cols={2}>
|
||||
|
||||
<Card title="Dodatek do Home Assistant" icon="home" href="https://github.com/ngutman/openclaw-ha-addon">
|
||||
<Card title="Dodatek Home Assistant" icon="home" href="https://github.com/ngutman/openclaw-ha-addon">
|
||||
**@ngutman** • `homeassistant` `docker` `raspberry-pi`
|
||||
|
||||
Brama OpenClaw działająca w Home Assistant OS z obsługą tunelu SSH i trwałym stanem.
|
||||
Gateway OpenClaw działający w Home Assistant OS z obsługą tunelu SSH i trwałym stanem.
|
||||
</Card>
|
||||
|
||||
<Card title="Skill Home Assistant" icon="toggle-on" href="https://clawhub.ai/skills/homeassistant">
|
||||
**ClawHub** • `homeassistant` `skill` `automation`
|
||||
|
||||
Sterowanie i automatyzacja urządzeń Home Assistant za pomocą języka naturalnego.
|
||||
Steruj urządzeniami Home Assistant i automatyzuj je za pomocą języka naturalnego.
|
||||
</Card>
|
||||
|
||||
<Card title="Pakietowanie Nix" icon="snowflake" href="https://github.com/openclaw/nix-openclaw">
|
||||
**@openclaw** • `nix` `packaging` `deployment`
|
||||
|
||||
Kompletny, unixowiony zestaw konfiguracji OpenClaw dla powtarzalnych wdrożeń.
|
||||
Kompletny, oparty na Nix zestaw konfiguracji OpenClaw do powtarzalnych wdrożeń.
|
||||
</Card>
|
||||
|
||||
<Card title="Kalendarz CalDAV" icon="calendar" href="https://clawhub.ai/skills/caldav-calendar">
|
||||
**ClawHub** • `calendar` `caldav` `skill`
|
||||
|
||||
Skill kalendarza używający khal/vdirsyncer. Samodzielnie hostowana integracja kalendarza.
|
||||
Skill kalendarza używający khal/vdirsyncer. Self-hostowana integracja kalendarza.
|
||||
</Card>
|
||||
|
||||
</CardGroup>
|
||||
|
||||
## 🏠 Dom i sprzęt
|
||||
<h2 id="home-hardware">Dom i sprzęt</h2>
|
||||
|
||||
<p className="showcase-section-intro">
|
||||
Fizyczna strona OpenClaw: domy, czujniki, kamery, odkurzacze i inne urządzenia.
|
||||
</p>
|
||||
|
||||
<CardGroup cols={2}>
|
||||
|
||||
<Card title="Automatyzacja GoHome" icon="house-signal" href="https://github.com/joshp123/gohome">
|
||||
**@joshp123** • `home` `nix` `grafana`
|
||||
|
||||
Automatyzacja domu natywna dla Nix z OpenClaw jako interfejsem oraz pięknymi dashboardami Grafana.
|
||||
Automatyka domowa natywna dla Nix z OpenClaw jako interfejsem oraz pięknymi pulpitami Grafana.
|
||||
|
||||
<img src="/assets/showcase/gohome-grafana.png" alt="Dashboard Grafana GoHome" />
|
||||
<img src="/assets/showcase/gohome-grafana.png" alt="Pulpit Grafana GoHome" />
|
||||
</Card>
|
||||
|
||||
<Card title="Odkurzacz Roborock" icon="robot" href="https://github.com/joshp123/gohome/tree/main/plugins/roborock">
|
||||
**@joshp123** • `vacuum` `iot` `plugin`
|
||||
|
||||
Steruj swoim robotem odkurzającym Roborock poprzez naturalną rozmowę.
|
||||
Steruj swoim robotem sprzątającym Roborock za pomocą naturalnej rozmowy.
|
||||
|
||||
<img src="/assets/showcase/roborock-screenshot.jpg" alt="Status Roborock" />
|
||||
</Card>
|
||||
|
||||
</CardGroup>
|
||||
|
||||
## 🌟 Projekty społeczności
|
||||
<h2 id="community-projects">Projekty społeczności</h2>
|
||||
|
||||
<p className="showcase-section-intro">
|
||||
Rzeczy, które wyrosły poza pojedynczy przepływ pracy i stały się szerszymi produktami lub ekosystemami.
|
||||
</p>
|
||||
|
||||
<CardGroup cols={2}>
|
||||
|
||||
<Card title="Marketplace StarSwap" icon="star" href="https://star-swap.com/">
|
||||
**Społeczność** • `marketplace` `astronomy` `webapp`
|
||||
|
||||
Kompletny marketplace sprzętu astronomicznego. Zbudowany z użyciem / wokół ekosystemu OpenClaw.
|
||||
Pełnoprawny marketplace sprzętu astronomicznego. Zbudowany z użyciem ekosystemu OpenClaw lub wokół niego.
|
||||
</Card>
|
||||
|
||||
</CardGroup>
|
||||
|
||||
---
|
||||
|
||||
## Prześlij swój projekt
|
||||
<h2 id="submit-your-project">Dodaj swój projekt</h2>
|
||||
|
||||
<p className="showcase-section-intro">
|
||||
Jeśli tworzysz coś ciekawego z OpenClaw, prześlij to. Mocne zrzuty ekranu i konkretne rezultaty pomagają.
|
||||
</p>
|
||||
|
||||
Masz coś do pokazania? Chętnie to wyróżnimy!
|
||||
|
||||
<Steps>
|
||||
<Step title="Udostępnij">
|
||||
Opublikuj w [#self-promotion na Discordzie](https://discord.gg/clawd) lub [napisz tweeta do @openclaw](https://x.com/openclaw)
|
||||
Opublikuj w [#self-promotion na Discordzie](https://discord.gg/clawd) albo [napisz do @openclaw na X](https://x.com/openclaw)
|
||||
</Step>
|
||||
<Step title="Dołącz szczegóły">
|
||||
Powiedz nam, co to robi, podlinkuj repo/demo i dodaj zrzut ekranu, jeśli go masz
|
||||
<Step title="Dodaj szczegóły">
|
||||
Powiedz nam, co to robi, podaj link do repo/demo i dołącz zrzut ekranu, jeśli go masz
|
||||
</Step>
|
||||
<Step title="Zostań wyróżniony">
|
||||
Dodamy wyróżniające się projekty do tej strony
|
||||
|
||||
@ -1,32 +1,32 @@
|
||||
---
|
||||
read_when:
|
||||
- Generowanie filmów za pomocą agenta
|
||||
- Konfigurowanie dostawców i modeli do generowania filmów
|
||||
- Omówienie parametrów narzędzia `video_generate`
|
||||
summary: Generuj filmy z tekstu, obrazów lub istniejących filmów za pomocą 14 backendów dostawców
|
||||
title: Generowanie filmów
|
||||
- Generowanie filmów przez agenta
|
||||
- Konfigurowanie dostawców i modeli generowania wideo
|
||||
- Zrozumienie parametrów narzędzia `video_generate`
|
||||
summary: Generuj filmy na podstawie tekstu, obrazów lub istniejących filmów z użyciem 14 backendów dostawców
|
||||
title: Generowanie wideo
|
||||
x-i18n:
|
||||
generated_at: "2026-04-11T09:30:23Z"
|
||||
generated_at: "2026-04-15T09:52:37Z"
|
||||
model: gpt-5.4
|
||||
provider: openai
|
||||
source_hash: 0ec159a0bbb6b8a030e68828c0a8bcaf40c8538ecf98bc8ff609dab9d0068263
|
||||
source_hash: c182f24b25e44f157a820e82a1f7422247f26125956944b5eb98613774268cfe
|
||||
source_path: tools/video-generation.md
|
||||
workflow: 15
|
||||
---
|
||||
|
||||
# Generowanie filmów
|
||||
# Generowanie wideo
|
||||
|
||||
Agenci OpenClaw mogą generować filmy na podstawie promptów tekstowych, obrazów referencyjnych lub istniejących filmów. Obsługiwanych jest czternaście backendów dostawców, z których każdy oferuje różne opcje modeli, tryby wejściowe i zestawy funkcji. Agent automatycznie wybiera właściwego dostawcę na podstawie Twojej konfiguracji i dostępnych kluczy API.
|
||||
Agenci OpenClaw mogą generować filmy na podstawie promptów tekstowych, obrazów referencyjnych lub istniejących filmów. Obsługiwanych jest czternaście backendów dostawców, z których każdy oferuje inne opcje modeli, tryby wejścia i zestawy funkcji. Agent automatycznie wybiera odpowiedniego dostawcę na podstawie Twojej konfiguracji i dostępnych kluczy API.
|
||||
|
||||
<Note>
|
||||
Narzędzie `video_generate` pojawia się tylko wtedy, gdy dostępny jest co najmniej jeden dostawca generowania filmów. Jeśli go nie widzisz w narzędziach agenta, ustaw klucz API dostawcy lub skonfiguruj `agents.defaults.videoGenerationModel`.
|
||||
Narzędzie `video_generate` pojawia się tylko wtedy, gdy dostępny jest co najmniej jeden dostawca generowania wideo. Jeśli nie widzisz go w narzędziach agenta, ustaw klucz API dostawcy albo skonfiguruj `agents.defaults.videoGenerationModel`.
|
||||
</Note>
|
||||
|
||||
OpenClaw traktuje generowanie filmów jako trzy tryby działania w czasie wykonywania:
|
||||
OpenClaw traktuje generowanie wideo jako trzy tryby działania:
|
||||
|
||||
- `generate` dla żądań tekst-na-film bez mediów referencyjnych
|
||||
- `imageToVideo` gdy żądanie zawiera jeden lub więcej obrazów referencyjnych
|
||||
- `videoToVideo` gdy żądanie zawiera jeden lub więcej filmów referencyjnych
|
||||
- `generate` dla żądań text-to-video bez mediów referencyjnych
|
||||
- `imageToVideo`, gdy żądanie zawiera co najmniej jeden obraz referencyjny
|
||||
- `videoToVideo`, gdy żądanie zawiera co najmniej jeden film referencyjny
|
||||
|
||||
Dostawcy mogą obsługiwać dowolny podzbiór tych trybów. Narzędzie sprawdza aktywny
|
||||
tryb przed wysłaniem i raportuje obsługiwane tryby w `action=list`.
|
||||
@ -49,31 +49,31 @@ openclaw config set agents.defaults.videoGenerationModel.primary "google/veo-3.1
|
||||
|
||||
> Wygeneruj 5-sekundowy kinowy film przedstawiający przyjaznego homara surfującego o zachodzie słońca.
|
||||
|
||||
Agent automatycznie wywoła `video_generate`. Lista dozwolonych narzędzi nie jest wymagana.
|
||||
Agent automatycznie wywoła `video_generate`. Nie trzeba tworzyć listy dozwolonych narzędzi.
|
||||
|
||||
## Co dzieje się podczas generowania filmu
|
||||
## Co dzieje się podczas generowania wideo
|
||||
|
||||
Generowanie filmów jest asynchroniczne. Gdy agent wywoła `video_generate` w sesji:
|
||||
Generowanie wideo jest asynchroniczne. Gdy agent wywoła `video_generate` w sesji:
|
||||
|
||||
1. OpenClaw wysyła żądanie do dostawcy i natychmiast zwraca identyfikator zadania.
|
||||
2. Dostawca przetwarza zadanie w tle (zwykle od 30 sekund do 5 minut, w zależności od dostawcy i rozdzielczości).
|
||||
2. Dostawca przetwarza zadanie w tle (zwykle od 30 sekund do 5 minut, zależnie od dostawcy i rozdzielczości).
|
||||
3. Gdy film jest gotowy, OpenClaw wybudza tę samą sesję wewnętrznym zdarzeniem ukończenia.
|
||||
4. Agent publikuje gotowy film z powrotem w oryginalnej rozmowie.
|
||||
4. Agent publikuje gotowy film z powrotem w pierwotnej rozmowie.
|
||||
|
||||
Gdy zadanie jest w toku, zduplikowane wywołania `video_generate` w tej samej sesji zwracają bieżący stan zadania zamiast rozpoczynać kolejne generowanie. Użyj `openclaw tasks list` lub `openclaw tasks show <taskId>`, aby sprawdzić postęp z poziomu CLI.
|
||||
Gdy zadanie jest w toku, zduplikowane wywołania `video_generate` w tej samej sesji zwracają bieżący status zadania zamiast rozpoczynać kolejne generowanie. Użyj `openclaw tasks list` lub `openclaw tasks show <taskId>`, aby sprawdzić postęp z poziomu CLI.
|
||||
|
||||
Poza uruchomieniami agenta opartymi na sesji (na przykład przy bezpośrednich wywołaniach narzędzia), narzędzie przechodzi do generowania inline i zwraca końcową ścieżkę do multimediów w tej samej turze.
|
||||
Poza uruchomieniami agenta opartymi na sesji (na przykład przy bezpośrednich wywołaniach narzędzia) narzędzie przechodzi w tryb generowania inline i zwraca końcową ścieżkę do medium w tej samej turze.
|
||||
|
||||
### Cykl życia zadania
|
||||
|
||||
Każde żądanie `video_generate` przechodzi przez cztery stany:
|
||||
|
||||
1. **queued** -- zadanie utworzone, oczekuje na zaakceptowanie przez dostawcę.
|
||||
2. **running** -- dostawca przetwarza zadanie (zwykle od 30 sekund do 5 minut, w zależności od dostawcy i rozdzielczości).
|
||||
1. **queued** -- zadanie utworzone, oczekuje na przyjęcie przez dostawcę.
|
||||
2. **running** -- dostawca przetwarza zadanie (zwykle od 30 sekund do 5 minut, zależnie od dostawcy i rozdzielczości).
|
||||
3. **succeeded** -- film gotowy; agent wybudza się i publikuje go w rozmowie.
|
||||
4. **failed** -- błąd dostawcy lub przekroczenie limitu czasu; agent wybudza się ze szczegółami błędu.
|
||||
|
||||
Sprawdź stan z poziomu CLI:
|
||||
Sprawdzanie statusu z poziomu CLI:
|
||||
|
||||
```bash
|
||||
openclaw tasks list
|
||||
@ -81,166 +81,165 @@ openclaw tasks show <taskId>
|
||||
openclaw tasks cancel <taskId>
|
||||
```
|
||||
|
||||
Zapobieganie duplikatom: jeśli zadanie wideo ma już stan `queued` lub `running` dla bieżącej sesji, `video_generate` zwraca stan istniejącego zadania zamiast uruchamiać nowe. Użyj `action: "status"`, aby sprawdzić to jawnie bez uruchamiania nowego generowania.
|
||||
Zapobieganie duplikatom: jeśli dla bieżącej sesji zadanie wideo ma już stan `queued` lub `running`, `video_generate` zwraca status istniejącego zadania zamiast uruchamiać nowe. Użyj `action: "status"`, aby sprawdzić stan jawnie bez uruchamiania nowego generowania.
|
||||
|
||||
## Obsługiwani dostawcy
|
||||
|
||||
| Dostawca | Model domyślny | Tekst | Obraz ref. | Film ref. | Klucz API |
|
||||
| -------------------- | ------------------------------ | ----- | --------------------------------------------------- | --------------- | ----------------------------------------- |
|
||||
| Alibaba | `wan2.6-t2v` | Tak | Tak (zdalny URL) | Tak (zdalny URL) | `MODELSTUDIO_API_KEY` |
|
||||
| BytePlus (1.0) | `seedance-1-0-pro-250528` | Tak | Do 2 obrazów (tylko modele I2V; pierwsza + ostatnia klatka) | Nie | `BYTEPLUS_API_KEY` |
|
||||
| BytePlus Seedance 1.5 | `seedance-1-5-pro-251215` | Tak | Do 2 obrazów (pierwsza + ostatnia klatka przez rolę) | Nie | `BYTEPLUS_API_KEY` |
|
||||
| BytePlus Seedance 2.0 | `dreamina-seedance-2-0-260128` | Tak | Do 9 obrazów referencyjnych | Do 3 filmów | `BYTEPLUS_API_KEY` |
|
||||
| ComfyUI | `workflow` | Tak | 1 obraz | Nie | `COMFY_API_KEY` lub `COMFY_CLOUD_API_KEY` |
|
||||
| fal | `fal-ai/minimax/video-01-live` | Tak | 1 obraz | Nie | `FAL_KEY` |
|
||||
| Google | `veo-3.1-fast-generate-preview` | Tak | 1 obraz | 1 film | `GEMINI_API_KEY` |
|
||||
| MiniMax | `MiniMax-Hailuo-2.3` | Tak | 1 obraz | Nie | `MINIMAX_API_KEY` |
|
||||
| OpenAI | `sora-2` | Tak | 1 obraz | 1 film | `OPENAI_API_KEY` |
|
||||
| Qwen | `wan2.6-t2v` | Tak | Tak (zdalny URL) | Tak (zdalny URL) | `QWEN_API_KEY` |
|
||||
| Runway | `gen4.5` | Tak | 1 obraz | 1 film | `RUNWAYML_API_SECRET` |
|
||||
| Together | `Wan-AI/Wan2.2-T2V-A14B` | Tak | 1 obraz | Nie | `TOGETHER_API_KEY` |
|
||||
| Vydra | `veo3` | Tak | 1 obraz (`kling`) | Nie | `VYDRA_API_KEY` |
|
||||
| xAI | `grok-imagine-video` | Tak | 1 obraz | 1 film | `XAI_API_KEY` |
|
||||
| Dostawca | Domyślny model | Tekst | Obraz ref. | Wideo ref. | Klucz API |
|
||||
| --------------------- | ------------------------------ | ----- | --------------------------------------------------- | ---------------- | ----------------------------------------- |
|
||||
| Alibaba | `wan2.6-t2v` | Tak | Tak (zdalny URL) | Tak (zdalny URL) | `MODELSTUDIO_API_KEY` |
|
||||
| BytePlus (1.0) | `seedance-1-0-pro-250528` | Tak | Do 2 obrazów (tylko modele I2V; pierwsza + ostatnia klatka) | Nie | `BYTEPLUS_API_KEY` |
|
||||
| BytePlus Seedance 1.5 | `seedance-1-5-pro-251215` | Tak | Do 2 obrazów (pierwsza + ostatnia klatka przez rolę) | Nie | `BYTEPLUS_API_KEY` |
|
||||
| BytePlus Seedance 2.0 | `dreamina-seedance-2-0-260128` | Tak | Do 9 obrazów referencyjnych | Do 3 filmów | `BYTEPLUS_API_KEY` |
|
||||
| ComfyUI | `workflow` | Tak | 1 obraz | Nie | `COMFY_API_KEY` lub `COMFY_CLOUD_API_KEY` |
|
||||
| fal | `fal-ai/minimax/video-01-live` | Tak | 1 obraz | Nie | `FAL_KEY` |
|
||||
| Google | `veo-3.1-fast-generate-preview`| Tak | 1 obraz | 1 film | `GEMINI_API_KEY` |
|
||||
| MiniMax | `MiniMax-Hailuo-2.3` | Tak | 1 obraz | Nie | `MINIMAX_API_KEY` |
|
||||
| OpenAI | `sora-2` | Tak | 1 obraz | 1 film | `OPENAI_API_KEY` |
|
||||
| Qwen | `wan2.6-t2v` | Tak | Tak (zdalny URL) | Tak (zdalny URL) | `QWEN_API_KEY` |
|
||||
| Runway | `gen4.5` | Tak | 1 obraz | 1 film | `RUNWAYML_API_SECRET` |
|
||||
| Together | `Wan-AI/Wan2.2-T2V-A14B` | Tak | 1 obraz | Nie | `TOGETHER_API_KEY` |
|
||||
| Vydra | `veo3` | Tak | 1 obraz (`kling`) | Nie | `VYDRA_API_KEY` |
|
||||
| xAI | `grok-imagine-video` | Tak | 1 obraz | 1 film | `XAI_API_KEY` |
|
||||
|
||||
Niektórzy dostawcy akceptują dodatkowe lub alternatywne zmienne środowiskowe kluczy API. Szczegóły znajdziesz na poszczególnych [stronach dostawców](#related).
|
||||
Niektórzy dostawcy akceptują dodatkowe lub alternatywne zmienne środowiskowe klucza API. Szczegóły znajdziesz na poszczególnych [stronach dostawców](#related).
|
||||
|
||||
Uruchom `video_generate action=list`, aby sprawdzić dostępnych dostawców, modele i
|
||||
tryby działania w czasie wykonywania.
|
||||
Uruchom `video_generate action=list`, aby w czasie działania sprawdzić dostępnych dostawców, modele i
|
||||
tryby działania.
|
||||
|
||||
### Zadeklarowana macierz możliwości
|
||||
|
||||
Jest to jawny kontrakt trybów używany przez `video_generate`, testy kontraktowe
|
||||
oraz wspólny zestaw testów live.
|
||||
To jawny kontrakt trybów używany przez `video_generate`, testy kontraktowe
|
||||
i wspólne testy live.
|
||||
|
||||
| Dostawca | `generate` | `imageToVideo` | `videoToVideo` | Wspólne ścieżki live obecnie |
|
||||
| -------- | ---------- | -------------- | -------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Alibaba | Tak | Tak | Tak | `generate`, `imageToVideo`; `videoToVideo` pomijane, ponieważ ten dostawca wymaga zdalnych adresów URL filmów `http(s)` |
|
||||
| Alibaba | Tak | Tak | Tak | `generate`, `imageToVideo`; `videoToVideo` pomijane, ponieważ ten dostawca wymaga zdalnych URL-i wideo `http(s)` |
|
||||
| BytePlus | Tak | Tak | Nie | `generate`, `imageToVideo` |
|
||||
| ComfyUI | Tak | Tak | Nie | Nie wchodzi w skład wspólnego zestawu; pokrycie specyficzne dla workflow znajduje się w testach Comfy |
|
||||
| ComfyUI | Tak | Tak | Nie | Nie ma we wspólnym teście; pokrycie specyficzne dla workflow znajduje się przy testach Comfy |
|
||||
| fal | Tak | Tak | Nie | `generate`, `imageToVideo` |
|
||||
| Google | Tak | Tak | Tak | `generate`, `imageToVideo`; wspólne `videoToVideo` pomijane, ponieważ obecny zestaw Gemini/Veo oparty na buforach nie akceptuje tego wejścia |
|
||||
| Google | Tak | Tak | Tak | `generate`, `imageToVideo`; wspólne `videoToVideo` pomijane, ponieważ obecny test Gemini/Veo oparty na buforze nie akceptuje tego wejścia |
|
||||
| MiniMax | Tak | Tak | Nie | `generate`, `imageToVideo` |
|
||||
| OpenAI | Tak | Tak | Tak | `generate`, `imageToVideo`; wspólne `videoToVideo` pomijane, ponieważ ta ścieżka organizacji/wejścia obecnie wymaga dostępu do inpaint/remix po stronie dostawcy |
|
||||
| Qwen | Tak | Tak | Tak | `generate`, `imageToVideo`; `videoToVideo` pomijane, ponieważ ten dostawca wymaga zdalnych adresów URL filmów `http(s)` |
|
||||
| OpenAI | Tak | Tak | Tak | `generate`, `imageToVideo`; wspólne `videoToVideo` pomijane, ponieważ ta ścieżka org/wejścia wymaga obecnie dostępu do inpaint/remix po stronie dostawcy |
|
||||
| Qwen | Tak | Tak | Tak | `generate`, `imageToVideo`; `videoToVideo` pomijane, ponieważ ten dostawca wymaga zdalnych URL-i wideo `http(s)` |
|
||||
| Runway | Tak | Tak | Tak | `generate`, `imageToVideo`; `videoToVideo` działa tylko wtedy, gdy wybrany model to `runway/gen4_aleph` |
|
||||
| Together | Tak | Tak | Nie | `generate`, `imageToVideo` |
|
||||
| Vydra | Tak | Tak | Nie | `generate`; wspólne `imageToVideo` pomijane, ponieważ dołączony `veo3` obsługuje tylko tekst, a dołączony `kling` wymaga zdalnego URL obrazu |
|
||||
| xAI | Tak | Tak | Tak | `generate`, `imageToVideo`; `videoToVideo` pomijane, ponieważ ten dostawca obecnie wymaga zdalnego URL MP4 |
|
||||
| xAI | Tak | Tak | Tak | `generate`, `imageToVideo`; `videoToVideo` pomijane, ponieważ ten dostawca wymaga obecnie zdalnego URL MP4 |
|
||||
|
||||
## Parametry narzędzia
|
||||
|
||||
### Wymagane
|
||||
|
||||
| Parametr | Typ | Opis |
|
||||
| -------- | ------ | ------------------------------------------------------------------------------------- |
|
||||
| `prompt` | string | Tekstowy opis filmu do wygenerowania (wymagany dla `action: "generate"`) |
|
||||
| Parametr | Typ | Opis |
|
||||
| -------- | ------ | ----------------------------------------------------------------------------- |
|
||||
| `prompt` | string | Tekstowy opis filmu do wygenerowania (wymagany dla `action: "generate"`) |
|
||||
|
||||
### Wejścia treści
|
||||
|
||||
| Parametr | Typ | Opis |
|
||||
| ----------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `image` | string | Pojedynczy obraz referencyjny (ścieżka lub URL) |
|
||||
| `images` | string[] | Wiele obrazów referencyjnych (do 9) |
|
||||
| `imageRoles` | string[] | Opcjonalne wskazówki ról dla każdej pozycji, równoległe do połączonej listy obrazów. Kanoniczne wartości: `first_frame`, `last_frame`, `reference_image` |
|
||||
| `video` | string | Pojedynczy film referencyjny (ścieżka lub URL) |
|
||||
| `videos` | string[] | Wiele filmów referencyjnych (do 4) |
|
||||
| `videoRoles` | string[] | Opcjonalne wskazówki ról dla każdej pozycji, równoległe do połączonej listy filmów. Kanoniczna wartość: `reference_video` |
|
||||
| `audioRef` | string | Pojedyncze audio referencyjne (ścieżka lub URL). Używane np. jako muzyka w tle lub referencja głosu, gdy dostawca obsługuje wejścia audio |
|
||||
| `audioRefs` | string[] | Wiele plików audio referencyjnych (do 3) |
|
||||
| `audioRoles` | string[] | Opcjonalne wskazówki ról dla każdej pozycji, równoległe do połączonej listy audio. Kanoniczna wartość: `reference_audio` |
|
||||
| Parametr | Typ | Opis |
|
||||
| ----------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------ |
|
||||
| `image` | string | Pojedynczy obraz referencyjny (ścieżka lub URL) |
|
||||
| `images` | string[] | Wiele obrazów referencyjnych (maksymalnie 9) |
|
||||
| `imageRoles`| string[] | Opcjonalne wskazówki ról dla każdej pozycji, równoległe do połączonej listy obrazów. Kanoniczne wartości: `first_frame`, `last_frame`, `reference_image` |
|
||||
| `video` | string | Pojedynczy film referencyjny (ścieżka lub URL) |
|
||||
| `videos` | string[] | Wiele filmów referencyjnych (maksymalnie 4) |
|
||||
| `videoRoles`| string[] | Opcjonalne wskazówki ról dla każdej pozycji, równoległe do połączonej listy filmów. Kanoniczna wartość: `reference_video` |
|
||||
| `audioRef` | string | Pojedynczy dźwięk referencyjny (ścieżka lub URL). Używany np. jako muzyka tła lub referencja głosu, gdy dostawca obsługuje wejścia audio |
|
||||
| `audioRefs` | string[] | Wiele dźwięków referencyjnych (maksymalnie 3) |
|
||||
| `audioRoles`| string[] | Opcjonalne wskazówki ról dla każdej pozycji, równoległe do połączonej listy dźwięków. Kanoniczna wartość: `reference_audio` |
|
||||
|
||||
Wskazówki ról są przekazywane do dostawcy w niezmienionej postaci. Kanoniczne wartości pochodzą z
|
||||
Wskazówki ról są przekazywane do dostawcy bez zmian. Kanoniczne wartości pochodzą z
|
||||
unii `VideoGenerationAssetRole`, ale dostawcy mogą akceptować dodatkowe
|
||||
ciągi ról. Tablice `*Roles` nie mogą mieć więcej wpisów niż
|
||||
łańcuchy ról. Tablice `*Roles` nie mogą mieć więcej wpisów niż
|
||||
odpowiadająca im lista referencji; błędy typu off-by-one kończą się czytelnym komunikatem.
|
||||
Użyj pustego ciągu, aby pozostawić pozycję nieustawioną.
|
||||
Użyj pustego ciągu, aby pozostawić dane miejsce nieustawione.
|
||||
|
||||
### Kontrolki stylu
|
||||
### Sterowanie stylem
|
||||
|
||||
| Parametr | Typ | Opis |
|
||||
| ----------------- | ------- | -------------------------------------------------------------------------------------- |
|
||||
| `aspectRatio` | string | `1:1`, `2:3`, `3:2`, `3:4`, `4:3`, `4:5`, `5:4`, `9:16`, `16:9`, `21:9` lub `adaptive` |
|
||||
| `resolution` | string | `480P`, `720P`, `768P` lub `1080P` |
|
||||
| `durationSeconds` | number | Docelowy czas trwania w sekundach (zaokrąglany do najbliższej wartości obsługiwanej przez dostawcę) |
|
||||
| `durationSeconds` | number | Docelowa długość w sekundach (zaokrąglana do najbliższej wartości obsługiwanej przez dostawcę) |
|
||||
| `size` | string | Wskazówka rozmiaru, gdy dostawca ją obsługuje |
|
||||
| `audio` | boolean | Włącza wygenerowane audio w wyjściu, gdy jest obsługiwane. Odrębne od `audioRef*` (wejść) |
|
||||
| `watermark` | boolean | Przełącza znak wodny dostawcy, gdy jest obsługiwany |
|
||||
| `audio` | boolean | Włącza generowany dźwięk w wyjściu, jeśli jest obsługiwany. Odrębne od `audioRef*` (wejścia) |
|
||||
| `watermark` | boolean | Przełącza znak wodny dostawcy, jeśli jest obsługiwany |
|
||||
|
||||
`adaptive` to specyficzna dla dostawcy wartość specjalna: jest przekazywana bez zmian do
|
||||
dostawców, którzy deklarują `adaptive` w swoich możliwościach (np. BytePlus
|
||||
Seedance używa jej do automatycznego wykrywania proporcji na podstawie
|
||||
wymiarów obrazu wejściowego). Dostawcy, którzy jej nie deklarują, pokazują tę wartość w
|
||||
`details.ignoredOverrides` w wyniku narzędzia, dzięki czemu pominięcie jest widoczne.
|
||||
`details.ignoredOverrides` w wyniku narzędzia, aby pominięcie było widoczne.
|
||||
|
||||
### Zaawansowane
|
||||
|
||||
| Parametr | Typ | Opis |
|
||||
| ----------------- | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `action` | string | `"generate"` (domyślnie), `"status"` lub `"list"` |
|
||||
| `model` | string | Zastąpienie dostawcy/modelu (np. `runway/gen4.5`) |
|
||||
| `filename` | string | Wskazówka nazwy pliku wyjściowego |
|
||||
| `providerOptions` | object | Opcje specyficzne dla dostawcy jako obiekt JSON (np. `{"seed": 42, "draft": true}`). Dostawcy, którzy deklarują schemat typowany, walidują klucze i typy; nieznane klucze lub niedopasowania powodują pominięcie kandydata podczas fallbacku. Dostawcy bez zadeklarowanego schematu otrzymują opcje bez zmian. Uruchom `video_generate action=list`, aby zobaczyć, co akceptuje każdy dostawca |
|
||||
| Parametr | Typ | Opis |
|
||||
| ----------------- | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `action` | string | `"generate"` (domyślnie), `"status"` lub `"list"` |
|
||||
| `model` | string | Nadpisanie dostawcy/modelu (np. `runway/gen4.5`) |
|
||||
| `filename` | string | Wskazówka nazwy pliku wyjściowego |
|
||||
| `providerOptions` | object | Opcje specyficzne dla dostawcy jako obiekt JSON (np. `{"seed": 42, "draft": true}`). Dostawcy, którzy deklarują typowany schemat, walidują klucze i typy; nieznane klucze lub niezgodności powodują pominięcie kandydata podczas fallbacku. Dostawcy bez zadeklarowanego schematu otrzymują opcje bez zmian. Uruchom `video_generate action=list`, aby zobaczyć, co akceptuje każdy dostawca |
|
||||
|
||||
Nie wszyscy dostawcy obsługują wszystkie parametry. OpenClaw już normalizuje czas trwania do najbliższej wartości obsługiwanej przez dostawcę, a także mapuje przetłumaczone wskazówki geometrii, takie jak rozmiar na proporcje obrazu, gdy zapasowy dostawca udostępnia inny interfejs sterowania. Rzeczywiście nieobsługiwane zastąpienia są ignorowane na zasadzie best-effort i zgłaszane jako ostrzeżenia w wyniku narzędzia. Twarde limity możliwości (takie jak zbyt wiele wejść referencyjnych) powodują błąd przed wysłaniem.
|
||||
Nie wszyscy dostawcy obsługują wszystkie parametry. OpenClaw już normalizuje czas trwania do najbliższej wartości obsługiwanej przez dostawcę, a także przemapowuje przetłumaczone wskazówki geometrii, takie jak size-to-aspect-ratio, gdy dostawca fallback udostępnia inną powierzchnię sterowania. Naprawdę nieobsługiwane nadpisania są ignorowane na zasadzie best effort i zgłaszane jako ostrzeżenia w wyniku narzędzia. Twarde ograniczenia możliwości (takie jak zbyt wiele wejść referencyjnych) powodują błąd przed wysłaniem.
|
||||
|
||||
Wyniki narzędzia raportują zastosowane ustawienia. Gdy OpenClaw przemapowuje czas trwania lub geometrię podczas fallbacku dostawcy, zwrócone wartości `durationSeconds`, `size`, `aspectRatio` i `resolution` odzwierciedlają to, co zostało wysłane, a `details.normalization` zawiera mapowanie z wartości żądanych na zastosowane.
|
||||
Wyniki narzędzia pokazują zastosowane ustawienia. Gdy OpenClaw przemapowuje czas trwania lub geometrię podczas fallbacku dostawcy, zwracane wartości `durationSeconds`, `size`, `aspectRatio` i `resolution` odzwierciedlają to, co zostało wysłane, a `details.normalization` zapisuje translację od wartości żądanej do zastosowanej.
|
||||
|
||||
Wejścia referencyjne również wybierają tryb działania:
|
||||
|
||||
- Brak mediów referencyjnych: `generate`
|
||||
- Dowolny obraz referencyjny: `imageToVideo`
|
||||
- Dowolny film referencyjny: `videoToVideo`
|
||||
- Referencyjne wejścia audio nie zmieniają rozstrzygniętego trybu; są stosowane dodatkowo do trybu wybranego przez referencje obrazu/filmu i działają tylko z dostawcami, którzy deklarują `maxInputAudios`
|
||||
- Jakikolwiek obraz referencyjny: `imageToVideo`
|
||||
- Jakikolwiek film referencyjny: `videoToVideo`
|
||||
- Referencyjne wejścia audio nie zmieniają rozstrzygniętego trybu; są stosowane dodatkowo do trybu wybranego przez referencje obrazu/wideo i działają tylko z dostawcami, którzy deklarują `maxInputAudios`
|
||||
|
||||
Mieszane referencje obrazów i filmów nie stanowią stabilnej wspólnej powierzchni możliwości.
|
||||
Preferuj jeden typ referencji na żądanie.
|
||||
Najlepiej używać jednego typu referencji na żądanie.
|
||||
|
||||
#### Fallback i opcje typowane
|
||||
#### Fallback i typowane opcje
|
||||
|
||||
Niektóre kontrole możliwości są stosowane w warstwie fallbacku, a nie na granicy
|
||||
narzędzia, aby żądanie przekraczające limity głównego dostawcy
|
||||
mogło nadal zostać uruchomione przez odpowiedni fallback:
|
||||
Niektóre kontrole możliwości są stosowane na warstwie fallbacku, a nie na granicy
|
||||
narzędzia, tak aby żądanie przekraczające limity głównego dostawcy
|
||||
mogło nadal zostać uruchomione u obsługującego je fallbacku:
|
||||
|
||||
- Jeśli aktywny kandydat nie deklaruje `maxInputAudios` (lub deklaruje
|
||||
- Jeśli aktywny kandydat nie deklaruje `maxInputAudios` (lub deklaruje je jako
|
||||
`0`), jest pomijany, gdy żądanie zawiera referencje audio, i
|
||||
sprawdzany jest kolejny kandydat.
|
||||
- Jeśli `maxDurationSeconds` aktywnego kandydata jest niższe niż żądane
|
||||
próbowany jest następny kandydat.
|
||||
- Jeśli `maxDurationSeconds` aktywnego kandydata jest niższe od żądanego
|
||||
`durationSeconds`, a kandydat nie deklaruje listy
|
||||
`supportedDurationSeconds`,
|
||||
jest pomijany.
|
||||
`supportedDurationSeconds`, jest pomijany.
|
||||
- Jeśli żądanie zawiera `providerOptions`, a aktywny kandydat
|
||||
jawnie deklaruje typowany schemat `providerOptions`, kandydat jest
|
||||
pomijany, gdy podane klucze nie występują w schemacie lub typy wartości
|
||||
nie pasują. Dostawcy, którzy jeszcze nie zadeklarowali schematu, otrzymują
|
||||
opcje bez zmian (zgodny wstecznie pass-through). Dostawca może
|
||||
pomijany, gdy podane klucze nie należą do schematu lub typy wartości nie
|
||||
pasują. Dostawcy, którzy nie zadeklarowali jeszcze schematu, otrzymują
|
||||
opcje bez zmian (wstecznie zgodny pass-through). Dostawca może
|
||||
jawnie zrezygnować ze wszystkich opcji dostawcy, deklarując pusty schemat
|
||||
(`capabilities.providerOptions: {}`), co powoduje takie samo pominięcie jak
|
||||
niedopasowanie typu.
|
||||
niezgodność typu.
|
||||
|
||||
Pierwszy powód pominięcia w żądaniu jest logowany na poziomie `warn`, aby operatorzy widzieli,
|
||||
kiedy główny dostawca został pominięty; kolejne pominięcia są logowane na poziomie
|
||||
`debug`, aby długie łańcuchy fallbacku pozostawały ciche. Jeśli każdy kandydat zostanie pominięty,
|
||||
zbiorczy błąd zawiera powód pominięcia dla każdego z nich.
|
||||
`debug`, aby długie łańcuchy fallbacków nie były zbyt hałaśliwe. Jeśli każdy kandydat zostanie pominięty,
|
||||
zagregowany błąd zawiera powód pominięcia dla każdego z nich.
|
||||
|
||||
## Akcje
|
||||
|
||||
- **generate** (domyślnie) -- utwórz film na podstawie podanego promptu i opcjonalnych wejść referencyjnych.
|
||||
- **status** -- sprawdź stan zadania generowania filmu będącego w toku dla bieżącej sesji bez uruchamiania kolejnego generowania.
|
||||
- **status** -- sprawdź stan zadania generowania wideo będącego w toku dla bieżącej sesji bez uruchamiania kolejnego generowania.
|
||||
- **list** -- pokaż dostępnych dostawców, modele i ich możliwości.
|
||||
|
||||
## Wybór modelu
|
||||
|
||||
Podczas generowania filmu OpenClaw rozstrzyga model w tej kolejności:
|
||||
Podczas generowania wideo OpenClaw rozstrzyga model w następującej kolejności:
|
||||
|
||||
1. **Parametr narzędzia `model`** -- jeśli agent określi go w wywołaniu.
|
||||
1. **Parametr narzędzia `model`** -- jeśli agent poda go w wywołaniu.
|
||||
2. **`videoGenerationModel.primary`** -- z konfiguracji.
|
||||
3. **`videoGenerationModel.fallbacks`** -- próbowane po kolei.
|
||||
4. **Automatyczne wykrywanie** -- używa dostawców z prawidłowym uwierzytelnianiem, zaczynając od bieżącego domyślnego dostawcy, a następnie pozostałych dostawców w kolejności alfabetycznej.
|
||||
4. **Automatyczne wykrywanie** -- używa dostawców z poprawnym uwierzytelnieniem, zaczynając od bieżącego domyślnego dostawcy, a następnie pozostałych dostawców w porządku alfabetycznym.
|
||||
|
||||
Jeśli dostawca zawiedzie, automatycznie sprawdzany jest kolejny kandydat. Jeśli wszyscy kandydaci zawiodą, błąd zawiera szczegóły z każdej próby.
|
||||
Jeśli dostawca zawiedzie, automatycznie próbowany jest następny kandydat. Jeśli zawiodą wszyscy kandydaci, błąd zawiera szczegóły każdej próby.
|
||||
|
||||
Ustaw `agents.defaults.mediaGenerationAutoProviderFallback: false`, jeśli chcesz,
|
||||
aby generowanie filmów używało tylko jawnych wpisów `model`, `primary` i `fallbacks`.
|
||||
aby generowanie wideo używało wyłącznie jawnych wpisów `model`, `primary` i `fallbacks`.
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -257,27 +256,27 @@ aby generowanie filmów używało tylko jawnych wpisów `model`, `primary` i `fa
|
||||
|
||||
## Uwagi o dostawcach
|
||||
|
||||
| Dostawca | Uwagi |
|
||||
| -------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Alibaba | Używa asynchronicznego endpointu DashScope/Model Studio. Obrazy i filmy referencyjne muszą być zdalnymi adresami URL `http(s)`. |
|
||||
| BytePlus (1.0) | Id dostawcy `byteplus`. Modele: `seedance-1-0-pro-250528` (domyślny), `seedance-1-0-pro-t2v-250528`, `seedance-1-0-pro-fast-251015`, `seedance-1-0-lite-t2v-250428`, `seedance-1-0-lite-i2v-250428`. Modele T2V (`*-t2v-*`) nie akceptują wejść obrazów; modele I2V i ogólne modele `*-pro-*` obsługują pojedynczy obraz referencyjny (pierwsza klatka). Przekaż obraz pozycyjnie lub ustaw `role: "first_frame"`. Identyfikatory modeli T2V są automatycznie przełączane na odpowiadający wariant I2V, gdy podany jest obraz. Obsługiwane klucze `providerOptions`: `seed` (number), `draft` (boolean, wymusza 480p), `camera_fixed` (boolean). |
|
||||
| BytePlus Seedance 1.5 | Wymaga pluginu [`@openclaw/byteplus-modelark`](https://www.npmjs.com/package/@openclaw/byteplus-modelark). Id dostawcy `byteplus-seedance15`. Model: `seedance-1-5-pro-251215`. Używa zunifikowanego API `content[]`. Obsługuje maksymalnie 2 obrazy wejściowe (first_frame + last_frame). Wszystkie wejścia muszą być zdalnymi adresami URL `https://`. Ustaw `role: "first_frame"` / `"last_frame"` dla każdego obrazu lub przekaż obrazy pozycyjnie. `aspectRatio: "adaptive"` automatycznie wykrywa proporcje z obrazu wejściowego. `audio: true` jest mapowane na `generate_audio`. `providerOptions.seed` (number) jest przekazywane dalej. |
|
||||
| BytePlus Seedance 2.0 | Wymaga pluginu [`@openclaw/byteplus-modelark`](https://www.npmjs.com/package/@openclaw/byteplus-modelark). Id dostawcy `byteplus-seedance2`. Modele: `dreamina-seedance-2-0-260128`, `dreamina-seedance-2-0-fast-260128`. Używa zunifikowanego API `content[]`. Obsługuje do 9 obrazów referencyjnych, 3 filmów referencyjnych i 3 plików audio referencyjnych. Wszystkie wejścia muszą być zdalnymi adresami URL `https://`. Ustaw `role` dla każdego zasobu — obsługiwane wartości: `"first_frame"`, `"last_frame"`, `"reference_image"`, `"reference_video"`, `"reference_audio"`. `aspectRatio: "adaptive"` automatycznie wykrywa proporcje z obrazu wejściowego. `audio: true` jest mapowane na `generate_audio`. `providerOptions.seed` (number) jest przekazywane dalej. |
|
||||
| ComfyUI | Wykonywanie lokalne lub chmurowe sterowane przez workflow. Obsługuje tekst-na-film i obraz-na-film przez skonfigurowany graf. |
|
||||
| fal | Używa przepływu opartego na kolejce dla długotrwałych zadań. Tylko pojedynczy obraz referencyjny. |
|
||||
| Google | Używa Gemini/Veo. Obsługuje jeden obraz lub jeden film referencyjny. |
|
||||
| MiniMax | Tylko pojedynczy obraz referencyjny. |
|
||||
| OpenAI | Przekazywane jest tylko zastąpienie `size`. Pozostałe zastąpienia stylu (`aspectRatio`, `resolution`, `audio`, `watermark`) są ignorowane z ostrzeżeniem. |
|
||||
| Qwen | Ten sam backend DashScope co Alibaba. Wejścia referencyjne muszą być zdalnymi adresami URL `http(s)`; pliki lokalne są odrzucane z góry. |
|
||||
| Runway | Obsługuje pliki lokalne przez URI `data`. Film-na-film wymaga `runway/gen4_aleph`. Uruchomienia tylko tekstowe udostępniają proporcje `16:9` i `9:16`. |
|
||||
| Together | Tylko pojedynczy obraz referencyjny. |
|
||||
| Vydra | Używa bezpośrednio `https://www.vydra.ai/api/v1`, aby uniknąć przekierowań usuwających uwierzytelnianie. `veo3` jest dołączony wyłącznie jako tekst-na-film; `kling` wymaga zdalnego URL obrazu. |
|
||||
| xAI | Obsługuje tekst-na-film, obraz-na-film oraz zdalne przepływy edycji/rozszerzania filmów. |
|
||||
| Dostawca | Uwagi |
|
||||
| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
||||
| Alibaba | Używa asynchronicznego endpointu DashScope/Model Studio. Obrazy i filmy referencyjne muszą być zdalnymi adresami URL `http(s)`. |
|
||||
| BytePlus (1.0) | Identyfikator dostawcy `byteplus`. Modele: `seedance-1-0-pro-250528` (domyślny), `seedance-1-0-pro-t2v-250528`, `seedance-1-0-pro-fast-251015`, `seedance-1-0-lite-t2v-250428`, `seedance-1-0-lite-i2v-250428`. Modele T2V (`*-t2v-*`) nie przyjmują wejść obrazów; modele I2V i ogólne modele `*-pro-*` obsługują pojedynczy obraz referencyjny (pierwszą klatkę). Przekaż obraz pozycyjnie albo ustaw `role: "first_frame"`. Identyfikatory modeli T2V są automatycznie przełączane na odpowiadający wariant I2V, gdy podany jest obraz. Obsługiwane klucze `providerOptions`: `seed` (number), `draft` (boolean, wymusza 480p), `camera_fixed` (boolean). |
|
||||
| BytePlus Seedance 1.5 | Wymaga Plugin `[@openclaw/byteplus-modelark](https://www.npmjs.com/package/@openclaw/byteplus-modelark)`. Identyfikator dostawcy `byteplus-seedance15`. Model: `seedance-1-5-pro-251215`. Używa ujednoliconego API `content[]`. Obsługuje maksymalnie 2 obrazy wejściowe (first_frame + last_frame). Wszystkie wejścia muszą być zdalnymi adresami URL `https://`. Ustaw `role: "first_frame"` / `"last_frame"` dla każdego obrazu albo przekaż obrazy pozycyjnie. `aspectRatio: "adaptive"` automatycznie wykrywa proporcje z obrazu wejściowego. `audio: true` mapuje się na `generate_audio`. `providerOptions.seed` (number) jest przekazywane dalej. |
|
||||
| BytePlus Seedance 2.0 | Wymaga Plugin `[@openclaw/byteplus-modelark](https://www.npmjs.com/package/@openclaw/byteplus-modelark)`. Identyfikator dostawcy `byteplus-seedance2`. Modele: `dreamina-seedance-2-0-260128`, `dreamina-seedance-2-0-fast-260128`. Używa ujednoliconego API `content[]`. Obsługuje do 9 obrazów referencyjnych, 3 filmów referencyjnych i 3 dźwięków referencyjnych. Wszystkie wejścia muszą być zdalnymi adresami URL `https://`. Ustaw `role` dla każdego zasobu — obsługiwane wartości: `"first_frame"`, `"last_frame"`, `"reference_image"`, `"reference_video"`, `"reference_audio"`. `aspectRatio: "adaptive"` automatycznie wykrywa proporcje z obrazu wejściowego. `audio: true` mapuje się na `generate_audio`. `providerOptions.seed` (number) jest przekazywane dalej. |
|
||||
| ComfyUI | Lokalne lub chmurowe wykonanie sterowane przez workflow. Obsługuje text-to-video i image-to-video przez skonfigurowany graf. |
|
||||
| fal | Używa przepływu opartego na kolejce dla długotrwałych zadań. Tylko pojedynczy obraz referencyjny. |
|
||||
| Google | Używa Gemini/Veo. Obsługuje jeden obraz lub jeden film referencyjny. |
|
||||
| MiniMax | Tylko pojedynczy obraz referencyjny. |
|
||||
| OpenAI | Przekazywane dalej jest tylko nadpisanie `size`. Inne nadpisania stylu (`aspectRatio`, `resolution`, `audio`, `watermark`) są ignorowane z ostrzeżeniem. |
|
||||
| Qwen | Ten sam backend DashScope co Alibaba. Wejścia referencyjne muszą być zdalnymi adresami URL `http(s)`; pliki lokalne są odrzucane z góry. |
|
||||
| Runway | Obsługuje pliki lokalne przez URI danych. Video-to-video wymaga `runway/gen4_aleph`. Uruchomienia tylko tekstowe udostępniają proporcje `16:9` i `9:16`. |
|
||||
| Together | Tylko pojedynczy obraz referencyjny. |
|
||||
| Vydra | Używa bezpośrednio `https://www.vydra.ai/api/v1`, aby uniknąć przekierowań usuwających uwierzytelnienie. `veo3` jest dołączony wyłącznie jako text-to-video; `kling` wymaga zdalnego URL obrazu. |
|
||||
| xAI | Obsługuje text-to-video, image-to-video oraz zdalne przepływy edycji/rozszerzania wideo. |
|
||||
|
||||
## Tryby możliwości dostawców
|
||||
|
||||
Wspólny kontrakt generowania filmów pozwala teraz dostawcom deklarować możliwości
|
||||
specyficzne dla trybu zamiast tylko płaskich limitów zbiorczych. Nowe implementacje
|
||||
Wspólny kontrakt generowania wideo pozwala teraz dostawcom deklarować możliwości
|
||||
specyficzne dla trybu zamiast wyłącznie płaskich zagregowanych limitów. Nowe implementacje
|
||||
dostawców powinny preferować jawne bloki trybów:
|
||||
|
||||
```typescript
|
||||
@ -302,15 +301,15 @@ capabilities: {
|
||||
}
|
||||
```
|
||||
|
||||
Płaskie pola zbiorcze, takie jak `maxInputImages` i `maxInputVideos`, nie
|
||||
wystarczają do reklamowania obsługi trybów transformacji. Dostawcy powinni jawnie deklarować
|
||||
Płaskie pola zagregowane, takie jak `maxInputImages` i `maxInputVideos`, nie
|
||||
wystarczają do ogłoszenia obsługi trybów transformacji. Dostawcy powinni jawnie deklarować
|
||||
`generate`, `imageToVideo` i `videoToVideo`, aby testy live,
|
||||
testy kontraktowe oraz wspólne narzędzie `video_generate` mogły deterministycznie
|
||||
testy kontraktowe i współdzielone narzędzie `video_generate` mogły deterministycznie
|
||||
walidować obsługę trybów.
|
||||
|
||||
## Testy live
|
||||
|
||||
Zakres testów live typu opt-in dla wspólnych dołączonych dostawców:
|
||||
Pokrycie live opt-in dla współdzielonych dołączonych dostawców:
|
||||
|
||||
```bash
|
||||
OPENCLAW_LIVE_TEST=1 pnpm test:live -- extensions/video-generation-providers.live.test.ts
|
||||
@ -323,13 +322,26 @@ pnpm test:live:media video
|
||||
```
|
||||
|
||||
Ten plik live ładuje brakujące zmienne środowiskowe dostawców z `~/.profile`, domyślnie preferuje
|
||||
klucze API z live/env przed zapisanymi profilami uwierzytelniania i uruchamia
|
||||
zadeklarowane tryby, które może bezpiecznie przetestować z lokalnymi mediami:
|
||||
klucze API live/env przed zapisanymi profilami uwierzytelniania i domyślnie uruchamia
|
||||
bezpieczny dla wydań smoke test:
|
||||
|
||||
- `generate` dla każdego dostawcy w teście poza FAL
|
||||
- jednosekundowy prompt z homarem
|
||||
- limit operacji dla każdego dostawcy z `OPENCLAW_LIVE_VIDEO_GENERATION_TIMEOUT_MS`
|
||||
(domyślnie `180000`)
|
||||
|
||||
FAL jest opt-in, ponieważ opóźnienie kolejki po stronie dostawcy może zdominować czas wydania:
|
||||
|
||||
```bash
|
||||
pnpm test:live:media video --video-providers fal
|
||||
```
|
||||
|
||||
Ustaw `OPENCLAW_LIVE_VIDEO_GENERATION_FULL_MODES=1`, aby uruchamiać także zadeklarowane tryby transformacji,
|
||||
które wspólny test może bezpiecznie wykonywać z użyciem lokalnych mediów:
|
||||
|
||||
- `generate` dla każdego dostawcy w zestawie
|
||||
- `imageToVideo`, gdy `capabilities.imageToVideo.enabled`
|
||||
- `videoToVideo`, gdy `capabilities.videoToVideo.enabled` i dostawca/model
|
||||
akceptuje lokalne wejście wideo oparte na buforze we wspólnym zestawie
|
||||
- `videoToVideo`, gdy `capabilities.videoToVideo.enabled` oraz dostawca/model
|
||||
akceptuje lokalne wejście wideo oparte na buforze we wspólnym teście
|
||||
|
||||
Obecnie wspólna ścieżka live `videoToVideo` obejmuje:
|
||||
|
||||
@ -337,7 +349,7 @@ Obecnie wspólna ścieżka live `videoToVideo` obejmuje:
|
||||
|
||||
## Konfiguracja
|
||||
|
||||
Ustaw domyślny model generowania filmów w konfiguracji OpenClaw:
|
||||
Ustaw domyślny model generowania wideo w konfiguracji OpenClaw:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -361,7 +373,7 @@ openclaw config set agents.defaults.videoGenerationModel.primary "qwen/wan2.6-t2
|
||||
## Powiązane
|
||||
|
||||
- [Przegląd narzędzi](/pl/tools)
|
||||
- [Zadania w tle](/pl/automation/tasks) -- śledzenie zadań dla asynchronicznego generowania filmów
|
||||
- [Zadania w tle](/pl/automation/tasks) -- śledzenie zadań dla asynchronicznego generowania wideo
|
||||
- [Alibaba Model Studio](/pl/providers/alibaba)
|
||||
- [BytePlus](/pl/concepts/model-providers#byteplus-international)
|
||||
- [ComfyUI](/pl/providers/comfy)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user