Punti di ingresso dei plugin
Ogni plugin esporta un oggetto entry predefinito. L’SDK fornisce tre helper per crearli.definePluginEntry
Import: openclaw/plugin-sdk/plugin-entry
Per plugin provider, plugin di strumenti, plugin di hook e tutto ciò che non
è un canale di messaggistica.
| Campo | Tipo | Obbligatorio | Predefinito |
|---|---|---|---|
id | string | Sì | — |
name | string | Sì | — |
description | string | Sì | — |
kind | string | No | — |
configSchema | OpenClawPluginConfigSchema | () => OpenClawPluginConfigSchema | No | Schema oggetto vuoto |
register | (api: OpenClawPluginApi) => void | Sì | — |
iddeve corrispondere al tuo manifestopenclaw.plugin.json.kindè per slot esclusivi:"memory"o"context-engine".configSchemapuò essere una funzione per la valutazione lazy.- OpenClaw risolve e memoizza quello schema al primo accesso, quindi i builder di schema costosi vengono eseguiti una sola volta.
defineChannelPluginEntry
Import: openclaw/plugin-sdk/channel-core
Avvolge definePluginEntry con il wiring specifico per i canali. Chiama automaticamente
api.registerChannel({ plugin }), espone una seam facoltativa di metadati CLI per l’help root
e limita registerFull in base alla modalità di registrazione.
| Campo | Tipo | Obbligatorio | Predefinito |
|---|---|---|---|
id | string | Sì | — |
name | string | Sì | — |
description | string | Sì | — |
plugin | ChannelPlugin | Sì | — |
configSchema | OpenClawPluginConfigSchema | () => OpenClawPluginConfigSchema | No | Schema oggetto vuoto |
setRuntime | (runtime: PluginRuntime) => void | No | — |
registerCliMetadata | (api: OpenClawPluginApi) => void | No | — |
registerFull | (api: OpenClawPluginApi) => void | No | — |
setRuntimeviene chiamato durante la registrazione così puoi memorizzare il riferimento runtime (tipicamente tramitecreatePluginRuntimeStore). Viene saltato durante la raccolta dei metadati CLI.registerCliMetadataviene eseguito sia quandoapi.registrationMode === "cli-metadata"sia quandoapi.registrationMode === "full". Usalo come punto canonico per i descrittori CLI posseduti dal canale, così l’help root resta non attivante mentre la normale registrazione dei comandi CLI rimane compatibile con i caricamenti completi del plugin.registerFullviene eseguito solo quandoapi.registrationMode === "full". Viene saltato durante il caricamento setup-only.- Come
definePluginEntry,configSchemapuò essere una factory lazy e OpenClaw memoizza lo schema risolto al primo accesso. - Per i comandi CLI root posseduti dal plugin, preferisci
api.registerCli(..., { descriptors: [...] })quando vuoi che il comando resti caricato lazy senza scomparire dall’albero di parsing della CLI root. Per i plugin di canale, preferisci registrare quei descrittori daregisterCliMetadata(...)e mantenereregisterFull(...)focalizzato sul lavoro solo runtime. - Se
registerFull(...)registra anche metodi RPC del gateway, mantienili su un prefisso specifico del plugin. Gli spazi dei nomi admin core riservati (config.*,exec.approvals.*,wizard.*,update.*) vengono sempre coercizzati aoperator.admin.
defineSetupPluginEntry
Import: openclaw/plugin-sdk/channel-core
Per il file leggero setup-entry.ts. Restituisce solo { plugin } senza
wiring runtime o CLI.
defineSetupPluginEntry(...) alle famiglie ristrette di helper setup:
openclaw/plugin-sdk/setup-runtimeper helper di setup sicuri per il runtime come adapter di patch setup import-safe, output di note lookup,promptResolvedAllowFrom,splitSetupEntriese proxy di setup delegatiopenclaw/plugin-sdk/channel-setupper superfici di setup con installazione facoltativaopenclaw/plugin-sdk/setup-toolsper helper di setup/installazione CLI/archivio/documentazione
Modalità di registrazione
api.registrationMode indica al tuo plugin come è stato caricato:
| Modalità | Quando | Cosa registrare |
|---|---|---|
"full" | Avvio normale del gateway | Tutto |
"setup-only" | Canale disabilitato/non configurato | Solo registrazione del canale |
"setup-runtime" | Flusso di setup con runtime disponibile | Registrazione del canale più solo il runtime leggero necessario prima del caricamento dell’entry completa |
"cli-metadata" | Help root / raccolta metadati CLI | Solo descrittori CLI |
defineChannelPluginEntry gestisce automaticamente questa suddivisione. Se usi
definePluginEntry direttamente per un canale, controlla tu stesso la modalità:
"setup-runtime" come la finestra in cui devono esistere superfici di avvio
solo setup senza rientrare nel runtime completo del canale bundled. Gli usi adatti sono
registrazione del canale, route HTTP sicure per il setup, metodi gateway sicuri per il setup e
helper di setup delegati. Servizi in background pesanti, registrar CLI e
bootstrap di SDK provider/client appartengono ancora a "full".
Per i registrar CLI in particolare:
- usa
descriptorsquando il registrar possiede uno o più comandi root e vuoi che OpenClaw carichi lazy il modulo CLI reale alla prima invocazione - assicurati che quei descrittori coprano ogni root di comando di primo livello esposta dal registrar
- usa solo
commandsper i percorsi di compatibilità eager
Forme dei plugin
OpenClaw classifica i plugin caricati in base al loro comportamento di registrazione:| Forma | Descrizione |
|---|---|
| plain-capability | Un tipo di capacità (ad esempio solo provider) |
| hybrid-capability | Più tipi di capacità (ad esempio provider + speech) |
| hook-only | Solo hook, nessuna capacità |
| non-capability | Strumenti/comandi/servizi ma nessuna capacità |
openclaw plugins inspect <id> per vedere la forma di un plugin.
Correlati
- Panoramica SDK — API di registrazione e riferimento dei sottopercorsi
- Helper runtime —
api.runtimeecreatePluginRuntimeStore - Setup e configurazione — manifest, setup entry, caricamento differito
- Plugin di canale — costruzione dell’oggetto
ChannelPlugin - Plugin provider — registrazione provider e hook