CLI commands
Plugins
Gérez les plugins du Gateway, les packs de hooks et les bundles compatibles.
Guide destiné aux utilisateurs finaux pour installer, activer et dépanner les plugins.
Exemples rapides pour l’installation, l’affichage de la liste, la mise à jour, la désinstallation et la publication.
Modèle de compatibilité des bundles.
Champs du manifeste et schéma de configuration.
Renforcement de la sécurité des installations de plugins.
Commandes
openclaw plugins list [--enabled] [--verbose] [--json]openclaw plugins search <query> [--limit <n>] [--json]openclaw plugins install <path-or-spec> [--link] [--force] [--pin] [--marketplace <source>]openclaw plugins inspect <id> [--runtime] [--json]openclaw plugins inspect --all [--runtime] [--json]openclaw plugins info <id> # alias d’inspectopenclaw plugins enable <id>openclaw plugins disable <id>openclaw plugins uninstall <id> [--dry-run] [--keep-files] [--force]openclaw plugins update <id-or-npm-spec> | --all [--dry-run]openclaw plugins registry [--refresh] [--json]openclaw plugins doctoropenclaw plugins init <id> [--name <name>] [--type tool|provider] [--directory <path>]openclaw plugins build [--entry <path>] [--check]openclaw plugins validate [--entry <path>]openclaw plugins marketplace entries [--offline] [--feed-profile <name>] [--json]openclaw plugins marketplace list <source> [--json]openclaw plugins marketplace refresh [--feed-profile <name>] [--expected-sha256 <sha256>] [--json]Pour analyser une installation, une inspection, une désinstallation ou une actualisation du registre lente, exécutez la
commande avec OPENCLAW_PLUGIN_LIFECYCLE_TRACE=1. La trace écrit la durée des phases
dans stderr et conserve une sortie JSON analysable. Consultez Débogage.
Création
openclaw plugins init stock-quotes --name "Stock Quotes"cd stock-quotesnpm run plugin:buildnpm run plugin:validateplugins init crée par défaut un plugin d’outil TypeScript minimal. Le premier
argument est l’identifiant du plugin ; --name définit le nom d’affichage. OpenClaw utilise
l’identifiant pour le répertoire de sortie par défaut et le nommage du paquet. Les structures d’outil utilisent
defineToolPlugin et génèrent les scripts package.json plugin:build et
plugin:validate, qui effectuent la compilation puis appellent openclaw plugins build/validate.
plugins build importe le point d’entrée compilé, lit les métadonnées statiques de son outil, écrit
openclaw.plugin.json et maintient le champ openclaw.extensions de package.json synchronisé.
plugins validate vérifie que le manifeste généré, les métadonnées du paquet et
l’exportation actuelle du point d’entrée concordent toujours. Consultez Plugins d’outils pour
le processus de création complet.
La structure écrit le code source TypeScript, mais génère les métadonnées à partir du point d’entrée
./dist/index.js compilé, de sorte que le processus fonctionne également avec la CLI publiée. Utilisez
--entry <path> lorsque le point d’entrée n’est pas celui par défaut du paquet. Utilisez
plugins build --check dans la CI pour échouer lorsque les métadonnées générées sont obsolètes, sans
réécrire les fichiers.
Structure de fournisseur
openclaw plugins init acme-models --name "Acme Models" --type providercd acme-modelsnpm installnpm run buildnpm testnpm run validateLes structures de fournisseur créent un plugin générique de fournisseur de modèles compatible avec OpenAI,
avec la gestion de l’authentification par clé API, un script npm run validate qui exécute
clawhub package validate, les métadonnées de paquet ClawHub et un workflow GitHub Actions
déclenché manuellement pour permettre ultérieurement une publication fiable via GitHub
OIDC. Les structures de fournisseur ne génèrent pas de Skills et n’utilisent pas
openclaw plugins build/validate ; ces commandes sont destinées au chemin de métadonnées générées
de la structure d’outil.
Avant la publication, remplacez l’URL de base d’API fictive, le catalogue de modèles, la route de documentation, le texte relatif aux identifiants et le contenu du README par les informations réelles du fournisseur. Utilisez le README généré pour la première publication sur ClawHub et la configuration d’un éditeur de confiance.
Installation
openclaw plugins search "calendar" # rechercher des plugins ClawHubopenclaw plugins install @openclaw/<package> # catalogue officiel de confianceopenclaw plugins install <package> # paquet npm arbitraireopenclaw plugins install clawhub:<package> # ClawHub uniquementopenclaw plugins install npm:<package> # npm uniquementopenclaw plugins install npm-pack:<path.tgz> # archive npm-pack localeopenclaw plugins install git:github.com/<owner>/<repo> # dépôt gitopenclaw plugins install git:github.com/<owner>/<repo>@<ref>openclaw plugins install <path> # chemin local ou archiveopenclaw plugins install -l <path> # lier au lieu de copieropenclaw plugins install <plugin>@<marketplace> # forme abrégée de marketplaceopenclaw plugins install <plugin> --marketplace <name> # marketplace (explicite)openclaw plugins install <package> --force # confirmer la source / écraser l’existantopenclaw plugins install <package> --pin # épingler la version npm résolueopenclaw plugins install clawhub:<package> --acknowledge-clawhub-riskopenclaw plugins install <package> --dangerously-force-unsafe-installLes mainteneurs qui testent les installations pendant la configuration peuvent remplacer les sources d’installation automatique des plugins à l’aide de variables d’environnement protégées. Consultez Remplacements des sources d’installation de plugins.
plugins search interroge ClawHub pour obtenir les paquets code-plugin et
bundle-plugin installables (pas les Skills ; utilisez openclaw skills search pour ceux-ci).
La valeur par défaut de --limit est 20, avec un maximum de 100. Cette commande lit uniquement le catalogue distant : aucune
inspection de l’état local, modification de la configuration, installation de paquet ni
chargement de l’environnement d’exécution du plugin. Les résultats comprennent le nom du paquet ClawHub, la famille, le canal, la version,
le résumé et une indication d’installation telle que openclaw plugins install clawhub:<package>.
Inclusions de configuration et réparation d’une configuration non valide
Si votre section plugins repose sur un fichier unique $include, plugins install/update/enable/disable/uninstall écrit directement dans ce fichier inclus et laisse openclaw.json intact. Les inclusions racine, les tableaux d’inclusions et les inclusions comportant des remplacements voisins échouent de manière fermée au lieu d’être aplatis. Consultez Inclusions de configuration pour connaître les structures prises en charge.
Si la configuration n’est pas valide pendant l’installation, plugins install échoue normalement de manière fermée et vous demande d’exécuter d’abord openclaw doctor --fix. Lors du démarrage du Gateway et du rechargement à chaud, une configuration de plugin non valide échoue de manière fermée comme toute autre configuration non valide ; openclaw doctor --fix peut placer en quarantaine l’entrée de plugin non valide. La seule exception documentée pendant l’installation est un chemin de récupération restreint pour les plugins intégrés qui activent explicitement openclaw.install.allowInvalidConfigRecovery.
Confirmation avec --force et réinstallation ou mise à jour
--force confirme une source autre que ClawHub sans afficher d’invite. Il ne contourne pas security.installPolicy ni les autres contrôles de sécurité de l’installation. Lorsque le plugin ou le pack de hooks est déjà installé, il réutilise également la cible existante et l’écrase sur place. Utilisez-le après avoir examiné une source npm arbitraire, locale, d’archive, git ou de marketplace, ou lorsque vous réinstallez intentionnellement le même identifiant. Pour les mises à niveau courantes d’un plugin npm déjà suivi, privilégiez openclaw plugins update <id-or-npm-spec>.
Si vous exécutez plugins install pour un identifiant de plugin déjà installé, OpenClaw s’arrête et vous indique plugins update <id-or-npm-spec> pour une mise à niveau normale, ou plugins install <package> --force lorsque vous souhaitez réellement écraser l’installation actuelle depuis une autre source. Les sources arbitraires affichent toujours l’avertissement interactif relatif à la provenance ; les installations non interactives doivent fournir --force après vérification. Les sources ClawHub et du catalogue OpenClaw de confiance ne l’exigent pas. Avec --link, --force confirme la source, mais ne modifie pas le mode d’installation par chemin lié.
Portée de --pin
--pin s’applique uniquement aux installations npm et enregistre la valeur exacte résolue de <name>@<version>. Il n’est pas pris en charge avec les installations git: (épinglez plutôt la référence dans la spécification, par exemple git:github.com/acme/plugin@v1.2.3) ni avec --marketplace (les installations depuis une marketplace conservent les métadonnées de source de la marketplace au lieu d’une spécification npm).
--dangerously-force-unsafe-install
--dangerously-force-unsafe-install est obsolète et n’effectue désormais aucune opération. OpenClaw n’exécute plus le blocage intégré du code dangereux pendant l’installation des plugins.
Utilisez la surface security.installPolicy appartenant à l’opérateur lorsqu’une politique d’installation propre à l’hôte est requise. Les hooks before_install de Plugin sont des hooks du cycle de vie de l’environnement d’exécution du Plugin, et non la principale limite d’application de la politique pour les installations via la CLI.
Si un Plugin que vous avez publié sur ClawHub est masqué ou bloqué par une analyse du registre, suivez les étapes destinées à l’éditeur dans Publication sur ClawHub. --dangerously-force-unsafe-install ne demande pas à ClawHub d’analyser à nouveau le Plugin ni de rendre publique une version bloquée.
--acknowledge-clawhub-risk
Les installations depuis la communauté ClawHub vérifient le niveau de confiance de la version sélectionnée avant le téléchargement. Si ClawHub désactive le téléchargement de la version, signale des résultats d’analyse malveillants ou place la version dans un état de modération bloquant (mise en quarantaine, révoquée), OpenClaw la refuse catégoriquement, indépendamment de cet indicateur. Pour les états de modération ou d’analyse risqués mais non bloquants, OpenClaw affiche les détails de confiance et demande une confirmation avant de poursuivre.
Utilisez --acknowledge-clawhub-risk uniquement après avoir examiné l’avertissement de ClawHub et décidé de continuer sans invite interactive. Les résultats d’analyse en attente ou obsolètes (pas encore déclarés sains) déclenchent un avertissement, mais ne nécessitent pas d’accusé de réception. Les paquets ClawHub officiels et les sources de Plugin intégrées à OpenClaw contournent entièrement cette vérification de confiance de la version.
Packs de hooks et spécifications npm
plugins install est également la surface d’installation des packs de hooks qui exposent openclaw.hooks dans package.json. Utilisez openclaw hooks pour filtrer la visibilité des hooks et activer chaque hook individuellement, et non pour installer des paquets.
Les spécifications npm sont réservées au registre (nom du paquet accompagné éventuellement d’une version exacte ou d’un dist-tag). Les spécifications Git/URL/fichier et les plages semver sont rejetées. Par sécurité, les installations de dépendances s’exécutent dans un projet npm géré distinct pour chaque Plugin avec --ignore-scripts, même lorsque votre shell dispose de paramètres globaux d’installation npm. Les projets npm gérés des Plugins héritent du overrides npm défini au niveau du paquet d’OpenClaw, afin que les épinglages de sécurité de l’hôte s’appliquent également aux dépendances de Plugin remontées.
Utilisez npm:<package> pour rendre explicite la résolution npm. Pendant la transition de lancement, les spécifications de paquet sans préfixe s’installent également directement depuis npm, sauf si elles correspondent à l’identifiant d’un Plugin officiel.
Les spécifications @openclaw/* brutes qui correspondent à des Plugins intégrés sont résolues vers la copie intégrée appartenant à l’image avant le recours à npm. Par exemple, openclaw plugins install @openclaw/discord@2026.5.20 --pin utilise le Plugin Discord intégré à la version actuelle d’OpenClaw au lieu de créer un remplacement npm géré. Pour imposer l’utilisation du paquet npm externe, utilisez openclaw plugins install npm:@openclaw/discord@2026.5.20 --pin.
Les spécifications sans préfixe et @latest restent sur le canal stable. Les versions correctives d’OpenClaw horodatées par date, telles que 2026.5.3-1, sont considérées comme stables pour cette vérification. Si npm résout l’une de ces formes vers une préversion, OpenClaw s’arrête et vous demande de l’autoriser explicitement au moyen d’une étiquette de préversion (@beta/@rc) ou d’une version de prépublication exacte (@1.2.3-beta.4).
Pour les installations npm sans version exacte (npm:<package> ou npm:<package>@latest), OpenClaw vérifie les métadonnées du paquet résolu avant l’installation. Si le dernier paquet stable nécessite une API de Plugin OpenClaw plus récente ou une version minimale plus récente de l’hôte, OpenClaw examine les anciennes versions stables et installe à la place la version compatible la plus récente. Les versions exactes et les dist-tags explicites restent stricts : une sélection incompatible échoue et vous demande de mettre à niveau OpenClaw ou de choisir une version compatible.
Si une spécification d’installation sans préfixe correspond à l’identifiant d’un Plugin officiel (par exemple diffs), OpenClaw installe directement l’entrée du catalogue. Pour installer un paquet npm portant le même nom, utilisez une spécification avec portée explicite (par exemple @scope/diffs).
Dépôts Git
Utilisez git:<repo> pour effectuer une installation directement depuis un dépôt Git. Formes prises en charge : git:github.com/owner/repo, git:owner/repo, https:// complet, ssh://, git://, file:// et les URL de clonage git@host:owner/repo.git. Ajoutez @<ref> ou #<ref> pour extraire une branche, une étiquette ou un commit avant l’installation.
Les installations Git clonent le dépôt dans un répertoire temporaire, extraient la référence demandée lorsqu’elle est présente, puis utilisent le programme d’installation habituel des répertoires de Plugin. La validation du manifeste, la politique d’installation de l’opérateur, les opérations d’installation du gestionnaire de paquets et les enregistrements d’installation se comportent donc comme pour les installations npm. Les installations Git enregistrées incluent l’URL et la référence de la source ainsi que le commit résolu, afin que openclaw plugins update puisse résoudre à nouveau la source ultérieurement.
Après une installation depuis Git, utilisez openclaw plugins inspect <id> --runtime --json pour vérifier les enregistrements dans l’environnement d’exécution, tels que les méthodes du Gateway et les commandes de la CLI. Si le Plugin a enregistré une commande racine de la CLI avec api.registerCli, exécutez cette commande directement depuis la CLI racine d’OpenClaw, par exemple openclaw demo-plugin ping.
Archives
Archives prises en charge : .zip, .tgz, .tar.gz, .tar. Les archives natives de Plugin OpenClaw doivent contenir un openclaw.plugin.json valide à la racine du Plugin extrait ; les archives qui contiennent uniquement package.json sont rejetées avant qu’OpenClaw n’écrive les enregistrements d’installation.
Utilisez npm-pack:<path.tgz> lorsque le fichier est une archive tar créée par npm-pack et que vous souhaitez
utiliser le même chemin de projet npm géré par Plugin que pour les installations depuis le registre,
notamment la vérification package-lock.json, l’analyse des dépendances remontées
et les enregistrements d’installation npm. Les chemins d’archive ordinaires sont toujours installés en tant
qu’archives locales sous la racine des extensions de Plugin.
Les installations depuis la place de marché Claude sont également prises en charge.
Les installations ClawHub utilisent un localisateur clawhub:<package> explicite :
openclaw plugins install clawhub:openclaw-codex-app-serveropenclaw plugins install clawhub:openclaw-codex-app-server@1.2.3Pendant la transition de lancement, les spécifications de Plugin sans préfixe compatibles avec les noms npm s’installent par défaut depuis npm, sauf si elles correspondent à l’identifiant d’un Plugin officiel :
openclaw plugins install openclaw-codex-app-serverUtilisez npm: pour rendre explicite une résolution exclusivement via npm :
openclaw plugins install npm:openclaw-codex-app-serveropenclaw plugins install npm:@openclaw/discord@2026.5.20openclaw plugins install npm:@scope/plugin-name@1.0.1OpenClaw vérifie avant l’installation la compatibilité annoncée avec l’API de Plugin et la version minimale du Gateway. Lorsque la version ClawHub sélectionnée publie un artefact ClawPack, OpenClaw télécharge le .tgz npm-pack versionné, vérifie l’en-tête d’empreinte de ClawHub et l’empreinte de l’artefact, puis l’installe par le chemin d’archive habituel. Les anciennes versions ClawHub sans métadonnées ClawPack s’installent toujours par le chemin historique de vérification des archives de paquet. Les installations enregistrées conservent les métadonnées de leur source ClawHub, le type d’artefact, l’intégrité npm, la somme SHA npm, le nom de l’archive tar et les informations d’empreinte ClawPack en vue des mises à jour ultérieures.
Les installations ClawHub sans version conservent une spécification enregistrée sans version afin que openclaw plugins update puisse suivre les nouvelles versions ClawHub ; les sélecteurs explicites de version ou d’étiquette tels que clawhub:pkg@1.2.3 et clawhub:pkg@beta restent épinglés à ce sélecteur.
Forme abrégée de la place de marché
Utilisez la forme abrégée plugin@marketplace lorsque le nom de la place de marché existe dans le cache local du registre Claude à l’emplacement ~/.claude/plugins/known_marketplaces.json :
openclaw plugins marketplace list <marketplace-name>openclaw plugins install <plugin-name>@<marketplace-name>Utilisez --marketplace pour transmettre explicitement la source de la place de marché :
openclaw plugins install <plugin-name> --marketplace <marketplace-name>openclaw plugins install <plugin-name> --marketplace <owner/repo>openclaw plugins install <plugin-name> --marketplace https://github.com/<owner>/<repo>openclaw plugins install <plugin-name> --marketplace ./my-marketplaceSources de la place de marché
- un nom de place de marché connue de Claude provenant de
~/.claude/plugins/known_marketplaces.json - une racine de place de marché locale ou un chemin
marketplace.json - une forme abrégée de dépôt GitHub telle que
owner/repo - une URL de dépôt GitHub telle que
https://github.com/owner/repo - une URL Git
Règles des places de marché distantes
Pour les places de marché distantes chargées depuis GitHub ou Git, les entrées de Plugin doivent rester dans le dépôt cloné de la place de marché. OpenClaw accepte les sources à chemin relatif provenant de ce dépôt et rejette les sources de Plugin HTTP(S), à chemin absolu, Git, GitHub et les autres sources ne correspondant pas à un chemin dans les manifestes distants.
Pour les chemins locaux et les archives, OpenClaw détecte automatiquement :
- les Plugins OpenClaw natifs (
openclaw.plugin.json) - les ensembles compatibles avec Codex (
.codex-plugin/plugin.json) - les ensembles compatibles avec Claude (
.claude-plugin/plugin.json, ou la disposition par défaut des composants Claude lorsque ce fichier manifeste est absent) - les ensembles compatibles avec Cursor (
.cursor-plugin/plugin.json)
Les installations locales gérées doivent être des répertoires ou des archives de Plugin. Les fichiers de Plugin autonomes .js,
.mjs, .cjs et .ts ne sont pas copiés dans la racine gérée des Plugins
par plugins install, ni chargés lorsqu’ils sont placés directement dans
~/.openclaw/extensions ou <workspace>/.openclaw/extensions ; ces
racines de détection automatique chargent des répertoires de paquet ou d’ensemble de Plugin et ignorent
les fichiers de script de premier niveau en tant qu’utilitaires locaux. Répertoriez plutôt explicitement les fichiers autonomes dans
plugins.load.paths.
Utilisez -l/--link pour référencer un répertoire local de Plugin sans le copier (l’ajoute
à plugins.load.paths) :
openclaw plugins install -l ./my-plugin--link n’est pas pris en charge avec les installations --marketplace ou git:, et
nécessite un chemin local qui existe déjà. Pour créer un lien local sans interaction,
transmettez --force après avoir examiné la source ; cette option confirme la provenance, mais ne
copie ni ne remplace le répertoire lié.
Liste
openclaw plugins listopenclaw plugins list --enabledopenclaw plugins list --verboseopenclaw plugins list --json--enabledbooleanAfficher uniquement les Plugins activés.
--verbosebooleanRemplacer la vue en tableau par des lignes de détails pour chaque Plugin, avec les métadonnées de format/source/origine/version/activation.
--jsonbooleanInventaire lisible par machine, accompagné des diagnostics du registre et de l’état d’installation des dépendances du paquet.
Si le démarrage journalise plugins.allow is empty; discovered non-bundled plugins may auto-load: ...,
exécutez openclaw plugins list --enabled --verbose ou
openclaw plugins inspect <id> avec l’identifiant d’un plugin répertorié pour confirmer les
identifiants des plugins et copier les identifiants fiables dans plugins.allow dans openclaw.json. Lorsque
l’avertissement peut répertorier tous les plugins découverts, il affiche un extrait
plugins.allow prêt à coller qui inclut déjà ces identifiants. Si un plugin se charge
sans provenance d’installation ou de chemin de chargement, inspectez cet identifiant de plugin, puis épinglez
l’identifiant fiable dans plugins.allow ou réinstallez le plugin depuis une source fiable
afin qu’OpenClaw enregistre la provenance de l’installation.
Pour travailler sur un plugin intégré dans une image Docker empaquetée, montez par liaison le répertoire
source du plugin sur le chemin source empaqueté correspondant, par exemple
/app/extensions/synology-chat. OpenClaw découvre cette superposition de sources montée
avant /app/dist/extensions/synology-chat ; un simple répertoire source copié
reste inactif, de sorte que les installations empaquetées normales continuent d’utiliser la distribution compilée.
Pour déboguer les hooks d’exécution :
openclaw plugins inspect <id> --runtime --jsonaffiche les hooks enregistrés et les diagnostics issus d’une passe d’inspection avec chargement du module. L’inspection d’exécution n’installe jamais de dépendances ; utilisezopenclaw doctor --fixpour nettoyer l’état hérité des dépendances ou récupérer les plugins téléchargeables manquants qui sont référencés par la configuration.openclaw gateway status --deep --require-rpcconfirme l’URL et le profil Gateway accessibles, les indications relatives au service et au processus, le chemin de configuration et l’état RPC.- Les hooks de conversation non intégrés (
llm_input,llm_output,before_model_resolve,before_agent_reply,before_agent_run,before_agent_finalize,agent_end) nécessitentplugins.entries.<id>.hooks.allowConversationAccess=true.
Index des plugins
Les métadonnées d’installation des plugins constituent un état géré par la machine, et non une configuration utilisateur. Les installations et les mises à jour les écrivent dans la base de données d’état SQLite partagée, sous le répertoire d’état OpenClaw actif. La ligne installed_plugin_index stocke des métadonnées installRecords durables, notamment des enregistrements pour les manifestes de plugins endommagés ou manquants, ainsi qu’un cache de registre à froid dérivé des manifestes utilisé par openclaw plugins update, la désinstallation, les diagnostics et le registre de plugins à froid.
Lorsqu’OpenClaw détecte dans la configuration des enregistrements hérités plugins.installs provenant d’une version publiée, les lectures à l’exécution les traitent comme des données de compatibilité sans réécrire openclaw.json. Les écritures explicites de plugins et openclaw doctor --fix déplacent ces enregistrements vers l’index des plugins et suppriment la clé de configuration lorsque les écritures de configuration sont autorisées ; si l’une ou l’autre écriture échoue, les enregistrements de configuration sont conservés afin de ne pas perdre les métadonnées d’installation.
Désinstallation
openclaw plugins uninstall <id>openclaw plugins uninstall <id> --dry-runopenclaw plugins uninstall <id> --keep-filesopenclaw plugins uninstall <id> --forceuninstall supprime les enregistrements du plugin de plugins.entries, de l’index persistant des plugins, des entrées des listes d’autorisation et de refus des plugins, ainsi que des entrées plugins.load.paths liées, le cas échéant. Sauf si --keep-files est défini, la désinstallation supprime également le répertoire d’installation géré suivi, mais uniquement si son chemin résolu se trouve dans la racine des extensions de plugins d’OpenClaw. Si le plugin occupe actuellement l’emplacement memory ou contextEngine, cet emplacement est réinitialisé à sa valeur par défaut (memory-core pour la mémoire, legacy pour le moteur de contexte).
uninstall affiche un aperçu de ce qui sera supprimé, puis demande Uninstall plugin "<id>"? avant d’appliquer les modifications. Passez --force pour ignorer la demande de confirmation, ce qui est utile pour les scripts et les exécutions non interactives ; sans cette option, la désinstallation nécessite un TTY interactif. --dry-run affiche le même aperçu et se termine sans demander de confirmation ni modifier quoi que ce soit.
Mise à jour
openclaw plugins update <id-or-npm-spec>openclaw plugins update --allopenclaw plugins update <id-or-npm-spec> --dry-runopenclaw plugins update @openclaw/voice-callopenclaw plugins update @acme/demoopenclaw plugins update openclaw-codex-app-server --acknowledge-clawhub-riskopenclaw plugins update openclaw-codex-app-server --dangerously-force-unsafe-installLes mises à jour s’appliquent aux installations de plugins suivies dans l’index géré des plugins et aux installations de paquets de hooks suivies dans hooks.internal.installs. Elles réutilisent la source déjà choisie par l’utilisateur lors de l’installation du plugin et ne nécessitent donc pas une seconde acceptation de la source.
Résolution de l’identifiant du plugin par rapport à la spécification npm
Lorsque vous transmettez un identifiant de plugin, OpenClaw réutilise la spécification d’installation enregistrée pour ce plugin. Les balises de distribution précédemment stockées, telles que @beta, et les versions exactes épinglées continuent donc d’être utilisées lors des exécutions ultérieures de update <id>.
Pendant update <id> --dry-run, les installations npm épinglées à une version exacte le restent. Si OpenClaw peut également résoudre la ligne par défaut du registre du paquet et que celle-ci est plus récente que la version épinglée installée, la simulation signale l’épinglage et affiche la commande explicite de mise à jour du paquet @latest permettant de suivre la ligne par défaut du registre.
Cette règle de mise à jour ciblée diffère du parcours de maintenance en masse openclaw plugins update --all. Les mises à jour en masse respectent toujours les spécifications d’installation suivies ordinaires, mais les enregistrements fiables de plugins OpenClaw officiels peuvent se synchroniser avec la cible actuelle du catalogue officiel au lieu de rester sur un ancien paquet officiel à version exacte. Utilisez la commande ciblée update <id> lorsque vous souhaitez intentionnellement conserver intacte une spécification officielle exacte ou balisée.
Pour les installations npm, vous pouvez également transmettre une spécification explicite de paquet npm avec une balise de distribution ou une version exacte. OpenClaw associe ce nom de paquet à l’enregistrement de plugin suivi, met à jour ce plugin installé et enregistre la nouvelle spécification npm pour les futures mises à jour basées sur l’identifiant.
Le fait de transmettre le nom du paquet npm sans version ni balise permet également de retrouver l’enregistrement de plugin suivi. Utilisez cette méthode lorsqu’un plugin était épinglé à une version exacte et que vous souhaitez le replacer sur la ligne de publication par défaut du registre.
Mises à jour du canal bêta
La commande ciblée openclaw plugins update <id-or-npm-spec> réutilise la spécification de plugin suivie, sauf si vous transmettez une nouvelle spécification. La commande en masse openclaw plugins update --all utilise le paramètre update.channel configuré lorsqu’elle synchronise les enregistrements fiables de plugins officiels avec la cible du catalogue officiel, afin que les installations du canal bêta puissent rester sur la ligne de publication bêta au lieu d’être silencieusement normalisées vers stable/latest.
openclaw update connaît également le canal de mise à jour OpenClaw actif : sur le canal bêta, les enregistrements de plugins npm de la ligne par défaut et de ClawHub essaient d’abord @beta. Ils reviennent à la spécification default/latest enregistrée si aucune version bêta du plugin n’existe ; les plugins npm utilisent également cette solution de repli lorsque le paquet bêta existe mais échoue à la validation de l’installation. Cette solution de repli est signalée par un avertissement et ne fait pas échouer la mise à jour du cœur. Les versions exactes et les balises explicites restent épinglées à ce sélecteur pour les mises à jour ciblées.
Vérifications de version et dérive d’intégrité
Avant une mise à jour npm réelle, OpenClaw compare la version du paquet installé aux métadonnées du registre npm. Si la version installée et l’identité d’artefact enregistrée correspondent déjà à la cible résolue, la mise à jour est ignorée sans téléchargement, réinstallation ni réécriture de openclaw.json.
Lorsqu’un hachage d’intégrité stocké existe et que le hachage de l’artefact récupéré change, OpenClaw considère cela comme une dérive de l’artefact npm. La commande interactive openclaw plugins update affiche les hachages attendu et réel et demande confirmation avant de poursuivre. Les assistants de mise à jour non interactifs échouent par défaut, sauf si l’appelant fournit une politique explicite de poursuite.
--dangerously-force-unsafe-install lors de la mise à jour
--dangerously-force-unsafe-install est également accepté avec plugins update à des fins de compatibilité, mais il est obsolète et ne modifie plus le comportement de mise à jour des plugins. La configuration security.installPolicy de l’opérateur peut toujours bloquer les mises à jour ; les hooks before_install du plugin s’appliquent uniquement dans les processus où les hooks de plugins sont chargés.
--acknowledge-clawhub-risk lors de la mise à jour
Les mises à jour de plugins communautaires provenant de ClawHub exécutent la même vérification de confiance de la version exacte que les installations avant de télécharger le paquet de remplacement. Utilisez --acknowledge-clawhub-risk pour les automatisations examinées qui doivent continuer lorsque la version ClawHub sélectionnée présente un avertissement de confiance risqué. Les paquets ClawHub officiels et les sources de plugins OpenClaw intégrés contournent cette demande de confirmation liée à la confiance de la version.
Inspection
openclaw plugins inspect <id>openclaw plugins inspect <id> --runtimeopenclaw plugins inspect <id> --jsonopenclaw plugins inspect --allPar défaut, l’inspection affiche l’identité, l’état de chargement, la source, les capacités du manifeste, les indicateurs de politique, les diagnostics, les métadonnées d’installation, les capacités du paquet et toute prise en charge détectée de serveurs MCP ou LSP, sans importer le code d’exécution du plugin. La sortie JSON inclut les contrats du manifeste du plugin, tels que contracts.agentToolResultMiddleware et contracts.trustedToolPolicies, afin que les opérateurs puissent auditer les déclarations des surfaces fiables avant d’activer ou de redémarrer un plugin. Ajoutez --runtime pour charger le module du plugin et inclure les hooks, outils, commandes, services, méthodes du Gateway et routes HTTP enregistrés. L’inspection d’exécution signale directement les dépendances de plugin manquantes ; les installations et réparations restent assurées par openclaw plugins install, openclaw plugins update et openclaw doctor --fix.
Les commandes CLI appartenant aux plugins sont généralement installées sous forme de groupes de commandes openclaw à la racine, mais les plugins peuvent également enregistrer des commandes imbriquées sous un parent du cœur tel que openclaw nodes. Une fois que inspect --runtime affiche une commande sous cliCommands, exécutez-la au chemin indiqué ; par exemple, un plugin qui enregistre demo-git peut être vérifié avec openclaw demo-git ping.
Chaque plugin est classé selon ce qu’il enregistre réellement à l’exécution :
| Forme | Signification |
|---|---|
plain-capability |
exactement un type de capacité (par exemple, un plugin uniquement fournisseur) |
hybrid-capability |
plusieurs types de capacités (par exemple, texte + parole + images) |
hook-only |
uniquement des hooks, sans capacités, outils, commandes, services ni routes |
non-capability |
outils, commandes ou services, mais aucune capacité |
Consultez Formes de plugins pour en savoir plus sur le modèle de capacités.
Doctor
openclaw plugins doctordoctor signale les erreurs de chargement des plugins, les diagnostics de manifeste/découverte, les avis de compatibilité et les références obsolètes de configuration de plugins, telles que des emplacements de plugins manquants. Lorsque l’arborescence d’installation et la configuration des plugins sont propres, il affiche No plugin issues detected. Si une configuration obsolète subsiste, mais que l’arborescence d’installation est par ailleurs saine, le résumé l’indique au lieu de laisser entendre que tous les plugins sont sains.
Si un plugin configuré est présent sur le disque, mais bloqué par les contrôles de sécurité des chemins du chargeur, la validation de la configuration conserve l’entrée du plugin et la signale comme present but blocked. Corrigez le diagnostic précédent concernant le plugin bloqué, par exemple la propriété du chemin ou les autorisations d’écriture pour tous, au lieu de supprimer la configuration plugins.entries.<id> ou plugins.allow.
Pour les échecs liés à la structure du module, tels que des exports register/activate manquants, relancez avec OPENCLAW_PLUGIN_LOAD_DEBUG=1 afin d’inclure un résumé compact de la structure des exports dans la sortie de diagnostic.
Registre
openclaw plugins registryopenclaw plugins registry --refreshopenclaw plugins registry --jsonLe registre local des plugins est le modèle de lecture à froid persistant d’OpenClaw pour l’identité des plugins installés, leur activation, les métadonnées de leur source et la propriété de leurs contributions. Le démarrage normal, la recherche du propriétaire d’un fournisseur, la classification de la configuration des canaux et l’inventaire des plugins peuvent le consulter sans importer les modules d’exécution des plugins.
Utilisez plugins registry pour vérifier si le registre persistant est présent, à jour ou obsolète. Utilisez --refresh pour le reconstruire à partir de l’index persistant des plugins, de la politique de configuration et des métadonnées des manifestes/paquets. Il s’agit d’une procédure de réparation, et non d’une procédure d’activation à l’exécution.
openclaw doctor --fix répare également les dérives npm gérées adjacentes au registre : si un paquet @openclaw/* orphelin ou récupéré, situé dans un projet npm de plugin géré ou dans l’ancienne racine npm gérée à plat, masque un plugin intégré, doctor supprime ce paquet obsolète et reconstruit le registre afin que le démarrage effectue la validation par rapport au manifeste intégré. Doctor recrée également le lien vers le paquet hôte openclaw dans les plugins npm gérés qui déclarent peerDependencies.openclaw, afin que les imports d’exécution locaux au paquet, tels que openclaw/plugin-sdk/*, soient résolus après des mises à jour ou des réparations npm.
Place de marché
openclaw plugins marketplace entriesopenclaw plugins marketplace entries --offlineopenclaw plugins marketplace entries --jsonopenclaw plugins marketplace entries --feed-profile <name>openclaw plugins marketplace entries --feed-url <url>openclaw plugins marketplace list <source>openclaw plugins marketplace list <source> --jsonopenclaw plugins marketplace refreshopenclaw plugins marketplace refresh --feed-profile <name>openclaw plugins marketplace refresh --feed-url <url>openclaw plugins marketplace refresh --expected-sha256 <sha256> --jsonplugins marketplace entries répertorie les entrées du flux de place de marché OpenClaw configuré. Par défaut, il tente d’utiliser le flux hébergé et se rabat sur le dernier instantané accepté ou les données intégrées. Utilisez --feed-profile <name> pour lire un profil configuré spécifique, --feed-url <url> pour lire une URL explicite de flux hébergé et --offline pour lire le dernier instantané accepté sans récupérer le flux.
plugins marketplace refresh actualise l’instantané du flux hébergé configuré et indique si OpenClaw a accepté les données hébergées, un instantané hébergé ou les données intégrées de repli. Utilisez --expected-sha256 lorsqu’un appelant exige que la commande échoue à moins qu’une charge utile hébergée récente corresponde à une somme de contrôle épinglée.
La commande list de la place de marché accepte un chemin local de place de marché, un chemin marketplace.json, un raccourci GitHub tel que owner/repo, une URL de dépôt GitHub ou une URL git. --json affiche le libellé de la source résolue, ainsi que le manifeste analysé de la place de marché et les entrées de plugins.
L’actualisation de la place de marché charge un flux hébergé de la place de marché OpenClaw et conserve la
réponse validée en tant qu’instantané local du flux hébergé. Sans option, elle utilise
le profil de flux par défaut configuré. Utilisez --feed-profile <name> pour actualiser un
profil configuré spécifique, --feed-url <url> pour actualiser une URL explicite de
flux hébergé, --expected-sha256 <sha256> pour exiger une somme de contrôle de charge utile correspondante
(sha256:<hex> ou un condensé hexadécimal brut de 64 caractères), et --json pour
une sortie lisible par une machine. Les URL explicites de flux hébergés ne doivent pas contenir
d’identifiants, de chaînes de requête ni de fragments. Les actualisations non épinglées peuvent signaler
un instantané hébergé ou un résultat de repli sur les données intégrées sans faire échouer la commande. Les actualisations
épinglées échouent sauf si elles acceptent une nouvelle charge utile hébergée, et les actualisations hébergées
réussies échouent si OpenClaw ne peut pas conserver l’instantané validé.