Plugins
Plugins
Les plugins étendent OpenClaw avec de nouvelles capacités : canaux, fournisseurs de modèles, harnais d’agents, outils, Skills, parole, transcription en temps réel, voix en temps réel, compréhension des médias, génération d’images, génération de vidéos, récupération web, recherche web, et plus encore. Certains plugins sont noyau (livrés avec OpenClaw), d’autres sont externes. La plupart des plugins externes sont publiés et découverts via ClawHub. Npm reste pris en charge pour les installations directes et pour un ensemble temporaire de packages de plugins détenus par OpenClaw pendant que cette migration se termine.
Démarrage rapide
Pour des exemples d’installation, de liste, de désinstallation, de mise à jour et de publication à copier-coller, consultez Gérer les plugins.
Voir ce qui est chargé
openclaw plugins list
Installer un plugin
# Search ClawHub plugins
openclaw plugins search "calendar"
# From ClawHub
openclaw plugins install clawhub:openclaw-codex-app-server
# From npm
openclaw plugins install npm:@acme/openclaw-plugin
openclaw plugins install npm-pack:./openclaw-plugin-1.2.3.tgz
# From git
openclaw plugins install git:github.com/acme/[email protected]
# From a local directory or archive
openclaw plugins install ./my-plugin
openclaw plugins install ./my-plugin.tgz
Redémarrer le Gateway
openclaw gateway restart
Configurez ensuite sous plugins.entries.\<id\>.config dans votre fichier de configuration.
Gestion native dans le chat
Dans un Gateway en cours d’exécution, /plugins enable et /plugins disable, réservés au propriétaire,
déclenchent le rechargeur de configuration du Gateway. Le Gateway recharge les surfaces d’exécution
du plugin dans le processus, et les nouveaux tours d’agent reconstruisent leur liste d’outils depuis le
registre actualisé. /plugins install modifie le code source du plugin, le
Gateway demande donc un redémarrage au lieu de prétendre que le processus actuel peut
recharger en toute sécurité des modules déjà importés.
Vérifier le plugin
openclaw plugins inspect <plugin-id> --runtime --json
# If the plugin registered a CLI root, run one command from that root.
openclaw <plugin-command> --help
Utilisez --runtime lorsque vous devez prouver les outils, services, méthodes Gateway,
hooks ou commandes CLI appartenant au plugin qui sont enregistrés. Un simple inspect est une vérification à froid
du manifeste/registre et évite intentionnellement d’importer l’exécution du plugin.
Si vous préférez le contrôle natif dans le chat, activez commands.plugins: true et utilisez :
/plugin install clawhub:<package>
/plugin show <plugin-id>
/plugin enable <plugin-id>
Le chemin d’installation utilise le même résolveur que la CLI : chemin/archive local, explicite
clawhub:<pkg>, explicite npm:<pkg>, explicite npm-pack:<path.tgz>,
explicite git:<repo>, ou spécification de package nue via npm.
Si la configuration est invalide, l’installation échoue normalement de manière fermée et vous renvoie vers
openclaw doctor --fix. La seule exception de récupération est un chemin étroit de
réinstallation de plugin livré pour les plugins qui optent pour
openclaw.install.allowInvalidConfigRecovery.
Pendant le démarrage du Gateway, une configuration de plugin invalide échoue de manière fermée comme toute autre configuration
invalide. Exécutez openclaw doctor --fix pour mettre en quarantaine la mauvaise configuration du plugin en
désactivant cette entrée de plugin et en supprimant sa charge utile de configuration invalide ; la sauvegarde
normale de la configuration conserve les valeurs précédentes.
Lorsqu’une configuration de canal référence un plugin qui n’est plus découvrable mais que le
même identifiant de plugin obsolète reste dans la configuration de plugin ou les enregistrements d’installation, le démarrage du Gateway
journalise des avertissements et ignore ce canal au lieu de bloquer tous les autres canaux.
Exécutez openclaw doctor --fix pour supprimer les entrées de canal/plugin obsolètes ; les clés de canal
inconnues sans preuve de plugin obsolète échouent toujours à la validation afin que les fautes de frappe restent
visibles.
Si plugins.enabled: false est défini, les références de plugins obsolètes sont traitées comme inertes :
le démarrage du Gateway ignore le travail de découverte/chargement des plugins et openclaw doctor préserve
la configuration de plugin désactivée au lieu de la supprimer automatiquement. Réactivez les plugins avant
d’exécuter le nettoyage doctor si vous voulez supprimer les identifiants de plugins obsolètes.
L’installation des dépendances de plugin n’a lieu que pendant les flux explicites d’installation/mise à jour ou
de réparation doctor. Le démarrage du Gateway, le rechargement de configuration et l’inspection d’exécution
n’exécutent pas de gestionnaires de packages et ne réparent pas les arbres de dépendances. Les plugins locaux doivent déjà
avoir leurs dépendances installées, tandis que les plugins npm, git et ClawHub sont
installés sous les racines de plugins gérées par OpenClaw. Les dépendances npm peuvent être hissées
dans la racine npm gérée par OpenClaw ; l’installation/mise à jour analyse cette racine gérée avant
la confiance et la désinstallation supprime les packages gérés par npm via npm. Les plugins externes
et les chemins de chargement personnalisés doivent toujours être installés via openclaw plugins install.
Utilisez openclaw plugins list --json pour voir le dependencyStatus statique de chaque
plugin visible sans importer de code d’exécution ni réparer les dépendances.
Consultez Résolution des dépendances de plugin pour le
cycle de vie au moment de l’installation.
Propriété du chemin de plugin bloqué
Si les diagnostics de plugin indiquent
blocked plugin candidate: suspicious ownership (... uid=1000, expected uid=0 or root)
et que la validation de configuration suit avec plugin present but blocked, OpenClaw a trouvé
des fichiers de plugin appartenant à un utilisateur Unix différent de celui du processus qui les charge.
Conservez la configuration du plugin en place ; corrigez la propriété du système de fichiers ou exécutez
OpenClaw avec le même utilisateur que celui qui possède le répertoire d’état.
Pour les installations Docker, l’image officielle s’exécute en tant que node (uid 1000), donc les
répertoires de configuration et d’espace de travail OpenClaw montés depuis l’hôte devraient normalement
appartenir à l’uid 1000 :
sudo chown -R 1000:1000 /path/to/openclaw-config /path/to/openclaw-workspace
Si vous exécutez intentionnellement OpenClaw en tant que root, réparez plutôt la racine de plugin gérée pour qu’elle appartienne à root :
sudo chown -R root:root /path/to/openclaw-config/npm
Après avoir corrigé la propriété, réexécutez openclaw doctor --fix ou
openclaw plugins registry --refresh afin que le registre de plugins persistant corresponde
aux fichiers réparés.
Pour les installations npm, les sélecteurs mutables tels que latest ou un dist-tag sont résolus
avant l’installation puis épinglés à la version exacte vérifiée dans la racine npm
gérée par OpenClaw. Une fois npm terminé, OpenClaw vérifie que l’entrée
package-lock.json installée correspond toujours à la version résolue et à l’intégrité. Si
npm écrit des métadonnées de package différentes, l’installation échoue et le package géré
est restauré au lieu d’accepter un artefact de plugin différent.
Les racines npm gérées héritent également des overrides npm au niveau package d’OpenClaw, de sorte que
les épingles de sécurité qui protègent l’hôte empaqueté s’appliquent aussi aux dépendances de plugins
externes hissées.
Les extractions de source sont des workspaces pnpm. Si vous clonez OpenClaw pour modifier des plugins
livrés, exécutez pnpm install ; OpenClaw charge alors les plugins livrés depuis
extensions/<id> afin que les modifications et les dépendances locales au package soient utilisées directement.
Les installations de racine npm simples sont destinées à OpenClaw empaqueté, pas au développement
sur extraction de source.
Types de plugins
OpenClaw reconnaît deux formats de plugins :
| Format | Fonctionnement | Exemples |
|---|---|---|
| Natif | openclaw.plugin.json + module d’exécution ; s’exécute dans le processus |
Plugins officiels, packages npm communautaires |
| Bundle | Disposition compatible Codex/Claude/Cursor ; mappée aux fonctionnalités OpenClaw | .codex-plugin/, .claude-plugin/, .cursor-plugin/ |
Les deux apparaissent sous openclaw plugins list. Consultez Bundles de plugins pour les détails des bundles.
Si vous écrivez un plugin natif, commencez par Créer des plugins et la Présentation du SDK Plugin.
Points d’entrée des packages
Les packages npm de plugins natifs doivent déclarer openclaw.extensions dans package.json.
Chaque entrée doit rester dans le répertoire du package et se résoudre vers un fichier d’exécution
lisible, ou vers un fichier source TypeScript avec un pair JavaScript compilé inféré
tel que src/index.ts vers dist/index.js.
Les installations empaquetées doivent livrer cette sortie d’exécution JavaScript. Le repli sur la source
TypeScript est destiné aux extractions de source et aux chemins de développement local, pas aux
packages npm installés dans la racine de plugins gérée par OpenClaw.
Si un avertissement de package géré indique qu’il requires compiled runtime output for TypeScript entry ..., le package a été publié sans les fichiers JavaScript
dont OpenClaw a besoin à l’exécution. Il s’agit d’un problème d’empaquetage du plugin, pas d’un problème de configuration
locale. Mettez à jour ou réinstallez le plugin après que l’éditeur a republié le JavaScript
compilé, ou désactivez/désinstallez ce plugin jusqu’à ce qu’un package corrigé soit disponible.
Utilisez openclaw.runtimeExtensions lorsque les fichiers d’exécution publiés ne se trouvent pas aux
mêmes chemins que les entrées source. Lorsqu’il est présent, runtimeExtensions doit contenir
exactement une entrée pour chaque entrée extensions. Les listes non concordantes font échouer l’installation et
la découverte du plugin plutôt que de revenir silencieusement aux chemins source. Si vous publiez aussi
openclaw.setupEntry, utilisez openclaw.runtimeSetupEntry pour son pair JavaScript
compilé ; ce fichier est requis lorsqu’il est déclaré.
{
"name": "@acme/openclaw-plugin",
"openclaw": {
"extensions": ["./src/index.ts"],
"runtimeExtensions": ["./dist/index.js"]
}
}
Plugins officiels
Packages npm détenus par OpenClaw pendant la migration
ClawHub est le chemin de distribution principal pour la plupart des plugins. Les versions OpenClaw
empaquetées actuelles intègrent déjà de nombreux plugins officiels, ils n’ont donc pas besoin
d’installations npm séparées dans les configurations normales. Jusqu’à ce que chaque plugin détenu par OpenClaw ait
migré vers ClawHub, OpenClaw livre encore certains packages de plugins @openclaw/* sur
npm pour les installations plus anciennes/personnalisées et les flux de travail npm directs.
Si npm signale un package de plugin @openclaw/* comme obsolète, cette version de package
provient d’une ancienne série de packages externes. Utilisez le plugin livré avec
OpenClaw actuel ou une extraction locale jusqu’à ce qu’un package npm plus récent soit publié.
| Plugin | Package | Documentation |
|---|---|---|
| BlueBubbles | @openclaw/bluebubbles |
BlueBubbles |
| Discord | @openclaw/discord |
Discord |
| Feishu | @openclaw/feishu |
Feishu |
| Matrix | @openclaw/matrix |
Matrix |
| Mattermost | @openclaw/mattermost |
Mattermost |
| Microsoft Teams | @openclaw/msteams |
Microsoft Teams |
| Nextcloud Talk | @openclaw/nextcloud-talk |
Nextcloud Talk |
| Nostr | @openclaw/nostr |
Nostr |
| Synology Chat | @openclaw/synology-chat |
Synology Chat |
| Tlon | @openclaw/tlon |
Tlon |
@openclaw/whatsapp |
||
| Zalo | @openclaw/zalo |
Zalo |
| Zalo Personal | @openclaw/zalouser |
Zalo Personal |
Noyau (livré avec OpenClaw)
Fournisseurs de modèles (activés par défaut)
anthropic, byteplus, cloudflare-ai-gateway, github-copilot, google,
huggingface, kilocode, kimi-coding, minimax, mistral, qwen,
moonshot, nvidia, openai, opencode, opencode-go, openrouter,
qianfan, synthetic, together, venice,
vercel-ai-gateway, volcengine, xiaomi, zai
Plugins de mémoire
memory-core- recherche mémoire intégrée (par défaut viaplugins.slots.memory)memory-lancedb- mémoire à long terme basée sur LanceDB avec rappel/capture automatique (définissezplugins.slots.memory = "memory-lancedb")
Consultez Memory LanceDB pour la configuration des embeddings compatibles OpenAI, des exemples Ollama, les limites de rappel et le dépannage.
Fournisseurs de parole (activés par défaut)
elevenlabs, microsoft
Autre
browser- plugin de navigateur intégré pour l’outil de navigateur, la CLIopenclaw browser, la méthode Gatewaybrowser.request, l’exécution du navigateur et le service de contrôle du navigateur par défaut (activé par défaut ; désactivez-le avant de le remplacer)copilot-proxy- pont VS Code Copilot Proxy (désactivé par défaut)
Vous cherchez des plugins tiers ? Consultez Plugins de la communauté.
Configuration
{
plugins: {
enabled: true,
allow: ["voice-call"],
deny: ["untrusted-plugin"],
load: { paths: ["~/Projects/oss/voice-call-plugin"] },
entries: {
"voice-call": { enabled: true, config: { provider: "twilio" } },
},
},
}
| Champ | Description |
|---|---|
enabled |
Bascule principale (par défaut : true) |
allow |
Liste d’autorisation des plugins (facultatif) |
bundledDiscovery |
Mode de découverte des plugins intégrés (allowlist par défaut) |
deny |
Liste de refus des plugins (facultatif ; le refus l’emporte) |
load.paths |
Fichiers/répertoires de plugins supplémentaires |
slots |
Sélecteurs d’emplacements exclusifs (p. ex. memory, contextEngine) |
entries.\<id\> |
Bascules + configuration par plugin |
plugins.allow est exclusif. Lorsqu’il n’est pas vide, seuls les plugins listés peuvent être chargés
ou exposer des outils, même si tools.allow contient "*" ou un nom d’outil
spécifique appartenant à un plugin. Si une liste d’autorisation d’outils référence des outils de plugin, ajoutez les ids des plugins propriétaires
à plugins.allow ou supprimez plugins.allow ; openclaw doctor avertit de cette
configuration.
plugins.bundledDiscovery vaut par défaut "allowlist" pour les nouvelles configurations, donc un
inventaire restrictif plugins.allow bloque aussi les plugins de fournisseurs intégrés
omis, y compris la découverte des fournisseurs de recherche web à l’exécution. Doctor marque les anciennes
configurations restrictives de liste d’autorisation avec "compat" pendant la migration afin que les mises à niveau conservent
le comportement historique des fournisseurs intégrés jusqu’à ce que l’opérateur opte pour le mode plus strict.
Un plugins.allow vide est toujours traité comme non défini/ouvert.
Les modifications de configuration effectuées via /plugins enable ou /plugins disable déclenchent un
rechargement de plugin Gateway dans le processus. Les nouveaux tours d’agent reconstruisent leur liste d’outils à partir
du registre de plugins actualisé. Les opérations qui modifient les sources, comme l’installation,
la mise à jour et la désinstallation, redémarrent toujours le processus Gateway, car les modules de plugin déjà importés
ne peuvent pas être remplacés sur place en toute sécurité.
openclaw plugins list est un instantané local du registre/de la configuration des plugins. Un plugin
enabled à cet endroit signifie que le registre persistant et la configuration actuelle autorisent le
plugin à participer. Cela ne prouve pas qu’un Gateway distant déjà en cours d’exécution
s’est rechargé ou redémarré avec le même code de plugin. Sur les configurations VPS/conteneur
avec des processus enveloppes, envoyez les redémarrages ou les écritures déclenchant un rechargement au véritable
processus openclaw gateway run, ou utilisez openclaw gateway restart sur le
Gateway en cours d’exécution lorsque le rechargement signale un échec.
États des plugins : désactivé, manquant ou invalide
- Désactivé : le plugin existe, mais les règles d’activation l’ont désactivé. La configuration est conservée.
- Manquant : la configuration référence un id de plugin que la découverte n’a pas trouvé.
- Invalide : le plugin existe, mais sa configuration ne correspond pas au schéma déclaré. Le démarrage du Gateway ignore seulement ce plugin ;
openclaw doctor --fixpeut mettre en quarantaine l’entrée invalide en la désactivant et en supprimant sa charge utile de configuration.
Découverte et précédence
OpenClaw recherche les plugins dans cet ordre (la première correspondance l’emporte) :
Chemins de configuration
plugins.load.paths - chemins explicites de fichier ou de répertoire. Les chemins qui pointent
vers les propres répertoires de plugins intégrés empaquetés d’OpenClaw sont ignorés ;
exécutez openclaw doctor --fix pour supprimer ces alias obsolètes.
Plugins d’espace de travail
\<workspace\>/.openclaw/<plugin-root>/*.ts et \<workspace\>/.openclaw/<plugin-root>/*/index.ts.
Plugins globaux
~/.openclaw/<plugin-root>/*.ts et ~/.openclaw/<plugin-root>/*/index.ts.
Plugins intégrés
Fournis avec OpenClaw. Beaucoup sont activés par défaut (fournisseurs de modèles, parole). D’autres nécessitent une activation explicite.
Les installations empaquetées et les images Docker résolvent normalement les plugins intégrés depuis l’arborescence
compilée dist/extensions. Si un répertoire source de plugin intégré est
monté par bind mount sur le chemin source empaqueté correspondant, par exemple
/app/extensions/synology-chat, OpenClaw traite ce répertoire source monté
comme une surcouche source intégrée et le découvre avant le bundle empaqueté
/app/dist/extensions/synology-chat. Cela permet aux boucles de conteneur des mainteneurs
de fonctionner sans rebasculer chaque plugin intégré vers les sources TypeScript.
Définissez OPENCLAW_DISABLE_BUNDLED_SOURCE_OVERLAYS=1 pour forcer les bundles dist empaquetés
même lorsque des montages de surcouche source sont présents.
Règles d’activation
plugins.enabled: falsedésactive tous les plugins et ignore le travail de découverte/chargement des pluginsplugins.denyl’emporte toujours sur l’autorisationplugins.entries.\<id\>.enabled: falsedésactive ce plugin- Les plugins issus de l’espace de travail sont désactivés par défaut (ils doivent être explicitement activés)
- Les plugins intégrés suivent l’ensemble intégré activé par défaut, sauf substitution
- Les emplacements exclusifs peuvent forcer l’activation du plugin sélectionné pour cet emplacement
- Certains plugins intégrés à activation explicite sont activés automatiquement lorsque la configuration nomme une surface appartenant à un plugin, comme une référence de modèle de fournisseur, une configuration de canal ou une exécution de harnais
- La configuration de plugin obsolète est conservée tant que
plugins.enabled: falseest actif ; réactivez les plugins avant d’exécuter le nettoyage doctor si vous voulez supprimer les ids obsolètes - Les routes Codex de la famille OpenAI conservent des limites de plugin séparées :
openai-codex/*appartient au plugin OpenAI, tandis que le plugin serveur d’application Codex intégré est sélectionné paragentRuntime.id: "codex"ou les références de modèle historiquescodex/*
Dépannage des hooks d’exécution
Si un plugin apparaît dans plugins list, mais que les effets de bord ou hooks
register(api) ne s’exécutent pas dans le trafic de chat en direct, vérifiez d’abord ceci :
- Exécutez
openclaw gateway status --deep --require-rpcet confirmez que l’URL, le profil, le chemin de configuration et le processus Gateway actifs sont bien ceux que vous modifiez. - Redémarrez le Gateway en direct après les modifications d’installation/de configuration/de code de plugin. Dans les conteneurs enveloppes,
le PID 1 peut n’être qu’un superviseur ; redémarrez ou signalez le processus enfant
openclaw gateway run. - Utilisez
openclaw plugins inspect <id> --runtime --jsonpour confirmer les enregistrements de hooks et les diagnostics. Les hooks de conversation non intégrés commebefore_model_resolve,before_agent_reply,before_agent_run,llm_input,llm_output,before_agent_finalizeetagent_endnécessitentplugins.entries.<id>.hooks.allowConversationAccess=true. - Pour le changement de modèle, préférez
before_model_resolve. Il s’exécute avant la résolution du modèle pour les tours d’agent ;llm_outputne s’exécute qu’après qu’une tentative de modèle produit une sortie d’assistant. - Pour prouver le modèle de session effectif, utilisez
openclaw sessionsou les surfaces de session/statut Gateway et, lors du débogage des charges utiles de fournisseur, démarrez le Gateway avec--raw-stream --raw-stream-path <path>.
Configuration lente des outils de plugin
Si les tours d’agent semblent se bloquer pendant la préparation des outils, activez la journalisation de trace et recherchez les lignes de minutage des fabriques d’outils de plugin :
openclaw config set logging.level trace
openclaw logs --follow
Recherchez :
[trace:plugin-tools] factory timings ...
Le résumé liste le temps total de fabrique et les fabriques d’outils de plugin les plus lentes, y compris l’id du plugin, les noms d’outils déclarés, la forme du résultat et si l’outil est facultatif. Les lignes lentes sont promues en avertissements lorsqu’une fabrique unique prend au moins 1 s ou que la préparation totale des fabriques d’outils de plugin prend au moins 5 s.
OpenClaw met en cache les résultats réussis des fabriques d’outils de plugin pour les résolutions répétées avec le même contexte de requête effectif. La clé de cache inclut la configuration d’exécution effective, l’espace de travail, les ids d’agent/session, la politique de bac à sable, les paramètres du navigateur, le contexte de livraison, l’identité du demandeur et l’état de propriété, donc les fabriques qui dépendent de ces champs fiables sont réexécutées lorsque le contexte change.
Si un plugin domine le minutage, inspectez ses enregistrements d’exécution :
openclaw plugins inspect <plugin-id> --runtime --json
Ensuite, mettez à jour, réinstallez ou désactivez ce plugin. Les auteurs de plugins devraient déplacer le chargement coûteux des dépendances derrière le chemin d’exécution de l’outil au lieu de le faire dans la fabrique d’outils.
Propriété de canal ou d’outil dupliquée
Symptômes :
channel already registered: <channel-id> (<plugin-id>)channel setup already registered: <channel-id> (<plugin-id>)plugin tool name conflict (<plugin-id>): <tool-name>
Cela signifie que plus d’un plugin activé tente de posséder le même canal, flux de configuration ou nom d’outil. La cause la plus fréquente est un plugin de canal externe installé à côté d’un plugin intégré qui fournit maintenant le même id de canal.
Étapes de débogage :
- Exécutez
openclaw plugins list --enabled --verbosepour voir chaque plugin activé et son origine. - Exécutez
openclaw plugins inspect <id> --runtime --jsonpour chaque plugin suspecté et comparezchannels,channelConfigs,toolset les diagnostics. - Exécutez
openclaw plugins registry --refreshaprès l’installation ou la suppression de packages de plugins afin que les métadonnées persistantes reflètent l’installation actuelle. - Redémarrez le Gateway après les modifications d’installation, de registre ou de configuration.
Options de correction :
- Si un plugin en remplace intentionnellement un autre pour le même id de canal, le
plugin préféré doit déclarer
channelConfigs.<channel-id>.preferOveravec l’id du plugin de priorité inférieure. Consultez /plugins/manifest#replacing-another-channel-plugin. - Si le doublon est accidentel, désactivez un côté avec
plugins.entries.<plugin-id>.enabled: falseou supprimez l’installation de plugin obsolète. - Si vous avez explicitement activé les deux plugins, OpenClaw conserve cette demande et signale le conflit. Choisissez un propriétaire pour le canal ou renommez les outils appartenant au plugin afin que la surface d’exécution soit sans ambiguïté.
Emplacements de plugins (catégories exclusives)
Certaines catégories sont exclusives (une seule active à la fois) :
{
plugins: {
slots: {
memory: "memory-core", // or "none" to disable
contextEngine: "legacy", // or a plugin id
},
},
}
| Emplacement | Ce qu’il contrôle | Par défaut |
|---|---|---|
memory |
Plugin de mémoire active | memory-core |
contextEngine |
Moteur de contexte actif | legacy (intégré) |
Référence CLI
openclaw plugins list # compact inventory
openclaw plugins list --enabled # only enabled plugins
openclaw plugins list --verbose # per-plugin detail lines
openclaw plugins list --json # machine-readable inventory
openclaw plugins search <query> # search ClawHub plugin catalog
openclaw plugins inspect <id> # static detail
openclaw plugins inspect <id> --runtime # registered hooks/tools/CLI/gateway methods
openclaw plugins inspect <id> --json # machine-readable
openclaw plugins inspect --all # fleet-wide table
openclaw plugins info <id> # inspect alias
openclaw plugins doctor # diagnostics
openclaw plugins registry # inspect persisted registry state
openclaw plugins registry --refresh # rebuild persisted registry
openclaw doctor --fix # repair plugin registry state
openclaw plugins install <package> # install from npm by default
openclaw plugins install clawhub:<pkg> # install from ClawHub only
openclaw plugins install npm:<pkg> # install from npm only
openclaw plugins install git:<repo> # install from git
openclaw plugins install git:<repo>@<ref> # install from git ref
openclaw plugins install <spec> --force # overwrite existing install
openclaw plugins install <path> # install from local path
openclaw plugins install -l <path> # link (no copy) for dev
openclaw plugins install <plugin> --marketplace <source>
openclaw plugins install <plugin> --marketplace https://github.com/<owner>/<repo>
openclaw plugins install <spec> --pin # record exact resolved npm spec
openclaw plugins install <spec> --dangerously-force-unsafe-install
openclaw plugins update <id-or-npm-spec> # update one plugin
openclaw plugins update <id-or-npm-spec> --dangerously-force-unsafe-install
openclaw plugins update --all # update all
openclaw plugins uninstall <id> # remove config and plugin index records
openclaw plugins uninstall <id> --keep-files
openclaw plugins marketplace list <source>
openclaw plugins marketplace list <source> --json
# Verify runtime registrations after install.
openclaw plugins inspect <id> --runtime --json
# Run plugin-owned CLI commands directly from the OpenClaw root CLI.
openclaw <plugin-command> --help
openclaw plugins enable <id>
openclaw plugins disable <id>
Les Plugins groupés sont livrés avec OpenClaw. Beaucoup sont activés par défaut (par exemple les fournisseurs de modèles groupés, les fournisseurs de parole groupés et le Plugin de navigateur groupé). D’autres Plugins groupés nécessitent toujours openclaw plugins enable <id>.
--force écrase sur place un Plugin installé existant ou un pack de hooks existant. Utilisez openclaw plugins update <id-or-npm-spec> pour les mises à niveau courantes des Plugins npm suivis. Cette option n’est pas prise en charge avec --link, qui réutilise le chemin source au lieu de copier vers une cible d’installation gérée.
Lorsque plugins.allow est déjà défini, openclaw plugins install ajoute l’id du Plugin installé à cette liste d’autorisation avant de l’activer. Si le même id de Plugin est présent dans plugins.deny, l’installation supprime cette entrée de refus obsolète afin que l’installation explicite puisse être chargée immédiatement après le redémarrage.
OpenClaw conserve un registre local persistant des Plugins comme modèle de lecture à froid pour l’inventaire des Plugins, la propriété des contributions et la planification du démarrage. Les flux d’installation, de mise à jour, de désinstallation, d’activation et de désactivation actualisent ce registre après avoir modifié l’état des Plugins. Le même fichier plugins/installs.json conserve les métadonnées d’installation durables dans installRecords au niveau supérieur, ainsi que les métadonnées de manifeste reconstructibles dans plugins. Si le registre est absent, obsolète ou invalide, openclaw plugins registry --refresh reconstruit sa vue des manifestes à partir des enregistrements d’installation, de la politique de configuration et des métadonnées de manifeste/paquet, sans charger les modules d’exécution des Plugins.
En mode Nix (OPENCLAW_NIX_MODE=1), les mutateurs du cycle de vie des Plugins sont désactivés. Gérez plutôt la sélection des paquets de Plugins et la configuration via la source Nix de l’installation ; pour nix-openclaw, commencez par le Démarrage rapide axé sur l’agent. openclaw plugins update <id-or-npm-spec> s’applique aux installations suivies. Fournir une spécification de paquet npm avec un dist-tag ou une version exacte résout le nom du paquet vers l’enregistrement de Plugin suivi et enregistre la nouvelle spécification pour les futures mises à jour. Fournir le nom du paquet sans version ramène une installation épinglée exacte à la ligne de publication par défaut du registre. Si le Plugin npm installé correspond déjà à la version résolue et à l’identité d’artefact enregistrée, OpenClaw ignore la mise à jour sans télécharger, réinstaller ni réécrire la configuration. Lorsque openclaw update s’exécute sur le canal bêta, les enregistrements de Plugins npm et ClawHub sur la ligne par défaut essaient d’abord @beta, puis se rabattent sur default/latest lorsqu’aucune version bêta du Plugin n’existe. Les versions exactes et les balises explicites restent épinglées.
OpenClaw n’expose pas encore de canaux de Plugins de support LTS ou mensuel. Le travail prévu sur la ligne de support mensuelle exigera que les balises npm et ClawHub des Plugins suivent la même ligne de support que le paquet principal, au lieu d’utiliser silencieusement latest.
--pin est réservé à npm. Il n’est pas pris en charge avec --marketplace, car les installations marketplace persistent les métadonnées de source marketplace au lieu d’une spécification npm.
--dangerously-force-unsafe-install est une dérogation d’urgence pour les faux positifs du scanner intégré de code dangereux. Elle permet aux installations et mises à jour de Plugins de continuer malgré les constats intégrés de niveau critical, mais elle ne contourne toujours pas les blocages de politique before_install des Plugins ni les blocages dus à un échec d’analyse. Les analyses d’installation ignorent les fichiers et répertoires de test courants comme tests/, __tests__/, *.test.* et *.spec.* afin d’éviter de bloquer les mocks de test empaquetés ; les points d’entrée d’exécution déclarés des Plugins sont tout de même analysés, même s’ils utilisent l’un de ces noms.
Cet indicateur CLI s’applique uniquement aux flux d’installation/mise à jour de Plugins. Les installations de dépendances de Skills adossées au Gateway utilisent plutôt la dérogation de requête correspondante dangerouslyForceUnsafeInstall, tandis que openclaw skills install reste le flux distinct de téléchargement/installation de Skills ClawHub.
Si un Plugin que vous avez publié sur ClawHub est masqué ou bloqué par une analyse, ouvrez le tableau de bord ClawHub ou exécutez clawhub package rescan <name> pour demander à ClawHub de le vérifier à nouveau. --dangerously-force-unsafe-install n’affecte que les installations sur votre propre machine ; cela ne demande pas à ClawHub de réanalyser le Plugin ni de rendre publique une version bloquée.
Les bundles compatibles participent au même flux de liste/inspection/activation/désactivation des Plugins. La prise en charge actuelle à l’exécution inclut les Skills de bundle, les Skills de commandes Claude, les valeurs par défaut Claude settings.json, les valeurs par défaut Claude .lsp.json et lspServers déclarées dans le manifeste, les Skills de commandes Cursor et les répertoires de hooks Codex compatibles.
openclaw plugins inspect <id> signale également les capacités de bundle détectées ainsi que les entrées de serveurs MCP et LSP prises en charge ou non pour les Plugins adossés à un bundle.
Les sources marketplace peuvent être un nom de marketplace connue Claude provenant de ~/.claude/plugins/known_marketplaces.json, une racine de marketplace locale ou un chemin marketplace.json, un raccourci GitHub comme owner/repo, une URL de dépôt GitHub ou une URL git. Pour les marketplaces distantes, les entrées de Plugins doivent rester à l’intérieur du dépôt marketplace cloné et utiliser uniquement des sources de chemin relatives.
Consultez la référence CLI openclaw plugins pour tous les détails.
Vue d’ensemble de l’API des Plugins
Les Plugins natifs exportent un objet d’entrée qui expose register(api). Les Plugins plus anciens peuvent encore utiliser activate(api) comme alias hérité, mais les nouveaux Plugins doivent utiliser register.
export default definePluginEntry({
id: "my-plugin",
name: "My Plugin",
register(api) {
api.registerProvider({
/* ... */
});
api.registerTool({
/* ... */
});
api.registerChannel({
/* ... */
});
},
});
OpenClaw charge l’objet d’entrée et appelle register(api) pendant l’activation du Plugin. Le chargeur se rabat toujours sur activate(api) pour les anciens Plugins, mais les Plugins groupés et les nouveaux Plugins externes doivent considérer register comme le contrat public.
api.registrationMode indique à un Plugin pourquoi son entrée est chargée :
| Mode | Signification |
|---|---|
full |
Activation à l’exécution. Enregistrez les outils, hooks, services, commandes, routes et autres effets de bord actifs. |
discovery |
Découverte de capacités en lecture seule. Enregistrez les fournisseurs et métadonnées ; du code d’entrée de Plugin approuvé peut se charger, mais ignorez les effets de bord actifs. |
setup-only |
Chargement des métadonnées de configuration de canal via une entrée de configuration légère. |
setup-runtime |
Chargement de configuration de canal qui nécessite aussi l’entrée d’exécution. |
cli-metadata |
Collecte des métadonnées des commandes CLI uniquement. |
Les entrées de Plugins qui ouvrent des sockets, bases de données, workers en arrière-plan ou clients de longue durée doivent protéger ces effets de bord avec api.registrationMode === "full". Les chargements de découverte sont mis en cache séparément des chargements d’activation et ne remplacent pas le registre Gateway en cours d’exécution. La découverte est non activante, mais pas sans importation : OpenClaw peut évaluer l’entrée de Plugin approuvée ou le module de Plugin de canal pour construire l’instantané. Gardez les niveaux supérieurs des modules légers et sans effets de bord, et déplacez les clients réseau, sous-processus, écouteurs, lectures d’identifiants et démarrages de service derrière des chemins d’exécution complète.
Méthodes d’enregistrement courantes :
| Méthode | Ce qu’elle enregistre |
|---|---|
registerProvider |
Fournisseur de modèles (LLM) |
registerChannel |
Canal de chat |
registerTool |
Outil d’agent |
registerHook / on(...) |
Hooks de cycle de vie |
registerSpeechProvider |
Synthèse vocale / STT |
registerRealtimeTranscriptionProvider |
STT en streaming |
registerRealtimeVoiceProvider |
Voix temps réel duplex |
registerMediaUnderstandingProvider |
Analyse d’image/audio |
registerImageGenerationProvider |
Génération d’images |
registerMusicGenerationProvider |
Génération de musique |
registerVideoGenerationProvider |
Génération de vidéo |
registerWebFetchProvider |
Fournisseur de récupération / scraping Web |
registerWebSearchProvider |
Recherche Web |
registerHttpRoute |
Point de terminaison HTTP |
registerCommand / registerCli |
Commandes CLI |
registerContextEngine |
Moteur de contexte |
registerService |
Service en arrière-plan |
Comportement de garde des hooks de cycle de vie typés :
before_tool_call:{ block: true }est terminal ; les gestionnaires de priorité inférieure sont ignorés.before_tool_call:{ block: false }est sans effet et n’efface pas un blocage antérieur.before_install:{ block: true }est terminal ; les gestionnaires de priorité inférieure sont ignorés.before_install:{ block: false }est sans effet et n’efface pas un blocage antérieur.message_sending:{ cancel: true }est terminal ; les gestionnaires de priorité inférieure sont ignorés.message_sending:{ cancel: false }est sans effet et n’efface pas une annulation antérieure.
Les exécutions app-server natives de Codex relaient les événements d’outils natifs de Codex vers cette
surface de hooks. Les Plugins peuvent bloquer les outils natifs de Codex via before_tool_call,
observer les résultats via after_tool_call et participer aux validations Codex
PermissionRequest. Le pont ne réécrit pas encore les arguments des outils natifs de Codex.
La limite exacte de prise en charge de l’environnement d’exécution Codex est définie dans le
contrat de prise en charge du harnais Codex v1.
Pour le comportement complet des hooks typés, consultez la vue d’ensemble du SDK.
Associés
- Créer des plugins - créez votre propre plugin
- Bundles de Plugins - compatibilité des bundles Codex/Claude/Cursor
- Manifeste de Plugin - schéma du manifeste
- Enregistrer des outils - ajoutez des outils d’agent dans un plugin
- Internes des Plugins - modèle de capacités et pipeline de chargement
- Plugins communautaires - listes de tiers