Plugins (Tillägg)
Snabbstart (ny med plugins?)
Ett plugin är helt enkelt en liten kodmodul som utökar OpenClaw med extra funktioner (kommandon, verktyg och Gateway RPC). Oftast använder du plugins när du vill ha en funktion som ännu inte är inbyggd i OpenClaw‑kärnan (eller när du vill hålla valfria funktioner borta från din huvudinstallation). Snabb väg:- Se vad som redan är laddat:
- Installera ett officiellt plugin (exempel: Voice Call):
- Starta om Gateway, konfigurera sedan under
plugins.entries.<id>.config.
Tillgängliga plugins (officiella)
- Microsoft Teams är endast plugin‑baserat från och med 2026‑01‑15; installera
@openclaw/msteamsom du använder Teams. - Memory (Core) — medföljande minnessökningsplugin (aktiverat som standard via
plugins.slots.memory) - Memory (LanceDB) — medföljande plugin för långtidsminne (automatisk återkallelse/insamling; sätt
plugins.slots.memory = "memory-lancedb") - 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 (leverantörsautentisering) — medföljer som
google-antigravity-auth(inaktiverat som standard) - Gemini CLI OAuth (leverantörsautentisering) — medföljer som
google-gemini-cli-auth(inaktiverat som standard) - Qwen OAuth (leverantörsautentisering) — medföljer som
qwen-portal-auth(inaktiverat som standard) - Copilot Proxy (leverantörsautentisering) — lokal VS Code Copilot Proxy‑brygga; skild från inbyggd
github-copilotenhetsinloggning (medföljer, inaktiverad som standard)
- Gateway RPC‑metoder
- Gateway HTTP‑hanterare
- Agentverktyg
- CLI‑kommandon
- Bakgrundstjänster
- Valfri konfigvalidering
- Skills (genom att lista
skills‑kataloger i plugin‑manifestet) - Auto‑svar‑kommandon (körs utan att AI‑agenten anropas)
Runtime‑hjälpare
Plugins kan komma åt valda kärnhjälpare viaapi.runtime. För telefoni TTS:
- Använder kärnkonfigurationen
messages.tts(OpenAI eller ElevenLabs). - Returnerar PCM ljudbuffert + samplingshastighet. Plugins måste återskapa/koda för leverantörer.
- Edge TTS stöds inte för telefoni.
Upptäckt och prioritet
OpenClaw skannar, i ordning:plugins.load.paths(fil eller katalog)
- Workspace‑tillägg
- Workspace‑tillägg
<workspace>/.openclaw/extensions/*.ts<workspace>/.openclaw/extensions/*/index.ts
- Globala tillägg
~/.openclaw/extensions/*.ts~/.openclaw/extensions/*/index.ts
- Medföljande tillägg (levereras med OpenClaw, inaktiverade som standard)
<openclaw>/extensions/*
plugins.entries.<id>.enabled
eller openclaw plugins aktivera <id>. Installerade plugins är aktiverade som standard,
men kan inaktiveras på samma sätt.
Varje plugin måste innehålla en ‘openclaw.plugin.json’ fil i sin rot. Om en sökväg
pekar på en fil, är plugin roten filens katalog och måste innehålla
manifestet.
Om flera plugins löses till samma id vinner den första träffen i ordningen ovan,
och kopior med lägre prioritet ignoreras.
Paketpaket
En plugin‑katalog kan innehålla enpackage.json med openclaw.extensions:
namn/<fileBase>.
Om ditt plugin importerar npm‑beroenden, installera dem i den katalogen så att
node_modules finns tillgänglig (npm install / pnpm install).
Säkerhetsnotering: openclaw plugins install installerar plugin‑beroenden med
npm install --ignore-scripts (inga livscykelskript). Håll plugin‑beroendeträd
“ren JS/TS” och undvik paket som kräver postinstall‑byggen.
Metadata för kanalkatalog
Kanalplugins kan annonsera onboarding metadata viaopenclaw.channel och
installera tips via openclaw.install. Detta håller kärnkatalogen data-fri.
Exempel:
~/.openclaw/mpm/plugins.json~/.openclaw/mpm/catalog.json~/.openclaw/plugins/catalog.json
OPENCLAW_PLUGIN_CATALOG_PATHS (eller OPENCLAW_MPM_CATALOG_PATHS) på
en eller flera JSON-filer (komma/semicolon/PATH-avgränsad). Varje fil ska
innehålla { "entries": [ { "name": "@scope/pkg", "openclaw": { "channel": {...}, "install": {...} } } ] }.
Plugin‑ID:n
Om ett plugin exporterarid använder OpenClaw det, men varnar när det inte matchar
det konfigurerade id:t.
- Paketpaket:
package.jsonname - Fristående fil: filens basnamn (
~/.../voice-call.ts→voice-call)
id använder OpenClaw det, men varnar när det inte matchar
det konfigurerade id:t.
Konfig
enabled: huvudbrytare (standard: true)allow: tillåtelselista (valfri)deny: spärrlista (valfri; spärr vinner)load.paths: extra plugin‑filer/katalogerentries.<id>: per-plugin växlar + konfiguration
- Okända plugin‑ID:n i
entries,allow,denyellerslotsär fel. - Okända
kanaler.<id>nycklar är fel om inte ett plugin manifest deklarerar kanal-id. - Plugin‑konfig valideras med JSON Schema som är inbäddat i
openclaw.plugin.json(configSchema). - Om ett plugin är inaktiverat bevaras dess konfig och en varning utfärdas.
Plugin‑platser (exklusiva kategorier)
Vissa pluginkategorier är exklusiva (endast en aktiv åt gången). Användplugins.slots för att välja vilken plugin som äger platsen:
kind: "memory", laddar endast den valda en. Andra
är inaktiverade med diagnostik.
Control UI (schema + etiketter)
Control UI använderconfig.schema (JSON Schema + uiHints) för att rendera bättre formulär.
Om du vill att dina plugin‑konfigfält ska visa bra etiketter/platshållare (och markera hemligheter som känsliga),
tillhandahåll uiHints tillsammans med ditt JSON Schema i plugin‑manifestet.
- Lägger till per-plugin-etiketter för
plugins.entries.<id>/.enabled/.config - Sammanfogar valfria plugin-tillhandahållna konfigurationsfälts ledtrådar under:
plugins.entries.<id>.config.<field>
uiHints tillsammans med ditt JSON Schema i plugin‑manifestet.
Exempel:
CLI
plugins update fungerar endast för npm‑installationer som spåras under plugins.installs.
Plugins exporterar antingen:
Plugin‑API (översikt)
Plugins exporterar antingen:- En funktion:
(api) => { ... } - Ett objekt:
{ id, namn, configSchema, register(api) { ... } }
Exempel
Plugins kan skeppa krokar och registrera dem vid körning. Detta låter en plugin bunt händelse-driven automatisering utan en separat krok pack installera.Exempel
- Hook‑kataloger följer den normala hook‑strukturen (
HOOK.md+handler.ts). - Regler för hook‑behörighet gäller fortfarande (OS/binärer/miljö/konfig‑krav).
- Plugin‑hanterade hooks visas i
openclaw hooks listmedplugin:<id>. - Du kan inte aktivera/inaktivera plugin‑hanterade hooks via
openclaw hooks; aktivera/inaktivera pluginet i stället.
Leverantörsplugins (modellautentisering)
Plugins kan registrera flöden för modell‑leverantörsautentisering så att användare kan köra OAuth eller API‑nyckel‑konfigurering inuti OpenClaw (inga externa skript behövs). Registrera en leverantör viaapi.registerLeverantör(...). Varje leverantör exponerar en
eller flera auth metoder (OAuth, API-nyckel, enhetskod, etc.). Dessa metoder makt:
openclaw models auth login --provider <id> [--method <id>]
runtar emot enProviderAuthContextmed hjälpare förprompter,runtime,openUrlochoauth.createVpsAwareHandlers.- Returnera
configPatchnär du behöver lägga till standardmodeller eller leverantörskonfig. - Returnera
defaultModelså att--set-defaultkan uppdatera agentstandarder.
Registrera en meddelandekanal
Plugins kan registrera kanalplugins som beter sig som inbyggda kanaler (WhatsApp, Telegram, etc.). Channel config lever underkanaler.<id> och är
validerad av din kanal plugin kod.
- Sätt konfigurationen under
kanaler.<id>(inteplugins.entries). meta.labelanvänds för etiketter i CLI/UI‑listor.meta.aliaseslägger till alternativa id:n för normalisering och CLI‑inmatningar.meta.preferOverlistar kanal‑ID:n som ska hoppas över vid auto‑aktivering när båda är konfigurerade.meta.detailLabelochmeta.systemImagelåter UI:er visa rikare kanaletiketter/ikoner.
Skriv en ny meddelandekanal (steg‑för‑steg)
Använd detta när du vill ha en ny chattvy (en “meddelandekanal”), inte en modellleverantör. Modell leverantörsdokument lever under/providers/*.
- Definiera kanalens metadata
- Alla kanalkonfigurationer lever under
kanaler.<id>. - Föredrar
kanaler.<id>.accounts.<accountId>för inställningar för flera konton.
- Implementera de obligatoriska adaptrarna
meta.label,meta.selectionLabel,meta.docsPath,meta.blurbstyr CLI/UI‑listor.capabilities(chatttyper, media, trådar osv.)outbound.deliveryMode+outbound.sendText(för grundläggande sändning)meta.detailLabelochmeta.systemImageanvänds av UI:er för detaljtext/ikoner.
- Lägg till valfria adaptrar vid behov
config.listAccountIds+config.resolveAccountcapabilities(chatttyper, media, trådar osv.)actions(meddelandeåtgärder),commands(inbyggt kommandobeteende)
- Registrera kanalen i ditt plugin
setup(guide),security(DM‑policy),status(hälsa/diagnostik)gateway(start/stop/login),mentions,threading,streamingactions(meddelandeåtgärder),commands(inbyggt kommandobeteende)
- Registrera kanalen i ditt plugin
api.registerChannel({ plugin })
plugins.load.paths), starta om gateway,
och konfigurera sedan kanaler.<id> i din konfiguration.
Registrera en gateway‑RPC‑metod
Se den dedikerade guiden: Plugin agent tools.Registrera CLI‑kommandon
Registrera auto‑svar‑kommandon
Registrera auto‑svar‑kommandon
Plugins kan registrera anpassade snedstreckskommandon som kör utan att åberopa AI-agenten. Detta är användbart för att växla kommandon, statuskontroller eller snabbåtgärder som inte behöver LLM-behandling.name: Kommandonamn (utan inledande/)description: Hjälptext som visas i kommandolistorisAuthorizedSender: Om avsändaren är auktoriseradrequireAuth: Om auktoriserad avsändare krävs (standard: true)handler: Funktion som returnerar{ text: string }(kan vara async)config: Aktuell OpenClaw‑konfig
name: Kommandonamn (utan inledande/)description: Hjälptext som visas i kommandolistoraccepterarArgs: Om kommandot accepterar argument (standard: false). Om falskt och argument anges, kommer kommandot inte att matcha och meddelandet faller igenom till andra hanterarerequireAuth: Om auktoriserad avsändare krävs (standard: true)handler: Funktion som returnerar{ text: string }(kan vara async)
- Plugin‑kommandon behandlas före inbyggda kommandon och AI‑agenten
- Kommandon registreras globalt och fungerar över alla kanaler
- Kommandonamn är skiftlägesokänsliga (
/MyStatusmatchar/mystatus) - Kommandonamn måste börja med en bokstav och endast innehålla bokstäver, siffror, bindestreck och understreck
- Reserverade kommandonamn (som
help,status,reset, etc.) kan inte åsidosättas av plugins - Dubblettregistrering av kommandon över plugins misslyckas med ett diagnostiskt fel
Namnkonventioner
Namnkonventioner
- Gateway‑metoder:
pluginId.action(exempel:voicecall.status) - Verktyg:
snake_case(exempel:voice_call) - CLI‑kommandon: kebab eller camel, men undvik kollisioner med kärnkommandon
Skills
Plugins kan skicka en färdighet i repo (skills/<name>/SKILL.md).
Aktivera det med plugins.entries.<id>.enabled (eller andra konfiguration grindar) och se till att
är närvarande i din arbetsyta / hanterade färdigheter platser.
Distribution (npm)
Publiceringskontrakt:- Plugin‑
package.jsonmåste inkluderaopenclaw.extensionsmed en eller flera startfiler. - Startfiler kan vara
.jseller.ts(jiti laddar TS vid körning).
- Plugin‑
package.jsonmåste inkluderaopenclaw.extensionsmed en eller flera startfiler. - Startfiler kan vara
.jseller.ts(jiti laddar TS vid körning). openclaw plugins install <npm-spec>användernpm pack, extraherar till~/.openclaw/extensions/<id>/och aktiverar det i konfig.- Stabilitet för konfignycklar: scoped‑paket normaliseras till det oscopade id:t för
plugins.entries.*.
Exempelplugin: Voice Call
Se Voice Call ochextensions/voice-call/README.md för konfigurering och användning.
- Källa:
extensions/voice-call - Skill:
skills/voice-call - CLI:
openclaw voicecall start|status - Verktyg:
voice_call - RPC:
voicecall.start,voicecall.status - Konfig (twilio):
provider: "twilio"+twilio.accountSid/authToken/from(valfrittstatusCallbackUrl,twimlUrl) - Konfig (dev):
provider: "log"(inget nätverk)
extensions/voice-call/README.md för konfigurering och användning.
Säkerhetsnoteringar
Plugins kör i processen med Gateway. Behandla dem som betrodd kod:- Installera endast plugins du litar på.
- Föredra
plugins.allow‑tillåtelselistor. - Starta om Gateway efter ändringar.
Testning av plugins
Plugins kan (och bör) leverera tester:- Plugins i repot kan ha Vitest‑tester under
src/**(exempel:src/plugins/voice-call.plugin.test.ts). - Separat publicerade plugins bör köra egen CI (lint/build/test) och validera att
openclaw.extensionspekar på den byggda startpunkten (dist/index.js).