Plugins
Plugin-afhankelijkheidsresolutie
OpenClaw houdt werk aan Plugin-afhankelijkheden bij installatie-/updatetijd. Runtime laden voert geen package managers uit, repareert geen afhankelijkheidsbomen en muteert de OpenClaw pakketmap niet.
Verantwoordelijkheidsverdeling
Plugin-pakketten zijn eigenaar van hun afhankelijkheidsgraaf:
- runtime-afhankelijkheden staan in de Plugin-pakket-
dependenciesofoptionalDependencies - SDK-/core-imports zijn peer-imports of door OpenClaw geleverde imports
- lokale ontwikkelings-Plugins brengen hun eigen al geïnstalleerde afhankelijkheden mee
- npm- en git-Plugins worden geïnstalleerd in pakketroots die eigendom zijn van OpenClaw
OpenClaw is alleen eigenaar van de Plugin-levenscyclus:
- de Plugin-bron ontdekken
- het pakket installeren of updaten wanneer daar expliciet om wordt gevraagd
- de installatiemetadata vastleggen
- het Plugin-entrypoint laden
- mislukken 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 afhankelijkheidsreparatie
npm-installaties worden uitgevoerd in de npm-root met:
npm install --prefix ~/.openclaw/npm <spec> --omit=dev --omit=peer --legacy-peer-deps --ignore-scripts --no-audit --no-fund
openclaw plugins install npm-pack:<path.tgz> gebruikt dezelfde 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 lockfile-metadata voordat de Plugin wordt vertrouwd.
Dit is bedoeld voor pakketacceptatie- en releasecandidate-bewijs 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 Plugin-pakket. OpenClaw scant de beheerde npm-root voordat de
installatie wordt vertrouwd en gebruikt npm om door npm beheerde pakketten te verwijderen tijdens deïnstallatie, zodat gehoste
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 de npm
peer-resolutie kunnen beïnvloeden tijdens latere Plugin-installaties. Beheerde npm-installaties slaan npm peer-
resolutie/materialisatie over voor de gedeelde root en OpenClaw bevestigt opnieuw
Plugin-lokale node_modules/openclaw-links voor geïnstalleerde pakketten die
de host-peer declareren na installatie, update of deïnstallatie.
git-installaties klonen of verversen de repository en voeren daarna uit:
npm install --omit=dev --ignore-scripts --no-audit --no-fund
De geïnstalleerde Plugin wordt daarna geladen vanuit die pakketmap, zodat pakketlokale
en bovenliggende 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 geen
npm install, pnpm install of afhankelijkheidsreparatie 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 via Jiti.
Opstarten en herladen
Gateway-opstart en config-herladen installeren nooit Plugin-afhankelijkheden. Ze lezen de Plugin-installatierecords, berekenen het entrypoint en laden dit.
Als een afhankelijkheid bij runtime ontbreekt, laadt de Plugin niet en moet de fout de operator naar een expliciete oplossing wijzen:
openclaw plugins update <id>
openclaw plugins install <source>
openclaw doctor --fix
doctor --fix kan verouderde door OpenClaw gegenereerde afhankelijkheidsstatus opschonen en herstel uitvoeren voor
downloadbare Plugins die ontbreken in de lokale installatierecords wanneer config
ernaar verwijst. Doctor repareert geen afhankelijkheden voor een al geïnstalleerde
lokale Plugin.
Gebundelde Plugins
Lichtgewicht en core-kritieke gebundelde Plugins worden als onderdeel van OpenClaw geleverd. Ze zouden geen zware runtime-afhankelijkheidsboom moeten hebben, of anders moeten worden verplaatst naar een downloadbaar pakket op ClawHub/npm.
Zie Plugin-inventaris voor de huidige gegenereerde lijst van Plugins die in het core-pakket worden meegeleverd, extern worden geïnstalleerd of alleen als bron blijven bestaan.
Gebundelde Plugin-manifests mogen niet om afhankelijkheidsstaging vragen. Grote of optionele Plugin-functionaliteit moet als een normale Plugin worden verpakt en geïnstalleerd via hetzelfde npm-/git-/ClawHub-pad als Plugins van derden.
In source-checkouts behandelt OpenClaw de repository als een pnpm-monorepo. Na
pnpm install laden gebundelde Plugins vanuit extensions/<id>, zodat pakketlokale
workspace-afhankelijkheden beschikbaar zijn en bewerkingen direct worden opgepakt. Ontwikkeling vanuit een source-
checkout is alleen pnpm; gewone npm install in de repository-root is
geen ondersteunde manier om gebundelde Plugin-afhankelijkheden voor te bereiden.
| Installatievorm | Locatie van gebundelde Plugin | Eigenaar van afhankelijkheden |
|---|---|---|
npm install -g openclaw |
Gebouwde runtime-boom binnen het pakket | OpenClaw-pakket en expliciete Plugin-installatie-/update-/doctor-flows |
Git-checkout plus pnpm install |
extensions/<id>-workspacepakketten |
De pnpm-workspace, inclusief de eigen afhankelijkheden van elk Plugin-pakket |
openclaw plugins install ... |
Beheerde npm-/git-/ClawHub-Plugin-root | De Plugin-installatie-/updateflow |
Verouderde 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 wijzen naar opgeschoonde plugin-runtime-deps-doelen,
.openclaw-runtime-deps*-manifests, gegenereerde Plugin-node_modules, installatie-
stagingmappen en pakketlokale pnpm-stores. Verpakte postinstall verwijdert ook
die globale symlinks voordat de verouderde doelroots worden opgeschoond, zodat upgrades
geen hangende ESM-pakketimports achterlaten.
Deze paden zijn alleen verouderde restanten. Nieuwe installaties zouden ze niet moeten maken.