Plugin-Einstiegspunkte
Jedes Plugin exportiert ein Standard-Einstiegsobjekt. Das SDK bietet drei Hilfsfunktionen zu seiner Erstellung.definePluginEntry
Import: openclaw/plugin-sdk/plugin-entry
Für Provider-Plugins, Tool-Plugins, Hook-Plugins und alles, was kein
Messaging-Kanal ist.
| Feld | Typ | Erforderlich | Standard |
|---|---|---|---|
id | string | Ja | — |
name | string | Ja | — |
description | string | Ja | — |
kind | string | Nein | — |
configSchema | OpenClawPluginConfigSchema | () => OpenClawPluginConfigSchema | Nein | Schema für leeres Objekt |
register | (api: OpenClawPluginApi) => void | Ja | — |
idmuss mit Ihremopenclaw.plugin.json-Manifest übereinstimmen.kindist für exklusive Slots:"memory"oder"context-engine".configSchemakann eine Funktion zur verzögerten Auswertung sein.- OpenClaw löst dieses Schema beim ersten Zugriff auf und memoisiert es, sodass aufwendige Schema- Builder nur einmal ausgeführt werden.
defineChannelPluginEntry
Import: openclaw/plugin-sdk/channel-core
Kapselt definePluginEntry mit kanalspezifischer Verdrahtung. Ruft automatisch
api.registerChannel({ plugin }) auf, stellt eine optionale CLI-Metadaten-Nahtstelle
für die Root-Hilfe bereit und steuert registerFull über den Registrierungsmodus.
| Feld | Typ | Erforderlich | Standard |
|---|---|---|---|
id | string | Ja | — |
name | string | Ja | — |
description | string | Ja | — |
plugin | ChannelPlugin | Ja | — |
configSchema | OpenClawPluginConfigSchema | () => OpenClawPluginConfigSchema | Nein | Schema für leeres Objekt |
setRuntime | (runtime: PluginRuntime) => void | Nein | — |
registerCliMetadata | (api: OpenClawPluginApi) => void | Nein | — |
registerFull | (api: OpenClawPluginApi) => void | Nein | — |
setRuntimewird während der Registrierung aufgerufen, damit Sie die Runtime-Referenz speichern können (typischerweise übercreatePluginRuntimeStore). Während der Erfassung von CLI-Metadaten wird dies übersprungen.registerCliMetadatawird sowohl beiapi.registrationMode === "cli-metadata"als auch beiapi.registrationMode === "full"ausgeführt. Verwenden Sie dies als maßgeblichen Ort für dem Kanal gehörende CLI-Deskriptoren, damit die Root-Hilfe nicht aktivierend bleibt, während die normale Registrierung von CLI-Befehlen mit vollständigen Plugin-Ladevorgängen kompatibel bleibt.registerFullwird nur ausgeführt, wennapi.registrationMode === "full"gilt. Es wird beim reinen Setup-Laden übersprungen.- Wie bei
definePluginEntrykannconfigSchemaeine Lazy-Factory sein, und OpenClaw memoisiert das aufgelöste Schema beim ersten Zugriff. - Für Root-CLI-Befehle, die dem Plugin gehören, bevorzugen Sie
api.registerCli(..., { descriptors: [...] }), wenn der Befehl lazy-loaded bleiben soll, ohne aus dem Root-CLI-Parsebaum zu verschwinden. Bei Channel-Plugins sollten diese Deskriptoren bevorzugt ausregisterCliMetadata(...)registriert werden, undregisterFull(...)sollte sich auf reine Laufzeitarbeit konzentrieren. - Wenn
registerFull(...)auch Gateway-RPC-Methoden registriert, behalten Sie diese unter einem pluginspezifischen Präfix. Reservierte Kern-Admin-Namespaces (config.*,exec.approvals.*,wizard.*,update.*) werden immer zuoperator.adminumgewandelt.
defineSetupPluginEntry
Import: openclaw/plugin-sdk/channel-core
Für die schlanke Datei setup-entry.ts. Gibt nur { plugin } ohne
Runtime- oder CLI-Verdrahtung zurück.
defineSetupPluginEntry(...) mit den schmalen Setup-Hilfsfamilien:
openclaw/plugin-sdk/setup-runtimefür laufzeitsichere Setup-Hilfen wie import-sichere Setup-Patch-Adapter, Ausgabe von Lookup-Hinweisen,promptResolvedAllowFrom,splitSetupEntriesund delegierte Setup-Proxysopenclaw/plugin-sdk/channel-setupfür optionale Installations-Setup-Oberflächenopenclaw/plugin-sdk/setup-toolsfür Setup-/Installations-CLI-/Archiv-/Dokumentationshilfen
Registrierungsmodus
api.registrationMode zeigt Ihrem Plugin, wie es geladen wurde:
| Modus | Wann | Was registriert werden soll |
|---|---|---|
"full" | Normaler Gateway-Start | Alles |
"setup-only" | Deaktivierter/nicht konfigurierter Kanal | Nur Kanalregistrierung |
"setup-runtime" | Setup-Ablauf mit verfügbarer Runtime | Kanalregistrierung plus nur die schlanke Runtime, die vor dem Laden des vollständigen Einstiegspunkts benötigt wird |
"cli-metadata" | Root-Hilfe / Erfassung von CLI-Metadaten | Nur CLI-Deskriptoren |
defineChannelPluginEntry übernimmt diese Aufteilung automatisch. Wenn Sie
definePluginEntry direkt für einen Kanal verwenden, prüfen Sie den Modus selbst:
"setup-runtime" als das Fenster, in dem reine Setup-Startoberflächen
vorhanden sein müssen, ohne die vollständige gebündelte Kanal-Runtime erneut zu betreten. Geeignet sind
Kanalregistrierung, setupsichere HTTP-Routen, setupsichere Gateway-Methoden und
delegierte Setup-Hilfen. Schwere Hintergrunddienste, CLI-Registrierer und
Provider-/Client-SDK-Bootstraps gehören weiterhin in "full".
Speziell für CLI-Registrierer gilt:
- verwenden Sie
descriptors, wenn der Registrierer einen oder mehrere Root-Befehle besitzt und Sie möchten, dass OpenClaw das echte CLI-Modul beim ersten Aufruf lazy lädt - stellen Sie sicher, dass diese Deskriptoren jeden Top-Level-Befehlsstamm abdecken, der vom Registrierer bereitgestellt wird
- verwenden Sie
commandsallein nur für eager-kompatible Pfade
Plugin-Formen
OpenClaw klassifiziert geladene Plugins nach ihrem Registrierungsverhalten:| Form | Beschreibung |
|---|---|
| plain-capability | Ein Funktionstyp (z. B. nur Provider) |
| hybrid-capability | Mehrere Funktionstypen (z. B. Provider + Speech) |
| hook-only | Nur Hooks, keine Funktionen |
| non-capability | Tools/Befehle/Dienste, aber keine Funktionen |
openclaw plugins inspect <id>, um die Form eines Plugins anzuzeigen.
Verwandt
- SDK-Überblick — Registrierungs-API und Subpfad-Referenz
- Runtime-Hilfen —
api.runtimeundcreatePluginRuntimeStore - Setup und Konfiguration — Manifest, Setup-Einstiegspunkt, verzögertes Laden
- Channel Plugins — das
ChannelPlugin-Objekt erstellen - Provider Plugins — Provider-Registrierung und Hooks