Saltar al contenido principal

Resumen del SDK de plugins

El SDK de plugins es el contrato tipado entre los plugins y el núcleo. Esta página es la referencia para qué importar y qué puedes registrar.
¿Buscas una guía práctica?

Convención de importación

Importa siempre desde una subruta específica:
import { definePluginEntry } from "openclaw/plugin-sdk/plugin-entry";
import { defineChannelPluginEntry } from "openclaw/plugin-sdk/channel-core";
Cada subruta es un módulo pequeño e independiente. Esto mantiene un arranque rápido y evita problemas de dependencias circulares. Para helpers de entrada/compilación específicos de canal, prefiere openclaw/plugin-sdk/channel-core; deja openclaw/plugin-sdk/core para la superficie paraguas más amplia y helpers compartidos como buildChannelConfigSchema. No añadas ni dependas de superficies de conveniencia con nombre de proveedor como openclaw/plugin-sdk/slack, openclaw/plugin-sdk/discord, openclaw/plugin-sdk/signal, openclaw/plugin-sdk/whatsapp o superficies helper con marca de canal. Los plugins incluidos deben componer subrutas genéricas del SDK dentro de sus propios barrels api.ts o runtime-api.ts, y el núcleo debe usar esos barrels locales del plugin o añadir un contrato estrecho y genérico del SDK cuando la necesidad sea realmente transversal entre canales. El mapa de exportación generado todavía contiene un pequeño conjunto de superficies helper de plugins incluidos como plugin-sdk/feishu, plugin-sdk/feishu-setup, plugin-sdk/zalo, plugin-sdk/zalo-setup y plugin-sdk/matrix*. Esas subrutas existen solo para mantenimiento y compatibilidad de plugins incluidos; se omiten intencionadamente de la tabla común de abajo y no son la ruta de importación recomendada para nuevos plugins de terceros.

Referencia de subrutas

Las subrutas más usadas, agrupadas por propósito. La lista completa generada de más de 200 subrutas vive en scripts/lib/plugin-sdk-entrypoints.json. Las subrutas helper reservadas para plugins incluidos siguen apareciendo en esa lista generada. Trátalas como superficies de detalle de implementación/compatibilidad salvo que una página de documentación promueva explícitamente una como pública.

Entrada del plugin

SubrutaExportaciones clave
plugin-sdk/plugin-entrydefinePluginEntry
plugin-sdk/coredefineChannelPluginEntry, createChatChannelPlugin, createChannelPluginBase, defineSetupPluginEntry, buildChannelConfigSchema
plugin-sdk/config-schemaOpenClawSchema
plugin-sdk/provider-entrydefineSingleProviderPluginEntry
SubrutaExportaciones clave
plugin-sdk/channel-coredefineChannelPluginEntry, defineSetupPluginEntry, createChatChannelPlugin, createChannelPluginBase
plugin-sdk/config-schemaExportación del esquema Zod raíz de openclaw.json (OpenClawSchema)
plugin-sdk/channel-setupcreateOptionalChannelSetupSurface, createOptionalChannelSetupAdapter, createOptionalChannelSetupWizard, además de DEFAULT_ACCOUNT_ID, createTopLevelChannelDmPolicy, setSetupChannelEnabled, splitSetupEntries
plugin-sdk/setupHelpers compartidos del asistente de configuración, prompts de listas de permitidos, constructores de estado de configuración
plugin-sdk/setup-runtimecreatePatchedAccountSetupAdapter, createEnvPatchedAccountSetupAdapter, createSetupInputPresenceValidator, noteChannelLookupFailure, noteChannelLookupSummary, promptResolvedAllowFrom, splitSetupEntries, createAllowlistSetupWizardProxy, createDelegatedSetupWizardProxy
plugin-sdk/setup-adapter-runtimecreateEnvPatchedAccountSetupAdapter
plugin-sdk/setup-toolsformatCliCommand, detectBinary, extractArchive, resolveBrewExecutable, formatDocsLink, CONFIG_DIR
plugin-sdk/account-coreHelpers de configuración/múltiples cuentas y compuertas de acciones, helpers de respaldo para cuenta predeterminada
plugin-sdk/account-idDEFAULT_ACCOUNT_ID, helpers de normalización de ID de cuenta
plugin-sdk/account-resolutionHelpers de búsqueda de cuentas + respaldo predeterminado
plugin-sdk/account-helpersHelpers limitados para lista de cuentas/acciones de cuenta
plugin-sdk/channel-pairingcreateChannelPairingController
plugin-sdk/channel-reply-pipelinecreateChannelReplyPipeline
plugin-sdk/channel-config-helperscreateHybridChannelConfigAdapter
plugin-sdk/channel-config-schemaTipos de esquema de configuración de canal
plugin-sdk/telegram-command-configHelpers de normalización/validación de comandos personalizados de Telegram con respaldo de contrato incluido
plugin-sdk/channel-policyresolveChannelGroupRequireMention
plugin-sdk/channel-lifecyclecreateAccountStatusSink
plugin-sdk/inbound-envelopeHelpers compartidos de rutas entrantes y construcción de sobres
plugin-sdk/inbound-reply-dispatchHelpers compartidos para registrar y despachar entrada
plugin-sdk/messaging-targetsHelpers de análisis/coincidencia de destinos
plugin-sdk/outbound-mediaHelpers compartidos para carga de medios salientes
plugin-sdk/outbound-runtimeHelpers de identidad saliente y delegación de envío
plugin-sdk/thread-bindings-runtimeHelpers de ciclo de vida de vinculaciones a hilos y adaptadores
plugin-sdk/agent-media-payloadConstructor heredado de carga útil de medios del agente
plugin-sdk/conversation-runtimeHelpers de conversación/vinculación a hilos, emparejamiento y vinculaciones configuradas
plugin-sdk/runtime-config-snapshotHelper de instantánea de configuración en tiempo de ejecución
plugin-sdk/runtime-group-policyHelpers de resolución de política de grupo en tiempo de ejecución
plugin-sdk/channel-statusHelpers compartidos para instantáneas/resúmenes de estado de canal
plugin-sdk/channel-config-primitivesPrimitivas limitadas del esquema de configuración de canal
plugin-sdk/channel-config-writesHelpers de autorización de escrituras en configuración de canal
plugin-sdk/channel-plugin-commonExportaciones de preámbulo compartido de plugins de canal
plugin-sdk/allowlist-config-editHelpers de lectura/edición de configuración de listas de permitidos
plugin-sdk/group-accessHelpers compartidos para decisiones de acceso a grupos
plugin-sdk/direct-dmHelpers compartidos de autenticación/protección de DM directos
plugin-sdk/interactive-runtimeHelpers de normalización/reducción de cargas útiles de respuestas interactivas
plugin-sdk/channel-inboundHelpers de debounce, coincidencia de menciones y sobres
plugin-sdk/channel-send-resultTipos de resultados de respuesta
plugin-sdk/channel-actionscreateMessageToolButtonsSchema, createMessageToolCardSchema
plugin-sdk/channel-targetsHelpers de análisis/coincidencia de destinos
plugin-sdk/channel-contractTipos de contrato de canal
plugin-sdk/channel-feedbackIntegración de feedback/reacciones
SubrutaExportaciones clave
plugin-sdk/provider-entrydefineSingleProviderPluginEntry
plugin-sdk/provider-setupHelpers seleccionados de configuración para proveedores locales/autoalojados
plugin-sdk/self-hosted-provider-setupHelpers enfocados para configuración de proveedores autoalojados compatibles con OpenAI
plugin-sdk/cli-backendValores predeterminados del backend de CLI + constantes de watchdog
plugin-sdk/provider-auth-runtimeHelpers de resolución de claves de API en tiempo de ejecución para plugins de proveedor
plugin-sdk/provider-auth-api-keyHelpers de onboarding/escritura de perfiles para claves de API
plugin-sdk/provider-auth-resultConstructor estándar de resultados de autenticación OAuth
plugin-sdk/provider-auth-loginHelpers compartidos de inicio de sesión interactivo para plugins de proveedor
plugin-sdk/provider-env-varsHelpers de búsqueda de variables de entorno para autenticación de proveedor
plugin-sdk/provider-authcreateProviderApiKeyAuthMethod, ensureApiKeyFromOptionEnvOrPrompt, upsertAuthProfile
plugin-sdk/provider-model-sharedProviderReplayFamily, buildProviderReplayFamilyHooks, normalizeModelCompat, constructores compartidos de políticas de repetición, helpers de endpoints de proveedor y de normalización de IDs de modelo como normalizeNativeXaiModelId
plugin-sdk/provider-catalog-sharedfindCatalogTemplate, buildSingleProviderApiKeyCatalog, supportsNativeStreamingUsageCompat, applyProviderNativeStreamingUsageCompat
plugin-sdk/provider-httpHelpers genéricos de capacidades HTTP/endpoint de proveedor
plugin-sdk/provider-web-fetchHelpers de registro/caché para proveedores de web-fetch
plugin-sdk/provider-web-searchHelpers de registro/caché/configuración para proveedores de web-search
plugin-sdk/provider-toolsProviderToolCompatFamily, buildProviderToolCompatFamilyHooks, limpieza + diagnósticos de esquema Gemini y helpers de compatibilidad xAI como resolveXaiModelCompatPatch / applyXaiModelCompat
plugin-sdk/provider-usagefetchClaudeUsage y similares
plugin-sdk/provider-streamProviderStreamFamily, buildProviderStreamFamilyHooks, composeProviderStreamWrappers, tipos de envolturas de stream y helpers compartidos de envolturas para Anthropic/Bedrock/Google/Kilocode/Moonshot/OpenAI/OpenRouter/Z.A.I/MiniMax/Copilot
plugin-sdk/provider-onboardHelpers de parches de configuración para onboarding
plugin-sdk/global-singletonHelpers de singleton/mapa/caché locales al proceso
SubrutaExportaciones clave
plugin-sdk/command-authresolveControlCommandGate, helpers de registro de comandos, helpers de autorización de remitentes
plugin-sdk/approval-auth-runtimeResolución de aprobadores y helpers de autenticación de acciones en el mismo chat
plugin-sdk/approval-client-runtimeHelpers nativos de perfiles/filtros de aprobación de exec
plugin-sdk/approval-delivery-runtimeAdaptadores nativos de capacidades/entrega de aprobaciones
plugin-sdk/approval-native-runtimeHelpers nativos de destino de aprobación y vinculación de cuentas
plugin-sdk/approval-reply-runtimeHelpers de carga útil de respuestas para aprobaciones de exec/plugin
plugin-sdk/command-auth-nativeHelpers nativos de autenticación de comandos + destino de sesión nativa
plugin-sdk/command-detectionHelpers compartidos de detección de comandos
plugin-sdk/command-surfaceHelpers de normalización del cuerpo de comando y superficies de comandos
plugin-sdk/allow-fromformatAllowFromLowercase
plugin-sdk/security-runtimeHelpers compartidos de confianza, control de DMs, contenido externo y recopilación de secretos
plugin-sdk/ssrf-policyHelpers de listas de permitidos de hosts y políticas SSRF de red privada
plugin-sdk/ssrf-runtimeHelpers de dispatcher fijado, fetch protegido por SSRF y política SSRF
plugin-sdk/secret-inputHelpers para analizar entrada de secretos
plugin-sdk/webhook-ingressHelpers de solicitud/destino para webhooks
plugin-sdk/webhook-request-guardsHelpers de tamaño de cuerpo/timeout para solicitudes
SubrutaExportaciones clave
plugin-sdk/runtimeHelpers amplios de tiempo de ejecución/logging/copia de seguridad/instalación de plugins
plugin-sdk/runtime-envHelpers limitados de entorno de tiempo de ejecución, logger, timeout, reintento y backoff
plugin-sdk/runtime-storecreatePluginRuntimeStore
plugin-sdk/plugin-runtimeHelpers compartidos de comandos/hooks/http/interactivo para plugins
plugin-sdk/hook-runtimeHelpers compartidos para canalizaciones de hooks internos/webhook
plugin-sdk/lazy-runtimeHelpers de importación/vinculación diferida en tiempo de ejecución como createLazyRuntimeModule, createLazyRuntimeMethod y createLazyRuntimeSurface
plugin-sdk/process-runtimeHelpers de ejecución de procesos
plugin-sdk/cli-runtimeHelpers de formato CLI, espera y versión
plugin-sdk/gateway-runtimeHelpers de cliente Gateway y parches de estado de canal
plugin-sdk/config-runtimeHelpers de carga/escritura de configuración
plugin-sdk/telegram-command-configNormalización de nombres/descripciones de comandos de Telegram y comprobaciones de duplicados/conflictos, incluso cuando la superficie contractual incluida de Telegram no está disponible
plugin-sdk/approval-runtimeHelpers de aprobaciones de exec/plugin, constructores de capacidades de aprobación, helpers de autenticación/perfiles, helpers nativos de enrutamiento/tiempo de ejecución
plugin-sdk/reply-runtimeHelpers compartidos de tiempo de ejecución para entrada/respuesta, fragmentación, despacho, heartbeat, planificador de respuestas
plugin-sdk/reply-dispatch-runtimeHelpers limitados para despacho/finalización de respuestas
plugin-sdk/reply-historyHelpers compartidos de historial de respuestas de ventana corta como buildHistoryContext, recordPendingHistoryEntry y clearHistoryEntriesIfEnabled
plugin-sdk/reply-referencecreateReplyReferencePlanner
plugin-sdk/reply-chunkingHelpers limitados de fragmentación de texto/Markdown
plugin-sdk/session-store-runtimeHelpers de ruta y marca temporal updated-at del almacén de sesiones
plugin-sdk/state-pathsHelpers de rutas de directorios de estado/OAuth
plugin-sdk/routingHelpers de ruta/clave de sesión/vinculación de cuentas como resolveAgentRoute, buildAgentSessionKey y resolveDefaultAgentBoundAccountId
plugin-sdk/status-helpersHelpers compartidos de resumen de estado de canal/cuenta, valores predeterminados de estado de tiempo de ejecución y helpers de metadatos de incidencias
plugin-sdk/target-resolver-runtimeHelpers compartidos de resolución de destinos
plugin-sdk/string-normalization-runtimeHelpers de normalización de slugs/cadenas
plugin-sdk/request-urlExtrae URLs de tipo string de entradas tipo fetch/request
plugin-sdk/run-commandEjecutor de comandos con temporización y resultados stdout/stderr normalizados
plugin-sdk/param-readersLectores comunes de parámetros de herramienta/CLI
plugin-sdk/tool-sendExtrae campos canónicos de destino de envío de argumentos de herramienta
plugin-sdk/temp-pathHelpers compartidos de rutas temporales de descarga
plugin-sdk/logging-coreHelpers de logger por subsistema y redacción
plugin-sdk/markdown-table-runtimeHelpers para modo de tablas Markdown
plugin-sdk/json-storeHelpers pequeños de lectura/escritura de estado JSON
plugin-sdk/file-lockHelpers de bloqueo de archivos reentrantes
plugin-sdk/persistent-dedupeHelpers de caché de deduplicación respaldada en disco
plugin-sdk/acp-runtimeHelpers de ACP en tiempo de ejecución/sesión
plugin-sdk/agent-config-primitivesPrimitivas limitadas del esquema de configuración del agente en tiempo de ejecución
plugin-sdk/boolean-paramLector permisivo de parámetros booleanos
plugin-sdk/dangerous-name-runtimeHelpers de resolución de coincidencias de nombres peligrosos
plugin-sdk/device-bootstrapHelpers de bootstrap de dispositivo y tokens de emparejamiento
plugin-sdk/extension-sharedPrimitivas compartidas de ayuda de canales pasivos y estado
plugin-sdk/models-provider-runtimeHelpers de respuestas para comando/proveedor /models
plugin-sdk/skill-commands-runtimeHelpers de listado de comandos de Skills
plugin-sdk/native-command-registryHelpers de registro/construcción/serialización de comandos nativos
plugin-sdk/provider-zai-endpointHelpers de detección de endpoints Z.AI
plugin-sdk/infra-runtimeHelpers de eventos de sistema/heartbeat
plugin-sdk/collection-runtimeHelpers pequeños de caché acotada
plugin-sdk/diagnostic-runtimeHelpers de indicadores y eventos de diagnóstico
plugin-sdk/error-runtimeHelpers de grafo de errores, formato y clasificación compartida de errores, isApprovalNotFoundError
plugin-sdk/fetch-runtimeHelpers de fetch envuelto, proxy y búsqueda fijada
plugin-sdk/host-runtimeHelpers de normalización de nombres de host y host SCP
plugin-sdk/retry-runtimeHelpers de configuración de reintentos y ejecutor de reintentos
plugin-sdk/agent-runtimeHelpers de directorio/identidad/espacio de trabajo del agente
plugin-sdk/directory-runtimeConsulta/deduplicación de directorio respaldado por configuración
plugin-sdk/keyed-async-queueKeyedAsyncQueue
SubrutaExportaciones clave
plugin-sdk/media-runtimeHelpers compartidos de fetch/transformación/almacenamiento de medios además de constructores de cargas útiles de medios
plugin-sdk/media-understandingTipos de proveedores de comprensión de medios además de exportaciones helper para imágenes/audio orientadas al proveedor
plugin-sdk/text-runtimeHelpers compartidos de texto/Markdown/logging como eliminación de texto visible para el asistente, renderizado/fragmentación/tablas Markdown, helpers de redacción, helpers de etiquetas directivas y utilidades de texto seguro
plugin-sdk/text-chunkingHelper de fragmentación de texto saliente
plugin-sdk/speechTipos de proveedores de voz además de exportaciones helper de directivas, registro y validación orientadas al proveedor
plugin-sdk/speech-coreTipos compartidos de proveedores de voz, helpers de registro, directivas y normalización
plugin-sdk/realtime-transcriptionTipos de proveedores de transcripción en tiempo real y helpers de registro
plugin-sdk/realtime-voiceTipos de proveedores de voz en tiempo real y helpers de registro
plugin-sdk/image-generationTipos de proveedores de generación de imágenes
plugin-sdk/image-generation-coreTipos compartidos de generación de imágenes, helpers de failover, autenticación y registro
plugin-sdk/video-generationTipos de proveedor/solicitud/resultado de generación de video
plugin-sdk/video-generation-coreTipos compartidos de generación de video, helpers de failover, búsqueda de proveedores y análisis de model-ref
plugin-sdk/webhook-targetsRegistro de destinos webhook y helpers de instalación de rutas
plugin-sdk/webhook-pathHelpers de normalización de rutas webhook
plugin-sdk/web-mediaHelpers compartidos de carga de medios remotos/locales
plugin-sdk/zodzod reexportado para consumidores del SDK de plugins
plugin-sdk/testinginstallCommonResolveTargetErrorCases, shouldAckReaction
SubrutaExportaciones clave
plugin-sdk/memory-coreSuperficie helper incluida de memory-core para helpers de manager/configuración/archivos/CLI
plugin-sdk/memory-core-engine-runtimeFachada de tiempo de ejecución de indexación/búsqueda de memoria
plugin-sdk/memory-core-host-engine-foundationExportaciones del motor base de memoria del host
plugin-sdk/memory-core-host-engine-embeddingsExportaciones del motor de embeddings de memoria del host
plugin-sdk/memory-core-host-engine-qmdExportaciones del motor QMD de memoria del host
plugin-sdk/memory-core-host-engine-storageExportaciones del motor de almacenamiento de memoria del host
plugin-sdk/memory-core-host-multimodalHelpers multimodales de memoria del host
plugin-sdk/memory-core-host-queryHelpers de consultas de memoria del host
plugin-sdk/memory-core-host-secretHelpers de secretos de memoria del host
plugin-sdk/memory-core-host-statusHelpers de estado de memoria del host
plugin-sdk/memory-core-host-runtime-cliHelpers de tiempo de ejecución CLI para memoria del host
plugin-sdk/memory-core-host-runtime-coreHelpers centrales de tiempo de ejecución para memoria del host
plugin-sdk/memory-core-host-runtime-filesHelpers de archivos/tiempo de ejecución para memoria del host
plugin-sdk/memory-lancedbSuperficie helper incluida de memory-lancedb
FamiliaSubrutas actualesUso previsto
Browserplugin-sdk/browser-config-support, plugin-sdk/browser-supportHelpers de soporte del plugin de navegador incluido
Matrixplugin-sdk/matrix, plugin-sdk/matrix-helper, plugin-sdk/matrix-runtime-heavy, plugin-sdk/matrix-runtime-shared, plugin-sdk/matrix-runtime-surface, plugin-sdk/matrix-surface, plugin-sdk/matrix-thread-bindingsSuperficie helper/tiempo de ejecución de Matrix incluido
Lineplugin-sdk/line, plugin-sdk/line-core, plugin-sdk/line-runtime, plugin-sdk/line-surfaceSuperficie helper/tiempo de ejecución de LINE incluido
IRCplugin-sdk/irc, plugin-sdk/irc-surfaceSuperficie helper de IRC incluido
Helpers específicos de canalplugin-sdk/googlechat, plugin-sdk/zalouser, plugin-sdk/bluebubbles, plugin-sdk/bluebubbles-policy, plugin-sdk/mattermost, plugin-sdk/mattermost-policy, plugin-sdk/feishu-conversation, plugin-sdk/msteams, plugin-sdk/nextcloud-talk, plugin-sdk/nostr, plugin-sdk/tlon, plugin-sdk/twitchSuperficies de compatibilidad/helper de canales incluidos
Helpers específicos de autenticación/pluginplugin-sdk/github-copilot-login, plugin-sdk/github-copilot-token, plugin-sdk/diagnostics-otel, plugin-sdk/diffs, plugin-sdk/llm-task, plugin-sdk/thread-ownership, plugin-sdk/voice-callSuperficies helper de funciones/plugins incluidos; plugin-sdk/github-copilot-token exporta actualmente DEFAULT_COPILOT_API_BASE_URL, deriveCopilotApiBaseUrlFromToken y resolveCopilotApiToken

API de registro

La devolución de llamada register(api) recibe un objeto OpenClawPluginApi con estos métodos:

Registro de capacidades

MétodoQué registra
api.registerProvider(...)Inferencia de texto (LLM)
api.registerCliBackend(...)Backend local de inferencia CLI
api.registerChannel(...)Canal de mensajería
api.registerSpeechProvider(...)Texto a voz / síntesis STT
api.registerRealtimeTranscriptionProvider(...)Transcripción en tiempo real por streaming
api.registerRealtimeVoiceProvider(...)Sesiones dúplex de voz en tiempo real
api.registerMediaUnderstandingProvider(...)Análisis de imágenes/audio/video
api.registerImageGenerationProvider(...)Generación de imágenes
api.registerVideoGenerationProvider(...)Generación de video
api.registerWebFetchProvider(...)Proveedor de web fetch / scrape
api.registerWebSearchProvider(...)Búsqueda web

Herramientas y comandos

MétodoQué registra
api.registerTool(tool, opts?)Herramienta del agente (requerida o { optional: true })
api.registerCommand(def)Comando personalizado (omite el LLM)

Infraestructura

MétodoQué registra
api.registerHook(events, handler, opts?)Hook de evento
api.registerHttpRoute(params)Endpoint HTTP del Gateway
api.registerGatewayMethod(name, handler)Método RPC del Gateway
api.registerCli(registrar, opts?)Subcomando CLI
api.registerService(service)Servicio en segundo plano
api.registerInteractiveHandler(registration)Controlador interactivo
Los espacios de nombres de administración del núcleo reservados (config.*, exec.approvals.*, wizard.*, update.*) siempre permanecen como operator.admin, aunque un plugin intente asignar un alcance más estrecho a un método del gateway. Prefiere prefijos específicos de plugin para métodos propiedad del plugin.

Metadatos de registro de CLI

api.registerCli(registrar, opts?) acepta dos tipos de metadatos de nivel superior:
  • commands: raíces explícitas de comandos que pertenecen al registrador
  • descriptors: descriptores de comandos en tiempo de análisis usados para la ayuda del CLI raíz, el enrutamiento y el registro diferido del CLI del plugin
Si quieres que un comando de plugin permanezca cargado de forma diferida en la ruta normal del CLI raíz, proporciona descriptors que cubran cada raíz de comando de nivel superior expuesta por ese registrador.
api.registerCli(
  async ({ program }) => {
    const { registerMatrixCli } = await import("./src/cli.js");
    registerMatrixCli({ program });
  },
  {
    descriptors: [
      {
        name: "matrix",
        description: "Manage Matrix accounts, verification, devices, and profile state",
        hasSubcommands: true,
      },
    ],
  },
);
Usa commands por sí solo solo cuando no necesites registro diferido del CLI raíz. Esa ruta de compatibilidad con carga ansiosa sigue estando permitida, pero no instala marcadores de posición respaldados por descriptores para carga diferida en tiempo de análisis.

Registro de backend CLI

api.registerCliBackend(...) permite que un plugin controle la configuración predeterminada de un backend CLI de IA local como claude-cli o codex-cli.
  • El id del backend se convierte en el prefijo del proveedor en referencias de modelo como claude-cli/opus.
  • La config del backend usa la misma forma que agents.defaults.cliBackends.<id>.
  • La configuración del usuario sigue prevaleciendo. OpenClaw fusiona agents.defaults.cliBackends.<id> sobre el valor predeterminado del plugin antes de ejecutar la CLI.
  • Usa normalizeConfig cuando un backend necesite reescrituras de compatibilidad después de la fusión (por ejemplo normalizar formas antiguas de indicadores).

Slots exclusivos

MétodoQué registra
api.registerContextEngine(id, factory)Motor de contexto (uno activo a la vez)
api.registerMemoryPromptSection(builder)Constructor de sección de prompt de memoria
api.registerMemoryFlushPlan(resolver)Resolutor de plan de vaciado de memoria
api.registerMemoryRuntime(runtime)Adaptador de tiempo de ejecución de memoria

Adaptadores de embeddings de memoria

MétodoQué registra
api.registerMemoryEmbeddingProvider(adapter)Adaptador de embeddings de memoria para el plugin activo
  • registerMemoryPromptSection, registerMemoryFlushPlan y registerMemoryRuntime son exclusivos de los plugins de memoria.
  • registerMemoryEmbeddingProvider permite que el plugin de memoria activo registre uno o más IDs de adaptadores de embeddings (por ejemplo openai, gemini o un ID definido por un plugin personalizado).
  • La configuración del usuario como agents.defaults.memorySearch.provider y agents.defaults.memorySearch.fallback se resuelve contra esos IDs de adaptadores registrados.

Eventos y ciclo de vida

MétodoQué hace
api.on(hookName, handler, opts?)Hook tipado de ciclo de vida
api.onConversationBindingResolved(handler)Callback de vinculación de conversación

Semántica de decisión de hooks

  • before_tool_call: devolver { block: true } es terminal. En cuanto cualquier controlador lo establece, se omiten los controladores de menor prioridad.
  • before_tool_call: devolver { block: false } se trata como ausencia de decisión (igual que omitir block), no como una anulación.
  • before_install: devolver { block: true } es terminal. En cuanto cualquier controlador lo establece, se omiten los controladores de menor prioridad.
  • before_install: devolver { block: false } se trata como ausencia de decisión (igual que omitir block), no como una anulación.
  • message_sending: devolver { cancel: true } es terminal. En cuanto cualquier controlador lo establece, se omiten los controladores de menor prioridad.
  • message_sending: devolver { cancel: false } se trata como ausencia de decisión (igual que omitir cancel), no como una anulación.

Campos del objeto API

CampoTipoDescripción
api.idstringID del plugin
api.namestringNombre para mostrar
api.versionstring?Versión del plugin (opcional)
api.descriptionstring?Descripción del plugin (opcional)
api.sourcestringRuta de origen del plugin
api.rootDirstring?Directorio raíz del plugin (opcional)
api.configOpenClawConfigInstantánea actual de configuración (instantánea activa en memoria del tiempo de ejecución cuando está disponible)
api.pluginConfigRecord<string, unknown>Configuración específica del plugin desde plugins.entries.<id>.config
api.runtimePluginRuntimeRuntime helpers
api.loggerPluginLoggerLogger acotado (debug, info, warn, error)
api.registrationModePluginRegistrationModeModo de carga actual; "setup-runtime" es la ventana ligera previa al arranque/configuración completa
api.resolvePath(input)(string) => stringResolver ruta relativa a la raíz del plugin

Convención de módulos internos

Dentro de tu plugin, usa archivos barrel locales para las importaciones internas:
my-plugin/
  api.ts            # Exportaciones públicas para consumidores externos
  runtime-api.ts    # Exportaciones internas solo de tiempo de ejecución
  index.ts          # Punto de entrada del plugin
  setup-entry.ts    # Entrada ligera solo para configuración (opcional)
Nunca importes tu propio plugin mediante openclaw/plugin-sdk/<your-plugin> desde código de producción. Enruta las importaciones internas mediante ./api.ts o ./runtime-api.ts. La ruta del SDK es solo el contrato externo.
Las superficies públicas de plugins incluidos cargadas mediante fachada (api.ts, runtime-api.ts, index.ts, setup-entry.ts y archivos de entrada públicos similares) ahora prefieren la instantánea activa de configuración en tiempo de ejecución cuando OpenClaw ya se está ejecutando. Si todavía no existe ninguna instantánea de tiempo de ejecución, recurren al archivo de configuración resuelto en disco. Los plugins de proveedor también pueden exponer un barrel contractual local y limitado del plugin cuando un helper es intencionalmente específico del proveedor y todavía no pertenece a una subruta genérica del SDK. Ejemplo incluido actual: el proveedor Anthropic mantiene sus helpers de stream de Claude en su propia superficie pública api.ts / contract-api.ts en lugar de promover la lógica de encabezados beta de Anthropic y service_tier a un contrato genérico plugin-sdk/*. Otros ejemplos incluidos actuales:
  • @openclaw/openai-provider: api.ts exporta constructores de proveedor, helpers de modelos predeterminados y constructores de proveedores en tiempo real
  • @openclaw/openrouter-provider: api.ts exporta el constructor del proveedor además de helpers de onboarding/configuración
El código de producción de extensiones también debe evitar las importaciones openclaw/plugin-sdk/<other-plugin>. Si un helper es realmente compartido, promuévelo a una subruta neutral del SDK como openclaw/plugin-sdk/speech, .../provider-model-shared u otra superficie orientada a capacidades en lugar de acoplar dos plugins entre sí.

Relacionado

  • Entry Points — opciones de definePluginEntry y defineChannelPluginEntry
  • Runtime Helpers — referencia completa del espacio de nombres api.runtime
  • Setup and Config — empaquetado, manifiestos, esquemas de configuración
  • Testing — utilidades de pruebas y reglas de lint
  • SDK Migration — migración desde superficies obsoletas
  • Plugin Internals — arquitectura profunda y modelo de capacidades