Plugins (Extensies)
Snelle start (nieuw met plugins?)
Een plugin is gewoon een kleine codemodule die OpenClaw uitbreidt met extra functies (opdrachten, tools en Gateway RPC). Meestal gebruik je plugins wanneer je een functie wilt die nog niet in de kern van OpenClaw zit (of wanneer je optionele functies buiten je hoofdinstallatie wilt houden). Snelle route:- Bekijk wat er al is geladen:
- Installeer een officiële plugin (voorbeeld: Voice Call):
- Herstart de Gateway en configureer vervolgens onder
plugins.entries.<id>.config.
Beschikbare plugins (officieel)
- Microsoft Teams is sinds 2026.1.15 alleen via een plugin beschikbaar; installeer
@openclaw/msteamsals je Teams gebruikt. - Memory (Core) — gebundelde geheugenzoekplugin (standaard ingeschakeld via
plugins.slots.memory) - Memory (LanceDB) — gebundelde langetermijngeheugenplugin (automatisch ophalen/vastleggen; stel
plugins.slots.memory = "memory-lancedb"in) - Voice Call —
@openclaw/voice-call - Zalo Personal —
@openclaw/zalouser - Matrix —
@openclaw/matrix - Nostr —
@openclaw/nostr - Zalo —
@openclaw/zalo - Microsoft Teams —
@openclaw/msteams - Google Antigravity OAuth (provider-authenticatie) — gebundeld als
google-antigravity-auth(standaard uitgeschakeld) - Gemini CLI OAuth (provider-authenticatie) — gebundeld als
google-gemini-cli-auth(standaard uitgeschakeld) - Qwen OAuth (provider-authenticatie) — gebundeld als
qwen-portal-auth(standaard uitgeschakeld) - Copilot Proxy (provider-authenticatie) — lokale VS Code Copilot Proxy-bridge; onderscheiden van ingebouwde
github-copilotapparaatlogin (gebundeld, standaard uitgeschakeld)
- Gateway RPC-methoden
- Gateway HTTP-handlers
- Agent-tools
- CLI-opdrachten
- Achtergronddiensten
- Optionele configuratievalidatie
- Skills (door
skills-mappen te vermelden in het pluginmanifest) - Auto-reply-opdrachten (uitgevoerd zonder de AI-agent aan te roepen)
Runtime-hulpmiddelen
Plugins hebben toegang tot geselecteerde kernhulpmiddelen viaapi.runtime. Voor telefonie-TTS:
- Gebruikt de kernconfiguratie
messages.tts(OpenAI of ElevenLabs). - Retourneert een PCM-audiobuffer + sample rate. Plugins moeten zelf resamplen/encoderen voor providers.
- Edge TTS wordt niet ondersteund voor telefonie.
Discovery & prioriteit
OpenClaw scant, in volgorde:- Config-paden
plugins.load.paths(bestand of map)
- Werkruimte-extensies
<workspace>/.openclaw/extensions/*.ts<workspace>/.openclaw/extensions/*/index.ts
- Globale extensies
~/.openclaw/extensions/*.ts~/.openclaw/extensions/*/index.ts
- Gebundelde extensies (meegeleverd met OpenClaw, standaard uitgeschakeld)
<openclaw>/extensions/*
plugins.entries.<id>.enabled
of openclaw plugins enable <id>. Geïnstalleerde plugins zijn standaard ingeschakeld,
maar kunnen op dezelfde manier worden uitgeschakeld.
Elke plugin moet een openclaw.plugin.json-bestand in de root bevatten. Als een pad
naar een bestand wijst, is de plugin-root de map van dat bestand en moet deze
het manifest bevatten.
Als meerdere plugins naar dezelfde id resolven, wint de eerste overeenkomst
in bovenstaande volgorde en worden kopieën met lagere prioriteit genegeerd.
Package packs
Een pluginmap kan eenpackage.json bevatten met openclaw.extensions:
name/<fileBase>.
Als je plugin npm-afhankelijkheden importeert, installeer deze dan in die map zodat
node_modules beschikbaar is (npm install / pnpm install).
Beveiligingsopmerking: openclaw plugins install installeert pluginafhankelijkheden met
npm install --ignore-scripts (geen lifecycle-scripts). Houd pluginafhankelijkheidsbomen
“pure JS/TS” en vermijd pakketten die een postinstall-build vereisen.
Kanaalcatalogus-metadata
Kanaalplugins kunnen onboarding-metadata adverteren viaopenclaw.channel en
installatiehints via openclaw.install. Dit houdt de kerncatalogus vrij van data.
Voorbeeld:
~/.openclaw/mpm/plugins.json~/.openclaw/mpm/catalog.json~/.openclaw/plugins/catalog.json
OPENCLAW_PLUGIN_CATALOG_PATHS (of OPENCLAW_MPM_CATALOG_PATHS) naar
een of meer JSON-bestanden (gescheiden door komma/komma-puntkomma/PATH). Elk bestand moet
{ "entries": [ { "name": "@scope/pkg", "openclaw": { "channel": {...}, "install": {...} } } ] } bevatten.
Plugin-ID’s
Standaard plugin-id’s:- Package packs:
package.jsonname - Losstaand bestand: bestandsbasisnaam (
~/.../voice-call.ts→voice-call)
id exporteert, gebruikt OpenClaw deze maar waarschuwt
wanneer deze niet overeenkomt met de geconfigureerde id.
Configuratie
enabled: hoofdswitch (standaard: true)allow: toegestane lijst (optioneel)deny: denylist (optioneel; deny wint)load.paths: extra pluginbestanden/-mappenentries.<id>: per-plugin schakelaars + configuratie
- Onbekende plugin-id’s in
entries,allow,denyofslotszijn fouten. - Onbekende
channels.<id>-sleutels zijn fouten, tenzij een pluginmanifest de kanaal-id declareert. - Pluginconfiguratie wordt gevalideerd met het JSON Schema dat is ingesloten in
openclaw.plugin.json(configSchema). - Als een plugin is uitgeschakeld, blijft de configuratie behouden en wordt een waarschuwing gegeven.
Plugin-slots (exclusieve categorieën)
Sommige plugincategorieën zijn exclusief (slechts één tegelijk actief). Gebruikplugins.slots om te selecteren welke plugin het slot bezit:
kind: "memory" declareren, wordt alleen de geselecteerde geladen. De andere worden uitgeschakeld met diagnostische meldingen.
Control UI (schema + labels)
De Control UI gebruiktconfig.schema (JSON Schema + uiHints) om betere formulieren te renderen.
OpenClaw breidt uiHints tijdens runtime uit op basis van ontdekte plugins:
- Voegt per-plugin labels toe voor
plugins.entries.<id>/.enabled/.config - Voegt optionele, door plugins aangeleverde hints voor configuratievelden samen onder:
plugins.entries.<id>.config.<field>
uiHints mee naast je JSON Schema in het pluginmanifest.
Voorbeeld:
CLI
plugins update werkt alleen voor npm-installaties die worden bijgehouden onder plugins.installs.
Plugins kunnen ook hun eigen top-level opdrachten registreren (voorbeeld: openclaw voicecall).
Plugin-API (overzicht)
Plugins exporteren óf:- Een functie:
(api) => { ... } - Een object:
{ id, name, configSchema, register(api) { ... } }
Plugin-hooks
Plugins kunnen hooks meeleveren en deze tijdens runtime registreren. Hiermee kan een plugin event-gedreven automatisering bundelen zonder een aparte hook-pack-installatie.Voorbeeld
- Hook-mappen volgen de normale hook-structuur (
HOOK.md+handler.ts). - Regels voor hook-geschiktheid blijven van toepassing (OS/binaries/omgevings-/configvereisten).
- Door plugins beheerde hooks verschijnen in
openclaw hooks listmetplugin:<id>. - Je kunt door plugins beheerde hooks niet in-/uitschakelen via
openclaw hooks; schakel in plaats daarvan de plugin in/uit.
Provider-plugins (modelauthenticatie)
Plugins kunnen modelprovider-authenticatie-flows registreren zodat gebruikers OAuth of API-sleutel-installatie binnen OpenClaw kunnen uitvoeren (geen externe scripts nodig). Registreer een provider viaapi.registerProvider(...). Elke provider stelt een of meer
auth-methoden beschikbaar (OAuth, API-sleutel, apparaatcode, enz.). Deze methoden voeden:
openclaw models auth login --provider <id> [--method <id>]
runontvangt eenProviderAuthContextmetprompter,runtime,openUrlenoauth.createVpsAwareHandlers-hulpmiddelen.- Retourneer
configPatchwanneer je standaardmodellen of providerconfiguratie moet toevoegen. - Retourneer
defaultModelzodat--set-defaultde agent-standaardwaarden kan bijwerken.
Een messagingkanaal registreren
Plugins kunnen kanaalplugins registreren die zich gedragen als ingebouwde kanalen (WhatsApp, Telegram, enz.). Kanaalconfiguratie staat onderchannels.<id> en wordt
gevalideerd door je kanaalplugincode.
- Plaats configuratie onder
channels.<id>(nietplugins.entries). meta.labelwordt gebruikt voor labels in CLI/UI-lijsten.meta.aliasesvoegt alternatieve id’s toe voor normalisatie en CLI-invoer.meta.preferOververmeldt kanaal-id’s die automatisch inschakelen moeten overslaan wanneer beide zijn geconfigureerd.meta.detailLabelenmeta.systemImagestellen UI’s in staat rijkere kanaallabels/iconen te tonen.
Een nieuw messagingkanaal schrijven (stap-voor-stap)
Gebruik dit wanneer je een nieuw chatoppervlak (een “messagingkanaal”) wilt, geen modelprovider. Documentatie voor modelproviders staat onder/providers/*.
- Kies een id + configuratievorm
- Alle kanaalconfiguratie staat onder
channels.<id>. - Geef de voorkeur aan
channels.<id>.accounts.<accountId>voor multi-accountopstellingen.
- Definieer de kanaalmetadata
meta.label,meta.selectionLabel,meta.docsPath,meta.blurbbepalen CLI/UI-lijsten.meta.docsPathmoet verwijzen naar een documentatiepagina zoals/channels/<id>.meta.preferOverlaat een plugin een ander kanaal vervangen (auto-inschakelen geeft er de voorkeur aan).meta.detailLabelenmeta.systemImageworden door UI’s gebruikt voor detailtekst/iconen.
- Voeg optionele adapters toe indien nodig
config.listAccountIds+config.resolveAccountcapabilities(chattypes, media, threads, enz.)outbound.deliveryMode+outbound.sendText(voor basisverzending)
- Implementeer de vereiste adapters
setup(wizard),security(DM-beleid),status(gezondheid/diagnostiek)gateway(start/stop/login),mentions,threading,streamingactions(berichtacties),commands(native opdrachtgedrag)
- Registreer het kanaal in je plugin
api.registerChannel({ plugin })
plugins.load.paths), herstart de Gateway
en configureer vervolgens channels.<id> in je configuratie.
Agent-tools
Zie de aparte handleiding: Plugin agent tools.Een gateway RPC-methode registreren
CLI-opdrachten registreren
Auto-reply-opdrachten registreren
Plugins kunnen aangepaste slash-opdrachten registreren die worden uitgevoerd zonder de AI-agent aan te roepen. Dit is handig voor toggle-opdrachten, statuscontroles of snelle acties die geen LLM-verwerking nodig hebben.senderId: De ID van de afzender (indien beschikbaar)channel: Het kanaal waarin de opdracht is verzondenisAuthorizedSender: Of de afzender een geautoriseerde gebruiker isargs: Argumenten die na de opdracht zijn doorgegeven (indienacceptsArgs: true)commandBody: De volledige opdrachttekstconfig: De huidige OpenClaw-configuratie
name: Opdrachtnaam (zonder de voorloop-/)description: Hulptekst die in opdrachtoverzichten wordt getoondacceptsArgs: Of de opdracht argumenten accepteert (standaard: false). Als false en er argumenten worden opgegeven, matcht de opdracht niet en valt het bericht door naar andere handlersrequireAuth: Of een geautoriseerde afzender vereist is (standaard: true)handler: Functie die{ text: string }retourneert (kan async zijn)
- Pluginopdrachten worden vóór ingebouwde opdrachten en de AI-agent verwerkt
- Opdrachten worden globaal geregistreerd en werken over alle kanalen
- Opdrachtnamen zijn niet hoofdlettergevoelig (
/MyStatusmatcht/mystatus) - Opdrachtnamen moeten met een letter beginnen en mogen alleen letters, cijfers, koppeltekens en underscores bevatten
- Gereserveerde opdrachtnamen (zoals
help,status,reset, enz.) kunnen niet door plugins worden overschreven - Dubbele opdrachtregistratie over plugins heen faalt met een diagnostische fout
Achtergronddiensten registreren
Naamgevingsconventies
- Gateway-methoden:
pluginId.action(voorbeeld:voicecall.status) - Tools:
snake_case(voorbeeld:voice_call) - CLI-opdrachten: kebab of camel, maar vermijd conflicten met kernopdrachten
Skills
Plugins kunnen een skill in de repo meeleveren (skills/<name>/SKILL.md).
Schakel deze in met plugins.entries.<id>.enabled (of andere configuratiepoorten) en zorg
dat deze aanwezig is in je werkruimte-/beheerde skills-locaties.
Distributie (npm)
Aanbevolen packaging:- Hoofdpakket:
openclaw(deze repo) - Plugins: afzonderlijke npm-pakketten onder
@openclaw/*(voorbeeld:@openclaw/voice-call)
- Plugin
package.jsonmoetopenclaw.extensionsbevatten met een of meer entrybestanden. - Entrybestanden kunnen
.jsof.tszijn (jiti laadt TS tijdens runtime). openclaw plugins install <npm-spec>gebruiktnpm pack, extraheert naar~/.openclaw/extensions/<id>/en schakelt het in via config.- Stabiliteit van configsleutels: scoped packages worden genormaliseerd naar de ongescopte id voor
plugins.entries.*.
Voorbeeldplugin: Voice Call
Deze repo bevat een voice-call-plugin (Twilio of log-fallback):- Bron:
extensions/voice-call - Skill:
skills/voice-call - CLI:
openclaw voicecall start|status - Tool:
voice_call - RPC:
voicecall.start,voicecall.status - Config (twilio):
provider: "twilio"+twilio.accountSid/authToken/from(optioneelstatusCallbackUrl,twimlUrl) - Config (dev):
provider: "log"(geen netwerk)
extensions/voice-call/README.md voor installatie en gebruik.
Veiligheidsnotities
Plugins draaien in-process met de Gateway. Behandel ze als vertrouwde code:- Installeer alleen plugins die je vertrouwt.
- Geef de voorkeur aan
plugins.allowtoegestane lijsten. - Herstart de Gateway na wijzigingen.
Plugins testen
Plugins kunnen (en zouden) tests meeleveren:- In-repo plugins kunnen Vitest-tests onder
src/**plaatsen (voorbeeld:src/plugins/voice-call.plugin.test.ts). - Afzonderlijk gepubliceerde plugins moeten hun eigen CI draaien (lint/build/test) en valideren dat
openclaw.extensionsnaar het gebouwde entrypoint wijst (dist/index.js).