Puntos de entrada de plugins
Cada plugin exporta un objeto de entrada predeterminado. El SDK proporciona tres helpers para crearlos.definePluginEntry
Import: openclaw/plugin-sdk/plugin-entry
Para plugins de proveedores, plugins de herramientas, plugins de hooks y cualquier cosa que no sea
un canal de mensajería.
| Field | Type | Required | Predeterminado |
|---|---|---|---|
id | string | Sí | — |
name | string | Sí | — |
description | string | Sí | — |
kind | string | No | — |
configSchema | OpenClawPluginConfigSchema | () => OpenClawPluginConfigSchema | No | Esquema de objeto vacío |
register | (api: OpenClawPluginApi) => void | Sí | — |
iddebe coincidir con tu manifiestoopenclaw.plugin.json.kindes para ranuras exclusivas:"memory"o"context-engine".configSchemapuede ser una función para evaluación diferida.- OpenClaw resuelve y memoiza ese esquema en el primer acceso, de modo que los generadores de esquemas costosos se ejecutan solo una vez.
defineChannelPluginEntry
Import: openclaw/plugin-sdk/channel-core
Envuelve definePluginEntry con cableado específico de canal. Llama automáticamente a
api.registerChannel({ plugin }), expone una unión opcional para metadatos CLI de ayuda raíz y controla registerFull según el modo de registro.
| Field | Type | Required | Predeterminado |
|---|---|---|---|
id | string | Sí | — |
name | string | Sí | — |
description | string | Sí | — |
plugin | ChannelPlugin | Sí | — |
configSchema | OpenClawPluginConfigSchema | () => OpenClawPluginConfigSchema | No | Esquema de objeto vacío |
setRuntime | (runtime: PluginRuntime) => void | No | — |
registerCliMetadata | (api: OpenClawPluginApi) => void | No | — |
registerFull | (api: OpenClawPluginApi) => void | No | — |
setRuntimese llama durante el registro para que puedas almacenar la referencia del runtime (normalmente mediantecreatePluginRuntimeStore). Se omite durante la captura de metadatos CLI.registerCliMetadatase ejecuta tanto cuandoapi.registrationMode === "cli-metadata"como cuandoapi.registrationMode === "full". Úsalo como lugar canónico para los descriptores CLI gestionados por el canal, para que la ayuda raíz siga sin activación mientras que el registro normal de comandos CLI siga siendo compatible con cargas completas del plugin.registerFullsolo se ejecuta cuandoapi.registrationMode === "full". Se omite durante la carga solo de setup.- Igual que
definePluginEntry,configSchemapuede ser una factoría diferida y OpenClaw memoiza el esquema resuelto en el primer acceso. - Para comandos CLI raíz gestionados por plugins, prefiere
api.registerCli(..., { descriptors: [...] })cuando quieras que el comando permanezca con lazy-loading sin desaparecer del árbol de análisis CLI raíz. Para plugins de canal, registra preferiblemente esos descriptores desderegisterCliMetadata(...)y manténregisterFull(...)centrado en trabajo solo de runtime. - Si
registerFull(...)también registra métodos RPC del gateway, mantenlos en un prefijo específico del plugin. Los espacios de nombres reservados de administración del núcleo (config.*,exec.approvals.*,wizard.*,update.*) siempre se fuerzan aoperator.admin.
defineSetupPluginEntry
Import: openclaw/plugin-sdk/channel-core
Para el archivo ligero setup-entry.ts. Devuelve solo { plugin } sin
cableado de runtime ni CLI.
defineSetupPluginEntry(...) con las familias estrechas de helpers de setup:
openclaw/plugin-sdk/setup-runtimepara helpers de setup seguros en runtime, como adaptadores de parche de setup seguros para importación, salida de notas de búsqueda,promptResolvedAllowFrom,splitSetupEntriesy proxies delegados de setupopenclaw/plugin-sdk/channel-setuppara superficies de setup de instalación opcionalopenclaw/plugin-sdk/setup-toolspara helpers de CLI de setup/instalación/archivo/docs
Modo de registro
api.registrationMode le indica a tu plugin cómo fue cargado:
| Mode | Cuándo | Qué registrar |
|---|---|---|
"full" | Inicio normal del gateway | Todo |
"setup-only" | Canal deshabilitado/sin configurar | Solo registro del canal |
"setup-runtime" | Flujo de setup con runtime disponible | Registro del canal más solo el runtime ligero necesario antes de que cargue la entrada completa |
"cli-metadata" | Ayuda raíz / captura de metadatos CLI | Solo descriptores CLI |
defineChannelPluginEntry gestiona esta división automáticamente. Si usas
definePluginEntry directamente para un canal, comprueba tú mismo el modo:
"setup-runtime" como la ventana en la que deben existir superficies de inicio solo de setup
sin volver a entrar en el runtime completo del canal integrado. Encajan bien ahí
el registro del canal, rutas HTTP seguras para setup, métodos de gateway seguros para setup y
helpers delegados de setup. Los servicios pesados en segundo plano, registradores CLI y
arranques de SDK de proveedor/cliente siguen perteneciendo a "full".
Para registradores CLI específicamente:
- usa
descriptorscuando el registrador gestiona uno o más comandos raíz y quieras que OpenClaw cargue con lazy-loading el módulo CLI real en la primera invocación - asegúrate de que esos descriptores cubran cada raíz de comando de nivel superior expuesta por el registrador
- usa solo
commandspara rutas de compatibilidad eager
Formas de plugins
OpenClaw clasifica los plugins cargados según su comportamiento de registro:| Forma | Descripción |
|---|---|
| plain-capability | Un tipo de capacidad (por ejemplo, solo proveedor) |
| hybrid-capability | Varios tipos de capacidad (por ejemplo, proveedor + voz) |
| hook-only | Solo hooks, sin capacidades |
| non-capability | Herramientas/comandos/servicios pero sin capacidades |
openclaw plugins inspect <id> para ver la forma de un plugin.
Relacionado
- SDK Overview — API de registro y referencia de subrutas
- Runtime Helpers —
api.runtimeycreatePluginRuntimeStore - Setup and Config — manifiesto, entrada de setup, carga diferida
- Channel Plugins — crear el objeto
ChannelPlugin - Provider Plugins — registro de proveedores y hooks