To jest dedykowana lista kontrolna dla walidacji aktualizacji i pluginów. Cel jest prosty: udowodnić, że instalowalny pakiet potrafi aktualizować rzeczywisty stan użytkownika, naprawiać przestarzały stan legacy przezDocumentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
doctor oraz nadal instalować, ładować, aktualizować i odinstalowywać pluginy z obsługiwanych źródeł.
Szerszą mapę runnera testów znajdziesz w Testowanie. Klucze providerów live i zestawy dotykające sieci opisuje Testowanie live.
Co chronimy
Testy aktualizacji i pluginów chronią te kontrakty:- Tarball pakietu jest kompletny, ma prawidłowy
dist/postinstall-inventory.jsoni nie zależy od nierozpakowanych plików repozytorium. - Użytkownik może przejść ze starszego opublikowanego pakietu na pakiet kandydujący bez utraty konfiguracji, agentów, sesji, przestrzeni roboczych, list dozwolonych pluginów ani konfiguracji kanałów.
openclaw doctor --fix --non-interactivejest właścicielem ścieżek czyszczenia i naprawy legacy. Startup nie powinien rozrastać się o ukryte migracje zgodności dla przestarzałego stanu pluginów.- Instalacje pluginów działają z katalogów lokalnych, repozytoriów git, pakietów npm i ścieżki rejestru ClawHub.
- Zależności npm pluginów są instalowane w zarządzanym katalogu głównym npm, skanowane przed zaufaniem i usuwane przez npm podczas odinstalowania, aby zależności wyniesione wyżej nie pozostawały.
- Aktualizacja pluginów jest stabilna, gdy nic się nie zmieniło: rekordy instalacji, rozwiązane źródło, układ zainstalowanych zależności i stan włączenia pozostają nienaruszone.
Lokalny dowód podczas developmentu
Zacznij wąsko:release:check uruchamia kontrole dryfu konfiguracji, dokumentacji i API, zapisuje inventory dystrybucji pakietu, uruchamia npm pack --dry-run, odrzuca zakazane spakowane pliki, instaluje tarball do tymczasowego prefiksu, uruchamia postinstall i wykonuje smoke testy entrypointów dołączonych kanałów.
Docker lanes
Docker lanes są dowodem na poziomie produktu. Instalują lub aktualizują rzeczywisty pakiet wewnątrz kontenerów Linux i asertują zachowanie przez polecenia CLI, startup Gateway, sondy HTTP, status RPC i stan systemu plików. Podczas iteracji używaj skoncentrowanych lanes:test:docker:pluginswaliduje smoke instalacji pluginów, instalacje z folderów lokalnych, zachowanie pomijania aktualizacji folderów lokalnych, foldery lokalne z preinstalowanymi zależnościami, instalacje pakietówfile:, instalacje git z wykonaniem CLI, aktualizacje ruchomych refów git, instalacje z rejestru npm z wyniesionymi zależnościami przechodnimi, no-op aktualizacji npm, instalacje z lokalnego fixture ClawHub i no-op aktualizacji, zachowanie aktualizacji marketplace oraz włączanie/inspekcję pakietu Claude. UstawOPENCLAW_PLUGINS_E2E_CLAWHUB=0, aby blok ClawHub był hermetyczny/offline.test:docker:plugin-updatewaliduje, że niezmieniony zainstalowany plugin nie jest reinstalowany ani nie traci metadanych instalacji podczasopenclaw plugins update.test:docker:upgrade-survivorinstaluje tarball kandydujący na brudnym fixture starego użytkownika, uruchamia aktualizację pakietu oraz nieinteraktywny doctor, a następnie startuje loopback Gateway i sprawdza zachowanie stanu.test:docker:published-upgrade-survivornajpierw instaluje opublikowaną bazę, konfiguruje ją przez wbudowaną receptęopenclaw config set, aktualizuje do tarballa kandydującego, uruchamia doctor, sprawdza czyszczenie legacy, startuje Gateway oraz sonduje/healthz,/readyzi status RPC.test:docker:update-migrationto lane opublikowanej aktualizacji mocno skoncentrowany na czyszczeniu. Zaczyna od skonfigurowanego stanu użytkownika w stylu Discord/Telegram, uruchamia bazowy doctor, aby skonfigurowane zależności pluginów miały szansę się zmaterializować, seeduje legacy debris zależności pluginów dla skonfigurowanego spakowanego pluginu, aktualizuje do tarballa kandydującego i wymaga, aby post-update doctor usunął katalogi główne legacy zależności.
base, feishu-channel, bootstrap-persona, plugin-deps-cleanup, tilde-log-path i versioned-runtime-deps. W uruchomieniach zbiorczych OPENCLAW_UPGRADE_SURVIVOR_SCENARIOS=reported-issues rozwija się do wszystkich zgłoszonych scenariuszy w kształcie issue.
Pełna migracja aktualizacji jest celowo oddzielona od Full Release CI. Użyj ręcznego workflow Update Migration, gdy pytanie release brzmi: „czy każda opublikowana stabilna wersja od 2026.4.23 wzwyż potrafi zaktualizować się do tego kandydata i wyczyścić debris zależności pluginów?”:
Package Acceptance
Package Acceptance to natywna dla GitHuba bramka pakietu. Rozwiązuje jeden pakiet kandydujący do tarballapackage-under-test, zapisuje wersję i SHA-256, a następnie uruchamia wielokrotnego użytku Docker E2E lanes przeciwko temu dokładnemu tarballowi. Ref harnessa workflow jest oddzielony od refa źródła pakietu, więc bieżąca logika testów może walidować starsze zaufane wydania.
Źródła kandydatów:
source=npm: walidujopenclaw@beta,openclaw@latestlub dokładną opublikowaną wersję.source=ref: spakuj zaufaną gałąź, tag lub commit wybranym bieżącym harnessem.source=url: waliduj tarball HTTPS z wymaganympackage_sha256.source=artifact: użyj ponownie tarballa przesłanego przez inne uruchomienie Actions.
release-history to ograniczona próbka kontroli release: ostatnie sześć stabilnych wydań, 2026.4.23 i jeden starszy punkt zakotwiczenia sprzed tej daty. Dla wyczerpującego pokrycia migracji opublikowanych aktualizacji użyj all-since-2026.4.23 w oddzielnym workflow Update Migration zamiast Full Release CI.
Uruchom profil pakietu ręcznie podczas walidacji kandydata przed releasem:
suite_profile=product, gdy pytanie release obejmuje kanały MCP, czyszczenie cron/subagent, web search OpenAI lub OpenWebUI. Użyj suite_profile=full tylko wtedy, gdy potrzebujesz pełnego pokrycia Docker dla ścieżki release.
Domyślne ustawienie release
Dla kandydatów release domyślny stos dowodów to:pnpm check:changedipnpm test:changeddla regresji na poziomie źródeł.pnpm release:checkdla integralności artefaktu pakietu.- Profil Package Acceptance
packagelub niestandardowe lanes pakietu kontroli release dla kontraktów instalacji/aktualizacji/pluginów. - Kontrole release między systemami operacyjnymi dla zachowań specyficznych dla instalatora, onboardingu i platformy.
- Zestawy live tylko wtedy, gdy zmieniana powierzchnia dotyka zachowania providera lub usługi hostowanej.
Zgodność legacy
Łagodność zgodności jest wąska i ograniczona czasowo:- Pakiety do
2026.4.25włącznie, w tym2026.4.25-beta.*, mogą tolerować już wysłane luki metadanych pakietu w Package Acceptance. - Opublikowany pakiet
2026.4.26może ostrzegać o plikach stempla metadanych lokalnego buildu, które zostały już wysłane. - Późniejsze pakiety muszą spełniać nowoczesne kontrakty. Te same luki kończą się niepowodzeniem zamiast ostrzeżenia lub pominięcia.
upgrade-survivor albo published-upgrade-survivor.
Dodawanie pokrycia
Przy zmianie zachowania aktualizacji lub pluginów dodaj pokrycie na najniższej warstwie, która może zawieść z właściwego powodu:- Czysta logika ścieżek lub metadanych: test jednostkowy obok źródła.
- Inventory pakietu lub zachowanie spakowanych plików: test
package-dist-inventoryalbo checker tarballa. - Zachowanie instalacji/aktualizacji CLI: asercja lub fixture Docker lane.
- Zachowanie migracji opublikowanego release: scenariusz
published-upgrade-survivor. - Zachowanie źródła rejestru/pakietu: fixture
test:docker:pluginsalbo serwer fixture ClawHub. - Zachowanie układu zależności lub czyszczenia: asertuj zarówno wykonanie runtime, jak i granicę systemu plików. Zależności npm mogą być wyniesione pod zarządzany katalog główny npm, więc testy powinny udowodnić, że katalog główny jest skanowany/czyszczony, zamiast zakładać lokalne dla pakietu drzewo
node_modules.
Triage awarii
Zacznij od tożsamości artefaktu:- Podsumowanie Package Acceptance
resolve_package: źródło, wersja, SHA-256 i nazwa artefaktu. - Artefakty Docker:
.artifacts/docker-tests/**/summary.json,failures.json, logi lane i polecenia ponownego uruchomienia. - Podsumowanie upgrade survivor:
.artifacts/upgrade-survivor/summary.json, w tym wersja bazowa, wersja kandydująca, scenariusz, czasy faz i kroki recepty.