OpenClaw houdt werk voor plugin-afhankelijkheden bij installaties/updates. Runtime-laden voert geen package managers uit, herstelt geen afhankelijkheidsbomen en muteert de OpenClaw-pakketmap niet.Documentation Index
Fetch the complete documentation index at: https://docs2.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
Verdeling van verantwoordelijkheid
Pluginpakketten beheren hun eigen afhankelijkheidsgraaf:- runtime-afhankelijkheden staan in de pluginpakket-
dependenciesofoptionalDependencies - SDK/core-imports zijn peer-imports of door OpenClaw geleverde imports
- lokale ontwikkelplugins brengen hun eigen al geïnstalleerde afhankelijkheden mee
- npm- en git-plugins worden geïnstalleerd in pakketroots die door OpenClaw worden beheerd
- de pluginbron ontdekken
- het pakket installeren of bijwerken wanneer daar expliciet om wordt gevraagd
- de installatiemetadata vastleggen
- het plugin-entrypoint laden
- falen met een uitvoerbare fout wanneer afhankelijkheden ontbreken
Installatieroots
OpenClaw gebruikt stabiele roots per bron:- npm-pakketten worden geïnstalleerd onder
~/.openclaw/npm - git-pakketten worden gekloond onder
~/.openclaw/git - lokale/pad-/archiefinstallaties worden gekopieerd of gerefereerd zonder afhankelijkheidsherstel
openclaw plugins install npm-pack:<path.tgz> gebruikt diezelfde beheerde npm-root
voor een lokale npm-pack-tarball. OpenClaw leest de npm-metadata van de tarball, voegt deze
toe aan de beheerde root als een gekopieerde file:-afhankelijkheid, voert de normale npm-installatie uit
en verifieert daarna de geïnstalleerde lockfilemetadata voordat de plugin wordt vertrouwd.
Dit is bedoeld voor pakketacceptatie en bewijs voor release candidates waarbij een
lokaal pack-artefact zich moet gedragen als het registry-artefact dat het simuleert.
npm kan transitieve afhankelijkheden hoisten naar ~/.openclaw/npm/node_modules naast
het pluginpakket. OpenClaw scant de beheerde npm-root voordat de
installatie wordt vertrouwd en gebruikt npm om door npm beheerde pakketten te verwijderen tijdens het verwijderen, zodat gehoiste
runtime-afhankelijkheden binnen de beheerde opschoongrens blijven.
Plugins die openclaw/plugin-sdk/* importeren, declareren openclaw als een peer-
afhankelijkheid. OpenClaw laat npm geen aparte registry-kopie van het
hostpakket installeren in de beheerde root, omdat verouderde hostpakketten npm-
peerresolutie kunnen beïnvloeden tijdens latere plugininstallaties. Beheerde npm-installaties slaan npm-peer-
resolutie/materialisatie over voor de gedeelde root en OpenClaw bevestigt
pluginlokale node_modules/openclaw-links opnieuw voor geïnstalleerde pakketten die
de host-peer declareren na installatie, update of verwijdering.
git-installaties klonen of vernieuwen de repository en voeren daarna uit:
node_modules-resolutie op dezelfde manier werkt als bij een normaal
Node-pakket.
Lokale plugins
Lokale plugins worden behandeld als door ontwikkelaars beheerde mappen. OpenClaw voert geennpm install, pnpm install of afhankelijkheidsherstel voor ze uit. Als een lokale
plugin afhankelijkheden heeft, installeer die dan in die plugin voordat je deze laadt.
Lokale TypeScript-plugins van derden kunnen het noodpad via Jiti gebruiken. Verpakte
JavaScript-plugins en gebundelde interne plugins laden via native
import/require in plaats van Jiti.
Opstarten en herladen
Gateway-opstart en config-herladen installeren nooit pluginafhankelijkheden. Ze lezen de plugininstallatierecords, berekenen het entrypoint en laden dit. Als een afhankelijkheid ontbreekt tijdens runtime, wordt de plugin niet geladen en moet de fout de operator wijzen op een expliciete oplossing:doctor --fix kan legacy door OpenClaw gegenereerde afhankelijkheidsstatus opschonen en
downloadbare plugins herstellen die ontbreken in de lokale installatierecords wanneer de config
ernaar verwijst. Doctor herstelt geen afhankelijkheden voor een al geïnstalleerde
lokale plugin.
Gebundelde plugins
Lichtgewicht en core-kritieke gebundelde plugins worden meegeleverd als onderdeel van OpenClaw. Ze moeten geen zware runtime-afhankelijkheidsboom hebben of worden verplaatst naar een downloadbaar pakket op ClawHub/npm. Voor de huidige gegenereerde lijst met plugins die in het corepakket worden meegeleverd, extern worden geïnstalleerd of alleen als bron blijven bestaan, zie Plugin-inventaris. Manifesten van gebundelde plugins mogen geen afhankelijkheidsstaging aanvragen. Grote of optionele pluginfunctionaliteit moet worden verpakt als een normale plugin en worden geïnstalleerd via hetzelfde npm/git/ClawHub-pad als plugins van derden. In broncheckouts behandelt OpenClaw de repository als een pnpm-monorepo. Napnpm install laden gebundelde plugins vanuit extensions/<id>, zodat pakketlokale
workspace-afhankelijkheden beschikbaar zijn en bewerkingen direct worden opgepikt. Ontwikkeling vanuit een
broncheckout is alleen pnpm; gewone npm install in de repositoryroot is
geen ondersteunde manier om afhankelijkheden van gebundelde plugins voor te bereiden.
| Installatievorm | Locatie van gebundelde plugin | Eigenaar van afhankelijkheden |
|---|---|---|
npm install -g openclaw | Gebouwde runtimeboom binnen het pakket | OpenClaw-pakket en expliciete plugininstallatie-/update-/doctorflows |
Git-checkout plus pnpm install | extensions/<id>-workspacepakketten | De pnpm-workspace, inclusief de eigen afhankelijkheden van elk pluginpakket |
openclaw plugins install ... | Beheerde npm/git/ClawHub-pluginroot | De plugininstallatie-/updateflow |
Legacy-opschoning
Oudere OpenClaw-versies genereerden afhankelijkheidsroots voor gebundelde plugins bij het opstarten of tijdens doctor-reparatie. De huidige doctor-opschoning verwijdert die verouderde mappen en symlinks wanneer--fix wordt gebruikt, inclusief oude plugin-runtime-deps-roots, globale
Node-prefix-pakketsymlinks die verwijzen naar opgeschoonde plugin-runtime-deps-doelen,
.openclaw-runtime-deps*-manifesten, gegenereerde plugin-node_modules, installatiestagingmappen
en pakketlokale pnpm-stores. Verpakte postinstall verwijdert ook
die globale symlinks voordat de legacy-doelroots worden opgeschoond, zodat upgrades
geen losse ESM-pakketimports achterlaten.
Deze paden zijn alleen legacy-afval. Nieuwe installaties mogen ze niet aanmaken.