clawhub: cuando quieras la resolución de ClawHub.
Requisitos
- Node 22.19+, Node 23.11+ o Node 24+, y
npmopnpm. - Módulos ESM de TypeScript.
- Para el trabajo en plugins incluidos en el repositorio, clona el repositorio y ejecuta
pnpm install. El desarrollo de plugins desde una copia del código fuente solo usa pnpm porque OpenClaw descubre plugins incluidos desde paquetes de espacio de trabajoextensions/*.
Elige la forma del plugin
Plugin de canal
Conecta OpenClaw a una plataforma de mensajería.
Plugin de proveedor
Agrega un proveedor de modelos, multimedia, búsqueda, obtención, voz o tiempo real.
Plugin de backend de CLI
Ejecuta una CLI de IA local mediante la reserva de modelos de OpenClaw.
Plugin de herramienta
Registra herramientas de agente.
Inicio rápido
Crea un plugin de herramienta mínimo registrando una herramienta de agente obligatoria. Esta es la forma de plugin útil más breve y cubre el paquete, el manifiesto, el punto de entrada y la prueba local.Crear metadatos del paquete
contracts.tools para que OpenClaw pueda descubrir la propiedad sin
cargar con antelación el runtime de todos los plugins. Define activation.onStartup
de forma intencionada; este ejemplo se carga al iniciar el Gateway.Las superficies de plugin en las que confía el host también están controladas por manifiesto y requieren una
declaración explícita para los plugins instalados: api.registerAgentToolResultMiddleware(...)
necesita que cada runtime objetivo esté listado en contracts.agentToolResultMiddleware,
y api.registerTrustedToolPolicy(...) necesita cada id de política en
contracts.trustedToolPolicies. Estas declaraciones mantienen alineadas la
inspección en el momento de instalación y el registro en runtime.Para cada campo del manifiesto, consulta manifiesto de Plugin.Registrar la herramienta
index.ts
definePluginEntry para plugins que no sean de canal. Los plugins de canal usan
defineChannelPluginEntry desde openclaw/plugin-sdk/core en su lugar.Probar el runtime
Para un plugin instalado o externo, inspecciona el runtime cargado:Si el plugin registra un comando de CLI, ejecuta también ese comando y confirma
la salida, por ejemplo
openclaw demo-plugin ping.Para un plugin incluido en este repositorio, OpenClaw descubre los paquetes de plugin
de la copia del código fuente desde el espacio de trabajo extensions/*. Ejecuta la prueba específica
más cercana:Probar la instalación del paquete
Antes de publicar un plugin listo para empaquetar, prueba la misma forma de instalación que recibirán
los usuarios. Primero agrega un paso de compilación, apunta entradas de runtime como
openclaw.extensions a JavaScript compilado como ./dist/index.js, y asegúrate
de que npm pack incluya esa salida dist/. Las entradas de código fuente TypeScript son
solo para copias del código fuente y rutas de desarrollo local.Luego empaqueta el plugin e instala el tarball con npm-pack::npm-pack: usa el proyecto npm administrado por plugin de OpenClaw, por lo que detecta
errores de dependencias de runtime que las pruebas desde una copia del código fuente pueden ocultar. Prueba
la forma del paquete y las dependencias, no la confianza oficial vinculada al catálogo.
Las importaciones de runtime deben estar en dependencies u optionalDependencies;
las dependencias que queden solo en devDependencies no se instalarán para el
proyecto de runtime administrado.No uses una instalación directa de archivo/ruta como prueba final para comportamiento de plugin oficial o
privilegiado. Las fuentes directas son útiles para la depuración local, pero
no prueban la misma ruta de dependencias que las instalaciones desde npm o ClawHub. Si
tu plugin depende del estado de plugin oficial de confianza, agrega una segunda prueba
mediante una instalación oficial respaldada por catálogo o una ruta de paquete publicado que
registre la confianza oficial. Consulta
resolución de dependencias de Plugin para
detalles de raíz de instalación y propiedad de dependencias.Publicar
Valida el paquete antes de publicar:Los fragmentos canónicos de paquetes de ClawHub están en
docs/snippets/plugin-publish/.Registrar herramientas
Las herramientas pueden ser obligatorias u opcionales. Las herramientas obligatorias siempre están disponibles cuando el plugin está habilitado. Las herramientas opcionales necesitan la aceptación explícita del usuario antes de que OpenClaw cargue el runtime del plugin propietario.api.registerTool(...) también debe declararse en el
manifiesto del plugin:
tools.allow:
name no vacío faltante,
un execute que no sea función o un descriptor de herramienta sin un objeto parameters.
Las fábricas de herramientas reciben un objeto de contexto suministrado por el runtime. Usa ctx.activeModel
cuando una herramienta necesite registrar, mostrar o adaptarse al modelo activo para el turno
actual; puede incluir provider, modelId y modelRef. Trátalo como
metadatos informativos de runtime, no como un límite de seguridad frente al operador
local, el código de plugin instalado o un runtime de OpenClaw modificado. Las herramientas locales
sensibles aun así deben requerir una aceptación explícita del plugin u operador y
fallar de forma cerrada cuando los metadatos del modelo activo falten o no sean adecuados.
El manifiesto declara la propiedad y el descubrimiento; la ejecución sigue llamando a la implementación
registrada de la herramienta en vivo. Mantén toolMetadata.<tool>.optional: true
alineado con api.registerTool(..., { optional: true }) para que OpenClaw pueda evitar
cargar ese runtime de plugin hasta que la herramienta se incluya explícitamente en la lista de permitidas.
Convenciones de importación
Importa desde subrutas específicas del SDK:api.ts y
runtime-api.ts para importaciones internas. No importes tu propio plugin mediante una
ruta del SDK. Los helpers específicos de proveedor deben permanecer en el paquete de proveedor a menos que
la unión sea realmente genérica.
Los métodos RPC personalizados del Gateway son un punto de entrada avanzado. Mantenlos con un
prefijo específico del plugin; los espacios de nombres de administración del núcleo como config.*,
exec.approvals.*, operator.admin.*, wizard.* y update.* permanecen reservados
y se resuelven a operator.admin. El puente
openclaw/plugin-sdk/gateway-method-runtime está reservado para rutas HTTP de plugin
que declaran contracts.gatewayMethodDispatch: ["authenticated-request"].
Para el mapa completo de importaciones, consulta descripción general del SDK de Plugin.
Lista de verificación previa al envío
package.json tiene metadatos
openclaw correctosEl manifiesto openclaw.plugin.json está presente y es válido
El punto de entrada usa
defineChannelPluginEntry o definePluginEntryTodas las importaciones usan rutas específicas
plugin-sdk/<subpath>Las importaciones internas usan módulos locales, no autoimportaciones del SDK
Las pruebas pasan (
pnpm test <bundled-plugin-root>/my-plugin/)pnpm check pasa (plugins en el repositorio)Probar con versiones beta
- Mira las versiones de openclaw/openclaw (
Watch>Releases). Las etiquetas beta tienen el formatov2026.3.N-beta.1. También puedes seguir a @openclaw en X para anuncios de versiones. - Prueba tu plugin con la etiqueta beta en cuanto aparezca. La ventana antes de la versión estable suele ser de solo unas horas.
- Publica en el hilo de tu plugin en el canal de Discord
plugin-forum(discord.gg/clawd) después de probarlo, conall goodo con lo que se rompió. Crea un hilo si todavía no tienes uno. - Si algo se rompe, abre o actualiza un issue titulado
Beta blocker: <plugin-name> - <summary>y aplica la etiquetabeta-blocker. Enlaza el issue en tu hilo. - Abre un PR a
maintituladofix(<plugin-id>): beta blocker - <summary>y enlaza el issue tanto en el PR como en tu hilo de Discord. Los contribuidores no pueden etiquetar PRs, así que el título es la señal del lado del PR para los mantenedores y la automatización. Los bloqueadores con un PR se fusionan; los bloqueadores sin uno podrían publicarse de todos modos. - El silencio equivale a verde. Perder la ventana normalmente significa que tu corrección llega en el siguiente ciclo.
Próximos pasos
Channel Plugins
Crea un plugin de canal de mensajería
Provider Plugins
Crea un plugin de proveedor de modelos
CLI Backend Plugins
Registra un backend CLI de IA local
SDK Overview
Referencia del mapa de importación y la API de registro
Runtime Helpers
TTS, búsqueda, subagente mediante api.runtime
Testing
Utilidades y patrones de prueba
Plugin Manifest
Referencia completa del esquema del manifiesto