Punti di ingresso del Plugin
Ogni Plugin esporta un oggetto di ingresso predefinito. L’SDK fornisce tre helper per crearli.definePluginEntry
Importa: openclaw/plugin-sdk/plugin-entry
Per i provider plugin, i tool plugin, gli hook plugin e qualsiasi cosa che non
sia 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.kindserve per slot esclusivi:"memory"o"context-engine".configSchemapuò essere una funzione per una valutazione lazy.- OpenClaw risolve e memorizza quello schema al primo accesso, quindi i builder di schema costosi vengono eseguiti una sola volta.
defineChannelPluginEntry
Importa: openclaw/plugin-sdk/channel-core
Avvolge definePluginEntry con wiring specifico per i canali. Chiama automaticamente
api.registerChannel({ plugin }), espone un seam opzionale 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 al runtime (in genere 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, in modo che l’help root resti 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 solo setup.- Come
definePluginEntry,configSchemapuò essere una factory lazy e OpenClaw memorizza lo schema risolto al primo accesso. - Per i comandi CLI root posseduti dal Plugin, preferisci
api.registerCli(..., { descriptors: [...] })quando vuoi che il comando resti lazy-loaded senza scomparire dall’albero di parsing della CLI root. Per i channel plugin, 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 forzati aoperator.admin.
defineSetupPluginEntry
Importa: openclaw/plugin-sdk/channel-core
Per il file leggero setup-entry.ts. Restituisce solo { plugin } senza
wiring di runtime o CLI.
defineSetupPluginEntry(...) alle famiglie ristrette di helper per il setup:
openclaw/plugin-sdk/setup-runtimeper helper di setup sicuri per il runtime come adattatori di patch setup import-safe, output di note di lookup,promptResolvedAllowFrom,splitSetupEntriese proxy di setup delegatiopenclaw/plugin-sdk/channel-setupper superfici di setup di installazione opzionaleopenclaw/plugin-sdk/setup-toolsper helper CLI/archivio/documentazione di setup/installazione
defineBundledChannelSetupEntry(...) da
openclaw/plugin-sdk/channel-entry-contract. Quel contratto consente al punto di
ingresso di setup di mantenere esportazioni di plugin/secrets sicure per il setup,
continuando comunque a esporre un setter del runtime:
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 che venga caricato il punto di ingresso completo |
"cli-metadata" | Help root / acquisizione metadati CLI | Solo descrittori CLI |
defineChannelPluginEntry gestisce automaticamente questa suddivisione. Se usi
direttamente definePluginEntry per un canale, controlla tu stesso la modalità:
"setup-runtime" come la finestra in cui le superfici di avvio solo setup devono
esistere senza rientrare nel runtime completo del canale bundled. Buoni casi d’uso sono
la registrazione del canale, route HTTP sicure per il setup, metodi Gateway sicuri per il setup e
helper di setup delegati. Servizi background pesanti, registrar CLI e bootstrap di SDK provider/client
continuano invece ad appartenere a "full".
Per i registrar CLI nello specifico:
- usa
descriptorsquando il registrar possiede uno o più comandi root e tu vuoi che OpenClaw carichi lazy il vero modulo CLI alla prima invocazione - assicurati che quei descrittori coprano ogni root command di primo livello esposto dal registrar
- usa solo
commandssolo per percorsi di compatibilità eager
Forme del Plugin
OpenClaw classifica i Plugin caricati in base al loro comportamento di registrazione:| Forma | Descrizione |
|---|---|
| plain-capability | Un solo tipo di capacità (ad es. solo provider) |
| hybrid-capability | Più tipi di capacità (ad es. provider + speech) |
| hook-only | Solo hook, nessuna capacità |
| non-capability | Tool/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 di runtime —
api.runtimeecreatePluginRuntimeStore - Setup e configurazione — manifest, punto di ingresso di setup, caricamento differito
- Plugin di canale — come costruire l’oggetto
ChannelPlugin - Provider Plugins — registrazione del provider e hook