Questa è la checklist dedicata per la convalida degli aggiornamenti e dei Plugin. L’obiettivo è semplice: dimostrare che il pacchetto installabile può aggiornare lo stato reale dell’utente, riparare lo stato legacy obsoleto tramiteDocumentation 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 e continuare a installare, caricare, aggiornare e disinstallare
Plugin dalle fonti supportate.
Per la mappa più ampia del test runner, vedi Testing. Per le chiavi dei provider live
e le suite che toccano la rete, vedi Testing live.
Cosa proteggiamo
I test di aggiornamento e dei Plugin proteggono questi contratti:- Un tarball di pacchetto è completo, ha un
dist/postinstall-inventory.jsonvalido e non dipende da file del repo non inclusi. - Un utente può passare da un pacchetto pubblicato più vecchio al pacchetto candidato senza perdere configurazione, agenti, sessioni, workspace, allowlist dei Plugin o configurazione dei canali.
openclaw doctor --fix --non-interactivepossiede i percorsi di pulizia e riparazione legacy. L’avvio non dovrebbe accumulare migrazioni di compatibilità nascoste per lo stato obsoleto dei Plugin.- Le installazioni dei Plugin funzionano da directory locali, repo git, pacchetti npm e dal percorso del registro ClawHub.
- Le dipendenze npm dei Plugin vengono installate nella root npm gestita, scansionate prima della fiducia e rimosse tramite npm durante la disinstallazione, così le dipendenze hoisted non restano in giro.
- L’aggiornamento dei Plugin è stabile quando non è cambiato nulla: record di installazione, fonte risolta, layout delle dipendenze installate e stato abilitato restano intatti.
Prova locale durante lo sviluppo
Inizia in modo circoscritto:release:check esegue controlli di drift di config/docs/API, scrive l’inventory dist del pacchetto,
esegue npm pack --dry-run, rifiuta file vietati inclusi nel pacchetto, installa
il tarball in un prefisso temporaneo, esegue postinstall e fa uno smoke degli entrypoint dei canali
in bundle.
Lane Docker
Le lane Docker sono la prova a livello di prodotto. Installano o aggiornano un pacchetto reale dentro container Linux e verificano il comportamento tramite comandi CLI, avvio del Gateway, probe HTTP, stato RPC e stato del filesystem. Usa lane mirate durante l’iterazione:test:docker:pluginsvalida lo smoke dell’installazione dei Plugin, installazioni da cartella locale, comportamento di salto dell’aggiornamento da cartella locale, cartelle locali con dipendenze preinstallate, installazioni di pacchettifile:, installazioni git con esecuzione CLI, aggiornamenti git a riferimento mobile, installazioni da registro npm con dipendenze transitive hoisted, no-op di aggiornamento npm, installazioni da fixture ClawHub locale e no-op di aggiornamento, comportamento di aggiornamento del marketplace e abilitazione/ispezione del bundle Claude. ImpostaOPENCLAW_PLUGINS_E2E_CLAWHUB=0per mantenere il blocco ClawHub ermetico/offline.test:docker:plugin-updatevalida che un Plugin installato invariato non venga reinstallato né perda metadati di installazione duranteopenclaw plugins update.test:docker:upgrade-survivorinstalla il tarball candidato sopra una fixture sporca di vecchio utente, esegue l’aggiornamento del pacchetto più doctor non interattivo, poi avvia un Gateway su local loopback e controlla la preservazione dello stato.test:docker:published-upgrade-survivorprima installa una baseline pubblicata, la configura tramite una ricettaopenclaw config setincorporata, la aggiorna al tarball candidato, esegue doctor, controlla la pulizia legacy, avvia il Gateway e interroga/healthz,/readyze lo stato RPC.test:docker:update-migrationè la lane di aggiornamento pubblicato più incentrata sulla pulizia. Parte da uno stato utente configurato in stile Discord/Telegram, esegue doctor sulla baseline così le dipendenze dei Plugin configurati hanno la possibilità di materializzarsi, semina residui legacy di dipendenze dei Plugin per un Plugin pacchettizzato configurato, aggiorna al tarball candidato e richiede al doctor post-aggiornamento di rimuovere le root delle dipendenze legacy.
base, feishu-channel, bootstrap-persona,
plugin-deps-cleanup, tilde-log-path e versioned-runtime-deps. Nelle esecuzioni aggregate,
OPENCLAW_UPGRADE_SURVIVOR_SCENARIOS=reported-issues si espande a tutti gli scenari
modellati sui problemi segnalati.
La migrazione completa degli aggiornamenti è intenzionalmente separata dalla Full Release CI. Usa il
workflow manuale Update Migration quando la domanda di release è “ogni
release stabile pubblicata da 2026.4.23 in poi può aggiornarsi a questo candidato e
ripulire i residui delle dipendenze dei Plugin?”:
Package Acceptance
Package Acceptance è il gate pacchetto nativo di GitHub. Risolve un pacchetto candidato in un tarballpackage-under-test, registra versione e SHA-256, poi
esegue lane Docker E2E riutilizzabili contro quello specifico tarball. L’harness del workflow
ref è separato dal ref sorgente del pacchetto, così la logica di test corrente può convalidare
release fidate più vecchie.
Fonti candidate:
source=npm: validaopenclaw@beta,openclaw@latesto una versione pubblicata esatta.source=ref: impacchetta un branch, tag o commit fidato con l’harness corrente selezionato.source=url: valida un tarball HTTPS conpackage_sha256obbligatorio.source=artifact: riusa un tarball caricato da un’altra esecuzione di Actions.
release-history è un campione limitato per i controlli di release: ultime sei release stabili,
2026.4.23 e un’ancora più vecchia precedente alla data. Per una copertura esaustiva della migrazione
degli aggiornamenti pubblicati, usa all-since-2026.4.23 nel workflow Update Migration
separato invece della Full Release CI.
Esegui manualmente un profilo pacchetto quando convalidi un candidato prima della release:
suite_profile=product quando la domanda di release include canali MCP,
pulizia di cron/subagent, ricerca web OpenAI o OpenWebUI. Usa suite_profile=full
solo quando ti serve copertura completa del percorso di release Docker.
Predefinito di release
Per i candidati alla release, lo stack di prova predefinito è:pnpm check:changedepnpm test:changedper regressioni a livello sorgente.pnpm release:checkper l’integrità dell’artefatto del pacchetto.- Profilo Package Acceptance
packageo le lane pacchetto personalizzate dei controlli di release per i contratti di installazione/aggiornamento/Plugin. - Controlli di release cross-OS per installer, onboarding e comportamento di piattaforma specifici per OS.
- Suite live solo quando la superficie modificata tocca il comportamento di provider o servizi ospitati.
Compatibilità legacy
La tolleranza di compatibilità è stretta e limitata nel tempo:- I pacchetti fino a
2026.4.25, incluso2026.4.25-beta.*, possono tollerare gap nei metadati del pacchetto già rilasciati in Package Acceptance. - Il pacchetto pubblicato
2026.4.26può avvisare per file di stamp dei metadati di build locali già rilasciati. - I pacchetti successivi devono soddisfare i contratti moderni. Gli stessi gap falliscono invece di generare avvisi o venire saltati.
upgrade-survivor o published-upgrade-survivor.
Aggiungere copertura
Quando cambi il comportamento di aggiornamento o dei Plugin, aggiungi copertura al livello più basso che può fallire per il motivo giusto:- Logica pura di percorsi o metadati: unit test accanto alla sorgente.
- Comportamento dell’inventory del pacchetto o dei file impacchettati: test
package-dist-inventoryo del checker del tarball. - Comportamento CLI di installazione/aggiornamento: asserzione o fixture della lane Docker.
- Comportamento di migrazione da release pubblicata: scenario
published-upgrade-survivor. - Comportamento di registro/fonte pacchetto: fixture
test:docker:pluginso server fixture ClawHub. - Comportamento del layout o della pulizia delle dipendenze: verifica sia l’esecuzione runtime sia il
confine del filesystem. Le dipendenze npm possono essere hoisted sotto la root npm gestita,
quindi i test dovrebbero dimostrare che la root viene scansionata/pulita invece di assumere un albero
node_moduleslocale al pacchetto.
Triage dei fallimenti
Inizia dall’identità dell’artefatto:- Riepilogo
resolve_packagedi Package Acceptance: fonte, versione, SHA-256 e nome dell’artefatto. - Artefatti Docker:
.artifacts/docker-tests/**/summary.json,failures.json, log delle lane e comandi di riesecuzione. - Riepilogo upgrade survivor:
.artifacts/upgrade-survivor/summary.json, inclusi versione baseline, versione candidata, scenario, tempi delle fasi e passaggi della ricetta.