clawhub: wanneer je ClawHub-resolutie wilt.
Vereisten
- Gebruik Node 22.19+, Node 23.11+, of Node 24+ en een package manager zoals
npmofpnpm. - Wees vertrouwd met TypeScript ESM-modules.
- Voor in-repo gebundeld pluginwerk: clone de repository en voer
pnpm installuit. Source-checkout pluginontwikkeling is alleen pnpm, omdat OpenClaw gebundelde plugins laadt vanuitextensions/*workspace-packages.
Kies de pluginvorm
Channel plugin
Verbind OpenClaw met een messagingplatform.
Provider plugin
Voeg een model-, media-, zoek-, fetch-, spraak- of realtimeprovider toe.
CLI backend plugin
Voer een lokale AI-CLI uit via OpenClaw-modelterugval.
Tool plugin
Registreer agenttools.
Snelstart
Bouw een minimale toolplugin door één vereiste agenttool te registreren. Dit is de kortste nuttige pluginvorm en toont het package, manifest, entrypoint en lokale bewijs.Create package metadata
contracts.tools staan zodat OpenClaw ownership kan ontdekken zonder
elke pluginruntime eager te laden. Stel activation.onStartup
bewust in. Dit voorbeeld start bij het opstarten van de Gateway.Door de host vertrouwde pluginoppervlakken zijn ook manifest-gated en vereisen expliciete
inschakeling voor geïnstalleerde plugins. Als een geïnstalleerde plugin
api.registerAgentToolResultMiddleware(...) registreert, declareer dan elke doelruntime in
contracts.agentToolResultMiddleware. Als die
api.registerTrustedToolPolicy(...) registreert, declareer dan elke policy-id in
contracts.trustedToolPolicies. Deze declaraties houden inspectie tijdens installatie
en runtimeregistratie op elkaar afgestemd.Zie voor elk manifestveld Pluginmanifest.Register the tool
index.ts
definePluginEntry voor niet-channelplugins. Channelplugins gebruiken
defineChannelPluginEntry.Test the runtime
Inspecteer voor een geïnstalleerde of externe plugin de geladen runtime:Als de plugin een CLI-command registreert, voer dat command dan ook uit. Een
demo-command moet bijvoorbeeld uitvoeringsbewijs hebben zoals
openclaw demo-plugin ping.Voor een gebundelde plugin in deze repository ontdekt OpenClaw source-checkout
pluginpackages vanuit de extensions/* workspace. Voer de dichtstbijzijnde gerichte
test uit:Test the package install
Test vóór het publiceren van een package-ready plugin dezelfde installatievorm die gebruikers
krijgen. Voeg eerst een buildstap toe, laat runtime-entry’s zoals
openclaw.extensions wijzen naar gebouwde JavaScript zoals ./dist/index.js, en zorg
dat npm pack die dist/-output bevat. TypeScript-source-entry’s zijn
alleen voor source-checkouts en lokale ontwikkelpaden.Pack daarna de plugin en installeer de tarball met npm-pack::npm-pack: gebruikt OpenClaw’s beheerde npm-project per plugin, dus het vangt
runtimeafhankelijkheidsfouten die source-checkouttests kunnen verbergen. Het bewijst
de package- en afhankelijkheidsvorm, niet catalogus-gekoppeld officieel vertrouwen.
Runtime-imports moeten in dependencies of optionalDependencies staan;
afhankelijkheden die alleen in devDependencies blijven staan, worden niet geïnstalleerd voor het
beheerde runtimeproject.Gebruik geen raw archive/path-install als eindbewijs voor officieel of
privileged plugingedrag. Raw sources zijn nuttig voor lokale debugging, maar
ze bewijzen niet hetzelfde afhankelijkheidspad als npm- of ClawHub-installaties. Als
je plugin vertrouwt op vertrouwde officiële pluginstatus, voeg dan een tweede bewijs toe
via een catalog-backed officiële installatie of een gepubliceerd packagepad dat
officieel vertrouwen vastlegt. Zie
Plugin dependency resolution voor details over
install-root en ownership van afhankelijkheden.Publish
Valideer het package vóór publicatie:De canonieke ClawHub-snippets staan in
docs/snippets/plugin-publish/.Tools registreren
Tools kunnen vereist of optioneel zijn. Vereiste tools zijn altijd beschikbaar wanneer de plugin is ingeschakeld. Optionele tools vereisen opt-in van de gebruiker.api.registerTool(...) wordt geregistreerd, moet ook worden gedeclareerd in het
pluginmanifest:
tools.allow:
parameters, worden overgeslagen en
op dezelfde manier gerapporteerd. Geregistreerde tools zijn getypeerde functies die het model kan aanroepen
nadat policy- en allowlist-controles slagen.
Toolfactories ontvangen een door de runtime geleverd contextobject. Gebruik ctx.activeModel
wanneer een tool moet loggen, weergeven of zich aanpassen aan het actieve model voor de huidige
turn. Het object kan provider, modelId en modelRef bevatten. Behandel het als
informatieve runtimemetadata, niet als een beveiligingsgrens tegen de lokale
operator, geïnstalleerde plugincode of een gewijzigde OpenClaw-runtime. Gevoelige lokale
tools moeten nog steeds een expliciete plugin- of operator-opt-in vereisen en fail-closed
wanneer active-model-metadata ontbreekt of ongeschikt is.
Het manifest declareert ownership en discovery; uitvoering roept nog steeds de live
geregistreerde toolimplementatie aan. Houd toolMetadata.<tool>.optional: true
afgestemd op api.registerTool(..., { optional: true }) zodat OpenClaw kan voorkomen
dat die pluginruntime wordt geladen totdat de tool expliciet op de allowlist staat.
Importconventies
Importeer vanuit gerichte SDK-subpaden:api.ts en
runtime-api.ts voor interne imports. Importeer je eigen plugin niet via een
SDK-pad. Providerspecifieke helpers moeten in het providerpackage blijven, tenzij
de seam echt generiek is.
Custom Gateway RPC-methoden zijn een geavanceerd entrypoint. Houd ze op een
pluginspecifieke prefix; core admin-namespaces zoals config.*,
exec.approvals.*, operator.admin.*, wizard.* en update.* blijven gereserveerd
en resolven naar operator.admin. De
openclaw/plugin-sdk/gateway-method-runtime-bridge is gereserveerd voor plugin-HTTP
routes die contracts.gatewayMethodDispatch: ["authenticated-request"] declareren.
Zie voor de volledige importmap Plugin SDK-overzicht.
Checklist vóór indiening
package.json heeft correcte
openclaw-metadataopenclaw.plugin.json-manifest is aanwezig en geldig
Entrypoint gebruikt
defineChannelPluginEntry of definePluginEntryAlle imports gebruiken gerichte
plugin-sdk/<subpath>-padenInterne imports gebruiken lokale modules, geen SDK-self-imports
Tests slagen (
pnpm test -- <bundled-plugin-root>/my-plugin/)pnpm check slaagt (in-repo plugins)Test tegen beta-releases
- Let op GitHub-release-tags op openclaw/openclaw en abonneer je via
Watch>Releases. Beta-tags zien eruit alsv2026.3.N-beta.1. Je kunt ook meldingen inschakelen voor het officiële OpenClaw X-account @openclaw voor release-aankondigingen. - Test je Plugin tegen de beta-tag zodra die verschijnt. De periode vóór stable is meestal maar een paar uur.
- Plaats na het testen een bericht in de thread van je Plugin in het Discord-kanaal
plugin-forummetall goodof wat er kapotging. Als je nog geen thread hebt, maak er dan een aan. - Als er iets kapotgaat, open of update dan een issue met de titel
Beta blocker: <plugin-name> - <summary>en pas het labelbeta-blockertoe. Zet de issue-link in je thread. - Open een PR naar
mainmet de titelfix(<plugin-id>): beta blocker - <summary>en link het issue in zowel de PR als je Discord-thread. Contributors kunnen PR’s niet labelen, dus de titel is het PR-signaal voor maintainers en automatisering. Blockers met een PR worden gemerged; blockers zonder PR kunnen alsnog worden uitgebracht. Maintainers volgen deze threads tijdens beta-tests. - Stilte betekent groen. Als je de periode mist, landt je fix waarschijnlijk in de volgende cyclus.
Volgende stappen
Channel Plugins
Bouw een messaging-channel-Plugin
Provider Plugins
Bouw een modelprovider-Plugin
CLI Backend Plugins
Registreer een lokale AI CLI-backend
SDK Overview
Importmap en API-referentie voor registratie
Runtime Helpers
TTS, zoeken, subagent via api.runtime
Testing
Testhulpmiddelen en patronen
Plugin Manifest
Volledige manifest-schemareferentie