clawhub: cuando quiera usar la resolución de ClawHub.
Requisitos
- Node 22.22.3+, Node 24.15+ o Node 25.9+, y
npmopnpm. - Módulos ESM de TypeScript.
- Para trabajar en plugins incluidos en el repositorio, clone el repositorio y ejecute
pnpm install. El desarrollo de plugins desde una copia del código fuente solo admite pnpm porque OpenClaw descubre los plugins incluidos a partir de los paquetes del espacio de trabajoextensions/*.
Elegir la estructura del plugin
Plugin de canal
Conecte OpenClaw a una plataforma de mensajería.
Plugin de proveedor
Añada un proveedor de modelos, medios, búsqueda, obtención, voz o tiempo real.
Plugin de backend de CLI
Ejecute una CLI de IA local mediante la alternativa de modelos de OpenClaw.
Plugin de herramientas
Registre herramientas de agente.
Inicio rápido
Cree un plugin de herramientas mínimo registrando una herramienta de agente obligatoria. Esta es la estructura de plugin útil más breve y abarca el paquete, el manifiesto, el punto de entrada y la verificación local.1
Crear los metadatos del paquete
contracts.tools para que OpenClaw pueda descubrir su propiedad sin
cargar de forma anticipada el entorno de ejecución de cada plugin. Defina activation.onStartup
deliberadamente; este ejemplo se carga al iniciar el Gateway.Las superficies de plugins de confianza para el host también están controladas por el manifiesto y requieren una
declaración explícita para los plugins instalados: api.registerAgentToolResultMiddleware(...)
requiere que cada entorno de ejecución de destino figure en contracts.agentToolResultMiddleware,
y api.registerTrustedToolPolicy(...) requiere cada identificador de política en
contracts.trustedToolPolicies. Estas declaraciones mantienen alineadas la
inspección durante la instalación y el registro en tiempo de ejecución.Para conocer todos los campos del manifiesto, consulte Manifiesto del plugin.2
Registrar la herramienta
index.ts
definePluginEntry para los plugins que no sean de canal. Los plugins de canal utilizan
en su lugar defineChannelPluginEntry de openclaw/plugin-sdk/core.3
Probar el entorno de ejecución
Para un plugin instalado o externo, inspeccione el entorno de ejecución cargado:Si el plugin registra un comando de CLI, ejecute también ese comando y confirme
la salida; por ejemplo,
openclaw demo-plugin ping.Para un plugin incluido en este repositorio, OpenClaw descubre los paquetes de plugins
de la copia del código fuente a partir del espacio de trabajo extensions/*. Ejecute la prueba específica
más cercana:4
Probar la instalación del paquete
Antes de publicar un plugin listo para empaquetar, pruebe la misma forma de instalación que
recibirán los usuarios. Primero añada un paso de compilación, haga que las entradas de ejecución como
openclaw.extensions apunten a JavaScript compilado como ./dist/index.js y asegúrese 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.A continuación, empaquete el plugin e instale el archivo tar con npm-pack::npm-pack: utiliza el proyecto npm administrado por OpenClaw para cada plugin, por lo que detecta
errores en las dependencias de ejecución que las pruebas desde una copia del código fuente pueden ocultar. Demuestra
la estructura del paquete y de sus dependencias, no la confianza oficial vinculada al catálogo.
Las importaciones del entorno de ejecución deben estar en dependencies o optionalDependencies;
las dependencias que solo figuren en devDependencies no se instalarán para el
proyecto de entorno de ejecución administrado.No utilice una instalación directa desde un archivo o una ruta como verificación final del comportamiento
oficial o privilegiado de un plugin. El código fuente directo resulta útil para la depuración local, pero
no demuestra la misma ruta de dependencias que las instalaciones desde npm o ClawHub. Si
su plugin depende del estado de plugin oficial de confianza, añada una segunda verificación
mediante una instalación oficial respaldada por el catálogo o una ruta de paquete publicado que
registre la confianza oficial. Consulte
Resolución de dependencias de plugins para obtener
detalles sobre la raíz de instalación y la propiedad de las dependencias.5
Publicar
Valide el paquete antes de publicarlo:Los fragmentos canónicos de paquetes de ClawHub se encuentran en
docs/snippets/plugin-publish/.6
Instalar
Instale el paquete publicado mediante ClawHub:
Registrar herramientas
Las herramientas pueden ser obligatorias u opcionales. Las herramientas obligatorias están siempre disponibles cuando el plugin está habilitado. Las herramientas opcionales requieren la aceptación explícita del usuario antes de que OpenClaw cargue el entorno de ejecución del plugin propietario. Las fábricas de herramientas reciben un contexto de ejecución de confianza, incluidosdeliveryContext,
nativeChannelId para la conversación activa de la plataforma cuando está disponible y
requesterSenderId.
outputSchema es opcional. Describe el valor estructurado details utilizado por
Modo de código y Búsqueda de herramientas. Las llamadas al catálogo
rechazan los esquemas no válidos antes de la ejecución y validan el valor final después de
los hooks de herramientas. Omítalo para las herramientas que no tengan un resultado JSON estable. Consulte
Plugins de herramientas para conocer el contrato completo.
Cada herramienta registrada con api.registerTool(...) también debe declararse en el
manifiesto del plugin:
tools.allow:
name no vacío ausente, un execute que no sea una función o un descriptor de herramienta sin un objeto parameters.
Las fábricas de herramientas reciben un objeto de contexto proporcionado por el entorno de ejecución. Utilice ctx.activeModel
cuando una herramienta necesite registrar, mostrar o adaptarse al modelo activo del turno
actual; puede incluir provider, modelId y modelRef. Trátelo como
metadatos informativos del entorno de ejecución, no como un límite de seguridad frente al operador
local, el código de plugins instalado o un entorno de ejecución de OpenClaw modificado. Las
herramientas locales sensibles deben seguir requiriendo la aceptación explícita del plugin o del operador y
rechazar la ejecución cuando los metadatos del modelo activo falten o no sean adecuados.
El manifiesto declara la propiedad y el descubrimiento; la ejecución sigue invocando la
implementación de la herramienta registrada en vivo. Mantenga toolMetadata.<tool>.optional: true
alineado con api.registerTool(..., { optional: true }) para que OpenClaw pueda evitar
cargar el entorno de ejecución de ese plugin hasta que la herramienta se incluya explícitamente en la lista de permitidas.
Convenciones de importación
Importe desde subrutas específicas del SDK:api.ts y
runtime-api.ts para las importaciones internas. No importe su propio plugin mediante una
ruta del SDK. Los auxiliares específicos del proveedor deben permanecer en el paquete del proveedor, salvo que
el punto de integración sea verdaderamente genérico.
Los métodos RPC personalizados del Gateway son un punto de entrada avanzado. Manténgalos en un
prefijo específico del plugin; los espacios de nombres administrativos del núcleo como config.*,
exec.approvals.*, operator.admin.*, wizard.* y update.* permanecen reservados
y se resuelven como operator.admin. El
puente openclaw/plugin-sdk/gateway-method-runtime está reservado para las rutas HTTP de plugins
que declaran contracts.gatewayMethodDispatch: ["authenticated-request"].
Para consultar el mapa completo de importaciones, consulte Descripción general del SDK de plugins.
Los campos de compatibilidad del SDK de OpenClaw contienen anotaciones @deprecated de TypeScript,
que los editores muestran como advertencias de migración. Para aplicarlas durante la compilación,
habilite una regla que tenga en cuenta los tipos, como
@typescript-eslint/no-deprecated.
Oxlint no tiene en cuenta los tipos, por lo que no puede aplicar estas anotaciones.
Lista de comprobación previa al envío
package.json tiene los 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
plugin-sdk/<subpath> específicasLas importaciones internas usan módulos locales, no autoimportaciones del SDK
Las pruebas pasan (
pnpm test <bundled-plugin-root>/my-plugin/)pnpm check pasa (plugins del repositorio)Pruebas con versiones beta
- Siga los lanzamientos de openclaw/openclaw (
Watch>Releases). Las etiquetas beta tienen un formato similar av2026.3.N-beta.1. También puede seguir a @openclaw en X para recibir anuncios de lanzamientos. - Pruebe su plugin con la etiqueta beta en cuanto aparezca. El plazo antes de la versión estable suele ser de solo unas horas.
- Después de realizar las pruebas, publique en el hilo de su plugin en el canal de Discord
plugin-forum(discord.gg/clawd) e indiqueall goodo qué dejó de funcionar. Cree un hilo si todavía no tiene uno. - Si algo deja de funcionar, abra o actualice una incidencia titulada
Beta blocker: <plugin-name> - <summary>y aplique la etiquetabeta-blocker. Enlace la incidencia en su hilo. - Abra un PR para
maintituladofix(<plugin-id>): beta blocker - <summary>y enlace la incidencia tanto en el PR como en su hilo de Discord. Los colaboradores no pueden etiquetar los PR, por lo que el título sirve como señal del PR para los mantenedores y la automatización. Los bloqueos con un PR se fusionan; los bloqueos sin uno podrían publicarse de todos modos. - El silencio significa que todo está correcto. Si se pierde el plazo, la corrección suele incorporarse en el siguiente ciclo.
Siguientes pasos
Plugins de canales
Cree un plugin de canal de mensajería
Plugins de proveedores
Cree un plugin de proveedor de modelos
Plugins de backend de CLI
Registre un backend local de CLI de IA
Descripción general del SDK
Referencia del mapa de importaciones y de la API de registro
Ayudantes de entorno de ejecución
TTS, búsqueda y subagente mediante api.runtime
Pruebas
Utilidades y patrones de prueba
Manifiesto del plugin
Referencia completa del esquema del manifiesto