Plugins
Résolution des dépendances de Plugin
OpenClaw conserve le travail sur les dépendances de Plugin au moment de l’installation/mise à jour. Le chargement à l’exécution n’exécute pas de gestionnaires de paquets, ne répare pas les arbres de dépendances et ne modifie pas le répertoire de paquets OpenClaw.
Répartition des responsabilités
Les paquets Plugin possèdent leur graphe de dépendances :
- les dépendances d’exécution résident dans
dependenciesouoptionalDependenciesdu paquet Plugin - les importations SDK/core sont des dépendances homologues ou des importations fournies par OpenClaw
- les plugins de développement local apportent leurs propres dépendances déjà installées
- les plugins npm et git sont installés dans des racines de paquets appartenant à OpenClaw
OpenClaw ne possède que le cycle de vie des plugins :
- découvrir la source du plugin
- installer ou mettre à jour le paquet sur demande explicite
- enregistrer les métadonnées d’installation
- charger le point d’entrée du plugin
- échouer avec une erreur exploitable lorsque des dépendances sont manquantes
Racines d’installation
OpenClaw utilise des racines stables par source :
- les paquets npm s’installent sous
~/.openclaw/npm - les paquets git sont clonés sous
~/.openclaw/git - les installations locales/par chemin/par archive sont copiées ou référencées sans réparation des dépendances
Les installations npm s’exécutent dans la racine npm avec :
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> utilise cette même racine npm gérée
pour une archive tarball npm-pack locale. OpenClaw lit les métadonnées npm de l’archive, l’ajoute
à la racine gérée comme dépendance file: copiée, exécute l’installation npm normale,
puis vérifie les métadonnées du lockfile installé avant de faire confiance au plugin.
Cela est destiné aux preuves d’acceptation de paquet et de release candidate où un
artefact pack local doit se comporter comme l’artefact de registre qu’il simule.
npm peut hisser les dépendances transitives vers ~/.openclaw/npm/node_modules à côté
du paquet Plugin. OpenClaw analyse la racine npm gérée avant de faire confiance à
l’installation et utilise npm pour supprimer les paquets gérés par npm lors de la désinstallation, afin que les dépendances
d’exécution hissées restent dans le périmètre de nettoyage géré.
Les plugins qui importent openclaw/plugin-sdk/* déclarent openclaw comme dépendance
homologue. OpenClaw ne laisse pas npm installer une copie de registre distincte du
paquet hôte dans la racine gérée, car les paquets hôtes obsolètes peuvent affecter la
résolution des pairs npm lors d’installations ultérieures de plugins. Les installations npm gérées ignorent la
résolution/matérialisation des pairs npm pour la racine partagée et OpenClaw réaffirme
les liens node_modules/openclaw locaux au plugin pour les paquets installés qui déclarent
le pair hôte après installation, mise à jour ou désinstallation.
Les installations git clonent ou actualisent le dépôt, puis exécutent :
npm install --omit=dev --ignore-scripts --no-audit --no-fund
Le plugin installé se charge ensuite depuis ce répertoire de paquet, de sorte que la résolution
node_modules locale au paquet et parente fonctionne comme pour un paquet
Node normal.
Plugins locaux
Les plugins locaux sont traités comme des répertoires contrôlés par le développeur. OpenClaw n’exécute pas
npm install, pnpm install ni de réparation des dépendances pour eux. Si un plugin local
a des dépendances, installez-les dans ce plugin avant de le charger.
Les plugins locaux TypeScript tiers peuvent utiliser le chemin Jiti d’urgence. Les plugins JavaScript empaquetés et les plugins internes groupés se chargent via import/require natif au lieu de Jiti.
Démarrage et rechargement
Le démarrage du Gateway et le rechargement de la configuration n’installent jamais les dépendances de plugins. Ils lisent les enregistrements d’installation des plugins, calculent le point d’entrée et le chargent.
Si une dépendance est manquante à l’exécution, le plugin échoue au chargement et l’erreur doit indiquer à l’opérateur une correction explicite :
openclaw plugins update <id>
openclaw plugins install <source>
openclaw doctor --fix
doctor --fix peut nettoyer l’ancien état de dépendances généré par OpenClaw et récupérer
les plugins téléchargeables absents des enregistrements d’installation locaux lorsque la configuration
les référence. Doctor ne répare pas les dépendances d’un plugin local déjà installé.
Plugins groupés
Les plugins groupés légers et critiques pour le core sont livrés avec OpenClaw. Ils doivent soit ne pas avoir d’arbre de dépendances d’exécution lourd, soit être déplacés vers un paquet téléchargeable sur ClawHub/npm.
Pour la liste générée actuelle des plugins livrés dans le paquet core, installés externement ou conservés uniquement comme source, consultez Inventaire des plugins.
Les manifestes de plugins groupés ne doivent pas demander de staging de dépendances. Les fonctionnalités de plugin volumineuses ou facultatives doivent être empaquetées comme un plugin normal et installées via le même chemin npm/git/ClawHub que les plugins tiers.
Dans les checkouts source, OpenClaw traite le dépôt comme un monorepo pnpm. Après
pnpm install, les plugins groupés se chargent depuis extensions/<id> afin que les dépendances
d’espace de travail locales au paquet soient disponibles et que les modifications soient prises en compte directement. Le développement
dans un checkout source est uniquement pnpm ; un simple npm install à la racine du dépôt n’est
pas un moyen pris en charge pour préparer les dépendances des plugins groupés.
| Forme d’installation | Emplacement du plugin groupé | Propriétaire des dépendances |
|---|---|---|
npm install -g openclaw |
Arbre d’exécution construit dans le paquet | Paquet OpenClaw et flux explicites d’installation/mise à jour/doctor de plugins |
Checkout git plus pnpm install |
Paquets d’espace de travail extensions/<id> |
L’espace de travail pnpm, y compris les propres dépendances de chaque paquet Plugin |
openclaw plugins install ... |
Racine de plugin npm/git/ClawHub gérée | Le flux d’installation/mise à jour du plugin |
Nettoyage hérité
Les anciennes versions d’OpenClaw généraient des racines de dépendances de plugins groupés au démarrage ou
pendant la réparation par doctor. Le nettoyage actuel de doctor supprime ces répertoires et
liens symboliques obsolètes lorsque --fix est utilisé, y compris les anciennes racines plugin-runtime-deps, les liens symboliques de paquets
à préfixe Node global qui pointent vers des cibles plugin-runtime-deps élaguées,
les manifestes .openclaw-runtime-deps*, les node_modules de plugins générés, les répertoires
de staging d’installation et les stores pnpm locaux aux paquets. Le postinstall empaqueté supprime aussi
ces liens symboliques globaux avant d’élaguer les racines cibles héritées, afin que les mises à niveau
ne laissent pas d’importations de paquets ESM pendantes.
Ces chemins ne sont que des débris hérités. Les nouvelles installations ne doivent pas les créer.