chore(i18n): refresh pl translations
This commit is contained in:
parent
cf0de77e79
commit
93aa12d496
117
docs/pl/ci.md
117
docs/pl/ci.md
@ -1,100 +1,107 @@
|
||||
---
|
||||
read_when:
|
||||
- Musisz zrozumieć, dlaczego zadanie CI uruchomiło się lub nie uruchomiło.
|
||||
- Debugujesz nieudane kontrole GitHub Actions.
|
||||
- Diagnozujesz nieudane kontrole GitHub Actions.
|
||||
summary: Graf zadań CI, bramki zakresu i lokalne odpowiedniki poleceń
|
||||
title: Potok CI
|
||||
x-i18n:
|
||||
generated_at: "2026-04-23T13:58:11Z"
|
||||
generated_at: "2026-04-23T14:55:04Z"
|
||||
model: gpt-5.4
|
||||
provider: openai
|
||||
source_hash: c5a8ea0d8e428826169b0e6aced1caeb993106fe79904002125ace86b48cae1f
|
||||
source_hash: e9a03440ae28a15167fc08d9c66bb1fd719ddfa1517aaecb119c80f2ad826c0d
|
||||
source_path: ci.md
|
||||
workflow: 15
|
||||
---
|
||||
|
||||
# Potok CI
|
||||
|
||||
CI uruchamia się przy każdym pushu do `main` oraz dla każdego pull requesta. Wykorzystuje inteligentne zawężanie zakresu, aby pomijać kosztowne zadania, gdy zmieniły się tylko niepowiązane obszary.
|
||||
CI uruchamia się przy każdym wypchnięciu do `main` i przy każdym pull requeście. Używa inteligentnego zawężania zakresu, aby pomijać kosztowne zadania, gdy zmieniły się tylko niepowiązane obszary.
|
||||
|
||||
QA Lab ma dedykowane ścieżki CI poza głównym workflow z inteligentnym zawężaniem zakresu. Workflow `Parity gate` uruchamia się dla pasujących zmian w PR oraz ręcznie; buduje prywatne środowisko uruchomieniowe QA i porównuje agentowe pakiety mock GPT-5.4 oraz Opus 4.6. Workflow `QA-Lab - All Lanes` uruchamia się co noc na `main` oraz ręcznie; rozdziela równolegle zadania mock parity gate, żywą ścieżkę Matrix i żywą ścieżkę Telegram. Zadania live używają środowiska `qa-live-shared`, a ścieżka Telegram używa dzierżaw Convex. `OpenClaw Release Checks` uruchamia również te same ścieżki QA Lab przed zatwierdzeniem wydania.
|
||||
QA Lab ma dedykowane ścieżki CI poza głównym workflow z inteligentnym zawężaniem zakresu. Workflow
|
||||
`Parity gate` uruchamia się przy pasujących zmianach w PR oraz ręcznie; buduje
|
||||
prywatne środowisko uruchomieniowe QA i porównuje agentowe pakiety mock GPT-5.4 i Opus 4.6. Workflow `QA-Lab - All Lanes` uruchamia się nocą na `main` oraz
|
||||
ręcznie; rozdziela równolegle mock parity gate, aktywną ścieżkę Matrix i aktywną
|
||||
ścieżkę Telegram. Zadania aktywne używają środowiska `qa-live-shared`,
|
||||
a ścieżka Telegram używa dzierżaw Convex. `OpenClaw Release
|
||||
Checks` uruchamia również te same ścieżki QA Lab przed zatwierdzeniem wydania.
|
||||
|
||||
## Przegląd zadań
|
||||
|
||||
| Zadanie | Cel | Kiedy się uruchamia |
|
||||
| -------------------------------- | -------------------------------------------------------------------------------------------- | ----------------------------------- |
|
||||
| `preflight` | Wykrywa zmiany tylko w dokumentacji, zmienione zakresy, zmienione rozszerzenia i buduje manifest CI | Zawsze dla pushy i PR, które nie są szkicami |
|
||||
| `security-scm-fast` | Wykrywanie kluczy prywatnych i audyt workflow przez `zizmor` | Zawsze dla pushy i PR, które nie są szkicami |
|
||||
| `security-dependency-audit` | Audyt produkcyjnego lockfile bez zależności względem ostrzeżeń npm | Zawsze dla pushy i PR, które nie są szkicami |
|
||||
| `security-fast` | Wymagany agregat dla szybkich zadań bezpieczeństwa | Zawsze dla pushy i PR, które nie są szkicami |
|
||||
| `build-artifacts` | Buduje `dist/`, Control UI, sprawdzenia zbudowanych artefaktów i współdzielone artefakty podrzędne | Zmiany istotne dla Node |
|
||||
| `checks-fast-core` | Szybkie ścieżki poprawności na Linuxie, takie jak sprawdzenia bundled/plugin-contract/protocol | Zmiany istotne dla Node |
|
||||
| `checks-fast-contracts-channels` | Szardowane sprawdzenia kontraktów kanałów ze stabilnym zagregowanym wynikiem | Zmiany istotne dla Node |
|
||||
| `checks-node-extensions` | Pełne szardy testów bundled pluginów w całym zestawie rozszerzeń | Zmiany istotne dla Node |
|
||||
| `checks-node-core-test` | Szardy testów rdzenia Node, z wyłączeniem ścieżek kanałów, bundled, kontraktów i rozszerzeń | Zmiany istotne dla Node |
|
||||
| `extension-fast` | Ukierunkowane testy tylko dla zmienionych bundled pluginów | Pull requesty ze zmianami w rozszerzeniach |
|
||||
| `check` | Szardowany odpowiednik głównej lokalnej bramki: typy prod, lint, guardy, typy testów i ścisły smoke | Zmiany istotne dla Node |
|
||||
| `check-additional` | Guardy architektury, granic, powierzchni rozszerzeń, granic pakietów i szardy gateway-watch | Zmiany istotne dla Node |
|
||||
| `build-smoke` | Testy smoke zbudowanego CLI i smoke zużycia pamięci przy starcie | Zmiany istotne dla Node |
|
||||
| `checks` | Weryfikator dla testów kanałów opartych na zbudowanych artefaktach oraz zgodności z Node 22 tylko dla pushy | Zmiany istotne dla Node |
|
||||
| `check-docs` | Formatowanie dokumentacji, lint i sprawdzanie uszkodzonych linków | Zmieniona dokumentacja |
|
||||
| `skills-python` | Ruff + pytest dla Skills opartych na Pythonie | Zmiany istotne dla Python Skills |
|
||||
| `checks-windows` | Ścieżki testowe specyficzne dla Windows | Zmiany istotne dla Windows |
|
||||
| `macos-node` | Ścieżka testów TypeScript na macOS z użyciem współdzielonych zbudowanych artefaktów | Zmiany istotne dla macOS |
|
||||
| `macos-swift` | Lint, build i testy Swift dla aplikacji macOS | Zmiany istotne dla macOS |
|
||||
| `android` | Testy jednostkowe Androida dla obu wariantów oraz jeden build debug APK | Zmiany istotne dla Androida |
|
||||
| Zadanie | Cel | Kiedy się uruchamia |
|
||||
| -------------------------------- | -------------------------------------------------------------------------------------------- | --------------------------------- |
|
||||
| `preflight` | Wykrywa zmiany tylko w dokumentacji, zmienione zakresy, zmienione rozszerzenia i buduje manifest CI | Zawsze przy niedraftowych pushach i PR |
|
||||
| `security-scm-fast` | Wykrywanie kluczy prywatnych i audyt workflow przez `zizmor` | Zawsze przy niedraftowych pushach i PR |
|
||||
| `security-dependency-audit` | Niezależny od zależności audyt produkcyjnego lockfile względem ostrzeżeń npm | Zawsze przy niedraftowych pushach i PR |
|
||||
| `security-fast` | Wymagany agregat dla szybkich zadań bezpieczeństwa | Zawsze przy niedraftowych pushach i PR |
|
||||
| `build-artifacts` | Buduje `dist/`, Control UI, kontrole zbudowanych artefaktów i artefakty wielokrotnego użytku dla zadań podrzędnych | Zmiany istotne dla Node |
|
||||
| `checks-fast-core` | Szybkie linuksowe ścieżki poprawności, takie jak kontrole bundled/plugin-contract/protocol | Zmiany istotne dla Node |
|
||||
| `checks-fast-contracts-channels` | Szardowane kontrole kontraktów kanałów ze stabilnym zagregowanym wynikiem kontroli | Zmiany istotne dla Node |
|
||||
| `checks-node-extensions` | Pełne szardy testów bundled-plugin w całym zestawie rozszerzeń | Zmiany istotne dla Node |
|
||||
| `checks-node-core-test` | Szardy testów rdzenia Node, z wyłączeniem kanałów, bundled, kontraktów i ścieżek rozszerzeń | Zmiany istotne dla Node |
|
||||
| `extension-fast` | Ukierunkowane testy tylko dla zmienionych bundled plugins | Pull requesty ze zmianami w rozszerzeniach |
|
||||
| `check` | Szardowany odpowiednik głównej lokalnej bramki: typy prod, lint, guardy, typy testowe i ścisły smoke | Zmiany istotne dla Node |
|
||||
| `check-additional` | Architektura, granice, guardy powierzchni rozszerzeń, granice pakietów i szardy gateway-watch | Zmiany istotne dla Node |
|
||||
| `build-smoke` | Smoke testy zbudowanego CLI i smoke pamięci przy uruchamianiu | Zmiany istotne dla Node |
|
||||
| `checks` | Weryfikator dla testów kanałów na zbudowanych artefaktach oraz zgodności tylko dla pushy z Node 22 | Zmiany istotne dla Node |
|
||||
| `check-docs` | Formatowanie dokumentacji, lint i kontrole niedziałających linków | Zmieniona dokumentacja |
|
||||
| `skills-python` | Ruff + pytest dla Skills opartych na Pythonie | Zmiany istotne dla Python Skills |
|
||||
| `checks-windows` | Ścieżki testowe specyficzne dla Windows | Zmiany istotne dla Windows |
|
||||
| `macos-node` | Ścieżka testów TypeScript na macOS z użyciem współdzielonych zbudowanych artefaktów | Zmiany istotne dla macOS |
|
||||
| `macos-swift` | Lint, build i testy Swift dla aplikacji macOS | Zmiany istotne dla macOS |
|
||||
| `android` | Testy jednostkowe Androida dla obu wariantów oraz jeden build debug APK | Zmiany istotne dla Androida |
|
||||
|
||||
## Kolejność Fail-Fast
|
||||
## Kolejność fail-fast
|
||||
|
||||
Zadania są uporządkowane tak, aby tanie sprawdzenia kończyły się niepowodzeniem przed uruchomieniem drogich zadań:
|
||||
Zadania są uporządkowane tak, aby tanie kontrole kończyły się niepowodzeniem przed uruchomieniem droższych:
|
||||
|
||||
1. `preflight` decyduje, które ścieżki w ogóle istnieją. Logika `docs-scope` i `changed-scope` to kroki wewnątrz tego zadania, a nie osobne zadania.
|
||||
2. `security-scm-fast`, `security-dependency-audit`, `security-fast`, `check`, `check-additional`, `check-docs` i `skills-python` kończą się szybko bez czekania na cięższe zadania artefaktów i macierzy platform.
|
||||
3. `build-artifacts` nakłada się na szybkie ścieżki Linux, aby odbiorcy podrzędni mogli zacząć, gdy tylko współdzielony build będzie gotowy.
|
||||
4. Cięższe ścieżki platformowe i uruchomieniowe rozgałęziają się potem: `checks-fast-core`, `checks-fast-contracts-channels`, `checks-node-extensions`, `checks-node-core-test`, tylko-PR `extension-fast`, `checks`, `checks-windows`, `macos-node`, `macos-swift` i `android`.
|
||||
2. `security-scm-fast`, `security-dependency-audit`, `security-fast`, `check`, `check-additional`, `check-docs` i `skills-python` szybko kończą się niepowodzeniem bez czekania na cięższe zadania artefaktów i macierzy platform.
|
||||
3. `build-artifacts` działa równolegle z szybkimi linuksowymi ścieżkami, aby zadania podrzędne mogły ruszyć, gdy tylko współdzielony build będzie gotowy.
|
||||
4. Cięższe ścieżki platformowe i runtime rozdzielają się później: `checks-fast-core`, `checks-fast-contracts-channels`, `checks-node-extensions`, `checks-node-core-test`, tylko-PR `extension-fast`, `checks`, `checks-windows`, `macos-node`, `macos-swift` i `android`.
|
||||
|
||||
Logika zakresu znajduje się w `scripts/ci-changed-scope.mjs` i jest pokryta testami jednostkowymi w `src/scripts/ci-changed-scope.test.ts`.
|
||||
Edycje workflow CI walidują graf Node CI oraz linting workflow, ale same nie wymuszają natywnych buildów Windows, Androida ani macOS; te ścieżki platformowe nadal są zawężane do zmian w kodzie danej platformy.
|
||||
Sprawdzenia Windows Node są zawężane do wrapperów procesów/ścieżek specyficznych dla Windows, helperów uruchomieniowych npm/pnpm/UI, konfiguracji menedżera pakietów oraz powierzchni workflow CI, które uruchamiają tę ścieżkę; niepowiązane zmiany w kodzie źródłowym, pluginach, install-smoke oraz zmiany tylko w testach pozostają na ścieżkach Linux Node, aby nie rezerwować 16-vCPU workera Windows dla pokrycia, które i tak zapewniają normalne szardy testów.
|
||||
Osobny workflow `install-smoke` ponownie używa tego samego skryptu zakresu przez własne zadanie `preflight`. Oblicza `run_install_smoke` na podstawie węższego sygnału changed-smoke, więc smoke Docker/install uruchamia się dla zmian związanych z instalacją, pakowaniem, kontenerami, produkcyjnymi zmianami bundled extension oraz powierzchniami rdzenia plugin/channel/gateway/Plugin SDK, które wykorzystują zadania Docker smoke. Edycje tylko testów i tylko dokumentacji nie rezerwują workerów Dockera. Jego smoke dla pakietu QR wymusza ponowne uruchomienie warstwy Docker `pnpm install`, zachowując jednocześnie cache BuildKit pnpm store, więc nadal testuje instalację bez ponownego pobierania zależności przy każdym uruchomieniu. Jego gateway-network e2e ponownie używa obrazu runtime zbudowanego wcześniej w zadaniu, więc dodaje rzeczywiste pokrycie WebSocket między kontenerami bez dokładania kolejnego buildu Dockera. Lokalnie `test:docker:all` wstępnie buduje jeden współdzielony obraz live-test i jeden współdzielony obraz built-app z `scripts/e2e/Dockerfile`, a następnie uruchamia równolegle ścieżki smoke live/E2E z `OPENCLAW_SKIP_DOCKER_BUILD=1`; domyślną współbieżność 4 można dostroić przez `OPENCLAW_DOCKER_ALL_PARALLELISM`. Lokalny agregat domyślnie przestaje planować nowe ścieżki z puli po pierwszym błędzie, a każda ścieżka ma limit czasu 120 minut, który można nadpisać przez `OPENCLAW_DOCKER_ALL_LANE_TIMEOUT_MS`. Ścieżki wrażliwe na start lub providera uruchamiają się wyłącznie po puli równoległej. Workflow wielokrotnego użytku live/E2E odzwierciedla wzorzec współdzielonego obrazu, budując i wypychając jeden obraz Docker E2E z tagiem SHA do GHCR przed macierzą Dockera, a następnie uruchamiając macierz z `OPENCLAW_SKIP_DOCKER_BUILD=1`. Zaplanowany workflow live/E2E uruchamia codziennie pełny zestaw Dockera dla ścieżki wydaniowej. Testy Docker dla QR i instalatora zachowują własne Dockerfile skoncentrowane na instalacji. Osobne zadanie `docker-e2e-fast` uruchamia ograniczony profil bundled pluginów w Dockerze z limitem czasu polecenia 120 sekund: naprawa zależności setup-entry oraz izolacja syntetycznych awarii bundled-loader. Pełna macierz aktualizacji bundled i kanałów pozostaje ręczna/pełny zestaw, ponieważ wykonuje powtarzane rzeczywiste przebiegi npm update i napraw przez doctor.
|
||||
Logika zakresu znajduje się w `scripts/ci-changed-scope.mjs` i jest objęta testami jednostkowymi w `src/scripts/ci-changed-scope.test.ts`.
|
||||
Edycje workflow CI weryfikują graf Node CI oraz lint workflow, ale same w sobie nie wymuszają natywnych buildów Windows, Android ani macOS; te ścieżki platformowe nadal są zawężone do zmian w kodzie danej platformy.
|
||||
Kontrole Node dla Windows są zawężone do wrapperów procesów/ścieżek specyficznych dla Windows, helperów uruchamiania npm/pnpm/UI, konfiguracji menedżera pakietów i powierzchni workflow CI, które uruchamiają tę ścieżkę; niepowiązane zmiany w kodzie źródłowym, plugin, install-smoke i samych testach pozostają w linuksowych ścieżkach Node, aby nie rezerwować 16-vCPU workera Windows dla pokrycia, które jest już wykonywane przez zwykłe szardy testowe.
|
||||
Osobny workflow `install-smoke` używa ponownie tego samego skryptu zakresu przez własne zadanie `preflight`. Wylicza `run_install_smoke` z węższego sygnału changed-smoke, więc smoke Docker/install uruchamia się dla zmian związanych z instalacją, pakowaniem, kontenerami, zmian produkcyjnych bundled extension oraz głównych powierzchni plugin/channel/gateway/Plugin SDK, które wykonują zadania smoke Dockera. Edycje tylko testów i tylko dokumentacji nie rezerwują workerów Docker. Jego smoke pakietu QR wymusza ponowne uruchomienie warstwy Docker `pnpm install`, zachowując cache magazynu pnpm BuildKit, więc nadal wykonuje instalację bez ponownego pobierania zależności przy każdym uruchomieniu. Jego gateway-network e2e ponownie używa obrazu runtime zbudowanego wcześniej w zadaniu, więc dodaje rzeczywiste pokrycie WebSocket między kontenerami bez dodawania kolejnego builda Docker. Lokalne `test:docker:all` buduje wcześniej jeden współdzielony obraz live-test i jeden współdzielony obraz built-app z `scripts/e2e/Dockerfile`, a następnie uruchamia równolegle ścieżki smoke live/E2E z `OPENCLAW_SKIP_DOCKER_BUILD=1`; domyślną współbieżność 4 można dostroić przez `OPENCLAW_DOCKER_ALL_PARALLELISM`. Lokalny agregat domyślnie przestaje planować nowe ścieżki z puli po pierwszym niepowodzeniu, a każda ścieżka ma limit czasu 120 minut, który można nadpisać przez `OPENCLAW_DOCKER_ALL_LANE_TIMEOUT_MS`. Ścieżki wrażliwe na uruchamianie lub dostawców działają wyłącznie po zakończeniu puli równoległej. Workflow live/E2E wielokrotnego użytku odwzorowuje wzorzec współdzielonego obrazu, budując i wypychając jeden obraz Docker E2E GHCR oznaczony SHA przed macierzą Docker, a następnie uruchamiając macierz z `OPENCLAW_SKIP_DOCKER_BUILD=1`. Zaplanowany workflow live/E2E uruchamia codziennie pełny zestaw Docker dla ścieżki wydaniowej. Testy Docker QR i instalatora zachowują własne Dockerfile skoncentrowane na instalacji. Osobne zadanie `docker-e2e-fast` uruchamia ograniczony profil Docker bundled-plugin z limitem czasu polecenia 120 sekund: naprawa zależności setup-entry oraz izolacja syntetycznej awarii bundled-loader. Pełna macierz aktualizacji bundled i kanałów pozostaje ręczna/pełnego zestawu, ponieważ wykonuje powtarzane rzeczywiste przebiegi npm update i naprawy doctor.
|
||||
|
||||
Lokalna logika zmienionych ścieżek znajduje się w `scripts/changed-lanes.mjs` i jest wykonywana przez `scripts/check-changed.mjs`. Ta lokalna bramka jest bardziej rygorystyczna względem granic architektury niż szeroki zakres platform CI: produkcyjne zmiany w rdzeniu uruchamiają typecheck prod rdzenia oraz testy rdzenia, zmiany tylko w testach rdzenia uruchamiają tylko typecheck/testy testowe rdzenia, produkcyjne zmiany rozszerzeń uruchamiają typecheck prod rozszerzeń oraz testy rozszerzeń, a zmiany tylko w testach rozszerzeń uruchamiają tylko typecheck/testy testowe rozszerzeń. Publiczne zmiany Plugin SDK lub plugin-contract rozszerzają walidację na rozszerzenia, ponieważ rozszerzenia zależą od tych kontraktów rdzenia. Podbicia wersji ograniczone wyłącznie do metadanych wydania uruchamiają ukierunkowane sprawdzenia wersji/konfiguracji/zależności głównych. Nieznane zmiany w root/config w trybie bezpiecznym uruchamiają wszystkie ścieżki.
|
||||
Lokalna logika zmienionych ścieżek znajduje się w `scripts/changed-lanes.mjs` i jest wykonywana przez `scripts/check-changed.mjs`. Ta lokalna bramka jest bardziej rygorystyczna wobec granic architektury niż szeroki zakres platform CI: zmiany produkcyjne rdzenia uruchamiają typecheck prod rdzenia oraz testy rdzenia, zmiany tylko w testach rdzenia uruchamiają tylko typecheck/testy testowe rdzenia, zmiany produkcyjne rozszerzeń uruchamiają typecheck prod rozszerzeń oraz testy rozszerzeń, a zmiany tylko w testach rozszerzeń uruchamiają tylko typecheck/testy testowe rozszerzeń. Zmiany w publicznym Plugin SDK lub plugin-contract rozszerzają walidację na rozszerzenia, ponieważ rozszerzenia zależą od tych kontraktów rdzenia. Zmiany wyłącznie w metadanych wydania, takie jak podbicie wersji, uruchamiają ukierunkowane kontrole wersji/konfiguracji/zależności głównych. Nieznane zmiany w root/config w trybie bezpiecznym uruchamiają wszystkie ścieżki.
|
||||
|
||||
Przy pushach macierz `checks` dodaje ścieżkę `compat-node22` tylko dla pushy. Dla pull requestów ta ścieżka jest pomijana, a macierz pozostaje skupiona na zwykłych ścieżkach testów/kanałów.
|
||||
Przy pushach macierz `checks` dodaje ścieżkę `compat-node22`, uruchamianą tylko przy pushach. Przy pull requestach ta ścieżka jest pomijana, a macierz pozostaje skupiona na zwykłych ścieżkach testów/kanałów.
|
||||
|
||||
Najwolniejsze rodziny testów Node są dzielone lub równoważone tak, aby każde zadanie pozostawało małe: kontrakty kanałów dzielą pokrycie rejestru i rdzenia na łącznie sześć ważonych szardów, testy bundled pluginów są równoważone na sześciu workerach rozszerzeń, auto-reply działa jako trzech zrównoważonych workerów zamiast sześciu małych workerów, a agentowe konfiguracje gateway/plugin są rozkładane na istniejące zadania agentic Node tylko ze źródeł zamiast czekać na zbudowane artefakty. Szerokie testy przeglądarki, QA, mediów i różnych pluginów używają swoich dedykowanych konfiguracji Vitest zamiast współdzielonej ogólnej konfiguracji pluginów. Szeroka ścieżka agents używa współdzielonego planisty równoległości plików Vitest, ponieważ dominuje w niej import/schedulowanie, a nie pojedynczy wolny plik testowy. `runtime-config` działa z szardem infra core-runtime, aby współdzielony szard runtime nie był właścicielem końcowego ogona. `check-additional` utrzymuje razem prace compile/canary dla granic pakietów i oddziela architekturę topologii runtime od pokrycia gateway watch; szard boundary guard uruchamia swoje małe niezależne guardy współbieżnie w ramach jednego zadania. Gateway watch, testy kanałów i szard granicy wsparcia rdzenia uruchamiają się współbieżnie w `build-artifacts` po zbudowaniu `dist/` i `dist-runtime/`, zachowując swoje stare nazwy sprawdzeń jako lekkie zadania weryfikujące, a jednocześnie unikając dwóch dodatkowych workerów Blacksmith i drugiej kolejki odbiorców artefaktów.
|
||||
Android CI uruchamia zarówno `testPlayDebugUnitTest`, jak i `testThirdPartyDebugUnitTest`, a następnie buduje debug APK dla Play. Wariant third-party nie ma osobnego zestawu źródeł ani manifestu; jego ścieżka testów jednostkowych nadal kompiluje ten wariant z flagami SMS/call-log w BuildConfig, jednocześnie unikając duplikowania zadania pakowania debug APK przy każdym pushu istotnym dla Androida.
|
||||
`extension-fast` jest tylko dla PR, ponieważ przebiegi push i tak wykonują pełne szardy bundled pluginów. Dzięki temu recenzje dostają szybką informację zwrotną dla zmienionych pluginów bez rezerwowania dodatkowego workera Blacksmith na `main` dla pokrycia już obecnego w `checks-node-extensions`.
|
||||
Najwolniejsze rodziny testów Node są dzielone lub równoważone, aby każde zadanie pozostawało małe bez nadmiernego rezerwowania runnerów: kontrakty kanałów działają jako trzy ważone szardy, testy bundled plugin są równoważone między sześcioma workerami rozszerzeń, małe ścieżki jednostkowe rdzenia są łączone w pary, auto-reply działa na trzech zrównoważonych workerach zamiast sześciu małych, a konfiguracje agentic gateway/plugin są rozłożone między istniejące zadania agentic Node tylko ze źródeł zamiast czekać na zbudowane artefakty. Szerokie testy przeglądarkowe, QA, mediów i różnych plugin używają swoich dedykowanych konfiguracji Vitest zamiast współdzielonego ogólnego zestawu pluginów. Szeroka ścieżka agents używa współdzielonego planisty równoległego plików Vitest, ponieważ dominuje w niej import/szeregowanie, a nie pojedynczy wolny plik testowy. `runtime-config` działa z szardem infra core-runtime, aby współdzielony szard runtime nie pozostawał właścicielem końcówki. `check-additional` trzyma razem kompilację/canary granic pakietów i oddziela architekturę topologii runtime od pokrycia gateway watch; szard boundary guard uruchamia swoje małe niezależne guardy współbieżnie w ramach jednego zadania. Gateway watch, testy kanałów i szard granicy wsparcia rdzenia działają współbieżnie wewnątrz `build-artifacts` po tym, jak `dist/` i `dist-runtime/` są już zbudowane, zachowując swoje stare nazwy kontroli jako lekkie zadania weryfikujące, a jednocześnie unikając dwóch dodatkowych workerów Blacksmith i drugiej kolejki konsumentów artefaktów.
|
||||
Android CI uruchamia zarówno `testPlayDebugUnitTest`, jak i `testThirdPartyDebugUnitTest`, a następnie buduje Play debug APK. Wariant third-party nie ma osobnego zestawu źródeł ani manifestu; jego ścieżka testów jednostkowych nadal kompiluje ten wariant z flagami BuildConfig dla SMS/call-log, jednocześnie unikając zduplikowanego zadania pakowania debug APK przy każdym pushu istotnym dla Androida.
|
||||
`extension-fast` jest tylko dla PR, ponieważ uruchomienia push już wykonują pełne szardy bundled plugin. Dzięki temu recenzje dostają szybki feedback dla zmienionych pluginów bez rezerwowania dodatkowego workera Blacksmith na `main` dla pokrycia już obecnego w `checks-node-extensions`.
|
||||
|
||||
GitHub może oznaczać zastąpione zadania jako `cancelled`, gdy nowszy push trafi do tego samego PR lub refa `main`. Traktuj to jako szum CI, chyba że najnowszy przebieg dla tego samego refa również kończy się błędem. Zagregowane sprawdzenia szardów używają `!cancelled() && always()`, więc nadal zgłaszają zwykłe błędy szardów, ale nie ustawiają się w kolejce po tym, jak cały workflow został już zastąpiony.
|
||||
Klucz współbieżności CI jest wersjonowany (`CI-v7-*`), aby zombie po stronie GitHub w starej grupie kolejki nie mogło bezterminowo blokować nowszych przebiegów na main.
|
||||
GitHub może oznaczać zastąpione zadania jako `cancelled`, gdy nowszy push trafi na ten sam ref PR lub `main`. Traktuj to jako szum CI, chyba że najnowsze uruchomienie dla tego samego ref również kończy się niepowodzeniem. Zagregowane kontrole shardów używają `!cancelled() && always()`, dzięki czemu nadal raportują zwykłe awarie shardów, ale nie ustawiają się w kolejce po tym, jak cały workflow został już zastąpiony.
|
||||
Klucz współbieżności CI jest wersjonowany (`CI-v7-*`), aby zombie po stronie GitHub w starej grupie kolejki nie mogło bezterminowo blokować nowszych uruchomień na main.
|
||||
|
||||
## Runery
|
||||
## Runnery
|
||||
|
||||
| Runner | Zadania |
|
||||
| -------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `ubuntu-24.04` | `preflight`, szybkie zadania bezpieczeństwa i agregaty (`security-scm-fast`, `security-dependency-audit`, `security-fast`), szybkie sprawdzenia protocol/contract/bundled, szardowane sprawdzenia kontraktów kanałów, szardy `check` z wyjątkiem lint, szardy i agregaty `check-additional`, zagregowane weryfikatory testów Node, sprawdzenia dokumentacji, Python Skills, workflow-sanity, labeler, auto-response; preflight dla install-smoke również używa Ubuntu hostowanego przez GitHub, aby macierz Blacksmith mogła wcześniej trafić do kolejki |
|
||||
| `blacksmith-8vcpu-ubuntu-2404` | `build-artifacts`, build-smoke, szardy testów Linux Node, szardy testów bundled pluginów, `android` |
|
||||
| `blacksmith-16vcpu-ubuntu-2404` | `check-lint`, które pozostaje na tyle wrażliwe na CPU, że 8 vCPU kosztowało więcej, niż oszczędzało; buildy Docker dla install-smoke, gdzie czas oczekiwania w kolejce dla 32 vCPU kosztował więcej, niż oszczędzał |
|
||||
| -------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
||||
| `ubuntu-24.04` | `preflight`, szybkie zadania bezpieczeństwa i agregaty (`security-scm-fast`, `security-dependency-audit`, `security-fast`), szybkie kontrole protocol/contract/bundled, szardowane kontrole kontraktów kanałów, szardy `check` z wyjątkiem lint, szardy i agregaty `check-additional`, zagregowane weryfikatory testów Node, kontrole dokumentacji, Python Skills, workflow-sanity, labeler, auto-response; preflight install-smoke również używa Ubuntu hostowanego przez GitHub, aby macierz Blacksmith mogła wcześniej trafić do kolejki |
|
||||
| `blacksmith-8vcpu-ubuntu-2404` | `build-artifacts`, build-smoke, szardy testów Linux Node, szardy testów bundled plugin, `android` |
|
||||
| `blacksmith-16vcpu-ubuntu-2404` | `check-lint`, które nadal jest na tyle wrażliwe na CPU, że 8 vCPU kosztowało więcej, niż oszczędzało; buildy Docker dla install-smoke, gdzie czas oczekiwania w kolejce dla 32 vCPU kosztował więcej, niż oszczędzał |
|
||||
| `blacksmith-16vcpu-windows-2025` | `checks-windows` |
|
||||
| `blacksmith-6vcpu-macos-latest` | `macos-node` na `openclaw/openclaw`; forki przechodzą awaryjnie na `macos-latest` |
|
||||
| `blacksmith-12vcpu-macos-latest` | `macos-swift` na `openclaw/openclaw`; forki przechodzą awaryjnie na `macos-latest` |
|
||||
| `blacksmith-6vcpu-macos-latest` | `macos-node` w `openclaw/openclaw`; forki wracają do `macos-latest` |
|
||||
| `blacksmith-12vcpu-macos-latest` | `macos-swift` w `openclaw/openclaw`; forki wracają do `macos-latest` |
|
||||
|
||||
## Lokalne odpowiedniki
|
||||
|
||||
```bash
|
||||
pnpm changed:lanes # sprawdź lokalny klasyfikator zmienionych ścieżek dla origin/main...HEAD
|
||||
pnpm check:changed # inteligentna lokalna bramka: zmienione typecheck/lint/testy według ścieżki granicznej
|
||||
pnpm check # szybka lokalna bramka: produkcyjne tsgo + szardowany lint + równoległe szybkie guardy
|
||||
pnpm check # szybka lokalna bramka: produkcyjny tsgo + szardowany lint + równoległe szybkie guardy
|
||||
pnpm check:test-types
|
||||
pnpm check:timed # ta sama bramka z czasami dla każdego etapu
|
||||
pnpm check:timed # ta sama bramka z pomiarami czasu dla każdego etapu
|
||||
pnpm build:strict-smoke
|
||||
pnpm check:architecture
|
||||
pnpm test:gateway:watch-regression
|
||||
pnpm test # testy vitest
|
||||
pnpm test:channels
|
||||
pnpm test:contracts:channels
|
||||
pnpm check:docs # formatowanie dokumentacji + lint + uszkodzone linki
|
||||
pnpm build # zbuduj dist, gdy ścieżki CI artifact/build-smoke mają znaczenie
|
||||
node scripts/ci-run-timings.mjs <run-id> # podsumuj czas wykonania, czas w kolejce i najwolniejsze zadania
|
||||
pnpm check:docs # formatowanie dokumentacji + lint + niedziałające linki
|
||||
pnpm build # zbuduj dist, gdy mają znaczenie ścieżki CI artifact/build-smoke
|
||||
node scripts/ci-run-timings.mjs <run-id> # podsumuj czas całkowity, czas w kolejce i najwolniejsze zadania
|
||||
node scripts/ci-run-timings.mjs --recent 10 # porównaj ostatnie udane uruchomienia CI na main
|
||||
```
|
||||
|
||||
@ -1,14 +1,14 @@
|
||||
---
|
||||
read_when:
|
||||
- Debugujesz uwierzytelnianie modelu lub wygaśnięcie OAuth
|
||||
- Dokumentujesz uwierzytelnianie lub przechowywanie poświadczeń
|
||||
summary: 'Uwierzytelnianie modeli: OAuth, klucze API, ponowne użycie Claude CLI i setup-token Anthropic'
|
||||
- Debugowanie uwierzytelniania modelu lub wygaśnięcia OAuth
|
||||
- Dokumentowanie uwierzytelniania lub przechowywania poświadczeń
|
||||
summary: 'Uwierzytelnianie modeli: OAuth, klucze API, ponowne użycie Claude CLI oraz token konfiguracji Anthropic'
|
||||
title: Uwierzytelnianie
|
||||
x-i18n:
|
||||
generated_at: "2026-04-07T09:44:52Z"
|
||||
generated_at: "2026-04-23T14:55:01Z"
|
||||
model: gpt-5.4
|
||||
provider: openai
|
||||
source_hash: 9db0ad9eccd7e3e3ca328adaad260bc4288a8ccdbe2dc0c24d9fd049b7ab9231
|
||||
source_hash: 37a7c20872b915d1d079f0578c933e43cbdb97eca1c60d8c4e6e5137ca83f8b2
|
||||
source_path: gateway/authentication.md
|
||||
workflow: 15
|
||||
---
|
||||
@ -16,35 +16,31 @@ x-i18n:
|
||||
# Uwierzytelnianie (dostawcy modeli)
|
||||
|
||||
<Note>
|
||||
Ta strona opisuje uwierzytelnianie **dostawców modeli** (klucze API, OAuth, ponowne użycie Claude CLI i setup-token Anthropic). W przypadku uwierzytelniania **połączenia z gateway** (token, hasło, trusted-proxy) zobacz [Configuration](/pl/gateway/configuration) i [Trusted Proxy Auth](/pl/gateway/trusted-proxy-auth).
|
||||
Ta strona dotyczy uwierzytelniania **dostawcy modeli** (klucze API, OAuth, ponowne użycie Claude CLI oraz token konfiguracji Anthropic). Informacje o uwierzytelnianiu **połączenia z Gateway** (token, hasło, trusted-proxy) znajdziesz w [Configuration](/pl/gateway/configuration) oraz [Trusted Proxy Auth](/pl/gateway/trusted-proxy-auth).
|
||||
</Note>
|
||||
|
||||
OpenClaw obsługuje OAuth i klucze API dla dostawców modeli. Dla stale działających
|
||||
hostów gateway klucze API są zwykle najbardziej przewidywalną opcją. Obsługiwane są
|
||||
również przepływy subskrypcyjne/OAuth, gdy pasują do modelu konta u danego dostawcy.
|
||||
OpenClaw obsługuje OAuth i klucze API dla dostawców modeli. W przypadku hostów Gateway działających stale klucze API są zwykle najbardziej przewidywalną opcją. Obsługiwane są również przepływy subskrypcji/OAuth, gdy pasują do modelu konta u dostawcy.
|
||||
|
||||
Zobacz [/concepts/oauth](/pl/concepts/oauth), aby poznać pełny przepływ OAuth i układ
|
||||
przechowywania.
|
||||
W przypadku uwierzytelniania opartego na SecretRef (dostawcy `env`/`file`/`exec`) zobacz [Secrets Management](/pl/gateway/secrets).
|
||||
Informacje o regułach kwalifikowalności poświadczeń i kodów powodów używanych przez `models status --probe` znajdziesz w
|
||||
Pełny przebieg OAuth i układ przechowywania opisano w [/concepts/oauth](/pl/concepts/oauth).
|
||||
Informacje o uwierzytelnianiu opartym na SecretRef (dostawcy `env`/`file`/`exec`) znajdziesz w [Secrets Management](/pl/gateway/secrets).
|
||||
Informacje o zasadach kwalifikowalności poświadczeń i kodach przyczyn używanych przez `models status --probe` znajdziesz w
|
||||
[Auth Credential Semantics](/pl/auth-credential-semantics).
|
||||
|
||||
## Zalecana konfiguracja (klucz API, dowolny dostawca)
|
||||
|
||||
Jeśli uruchamiasz długo działający gateway, zacznij od klucza API dla wybranego
|
||||
Jeśli uruchamiasz długo działający Gateway, zacznij od klucza API dla wybranego
|
||||
dostawcy.
|
||||
W przypadku Anthropic uwierzytelnianie kluczem API nadal jest najbardziej przewidywalną konfiguracją serwerową,
|
||||
ale OpenClaw obsługuje też ponowne użycie lokalnego logowania Claude CLI.
|
||||
W przypadku Anthropic uwierzytelnianie kluczem API nadal jest najbardziej przewidywalną konfiguracją serwerową, ale OpenClaw obsługuje też ponowne użycie lokalnego logowania Claude CLI.
|
||||
|
||||
1. Utwórz klucz API w konsoli dostawcy.
|
||||
2. Umieść go na **hoście gateway** (maszynie uruchamiającej `openclaw gateway`).
|
||||
2. Umieść go na **hoście Gateway** (maszynie uruchamiającej `openclaw gateway`).
|
||||
|
||||
```bash
|
||||
export <PROVIDER>_API_KEY="..."
|
||||
openclaw models status
|
||||
```
|
||||
|
||||
3. Jeśli Gateway działa pod systemd/launchd, lepiej umieścić klucz w
|
||||
3. Jeśli Gateway działa pod systemd/launchd, najlepiej umieścić klucz w
|
||||
`~/.openclaw/.env`, aby demon mógł go odczytać:
|
||||
|
||||
```bash
|
||||
@ -53,50 +49,62 @@ cat >> ~/.openclaw/.env <<'EOF'
|
||||
EOF
|
||||
```
|
||||
|
||||
Następnie uruchom ponownie demona (lub zrestartuj proces Gateway) i sprawdź ponownie:
|
||||
Następnie uruchom ponownie demona (lub proces Gateway) i sprawdź ponownie:
|
||||
|
||||
```bash
|
||||
openclaw models status
|
||||
openclaw doctor
|
||||
```
|
||||
|
||||
Jeśli nie chcesz samodzielnie zarządzać zmiennymi env, onboarding może zapisać
|
||||
Jeśli wolisz nie zarządzać samodzielnie zmiennymi środowiskowymi, onboarding może zapisać
|
||||
klucze API do użycia przez demona: `openclaw onboard`.
|
||||
|
||||
Szczegóły o dziedziczeniu env (`env.shellEnv`,
|
||||
Szczegóły dotyczące dziedziczenia środowiska (`env.shellEnv`,
|
||||
`~/.openclaw/.env`, systemd/launchd) znajdziesz w [Help](/pl/help).
|
||||
|
||||
## Anthropic: zgodność Claude CLI i tokenów
|
||||
|
||||
Uwierzytelnianie setup-token Anthropic jest nadal dostępne w OpenClaw jako obsługiwana
|
||||
ścieżka tokenu. Personel Anthropic poinformował nas później, że użycie Claude CLI w stylu OpenClaw
|
||||
jest znowu dozwolone, więc OpenClaw traktuje ponowne użycie Claude CLI i użycie `claude -p` jako
|
||||
zaakceptowane dla tej integracji, chyba że Anthropic opublikuje nowe zasady. Gdy
|
||||
ponowne użycie Claude CLI jest dostępne na hoście, jest to obecnie preferowana ścieżka.
|
||||
Uwierzytelnianie tokenem konfiguracji Anthropic jest nadal dostępne w OpenClaw jako obsługiwana ścieżka tokenu. Zespół Anthropic poinformował nas później, że użycie Claude CLI w stylu OpenClaw jest ponownie dozwolone, więc OpenClaw traktuje ponowne użycie Claude CLI oraz użycie `claude -p` jako usankcjonowane dla tej integracji, chyba że Anthropic opublikuje nową politykę. Gdy ponowne użycie Claude CLI jest dostępne na hoście, jest to obecnie preferowana ścieżka.
|
||||
|
||||
Dla długo działających hostów gateway klucz API Anthropic nadal jest najbardziej przewidywalną
|
||||
konfiguracją. Jeśli chcesz ponownie użyć istniejącego logowania Claude na tym samym hoście,
|
||||
użyj ścieżki Anthropic Claude CLI w onboardingu/konfiguracji.
|
||||
W przypadku długo działających hostów Gateway klucz API Anthropic nadal jest najbardziej przewidywalną konfiguracją. Jeśli chcesz ponownie użyć istniejącego logowania Claude na tym samym hoście, użyj ścieżki Anthropic Claude CLI w onboarding/configure.
|
||||
|
||||
Ręczne wprowadzanie tokenu (dowolny dostawca; zapisuje `auth-profiles.json` i aktualizuje config):
|
||||
Zalecana konfiguracja hosta do ponownego użycia Claude CLI:
|
||||
|
||||
```bash
|
||||
# Run on the gateway host
|
||||
claude auth login
|
||||
claude auth status --text
|
||||
openclaw models auth login --provider anthropic --method cli --set-default
|
||||
```
|
||||
|
||||
Jest to konfiguracja dwuetapowa:
|
||||
|
||||
1. Zaloguj samo Claude Code do Anthropic na hoście Gateway.
|
||||
2. Powiedz OpenClaw, aby przełączył wybór modelu Anthropic na lokalny backend `claude-cli`
|
||||
i zapisał odpowiadający mu profil uwierzytelniania OpenClaw.
|
||||
|
||||
Jeśli `claude` nie jest w `PATH`, najpierw zainstaluj Claude Code albo ustaw
|
||||
`agents.defaults.cliBackends.claude-cli.command` na rzeczywistą ścieżkę do pliku binarnego.
|
||||
|
||||
Ręczne wklejenie tokenu (dowolny dostawca; zapisuje `auth-profiles.json` + aktualizuje konfigurację):
|
||||
|
||||
```bash
|
||||
openclaw models auth paste-token --provider openrouter
|
||||
```
|
||||
|
||||
Obsługiwane są też odwołania do profili auth dla statycznych poświadczeń:
|
||||
Odwołania do profili uwierzytelniania są też obsługiwane dla statycznych poświadczeń:
|
||||
|
||||
- poświadczenia `api_key` mogą używać `keyRef: { source, provider, id }`
|
||||
- poświadczenia `token` mogą używać `tokenRef: { source, provider, id }`
|
||||
- profile w trybie OAuth nie obsługują poświadczeń SecretRef; jeśli `auth.profiles.<id>.mode` jest ustawione na `"oauth"`, wejście `keyRef`/`tokenRef` oparte na SecretRef dla tego profilu zostanie odrzucone.
|
||||
- Profile w trybie OAuth nie obsługują poświadczeń SecretRef; jeśli dla `auth.profiles.<id>.mode` ustawiono `"oauth"`, dane wejściowe `keyRef`/`tokenRef` oparte na SecretRef dla tego profilu są odrzucane.
|
||||
|
||||
Sprawdzenie przyjazne dla automatyzacji (kod wyjścia `1` przy wygaśnięciu/braku, `2` przy zbliżającym się wygaśnięciu):
|
||||
Kontrola przyjazna automatyzacji (kod wyjścia `1`, gdy brak/wygaśnięcie, `2`, gdy wkrótce wygaśnie):
|
||||
|
||||
```bash
|
||||
openclaw models status --check
|
||||
```
|
||||
|
||||
Aktywne sondy auth:
|
||||
Aktywne sondy uwierzytelniania:
|
||||
|
||||
```bash
|
||||
openclaw models status --probe
|
||||
@ -104,64 +112,63 @@ openclaw models status --probe
|
||||
|
||||
Uwagi:
|
||||
|
||||
- Wiersze sond mogą pochodzić z profili auth, poświadczeń env lub `models.json`.
|
||||
- Wiersze sondy mogą pochodzić z profili uwierzytelniania, poświadczeń środowiskowych lub `models.json`.
|
||||
- Jeśli jawne `auth.order.<provider>` pomija zapisany profil, sonda zgłasza
|
||||
`excluded_by_auth_order` dla tego profilu zamiast próbować go użyć.
|
||||
- Jeśli auth istnieje, ale OpenClaw nie może ustalić modelu kandydującego, który można sondować, dla
|
||||
tego dostawcy, sonda zgłasza `status: no_model`.
|
||||
- Ograniczenia czasowe po rate limicie mogą być przypisane do konkretnego modelu. Profil w stanie cooldown dla jednego
|
||||
modelu nadal może nadawać się do użycia z modelami pokrewnymi u tego samego dostawcy.
|
||||
dla tego profilu `excluded_by_auth_order` zamiast próbować go użyć.
|
||||
- Jeśli uwierzytelnianie istnieje, ale OpenClaw nie może ustalić kandydata modelu nadającego się do sondowania dla tego dostawcy, sonda zgłasza `status: no_model`.
|
||||
- Okresy ochłodzenia limitów szybkości mogą być przypisane do modelu. Profil objęty okresem ochłodzenia dla jednego
|
||||
modelu może nadal nadawać się do użycia dla pokrewnego modelu u tego samego dostawcy.
|
||||
|
||||
Opcjonalne skrypty operacyjne (systemd/Termux) opisano tutaj:
|
||||
[Skrypty monitorowania auth](/pl/help/scripts#auth-monitoring-scripts)
|
||||
Opcjonalne skrypty operacyjne (systemd/Termux) są opisane tutaj:
|
||||
[Skrypty monitorowania uwierzytelniania](/pl/help/scripts#auth-monitoring-scripts)
|
||||
|
||||
## Uwaga dotycząca Anthropic
|
||||
|
||||
Backend Anthropic `claude-cli` jest ponownie obsługiwany.
|
||||
|
||||
- Personel Anthropic poinformował nas, że ta ścieżka integracji OpenClaw jest ponownie dozwolona.
|
||||
- Dlatego OpenClaw traktuje ponowne użycie Claude CLI i użycie `claude -p` jako zaakceptowane
|
||||
dla uruchomień opartych na Anthropic, chyba że Anthropic opublikuje nowe zasady.
|
||||
- Klucze API Anthropic pozostają najbardziej przewidywalnym wyborem dla długo działających hostów gateway
|
||||
i jawnej kontroli rozliczeń po stronie serwera.
|
||||
- Zespół Anthropic poinformował nas, że ta ścieżka integracji OpenClaw jest znów dozwolona.
|
||||
- Dlatego OpenClaw traktuje ponowne użycie Claude CLI i użycie `claude -p` jako usankcjonowane
|
||||
dla uruchomień opartych na Anthropic, chyba że Anthropic opublikuje nową politykę.
|
||||
- Klucze API Anthropic pozostają najbardziej przewidywalnym wyborem dla długo działających hostów Gateway
|
||||
oraz dla jawnej kontroli rozliczeń po stronie serwera.
|
||||
|
||||
## Sprawdzanie stanu auth modelu
|
||||
## Sprawdzanie stanu uwierzytelniania modelu
|
||||
|
||||
```bash
|
||||
openclaw models status
|
||||
openclaw doctor
|
||||
```
|
||||
|
||||
## Zachowanie przy rotacji kluczy API (gateway)
|
||||
## Zachowanie podczas rotacji kluczy API (Gateway)
|
||||
|
||||
Niektórzy dostawcy obsługują ponawianie żądania z alternatywnymi kluczami, gdy wywołanie API
|
||||
napotka rate limit po stronie dostawcy.
|
||||
trafi na limit szybkości po stronie dostawcy.
|
||||
|
||||
- Kolejność priorytetów:
|
||||
- `OPENCLAW_LIVE_<PROVIDER>_KEY` (pojedyncze nadpisanie)
|
||||
- `<PROVIDER>_API_KEYS`
|
||||
- `<PROVIDER>_API_KEY`
|
||||
- `<PROVIDER>_API_KEY_*`
|
||||
- Dostawcy Google uwzględniają też `GOOGLE_API_KEY` jako dodatkowy fallback.
|
||||
- Ta sama lista kluczy jest deduplikowana przed użyciem.
|
||||
- OpenClaw ponawia próbę z następnym kluczem tylko przy błędach rate limitu (na przykład
|
||||
- Dostawcy Google uwzględniają też `GOOGLE_API_KEY` jako dodatkowy mechanizm awaryjny.
|
||||
- Ta sama lista kluczy jest przed użyciem deduplikowana.
|
||||
- OpenClaw ponawia próbę z następnym kluczem tylko przy błędach limitu szybkości (na przykład
|
||||
`429`, `rate_limit`, `quota`, `resource exhausted`, `Too many concurrent
|
||||
requests`, `ThrottlingException`, `concurrency limit reached` lub
|
||||
`workers_ai ... quota limit exceeded`).
|
||||
- Błędy inne niż rate limit nie są ponawiane z alternatywnymi kluczami.
|
||||
- Błędy inne niż limit szybkości nie są ponawiane z alternatywnymi kluczami.
|
||||
- Jeśli wszystkie klucze zawiodą, zwracany jest końcowy błąd z ostatniej próby.
|
||||
|
||||
## Sterowanie tym, które poświadczenie jest używane
|
||||
## Sterowanie używanym poświadczeniem
|
||||
|
||||
### Dla sesji (polecenie czatu)
|
||||
### Dla sesji (komenda czatu)
|
||||
|
||||
Użyj `/model <alias-or-id>@<profileId>`, aby przypiąć określone poświadczenie dostawcy dla bieżącej sesji (przykładowe identyfikatory profili: `anthropic:default`, `anthropic:work`).
|
||||
Użyj `/model <alias-or-id>@<profileId>`, aby przypiąć konkretne poświadczenie dostawcy dla bieżącej sesji (przykładowe identyfikatory profili: `anthropic:default`, `anthropic:work`).
|
||||
|
||||
Użyj `/model` (lub `/model list`) dla zwartego selektora; użyj `/model status` dla pełnego widoku (kandydaci + następny profil auth oraz szczegóły endpointu dostawcy, jeśli są skonfigurowane).
|
||||
Użyj `/model` (lub `/model list`) dla zwartego selektora; użyj `/model status` dla pełnego widoku (kandydaci + następny profil uwierzytelniania oraz szczegóły endpointu dostawcy, jeśli są skonfigurowane).
|
||||
|
||||
### Dla agenta (nadpisanie CLI)
|
||||
|
||||
Ustaw jawne nadpisanie kolejności profili auth dla agenta (zapisywane w `auth-state.json` tego agenta):
|
||||
Ustaw jawne nadpisanie kolejności profili uwierzytelniania dla agenta (zapisywane w `auth-state.json` tego agenta):
|
||||
|
||||
```bash
|
||||
openclaw models auth order get --provider anthropic
|
||||
@ -169,10 +176,10 @@ openclaw models auth order set --provider anthropic anthropic:default
|
||||
openclaw models auth order clear --provider anthropic
|
||||
```
|
||||
|
||||
Użyj `--agent <id>`, aby wskazać konkretnego agenta; pomiń ten parametr, aby użyć skonfigurowanego agenta domyślnego.
|
||||
Użyj `--agent <id>`, aby wskazać konkretnego agenta; pomiń tę opcję, aby użyć skonfigurowanego domyślnego agenta.
|
||||
Podczas debugowania problemów z kolejnością `openclaw models status --probe` pokazuje pominięte
|
||||
zapisane profile jako `excluded_by_auth_order` zamiast pomijać je po cichu.
|
||||
Podczas debugowania problemów z cooldown pamiętaj, że ograniczenia czasowe po rate limicie mogą być powiązane
|
||||
Podczas debugowania problemów z okresem ochłodzenia pamiętaj, że okresy ochłodzenia limitów szybkości mogą być powiązane
|
||||
z jednym identyfikatorem modelu, a nie z całym profilem dostawcy.
|
||||
|
||||
## Rozwiązywanie problemów
|
||||
@ -180,14 +187,14 @@ z jednym identyfikatorem modelu, a nie z całym profilem dostawcy.
|
||||
### „Nie znaleziono poświadczeń”
|
||||
|
||||
Jeśli brakuje profilu Anthropic, skonfiguruj klucz API Anthropic na
|
||||
**hoście gateway** albo ustaw ścieżkę setup-token Anthropic, a następnie sprawdź ponownie:
|
||||
**hoście Gateway** albo skonfiguruj ścieżkę tokenu konfiguracji Anthropic, a następnie sprawdź ponownie:
|
||||
|
||||
```bash
|
||||
openclaw models status
|
||||
```
|
||||
|
||||
### Token wygasa/wygasł
|
||||
### Token wkrótce wygasa/wygasł
|
||||
|
||||
Uruchom `openclaw models status`, aby potwierdzić, który profil wygasa. Jeśli
|
||||
profil tokenu Anthropic jest nieobecny lub wygasł, odśwież tę konfigurację przez
|
||||
setup-token albo przejdź na klucz API Anthropic.
|
||||
Uruchom `openclaw models status`, aby potwierdzić, który profil wkrótce wygaśnie. Jeśli profil tokenu
|
||||
Anthropic nie istnieje lub wygasł, odśwież tę konfigurację przez
|
||||
token konfiguracji albo przejdź na klucz API Anthropic.
|
||||
|
||||
@ -1,47 +1,47 @@
|
||||
---
|
||||
read_when:
|
||||
- Chcesz mieć niezawodne rozwiązanie awaryjne, gdy providerzy API zawodzą
|
||||
- Używasz Codex CLI lub innych lokalnych CLI AI i chcesz je ponownie wykorzystać
|
||||
- Chcesz zrozumieć most MCP local loopback do dostępu narzędzi dla backendów CLI
|
||||
summary: 'Backendy CLI: lokalne awaryjne przejście do CLI AI z opcjonalnym mostem narzędzi MCP'
|
||||
- Potrzebujesz niezawodnego rozwiązania awaryjnego, gdy dostawcy API zawodzą.
|
||||
- Używasz Codex CLI lub innych lokalnych CLI AI i chcesz używać ich ponownie.
|
||||
- Chcesz zrozumieć most local loopback MCP do dostępu narzędzi backendu CLI.
|
||||
summary: 'Backendy CLI: lokalny awaryjny CLI AI z opcjonalnym mostem narzędzi MCP'
|
||||
title: Backendy CLI
|
||||
x-i18n:
|
||||
generated_at: "2026-04-23T10:00:34Z"
|
||||
generated_at: "2026-04-23T14:55:10Z"
|
||||
model: gpt-5.4
|
||||
provider: openai
|
||||
source_hash: 475923b36e4580d3e4e57014ff2e6b89e9eb52c11b0a0ab1fc8241655b07836e
|
||||
source_hash: ff7458d18b8a5b716930579241177917fd3edffcf7f6e211c7d570cf76519316
|
||||
source_path: gateway/cli-backends.md
|
||||
workflow: 15
|
||||
---
|
||||
|
||||
# Backendy CLI (środowisko awaryjne)
|
||||
# Backendy CLI (awaryjne środowisko uruchomieniowe)
|
||||
|
||||
OpenClaw może uruchamiać **lokalne CLI AI** jako **awaryjne rozwiązanie tylko tekstowe**, gdy providerzy API są niedostępni,
|
||||
objęci ograniczeniami szybkości lub tymczasowo działają nieprawidłowo. To podejście jest celowo zachowawcze:
|
||||
OpenClaw może uruchamiać **lokalne CLI AI** jako **wyłącznie tekstowe rozwiązanie awaryjne**, gdy dostawcy API są niedostępni,
|
||||
objęci limitami szybkości lub tymczasowo działają nieprawidłowo. Jest to celowo zachowawcze podejście:
|
||||
|
||||
- **Narzędzia OpenClaw nie są wstrzykiwane bezpośrednio**, ale backendy z `bundleMcp: true`
|
||||
mogą otrzymywać narzędzia Gateway przez most MCP local loopback.
|
||||
mogą otrzymywać narzędzia gateway przez most local loopback MCP.
|
||||
- **Strumieniowanie JSONL** dla CLI, które je obsługują.
|
||||
- **Sesje są obsługiwane** (dzięki czemu kolejne tury pozostają spójne).
|
||||
- **Sesje są obsługiwane** (dzięki temu kolejne tury pozostają spójne).
|
||||
- **Obrazy mogą być przekazywane dalej**, jeśli CLI akceptuje ścieżki do obrazów.
|
||||
|
||||
To rozwiązanie zostało zaprojektowane jako **siatka bezpieczeństwa**, a nie główna ścieżka. Używaj go, gdy
|
||||
chcesz mieć „zawsze działające” odpowiedzi tekstowe bez polegania na zewnętrznych API.
|
||||
To rozwiązanie zaprojektowano jako **siatkę bezpieczeństwa**, a nie główną ścieżkę. Używaj go, gdy
|
||||
chcesz uzyskać odpowiedzi tekstowe typu „zawsze działa” bez polegania na zewnętrznych API.
|
||||
|
||||
Jeśli chcesz pełnego środowiska harness z kontrolą sesji ACP, zadaniami w tle,
|
||||
wiązaniem wątku / rozmowy oraz trwałymi zewnętrznymi sesjami kodowania, użyj
|
||||
[ACP Agents](/pl/tools/acp-agents). Backendy CLI to nie ACP.
|
||||
Jeśli chcesz mieć pełne środowisko uruchomieniowe harness z kontrolą sesji ACP, zadaniami w tle,
|
||||
powiązaniem wątku/konwersacji i trwałymi zewnętrznymi sesjami kodowania, użyj
|
||||
[agentów ACP](/pl/tools/acp-agents). Backendy CLI nie są ACP.
|
||||
|
||||
## Szybki start dla początkujących
|
||||
|
||||
Możesz używać Codex CLI **bez żadnej konfiguracji** (dołączony plugin OpenAI
|
||||
Możesz używać Codex CLI **bez żadnej konfiguracji** (dołączony Plugin OpenAI
|
||||
rejestruje domyślny backend):
|
||||
|
||||
```bash
|
||||
openclaw agent --message "hi" --model codex-cli/gpt-5.4
|
||||
```
|
||||
|
||||
Jeśli Twój Gateway działa pod launchd/systemd, a PATH jest minimalny, dodaj tylko
|
||||
Jeśli Twój gateway działa pod launchd/systemd i `PATH` jest minimalne, dodaj tylko
|
||||
ścieżkę polecenia:
|
||||
|
||||
```json5
|
||||
@ -58,16 +58,16 @@ Jeśli Twój Gateway działa pod launchd/systemd, a PATH jest minimalny, dodaj t
|
||||
}
|
||||
```
|
||||
|
||||
To wszystko. Nie są potrzebne żadne klucze ani dodatkowa konfiguracja uwierzytelniania poza samym CLI.
|
||||
To wszystko. Żadne klucze ani dodatkowa konfiguracja uwierzytelniania nie są potrzebne poza samym CLI.
|
||||
|
||||
Jeśli używasz dołączonego backendu CLI jako **głównego providera wiadomości** na
|
||||
hoście Gateway, OpenClaw automatycznie wczytuje teraz należący do niego dołączony plugin, gdy Twoja konfiguracja
|
||||
jawnie odwołuje się do tego backendu w model ref lub pod
|
||||
Jeśli używasz dołączonego backendu CLI jako **głównego dostawcy wiadomości** na
|
||||
hoście gateway, OpenClaw teraz automatycznie ładuje należący do niego dołączony Plugin, gdy Twoja konfiguracja
|
||||
jawnie odwołuje się do tego backendu w odwołaniu do modelu albo w
|
||||
`agents.defaults.cliBackends`.
|
||||
|
||||
## Używanie jako rozwiązania awaryjnego
|
||||
|
||||
Dodaj backend CLI do listy awaryjnej, aby był uruchamiany tylko wtedy, gdy modele podstawowe zawiodą:
|
||||
Dodaj backend CLI do listy rozwiązań awaryjnych, aby był uruchamiany tylko wtedy, gdy modele podstawowe zawiodą:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -88,9 +88,9 @@ Dodaj backend CLI do listy awaryjnej, aby był uruchamiany tylko wtedy, gdy mode
|
||||
|
||||
Uwagi:
|
||||
|
||||
- Jeśli używasz `agents.defaults.models` (lista dozwolonych), musisz uwzględnić tam również modele backendu CLI.
|
||||
- Jeśli podstawowy provider zawiedzie (uwierzytelnianie, limity szybkości, timeouty), OpenClaw
|
||||
spróbuje następnie backendu CLI.
|
||||
- Jeśli używasz `agents.defaults.models` (listy dozwolonych), musisz uwzględnić tam również modele backendu CLI.
|
||||
- Jeśli podstawowy dostawca zawiedzie (uwierzytelnianie, limity szybkości, przekroczenia czasu), OpenClaw
|
||||
spróbuje następnie użyć backendu CLI.
|
||||
|
||||
## Przegląd konfiguracji
|
||||
|
||||
@ -100,8 +100,8 @@ Wszystkie backendy CLI znajdują się pod:
|
||||
agents.defaults.cliBackends
|
||||
```
|
||||
|
||||
Każdy wpis jest kluczowany przez **id providera** (np. `codex-cli`, `my-cli`).
|
||||
Id providera staje się lewą stroną model ref:
|
||||
Każdy wpis jest kluczowany przez **id dostawcy** (np. `codex-cli`, `my-cli`).
|
||||
Id dostawcy staje się lewą stroną odwołania do modelu:
|
||||
|
||||
```
|
||||
<provider>/<model>
|
||||
@ -147,69 +147,82 @@ Id providera staje się lewą stroną model ref:
|
||||
|
||||
## Jak to działa
|
||||
|
||||
1. **Wybiera backend** na podstawie prefiksu providera (`codex-cli/...`).
|
||||
2. **Buduje system prompt** przy użyciu tego samego promptu OpenClaw + kontekstu workspace.
|
||||
3. **Wykonuje CLI** z id sesji (jeśli jest obsługiwane), dzięki czemu historia pozostaje spójna.
|
||||
Dołączony backend `claude-cli` utrzymuje proces stdio Claude przy życiu dla każdej
|
||||
1. **Wybiera backend** na podstawie prefiksu dostawcy (`codex-cli/...`).
|
||||
2. **Buduje prompt systemowy** przy użyciu tego samego promptu OpenClaw i kontekstu workspace.
|
||||
3. **Uruchamia CLI** z identyfikatorem sesji (jeśli jest obsługiwany), aby historia pozostała spójna.
|
||||
Dołączony backend `claude-cli` utrzymuje proces Claude stdio aktywny dla każdej
|
||||
sesji OpenClaw i wysyła kolejne tury przez stdin stream-json.
|
||||
4. **Parsuje wyjście** (JSON lub zwykły tekst) i zwraca końcowy tekst.
|
||||
5. **Utrwala id sesji** dla każdego backendu, dzięki czemu kolejne tury używają tej samej sesji CLI.
|
||||
4. **Parsuje dane wyjściowe** (JSON albo zwykły tekst) i zwraca końcowy tekst.
|
||||
5. **Utrwala identyfikatory sesji** dla każdego backendu, aby kolejne tury ponownie używały tej samej sesji CLI.
|
||||
|
||||
<Note>
|
||||
Dołączony backend Anthropic `claude-cli` jest ponownie obsługiwany. Pracownicy Anthropic
|
||||
powiedzieli nam, że użycie Claude CLI w stylu OpenClaw jest znów dozwolone, więc OpenClaw traktuje
|
||||
użycie `claude -p` jako sankcjonowane dla tej integracji, chyba że Anthropic opublikuje
|
||||
użycie `claude -p` jako usankcjonowane dla tej integracji, chyba że Anthropic opublikuje
|
||||
nową politykę.
|
||||
</Note>
|
||||
|
||||
Dołączony backend OpenAI `codex-cli` przekazuje system prompt OpenClaw przez
|
||||
nadpisanie konfiguracji `model_instructions_file` Codex (`-c
|
||||
Dołączony backend OpenAI `codex-cli` przekazuje prompt systemowy OpenClaw przez
|
||||
nadpisanie konfiguracji `model_instructions_file` w Codex (`-c
|
||||
model_instructions_file="..."`). Codex nie udostępnia flagi w stylu Claude
|
||||
`--append-system-prompt`, więc OpenClaw zapisuje złożony prompt do pliku
|
||||
tymczasowego dla każdej nowej sesji Codex CLI.
|
||||
|
||||
Dołączony backend Anthropic `claude-cli` otrzymuje migawkę Skills OpenClaw
|
||||
na dwa sposoby: kompaktowy katalog Skills OpenClaw w dołączanym system prompt oraz
|
||||
tymczasowy plugin Claude Code przekazywany przez `--plugin-dir`. Plugin zawiera
|
||||
tylko Skills kwalifikujące się dla danego agenta / sesji, dzięki czemu natywny resolver Skills Claude Code
|
||||
na dwa sposoby: kompaktowy katalog Skills OpenClaw w dołączonym prompcie systemowym oraz
|
||||
tymczasowy Plugin Claude Code przekazywany przez `--plugin-dir`. Plugin zawiera
|
||||
tylko Skills kwalifikujące się dla tego agenta/sesji, więc natywny mechanizm rozpoznawania Skills Claude Code
|
||||
widzi ten sam przefiltrowany zestaw, który OpenClaw w przeciwnym razie reklamowałby w prompcie.
|
||||
Nadpisania env / kluczy API dla Skills są nadal stosowane przez OpenClaw do środowiska procesu potomnego dla runu.
|
||||
Nadpisania env/kluczy API dla Skills są nadal stosowane przez OpenClaw do środowiska procesu potomnego na czas uruchomienia.
|
||||
|
||||
Zanim OpenClaw będzie mógł użyć dołączonego backendu `claude-cli`, samo Claude Code
|
||||
musi być już zalogowane na tym samym hoście:
|
||||
|
||||
```bash
|
||||
claude auth login
|
||||
claude auth status --text
|
||||
openclaw models auth login --provider anthropic --method cli --set-default
|
||||
```
|
||||
|
||||
Używaj `agents.defaults.cliBackends.claude-cli.command` tylko wtedy, gdy plik binarny `claude`
|
||||
nie jest już dostępny w `PATH`.
|
||||
|
||||
## Sesje
|
||||
|
||||
- Jeśli CLI obsługuje sesje, ustaw `sessionArg` (np. `--session-id`) lub
|
||||
`sessionArgs` (placeholder `{sessionId}`), gdy id trzeba wstawić
|
||||
- Jeśli CLI obsługuje sesje, ustaw `sessionArg` (np. `--session-id`) albo
|
||||
`sessionArgs` (placeholder `{sessionId}`), gdy identyfikator musi zostać wstawiony
|
||||
do wielu flag.
|
||||
- Jeśli CLI używa **podpolecenia resume** z innymi flagami, ustaw
|
||||
- Jeśli CLI używa **podpolecenia wznowienia** z innymi flagami, ustaw
|
||||
`resumeArgs` (zastępuje `args` przy wznawianiu) i opcjonalnie `resumeOutput`
|
||||
(dla wznawiania niebędącego JSON).
|
||||
(dla wznowień innych niż JSON).
|
||||
- `sessionMode`:
|
||||
- `always`: zawsze wysyła id sesji (nowe UUID, jeśli nic nie zapisano).
|
||||
- `existing`: wysyła id sesji tylko wtedy, gdy wcześniej zostało zapisane.
|
||||
- `none`: nigdy nie wysyła id sesji.
|
||||
- `always`: zawsze wysyłaj identyfikator sesji (nowy UUID, jeśli nic nie zapisano).
|
||||
- `existing`: wysyłaj identyfikator sesji tylko wtedy, gdy został wcześniej zapisany.
|
||||
- `none`: nigdy nie wysyłaj identyfikatora sesji.
|
||||
- `claude-cli` domyślnie używa `liveSession: "claude-stdio"`, `output: "jsonl"`
|
||||
i `input: "stdin"`, dzięki czemu kolejne tury używają ponownie aktywnego procesu Claude,
|
||||
dopóki jest aktywny. Ciepłe stdio jest teraz ustawieniem domyślnym, także dla konfiguracji niestandardowych,
|
||||
które pomijają pola transportu. Jeśli Gateway uruchomi się ponownie lub bezczynny proces
|
||||
zakończy działanie, OpenClaw wznowi pracę z zapisanego id sesji Claude. Zapisane id sesji
|
||||
są weryfikowane względem istniejącej czytelnej transkrypcji projektu przed
|
||||
wznowieniem, więc widmowe powiązania są czyszczone z `reason=transcript-missing`
|
||||
zamiast po cichu uruchamiać nową sesję Claude CLI pod `--resume`.
|
||||
- Zapisane sesje CLI to ciągłość należąca do providera. Niejawny codzienny
|
||||
reset sesji ich nie przecina; `/reset` i jawne polityki `session.reset` nadal to robią.
|
||||
i `input: "stdin"`, dzięki czemu kolejne tury ponownie używają aktywnego procesu Claude,
|
||||
gdy jest on aktywny. Ciepłe stdio jest teraz ustawieniem domyślnym, także dla konfiguracji niestandardowych,
|
||||
które pomijają pola transportu. Jeśli Gateway uruchomi się ponownie albo bezczynny proces
|
||||
zakończy działanie, OpenClaw wznowi pracę na podstawie zapisanego identyfikatora sesji Claude. Zapisane identyfikatory sesji
|
||||
są weryfikowane względem istniejącego, czytelnego transkryptu projektu przed
|
||||
wznowieniem, więc fantomowe powiązania są czyszczone z `reason=transcript-missing`,
|
||||
zamiast po cichu rozpoczynać nową sesję Claude CLI pod `--resume`.
|
||||
- Zapisane sesje CLI są ciągłością należącą do dostawcy. Domyślne codzienne
|
||||
resetowanie sesji ich nie przerywa; `/reset` i jawne polityki `session.reset` już tak.
|
||||
|
||||
Uwagi dotyczące serializacji:
|
||||
|
||||
- `serialize: true` utrzymuje kolejność uruchomień w tym samym pasie.
|
||||
- Większość CLI serializuje na jednym pasie providera.
|
||||
- OpenClaw odrzuca ponowne użycie zapisanej sesji CLI, gdy zmienia się wybrana tożsamość uwierzytelniania,
|
||||
w tym zmienione id profilu uwierzytelniania, statyczny klucz API, statyczny token lub tożsamość konta OAuth,
|
||||
gdy CLI ją udostępnia. Rotacja tokenów dostępu i odświeżania OAuth nie przecina zapisanej sesji CLI. Jeśli CLI nie udostępnia
|
||||
stabilnego id konta OAuth, OpenClaw pozwala temu CLI samodzielnie egzekwować uprawnienia wznowienia.
|
||||
- `serialize: true` utrzymuje kolejność uruchomień w tym samym lane.
|
||||
- Większość CLI serializuje pracę w jednym lane dostawcy.
|
||||
- OpenClaw porzuca ponowne użycie zapisanej sesji CLI, gdy zmienia się wybrana tożsamość uwierzytelniania,
|
||||
w tym gdy zmienia się id profilu uwierzytelniania, statyczny klucz API, statyczny token
|
||||
albo tożsamość konta OAuth, jeśli CLI ją udostępnia. Rotacja tokenów dostępu i odświeżania OAuth
|
||||
nie przerywa zapisanej sesji CLI. Jeśli CLI nie udostępnia stabilnego id konta OAuth,
|
||||
OpenClaw pozwala temu CLI samodzielnie egzekwować uprawnienia wznowienia.
|
||||
|
||||
## Obrazy (pass-through)
|
||||
## Obrazy (przekazywanie dalej)
|
||||
|
||||
Jeśli Twoje CLI akceptuje ścieżki do obrazów, ustaw `imageArg`:
|
||||
Jeśli Twój CLI akceptuje ścieżki do obrazów, ustaw `imageArg`:
|
||||
|
||||
```json5
|
||||
imageArg: "--image",
|
||||
@ -217,27 +230,28 @@ imageMode: "repeat"
|
||||
```
|
||||
|
||||
OpenClaw zapisze obrazy base64 do plików tymczasowych. Jeśli ustawiono `imageArg`, te
|
||||
ścieżki są przekazywane jako argumenty CLI. Jeśli `imageArg` nie istnieje, OpenClaw
|
||||
dołącza ścieżki plików do promptu (wstrzyknięcie ścieżki), co wystarcza dla CLI, które automatycznie
|
||||
wczytują pliki lokalne ze zwykłych ścieżek.
|
||||
ścieżki są przekazywane jako argumenty CLI. Jeśli `imageArg` nie jest ustawione, OpenClaw dołącza
|
||||
ścieżki plików do promptu (wstrzykiwanie ścieżek), co wystarcza dla CLI, które automatycznie
|
||||
ładują pliki lokalne ze zwykłych ścieżek.
|
||||
|
||||
## Wejścia / wyjścia
|
||||
|
||||
- `output: "json"` (domyślnie) próbuje sparsować JSON i wyodrębnić tekst + id sesji.
|
||||
- Dla wyjścia JSON Gemini CLI OpenClaw odczytuje tekst odpowiedzi z `response`, a
|
||||
użycie z `stats`, gdy `usage` nie istnieje lub jest puste.
|
||||
- `output: "jsonl"` parsuje strumienie JSONL (na przykład Codex CLI `--json`) i wyodrębnia końcową wiadomość agenta oraz identyfikatory sesji, gdy są obecne.
|
||||
- `output: "json"` (domyślne) próbuje sparsować JSON i wyodrębnić tekst oraz identyfikator sesji.
|
||||
- Dla danych wyjściowych Gemini CLI w formacie JSON OpenClaw odczytuje tekst odpowiedzi z `response` oraz
|
||||
użycie z `stats`, gdy `usage` jest nieobecne lub puste.
|
||||
- `output: "jsonl"` parsuje strumienie JSONL (na przykład Codex CLI `--json`) i wyodrębnia końcową wiadomość agenta oraz identyfikatory sesji,
|
||||
jeśli są obecne.
|
||||
- `output: "text"` traktuje stdout jako końcową odpowiedź.
|
||||
|
||||
Tryby wejścia:
|
||||
|
||||
- `input: "arg"` (domyślnie) przekazuje prompt jako ostatni argument CLI.
|
||||
- `input: "arg"` (domyślne) przekazuje prompt jako ostatni argument CLI.
|
||||
- `input: "stdin"` wysyła prompt przez stdin.
|
||||
- Jeśli prompt jest bardzo długi i ustawiono `maxPromptArgChars`, używane jest stdin.
|
||||
- Jeśli prompt jest bardzo długi i ustawiono `maxPromptArgChars`, używany jest stdin.
|
||||
|
||||
## Ustawienia domyślne (należące do pluginu)
|
||||
## Ustawienia domyślne (należące do Pluginu)
|
||||
|
||||
Dołączony plugin OpenAI rejestruje również domyślne ustawienia dla `codex-cli`:
|
||||
Dołączony Plugin OpenAI rejestruje również domyślne ustawienia dla `codex-cli`:
|
||||
|
||||
- `command: "codex"`
|
||||
- `args: ["exec","--json","--color","never","--sandbox","workspace-write","--skip-git-repo-check"]`
|
||||
@ -248,7 +262,7 @@ Dołączony plugin OpenAI rejestruje również domyślne ustawienia dla `codex-c
|
||||
- `imageArg: "--image"`
|
||||
- `sessionMode: "existing"`
|
||||
|
||||
Dołączony plugin Google rejestruje również domyślne ustawienia dla `google-gemini-cli`:
|
||||
Dołączony Plugin Google rejestruje również domyślne ustawienia dla `google-gemini-cli`:
|
||||
|
||||
- `command: "gemini"`
|
||||
- `args: ["--output-format", "json", "--prompt", "{prompt}"]`
|
||||
@ -260,31 +274,31 @@ Dołączony plugin Google rejestruje również domyślne ustawienia dla `google-
|
||||
- `sessionIdFields: ["session_id", "sessionId"]`
|
||||
|
||||
Wymaganie wstępne: lokalny Gemini CLI musi być zainstalowany i dostępny jako
|
||||
`gemini` w `PATH` (`brew install gemini-cli` lub
|
||||
`gemini` w `PATH` (`brew install gemini-cli` albo
|
||||
`npm install -g @google/gemini-cli`).
|
||||
|
||||
Uwagi dotyczące JSON Gemini CLI:
|
||||
|
||||
- Tekst odpowiedzi jest odczytywany z pola JSON `response`.
|
||||
- Użycie przechodzi awaryjnie do `stats`, gdy `usage` nie istnieje lub jest puste.
|
||||
- Użycie wraca do `stats`, gdy `usage` jest nieobecne lub puste.
|
||||
- `stats.cached` jest normalizowane do OpenClaw `cacheRead`.
|
||||
- Jeśli `stats.input` nie istnieje, OpenClaw wyprowadza tokeny wejściowe z
|
||||
- Jeśli `stats.input` jest nieobecne, OpenClaw wyprowadza tokeny wejściowe z
|
||||
`stats.input_tokens - stats.cached`.
|
||||
|
||||
Nadpisuj tylko wtedy, gdy to potrzebne (najczęściej: bezwzględna ścieżka `command`).
|
||||
Nadpisuj tylko wtedy, gdy to potrzebne (częsty przypadek: bezwzględna ścieżka `command`).
|
||||
|
||||
## Ustawienia domyślne należące do pluginu
|
||||
## Ustawienia domyślne należące do Pluginu
|
||||
|
||||
Ustawienia domyślne backendów CLI są teraz częścią powierzchni pluginu:
|
||||
Domyślne ustawienia backendu CLI są teraz częścią powierzchni Pluginu:
|
||||
|
||||
- Pluginy rejestrują je przez `api.registerCliBackend(...)`.
|
||||
- `id` backendu staje się prefiksem providera w model ref.
|
||||
- Konfiguracja użytkownika w `agents.defaults.cliBackends.<id>` nadal nadpisuje domyślne ustawienia pluginu.
|
||||
- Czyszczenie konfiguracji specyficznej dla backendu pozostaje własnością pluginu dzięki opcjonalnemu
|
||||
- Backend `id` staje się prefiksem dostawcy w odwołaniach do modeli.
|
||||
- Konfiguracja użytkownika w `agents.defaults.cliBackends.<id>` nadal nadpisuje domyślne ustawienia Pluginu.
|
||||
- Czyszczenie konfiguracji specyficznej dla backendu nadal pozostaje po stronie Pluginu dzięki opcjonalnemu
|
||||
hookowi `normalizeConfig`.
|
||||
|
||||
Pluginy, które potrzebują drobnych shimów zgodności promptów / wiadomości, mogą deklarować
|
||||
dwukierunkowe transformacje tekstu bez zastępowania providera ani backendu CLI:
|
||||
Pluginy, które potrzebują drobnych shimów zgodności promptów/wiadomości, mogą deklarować
|
||||
dwukierunkowe transformacje tekstu bez zastępowania dostawcy ani backendu CLI:
|
||||
|
||||
```typescript
|
||||
api.registerTextTransforms({
|
||||
@ -301,45 +315,45 @@ api.registerTextTransforms({
|
||||
});
|
||||
```
|
||||
|
||||
`input` przepisuje system prompt i prompt użytkownika przekazywane do CLI. `output`
|
||||
przepisuje strumieniowane delty asystenta i sparsowany końcowy tekst, zanim OpenClaw obsłuży
|
||||
własne markery sterujące i dostarczanie do kanału.
|
||||
`input` przepisuje prompt systemowy i prompt użytkownika przekazywane do CLI. `output`
|
||||
przepisuje strumieniowane delty asystenta i sparsowany tekst końcowy, zanim OpenClaw obsłuży
|
||||
własne znaczniki sterujące i dostarczenie kanałowe.
|
||||
|
||||
Dla CLI, które emitują JSONL zgodny ze stream-json Claude Code, ustaw
|
||||
Dla CLI, które emitują JSONL zgodny z Claude Code stream-json, ustaw
|
||||
`jsonlDialect: "claude-stream-json"` w konfiguracji tego backendu.
|
||||
|
||||
## Nakładki Bundle MCP
|
||||
## Nakładki MCP dla bundle
|
||||
|
||||
Backendy CLI **nie** otrzymują bezpośrednio wywołań narzędzi OpenClaw, ale backend może
|
||||
włączyć wygenerowaną nakładkę konfiguracji MCP przez `bundleMcp: true`.
|
||||
włączyć generowaną nakładkę konfiguracji MCP przez `bundleMcp: true`.
|
||||
|
||||
Bieżące dołączone zachowanie:
|
||||
Obecne zachowanie dla dołączonych backendów:
|
||||
|
||||
- `claude-cli`: wygenerowany ścisły plik konfiguracji MCP
|
||||
- `codex-cli`: inline nadpisania konfiguracji dla `mcp_servers`
|
||||
- `codex-cli`: wbudowane nadpisania konfiguracji dla `mcp_servers`
|
||||
- `google-gemini-cli`: wygenerowany plik ustawień systemowych Gemini
|
||||
|
||||
Gdy bundle MCP jest włączone, OpenClaw:
|
||||
|
||||
- uruchamia serwer HTTP MCP local loopback, który udostępnia narzędzia Gateway procesowi CLI
|
||||
- uwierzytelnia most tokenem na sesję (`OPENCLAW_MCP_TOKEN`)
|
||||
- uruchamia serwer HTTP MCP local loopback, który udostępnia narzędzia gateway procesowi CLI
|
||||
- uwierzytelnia most przy użyciu tokenu na sesję (`OPENCLAW_MCP_TOKEN`)
|
||||
- ogranicza dostęp do narzędzi do bieżącej sesji, konta i kontekstu kanału
|
||||
- wczytuje włączone serwery bundle-MCP dla bieżącego workspace
|
||||
- scala je z dowolnym istniejącym kształtem konfiguracji / ustawień MCP backendu
|
||||
- przepisuje konfigurację uruchamiania przy użyciu należącego do backendu trybu integracji z rozszerzenia będącego właścicielem
|
||||
- ładuje włączone serwery bundle-MCP dla bieżącego workspace
|
||||
- scala je z dowolnym istniejącym kształtem konfiguracji/ustawień MCP backendu
|
||||
- przepisuje konfigurację uruchomieniową przy użyciu trybu integracji należącego do backendu z rozszerzenia będącego jego właścicielem
|
||||
|
||||
Jeśli żaden serwer MCP nie jest włączony, OpenClaw nadal wstrzykuje ścisłą konfigurację, gdy
|
||||
backend włącza bundle MCP, aby uruchomienia w tle pozostawały izolowane.
|
||||
Jeśli żadne serwery MCP nie są włączone, OpenClaw nadal wstrzykuje ścisłą konfigurację, gdy
|
||||
backend włącza bundle MCP, aby uruchomienia w tle pozostały odizolowane.
|
||||
|
||||
## Ograniczenia
|
||||
|
||||
- **Brak bezpośrednich wywołań narzędzi OpenClaw.** OpenClaw nie wstrzykuje wywołań narzędzi do
|
||||
protokołu backendu CLI. Backendy widzą narzędzia Gateway tylko wtedy, gdy włączą
|
||||
protokołu backendu CLI. Backendy widzą narzędzia gateway tylko wtedy, gdy włączą
|
||||
`bundleMcp: true`.
|
||||
- **Strumieniowanie jest specyficzne dla backendu.** Niektóre backendy strumieniują JSONL; inne buforują
|
||||
aż do zakończenia.
|
||||
- **Ustrukturyzowane wyjścia** zależą od formatu JSON CLI.
|
||||
- **Sesje Codex CLI** są wznawiane przez wyjście tekstowe (bez JSONL), które jest mniej
|
||||
do zakończenia.
|
||||
- **Wyjścia strukturalne** zależą od formatu JSON danego CLI.
|
||||
- **Sesje Codex CLI** są wznawiane przez dane wyjściowe tekstowe (bez JSONL), co jest mniej
|
||||
ustrukturyzowane niż początkowe uruchomienie `--json`. Sesje OpenClaw nadal działają
|
||||
normalnie.
|
||||
|
||||
@ -347,6 +361,6 @@ backend włącza bundle MCP, aby uruchomienia w tle pozostawały izolowane.
|
||||
|
||||
- **Nie znaleziono CLI**: ustaw `command` na pełną ścieżkę.
|
||||
- **Nieprawidłowa nazwa modelu**: użyj `modelAliases`, aby mapować `provider/model` → model CLI.
|
||||
- **Brak ciągłości sesji**: upewnij się, że ustawiono `sessionArg`, a `sessionMode` nie ma
|
||||
wartości `none` (Codex CLI obecnie nie potrafi wznawiać z wyjściem JSON).
|
||||
- **Brak ciągłości sesji**: upewnij się, że `sessionArg` jest ustawione, a `sessionMode` nie ma wartości
|
||||
`none` (Codex CLI obecnie nie potrafi wznawiać z wyjściem JSON).
|
||||
- **Obrazy są ignorowane**: ustaw `imageArg` (i sprawdź, czy CLI obsługuje ścieżki do plików).
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user