Saltar al contenido principal

Plugins

Los plugins amplían OpenClaw con nuevas capacidades: canales, proveedores de modelos, herramientas, Skills, voz, transcripción en tiempo real, voz en tiempo real, comprensión de medios, generación de imágenes, generación de video, obtención web, búsqueda web y más. Algunos plugins son core (incluidos con OpenClaw), otros son externos (publicados en npm por la comunidad).

Inicio rápido

1

Ver qué está cargado

openclaw plugins list
2

Instalar un plugin

# Desde npm
openclaw plugins install @openclaw/voice-call

# Desde un directorio o archivo local
openclaw plugins install ./my-plugin
openclaw plugins install ./my-plugin.tgz
3

Reiniciar el Gateway

openclaw gateway restart
Luego configura en plugins.entries.\<id\>.config en tu archivo de configuración.
Si prefieres control nativo del chat, habilita commands.plugins: true y usa:
/plugin install clawhub:@openclaw/voice-call
/plugin show voice-call
/plugin enable voice-call
La ruta de instalación usa el mismo resolvedor que la CLI: ruta/archivo local, clawhub:<pkg> explícito o especificación simple de paquete (primero ClawHub, luego fallback a npm). Si la configuración no es válida, la instalación normalmente falla de forma cerrada y te indica que uses openclaw doctor --fix. La única excepción de recuperación es una ruta específica de reinstalación de plugins empaquetados para plugins que optan por openclaw.install.allowInvalidConfigRecovery.

Tipos de plugins

OpenClaw reconoce dos formatos de plugins:
FormatoCómo funcionaEjemplos
Nativeopenclaw.plugin.json + módulo de runtime; se ejecuta en procesoPlugins oficiales, paquetes npm de la comunidad
BundleDiseño compatible con Codex/Claude/Cursor; asignado a funciones de OpenClaw.codex-plugin/, .claude-plugin/, .cursor-plugin/
Ambos aparecen en openclaw plugins list. Consulta Plugin Bundles para ver detalles de los bundles. Si estás escribiendo un plugin native, empieza con Creación de plugins y el Resumen del Plugin SDK.

Plugins oficiales

Instalables (npm)

PluginPaqueteDocumentación
Matrix@openclaw/matrixMatrix
Microsoft Teams@openclaw/msteamsMicrosoft Teams
Nostr@openclaw/nostrNostr
Voice Call@openclaw/voice-callVoice Call
Zalo@openclaw/zaloZalo
Zalo Personal@openclaw/zalouserZalo Personal

Core (incluidos con OpenClaw)

anthropic, byteplus, cloudflare-ai-gateway, github-copilot, google, huggingface, kilocode, kimi-coding, minimax, mistral, qwen, moonshot, nvidia, openai, opencode, opencode-go, openrouter, qianfan, synthetic, together, venice, vercel-ai-gateway, volcengine, xiaomi, zai
  • memory-core — memory search empaquetado (predeterminado mediante plugins.slots.memory)
  • memory-lancedb — memoria a largo plazo de instalación bajo demanda con recuperación/captura automática (establece plugins.slots.memory = "memory-lancedb")
elevenlabs, microsoft
  • browser — plugin de navegador empaquetado para la herramienta browser, la CLI openclaw browser, el método de gateway browser.request, el runtime del navegador y el servicio predeterminado de control del navegador (habilitado de forma predeterminada; desactívalo antes de reemplazarlo)
  • copilot-proxy — puente de VS Code Copilot Proxy (deshabilitado de forma predeterminada)
¿Buscas plugins de terceros? Consulta Community Plugins.

Configuración

{
  plugins: {
    enabled: true,
    allow: ["voice-call"],
    deny: ["untrusted-plugin"],
    load: { paths: ["~/Projects/oss/voice-call-extension"] },
    entries: {
      "voice-call": { enabled: true, config: { provider: "twilio" } },
    },
  },
}
CampoDescripción
enabledInterruptor maestro (predeterminado: true)
allowLista permitida de plugins (opcional)
denyLista denegada de plugins (opcional; denegar prevalece)
load.pathsArchivos/directorios adicionales de plugins
slotsSelectores de slots exclusivos (por ejemplo memory, contextEngine)
entries.\<id\>Interruptores + configuración por plugin
Los cambios de configuración requieren reiniciar el gateway. Si el Gateway se ejecuta con observación de configuración + reinicio en proceso habilitados (la ruta predeterminada openclaw gateway), ese reinicio suele realizarse automáticamente un momento después de que se escriba la configuración.
  • Deshabilitado: el plugin existe, pero las reglas de habilitación lo desactivaron. La configuración se conserva.
  • Faltante: la configuración hace referencia a un id de plugin que el descubrimiento no encontró.
  • No válido: el plugin existe, pero su configuración no coincide con el esquema declarado.

Descubrimiento y precedencia

OpenClaw escanea los plugins en este orden (la primera coincidencia gana):
1

Rutas de configuración

plugins.load.paths: rutas explícitas de archivo o directorio.
2

Extensiones del workspace

\<workspace\>/.openclaw/<plugin-root>/*.ts y \<workspace\>/.openclaw/<plugin-root>/*/index.ts.
3

Extensiones globales

~/.openclaw/<plugin-root>/*.ts y ~/.openclaw/<plugin-root>/*/index.ts.
4

Plugins empaquetados

Incluidos con OpenClaw. Muchos están habilitados de forma predeterminada (proveedores de modelos, voz). Otros requieren habilitación explícita.

Reglas de habilitación

  • plugins.enabled: false deshabilita todos los plugins
  • plugins.deny siempre prevalece sobre allow
  • plugins.entries.\<id\>.enabled: false deshabilita ese plugin
  • Los plugins originados en el workspace están deshabilitados de forma predeterminada (deben habilitarse explícitamente)
  • Los plugins empaquetados siguen el conjunto integrado habilitado por defecto, salvo sobrescritura
  • Los slots exclusivos pueden forzar la habilitación del plugin seleccionado para ese slot

Slots de plugins (categorías exclusivas)

Algunas categorías son exclusivas (solo una activa a la vez):
{
  plugins: {
    slots: {
      memory: "memory-core", // o "none" para deshabilitar
      contextEngine: "legacy", // o un id de plugin
    },
  },
}
SlotQué controlaPredeterminado
memoryPlugin de memoria activomemory-core
contextEngineMotor de contexto activolegacy (integrado)

Referencia de la CLI

openclaw plugins list                       # inventario compacto
openclaw plugins list --enabled            # solo plugins cargados
openclaw plugins list --verbose            # líneas de detalle por plugin
openclaw plugins list --json               # inventario legible por máquina
openclaw plugins inspect <id>              # detalle profundo
openclaw plugins inspect <id> --json       # legible por máquina
openclaw plugins inspect --all             # tabla de toda la flota
openclaw plugins info <id>                 # alias de inspect
openclaw plugins doctor                    # diagnósticos

openclaw plugins install <package>         # instalar (primero ClawHub, luego npm)
openclaw plugins install clawhub:<pkg>     # instalar solo desde ClawHub
openclaw plugins install <spec> --force    # sobrescribir instalación existente
openclaw plugins install <path>            # instalar desde ruta local
openclaw plugins install -l <path>         # enlazar (sin copiar) para desarrollo
openclaw plugins install <plugin> --marketplace <source>
openclaw plugins install <plugin> --marketplace https://github.com/<owner>/<repo>
openclaw plugins install <spec> --pin      # registrar especificación npm resuelta exacta
openclaw plugins install <spec> --dangerously-force-unsafe-install
openclaw plugins update <id>             # actualizar un plugin
openclaw plugins update <id> --dangerously-force-unsafe-install
openclaw plugins update --all            # actualizar todos
openclaw plugins uninstall <id>          # eliminar registros de configuración/instalación
openclaw plugins uninstall <id> --keep-files
openclaw plugins marketplace list <source>
openclaw plugins marketplace list <source> --json

openclaw plugins enable <id>
openclaw plugins disable <id>
Los plugins empaquetados vienen con OpenClaw. Muchos están habilitados de forma predeterminada (por ejemplo, proveedores de modelos empaquetados, proveedores de voz empaquetados y el plugin de navegador empaquetado). Otros plugins empaquetados aún necesitan openclaw plugins enable <id>. --force sobrescribe in situ un plugin o paquete de hooks ya instalado. No es compatible con --link, que reutiliza la ruta de origen en lugar de copiar sobre un destino de instalación gestionado. --pin es solo para npm. No es compatible con --marketplace, porque las instalaciones desde marketplace conservan metadatos de origen del marketplace en lugar de una especificación npm. --dangerously-force-unsafe-install es una anulación de emergencia para falsos positivos del escáner integrado de código peligroso. Permite que las instalaciones y actualizaciones de plugins continúen más allá de hallazgos integrados critical, pero aun así no omite bloqueos de política before_install de plugins ni bloqueos por fallo del escaneo. Este indicador de CLI se aplica solo a flujos de instalación/actualización de plugins. Las instalaciones de dependencias de Skills respaldadas por gateway usan en su lugar la anulación de solicitud correspondiente dangerouslyForceUnsafeInstall, mientras que openclaw skills install sigue siendo el flujo independiente de descarga/instalación de Skills desde ClawHub. Los bundles compatibles participan en el mismo flujo de listar/inspeccionar/habilitar/deshabilitar plugins. La compatibilidad actual de runtime incluye Skills de bundles, command-skills de Claude, valores predeterminados de Claude settings.json, valores predeterminados de Claude .lsp.json y lspServers declarados en el manifiesto, command-skills de Cursor y directorios de hooks compatibles con Codex. openclaw plugins inspect <id> también informa capacidades detectadas del bundle, además de entradas MCP y LSP server compatibles o no compatibles para plugins respaldados por bundles. Las fuentes de marketplace pueden ser un nombre de marketplace conocido de Claude de ~/.claude/plugins/known_marketplaces.json, una raíz de marketplace local o ruta a marketplace.json, una abreviatura de GitHub como owner/repo, una URL de repositorio GitHub o una URL git. En marketplaces remotos, las entradas de plugins deben permanecer dentro del repositorio clonado del marketplace y usar solo fuentes de ruta relativa. Consulta la referencia de la CLI openclaw plugins para obtener todos los detalles.

Resumen de la API de plugins

Los plugins native exportan un objeto de entrada que expone register(api). Los plugins antiguos aún pueden usar activate(api) como alias heredado, pero los nuevos plugins deberían usar register.
export default definePluginEntry({
  id: "my-plugin",
  name: "My Plugin",
  register(api) {
    api.registerProvider({
      /* ... */
    });
    api.registerTool({
      /* ... */
    });
    api.registerChannel({
      /* ... */
    });
  },
});
OpenClaw carga el objeto de entrada y llama a register(api) durante la activación del plugin. El cargador aún recurre a activate(api) para plugins antiguos, pero los plugins empaquetados y los nuevos plugins externos deben tratar register como el contrato público. Métodos comunes de registro:
MétodoQué registra
registerProviderProveedor de modelos (LLM)
registerChannelCanal de chat
registerToolHerramienta de agente
registerHook / on(...)Hooks del ciclo de vida
registerSpeechProviderTexto a voz / STT
registerRealtimeTranscriptionProviderSTT en streaming
registerRealtimeVoiceProviderVoz en tiempo real dúplex
registerMediaUnderstandingProviderAnálisis de imagen/audio
registerImageGenerationProviderGeneración de imágenes
registerMusicGenerationProviderGeneración de música
registerVideoGenerationProviderGeneración de video
registerWebFetchProviderProveedor de obtención / scraping web
registerWebSearchProviderBúsqueda web
registerHttpRouteEndpoint HTTP
registerCommand / registerCliComandos de CLI
registerContextEngineMotor de contexto
registerServiceServicio en segundo plano
Comportamiento de guardas de hooks para hooks de ciclo de vida tipados:
  • before_tool_call: { block: true } es terminal; se omiten los controladores de menor prioridad.
  • before_tool_call: { block: false } no hace nada y no elimina un bloqueo anterior.
  • before_install: { block: true } es terminal; se omiten los controladores de menor prioridad.
  • before_install: { block: false } no hace nada y no elimina un bloqueo anterior.
  • message_sending: { cancel: true } es terminal; se omiten los controladores de menor prioridad.
  • message_sending: { cancel: false } no hace nada y no elimina una cancelación anterior.
Para ver el comportamiento completo de hooks tipados, consulta Resumen del SDK.

Relacionado