Plugin SDK reference
Configuración y ajustes del Plugin
Referencia para el empaquetado de plugins (metadatos de package.json), manifiestos (openclaw.plugin.json), entradas de configuración y esquemas de configuración.
Metadatos del paquete
El package.json necesita un campo openclaw que indique al sistema de plugins qué proporciona el plugin:
Plugin de canal
{ "name": "@myorg/openclaw-my-channel", "version": "1.0.0", "type": "module", "openclaw": { "extensions": ["./index.ts"], "setupEntry": "./setup-entry.ts", "channel": { "id": "my-channel", "label": "Mi canal", "blurb": "Descripción breve del canal." } }}Plugin de proveedor / base de referencia de ClawHub
{ "name": "@myorg/openclaw-my-plugin", "version": "1.0.0", "type": "module", "dependencies": { "typebox": "1.1.39" }, "peerDependencies": { "openclaw": ">=2026.3.24-beta.2" }, "openclaw": { "extensions": ["./index.ts"], "compat": { "pluginApi": ">=2026.3.24-beta.2", "minGatewayVersion": "2026.3.24-beta.2" }, "build": { "openclawVersion": "2026.3.24-beta.2", "pluginSdkVersion": "2026.3.24-beta.2" } }}Campos de openclaw
extensionsstring[]Archivos de punto de entrada (relativos a la raíz del paquete). Entradas de código fuente válidas para el desarrollo en espacios de trabajo y checkouts de Git.
runtimeExtensionsstring[]Archivos JavaScript compilados equivalentes para extensions, preferidos cuando OpenClaw carga un paquete npm instalado. Consulte Puntos de entrada del SDK para conocer el orden de resolución entre código fuente y código compilado.
setupEntrystringEntrada ligera exclusiva para la configuración (opcional).
runtimeSetupEntrystringArchivo JavaScript compilado equivalente para setupEntry. Requiere que también se establezca setupEntry.
pluginobjectIdentidad de plugin alternativa de { id, label }, utilizada cuando un plugin no tiene metadatos de canal o proveedor de los que derivar un identificador o una etiqueta.
channelobjectMetadatos del catálogo de canales para las superficies de configuración, selección, inicio rápido y estado.
installobjectIndicaciones de instalación: npmSpec, localPath, defaultChoice, minHostVersion, expectedIntegrity, allowInvalidConfigRecovery, requiredPlatformPackages.
startupobjectIndicadores de comportamiento durante el inicio.
compatobjectIntervalo de versiones de pluginApi compatible con este plugin. Obligatorio para publicaciones externas en ClawHub.
openclaw.channel
openclaw.channel son metadatos de paquete ligeros para el descubrimiento de canales y las superficies de configuración antes de cargar el entorno de ejecución.
Campos de configuración propiedad del canal
Los plugins de canal deben definir los campos de configuración una sola vez en el código del entorno de ejecución mediante defineChannelSetupContract(...) y publicar la proyección serializable correspondiente en openclaw.channel.setup.fields. La definición del entorno de ejecución infiere el tipo de entrada local del plugin, analiza tanto los valores guiados como los no interactivos y mantiene las claves específicas del canal fuera de los tipos del núcleo. Los metadatos del paquete permiten que openclaw channels add <channel-id> --help y openclaw channels add --channel <channel-id> --help descubran únicamente las opciones del canal seleccionado sin cargar el plugin.
export const setupContract = defineChannelSetupContract({ fields: { endpoint: { kind: "string", cli: { flags: "--endpoint <url>", description: "Punto de conexión del servicio" }, }, transport: { kind: "choice", choices: ["native", "container"], cli: { flags: "--transport <kind>", description: "Propietario del transporte" }, }, }, adapter: { applyAccountConfig: ({ cfg, input }) => ({ ...cfg, channels: { ...cfg.channels, example: input }, }), },});{ "openclaw": { "channel": { "id": "example", "setup": { "fields": [ { "key": "endpoint", "kind": "string", "cli": { "flags": "--endpoint <url>", "description": "Punto de conexión del servicio" } }, { "key": "transport", "kind": "choice", "choices": ["native", "container"], "cli": { "flags": "--transport <kind>", "description": "Propietario del transporte" } } ] } } }}Los tipos de campo admitidos son string, boolean, integer, string-list y choice. Utilice sensitive: true para las credenciales. Cada clave de campo debe ser igual al nombre de atributo en camelCase de su opción larga de la CLI, incluida cualquier forma negada, como apiToken para --api-token. Los campos booleanos pueden añadir cli.negatedFlags cuando se necesiten tanto las formas positivas como las formas --no-*. channel, account y el name de visualización de la cuenta siguen formando la envoltura de control compartida.
El adaptador publicado setup/ChannelSetupInput continúa disponible para los plugins externos existentes. Los plugins nuevos deben exponer setupContract; OpenClaw siempre lo prefiere cuando ambos están presentes.
| Campo | Tipo | Significado |
|---|---|---|
id |
string |
Identificador canónico del canal. |
label |
string |
Etiqueta principal del canal. |
selectionLabel |
string |
Etiqueta de selección/configuración cuando deba diferir de label. |
detailLabel |
string |
Etiqueta secundaria de detalles para catálogos de canales y superficies de estado más completos. |
docsPath |
string |
Ruta de la documentación para los enlaces de configuración y selección. |
docsLabel |
string |
Etiqueta alternativa utilizada para los enlaces de documentación cuando deba diferir del identificador del canal. |
blurb |
string |
Descripción breve para la incorporación y el catálogo. |
order |
number |
Orden de clasificación en los catálogos de canales. |
aliases |
string[] |
Alias de búsqueda adicionales para seleccionar el canal. |
preferOver |
string[] |
Identificadores de plugins/canales de menor prioridad a los que este canal debe preceder. |
systemImage |
string |
Nombre opcional del icono o imagen del sistema para los catálogos de canales de la interfaz. |
selectionDocsPrefix |
string |
Texto de prefijo anterior a los enlaces de documentación en las superficies de selección. |
selectionDocsOmitLabel |
boolean |
Muestra directamente la ruta de la documentación en lugar de un enlace etiquetado en el texto de selección. |
selectionExtras |
string[] |
Cadenas breves adicionales anexadas al texto de selección. |
markdownCapable |
boolean |
Marca el canal como compatible con Markdown para las decisiones de formato de salida. |
exposure |
object |
Controles de visibilidad del canal para la configuración, las listas configuradas y las superficies de documentación. |
quickstartAllowFrom |
boolean |
Incluye este canal en el flujo de configuración estándar de inicio rápido allowFrom. |
forceAccountBinding |
boolean |
Exige la vinculación explícita de la cuenta incluso cuando solo existe una cuenta. |
preferSessionLookupForAnnounceTarget |
boolean |
Prefiere la búsqueda de sesiones al resolver los destinos de anuncios para este canal. |
setup |
object |
Campos de configuración serializables propiedad del canal utilizados para el descubrimiento diferido de opciones de la CLI. |
Ejemplo:
{ "openclaw": { "channel": { "id": "my-channel", "label": "Mi canal", "selectionLabel": "Mi canal (autoalojado)", "detailLabel": "Bot de mi canal", "docsPath": "/channels/my-channel", "docsLabel": "my-channel", "blurb": "Integración de chat autoalojada basada en Webhook.", "order": 80, "aliases": ["mc"], "preferOver": ["my-channel-legacy"], "selectionDocsPrefix": "Guía:", "selectionExtras": ["Markdown"], "markdownCapable": true, "exposure": { "configured": true, "setup": true, "docs": true }, "quickstartAllowFrom": true } }}exposure admite:
configured: incluye el canal en las superficies de listado de configuración/estadosetup: incluye el canal en los selectores interactivos de configuracióndocs: marca el canal como visible públicamente en las superficies de documentación/navegación
openclaw.install
openclaw.install son metadatos del paquete, no metadatos del manifiesto.
| Campo | Tipo | Qué significa |
|---|---|---|
clawhubSpec |
string |
Especificación canónica de ClawHub para los flujos de instalación/actualización y de instalación bajo demanda durante la incorporación. |
npmSpec |
string |
Especificación canónica de npm para los flujos alternativos de instalación/actualización. |
localPath |
string |
Ruta de desarrollo local o de instalación incluida. |
defaultChoice |
"clawhub" | "npm" | "local" |
Fuente de instalación preferida cuando hay varias fuentes disponibles. |
minHostVersion |
string |
Versión mínima compatible de OpenClaw, >=x.y.z o >=x.y.z-prerelease. |
expectedIntegrity |
string |
Cadena de integridad esperada de la distribución de npm, normalmente sha512-..., para instalaciones con versión fijada. |
allowInvalidConfigRecovery |
boolean |
Permite que los flujos de reinstalación de plugins incluidos se recuperen de errores específicos de configuración obsoleta. |
requiredPlatformPackages |
string[] |
Alias de npm obligatorios específicos de cada plataforma que se verifican durante la instalación mediante npm. |
Comportamiento de la incorporación
La incorporación interactiva utiliza openclaw.install para las superficies de instalación bajo demanda: si el plugin expone opciones de autenticación del proveedor o metadatos de configuración/catálogo del canal antes de que se cargue el entorno de ejecución, la incorporación puede solicitar la instalación desde ClawHub, npm o una fuente local, instalar o habilitar el plugin y, a continuación, continuar con el flujo seleccionado. Las opciones de ClawHub utilizan clawhubSpec y se prefieren cuando están presentes; las opciones de npm requieren metadatos de catálogo de confianza con un npmSpec de registro (las versiones exactas y expectedIntegrity son fijaciones opcionales que se aplican durante la instalación/actualización cuando se establecen). Mantenga «qué mostrar» en openclaw.plugin.json y «cómo instalarlo» en package.json.
Aplicación de minHostVersion
Si se establece minHostVersion, se aplica tanto durante la instalación como al cargar registros de manifiestos no incluidos. Los hosts antiguos omiten los plugins externos; se rechazan las cadenas de versión no válidas. Se presupone que los plugins de fuente incluidos tienen la misma versión que el checkout del host.
Instalaciones de npm con versión fijada
Para las instalaciones de npm con versión fijada, mantenga la versión exacta en npmSpec y añada la integridad esperada del artefacto:
{ "openclaw": { "install": { "npmSpec": "@wecom/wecom-openclaw-plugin@1.2.3", "expectedIntegrity": "sha512-REPLACE_WITH_NPM_DIST_INTEGRITY", "defaultChoice": "npm" } }}Ámbito de allowInvalidConfigRecovery
allowInvalidConfigRecovery no es una omisión general para configuraciones dañadas. Solo permite una recuperación limitada de plugins incluidos, de modo que la reinstalación/configuración pueda reparar restos conocidos de actualizaciones, como la ausencia de la ruta de un plugin incluido o una entrada channels.<id> obsoleta para ese mismo plugin. Si la configuración está dañada por motivos no relacionados, la instalación sigue fallando de forma cerrada e indica al operador que ejecute openclaw doctor --fix.
Carga completa diferida
Los plugins de canal pueden optar por la carga diferida mediante:
{ "openclaw": { "extensions": ["./index.ts"], "setupEntry": "./setup-entry.ts", "startup": { "deferConfiguredChannelFullLoadUntilAfterListen": true } }}Cuando está habilitada, OpenClaw carga únicamente setupEntry durante la fase de inicio previa a la escucha, incluso para los canales ya configurados. La entrada completa se carga después de que el Gateway comienza a escuchar.
Si la entrada de configuración/completa registra métodos RPC del Gateway, manténgalos bajo un prefijo específico del plugin. Los espacios de nombres administrativos reservados del núcleo (config.*, exec.approvals.*, wizard.*, update.*) siguen siendo propiedad del núcleo y siempre se normalizan a operator.admin.
Manifiesto del plugin
Cada plugin nativo debe incluir un openclaw.plugin.json en la raíz del paquete. OpenClaw lo utiliza para validar la configuración sin ejecutar el código del plugin.
{ "id": "my-plugin", "name": "My Plugin", "description": "Adds My Plugin capabilities to OpenClaw", "configSchema": { "type": "object", "additionalProperties": false, "properties": { "webhookSecret": { "type": "string", "description": "Webhook verification secret" } } }}Para los plugins de canal, añada channels (y, para los plugins de proveedor, añada providers):
{ "id": "my-channel", "channels": ["my-channel"], "configSchema": { "type": "object", "additionalProperties": false, "properties": {} }}Incluso los plugins sin configuración deben incluir un esquema. Un esquema vacío es válido:
{ "id": "my-plugin", "configSchema": { "type": "object", "additionalProperties": false }}Consulte Manifiesto del plugin para ver la referencia completa del esquema.
Publicación en ClawHub
Las Skills y los paquetes de plugins utilizan comandos de publicación de ClawHub distintos. Para los paquetes de plugins, utilice el comando específico para paquetes:
clawhub package publish your-org/your-plugin --dry-runclawhub package publish your-org/your-pluginEntrada de configuración
setup-entry.ts es una alternativa ligera a index.ts que OpenClaw carga cuando solo necesita superficies de configuración (incorporación, reparación de la configuración e inspección de canales deshabilitados):
// setup-entry.ts export default defineSetupPluginEntry(myChannelPlugin);Esto evita cargar código pesado del entorno de ejecución (bibliotecas criptográficas, registros de CLI y servicios en segundo plano) durante los flujos de configuración.
Los canales incluidos en el espacio de trabajo que mantienen exportaciones seguras para la configuración en módulos auxiliares pueden utilizar defineBundledChannelSetupEntry(...) de openclaw/plugin-sdk/channel-entry-contract en lugar de defineSetupPluginEntry(...). Ese contrato incluido también admite una exportación opcional runtime para que el cableado del entorno de ejecución durante la configuración pueda seguir siendo ligero y explícito.
Cuándo utiliza OpenClaw setupEntry en lugar de la entrada completa
- El canal está deshabilitado, pero necesita superficies de configuración/incorporación.
- El canal está habilitado, pero no está configurado.
- La carga diferida está habilitada (
deferConfiguredChannelFullLoadUntilAfterListen).
Qué debe registrar setupEntry
- El objeto del plugin de canal (mediante
defineSetupPluginEntry). - Cualquier ruta HTTP necesaria antes de que el Gateway comience a escuchar.
- Cualquier método del Gateway necesario durante el inicio.
Esos métodos de inicio del Gateway deben seguir evitando los espacios de nombres administrativos reservados del núcleo, como config.* o update.*.
Qué NO debe incluir setupEntry
- Registros de CLI.
- Servicios en segundo plano.
- Importaciones pesadas del entorno de ejecución (criptografía, SDK).
- Métodos del Gateway que solo son necesarios después del inicio.
Importaciones limitadas de asistentes de configuración
Para las rutas críticas exclusivas de configuración, prefiera las interfaces limitadas de asistentes de configuración en lugar del módulo general plugin-sdk/setup cuando solo necesite una parte de la superficie de configuración:
| Ruta de importación | Utilícela para | Exportaciones clave |
|---|---|---|
plugin-sdk/setup-runtime |
asistentes del entorno de ejecución durante la configuración que siguen disponibles en setupEntry / el inicio diferido del canal |
createSetupTranslator, createPatchedAccountSetupAdapter, createEnvPatchedAccountSetupAdapter, createSetupInputPresenceValidator, noteChannelLookupFailure, noteChannelLookupSummary, promptResolvedAllowFrom, splitSetupEntries, createAllowlistSetupWizardProxy, createDelegatedSetupWizardProxy |
plugin-sdk/setup-tools |
asistentes de configuración/instalación para CLI, archivos y documentación | formatCliCommand, detectBinary, extractArchive, resolveBrewExecutable, formatDocsLink, CONFIG_DIR |
Utilice la interfaz más amplia plugin-sdk/setup cuando necesite el conjunto completo de herramientas compartidas de configuración, incluidos asistentes para aplicar parches a la configuración, como moveSingleAccountChannelSectionToDefaultAccount(...).
Utilice createSetupTranslator(...) para el texto fijo del asistente de configuración. Utiliza el primer valor no vacío de OPENCLAW_LOCALE, LC_ALL, LC_MESSAGES y LANG, en ese orden, y después recurre al inglés. Establezca OPENCLAW_LOCALE=en para indicar una sustitución explícita en inglés. Mantenga el texto de configuración específico del plugin en código propiedad del plugin y utilice las claves del catálogo compartido únicamente para etiquetas comunes de configuración, texto de estado y texto de configuración de plugins oficiales incluidos.
Los adaptadores de parches de configuración siguen siendo seguros al importarse en rutas críticas. La consulta de la superficie del contrato de promoción de cuentas únicas incluidas es diferida, por lo que importar plugin-sdk/setup-runtime no carga anticipadamente el descubrimiento de superficies de contratos incluidos antes de que se utilice realmente el adaptador.
Campos de entrada de configuración propiedad del canal
ChannelSetupInput es un contenedor genérico compartido por los invocadores de configuración y los
plugins de canal. Sus campos con tipado permanente son name, token, tokenFile,
useEnv, allowFrom y defaultTo. Aun pueden existir claves adicionales propiedad del plugin
en el objeto de entrada del entorno de ejecución, pero el tipo compartido no declara una
firma de índice. Cada plugin debe declarar y delimitar sus propios campos de configuración o
validarlos mediante un esquema propiedad del plugin en el límite del adaptador:
type AcmeSetupInput = ChannelSetupInput & { workspaceId?: string; webhookUrl?: string;}; export const acmeSetupAdapter: ChannelSetupAdapter = { applyAccountConfig: ({ cfg, input }) => { const setupInput = input as AcmeSetupInput; return { ...cfg, channels: { ...cfg.channels, acme: { token: setupInput.token, workspaceId: setupInput.workspaceId, webhookUrl: setupInput.webhookUrl, }, }, }; },};Los campos específicos del canal que anteriormente se declaraban directamente en
ChannelSetupInput permanecen tipados temporalmente para mantener la compatibilidad con fuentes externas.
Están obsoletos. Una revisión del registro del 2026-07-22 de 426 plugins de canal publicados fuera del árbol
eliminó 21 campos sin lectores y conservó 22 con lectores conocidos.
Cada campo conservado se elimina en cuanto ningún plugin publicado lo lee;
no se requiere ningún límite de versión. Los plugins nuevos e incluidos no deben depender de este
nivel; deben declarar localmente los campos que poseen.
Promoción de cuenta única propiedad del canal
Cuando un canal pasa de una configuración de nivel superior de una sola cuenta a channels.<id>.accounts.*, el comportamiento compartido predeterminado mueve los valores promovidos con ámbito de cuenta a accounts.default.
Cada plugin de canal puede ampliar o restringir esa promoción mediante su adaptador de configuración:
singleAccountKeysToMove: claves adicionales de nivel superior que deben trasladarse a la cuenta promovidanamedAccountPromotionKeys: cuando ya existen cuentas con nombre, solo estas claves se trasladan a la cuenta promovida; las claves compartidas de políticas y entrega permanecen en la raíz del canalresolveSingleAccountPromotionTarget(...): permite elegir qué cuenta existente recibe los valores promovidos
La presencia de singleAccountKeysToMove indica que el contrato de promoción está completo. Declare el campo aunque sea una matriz vacía para excluirse de la promoción de claves heredadas. Los adaptadores que omiten el campo conservan un nivel de promoción anterior a la declaración, respaldado por lectores, para los plugins ya publicados. La revisión del registro del 2026-07-22 eliminó 23 claves sin dependientes publicados y conservó seis claves comunes, además de la clave exclusiva de configuración rooms. Cada clave conservada se elimina en cuanto sus lectores publicados migran a las declaraciones; no se requiere ningún límite de versión.
Declare openclaw.setupFeatures.configPromotion: true en el manifiesto del paquete del plugin cuando doctor deba cargar estas declaraciones desde el artefacto ligero de configuración incluido. La superficie del plugin exclusiva de configuración y el plugin de canal completo deben exponer las mismas declaraciones.
Al llamar a moveSingleAccountChannelSectionToDefaultAccount(...) con un plugin ya resuelto, pase su adaptador de configuración como setupSurface. Las superficies de configuración proporcionadas por el llamador tienen prioridad sobre la búsqueda cargada e incluida, lo que mantiene los plugins con ámbito o exclusivos de configuración independientes del registro global.
Esquema de configuración
La configuración del plugin se valida con el esquema JSON del manifiesto. Los usuarios configuran los plugins mediante:
{ plugins: { entries: { "my-plugin": { config: { webhookSecret: "abc123", }, }, }, },}El plugin recibe esta configuración como api.pluginConfig durante el registro.
Para la configuración específica del canal, utilice en su lugar la sección de configuración del canal:
{ channels: { "my-channel": { token: "bot-token", allowFrom: ["user1", "user2"], }, },}Creación de esquemas de configuración de canales
Utilice buildChannelConfigSchema para convertir un esquema de Zod en el contenedor ChannelConfigSchema utilizado por los artefactos de configuración propiedad del plugin:
const accountSchema = z.object({ token: z.string().optional(), allowFrom: z.array(z.string()).optional(), accounts: z.object({}).catchall(z.any()).optional(), defaultAccount: z.string().optional(),}); const configSchema = buildChannelConfigSchema(accountSchema);Si ya crea el contrato como esquema JSON o TypeBox, utilice el asistente directo para que OpenClaw pueda omitir la conversión de Zod a esquema JSON en las rutas de metadatos:
const configSchema = buildJsonChannelConfigSchema( Type.Object({ token: Type.Optional(Type.String()), allowFrom: Type.Optional(Type.Array(Type.String())), }),);Para los plugins de terceros, el contrato de la ruta en frío sigue siendo el manifiesto del plugin: replique el esquema JSON generado en openclaw.plugin.json#channelConfigs para que las superficies del esquema de configuración, de configuración y de la interfaz de usuario puedan inspeccionar channels.<id> sin cargar código de ejecución.
Asistentes de configuración
Los plugins de canal pueden proporcionar asistentes de configuración interactivos para openclaw onboard. El asistente es un objeto ChannelSetupWizard en ChannelPlugin:
const setupWizard: ChannelSetupWizard = { channel: "my-channel", status: { configuredLabel: "Connected", unconfiguredLabel: "Not configured", resolveConfigured: ({ cfg }) => Boolean((cfg.channels as any)?.["my-channel"]?.token), }, credentials: [ { inputKey: "token", providerHint: "my-channel", credentialLabel: "Bot token", preferredEnvVar: "MY_CHANNEL_BOT_TOKEN", envPrompt: "Use MY_CHANNEL_BOT_TOKEN from environment?", keepPrompt: "Keep current token?", inputPrompt: "Enter your bot token:", inspect: ({ cfg, accountId }) => { const token = (cfg.channels as any)?.["my-channel"]?.token; return { accountConfigured: Boolean(token), hasConfiguredValue: Boolean(token), }; }, }, ],};ChannelSetupWizard también admite textInputs, dmPolicy, allowFrom, groupAccess, prepare, finalize y más. Consulte src/setup-core.ts del plugin de Discord para ver un ejemplo incluido completo.
Indicaciones allowFrom compartidas
Para las indicaciones de la lista de permitidos de mensajes directos que solo necesitan el flujo estándar note -> prompt -> parse -> merge -> patch, se recomienda utilizar los asistentes de configuración compartidos de openclaw/plugin-sdk/setup: createPromptParsedAllowFromForAccount(...) y createTopLevelChannelParsedAllowFromPrompt(...).
Estado estándar de configuración del canal
Para los bloques de estado de configuración del canal que solo varían en las etiquetas, las puntuaciones y las líneas adicionales opcionales, se recomienda utilizar createStandardChannelSetupStatus(...) de openclaw/plugin-sdk/setup en lugar de crear manualmente el mismo objeto status en cada plugin.
Superficie opcional de configuración del canal
Para las superficies de configuración opcionales que solo deben aparecer en determinados contextos, utilice createOptionalChannelSetupSurface de openclaw/plugin-sdk/channel-setup:
import { createOptionalChannelSetupSurface } from "openclaw/plugin-sdk/channel-setup"; const setupSurface = createOptionalChannelSetupSurface({ channel: "my-channel", label: "My Channel", npmSpec: "@myorg/openclaw-my-channel", docsPath: "/channels/my-channel",});// Returns { setupAdapter, setupWizard }plugin-sdk/channel-setup también expone los constructores de nivel inferior createOptionalChannelSetupAdapter(...) y createOptionalChannelSetupWizard(...) cuando solo se necesita una mitad de esa superficie de instalación opcional.
El adaptador y el asistente opcionales generados se cierran de forma segura ante escrituras reales de configuración. Reutilizan un único mensaje de instalación requerida en validateInput, applyAccountConfig y finalize, y añaden un enlace a la documentación cuando se establece docsPath.
Asistentes de configuración respaldados por binarios
Para las interfaces de configuración respaldadas por binarios, se recomienda utilizar los asistentes delegados compartidos en lugar de copiar el mismo código de conexión de binarios y estados en cada canal:
createDetectedBinaryStatus(...)para bloques de estado que solo varían en las etiquetas, las sugerencias, las puntuaciones y la detección de binarioscreateCliPathTextInput(...)para entradas de texto respaldadas por rutascreateDelegatedSetupWizardProxy(...)cuandosetupEntrynecesita reenviar de forma diferida el comportamiento de estado, preparación o finalización a un asistente completo más pesadocreateDelegatedTextInputShouldPrompt(...)cuandosetupEntrysolo necesita delegar una decisióntextInputs[*].shouldPrompt
Publicación e instalación
Plugins externos: publíquelos en ClawHub y, a continuación, instálelos:
npm
openclaw plugins install @myorg/openclaw-my-pluginLas especificaciones de paquete sin prefijo se instalan desde npm durante la transición del lanzamiento, salvo que el nombre coincida con el identificador de un plugin incluido u oficial, en cuyo caso OpenClaw utiliza en su lugar esa copia local u oficial. Utilice clawhub:, npm:, git: o npm-pack: para seleccionar la fuente de forma determinista; consulte Administrar plugins.
Solo ClawHub
openclaw plugins install clawhub:@myorg/openclaw-my-pluginEspecificación de paquete npm
Utilice npm cuando un paquete aún no se haya trasladado a ClawHub o cuando se necesite una ruta de instalación directa desde npm durante la migración:
openclaw plugins install npm:@myorg/openclaw-my-pluginPlugins del repositorio: colóquelos bajo el árbol del espacio de trabajo de plugins incluidos; se detectan automáticamente durante la compilación.
Los metadatos de los paquetes incluidos son explícitos; no se deducen del JavaScript compilado durante el inicio del Gateway. Las dependencias de ejecución pertenecen al paquete del plugin que las posee; el inicio de OpenClaw empaquetado nunca repara ni replica las dependencias de los plugins.
Contenido relacionado
- Creación de plugins — guía de introducción paso a paso
- Manifiesto del plugin — referencia completa del esquema del manifiesto
- Puntos de entrada del SDK —
definePluginEntryydefineChannelPluginEntry