Plugins
Plugins
Plugins breiden OpenClaw uit met nieuwe mogelijkheden: kanalen, modelproviders, agent-harnassen, tools, skills, spraak, realtime transcriptie, realtime stem, mediabegrip, afbeeldingsgeneratie, videogeneratie, web fetch, web search en meer. Sommige plugins zijn core (meegeleverd met OpenClaw), andere zijn extern. De meeste externe plugins worden gepubliceerd en gevonden via ClawHub. Npm blijft ondersteund voor directe installaties en voor een tijdelijke set pluginpakketten die eigendom zijn van OpenClaw terwijl die migratie wordt afgerond.
Snelstart
Voor copy-pastevoorbeelden voor installeren, weergeven, verwijderen, bijwerken en publiceren, zie Plugins beheren.
Bekijk wat is geladen
openclaw plugins list
Installeer een 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
Herstart de Gateway
openclaw gateway restart
Configureer daarna onder plugins.entries.\<id\>.config in je configuratiebestand.
Chat-native beheer
In een actieve Gateway activeren owner-only /plugins enable en /plugins disable
de Gateway-configuratieherlader. De Gateway herlaadt plugin-runtimesurfaces
in het proces, en nieuwe agentbeurten bouwen hun toollijst opnieuw op vanuit het
vernieuwde register. /plugins install wijzigt pluginbroncode, dus de
Gateway vraagt om een herstart in plaats van te doen alsof het huidige proces
al geïmporteerde modules veilig kan herladen.
Verifieer de 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
Gebruik --runtime wanneer je geregistreerde tools, services, Gateway-
methoden, hooks of plugin-eigen CLI-commando's moet bewijzen. Gewone
inspect is een koude manifest/registercontrole en vermijdt bewust het
importeren van plugin-runtime.
Als je chat-native besturing verkiest, schakel commands.plugins: true in en gebruik:
/plugin install clawhub:<package>
/plugin show <plugin-id>
/plugin enable <plugin-id>
Het installatiepad gebruikt dezelfde resolver als de CLI: lokaal pad/archief, expliciet
clawhub:<pkg>, expliciet npm:<pkg>, expliciet npm-pack:<path.tgz>,
expliciet git:<repo>, of een kale pakketspecificatie via npm.
Als de configuratie ongeldig is, faalt installeren normaal gesloten en verwijst het je naar
openclaw doctor --fix. De enige hersteluitzondering is een smal herinstallatiepad
voor gebundelde plugins die opt-in gebruiken voor
openclaw.install.allowInvalidConfigRecovery.
Tijdens Gateway-start faalt ongeldige pluginconfiguratie gesloten zoals elke andere ongeldige
configuratie. Voer openclaw doctor --fix uit om de slechte pluginconfiguratie in quarantaine te plaatsen door
die pluginvermelding uit te schakelen en de ongeldige configuratiepayload te verwijderen; de normale
configuratieback-up bewaart de vorige waarden.
Wanneer een kanaalconfiguratie verwijst naar een plugin die niet meer vindbaar is maar dezelfde
verouderde plugin-id in pluginconfiguratie of installatierecords blijft staan, logt Gateway-start
waarschuwingen en slaat dat kanaal over in plaats van elk ander kanaal te blokkeren.
Voer openclaw doctor --fix uit om de verouderde kanaal-/pluginvermeldingen te verwijderen; onbekende
kanaalsleutels zonder bewijs van verouderde plugins blijven validatie laten falen zodat typefouten
zichtbaar blijven.
Als plugins.enabled: false is ingesteld, worden verouderde pluginverwijzingen als inert behandeld:
Gateway-start slaat plugin discovery/load-werk over en openclaw doctor behoudt
de uitgeschakelde pluginconfiguratie in plaats van die automatisch te verwijderen. Schakel plugins opnieuw in voordat je
doctor-opruiming uitvoert als je verouderde plugin-id's wilt verwijderen.
Installatie van pluginafhankelijkheden gebeurt alleen tijdens expliciete installatie/update- of
doctor-reparatiestromen. Gateway-start, configuratieherladen en runtime-inspectie
voeren geen pakketbeheerders uit en repareren geen afhankelijkheidsbomen. Lokale plugins moeten hun
afhankelijkheden al geïnstalleerd hebben, terwijl npm-, git- en ClawHub-plugins
worden geïnstalleerd onder de beheerde pluginroots van OpenClaw. npm-afhankelijkheden kunnen worden gehoist
binnen de beheerde npm-root van OpenClaw; installatie/update scant die beheerde root vóór
vertrouwen en verwijderen verwijdert npm-beheerde pakketten via npm. Externe plugins
en aangepaste laadpaden moeten nog steeds worden geïnstalleerd via openclaw plugins install.
Gebruik openclaw plugins list --json om de statische dependencyStatus voor elke
zichtbare plugin te zien zonder runtimecode te importeren of afhankelijkheden te repareren.
Zie Resolutie van pluginafhankelijkheden voor de
lifecycle tijdens installatie.
Geblokkeerd eigenaarschap van pluginpad
Als plugindiagnostiek meldt
blocked plugin candidate: suspicious ownership (... uid=1000, expected uid=0 or root)
en configuratievalidatie volgt met plugin present but blocked, heeft OpenClaw
pluginbestanden gevonden die eigendom zijn van een andere Unix-gebruiker dan het proces dat ze laadt.
Laat de pluginconfiguratie staan; herstel het bestandssysteemeigenaarschap of voer
OpenClaw uit als dezelfde gebruiker die eigenaar is van de state-directory.
Voor Docker-installaties draait de officiële image als node (uid 1000), dus de
host bind-mounted OpenClaw-configuratie- en werkruimtedirectory's horen normaal gesproken
eigendom te zijn van uid 1000:
sudo chown -R 1000:1000 /path/to/openclaw-config /path/to/openclaw-workspace
Als je OpenClaw bewust als root uitvoert, herstel dan in plaats daarvan de beheerde pluginroot naar root-eigenaarschap:
sudo chown -R root:root /path/to/openclaw-config/npm
Na het herstellen van eigenaarschap voer je opnieuw openclaw doctor --fix of
openclaw plugins registry --refresh uit zodat het opgeslagen pluginregister overeenkomt
met de gerepareerde bestanden.
Voor npm-installaties worden veranderlijke selectors zoals latest of een dist-tag vóór
installatie opgelost en daarna vastgezet op de exact geverifieerde versie in de beheerde
npm-root van OpenClaw. Nadat npm klaar is, verifieert OpenClaw dat de geïnstalleerde
package-lock.json-vermelding nog steeds overeenkomt met de opgeloste versie en integriteit. Als
npm andere pakketmetadata schrijft, faalt de installatie en wordt het beheerde pakket
teruggedraaid in plaats van een ander pluginartefact te accepteren.
Beheerde npm-roots erven ook OpenClaw's npm-overrides op pakketniveau, zodat
beveiligingspins die de verpakte host beschermen ook gelden voor gehoiste externe
pluginafhankelijkheden.
Broncheckouts zijn pnpm-workspaces. Als je OpenClaw kloont om aan gebundelde
plugins te werken, voer pnpm install uit; OpenClaw laadt gebundelde plugins dan vanuit
extensions/<id> zodat wijzigingen en pakketlokale afhankelijkheden direct worden gebruikt.
Gewone npm-rootinstallaties zijn voor verpakte OpenClaw, niet voor ontwikkeling met
broncheckouts.
Plugin-typen
OpenClaw herkent twee pluginindelingen:
| Indeling | Hoe het werkt | Voorbeelden |
|---|---|---|
| Native | openclaw.plugin.json + runtimemodule; voert in-process uit |
Officiële plugins, community-npm-pakketten |
| Bundle | Codex/Claude/Cursor-compatibele layout; gemapt naar OpenClaw-functies | .codex-plugin/, .claude-plugin/, .cursor-plugin/ |
Beide verschijnen onder openclaw plugins list. Zie Plugin Bundles voor bundledetails.
Als je een native plugin schrijft, begin dan met Plugins bouwen en het Overzicht van de Plugin SDK.
Pakketentrypoints
Native plugin-npm-pakketten moeten openclaw.extensions declareren in package.json.
Elke entry moet binnen de pakketdirectory blijven en naar een leesbaar
runtimebestand resolven, of naar een TypeScript-bronbestand met een afgeleide gebouwde JavaScript-
peer zoals src/index.ts naar dist/index.js.
Verpakte installaties moeten die JavaScript-runtimeoutput meeleveren. De TypeScript-
bronfallback is voor broncheckouts en lokale ontwikkelpaden, niet voor
npm-pakketten die in de beheerde pluginroot van OpenClaw worden geïnstalleerd.
Als een waarschuwing voor een beheerd pakket zegt dat het requires compiled runtime output for TypeScript entry ..., is het pakket gepubliceerd zonder de JavaScript-bestanden
die OpenClaw tijdens runtime nodig heeft. Dat is een pluginverpakkingsprobleem, geen lokaal configuratie-
probleem. Werk de plugin bij of installeer deze opnieuw nadat de publisher gecompileerde
JavaScript opnieuw publiceert, of schakel die plugin uit/verwijder die totdat er een vast pakket beschikbaar is.
Gebruik openclaw.runtimeExtensions wanneer gepubliceerde runtimebestanden niet op
dezelfde paden staan als de bronentries. Wanneer aanwezig, moet runtimeExtensions exact
één entry bevatten voor elke extensions-entry. Niet-overeenkomende lijsten laten installatie en
plugin discovery falen in plaats van stilzwijgend terug te vallen op bronpaden. Als je ook
openclaw.setupEntry publiceert, gebruik dan openclaw.runtimeSetupEntry voor de gebouwde
JavaScript-peer daarvan; dat bestand is vereist wanneer het is gedeclareerd.
{
"name": "@acme/openclaw-plugin",
"openclaw": {
"extensions": ["./src/index.ts"],
"runtimeExtensions": ["./dist/index.js"]
}
}
Officiële plugins
OpenClaw-eigen npm-pakketten tijdens migratie
ClawHub is het primaire distributiepad voor de meeste plugins. Huidige verpakte
OpenClaw-releases bundelen al veel officiële plugins, dus die hebben in normale setups geen
aparte npm-installaties nodig. Tot elke OpenClaw-eigen plugin naar
ClawHub is gemigreerd, levert OpenClaw nog steeds enkele @openclaw/*-pluginpakketten op
npm voor oudere/aangepaste installaties en directe npm-workflows.
Als npm een @openclaw/*-pluginpakket als deprecated meldt, komt die pakketversie
uit een oudere externe pakketlijn. Gebruik de gebundelde plugin uit
huidige OpenClaw of een lokale checkout totdat een nieuwer npm-pakket is gepubliceerd.
| Plugin | Pakket | Docs |
|---|---|---|
| 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 |
Core (meegeleverd met OpenClaw)
Modelproviders (standaard ingeschakeld)
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
Geheugenplugins
memory-core- gebundelde geheugenzoekfunctie (standaard viaplugins.slots.memory)memory-lancedb- langetermijngeheugen ondersteund door LanceDB met automatisch ophalen/vastleggen (stelplugins.slots.memory = "memory-lancedb"in)
Zie Memory LanceDB voor OpenAI-compatibele embeddingconfiguratie, Ollama-voorbeelden, ophaallimieten en probleemoplossing.
Spraakproviders (standaard ingeschakeld)
elevenlabs, microsoft
Overig
browser- gebundelde browserplugin voor de browsertool,openclaw browserCLI,browser.requestGateway-methode, browserruntime en standaardservice voor browserbesturing (standaard ingeschakeld; schakel uit voordat je deze vervangt)copilot-proxy- VS Code Copilot Proxy-brug (standaard uitgeschakeld)
Op zoek naar plugins van derden? Zie Communityplugins.
Configuratie
{
plugins: {
enabled: true,
allow: ["voice-call"],
deny: ["untrusted-plugin"],
load: { paths: ["~/Projects/oss/voice-call-plugin"] },
entries: {
"voice-call": { enabled: true, config: { provider: "twilio" } },
},
},
}
| Veld | Beschrijving |
|---|---|
enabled |
Hoofdschakelaar (standaard: true) |
allow |
Toestaanlijst voor plugins (optioneel) |
bundledDiscovery |
Ontdekkingsmodus voor gebundelde plugins (standaard allowlist) |
deny |
Weigerlijst voor plugins (optioneel; weigeren wint) |
load.paths |
Extra pluginbestanden/-mappen |
slots |
Exclusieve slotselectoren (bijv. memory, contextEngine) |
entries.\<id\> |
Schakelaars + configuratie per plugin |
plugins.allow is exclusief. Wanneer deze niet leeg is, kunnen alleen vermelde plugins laden
of tools blootstellen, zelfs als tools.allow "*" of een specifieke toolnaam
van een plugin bevat. Als een toestaanlijst voor tools naar plugintools verwijst, voeg dan de eigenaarsplugin-id's
toe aan plugins.allow of verwijder plugins.allow; openclaw doctor waarschuwt voor deze
vorm.
plugins.bundledDiscovery staat standaard op "allowlist" voor nieuwe configuraties, waardoor een
restrictieve plugins.allow-inventaris ook weggelaten gebundelde providerplugins blokkeert,
inclusief ontdekking van runtime-webzoekproviders. Doctor stempelt oudere
restrictieve allowlist-configuraties met "compat" tijdens migratie, zodat upgrades
oud gebundeld providergedrag behouden totdat de operator kiest voor de striktere modus.
Een lege plugins.allow wordt nog steeds behandeld als niet ingesteld/open.
Configuratiewijzigingen die via /plugins enable of /plugins disable worden gedaan, triggeren een
in-process Gateway-pluginherlaadactie. Nieuwe agentbeurten bouwen hun toollijst opnieuw op vanuit
het vernieuwde pluginregister. Brongebaseerde bewerkingen zoals installeren,
bijwerken en verwijderen herstarten nog steeds het Gateway-proces, omdat reeds geïmporteerde
pluginmodules niet veilig ter plekke kunnen worden vervangen.
openclaw plugins list is een lokale snapshot van pluginregister/configuratie. Een
enabled plugin daar betekent dat het opgeslagen register en de huidige configuratie toestaan dat de
plugin deelneemt. Het bewijst niet dat een al draaiende externe Gateway
opnieuw is geladen of herstart met dezelfde plugincode. Op VPS-/containeropstellingen
met wrapperprocessen stuur je herstarts of schrijfacties die herladen triggeren naar het daadwerkelijke
openclaw gateway run-proces, of gebruik je openclaw gateway restart tegen de
draaiende Gateway wanneer de herlaadactie een fout meldt.
Pluginstatussen: uitgeschakeld vs ontbrekend vs ongeldig
- Uitgeschakeld: plugin bestaat, maar inschakelregels hebben deze uitgezet. Configuratie blijft behouden.
- Ontbrekend: configuratie verwijst naar een plugin-id die ontdekking niet heeft gevonden.
- Ongeldig: plugin bestaat, maar de configuratie komt niet overeen met het gedeclareerde schema. Het starten van de Gateway slaat alleen die plugin over;
openclaw doctor --fixkan de ongeldige entry in quarantaine plaatsen door deze uit te schakelen en de configuratiepayload te verwijderen.
Ontdekking en voorrang
OpenClaw scant op plugins in deze volgorde (eerste match wint):
Configuratiepaden
plugins.load.paths - expliciete bestands- of mappaden. Paden die terugwijzen
naar OpenClaws eigen verpakte gebundelde pluginmappen worden genegeerd;
voer openclaw doctor --fix uit om die verouderde aliassen te verwijderen.
Werkruimteplugins
\<workspace\>/.openclaw/<plugin-root>/*.ts en \<workspace\>/.openclaw/<plugin-root>/*/index.ts.
Globale plugins
~/.openclaw/<plugin-root>/*.ts en ~/.openclaw/<plugin-root>/*/index.ts.
Gebundelde plugins
Meegeleverd met OpenClaw. Veel zijn standaard ingeschakeld (modelproviders, spraak). Andere vereisen expliciete inschakeling.
Verpakte installaties en Docker-images lossen gebundelde plugins normaal op vanuit de
gecompileerde dist/extensions-boom. Als een bronmap van een gebundelde plugin
met bind mount over het overeenkomende verpakte bronpad wordt gemount, bijvoorbeeld
/app/extensions/synology-chat, behandelt OpenClaw die gemounte bronmap
als een gebundelde bronoverlay en ontdekt deze vóór de verpakte
/app/dist/extensions/synology-chat-bundle. Dit houdt maintainer-containerlussen
werkend zonder elke gebundelde plugin terug te schakelen naar TypeScript-bron.
Stel OPENCLAW_DISABLE_BUNDLED_SOURCE_OVERLAYS=1 in om verpakte dist-bundles
af te dwingen, zelfs wanneer bronoverlay-mounts aanwezig zijn.
Inschakelregels
plugins.enabled: falseschakelt alle plugins uit en slaat pluginontdekking/-laadwerk overplugins.denywint altijd van toestaanplugins.entries.\<id\>.enabled: falseschakelt die plugin uit- Plugins afkomstig uit de werkruimte zijn standaard uitgeschakeld (moeten expliciet worden ingeschakeld)
- Gebundelde plugins volgen de ingebouwde standaard-aan-set, tenzij overschreven
- Exclusieve slots kunnen de geselecteerde plugin voor dat slot geforceerd inschakelen
- Sommige gebundelde opt-in-plugins worden automatisch ingeschakeld wanneer configuratie een plugin-eigen oppervlak noemt, zoals een providermodelref, kanaalconfiguratie of harness runtime
- Verouderde pluginconfiguratie blijft behouden zolang
plugins.enabled: falseactief is; schakel plugins opnieuw in voordat je doctor-opschoning uitvoert als je verouderde id's wilt verwijderen - OpenAI-familie Codex-routes houden afzonderlijke plugingrenzen:
openai-codex/*hoort bij de OpenAI-plugin, terwijl de gebundelde Codex app-serverplugin wordt geselecteerd dooragentRuntime.id: "codex"of legacycodex/*-modelrefs
Runtimehooks oplossen
Als een plugin in plugins list verschijnt maar register(api)-bijwerkingen of hooks
niet worden uitgevoerd in live chatverkeer, controleer dan eerst het volgende:
- Voer
openclaw gateway status --deep --require-rpcuit en bevestig dat de actieve Gateway-URL, het profiel, het configuratiepad en het proces degene zijn die je bewerkt. - Herstart de live Gateway na wijzigingen aan plugininstallatie/configuratie/code. In wrapper-
containers kan PID 1 alleen een supervisor zijn; herstart of signaleer het onderliggende
openclaw gateway run-proces. - Gebruik
openclaw plugins inspect <id> --runtime --jsonom hookregistraties en diagnostiek te bevestigen. Niet-gebundelde conversatiehooks zoalsbefore_model_resolve,before_agent_reply,before_agent_run,llm_input,llm_output,before_agent_finalizeenagent_endhebbenplugins.entries.<id>.hooks.allowConversationAccess=truenodig. - Voor modelwisseling, geef de voorkeur aan
before_model_resolve. Deze draait vóór model- resolutie voor agentbeurten;llm_outputdraait pas nadat een modelpoging assistantuitvoer produceert. - Gebruik voor bewijs van het effectieve sessiemodel
openclaw sessionsof de Gateway-sessie-/statusoppervlakken en start, bij het debuggen van providerpayloads, de Gateway met--raw-stream --raw-stream-path <path>.
Trage installatie van plugintools
Als agentbeurten lijken te blijven hangen tijdens het voorbereiden van tools, schakel trace-logging in en controleer op timingsregels voor plugintoolfactories:
openclaw config set logging.level trace
openclaw logs --follow
Zoek naar:
[trace:plugin-tools] factory timings ...
De samenvatting vermeldt de totale factorytijd en de traagste plugintoolfactories, inclusief plugin-id, gedeclareerde toolnamen, resultaatvorm en of de tool optioneel is. Trage regels worden naar waarschuwingen gepromoveerd wanneer een enkele factory minstens 1s duurt of de totale voorbereiding van plugintoolfactories minstens 5s duurt.
OpenClaw cachet succesvolle resultaten van plugintoolfactories voor herhaalde resoluties met dezelfde effectieve requestcontext. De cachesleutel bevat de effectieve runtimeconfiguratie, werkruimte, agent-/sessie-id's, sandboxbeleid, browserinstellingen, leveringscontext, requesteridentiteit en eigendomsstatus, zodat factories die afhangen van die vertrouwde velden opnieuw worden uitgevoerd wanneer de context verandert.
Als één plugin de timing domineert, inspecteer dan de runtimeregistraties:
openclaw plugins inspect <plugin-id> --runtime --json
Werk die plugin daarna bij, installeer deze opnieuw of schakel deze uit. Pluginauteurs moeten dure afhankelijkheidslading verplaatsen achter het uitvoeringspad van de tool in plaats van dit binnen de toolfactory te doen.
Dubbel kanaal- of tooleigenaarschap
Symptomen:
channel already registered: <channel-id> (<plugin-id>)channel setup already registered: <channel-id> (<plugin-id>)plugin tool name conflict (<plugin-id>): <tool-name>
Dit betekent dat meer dan één ingeschakelde plugin hetzelfde kanaal, dezelfde setupflow of dezelfde toolnaam probeert te beheren. De meest voorkomende oorzaak is een externe kanaalplugin die naast een gebundelde plugin is geïnstalleerd die nu dezelfde kanaal-id levert.
Debugstappen:
- Voer
openclaw plugins list --enabled --verboseuit om elke ingeschakelde plugin en herkomst te zien. - Voer
openclaw plugins inspect <id> --runtime --jsonuit voor elke verdachte plugin en vergelijkchannels,channelConfigs,toolsen diagnostiek. - Voer
openclaw plugins registry --refreshuit na het installeren of verwijderen van pluginpakketten, zodat opgeslagen metadata de huidige installatie weerspiegelt. - Herstart de Gateway na installatie-, register- of configuratiewijzigingen.
Oplossingsopties:
- Als één plugin bewust een andere vervangt voor dezelfde kanaal-id, moet de
voorkeursplugin
channelConfigs.<channel-id>.preferOverdeclareren met de plugin-id met lagere prioriteit. Zie /plugins/manifest#replacing-another-channel-plugin. - Als het duplicaat per ongeluk is, schakel dan één kant uit met
plugins.entries.<plugin-id>.enabled: falseof verwijder de verouderde plugin- installatie. - Als je beide plugins expliciet hebt ingeschakeld, behoudt OpenClaw dat verzoek en rapporteert het conflict. Kies één eigenaar voor het kanaal of hernoem plugin-eigen tools zodat het runtime-oppervlak eenduidig is.
Pluginslots (exclusieve categorieën)
Sommige categorieën zijn exclusief (slechts één tegelijk actief):
{
plugins: {
slots: {
memory: "memory-core", // or "none" to disable
contextEngine: "legacy", // or a plugin id
},
},
}
| Slot | Wat het beheert | Standaard |
|---|---|---|
memory |
Actieve geheugenplugin | memory-core |
contextEngine |
Actieve contextengine | legacy (ingebouwd) |
CLI-referentie
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>
Gebundelde plugins worden met OpenClaw geleverd. Veel zijn standaard ingeschakeld (bijvoorbeeld gebundelde modelproviders, gebundelde spraakproviders en de gebundelde browserplugin). Andere gebundelde plugins vereisen nog steeds openclaw plugins enable <id>.
--force overschrijft een bestaande geïnstalleerde plugin of hookpack op dezelfde plek. Gebruik openclaw plugins update <id-or-npm-spec> voor routinematige upgrades van gevolgde npm-plugins. Dit wordt niet ondersteund met --link, dat het bronpad hergebruikt in plaats van over een beheerd installatiedoel heen te kopiëren.
Wanneer plugins.allow al is ingesteld, voegt openclaw plugins install de geïnstalleerde plugin-id toe aan die toelatingslijst voordat de plugin wordt ingeschakeld. Als dezelfde plugin-id aanwezig is in plugins.deny, verwijdert install die verouderde deny-vermelding, zodat de expliciete installatie na een herstart direct laadbaar is.
OpenClaw houdt een blijvend lokaal pluginregister bij als cold-readmodel voor plugininventaris, eigenaarschap van bijdragen en opstartplanning. Installatie-, update-, de-installatie-, inschakel- en uitschakelstromen vernieuwen dat register nadat de pluginstatus is gewijzigd. Hetzelfde bestand plugins/installs.json bewaart duurzame installatiemetadata in installRecords op het hoogste niveau en opnieuw opbouwbare manifestmetadata in plugins. Als het register ontbreekt, verouderd of ongeldig is, bouwt openclaw plugins registry --refresh de manifestweergave opnieuw op vanuit installatierecords, configuratiebeleid en manifest-/pakketmetadata zonder runtime-modules van plugins te laden.
In Nix-modus (OPENCLAW_NIX_MODE=1) zijn mutators voor de pluginlevenscyclus uitgeschakeld. Beheer in plaats daarvan de selectie van pluginpakketten en configuratie via de Nix-bron voor de installatie; begin voor nix-openclaw met de agent-first Snelstart. openclaw plugins update <id-or-npm-spec> is van toepassing op gevolgde installaties. Het doorgeven van een npm-pakketspecificatie met een dist-tag of exacte versie herleidt de pakketnaam naar het gevolgde pluginrecord en registreert de nieuwe specificatie voor toekomstige updates. Het doorgeven van de pakketnaam zonder versie verplaatst een exact vastgepinde installatie terug naar de standaardreleasereeks van het register. Als de geïnstalleerde npm-plugin al overeenkomt met de opgeloste versie en de geregistreerde artefactidentiteit, slaat OpenClaw de update over zonder te downloaden, opnieuw te installeren of de configuratie te herschrijven.
Wanneer openclaw update op het bètakanaal wordt uitgevoerd, proberen npm- en ClawHub-pluginrecords op de standaardreeks eerst @beta en vallen ze terug op standaard/latest wanneer er geen bètarelease van de plugin bestaat. Exacte versies en expliciete tags blijven vastgepind.
OpenClaw biedt nog geen LTS- of maandelijkse ondersteuningskanalen voor plugins. Gepland werk aan maandelijkse ondersteuningsreeksen vereist dat npm- en ClawHub-tags voor plugins dezelfde ondersteuningsreeks volgen als het kernpakket, in plaats van stilzwijgend latest te gebruiken.
--pin is alleen voor npm. Dit wordt niet ondersteund met --marketplace, omdat marketplace-installaties metadata over de marketplace-bron bewaren in plaats van een npm-specificatie.
--dangerously-force-unsafe-install is een noodoverride voor fout-positieven uit de ingebouwde scanner voor gevaarlijke code. Hiermee kunnen plugininstallaties en pluginupdates doorgaan na ingebouwde critical-bevindingen, maar het omzeilt nog steeds geen pluginbeleidsblokkades van before_install of blokkering door scanfouten. Installatiescans negeren veelvoorkomende testbestanden en -directories zoals tests/, __tests__/, *.test.* en *.spec.* om te voorkomen dat verpakte testmocks worden geblokkeerd; gedeclareerde runtime-entrypoints van plugins worden nog steeds gescand, zelfs als ze een van die namen gebruiken.
Deze CLI-vlag is alleen van toepassing op plugininstallatie- en updateflows. Door Gateway ondersteunde installaties van skill-afhankelijkheden gebruiken in plaats daarvan de overeenkomende requestoverride dangerouslyForceUnsafeInstall, terwijl openclaw skills install de afzonderlijke ClawHub-download-/installatieflow voor skills blijft.
Als een plugin die je op ClawHub hebt gepubliceerd door een scan verborgen of geblokkeerd is, open dan het ClawHub-dashboard of voer clawhub package rescan <name> uit om ClawHub te vragen deze opnieuw te controleren. --dangerously-force-unsafe-install heeft alleen invloed op installaties op je eigen machine; het vraagt ClawHub niet om de plugin opnieuw te scannen en maakt een geblokkeerde release niet openbaar.
Compatibele bundels nemen deel aan dezelfde pluginflow voor weergeven, inspecteren, inschakelen en uitschakelen. De huidige runtime-ondersteuning omvat bundel-skills, Claude-commandoskills, standaardwaarden voor Claude settings.json, standaardwaarden voor Claude .lsp.json en in het manifest gedeclareerde lspServers, Cursor-commandoskills en compatibele Codex-hookdirectories.
openclaw plugins inspect <id> rapporteert ook gedetecteerde bundelmogelijkheden plus ondersteunde of niet-ondersteunde MCP- en LSP-serververmeldingen voor bundelgebaseerde plugins.
Marketplace-bronnen kunnen een bekende marketplace-naam van Claude zijn uit ~/.claude/plugins/known_marketplaces.json, een lokale marketplace-root of marketplace.json-pad, een GitHub-verkorting zoals owner/repo, een GitHub-repo-URL of een git-URL. Voor externe marketplaces moeten pluginvermeldingen binnen de gekloonde marketplace-repo blijven en uitsluitend relatieve padbronnen gebruiken.
Zie de openclaw plugins CLI-referentie voor volledige details.
Overzicht van de plugin-API
Native plugins exporteren een entry-object dat register(api) beschikbaar maakt. Oudere plugins kunnen nog steeds activate(api) gebruiken als legacy-alias, maar nieuwe plugins moeten register gebruiken.
export default definePluginEntry({
id: "my-plugin",
name: "My Plugin",
register(api) {
api.registerProvider({
/* ... */
});
api.registerTool({
/* ... */
});
api.registerChannel({
/* ... */
});
},
});
OpenClaw laadt het entry-object en roept register(api) aan tijdens pluginactivatie. De loader valt nog steeds terug op activate(api) voor oudere plugins, maar gebundelde plugins en nieuwe externe plugins moeten register als het publieke contract behandelen.
api.registrationMode vertelt een plugin waarom de entry wordt geladen:
| Modus | Betekenis |
|---|---|
full |
Runtime-activatie. Registreer tools, hooks, services, commando's, routes en andere live side-effects. |
discovery |
Alleen-lezen capaciteitsdetectie. Registreer providers en metadata; vertrouwde plugin-entrycode kan laden, maar sla live side-effects over. |
setup-only |
Laden van kanaalsetupmetadata via een lichtgewicht setup-entry. |
setup-runtime |
Laden van kanaalsetup waarvoor ook de runtime-entry nodig is. |
cli-metadata |
Alleen verzamelen van CLI-commandmetadata. |
Plugin-entries die sockets, databases, achtergrondwerkers of langlevende clients openen, moeten die side-effects afschermen met api.registrationMode === "full". Discovery-loads worden apart gecachet van activerende loads en vervangen het draaiende Gateway-register niet. Discovery is niet-activerend, niet importvrij: OpenClaw kan de vertrouwde plugin-entry of kanaalpluginmodule evalueren om de snapshot te bouwen. Houd module-top-levels lichtgewicht en vrij van side-effects, en verplaats netwerkclients, subprocessen, listeners, credential-reads en servicestartup achter full-runtimepaden.
Veelgebruikte registratiemethoden:
| Methode | Wat deze registreert |
|---|---|
registerProvider |
Modelprovider (LLM) |
registerChannel |
Chatkanaal |
registerTool |
Agenttool |
registerHook / on(...) |
Lifecycle-hooks |
registerSpeechProvider |
Tekst-naar-spraak / STT |
registerRealtimeTranscriptionProvider |
Streaming-STT |
registerRealtimeVoiceProvider |
Duplex realtime spraak |
registerMediaUnderstandingProvider |
Beeld-/audioanalyse |
registerImageGenerationProvider |
Beeldgeneratie |
registerMusicGenerationProvider |
Muziekgeneratie |
registerVideoGenerationProvider |
Videogeneratie |
registerWebFetchProvider |
Webfetch-/scrapeprovider |
registerWebSearchProvider |
Webzoekfunctie |
registerHttpRoute |
HTTP-eindpunt |
registerCommand / registerCli |
CLI-commando's |
registerContextEngine |
Contextengine |
registerService |
Achtergrondservice |
Guard-gedrag van hooks voor getypeerde lifecycle-hooks:
before_tool_call:{ block: true }is terminaal; handlers met lagere prioriteit worden overgeslagen.before_tool_call:{ block: false }is een no-op en wist een eerdere blokkade niet.before_install:{ block: true }is terminaal; handlers met lagere prioriteit worden overgeslagen.before_install:{ block: false }is een no-op en wist een eerdere blokkade niet.message_sending:{ cancel: true }is terminaal; handlers met lagere prioriteit worden overgeslagen.message_sending:{ cancel: false }is een no-op en wist een eerdere annulering niet.
Native Codex app-server-runs koppelen Codex-native toolgebeurtenissen terug naar dit hook-oppervlak. Plugins kunnen native Codex-tools blokkeren via before_tool_call, resultaten observeren via after_tool_call en deelnemen aan Codex-PermissionRequest-goedkeuringen. De bridge herschrijft Codex-native toolargumenten nog niet. De exacte grens voor ondersteuning van de Codex-runtime staat in het Codex harness v1-ondersteuningscontract.
Zie voor volledig getypeerd hookgedrag het SDK-overzicht.
Gerelateerd
- Plugins bouwen - maak je eigen plugin
- Plugin-bundels - Codex/Claude/Cursor-bundelcompatibiliteit
- Pluginmanifest - manifestschema
- Tools registreren - voeg agenttools toe in een plugin
- Plugin-internals - capaciteitsmodel en laadpipeline
- Community-plugins - vermeldingen van derden