Saltar al contenido principal

Documentation Index

Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt

Use this file to discover all available pages before exploring further.

OpenClaw ha pasado de una amplia capa de compatibilidad con versiones anteriores a una arquitectura moderna de plugins con importaciones enfocadas y documentadas. Si tu plugin se creó antes de la nueva arquitectura, esta guía te ayuda a migrar.

Qué está cambiando

El sistema de plugins anterior proporcionaba dos superficies completamente abiertas que permitían a los plugins importar todo lo que necesitaban desde un único punto de entrada:
  • openclaw/plugin-sdk/compat - una única importación que reexportaba docenas de helpers. Se introdujo para mantener funcionando los plugins antiguos basados en hooks mientras se construía la nueva arquitectura de plugins.
  • openclaw/plugin-sdk/infra-runtime - un amplio barrel de helpers de runtime que mezclaba eventos del sistema, estado de heartbeat, colas de entrega, helpers de fetch/proxy, helpers de archivos, tipos de aprobación y utilidades no relacionadas.
  • openclaw/plugin-sdk/config-runtime - un amplio barrel de compatibilidad de configuración que aún conserva helpers directos de carga/escritura obsoletos durante la ventana de migración.
  • openclaw/extension-api - un puente que daba a los plugins acceso directo a helpers del lado del host como el ejecutor de agente integrado.
  • api.registerEmbeddedExtensionFactory(...) - un hook de extensión integrada eliminado, solo para Pi, que podía observar eventos del ejecutor integrado como tool_result.
Las superficies de importación amplias ahora están obsoletas. Todavía funcionan en runtime, pero los nuevos plugins no deben usarlas, y los plugins existentes deberían migrar antes de que la próxima versión principal las elimine. La API de registro de fábrica de extensión integrada solo para Pi se eliminó; usa middleware de resultado de herramienta en su lugar. OpenClaw no elimina ni reinterpreta comportamiento de plugin documentado en el mismo cambio que introduce un reemplazo. Los cambios de contrato incompatibles primero deben pasar por un adaptador de compatibilidad, diagnósticos, documentación y una ventana de obsolescencia. Eso se aplica a importaciones del SDK, campos del manifiesto, API de configuración, hooks y comportamiento de registro en runtime.
La capa de compatibilidad con versiones anteriores se eliminará en una versión principal futura. Los plugins que todavía importen desde estas superficies se romperán cuando eso ocurra. Los registros de fábrica de extensión integrada solo para Pi ya no se cargan.

Por qué cambió esto

El enfoque anterior causaba problemas:
  • Inicio lento - importar un helper cargaba docenas de módulos no relacionados
  • Dependencias circulares - las reexportaciones amplias facilitaban crear ciclos de importación
  • Superficie de API poco clara - no había forma de saber qué exports eran estables frente a internos
El SDK moderno de plugins corrige esto: cada ruta de importación (openclaw/plugin-sdk/\<subpath\>) es un módulo pequeño e independiente con un propósito claro y un contrato documentado. Las costuras de conveniencia de providers heredadas para canales integrados también desaparecieron. Las costuras de helpers con marca de canal eran atajos privados del monorepo, no contratos estables de plugin. Usa subrutas genéricas y estrechas del SDK en su lugar. Dentro del workspace de plugins integrados, mantén los helpers propiedad del provider en el propio api.ts o runtime-api.ts de ese plugin. Ejemplos actuales de providers integrados:
  • Anthropic mantiene helpers de stream específicos de Claude en su propia costura api.ts / contract-api.ts
  • OpenAI mantiene constructores de provider, helpers de modelo predeterminado y constructores de provider en tiempo real en su propio api.ts
  • OpenRouter mantiene el constructor de provider y los helpers de onboarding/configuración en su propio api.ts

Plan de migración de Talk y voz en tiempo real

El código de Talk para voz en tiempo real, telefonía, reuniones y navegador se está moviendo de la contabilidad de turnos local de la superficie a un controlador compartido de sesiones Talk exportado por openclaw/plugin-sdk/realtime-voice. El nuevo controlador posee el sobre común de eventos de Talk, el estado de turno activo, el estado de captura, el estado de audio de salida, el historial reciente de eventos y el rechazo de turnos obsoletos. Los plugins de provider deberían seguir siendo dueños de las sesiones en tiempo real específicas del proveedor; los plugins de superficie deberían seguir siendo dueños de las particularidades de captura, reproducción, telefonía y reuniones. Esta migración de Talk es intencionalmente una ruptura limpia:
  1. Mantén el controlador compartido y las primitivas de runtime en plugin-sdk/realtime-voice.
  2. Migra las superficies integradas al controlador compartido: relay de navegador, handoff de sala gestionada, llamadas de voz en tiempo real, STT en streaming de llamadas de voz, Google Meet en tiempo real y push-to-talk nativo.
  3. Sustituye las antiguas familias RPC de Talk por la API final talk.session.* y talk.client.*.
  4. Anuncia un canal de eventos Talk en vivo en Gateway hello-ok.features.events: talk.event.
  5. Elimina el antiguo endpoint HTTP en tiempo real y cualquier ruta de sobrescritura de instrucciones en tiempo de solicitud.
El código nuevo no debería llamar a createTalkEventSequencer(...) directamente salvo que esté implementando un adaptador de bajo nivel o una fixture de prueba. Prefiere el controlador compartido para que los eventos con alcance de turno no puedan emitirse sin un id de turno, las llamadas turnEnd / turnCancel obsoletas no puedan borrar un turno activo más nuevo, y los eventos de ciclo de vida de audio de salida permanezcan coherentes entre telefonía, reuniones, relay de navegador, handoff de sala gestionada y clientes Talk nativos. La forma objetivo de la API pública es:
// Gateway-owned Talk session API.
await gateway.request("talk.session.create", {
  mode: "realtime",
  transport: "gateway-relay",
  brain: "agent-consult",
  sessionKey: "main",
});
await gateway.request("talk.session.appendAudio", { sessionId, audioBase64 });
await gateway.request("talk.session.cancelOutput", { sessionId, reason: "barge-in" });
await gateway.request("talk.session.submitToolResult", {
  sessionId,
  callId,
  result: { status: "working" },
  options: { willContinue: true },
});
await gateway.request("talk.session.submitToolResult", {
  sessionId,
  callId,
  result: { status: "already_delivered" },
  options: { suppressResponse: true },
});
await gateway.request("talk.session.submitToolResult", { sessionId, callId, result });
await gateway.request("talk.session.close", { sessionId });

// Client-owned provider session API.
await gateway.request("talk.client.create", {
  mode: "realtime",
  transport: "webrtc",
  brain: "agent-consult",
  sessionKey: "main",
});
await gateway.request("talk.client.toolCall", { sessionKey, callId, name, args });
Las sesiones WebRTC/provider-websocket propiedad del navegador usan talk.client.create, porque el navegador posee la negociación con el provider y el transporte de medios mientras que el Gateway posee las credenciales, las instrucciones y la política de herramientas. talk.session.* es la superficie común gestionada por Gateway para realtime de gateway-relay, transcripción de gateway-relay y sesiones nativas STT/TTS de salas gestionadas. Las configuraciones heredadas que colocaban selectores en tiempo real junto a talk.provider / talk.providers deberían repararse con openclaw doctor --fix; Talk en runtime no reinterpreta la configuración de provider de voz/TTS como configuración de provider en tiempo real. Las combinaciones admitidas de talk.session.create son intencionalmente reducidas:
ModoTransporteCerebroPropietarioNotas
realtimegateway-relayagent-consultGatewayAudio del provider full-duplex puenteado a través del Gateway; las llamadas a herramientas se enrutan mediante la herramienta agent-consult.
transcriptiongateway-relaynoneGatewaySolo STT en streaming; los llamadores envían audio de entrada y reciben eventos de transcripción.
stt-ttsmanaged-roomagent-consultSala nativa/clienteSalas de estilo push-to-talk y walkie-talkie donde el cliente posee captura/reproducción y el Gateway posee el estado de turno.
stt-ttsmanaged-roomdirect-toolsSala nativa/clienteModo de sala solo para administradores en superficies propias de confianza que ejecutan directamente acciones de herramientas del Gateway.
Mapa de métodos eliminados:
AntiguoNuevo
talk.realtime.sessiontalk.client.create
talk.realtime.toolCalltalk.client.toolCall
talk.realtime.relayAudiotalk.session.appendAudio
talk.realtime.relayCanceltalk.session.cancelOutput or talk.session.cancelTurn
talk.realtime.relayToolResulttalk.session.submitToolResult
talk.realtime.relayStoptalk.session.close
talk.transcription.sessiontalk.session.create({ mode: "transcription" })
talk.transcription.relayAudiotalk.session.appendAudio
talk.transcription.relayCanceltalk.session.cancelTurn
talk.transcription.relayStoptalk.session.close
talk.handoff.createtalk.session.create({ transport: "managed-room" })
talk.handoff.jointalk.session.join
talk.handoff.revoketalk.session.close
El vocabulario de control unificado también es deliberadamente estrecho:
MétodoSe aplica aContrato
talk.session.appendAudiorealtime/gateway-relay, transcription/gateway-relayAñade un fragmento de audio PCM en base64 a la sesión del provider propiedad de la misma conexión Gateway.
talk.session.startTurnstt-tts/managed-roomInicia un turno de usuario de sala gestionada.
talk.session.endTurnstt-tts/managed-roomFinaliza el turno activo después de la validación de turno obsoleto.
talk.session.cancelTurntodas las sesiones propiedad de GatewayCancela el trabajo activo de captura/provider/agente/TTS para un turno.
talk.session.cancelOutputrealtime/gateway-relayDetiene la salida de audio del asistente sin finalizar necesariamente el turno del usuario.
talk.session.submitToolResultrealtime/gateway-relayCompleta una llamada a herramienta del provider emitida por el relay; pasa options.willContinue para salida provisional u options.suppressResponse para satisfacer la llamada sin otra respuesta del asistente.
talk.session.closetodas las sesiones unificadasDetiene las sesiones relay o revoca el estado de sala gestionada, y luego olvida el id de sesión unificado.
No introduzcas casos especiales de proveedor o plataforma en el núcleo para hacer que esto funcione. El núcleo posee la semántica de las sesiones Talk. Los Plugin de proveedor poseen la configuración de sesiones del proveedor. Las llamadas de voz y Google Meet poseen los adaptadores de telefonía/reuniones. El navegador y las aplicaciones nativas poseen la UX de captura/reproducción del dispositivo.

Política de compatibilidad

Para Plugin externos, el trabajo de compatibilidad sigue este orden:
  1. agregar el nuevo contrato
  2. mantener el comportamiento anterior conectado mediante un adaptador de compatibilidad
  3. emitir un diagnóstico o una advertencia que nombre la ruta anterior y su reemplazo
  4. cubrir ambas rutas en las pruebas
  5. documentar la obsolescencia y la ruta de migración
  6. eliminar solo después de la ventana de migración anunciada, normalmente en una versión mayor
Los mantenedores pueden auditar la cola de migración actual con pnpm plugins:boundary-report. Usa pnpm plugins:boundary-report:summary para conteos compactos, --owner <id> para un Plugin o propietario de compatibilidad, y pnpm plugins:boundary-report:ci cuando una puerta de CI deba fallar ante registros de compatibilidad vencidos, importaciones de SDK reservadas entre propietarios o subrutas de SDK reservadas sin usar. El informe agrupa los registros de compatibilidad obsoletos por fecha de eliminación, cuenta referencias locales de código/docs, muestra importaciones de SDK reservadas entre propietarios y resume el puente privado del SDK del host de memoria para que la limpieza de compatibilidad permanezca explícita en lugar de depender de búsquedas ad hoc. Las subrutas de SDK reservadas deben tener uso de propietario rastreado; las exportaciones de ayudantes reservados sin usar deben eliminarse del SDK público. Si todavía se acepta un campo del manifiesto, los autores de Plugin pueden seguir usándolo hasta que los docs y los diagnósticos indiquen lo contrario. El código nuevo debe preferir el reemplazo documentado, pero los Plugin existentes no deben romperse durante versiones menores ordinarias.

Cómo migrar

1

Migrar ayudantes de carga/escritura de configuración en tiempo de ejecución

Los Plugin incluidos deben dejar de llamar directamente a api.runtime.config.loadConfig() y api.runtime.config.writeConfigFile(...). Prefiere la configuración que ya se pasó a la ruta de llamada activa. Los controladores de larga duración que necesiten la instantánea del proceso actual pueden usar api.runtime.config.current(). Las herramientas de agente de larga duración deben usar ctx.getRuntimeConfig() del contexto de herramienta dentro de execute para que una herramienta creada antes de una escritura de configuración siga viendo la configuración de tiempo de ejecución actualizada.Las escrituras de configuración deben pasar por los ayudantes transaccionales y elegir una política posterior a la escritura:
await api.runtime.config.mutateConfigFile({
  afterWrite: { mode: "auto" },
  mutate(draft) {
    draft.plugins ??= {};
  },
});
Usa afterWrite: { mode: "restart", reason: "..." } cuando el llamador sabe que el cambio requiere un reinicio limpio del gateway, y afterWrite: { mode: "none", reason: "..." } solo cuando el llamador posee el seguimiento y quiere suprimir deliberadamente el planificador de recarga. Los resultados de mutación incluyen un resumen followUp tipado para pruebas y registro; el gateway sigue siendo responsable de aplicar o programar el reinicio. loadConfig y writeConfigFile permanecen como ayudantes de compatibilidad obsoletos para Plugin externos durante la ventana de migración y advierten una vez con el código de compatibilidad runtime-config-load-write. Los Plugin incluidos y el código de tiempo de ejecución del repositorio están protegidos por barreras del escáner en pnpm check:deprecated-api-usage y pnpm check:no-runtime-action-load-config: el uso nuevo de Plugin de producción falla directamente, las escrituras directas de configuración fallan, los métodos del servidor gateway deben usar la instantánea de tiempo de ejecución de la solicitud, los ayudantes de envío/acción/cliente de canal en tiempo de ejecución deben recibir la configuración desde su límite, y los módulos de tiempo de ejecución de larga duración tienen cero llamadas ambientales permitidas a loadConfig().El código nuevo de Plugin también debe evitar importar el barril amplio de compatibilidad openclaw/plugin-sdk/config-runtime. Usa la subruta estrecha del SDK que coincida con la tarea:
NecesidadImportación
Tipos de configuración como OpenClawConfigopenclaw/plugin-sdk/config-contracts
Aserciones de configuración ya cargada y búsqueda de configuración de entrada de Pluginopenclaw/plugin-sdk/plugin-config-runtime
Lecturas de la instantánea actual de tiempo de ejecuciónopenclaw/plugin-sdk/runtime-config-snapshot
Escrituras de configuraciónopenclaw/plugin-sdk/config-mutation
Ayudantes de almacén de sesionesopenclaw/plugin-sdk/session-store-runtime
Configuración de tabla Markdownopenclaw/plugin-sdk/markdown-table-runtime
Ayudantes de tiempo de ejecución de política de grupoopenclaw/plugin-sdk/runtime-group-policy
Resolución de entrada secretaopenclaw/plugin-sdk/secret-input-runtime
Sobrescrituras de modelo/sesiónopenclaw/plugin-sdk/model-session-runtime
Los Plugin incluidos y sus pruebas están protegidos por escáner contra el barril amplio para que las importaciones y los mocks permanezcan locales al comportamiento que necesitan. El barril amplio todavía existe por compatibilidad externa, pero el código nuevo no debe depender de él.
2

Migrar extensiones de resultados de herramientas de Pi a middleware

Los Plugin incluidos deben reemplazar los controladores de resultados de herramientas exclusivos de Pi api.registerEmbeddedExtensionFactory(...) con middleware neutral respecto al tiempo de ejecución.
// Pi and Codex runtime dynamic tools
api.registerAgentToolResultMiddleware(async (event) => {
  return compactToolResult(event);
}, {
  runtimes: ["pi", "codex"],
});
Actualiza el manifiesto del Plugin al mismo tiempo:
{
  "contracts": {
    "agentToolResultMiddleware": ["pi", "codex"]
  }
}
Los Plugin externos no pueden registrar middleware de resultados de herramientas porque puede reescribir salidas de herramientas de alta confianza antes de que el modelo las vea.
3

Migrar controladores nativos de aprobación a hechos de capacidad

Los Plugin de canal con capacidad de aprobación ahora exponen comportamiento de aprobación nativo mediante approvalCapability.nativeRuntime más el registro compartido de contexto de tiempo de ejecución.Cambios clave:
  • Reemplaza approvalCapability.handler.loadRuntime(...) con approvalCapability.nativeRuntime
  • Mueve autenticación/entrega específicas de aprobación fuera del cableado heredado de plugin.auth / plugin.approvals y hacia approvalCapability
  • ChannelPlugin.approvals se eliminó del contrato público de Plugin de canal; mueve los campos de entrega/nativo/renderizado a approvalCapability
  • plugin.auth permanece solo para flujos de inicio/cierre de sesión de canal; los hooks de autenticación de aprobación allí ya no los lee el núcleo
  • Registra objetos de tiempo de ejecución propiedad del canal, como clientes, tokens o aplicaciones Bolt, mediante openclaw/plugin-sdk/channel-runtime-context
  • No envíes avisos de redirección propiedad del Plugin desde controladores de aprobación nativos; el núcleo ahora posee los avisos de enrutado a otro lugar a partir de resultados reales de entrega
  • Al pasar channelRuntime a createChannelManager(...), proporciona una superficie real de createPluginRuntime().channel. Los stubs parciales se rechazan.
Consulta /plugins/sdk-channel-plugins para ver el diseño actual de capacidad de aprobación.
4

Auditar el comportamiento de reserva del wrapper de Windows

Si tu Plugin usa openclaw/plugin-sdk/windows-spawn, los wrappers .cmd/.bat de Windows no resueltos ahora fallan cerrados salvo que pases explícitamente allowShellFallback: true.
// Before
const program = applyWindowsSpawnProgramPolicy({ candidate });

// After
const program = applyWindowsSpawnProgramPolicy({
  candidate,
  // Only set this for trusted compatibility callers that intentionally
  // accept shell-mediated fallback.
  allowShellFallback: true,
});
Si tu llamador no depende intencionalmente de la reserva mediante shell, no establezcas allowShellFallback y maneja el error lanzado en su lugar.
5

Buscar importaciones obsoletas

Busca en tu Plugin importaciones desde cualquiera de las superficies obsoletas:
grep -r "plugin-sdk/compat" my-plugin/
grep -r "plugin-sdk/infra-runtime" my-plugin/
grep -r "plugin-sdk/config-runtime" my-plugin/
grep -r "openclaw/extension-api" my-plugin/
6

Reemplazar con importaciones enfocadas

Cada exportación de la superficie anterior se asigna a una ruta de importación moderna específica:
// Before (deprecated backwards-compatibility layer)
import {
  createChannelReplyPipeline,
  createPluginRuntimeStore,
  resolveControlCommandGate,
} from "openclaw/plugin-sdk/compat";

// After (modern focused imports)
import { createChannelReplyPipeline } from "openclaw/plugin-sdk/channel-reply-pipeline";
import { createPluginRuntimeStore } from "openclaw/plugin-sdk/runtime-store";
import { resolveControlCommandGate } from "openclaw/plugin-sdk/command-auth";
Para ayudantes del lado del host, usa el tiempo de ejecución de Plugin inyectado en lugar de importar directamente:
// Before (deprecated extension-api bridge)
import { runEmbeddedPiAgent } from "openclaw/extension-api";
const result = await runEmbeddedPiAgent({ sessionId, prompt });

// After (injected runtime)
const result = await api.runtime.agent.runEmbeddedPiAgent({ sessionId, prompt });
El mismo patrón se aplica a otros ayudantes de puente heredados:
Importación anteriorEquivalente moderno
resolveAgentDirapi.runtime.agent.resolveAgentDir
resolveAgentWorkspaceDirapi.runtime.agent.resolveAgentWorkspaceDir
resolveAgentIdentityapi.runtime.agent.resolveAgentIdentity
resolveThinkingDefaultapi.runtime.agent.resolveThinkingDefault
resolveAgentTimeoutMsapi.runtime.agent.resolveAgentTimeoutMs
ensureAgentWorkspaceapi.runtime.agent.ensureAgentWorkspace
ayudantes de almacén de sesionesapi.runtime.agent.session.*
7

Reemplazar importaciones amplias de infra-runtime

openclaw/plugin-sdk/infra-runtime todavía existe por compatibilidad externa, pero el código nuevo debe importar la superficie enfocada de ayudantes que realmente necesita:
NecesidadImportación
Ayudantes de cola de eventos del sistemaopenclaw/plugin-sdk/system-event-runtime
Ayudantes de activación, evento y visibilidad de Heartbeatopenclaw/plugin-sdk/heartbeat-runtime
Vaciado de cola de entregas pendientesopenclaw/plugin-sdk/delivery-queue-runtime
Telemetría de actividad de canalopenclaw/plugin-sdk/channel-activity-runtime
Cachés de deduplicación en memoriaopenclaw/plugin-sdk/dedupe-runtime
Ayudantes seguros de rutas de archivos locales/mediosopenclaw/plugin-sdk/file-access-runtime
Fetch consciente del despachadoropenclaw/plugin-sdk/runtime-fetch
Ayudantes de proxy y fetch protegidoopenclaw/plugin-sdk/fetch-runtime
Tipos de política de despachador SSRFopenclaw/plugin-sdk/ssrf-dispatcher
Tipos de solicitud/resolución de aprobaciónopenclaw/plugin-sdk/approval-runtime
Ayudantes de payload de respuesta de aprobación y comandosopenclaw/plugin-sdk/approval-reply-runtime
Ayudantes de formato de erroresopenclaw/plugin-sdk/error-runtime
Esperas de disponibilidad de transporteopenclaw/plugin-sdk/transport-ready-runtime
Ayudantes de tokens segurosopenclaw/plugin-sdk/secure-random-runtime
Concurrencia acotada de tareas asíncronasopenclaw/plugin-sdk/concurrency-runtime
Coerción numéricaopenclaw/plugin-sdk/number-runtime
Bloqueo asíncrono local al procesoopenclaw/plugin-sdk/async-lock-runtime
Bloqueos de archivosopenclaw/plugin-sdk/file-lock
Los Plugin incluidos están protegidos por escáner contra infra-runtime, por lo que el código del repositorio no puede retroceder al barril amplio.
8

Migrar ayudantes de rutas de canal

El código nuevo de rutas de canal debe usar openclaw/plugin-sdk/channel-route. Los nombres anteriores de clave de ruta y destino comparable permanecen como alias de compatibilidad durante la ventana de migración, pero los Plugin nuevos deben usar los nombres de ruta que describen el comportamiento directamente:
Función auxiliar antiguaFunción auxiliar moderna
channelRouteIdentityKey(...)channelRouteDedupeKey(...)
channelRouteKey(...)channelRouteCompactKey(...)
ComparableChannelTargetChannelRouteParsedTarget
resolveComparableTargetForChannel(...)resolveRouteTargetForChannel(...)
resolveComparableTargetForLoadedChannel(...)resolveRouteTargetForLoadedChannel(...)
comparableChannelTargetsMatch(...)channelRouteTargetsMatchExact(...)
comparableChannelTargetsShareRoute(...)channelRouteTargetsShareConversation(...)
Las funciones auxiliares de ruta modernas normalizan { channel, to, accountId, threadId } de forma coherente en aprobaciones nativas, supresión de respuestas, desduplicación de entrada, entrega de Cron y enrutamiento de sesiones. Si tu Plugin posee una gramática de destino personalizada, usa resolveChannelRouteTargetWithParser(...) para adaptar ese analizador al mismo contrato de destino de ruta.
9

Compilar y probar

pnpm build
pnpm test -- my-plugin/

Referencia de rutas de importación

Ruta de importaciónPropósitoExportaciones clave
plugin-sdk/plugin-entryHelper de entrada de plugin canónicodefinePluginEntry
plugin-sdk/coreReexportación paraguas heredada para definiciones/constructores de entradas de canaldefineChannelPluginEntry, createChatChannelPlugin
plugin-sdk/config-schemaExportación del esquema de configuración raízOpenClawSchema
plugin-sdk/provider-entryHelper de entrada de proveedor únicodefineSingleProviderPluginEntry
plugin-sdk/channel-coreDefiniciones y constructores enfocados de entradas de canaldefineChannelPluginEntry, defineSetupPluginEntry, createChatChannelPlugin, createChannelPluginBase
plugin-sdk/setupHelpers compartidos del asistente de configuraciónPrompts de lista de permitidos, constructores de estado de configuración
plugin-sdk/setup-runtimeHelpers de runtime para tiempo de configuraciónAdaptadores de parche de configuración seguros para importar, helpers de notas de búsqueda, promptResolvedAllowFrom, splitSetupEntries, proxies de configuración delegada
plugin-sdk/setup-adapter-runtimeAlias de adaptador de configuración obsoletoUsa plugin-sdk/setup-runtime
plugin-sdk/setup-toolsHelpers de herramientas de configuraciónformatCliCommand, detectBinary, extractArchive, resolveBrewExecutable, formatDocsLink, CONFIG_DIR
plugin-sdk/account-coreHelpers multicuentaHelpers de lista/configuración/puerta de acción de cuentas
plugin-sdk/account-idHelpers de id de cuentaDEFAULT_ACCOUNT_ID, normalización de id de cuenta
plugin-sdk/account-resolutionHelpers de búsqueda de cuentasHelpers de búsqueda de cuentas y fallback predeterminado
plugin-sdk/account-helpersHelpers acotados de cuentasHelpers de lista de cuentas/acciones de cuenta
plugin-sdk/channel-setupAdaptadores del asistente de configuracióncreateOptionalChannelSetupSurface, createOptionalChannelSetupAdapter, createOptionalChannelSetupWizard, además de DEFAULT_ACCOUNT_ID, createTopLevelChannelDmPolicy, setSetupChannelEnabled, splitSetupEntries
plugin-sdk/channel-pairingPrimitivas de emparejamiento de DMcreateChannelPairingController
plugin-sdk/channel-reply-pipelineCableado de prefijo de respuesta, escritura y entrega de origencreateChannelReplyPipeline, resolveChannelSourceReplyDeliveryMode
plugin-sdk/channel-config-helpersFábricas de adaptadores de configuración y helpers de acceso a DMcreateHybridChannelConfigAdapter, resolveChannelDmAccess, resolveChannelDmAllowFrom, resolveChannelDmPolicy, normalizeChannelDmPolicy, normalizeLegacyDmAliases
plugin-sdk/channel-config-schemaConstructores de esquemas de configuraciónPrimitivas compartidas de esquema de configuración de canal y solo el constructor genérico
plugin-sdk/bundled-channel-config-schemaEsquemas de configuración incluidosSolo plugins incluidos mantenidos por OpenClaw; los plugins nuevos deben definir esquemas locales del plugin
plugin-sdk/channel-config-schema-legacyEsquemas de configuración incluidos obsoletosSolo alias de compatibilidad; usa plugin-sdk/bundled-channel-config-schema para plugins incluidos mantenidos
plugin-sdk/telegram-command-configHelpers de configuración de comandos de TelegramNormalización de nombres de comando, recorte de descripciones, validación de duplicados/conflictos
plugin-sdk/channel-policyResolución de políticas de grupo/DMresolveChannelGroupRequireMention
plugin-sdk/channel-lifecycleHelpers de estado de cuenta y ciclo de vida del flujo de borradorescreateAccountStatusSink, helpers de finalización de vista previa de borrador
plugin-sdk/inbound-envelopeHelpers de sobre entranteHelpers compartidos de ruta y constructor de sobre
plugin-sdk/inbound-reply-dispatchHelpers de respuesta entranteHelpers compartidos de registro y despacho
plugin-sdk/messaging-targetsAnálisis de destino de mensajeríaHelpers de análisis/coincidencia de destinos
plugin-sdk/outbound-mediaHelpers de medios salientesCarga compartida de medios salientes
plugin-sdk/outbound-send-depsHelpers de dependencias de envío salienteBúsqueda ligera de resolveOutboundSendDep sin importar el runtime saliente completo
plugin-sdk/outbound-runtimeHelpers de runtime salienteHelpers de entrega saliente, delegado de identidad/envío, sesión, formato y planificación de payload
plugin-sdk/thread-bindings-runtimeHelpers de enlace de hilosHelpers de ciclo de vida de enlaces de hilos y adaptadores
plugin-sdk/agent-media-payloadHelpers heredados de payload multimediaConstructor de payload multimedia de agente para diseños de campos heredados
plugin-sdk/channel-runtimeShim de compatibilidad obsoletoSolo utilidades heredadas de runtime de canal
plugin-sdk/channel-send-resultTipos de resultado de envíoTipos de resultado de respuesta
plugin-sdk/runtime-storeAlmacenamiento persistente de plugincreatePluginRuntimeStore
plugin-sdk/runtimeHelpers amplios de runtimeHelpers de runtime/registro/copia de seguridad/instalación de plugins
plugin-sdk/runtime-envHelpers acotados de entorno de runtimeLogger/entorno de runtime, timeout, reintento y backoff
plugin-sdk/plugin-runtimeHelpers compartidos de runtime de pluginHelpers de comandos/hooks/http/interactivos de plugin
plugin-sdk/hook-runtimeHelpers de pipeline de hooksHelpers compartidos de pipeline de webhook/hook interno
plugin-sdk/lazy-runtimeHelpers de runtime diferidocreateLazyRuntimeModule, createLazyRuntimeMethod, createLazyRuntimeMethodBinder, createLazyRuntimeNamedExport, createLazyRuntimeSurface
plugin-sdk/process-runtimeHelpers de procesoHelpers compartidos de exec
plugin-sdk/cli-runtimeHelpers de runtime de CLIFormato de comandos, esperas, helpers de versión
plugin-sdk/gateway-runtimeHelpers de GatewayCliente de Gateway, helper de inicio listo para bucle de eventos y helpers de parche de estado de canal
plugin-sdk/config-runtimeShim de compatibilidad de configuración obsoletoPrefiere config-contracts, plugin-config-runtime, runtime-config-snapshot y config-mutation
plugin-sdk/telegram-command-configHelpers de comandos de TelegramHelpers de validación de comandos de Telegram estables con fallback cuando la superficie de contrato incluida de Telegram no está disponible
plugin-sdk/approval-runtimeHelpers de prompt de aprobaciónPayload de aprobación de exec/plugin, helpers de capacidad/perfil de aprobación, helpers de enrutamiento/runtime de aprobación nativa y formato de ruta de visualización de aprobación estructurada
plugin-sdk/approval-auth-runtimeHelpers de autenticación de aprobaciónResolución de aprobador, autenticación de acción en el mismo chat
plugin-sdk/approval-client-runtimeHelpers de cliente de aprobaciónHelpers nativos de perfil/filtro de aprobación de exec
plugin-sdk/approval-delivery-runtimeHelpers de entrega de aprobaciónAdaptadores nativos de capacidad/entrega de aprobación
plugin-sdk/approval-gateway-runtimeHelpers de Gateway de aprobaciónHelper compartido de resolución de Gateway de aprobación
plugin-sdk/approval-handler-adapter-runtimeHelpers de adaptador de aprobaciónHelpers ligeros de carga de adaptador de aprobación nativa para puntos de entrada de canal activos
plugin-sdk/approval-handler-runtimeHelpers de gestor de aprobaciónHelpers de runtime de gestor de aprobación más amplios; prefiere las superficies más acotadas de adaptador/Gateway cuando sean suficientes
plugin-sdk/approval-native-runtimeHelpers de destino de aprobaciónHelpers nativos de enlace de destino/cuenta de aprobación
plugin-sdk/approval-reply-runtimeHelpers de respuesta de aprobaciónHelpers de payload de respuesta de aprobación de exec/plugin
plugin-sdk/channel-runtime-contextHelpers de contexto de runtime de canalHelpers genéricos de registrar/obtener/observar contexto de runtime de canal
plugin-sdk/security-runtimeHelpers de seguridadHelpers compartidos de confianza, control de DM, archivo/ruta acotados a la raíz, contenido externo y recopilación de secretos
plugin-sdk/ssrf-policyHelpers de política SSRFHelpers de lista de hosts permitidos y política de red privada
plugin-sdk/ssrf-runtimeHelpers de runtime SSRFDispatcher fijado, fetch protegido, helpers de política SSRF
plugin-sdk/system-event-runtimeHelpers de eventos del sistemaenqueueSystemEvent, peekSystemEventEntries
plugin-sdk/heartbeat-runtimeHelpers de HeartbeatHelpers de activación, evento y visibilidad de Heartbeat
plugin-sdk/delivery-queue-runtimeHelpers de cola de entregadrainPendingDeliveries
plugin-sdk/channel-activity-runtimeHelpers de actividad de canalrecordChannelActivity
plugin-sdk/dedupe-runtimeHelpers de deduplicaciónCachés de deduplicación en memoria
plugin-sdk/file-access-runtimeHelpers de acceso a archivosHelpers seguros de rutas de archivos/medios locales
plugin-sdk/transport-ready-runtimeHelpers de disponibilidad de transportewaitForTransportReady
plugin-sdk/collection-runtimeHelpers de caché acotadapruneMapToMaxSize
plugin-sdk/diagnostic-runtimeHelpers de control de diagnósticosisDiagnosticFlagEnabled, isDiagnosticsEnabled
plugin-sdk/error-runtimeHelpers de formato de erroresformatUncaughtError, isApprovalNotFoundError, helpers de grafo de errores
plugin-sdk/fetch-runtimeHelpers de fetch/proxy envueltosresolveFetch, helpers de proxy, helpers de opciones de EnvHttpProxyAgent
plugin-sdk/host-runtimeHelpers de normalización de hostnormalizeHostname, normalizeScpRemoteHost
plugin-sdk/retry-runtimeHelpers de reintentoRetryConfig, retryAsync, ejecutores de políticas
plugin-sdk/allow-fromFormato de lista de permitidosformatAllowFromLowercase
plugin-sdk/allowlist-resolutionMapeo de entrada de lista de permitidosmapAllowlistResolutionInputs
plugin-sdk/command-authControl de comandos y helpers de superficie de comandosresolveControlCommandGate, helpers de autorización de remitente, helpers de registro de comandos incluido el formato de menú de argumentos dinámicos
plugin-sdk/command-statusRenderizadores de estado/ayuda de comandosbuildCommandsMessage, buildCommandsMessagePaginated, buildHelpMessage
plugin-sdk/secret-inputAnálisis de entrada secretaHelpers de entrada secreta
plugin-sdk/webhook-ingressHelpers de solicitud de WebhookUtilidades de destino de Webhook
plugin-sdk/webhook-request-guardsHelpers de protección de cuerpo de WebhookHelpers de lectura/límite de cuerpo de solicitud
plugin-sdk/reply-runtimeRuntime compartido de respuestaDespacho entrante, Heartbeat, planificador de respuestas, fragmentación
plugin-sdk/reply-dispatch-runtimeHelpers acotados de despacho de respuestasHelpers de finalización, despacho de proveedor y etiqueta de conversación
plugin-sdk/reply-historyHelpers de historial de respuestasbuildHistoryContext, buildPendingHistoryContextFromMap, recordPendingHistoryEntry, clearHistoryEntriesIfEnabled
plugin-sdk/reply-referencePlanificación de referencia de respuestacreateReplyReferencePlanner
plugin-sdk/reply-chunkingHelpers de fragmentos de respuestaHelpers de fragmentación de texto/markdown
plugin-sdk/session-store-runtimeHelpers de almacén de sesiónHelpers de ruta de almacén y fecha de actualización
plugin-sdk/state-pathsHelpers de rutas de estadoHelpers de estado y directorio OAuth
plugin-sdk/routingHelpers de enrutamiento/clave de sesiónresolveAgentRoute, buildAgentSessionKey, resolveDefaultAgentBoundAccountId, helpers de normalización de clave de sesión
plugin-sdk/status-helpersHelpers de estado de canalConstructores de resumen de estado de canal/cuenta, valores predeterminados de estado de runtime, helpers de metadatos de incidencia
plugin-sdk/target-resolver-runtimeHelpers de resolvedor de destinosHelpers compartidos de resolvedor de destinos
plugin-sdk/string-normalization-runtimeHelpers de normalización de cadenasHelpers de normalización de slug/cadena
plugin-sdk/request-urlHelpers de URL de solicitudExtraer URL de cadena desde entradas similares a solicitudes
plugin-sdk/run-commandHelpers de comandos temporizadosEjecutor de comandos temporizados con stdout/stderr normalizados
plugin-sdk/param-readersLectores de parámetrosLectores comunes de parámetros de herramientas/CLI
plugin-sdk/tool-payloadExtracción de payload de herramientaExtrae payloads normalizados de objetos de resultado de herramienta
plugin-sdk/tool-sendExtracción de envío de herramientaExtrae los campos canónicos de destino de envío desde argumentos de herramienta
plugin-sdk/temp-pathAyudantes de rutas temporalesAyudantes compartidos de rutas de descarga temporal
plugin-sdk/logging-coreAyudantes de registroAyudantes de registrador de subsistema y redacción
plugin-sdk/markdown-table-runtimeAyudantes de tablas MarkdownAyudantes de modo de tabla Markdown
plugin-sdk/reply-payloadTipos de respuesta de mensajeTipos de payload de respuesta
plugin-sdk/provider-setupAyudantes seleccionados para configurar proveedores locales/autoalojadosAyudantes de descubrimiento/configuración de proveedores autoalojados
plugin-sdk/self-hosted-provider-setupAyudantes enfocados para configurar proveedores autoalojados compatibles con OpenAILos mismos ayudantes de descubrimiento/configuración de proveedores autoalojados
plugin-sdk/provider-auth-runtimeAyudantes de autenticación en runtime de proveedoresAyudantes de resolución de claves de API en runtime
plugin-sdk/provider-auth-api-keyAyudantes de configuración de claves de API de proveedoresAyudantes de incorporación/escritura de perfiles con claves de API
plugin-sdk/provider-auth-resultAyudantes de resultado de autenticación de proveedoresConstructor estándar de resultado de autenticación OAuth
plugin-sdk/provider-selection-runtimeAyudantes de selección de proveedoresSelección de proveedor configurado o automático y combinación de configuración sin procesar de proveedor
plugin-sdk/provider-env-varsAyudantes de variables de entorno de proveedoresAyudantes de búsqueda de variables de entorno de autenticación de proveedores
plugin-sdk/provider-model-sharedAyudantes compartidos de modelos/reproducción de proveedoresProviderReplayFamily, buildProviderReplayFamilyHooks, normalizeModelCompat, constructores compartidos de políticas de reproducción, ayudantes de endpoints de proveedor y ayudantes de normalización de ID de modelo
plugin-sdk/provider-catalog-sharedAyudantes compartidos de catálogo de proveedoresfindCatalogTemplate, buildSingleProviderApiKeyCatalog, buildManifestModelProviderConfig, supportsNativeStreamingUsageCompat, applyProviderNativeStreamingUsageCompat
plugin-sdk/provider-onboardParches de incorporación de proveedoresAyudantes de configuración de incorporación
plugin-sdk/provider-httpAyudantes HTTP de proveedoresAyudantes genéricos de capacidades HTTP/endpoint de proveedores, incluidos los ayudantes de formulario multiparte para transcripción de audio
plugin-sdk/provider-web-fetchAyudantes de web-fetch de proveedoresAyudantes de registro/caché de proveedores de web-fetch
plugin-sdk/provider-web-search-config-contractAyudantes de configuración de búsqueda web de proveedoresAyudantes específicos de configuración/credenciales de búsqueda web para proveedores que no necesitan cableado de activación de plugin
plugin-sdk/provider-web-search-contractAyudantes de contrato de búsqueda web de proveedoresAyudantes específicos de contrato de configuración/credenciales de búsqueda web, como createWebSearchProviderContractFields, enablePluginInConfig, resolveProviderWebSearchPluginConfig, y setters/getters de credenciales con ámbito
plugin-sdk/provider-web-searchAyudantes de búsqueda web de proveedoresAyudantes de registro/caché/runtime de proveedores de búsqueda web
plugin-sdk/provider-toolsAyudantes de compatibilidad de herramientas/esquemas de proveedoresProviderToolCompatFamily, buildProviderToolCompatFamilyHooks, y limpieza de esquemas de Gemini + diagnósticos
plugin-sdk/provider-usageAyudantes de uso de proveedoresfetchClaudeUsage, fetchGeminiUsage, fetchGithubCopilotUsage, y otros ayudantes de uso de proveedores
plugin-sdk/provider-streamAyudantes de envoltorios de flujo de proveedoresProviderStreamFamily, buildProviderStreamFamilyHooks, composeProviderStreamWrappers, tipos de envoltorios de flujo y ayudantes compartidos de envoltorios para Anthropic/Bedrock/DeepSeek V4/Google/Kilocode/Moonshot/OpenAI/OpenRouter/Z.A.I/MiniMax/Copilot
plugin-sdk/provider-transport-runtimeAyudantes de transporte de proveedoresAyudantes de transporte nativo de proveedores, como fetch protegido, transformaciones de mensajes de transporte y flujos de eventos de transporte escribibles
plugin-sdk/keyed-async-queueCola asíncrona ordenadaKeyedAsyncQueue
plugin-sdk/media-runtimeAyudantes multimedia compartidosAyudantes de obtención/transformación/almacenamiento de medios, sondeo de dimensiones de video basado en ffprobe y constructores de payloads multimedia
plugin-sdk/media-generation-runtimeAyudantes compartidos de generación multimediaAyudantes compartidos de conmutación por error, selección de candidatos y mensajes de modelo faltante para generación de imágenes/video/música
plugin-sdk/media-understandingAyudantes de comprensión multimediaTipos de proveedores de comprensión multimedia y exportaciones de ayudantes de imagen/audio orientadas a proveedores
plugin-sdk/text-runtimeExportación amplia obsoleta de compatibilidad de textoUsa string-coerce-runtime, text-chunking, text-utility-runtime y logging-core
plugin-sdk/text-chunkingAyudantes de fragmentación de textoAyudante de fragmentación de texto saliente
plugin-sdk/speechAyudantes de vozTipos de proveedores de voz más ayudantes de directivas, registro y validación orientados a proveedores, y constructor TTS compatible con OpenAI
plugin-sdk/speech-coreNúcleo de voz compartidoTipos de proveedores de voz, registro, directivas, normalización
plugin-sdk/realtime-transcriptionAyudantes de transcripción en tiempo realTipos de proveedores, ayudantes de registro y ayudante compartido de sesión WebSocket
plugin-sdk/realtime-voiceAyudantes de voz en tiempo realTipos de proveedores, ayudantes de registro/resolución, ayudantes de sesión de puente, colas compartidas de respuesta de agente, estado de transcripción/eventos, supresión de eco y ayudantes rápidos de consulta de contexto
plugin-sdk/image-generationAyudantes de generación de imágenesTipos de proveedores de generación de imágenes más ayudantes de URL de datos/recursos de imagen y el constructor de proveedor de imágenes compatible con OpenAI
plugin-sdk/image-generation-coreNúcleo compartido de generación de imágenesTipos de generación de imágenes, conmutación por error, autenticación y ayudantes de registro
plugin-sdk/music-generationAyudantes de generación de músicaTipos de proveedor/solicitud/resultado de generación de música
plugin-sdk/music-generation-coreNúcleo compartido de generación de músicaTipos de generación de música, ayudantes de conmutación por error, búsqueda de proveedores y análisis de referencias de modelo
plugin-sdk/video-generationAyudantes de generación de videoTipos de proveedor/solicitud/resultado de generación de video
plugin-sdk/video-generation-coreNúcleo compartido de generación de videoTipos de generación de video, ayudantes de conmutación por error, búsqueda de proveedores y análisis de referencias de modelo
plugin-sdk/interactive-runtimeAyudantes de respuesta interactivaNormalización/reducción de payloads de respuesta interactiva
plugin-sdk/channel-config-primitivesPrimitivas de configuración de canalesPrimitivas específicas de esquema de configuración de canales
plugin-sdk/channel-config-writesAyudantes de escritura de configuración de canalesAyudantes de autorización de escritura de configuración de canales
plugin-sdk/channel-plugin-commonPreludio compartido de canalesExportaciones compartidas de preludio de plugins de canal
plugin-sdk/channel-statusAyudantes de estado de canalesAyudantes compartidos de instantánea/resumen de estado de canales
plugin-sdk/allowlist-config-editAyudantes de configuración de lista de permitidosAyudantes de edición/lectura de configuración de lista de permitidos
plugin-sdk/group-accessAyudantes de acceso grupalAyudantes compartidos de decisión de acceso grupal
plugin-sdk/direct-dmAyudantes de DM directoAyudantes compartidos de autenticación/protección de DM directo
plugin-sdk/extension-sharedAyudantes compartidos de extensiónPrimitivas de ayudantes de canal pasivo/estado y proxy ambiental
plugin-sdk/webhook-targetsAyudantes de destino de WebhookAyudantes de registro de destinos de Webhook e instalación de rutas
plugin-sdk/webhook-pathAlias obsoleto de ruta de WebhookUsa plugin-sdk/webhook-ingress
plugin-sdk/web-mediaAyudantes compartidos de medios webAyudantes de carga de medios remotos/locales
plugin-sdk/zodReexportación obsoleta de compatibilidad con ZodImporta zod desde zod directamente
plugin-sdk/memory-coreAyudantes memory-core incluidosSuperficie de ayudantes de administrador/configuración/archivo/CLI de memoria
plugin-sdk/memory-core-engine-runtimeFachada de runtime del motor de memoriaFachada de runtime de índice/búsqueda de memoria
plugin-sdk/memory-core-host-engine-foundationMotor de base del host de memoriaExportaciones del motor de base del host de memoria
plugin-sdk/memory-core-host-engine-embeddingsMotor de embeddings del host de memoriaContratos de embeddings de memoria, acceso al registro, proveedor local y ayudantes genéricos de lote/remotos; los proveedores remotos concretos viven en sus plugins propietarios
plugin-sdk/memory-core-host-engine-qmdMotor QMD del host de memoriaExportaciones del motor QMD del host de memoria
plugin-sdk/memory-core-host-engine-storageMotor de almacenamiento del host de memoriaExportaciones del motor de almacenamiento del host de memoria
plugin-sdk/memory-core-host-multimodalAyudantes multimodales del host de memoriaAyudantes multimodales del host de memoria
plugin-sdk/memory-core-host-queryAyudantes de consulta del host de memoriaAyudantes de consulta del host de memoria
plugin-sdk/memory-core-host-secretAyudantes de secretos del host de memoriaAyudantes de secretos del host de memoria
plugin-sdk/memory-core-host-eventsAlias obsoleto de eventos de memoriaUsa plugin-sdk/memory-host-events
plugin-sdk/memory-core-host-statusAyudantes de estado del host de memoriaAyudantes de estado del host de memoria
plugin-sdk/memory-core-host-runtime-cliRuntime de CLI del host de memoriaAyudantes de runtime de CLI del host de memoria
plugin-sdk/memory-core-host-runtime-coreRuntime central del host de memoriaAyudantes de runtime central del host de memoria
plugin-sdk/memory-core-host-runtime-filesAyudantes de archivos/runtime del host de memoriaAyudantes de archivos/runtime del host de memoria
plugin-sdk/memory-host-coreAlias del runtime central del host de memoriaAlias independiente del proveedor para ayudantes de runtime central del host de memoria
plugin-sdk/memory-host-eventsAlias del diario de eventos del host de memoriaAlias independiente del proveedor para ayudantes del diario de eventos del host de memoria
plugin-sdk/memory-host-filesAlias obsoleto de archivos/runtime de memoriaUsa plugin-sdk/memory-core-host-runtime-files
plugin-sdk/memory-host-markdownAyudantes de Markdown administradoAyudantes compartidos de Markdown administrado para plugins adyacentes a memoria
plugin-sdk/memory-host-searchFachada de búsqueda de memoria activaFachada de runtime diferida del administrador de búsqueda de memoria activa
plugin-sdk/memory-host-statusAlias obsoleto de estado del host de memoriaUsa plugin-sdk/memory-core-host-status
plugin-sdk/testingUtilidades de pruebaBarrel de compatibilidad obsoleto local al repositorio; usa subrutas de prueba específicas locales al repositorio como plugin-sdk/plugin-test-runtime, plugin-sdk/channel-test-helpers, plugin-sdk/channel-target-testing, plugin-sdk/test-env y plugin-sdk/test-fixtures
Esta tabla es intencionalmente el subconjunto de migración común, no toda la superficie del SDK. El inventario del punto de entrada del compilador vive en scripts/lib/plugin-sdk-entrypoints.json; las exportaciones de paquetes se generan a partir del subconjunto público. Las uniones auxiliares reservadas de plugins incluidos se han retirado del mapa de exportaciones públicas del SDK, excepto por las fachadas de compatibilidad documentadas explícitamente, como el shim obsoleto plugin-sdk/discord conservado para el paquete publicado @openclaw/discord@2026.3.13. Los auxiliares específicos del propietario viven dentro del paquete del plugin propietario; el comportamiento compartido del host debe pasar por contratos genéricos del SDK como plugin-sdk/gateway-runtime, plugin-sdk/security-runtime y plugin-sdk/plugin-config-runtime. Usa la importación más específica que coincida con la tarea. Si no encuentras una exportación, revisa el código fuente en src/plugin-sdk/ o pregunta a los mantenedores qué contrato genérico debería poseerla.

Obsolescencias activas

Obsolescencias más específicas que se aplican en todo el SDK de plugins, el contrato del proveedor, la superficie de runtime y el manifiesto. Todas siguen funcionando hoy, pero se eliminarán en una versión mayor futura. La entrada debajo de cada elemento asigna la API anterior a su reemplazo canónico.
Anterior (openclaw/plugin-sdk/command-auth): buildCommandsMessage, buildCommandsMessagePaginated, buildHelpMessage.Nuevo (openclaw/plugin-sdk/command-status): mismas firmas, mismas exportaciones - solo importadas desde la subruta más específica. command-auth las reexporta como stubs de compatibilidad.
// Before
import { buildHelpMessage } from "openclaw/plugin-sdk/command-auth";

// After
import { buildHelpMessage } from "openclaw/plugin-sdk/command-status";
Anterior: resolveInboundMentionRequirement({ facts, policy }) y shouldDropInboundForMention(...) desde openclaw/plugin-sdk/channel-inbound u openclaw/plugin-sdk/channel-mention-gating.Nuevo: resolveInboundMentionDecision({ facts, policy }) - devuelve un único objeto de decisión en lugar de dos llamadas separadas.Los plugins de canal downstream (Slack, Discord, Matrix, MS Teams) ya han cambiado.
openclaw/plugin-sdk/channel-runtime es un shim de compatibilidad para plugins de canal antiguos. No lo importes desde código nuevo; usa openclaw/plugin-sdk/channel-runtime-context para registrar objetos de runtime.Los auxiliares channelActions* en openclaw/plugin-sdk/channel-actions están obsoletos junto con las exportaciones de canal “actions” sin procesar. Expón capacidades mediante la superficie semántica presentation en su lugar: los plugins de canal declaran qué renderizan (tarjetas, botones, selectores) en lugar de qué nombres de acción sin procesar aceptan.
Anterior: fábrica tool() desde openclaw/plugin-sdk/provider-web-search.Nuevo: implementa createTool(...) directamente en el plugin proveedor. OpenClaw ya no necesita el auxiliar del SDK para registrar el wrapper de la herramienta.
Anterior: formatInboundEnvelope(...) (y ChannelMessageForAgent.channelEnvelope) para crear un sobre de prompt plano en texto a partir de mensajes de canal entrantes.Nuevo: BodyForAgent más bloques estructurados de contexto de usuario. Los plugins de canal adjuntan metadatos de enrutamiento (hilo, tema, responder a, reacciones) como campos tipados en lugar de concatenarlos en una cadena de prompt. El auxiliar formatAgentEnvelope(...) sigue admitiéndose para sobres sintetizados orientados al asistente, pero los sobres entrantes en texto plano están en retirada.Áreas afectadas: inbound_claim, message_received y cualquier plugin de canal personalizado que posprocesara texto de channelEnvelope.
Cuatro alias de tipos de descubrimiento ahora son wrappers ligeros sobre los tipos de la era de catálogo:
Alias anteriorTipo nuevo
ProviderDiscoveryOrderProviderCatalogOrder
ProviderDiscoveryContextProviderCatalogContext
ProviderDiscoveryResultProviderCatalogResult
ProviderPluginDiscoveryProviderPluginCatalog
Además de la bolsa estática heredada ProviderCapabilities: los plugins proveedores deben usar hooks de proveedor explícitos como buildReplayPolicy, normalizeToolSchemas y wrapStreamFn en lugar de un objeto estático.
Anterior (tres hooks separados en ProviderThinkingPolicy): isBinaryThinking(ctx), supportsXHighThinking(ctx) y resolveDefaultThinkingLevel(ctx).Nuevo: un único resolveThinkingProfile(ctx) que devuelve un ProviderThinkingProfile con el id canónico, label opcional y lista de niveles clasificada. OpenClaw reduce automáticamente los valores almacenados obsoletos según el rango del perfil.Implementa un hook en lugar de tres. Los hooks heredados siguen funcionando durante la ventana de obsolescencia, pero no se componen con el resultado del perfil.
Anterior: implementar resolveExternalOAuthProfiles(...) sin declarar el proveedor en el manifiesto del plugin.Nuevo: declara contracts.externalAuthProviders en el manifiesto del plugin e implementa resolveExternalAuthProfiles(...). La ruta antigua de “auth fallback” emite una advertencia en runtime y se eliminará.
{
  "contracts": {
    "externalAuthProviders": ["anthropic", "openai"]
  }
}
Anterior campo de manifiesto: providerAuthEnvVars: { anthropic: ["ANTHROPIC_API_KEY"] }.Nuevo: refleja la misma búsqueda de variables de entorno en setup.providers[].envVars dentro del manifiesto. Esto consolida los metadatos de entorno de configuración/estado en un solo lugar y evita iniciar el runtime del plugin solo para responder búsquedas de variables de entorno.providerAuthEnvVars sigue admitiéndose mediante un adaptador de compatibilidad hasta que se cierre la ventana de obsolescencia.
Anterior: tres llamadas separadas: api.registerMemoryPromptSection(...), api.registerMemoryFlushPlan(...), api.registerMemoryRuntime(...).Nuevo: una llamada en la API de estado de memoria: registerMemoryCapability(pluginId, { promptBuilder, flushPlanResolver, runtime }).Mismos espacios, una sola llamada de registro. Los auxiliares de memoria aditivos (registerMemoryPromptSupplement, registerMemoryCorpusSupplement, registerMemoryEmbeddingProvider) no se ven afectados.
Dos alias de tipos heredados siguen exportándose desde src/plugins/runtime/types.ts:
AnteriorNuevo
SubagentReadSessionParamsSubagentGetSessionMessagesParams
SubagentReadSessionResultSubagentGetSessionMessagesResult
El método de runtime readSession está obsoleto a favor de getSessionMessages. Misma firma; el método anterior llama al nuevo.
Anterior: runtime.tasks.flow (singular) devolvía un accesor activo de flujo de tareas.Nuevo: runtime.tasks.managedFlows conserva el runtime de mutación de TaskFlow gestionado para plugins que crean, actualizan, cancelan o ejecutan tareas hijas desde un flujo. Usa runtime.tasks.flows cuando el plugin solo necesita lecturas basadas en DTO.
// Before
const flow = api.runtime.tasks.flow.fromToolContext(ctx);
// After
const flow = api.runtime.tasks.managedFlows.fromToolContext(ctx);
Cubierto arriba en “Cómo migrar → Migrar extensiones de resultados de herramienta de Pi a middleware”. Incluido aquí por completitud: la ruta eliminada exclusiva de Pi api.registerEmbeddedExtensionFactory(...) se reemplaza por api.registerAgentToolResultMiddleware(...) con una lista explícita de runtime en contracts.agentToolResultMiddleware.
OpenClawSchemaType reexportado desde openclaw/plugin-sdk ahora es un alias de una línea para OpenClawConfig. Prefiere el nombre canónico.
// Before
import type { OpenClawSchemaType } from "openclaw/plugin-sdk";
// After
import type { OpenClawConfig } from "openclaw/plugin-sdk/config-schema";
Las obsolescencias a nivel de extensión (dentro de plugins de canal/proveedor incluidos bajo extensions/) se rastrean dentro de sus propios barrels api.ts y runtime-api.ts. No afectan los contratos de plugins de terceros y no se enumeran aquí. Si consumes directamente el barrel local de un plugin incluido, lee los comentarios de obsolescencia en ese barrel antes de actualizar.

Cronograma de eliminación

CuándoQué ocurre
AhoraLas superficies obsoletas emiten advertencias en runtime
Próxima versión mayorLas superficies obsoletas se eliminarán; los plugins que sigan usándolas fallarán
Todos los plugins centrales ya se han migrado. Los plugins externos deben migrar antes de la próxima versión mayor.

Suprimir las advertencias temporalmente

Configura estas variables de entorno mientras trabajas en la migración:
OPENCLAW_SUPPRESS_PLUGIN_SDK_COMPAT_WARNING=1 openclaw gateway run
OPENCLAW_SUPPRESS_EXTENSION_API_WARNING=1 openclaw gateway run
Esta es una vía de escape temporal, no una solución permanente.

Relacionado