OpenClaw non installa l’intero albero delle dipendenze di ogni plugin in bundle al momento dell’installazione del pacchetto. Prima deriva un piano effettivo dei plugin dalla configurazione e dai metadati dei plugin, poi prepara le dipendenze di runtime solo per i plugin in bundle di proprietà di OpenClaw che il piano può effettivamente caricare. Questa pagina riguarda le dipendenze di runtime pacchettizzate per i plugin OpenClaw in bundle. I plugin di terze parti e i percorsi di plugin personalizzati usano ancora comandi espliciti di installazione dei plugin, comeDocumentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
openclaw plugins install e openclaw plugins update.
Suddivisione delle responsabilità
OpenClaw gestisce piano e criteri:- quali plugin sono attivi per questa configurazione
- quali radici delle dipendenze sono scrivibili o di sola lettura
- quando la riparazione è consentita
- quali id dei plugin sono preparati per l’avvio
- controlli finali prima di importare i moduli di runtime dei plugin
- risoluzione del grafo dei pacchetti
- gestione delle dipendenze di produzione, opzionali e peer
- layout di
node_modules - integrità dei pacchetti
- metadati di lock e installazione
pnpm o npm dovrebbero fare in modo che il filesystem corrisponda a quella decisione.
OpenClaw gestisce anche il lock di coordinamento per ogni radice di installazione. I gestori di pacchetti proteggono la propria transazione di installazione, ma non serializzano le scritture dei manifest di OpenClaw, la copia/rinomina dello stage isolato, la validazione finale o l’importazione dei plugin rispetto a un altro processo Gateway, doctor o CLI che tocca la stessa radice delle dipendenze di runtime.
Piano effettivo dei plugin
Il piano effettivo dei plugin deriva dalla configurazione più i metadati dei plugin rilevati. Questi input possono attivare le dipendenze di runtime dei plugin in bundle:plugins.entries.<id>.enabledplugins.allow,plugins.denyeplugins.enabled- configurazione legacy dei canali, come
channels.telegram.enabled - provider, modelli o riferimenti a backend CLI configurati che richiedono un plugin
- impostazioni predefinite dei manifest in bundle, come
enabledByDefault - indice dei plugin installati e metadati dei manifest in bundle
Flusso di avvio
L’avvio del Gateway analizza la configurazione e crea la tabella di lookup dei plugin di avvio prima che i moduli di runtime dei plugin vengano caricati. L’avvio prepara poi le dipendenze di runtime solo per glistartupPluginIds selezionati da quel piano.
Per le installazioni pacchettizzate, la preparazione delle dipendenze è consentita prima dell’importazione dei plugin. Dopo la preparazione, il loader di runtime importa i plugin di avvio con la riparazione dell’installazione disabilitata; a quel punto la materializzazione mancante delle dipendenze viene trattata come un errore di caricamento, non come un altro ciclo di riparazione.
Quando la preparazione delle dipendenze di avvio viene rimandata dopo il bind HTTP, la readiness del Gateway resta bloccata sul motivo plugin-runtime-deps finché le dipendenze dei plugin di avvio selezionati non sono materializzate e il runtime dei plugin di avvio non è stato caricato.
Quando viene eseguita la riparazione
La riparazione delle dipendenze di runtime dovrebbe essere eseguita quando una di queste condizioni è vera:- il piano effettivo dei plugin è cambiato e aggiunge plugin in bundle che richiedono dipendenze di runtime
- il manifest delle dipendenze generato non corrisponde più al piano effettivo
- i sentinel dei pacchetti installati previsti mancano o sono incompleti
- è stato richiesto
openclaw doctor --fixoopenclaw plugins deps --repair
openclaw onboard e openclaw configure locali lo fanno automaticamente dopo aver scritto correttamente la configurazione, così il successivo avvio del Gateway non scopre pacchetti di plugin in bundle mancanti dopo che l’avvio è già cominciato. Onboarding/configure remoto resta di sola lettura per le dipendenze di runtime locali.
Regola di hot reload
I percorsi di hot reload che possono cambiare i plugin attivi devono ripassare dalla modalità piano dei plugin prima di caricare il runtime dei plugin. Il reload dovrebbe confrontare il nuovo piano effettivo dei plugin con quello precedente, preparare le dipendenze mancanti per i plugin in bundle appena attivi, quindi caricare o riavviare il runtime interessato. Se un reload della configurazione non cambia il piano effettivo dei plugin, non dovrebbe riparare le dipendenze di runtime in bundle.Esecuzione del gestore di pacchetti
OpenClaw scrive un manifest di installazione generato per le dipendenze di runtime in bundle selezionate ed esegue il gestore di pacchetti nella radice di installazione delle dipendenze di runtime. Preferiscepnpm quando disponibile e ripiega sul runner npm incluso in Node.
Il percorso pnpm usa dipendenze di produzione, disabilita gli script del ciclo di vita, ignora il workspace e mantiene lo store dentro la radice di installazione:
npm usa il wrapper di installazione npm sicuro con dipendenze di produzione, script del ciclo di vita disabilitati, modalità workspace disabilitata, audit disabilitato, output fund disabilitato, comportamento legacy delle dipendenze peer e output package-lock abilitato per la radice di installazione generata.
Dopo l’installazione, OpenClaw valida l’albero delle dipendenze preparato prima di renderlo visibile alla radice delle dipendenze di runtime. Lo stage isolato viene copiato nella radice delle dipendenze di runtime e validato di nuovo.
L’intera sezione di riparazione/materializzazione è protetta da un lock della radice di installazione. I proprietari correnti del lock registrano PID, ora di avvio del processo quando disponibile e ora di creazione. I lock legacy senza ora di avvio del processo o prova dell’ora di creazione vengono recuperati solo in base all’età del filesystem, così i lock con PID 1 Docker riciclato possono essere recuperati senza far scadere le normali installazioni correnti di lunga durata solo in base all’età.
Radici di installazione
Le installazioni pacchettizzate non devono modificare directory di pacchetti di sola lettura. OpenClaw può leggere radici delle dipendenze da layer pacchettizzati, ma scrive le dipendenze di runtime generate in uno stage scrivibile, come:OPENCLAW_PLUGIN_STAGE_DIR$STATE_DIRECTORY~/.openclaw/plugin-runtime-deps/var/lib/openclaw/plugin-runtime-depsnelle installazioni in stile container
node_modules precedente invece di eseguire di nuovo il gestore di pacchetti. La nuova radice versionata ottiene comunque il proprio mirror corrente del runtime del pacchetto, quindi il codice del plugin proviene dal pacchetto OpenClaw corrente mentre gli alberi delle dipendenze invariati sono condivisi tra aggiornamenti. Il riutilizzo salta le radici precedenti con un lock delle dipendenze di runtime OpenClaw attivo, quindi una nuova radice non si collega a un albero delle dipendenze che un altro processo Gateway, doctor o CLI sta attualmente riparando.
Comandi doctor e CLI
Usaplugins deps per ispezionare o riparare la materializzazione delle dipendenze di runtime dei plugin in bundle:
plugins deps e doctor operano sulle dipendenze di runtime dei plugin in bundle di proprietà di OpenClaw selezionate dal piano effettivo dei plugin. Non sono comandi di installazione o aggiornamento di plugin di terze parti.
Risoluzione dei problemi
Se un’installazione pacchettizzata segnala dipendenze di runtime in bundle mancanti:- Esegui
openclaw plugins deps --jsonper ispezionare il piano selezionato e i pacchetti mancanti. - Esegui
openclaw plugins deps --repairoopenclaw doctor --fixper riparare lo stage scrivibile delle dipendenze. - Se la radice di installazione è di sola lettura, imposta
OPENCLAW_PLUGIN_STAGE_DIRsu un percorso scrivibile ed esegui di nuovo la riparazione. - Riavvia il Gateway dopo la riparazione se la dipendenza mancante ha bloccato il caricamento dei plugin di avvio.
pnpm install per la riparazione delle dipendenze sorgente invece di usare come primo passaggio la riparazione delle dipendenze di runtime pacchettizzate.