Documentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
- Pełny zestaw testowy (zestawy, live, Docker): Testowanie
- Walidacja aktualizacji i pakietu Plugin: Testowanie aktualizacji i plugins
-
pnpm test:force: Zabija każdy pozostający proces Gateway zajmujący domyślny port sterowania, a następnie uruchamia pełny zestaw Vitest z izolowanym portem Gateway, aby testy serwera nie kolidowały z uruchomioną instancją. Użyj tego, gdy wcześniejsze uruchomienie Gateway zostawiło zajęty port 18789. -
pnpm test:coverage: Uruchamia zestaw testów jednostkowych z pokryciem V8 (przezvitest.unit.config.ts). Jest to bramka pokrycia domyślnej ścieżki jednostkowej, a nie pokrycie wszystkich plików w całym repozytorium. Progi wynoszą 70% dla wierszy/funkcji/instrukcji i 55% dla gałęzi. Ponieważcoverage.allma wartość false, a domyślna ścieżka ogranicza uwzględnianie pokrycia do niewymagających szybkiego trybu testów jednostkowych z sąsiednimi plikami źródłowymi, bramka mierzy źródła należące do tej ścieżki zamiast każdego przechodniego importu, który przypadkiem załaduje. -
pnpm test:coverage:changed: Uruchamia pokrycie testów jednostkowych tylko dla plików zmienionych odorigin/main. -
pnpm test:changed: tani, inteligentny przebieg zmienionych testów. Uruchamia precyzyjne cele z bezpośrednich edycji testów, sąsiednie pliki*.test.ts, jawne mapowania źródeł i lokalny graf importów. Szerokie zmiany konfiguracji/pakietów są pomijane, chyba że mapują się na precyzyjne testy. -
OPENCLAW_TEST_CHANGED_BROAD=1 pnpm test:changed: jawny szeroki przebieg zmienionych testów. Użyj go, gdy edycja uprzęży testowej/konfiguracji/pakietu powinna przejść awaryjnie na szersze zachowanie Vitest dla zmienionych testów. -
pnpm changed:lanes: pokazuje ścieżki architektoniczne uruchamiane przez różnicę względemorigin/main. -
pnpm check:changed: uruchamia inteligentną bramkę sprawdzania zmian dla różnicy względemorigin/main. Uruchamia typecheck, lint i polecenia strażnicze dla dotkniętych ścieżek architektonicznych, ale nie uruchamia testów Vitest. Użyjpnpm test:changedalbo jawnegopnpm test <target>jako dowodu testowego. -
pnpm test: kieruje jawne cele plików/katalogów przez zakresowe ścieżki Vitest. Uruchomienia bez celu używają stałych grup shardów i rozwijają się do konfiguracji liści dla lokalnego wykonywania równoległego; grupa pluginów zawsze rozwija się do konfiguracji shardów per Plugin zamiast jednego ogromnego procesu projektu głównego. -
Przebiegi wrappera testów kończą się krótkim podsumowaniem
[test] passed|failed|skipped ... in .... Własny wiersz czasu trwania Vitest pozostaje szczegółem per shard. -
Współdzielony stan testowy OpenClaw: użyj
src/test-utils/openclaw-test-state.tsz Vitest, gdy test potrzebuje izolowanegoHOME,OPENCLAW_STATE_DIR,OPENCLAW_CONFIG_PATH, fikstury konfiguracji, przestrzeni roboczej, katalogu agenta lub magazynu profili uwierzytelniania. -
Pomocniki procesowych E2E: użyj
test/helpers/openclaw-test-instance.ts, gdy procesowy test E2E Vitest potrzebuje działającego Gateway, środowiska CLI, przechwytywania logów i sprzątania w jednym miejscu. -
Pomocniki Docker/Bash E2E: ścieżki, które źródłują
scripts/lib/docker-e2e-image.sh, mogą przekazaćdocker_e2e_test_state_shell_b64 <label> <scenario>do kontenera i zdekodować go za pomocąscripts/lib/openclaw-e2e-instance.sh; skrypty z wieloma katalogami domowymi mogą przekazaćdocker_e2e_test_state_function_b64i wywołaćopenclaw_test_state_create <label> <scenario>w każdym przepływie. Wywołujący niższego poziomu mogą użyćscripts/lib/openclaw-test-state.mjs shell --label <name> --scenario <name>jako fragmentu powłoki w kontenerze albonode scripts/lib/openclaw-test-state.mjs -- create --label <name> --scenario <name> --env-file <path> --jsonjako możliwego do źródłowania pliku środowiska hosta.--przedcreatezapobiega traktowaniu--env-filejako flagi Node przez nowsze środowiska uruchomieniowe Node. Ścieżki Docker/Bash, które uruchamiają Gateway, mogą źródłowaćscripts/lib/openclaw-e2e-instance.shwewnątrz kontenera w celu rozwiązywania entrypointów, startu mockowanego OpenAI, uruchamiania Gateway na pierwszym planie/w tle, sond gotowości, eksportu środowiska stanu, zrzutów logów i sprzątania procesów. -
Pełne uruchomienia, uruchomienia pluginów i shardów z wzorcem include aktualizują lokalne dane czasowe w
.artifacts/vitest-shard-timings.json; późniejsze uruchomienia całej konfiguracji używają tych czasów do równoważenia wolnych i szybkich shardów. Shardy CI z wzorcem include dopisują nazwę sharda do klucza czasów, dzięki czemu czasy filtrowanych shardów pozostają widoczne bez zastępowania danych czasowych całej konfiguracji. UstawOPENCLAW_TEST_PROJECTS_TIMINGS=0, aby zignorować lokalny artefakt czasów. -
Wybrane pliki testowe
plugin-sdkicommandssą teraz kierowane przez dedykowane lekkie ścieżki, które zachowują tylkotest/setup.ts, pozostawiając ciężkie przypadki runtime na ich istniejących ścieżkach. -
Pliki źródłowe z sąsiednimi testami mapują się na ten sąsiedni test, zanim nastąpi przejście awaryjne na szersze globy katalogów. Edycje pomocników w
src/channels/plugins/contracts/test-helpers,src/plugin-sdk/test-helpersisrc/plugins/contractsużywają lokalnego grafu importów, aby uruchamiać importujące testy zamiast szeroko uruchamiać każdy shard, gdy ścieżka zależności jest precyzyjna. -
auto-replydzieli się teraz także na trzy dedykowane konfiguracje (core,top-level,reply), aby uprząż odpowiedzi nie dominowała lżejszych testów najwyższego poziomu dotyczących statusu/tokenów/pomocników. -
Bazowa konfiguracja Vitest domyślnie używa teraz
pool: "threads"iisolate: false, ze współdzielonym nieizolowanym runnerem włączonym w konfiguracjach całego repozytorium. -
pnpm test:channelsuruchamiavitest.channels.config.ts. -
pnpm test:extensionsipnpm test extensionsuruchamiają wszystkie shardy pluginów. Ciężkie pluginy kanałów, Plugin przeglądarkowy i OpenAI działają jako dedykowane shardy; inne grupy pluginów pozostają zgrupowane. Użyjpnpm test extensions/<id>dla jednej ścieżki dołączonego Plugin. -
pnpm test:perf:imports: włącza raportowanie czasu trwania importów Vitest oraz podziału importów, nadal używając zakresowego kierowania ścieżek dla jawnych celów plików/katalogów. -
pnpm test:perf:imports:changed: takie samo profilowanie importów, ale tylko dla plików zmienionych odorigin/main. -
pnpm test:perf:changed:bench -- --ref <git-ref>wykonuje benchmark kierowanej ścieżki trybu zmian względem natywnego uruchomienia projektu głównego dla tej samej zatwierdzonej różnicy git. -
pnpm test:perf:changed:bench -- --worktreewykonuje benchmark bieżącego zestawu zmian w worktree bez wcześniejszego commitowania. -
pnpm test:perf:profile:main: zapisuje profil CPU dla głównego wątku Vitest (.artifacts/vitest-main-profile). -
pnpm test:perf:profile:runner: zapisuje profile CPU i sterty dla runnera jednostkowego (.artifacts/vitest-runner-profile). -
pnpm test:perf:groups --full-suite --allow-failures --output .artifacts/test-perf/baseline-before.json: uruchamia szeregowo każdą liściową konfigurację Vitest pełnego zestawu i zapisuje zgrupowane dane czasu trwania oraz artefakty JSON/log per konfiguracja. Test Performance Agent używa tego jako swojej linii bazowej przed próbą napraw wolnych testów. -
pnpm test:perf:groups:compare .artifacts/test-perf/baseline-before.json .artifacts/test-perf/after-agent.json: porównuje zgrupowane raporty po zmianie ukierunkowanej na wydajność. -
Integracja Gateway: opcjonalnie przez
OPENCLAW_TEST_INCLUDE_GATEWAY=1 pnpm testalbopnpm test:gateway. -
pnpm test:e2e: Uruchamia dymne testy end-to-end Gateway (parowanie wielu instancji WS/HTTP/node). Domyślnie używathreads+isolate: falsez adaptacyjnymi workerami wvitest.e2e.config.ts; dostrój za pomocąOPENCLAW_E2E_WORKERS=<n>i ustawOPENCLAW_E2E_VERBOSE=1dla szczegółowych logów. -
pnpm test:live: Uruchamia testy live providerów (minimax/zai). Wymaga kluczy API orazLIVE=1(albo specyficznego dla providera*_LIVE_TEST=1), aby odblokować pominięte testy. -
pnpm test:docker:all: Buduje współdzielony obraz live-test, pakuje OpenClaw raz jako tarball npm, buduje/ponownie używa surowego obrazu runnera Node/Git oraz obrazu funkcjonalnego, który instaluje ten tarball w/app, a następnie uruchamia dymne ścieżki Docker zOPENCLAW_SKIP_DOCKER_BUILD=1przez ważony harmonogram. Surowy obraz (OPENCLAW_DOCKER_E2E_BARE_IMAGE) jest używany dla ścieżek instalatora/aktualizacji/zależności Plugin; te ścieżki montują wstępnie zbudowany tarball zamiast używać skopiowanych źródeł repozytorium. Obraz funkcjonalny (OPENCLAW_DOCKER_E2E_FUNCTIONAL_IMAGE) jest używany dla zwykłych ścieżek funkcjonalności zbudowanej aplikacji.scripts/package-openclaw-for-docker.mjsjest jedynym lokalnym/CI pakowaczem pakietu i waliduje tarball orazdist/postinstall-inventory.json, zanim Docker go zużyje. Definicje ścieżek Docker znajdują się wscripts/lib/docker-e2e-scenarios.mjs; logika planera znajduje się wscripts/lib/docker-e2e-plan.mjs;scripts/test-docker-all.mjswykonuje wybrany plan.node scripts/test-docker-all.mjs --plan-jsonemituje należący do harmonogramu plan CI dla wybranych ścieżek, rodzajów obrazów, potrzeb pakietu/obrazu live, scenariuszy stanu i sprawdzeń poświadczeń bez budowania ani uruchamiania Docker.OPENCLAW_DOCKER_ALL_PARALLELISM=<n>kontroluje sloty procesów i domyślnie wynosi 10;OPENCLAW_DOCKER_ALL_TAIL_PARALLELISM=<n>kontroluje pulę końcową wrażliwą na providerów i domyślnie wynosi 10. Limity ciężkich ścieżek domyślnie wynosząOPENCLAW_DOCKER_ALL_LIVE_LIMIT=9,OPENCLAW_DOCKER_ALL_NPM_LIMIT=10iOPENCLAW_DOCKER_ALL_SERVICE_LIMIT=7; limity providerów domyślnie dopuszczają jedną ciężką ścieżkę na providera przezOPENCLAW_DOCKER_ALL_LIVE_CLAUDE_LIMIT=4,OPENCLAW_DOCKER_ALL_LIVE_CODEX_LIMIT=4iOPENCLAW_DOCKER_ALL_LIVE_GEMINI_LIMIT=4. UżyjOPENCLAW_DOCKER_ALL_WEIGHT_LIMITalboOPENCLAW_DOCKER_ALL_DOCKER_LIMITdla większych hostów. Jeśli jedna ścieżka przekracza efektywny limit wagi lub zasobów na hoście o niskiej równoległości, nadal może wystartować z pustej puli i będzie działać sama, aż zwolni pojemność. Starty ścieżek są domyślnie rozłożone co 2 sekundy, aby uniknąć lokalnych nawałnic tworzenia w demonie Docker; nadpisz za pomocąOPENCLAW_DOCKER_ALL_START_STAGGER_MS=<ms>. Runner domyślnie wykonuje preflight Docker, czyści nieaktualne kontenery E2E OpenClaw, emituje status aktywnych ścieżek co 30 sekund, współdzieli cache narzędzi CLI providerów między kompatybilnymi ścieżkami, ponawia przejściowe awarie live-providerów raz domyślnie (OPENCLAW_DOCKER_ALL_LIVE_RETRIES=<n>) i przechowuje czasy ścieżek w.artifacts/docker-tests/lane-timings.jsondla kolejności od najdłuższych w późniejszych uruchomieniach. UżyjOPENCLAW_DOCKER_ALL_DRY_RUN=1, aby wydrukować manifest ścieżek bez uruchamiania Docker,OPENCLAW_DOCKER_ALL_STATUS_INTERVAL_MS=<ms>, aby dostroić wyjście statusu, alboOPENCLAW_DOCKER_ALL_TIMINGS=0, aby wyłączyć ponowne użycie czasów. UżyjOPENCLAW_DOCKER_ALL_LIVE_MODE=skiptylko dla deterministycznych/lokalnych ścieżek alboOPENCLAW_DOCKER_ALL_LIVE_MODE=onlytylko dla ścieżek live-providerów; aliasy pakietu topnpm test:docker:local:allipnpm test:docker:live:all. Tryb tylko live scala główne i końcowe ścieżki live w jedną pulę od najdłuższych, aby koszyki providerów mogły pakować pracę Claude, Codex i Gemini razem. Runner przestaje harmonogramować nowe ścieżki z puli po pierwszej awarii, chyba że ustawionoOPENCLAW_DOCKER_ALL_FAIL_FAST=0, a każda ścieżka ma 120-minutowy awaryjny timeout możliwy do nadpisania przezOPENCLAW_DOCKER_ALL_LANE_TIMEOUT_MS; wybrane ścieżki live/końcowe używają ciaśniejszych limitów per ścieżka. Polecenia konfiguracji Docker backendu CLI mają własny timeout przezOPENCLAW_LIVE_CLI_BACKEND_SETUP_TIMEOUT_SECONDS(domyślnie 180). Logi per ścieżka,summary.json,failures.jsoni czasy faz są zapisywane w.artifacts/docker-tests/<run-id>/; użyjpnpm test:docker:timings <summary.json>, aby sprawdzić wolne ścieżki, orazpnpm test:docker:rerun <run-id|summary.json|failures.json>, aby wydrukować tanie ukierunkowane polecenia ponownego uruchomienia. -
pnpm test:docker:browser-cdp-snapshot: Buduje źródłowy kontener E2E oparty na Chromium, uruchamia surowe CDP oraz izolowany Gateway, uruchamiabrowser doctor --deepi weryfikuje, że migawki ról CDP zawierają adresy URL linków, elementy klikalne promowane przez kursor, referencje iframe i metadane ramek. -
pnpm test:docker:skill-install: Instaluje spakowany tarball OpenClaw w surowym runnerze Docker, wyłączaskills.install.allowUploadedArchives, rozwiązuje bieżący slug Skills z wyszukiwania live ClawHub, instaluje go przezopenclaw skills installi weryfikujeSKILL.md,.clawhub/origin.json,.clawhub/lock.jsonorazskills info --json. -
Próby live Docker backendu CLI można uruchamiać jako skupione ścieżki, na przykład
pnpm test:docker:live-cli-backend:codex,pnpm test:docker:live-cli-backend:codex:resumealbopnpm test:docker:live-cli-backend:codex:mcp. Claude i Gemini mają odpowiadające aliasy:resumei:mcp. -
pnpm test:docker:openwebui: Uruchamia zdockeryzowane OpenClaw + Open WebUI, loguje się przez Open WebUI, sprawdza/api/models, a następnie uruchamia prawdziwy proxowany czat przez/api/chat/completions. Wymaga używalnego klucza modelu live (na przykład OpenAI w~/.profile), pobiera zewnętrzny obraz Open WebUI i nie oczekuje się, że będzie stabilny w CI jak zwykłe zestawy unit/e2e. -
pnpm test:docker:mcp-channels: Uruchamia wstępnie zasilony kontener Gateway i drugi kontener klienta, który uruchamiaopenclaw mcp serve, a następnie weryfikuje wykrywanie routowanych konwersacji, odczyty transkryptów, metadane załączników, zachowanie kolejki zdarzeń na żywo, routowanie wysyłania wychodzącego oraz powiadomienia kanału i uprawnień w stylu Claude przez rzeczywisty most stdio. Asercja powiadomień Claude odczytuje surowe ramki MCP stdio bezpośrednio, aby test smoke odzwierciedlał to, co most faktycznie emituje. -
pnpm test:docker:upgrade-survivor: Instaluje spakowany tarball OpenClaw na zabrudzonym fixtures starego użytkownika, uruchamia aktualizację pakietu oraz nieinteraktywny doctor bez kluczy aktywnego dostawcy ani kanału, następnie uruchamia Gateway typu loopback i sprawdza, czy agenci, konfiguracja kanałów, listy dozwolonych Pluginów, pliki workspace/sesji, nieaktualny stan zależności starszego Pluginu, uruchamianie i status RPC przetrwają. -
pnpm test:docker:published-upgrade-survivor: Domyślnie instalujeopenclaw@latest, zasila realistyczne pliki istniejącego użytkownika bez kluczy aktywnego dostawcy ani kanału, konfiguruje tę bazę przy użyciu wbudowanej receptury poleceniaopenclaw config set, aktualizuje tę opublikowaną instalację do spakowanego tarballa OpenClaw, uruchamia nieinteraktywny doctor, zapisuje.artifacts/upgrade-survivor/summary.json, następnie uruchamia Gateway typu loopback i sprawdza, czy skonfigurowane intencje, pliki workspace/sesji, nieaktualna konfiguracja Pluginów i starszy stan zależności, uruchamianie,/healthz,/readyzoraz status RPC przetrwają lub zostaną poprawnie naprawione. Nadpisz pojedynczą bazę za pomocąOPENCLAW_UPGRADE_SURVIVOR_BASELINE_SPEC, rozszerz dokładną lokalną macierz za pomocąOPENCLAW_UPGRADE_SURVIVOR_BASELINE_SPECS, np.openclaw@2026.5.2 openclaw@2026.4.23 openclaw@2026.4.15, albo dodaj fixtures scenariuszy za pomocąOPENCLAW_UPGRADE_SURVIVOR_SCENARIOS=reported-issues; zestaw reported-issues obejmujeconfigured-plugin-installs, aby zweryfikować, że skonfigurowane zewnętrzne Pluginy OpenClaw instalują się automatycznie podczas aktualizacji, orazstale-source-plugin-shadow, aby cienie Pluginów dostępne tylko w źródłach nie psuły uruchamiania. Package Acceptance udostępnia je jakopublished_upgrade_survivor_baseline,published_upgrade_survivor_baselinesipublished_upgrade_survivor_scenariosoraz rozwiązuje metatokeny bazowe, takie jaklast-stable-4luball-since-2026.4.23, zanim przekaże dokładne specyfikacje pakietów do ścieżek Docker. -
pnpm test:docker:update-migration: Uruchamia harness published-upgrade survivor w scenariuszuplugin-deps-cleanupz intensywnym czyszczeniem, domyślnie zaczynając odopenclaw@2026.4.23. Oddzielny workflowUpdate Migrationrozszerza tę ścieżkę obaselines=all-since-2026.4.23, dzięki czemu każdy stabilny opublikowany pakiet od.23wzwyż aktualizuje się do kandydata i potwierdza czyszczenie zależności skonfigurowanych Pluginów poza Full Release CI. -
pnpm test:docker:plugins: Uruchamia test smoke instalacji/aktualizacji dla ścieżki lokalnej,file:, pakietów z rejestru npm z wyniesionymi zależnościami, ruchomych referencji git, fixtures ClawHub, aktualizacji marketplace oraz włączania/inspekcji pakietu Claude.
Lokalna bramka PR
Na potrzeby lokalnych kontroli scalania/bramki PR uruchom:pnpm check:changedpnpm checkpnpm check:test-typespnpm buildpnpm testpnpm check:docs
pnpm test sporadycznie zawodzi na obciążonym hoście, uruchom go ponownie raz, zanim uznasz to za regresję, a następnie wyizoluj problem za pomocą pnpm test <path/to/test>. W przypadku hostów z ograniczoną pamięcią użyj:
OPENCLAW_VITEST_MAX_WORKERS=1 pnpm testOPENCLAW_VITEST_FS_MODULE_CACHE_PATH=/tmp/openclaw-vitest-cache pnpm test:changed
Pomiar opóźnień modelu (lokalne klucze)
Skrypt:scripts/bench-model.ts
Użycie:
source ~/.profile && pnpm tsx scripts/bench-model.ts --runs 10- Opcjonalne zmienne środowiskowe:
MINIMAX_API_KEY,MINIMAX_BASE_URL,MINIMAX_MODEL,ANTHROPIC_API_KEY - Domyślny prompt: “Odpowiedz jednym słowem: ok. Bez interpunkcji ani dodatkowego tekstu.”
- mediana minimax 1279 ms (min. 1114, maks. 2431)
- mediana opus 2454 ms (min. 1224, maks. 3170)
Pomiar startu CLI
Skrypt:scripts/bench-cli-startup.ts
Użycie:
pnpm test:startup:benchpnpm test:startup:bench:smokepnpm test:startup:bench:savepnpm test:startup:bench:updatepnpm test:startup:bench:checkpnpm tsx scripts/bench-cli-startup.tspnpm tsx scripts/bench-cli-startup.ts --runs 12pnpm tsx scripts/bench-cli-startup.ts --preset realpnpm tsx scripts/bench-cli-startup.ts --preset real --case status --case gatewayStatus --runs 3pnpm tsx scripts/bench-cli-startup.ts --preset real --case tasksJson --case tasksListJson --case tasksAuditJson --runs 3pnpm tsx scripts/bench-cli-startup.ts --entry openclaw.mjs --entry-secondary dist/entry.js --preset allpnpm tsx scripts/bench-cli-startup.ts --preset all --output .artifacts/cli-startup-bench-all.jsonpnpm tsx scripts/bench-cli-startup.ts --preset real --case gatewayStatusJson --output .artifacts/cli-startup-bench-smoke.jsonpnpm tsx scripts/bench-cli-startup.ts --preset real --cpu-prof-dir .artifacts/cli-cpupnpm tsx scripts/bench-cli-startup.ts --json
startup:--version,--help,health,health --json,status --json,statusreal:health,status,status --json,sessions,sessions --json,tasks --json,tasks list --json,tasks audit --json,agents list --json,gateway status,gateway status --json,gateway health --json,config get gateway.portall: oba presety
sampleCount, średnią, p50, p95, min./maks., rozkład kodów wyjścia/sygnałów oraz podsumowania maksymalnego RSS dla każdego polecenia. Opcjonalne --cpu-prof-dir / --heap-prof-dir zapisuje profile V8 dla każdego przebiegu, aby pomiar czasu i przechwytywanie profilu używały tego samego harnessu.
Konwencje zapisanych danych wyjściowych:
pnpm test:startup:bench:smokezapisuje docelowy artefakt smoke w.artifacts/cli-startup-bench-smoke.jsonpnpm test:startup:bench:savezapisuje artefakt pełnego zestawu w.artifacts/cli-startup-bench-all.json, używającruns=5iwarmup=1pnpm test:startup:bench:updateodświeża wpisany do repozytorium fixture baseline wtest/fixtures/cli-startup-bench.json, używającruns=5iwarmup=1
test/fixtures/cli-startup-bench.json- Odśwież za pomocą
pnpm test:startup:bench:update - Porównaj bieżące wyniki z fixture za pomocą
pnpm test:startup:bench:check
Onboarding E2E (Docker)
Docker jest opcjonalny; jest to potrzebne tylko do skonteneryzowanych testów smoke onboardingu. Pełny przepływ zimnego startu w czystym kontenerze Linux:openclaw health.