Pular para o conteúdo principal

Visão geral do SDK de plugins

O SDK de plugins é o contrato tipado entre plugins e o core. Esta página é a referência para o que importar e o que você pode registrar.
Está procurando um guia prático?

Convenção de importação

Sempre importe de um subcaminho específico:
import { definePluginEntry } from "openclaw/plugin-sdk/plugin-entry";
import { defineChannelPluginEntry } from "openclaw/plugin-sdk/channel-core";
Cada subcaminho é um módulo pequeno e autocontido. Isso mantém a inicialização rápida e evita problemas de dependência circular. Para helpers específicos de entrada/build de canal, prefira openclaw/plugin-sdk/channel-core; mantenha openclaw/plugin-sdk/core para a superfície guarda-chuva mais ampla e helpers compartilhados como buildChannelConfigSchema. Não adicione nem dependa de seams de conveniência nomeadas por provedor, como openclaw/plugin-sdk/slack, openclaw/plugin-sdk/discord, openclaw/plugin-sdk/signal, openclaw/plugin-sdk/whatsapp, ou seams de helper com marca de canal. Plugins empacotados devem compor subcaminhos genéricos do SDK dentro de seus próprios barrels api.ts ou runtime-api.ts, e o core deve usar esses barrels locais do plugin ou adicionar um contrato genérico e estreito do SDK quando a necessidade for realmente entre canais. O mapa de exportações gerado ainda contém um pequeno conjunto de seams de helper de plugins empacotados, como plugin-sdk/feishu, plugin-sdk/feishu-setup, plugin-sdk/zalo, plugin-sdk/zalo-setup e plugin-sdk/matrix*. Esses subcaminhos existem apenas para manutenção e compatibilidade de plugins empacotados; eles são omitidos intencionalmente da tabela comum abaixo e não são o caminho de importação recomendado para novos plugins de terceiros.

Referência de subcaminhos

Os subcaminhos mais usados, agrupados por finalidade. A lista completa gerada com mais de 200 subcaminhos fica em scripts/lib/plugin-sdk-entrypoints.json. Subcaminhos reservados de helper de plugins empacotados ainda aparecem nessa lista gerada. Trate-os como superfícies de detalhe de implementação/compatibilidade, a menos que uma página da documentação promova explicitamente algum deles como público.

Entrada de plugin

SubcaminhoExportações principais
plugin-sdk/plugin-entrydefinePluginEntry
plugin-sdk/coredefineChannelPluginEntry, createChatChannelPlugin, createChannelPluginBase, defineSetupPluginEntry, buildChannelConfigSchema
plugin-sdk/config-schemaOpenClawSchema
plugin-sdk/provider-entrydefineSingleProviderPluginEntry
SubcaminhoExportações principais
plugin-sdk/channel-coredefineChannelPluginEntry, defineSetupPluginEntry, createChatChannelPlugin, createChannelPluginBase
plugin-sdk/config-schemaExportação do schema Zod raiz de openclaw.json (OpenClawSchema)
plugin-sdk/channel-setupcreateOptionalChannelSetupSurface, createOptionalChannelSetupAdapter, createOptionalChannelSetupWizard, além de DEFAULT_ACCOUNT_ID, createTopLevelChannelDmPolicy, setSetupChannelEnabled, splitSetupEntries
plugin-sdk/setupHelpers compartilhados de assistente de configuração, prompts de allowlist, builders de status de configuração
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 configuração multi-account/action-gate e helpers de fallback de conta padrão
plugin-sdk/account-idDEFAULT_ACCOUNT_ID, helpers de normalização de account-id
plugin-sdk/account-resolutionHelpers de busca de conta + fallback padrão
plugin-sdk/account-helpersHelpers estreitos de lista de contas/ações de conta
plugin-sdk/channel-pairingcreateChannelPairingController
plugin-sdk/channel-reply-pipelinecreateChannelReplyPipeline
plugin-sdk/channel-config-helperscreateHybridChannelConfigAdapter
plugin-sdk/channel-config-schemaTipos de schema de configuração de canal
plugin-sdk/telegram-command-configHelpers de normalização/validação de comando personalizado do Telegram com fallback de contrato empacotado
plugin-sdk/channel-policyresolveChannelGroupRequireMention
plugin-sdk/channel-lifecyclecreateAccountStatusSink
plugin-sdk/inbound-envelopeHelpers compartilhados de rota de entrada + builder de envelope
plugin-sdk/inbound-reply-dispatchHelpers compartilhados de registro e dispatch de entrada
plugin-sdk/messaging-targetsHelpers de parsing/correspondência de alvo
plugin-sdk/outbound-mediaHelpers compartilhados de carregamento de mídia de saída
plugin-sdk/outbound-runtimeHelpers de identidade de saída/delegação de envio
plugin-sdk/thread-bindings-runtimeLifecycle de binding de thread e helpers de adapter
plugin-sdk/agent-media-payloadBuilder legado de payload de mídia do agente
plugin-sdk/conversation-runtimeHelpers de binding configurado, pairing e binding de conversa/thread
plugin-sdk/runtime-config-snapshotHelper de snapshot de configuração de runtime
plugin-sdk/runtime-group-policyHelpers de resolução de política de grupo em runtime
plugin-sdk/channel-statusHelpers compartilhados de snapshot/resumo de status de canal
plugin-sdk/channel-config-primitivesPrimitivos estreitos de schema de configuração de canal
plugin-sdk/channel-config-writesHelpers de autorização de escrita de configuração de canal
plugin-sdk/channel-plugin-commonExportações de prelude compartilhadas de plugin de canal
plugin-sdk/allowlist-config-editHelpers de leitura/edição de configuração de allowlist
plugin-sdk/group-accessHelpers compartilhados de decisão de acesso a grupo
plugin-sdk/direct-dmHelpers compartilhados de autenticação/proteção de DM direta
plugin-sdk/interactive-runtimeHelpers de normalização/redução de payload de resposta interativa
plugin-sdk/channel-inboundHelpers de debounce de entrada, correspondência de menção, política de menção e envelope
plugin-sdk/channel-send-resultTipos de resultado de resposta
plugin-sdk/channel-actionscreateMessageToolButtonsSchema, createMessageToolCardSchema
plugin-sdk/channel-targetsHelpers de parsing/correspondência de alvo
plugin-sdk/channel-contractTipos de contrato de canal
plugin-sdk/channel-feedbackWiring de feedback/reação
plugin-sdk/channel-secret-runtimeHelpers estreitos de contrato de segredo, como collectSimpleChannelFieldAssignments, getChannelSurface, pushAssignment, e tipos de destino de segredo
SubcaminhoExportações principais
plugin-sdk/provider-entrydefineSingleProviderPluginEntry
plugin-sdk/provider-setupHelpers selecionados de configuração de provedor local/self-hosted
plugin-sdk/self-hosted-provider-setupHelpers focados de configuração de provedor self-hosted compatível com OpenAI
plugin-sdk/cli-backendPadrões de backend de CLI + constantes de watchdog
plugin-sdk/provider-auth-runtimeHelpers de runtime para resolução de chave de API para plugins de provedor
plugin-sdk/provider-auth-api-keyHelpers de onboarding/escrita de perfil de chave de API, como upsertApiKeyProfile
plugin-sdk/provider-auth-resultBuilder padrão de resultado de autenticação OAuth
plugin-sdk/provider-auth-loginHelpers compartilhados de login interativo para plugins de provedor
plugin-sdk/provider-env-varsHelpers de busca de variáveis de ambiente para autenticação de provedor
plugin-sdk/provider-authcreateProviderApiKeyAuthMethod, ensureApiKeyFromOptionEnvOrPrompt, upsertAuthProfile, upsertApiKeyProfile, writeOAuthCredentials
plugin-sdk/provider-model-sharedProviderReplayFamily, buildProviderReplayFamilyHooks, normalizeModelCompat, builders compartilhados de política de replay, helpers de endpoint de provedor e helpers de normalização de model-id, como normalizeNativeXaiModelId
plugin-sdk/provider-catalog-sharedfindCatalogTemplate, buildSingleProviderApiKeyCatalog, supportsNativeStreamingUsageCompat, applyProviderNativeStreamingUsageCompat
plugin-sdk/provider-httpHelpers genéricos de capacidade HTTP/endpoint de provedor
plugin-sdk/provider-web-fetch-contractHelpers estreitos de contrato de configuração/seleção de web-fetch, como enablePluginInConfig e WebFetchProviderPlugin
plugin-sdk/provider-web-fetchHelpers de registro/cache de provedor web-fetch
plugin-sdk/provider-web-search-config-contractHelpers estreitos de configuração/credenciais de web-search para provedores que não precisam de wiring de ativação de plugin
plugin-sdk/provider-web-search-contractHelpers estreitos de contrato de configuração/credenciais de web-search, como createWebSearchProviderContractFields, enablePluginInConfig, resolveProviderWebSearchPluginConfig e setters/getters de credenciais com escopo
plugin-sdk/provider-web-searchHelpers de registro/cache/runtime de provedor web-search
plugin-sdk/provider-toolsProviderToolCompatFamily, buildProviderToolCompatFamilyHooks, limpeza + diagnósticos de schema Gemini e helpers de compatibilidade xAI, como resolveXaiModelCompatPatch / applyXaiModelCompat
plugin-sdk/provider-usagefetchClaudeUsage e similares
plugin-sdk/provider-streamProviderStreamFamily, buildProviderStreamFamilyHooks, composeProviderStreamWrappers, tipos de wrapper de stream e helpers compartilhados de wrapper Anthropic/Bedrock/Google/Kilocode/Moonshot/OpenAI/OpenRouter/Z.A.I/MiniMax/Copilot
plugin-sdk/provider-onboardHelpers de patch de configuração de onboarding
plugin-sdk/global-singletonHelpers de singleton/map/cache local ao processo
SubcaminhoExportações principais
plugin-sdk/command-authresolveControlCommandGate, helpers de registro de comandos, helpers de autorização do remetente
plugin-sdk/command-statusBuilders de mensagens de comando/ajuda, como buildCommandsMessagePaginated e buildHelpMessage
plugin-sdk/approval-auth-runtimeHelpers de resolução de aprovador e autenticação de ação no mesmo chat
plugin-sdk/approval-client-runtimeHelpers de perfil/filtro de aprovação de execução nativa
plugin-sdk/approval-delivery-runtimeAdapters de capacidade/entrega de aprovação nativa
plugin-sdk/approval-gateway-runtimeHelper compartilhado de resolução de gateway de aprovação
plugin-sdk/approval-handler-adapter-runtimeHelpers leves de carregamento de adapter de aprovação nativa para entrypoints quentes de canal
plugin-sdk/approval-handler-runtimeHelpers mais amplos de runtime para handler de aprovação; prefira os seams mais estreitos de adapter/gateway quando forem suficientes
plugin-sdk/approval-native-runtimeHelpers nativos de alvo de aprovação + binding de conta
plugin-sdk/approval-reply-runtimeHelpers de payload de resposta de aprovação de execução/plugin
plugin-sdk/command-auth-nativeHelpers nativos de autenticação de comando + helpers nativos de alvo de sessão
plugin-sdk/command-detectionHelpers compartilhados de detecção de comando
plugin-sdk/command-surfaceHelpers de normalização de corpo de comando e de superfície de comando
plugin-sdk/allow-fromformatAllowFromLowercase
plugin-sdk/channel-secret-runtimeHelpers estreitos de coleta de contrato de segredo para superfícies de segredo de canal/plugin
plugin-sdk/secret-ref-runtimeHelpers estreitos de coerceSecretRef e tipagem de SecretRef para parsing de contrato/configuração de segredo
plugin-sdk/security-runtimeHelpers compartilhados de confiança, bloqueio de DM, conteúdo externo e coleta de segredo
plugin-sdk/ssrf-policyHelpers de política SSRF para allowlist de host e rede privada
plugin-sdk/ssrf-runtimeHelpers de dispatcher fixado, fetch protegido por SSRF e política SSRF
plugin-sdk/secret-inputHelpers de parsing de entrada de segredo
plugin-sdk/webhook-ingressHelpers de requisição/alvo de webhook
plugin-sdk/webhook-request-guardsHelpers de tamanho do corpo da requisição/timeout
SubcaminhoExportações principais
plugin-sdk/runtimeHelpers amplos de runtime/logging/backup/instalação de plugin
plugin-sdk/runtime-envHelpers estreitos de env de runtime, logger, timeout, retry e backoff
plugin-sdk/channel-runtime-contextHelpers genéricos de registro e busca de contexto de runtime de canal
plugin-sdk/runtime-storecreatePluginRuntimeStore
plugin-sdk/plugin-runtimeHelpers compartilhados de comando/hook/http/interativo de plugin
plugin-sdk/hook-runtimeHelpers compartilhados de pipeline de webhook/hook interno
plugin-sdk/lazy-runtimeHelpers de importação/binding lazy de runtime, como createLazyRuntimeModule, createLazyRuntimeMethod e createLazyRuntimeSurface
plugin-sdk/process-runtimeHelpers de execução de processo
plugin-sdk/cli-runtimeHelpers de formatação, espera e versão da CLI
plugin-sdk/gateway-runtimeHelpers de cliente do Gateway e patch de status de canal
plugin-sdk/config-runtimeHelpers de carregamento/escrita de configuração
plugin-sdk/telegram-command-configNormalização de nome/descrição de comando do Telegram e verificações de duplicidade/conflito, mesmo quando a superfície de contrato empacotada do Telegram não está disponível
plugin-sdk/approval-runtimeHelpers de aprovação de execução/plugin, builders de capacidade de aprovação, helpers de autenticação/perfil, helpers nativos de roteamento/runtime
plugin-sdk/reply-runtimeHelpers compartilhados de runtime de entrada/resposta, chunking, dispatch, heartbeat, planejador de resposta
plugin-sdk/reply-dispatch-runtimeHelpers estreitos de dispatch/finalização de resposta
plugin-sdk/reply-historyHelpers compartilhados de histórico de resposta em janela curta, como buildHistoryContext, recordPendingHistoryEntry e clearHistoryEntriesIfEnabled
plugin-sdk/reply-referencecreateReplyReferencePlanner
plugin-sdk/reply-chunkingHelpers estreitos de chunking de texto/Markdown
plugin-sdk/session-store-runtimeHelpers de caminho do armazenamento de sessão + updated-at
plugin-sdk/state-pathsHelpers de caminho de diretório de estado/OAuth
plugin-sdk/routingHelpers de binding de rota/chave de sessão/conta, como resolveAgentRoute, buildAgentSessionKey e resolveDefaultAgentBoundAccountId
plugin-sdk/status-helpersHelpers compartilhados de resumo de status de canal/conta, padrões de estado de runtime e helpers de metadados de problema
plugin-sdk/target-resolver-runtimeHelpers compartilhados de resolvedor de alvo
plugin-sdk/string-normalization-runtimeHelpers de normalização de slug/string
plugin-sdk/request-urlExtrai URLs string de entradas do tipo fetch/request
plugin-sdk/run-commandExecutor de comando com tempo controlado e resultados normalizados de stdout/stderr
plugin-sdk/param-readersLeitores comuns de parâmetros de ferramenta/CLI
plugin-sdk/tool-payloadExtrai payloads normalizados de objetos de resultado de ferramenta
plugin-sdk/tool-sendExtrai campos canônicos de alvo de envio de argumentos de ferramenta
plugin-sdk/temp-pathHelpers compartilhados de caminho temporário para download
plugin-sdk/logging-coreHelpers de logger de subsistema e de redação
plugin-sdk/markdown-table-runtimeHelpers de modo de tabela Markdown
plugin-sdk/json-storePequenos helpers de leitura/escrita de estado JSON
plugin-sdk/file-lockHelpers de file-lock reentrante
plugin-sdk/persistent-dedupeHelpers de cache de deduplicação persistente em disco
plugin-sdk/acp-runtimeHelpers de runtime/sessão ACP e dispatch de resposta
plugin-sdk/agent-config-primitivesPrimitivos estreitos de schema de configuração de runtime de agente
plugin-sdk/boolean-paramLeitor flexível de parâmetro booleano
plugin-sdk/dangerous-name-runtimeHelpers de resolução de correspondência de nome perigoso
plugin-sdk/device-bootstrapHelpers de bootstrap de dispositivo e token de pairing
plugin-sdk/extension-sharedPrimitivos auxiliares compartilhados de canal passivo, status e proxy ambiente
plugin-sdk/models-provider-runtimeHelpers de resposta de provedor/comando /models
plugin-sdk/skill-commands-runtimeHelpers de listagem de comandos de Skills
plugin-sdk/native-command-registryHelpers de registro/build/serialização de comando nativo
plugin-sdk/agent-harnessSuperfície experimental de plugin confiável para harnesses de agente de baixo nível: tipos de harness, helpers de condução/aborto de execução ativa, bridge de ferramentas do OpenClaw e utilitários de resultado de tentativa
plugin-sdk/provider-zai-endpointHelpers de detecção de endpoint Z.A.I
plugin-sdk/infra-runtimeHelpers de evento do sistema/heartbeat
plugin-sdk/collection-runtimePequenos helpers de cache limitado
plugin-sdk/diagnostic-runtimeHelpers de flag e evento de diagnóstico
plugin-sdk/error-runtimeGrafo de erros, formatação, helpers compartilhados de classificação de erros, isApprovalNotFoundError
plugin-sdk/fetch-runtimeHelpers de fetch encapsulado, proxy e busca fixada
plugin-sdk/host-runtimeHelpers de normalização de hostname e host SCP
plugin-sdk/retry-runtimeHelpers de configuração e executor de retry
plugin-sdk/agent-runtimeHelpers de diretório/identidade/workspace de agente
plugin-sdk/directory-runtimeConsulta/deduplicação de diretório com base em configuração
plugin-sdk/keyed-async-queueKeyedAsyncQueue
SubcaminhoExportações principais
plugin-sdk/media-runtimeHelpers compartilhados de busca/transformação/armazenamento de mídia, além de builders de payload de mídia
plugin-sdk/media-generation-runtimeHelpers compartilhados de failover de geração de mídia, seleção de candidatos e mensagens de modelo ausente
plugin-sdk/media-understandingTipos de provedor de interpretação de mídia, além de exportações de helpers de imagem/áudio voltadas a provedores
plugin-sdk/text-runtimeHelpers compartilhados de texto/Markdown/logging, como remoção de texto visível ao assistente, helpers de renderização/chunking/tabela em Markdown, helpers de redação, helpers de tag de diretiva e utilitários de texto seguro
plugin-sdk/text-chunkingHelper de chunking de texto de saída
plugin-sdk/speechTipos de provedor de fala, além de helpers voltados a provedores para diretiva, registro e validação
plugin-sdk/speech-coreTipos compartilhados de provedor de fala, helpers de registro, diretiva e normalização
plugin-sdk/realtime-transcriptionTipos de provedor de transcrição em tempo real e helpers de registro
plugin-sdk/realtime-voiceTipos de provedor de voz em tempo real e helpers de registro
plugin-sdk/image-generationTipos de provedor de geração de imagem
plugin-sdk/image-generation-coreTipos compartilhados de geração de imagem, helpers de failover, autenticação e registro
plugin-sdk/music-generationTipos de provedor/requisição/resultado de geração de música
plugin-sdk/music-generation-coreTipos compartilhados de geração de música, helpers de failover, busca de provedor e parsing de model-ref
plugin-sdk/video-generationTipos de provedor/requisição/resultado de geração de vídeo
plugin-sdk/video-generation-coreTipos compartilhados de geração de vídeo, helpers de failover, busca de provedor e parsing de model-ref
plugin-sdk/webhook-targetsRegistro de alvos de webhook e helpers de instalação de rota
plugin-sdk/webhook-pathHelpers de normalização de caminho de webhook
plugin-sdk/web-mediaHelpers compartilhados de carregamento de mídia remota/local
plugin-sdk/zodzod reexportado para consumidores do SDK de plugins
plugin-sdk/testinginstallCommonResolveTargetErrorCases, shouldAckReaction
SubcaminhoExportações principais
plugin-sdk/memory-coreSuperfície auxiliar empacotada de memory-core para helpers de manager/configuração/arquivo/CLI
plugin-sdk/memory-core-engine-runtimeFachada de runtime de índice/busca de memória
plugin-sdk/memory-core-host-engine-foundationExportações do motor de fundação do host de memória
plugin-sdk/memory-core-host-engine-embeddingsExportações do motor de embeddings do host de memória
plugin-sdk/memory-core-host-engine-qmdExportações do motor QMD do host de memória
plugin-sdk/memory-core-host-engine-storageExportações do motor de armazenamento do host de memória
plugin-sdk/memory-core-host-multimodalHelpers multimodais do host de memória
plugin-sdk/memory-core-host-queryHelpers de consulta do host de memória
plugin-sdk/memory-core-host-secretHelpers de segredo do host de memória
plugin-sdk/memory-core-host-eventsHelpers de journal de eventos do host de memória
plugin-sdk/memory-core-host-statusHelpers de status do host de memória
plugin-sdk/memory-core-host-runtime-cliHelpers de runtime de CLI do host de memória
plugin-sdk/memory-core-host-runtime-coreHelpers de runtime core do host de memória
plugin-sdk/memory-core-host-runtime-filesHelpers de arquivo/runtime do host de memória
plugin-sdk/memory-host-coreAlias neutro em relação ao fornecedor para helpers de runtime core do host de memória
plugin-sdk/memory-host-eventsAlias neutro em relação ao fornecedor para helpers de journal de eventos do host de memória
plugin-sdk/memory-host-filesAlias neutro em relação ao fornecedor para helpers de arquivo/runtime do host de memória
plugin-sdk/memory-host-markdownHelpers compartilhados de Markdown gerenciado para plugins adjacentes à memória
plugin-sdk/memory-host-searchFachada de runtime de memória ativa para acesso ao search-manager
plugin-sdk/memory-host-statusAlias neutro em relação ao fornecedor para helpers de status do host de memória
plugin-sdk/memory-lancedbSuperfície auxiliar empacotada de memory-lancedb
FamíliaSubcaminhos atuaisUso pretendido
Browserplugin-sdk/browser-cdp, plugin-sdk/browser-config-runtime, plugin-sdk/browser-config-support, plugin-sdk/browser-control-auth, plugin-sdk/browser-node-runtime, plugin-sdk/browser-profiles, plugin-sdk/browser-security-runtime, plugin-sdk/browser-setup-tools, plugin-sdk/browser-supportHelpers de suporte do plugin Browser empacotado (browser-support continua sendo o barrel de compatibilidade)
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-bindingsSuperfície de helper/runtime do Matrix empacotado
Lineplugin-sdk/line, plugin-sdk/line-core, plugin-sdk/line-runtime, plugin-sdk/line-surfaceSuperfície de helper/runtime do LINE empacotado
IRCplugin-sdk/irc, plugin-sdk/irc-surfaceSuperfície de helper do IRC empacotado
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/twitchSeams de compatibilidade/helper de canais empacotados
Helpers específicos de autenticação/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-callSeams de helper de recurso/plugin empacotado; plugin-sdk/github-copilot-token atualmente exporta DEFAULT_COPILOT_API_BASE_URL, deriveCopilotApiBaseUrlFromToken e resolveCopilotApiToken

API de registro

O callback register(api) recebe um objeto OpenClawPluginApi com estes métodos:

Registro de capacidade

MétodoO que ele registra
api.registerProvider(...)Inferência de texto (LLM)
api.registerAgentHarness(...)Executor experimental de agente de baixo nível
api.registerCliBackend(...)Backend local de inferência por CLI
api.registerChannel(...)Canal de mensagens
api.registerSpeechProvider(...)Síntese de texto para fala / STT
api.registerRealtimeTranscriptionProvider(...)Transcrição em tempo real por streaming
api.registerRealtimeVoiceProvider(...)Sessões duplex de voz em tempo real
api.registerMediaUnderstandingProvider(...)Análise de imagem/áudio/vídeo
api.registerImageGenerationProvider(...)Geração de imagem
api.registerMusicGenerationProvider(...)Geração de música
api.registerVideoGenerationProvider(...)Geração de vídeo
api.registerWebFetchProvider(...)Provedor de busca/coleta da web
api.registerWebSearchProvider(...)Busca na web

Ferramentas e comandos

MétodoO que ele registra
api.registerTool(tool, opts?)Ferramenta do agente (obrigatória ou { optional: true })
api.registerCommand(def)Comando personalizado (ignora o LLM)

Infraestrutura

MétodoO que ele registra
api.registerHook(events, handler, opts?)Hook de evento
api.registerHttpRoute(params)Endpoint HTTP do Gateway
api.registerGatewayMethod(name, handler)Método RPC do Gateway
api.registerCli(registrar, opts?)Subcomando da CLI
api.registerService(service)Serviço em segundo plano
api.registerInteractiveHandler(registration)Handler interativo
api.registerMemoryPromptSupplement(builder)Seção de prompt aditiva adjacente à memória
api.registerMemoryCorpusSupplement(adapter)Corpus aditivo de busca/leitura de memória
Namespaces administrativos reservados do core (config.*, exec.approvals.*, wizard.*, update.*) sempre permanecem operator.admin, mesmo que um plugin tente atribuir um escopo de método de gateway mais restrito. Prefira prefixos específicos do plugin para métodos pertencentes ao plugin.

Metadados de registro da CLI

api.registerCli(registrar, opts?) aceita dois tipos de metadados de nível superior:
  • commands: raízes explícitas de comando pertencentes ao registrador
  • descriptors: descritores de comando em tempo de parsing usados para ajuda da CLI raiz, roteamento e registro lazy da CLI do plugin
Se você quiser que um comando do plugin permaneça com carregamento lazy no caminho normal da CLI raiz, forneça descriptors que cubram toda raiz de comando de nível superior exposta por esse registrador.
api.registerCli(
  async ({ program }) => {
    const { registerMatrixCli } = await import("./src/cli.js");
    registerMatrixCli({ program });
  },
  {
    descriptors: [
      {
        name: "matrix",
        description: "Gerencie contas, verificação, dispositivos e estado de perfil do Matrix",
        hasSubcommands: true,
      },
    ],
  },
);
Use commands sozinho apenas quando você não precisar de registro lazy na CLI raiz. Esse caminho de compatibilidade eager continua compatível, mas não instala placeholders com suporte a descritor para carregamento lazy em tempo de parsing.

Registro de backend da CLI

api.registerCliBackend(...) permite que um plugin seja responsável pela configuração padrão de um backend local de CLI de IA, como codex-cli.
  • O id do backend se torna o prefixo do provedor em refs de modelo como codex-cli/gpt-5.
  • O config do backend usa o mesmo formato de agents.defaults.cliBackends.<id>.
  • A configuração do usuário ainda prevalece. O OpenClaw mescla agents.defaults.cliBackends.<id> sobre o padrão do plugin antes de executar a CLI.
  • Use normalizeConfig quando um backend precisar de regravações de compatibilidade após a mesclagem (por exemplo, normalizar formatos antigos de flag).

Slots exclusivos

MétodoO que ele registra
api.registerContextEngine(id, factory)Motor de contexto (apenas um ativo por vez). O callback assemble() recebe availableTools e citationsMode para que o motor possa adaptar adições ao prompt.
api.registerMemoryCapability(capability)Capacidade unificada de memória
api.registerMemoryPromptSection(builder)Builder de seção de prompt de memória
api.registerMemoryFlushPlan(resolver)Resolver de plano de flush de memória
api.registerMemoryRuntime(runtime)Adapter de runtime de memória

Adapters de embeddings de memória

MétodoO que ele registra
api.registerMemoryEmbeddingProvider(adapter)Adapter de embeddings de memória para o plugin ativo
  • registerMemoryCapability é a API preferida de plugin de memória exclusiva.
  • registerMemoryCapability também pode expor publicArtifacts.listArtifacts(...) para que plugins complementares consumam artefatos de memória exportados por meio de openclaw/plugin-sdk/memory-host-core em vez de acessar o layout privado de um plugin de memória específico.
  • registerMemoryPromptSection, registerMemoryFlushPlan e registerMemoryRuntime são APIs exclusivas de plugin de memória compatíveis com o legado.
  • registerMemoryEmbeddingProvider permite que o plugin de memória ativo registre um ou mais ids de adapter de embeddings (por exemplo openai, gemini ou um id personalizado definido pelo plugin).
  • A configuração do usuário, como agents.defaults.memorySearch.provider e agents.defaults.memorySearch.fallback, é resolvida em relação a esses ids de adapter registrados.

Eventos e ciclo de vida

MétodoO que ele faz
api.on(hookName, handler, opts?)Hook tipado de ciclo de vida
api.onConversationBindingResolved(handler)Callback de binding de conversa

Semântica de decisão de hooks

  • before_tool_call: retornar { block: true } é terminal. Assim que algum handler definir isso, handlers de prioridade mais baixa são ignorados.
  • before_tool_call: retornar { block: false } é tratado como nenhuma decisão (o mesmo que omitir block), não como uma substituição.
  • before_install: retornar { block: true } é terminal. Assim que algum handler definir isso, handlers de prioridade mais baixa são ignorados.
  • before_install: retornar { block: false } é tratado como nenhuma decisão (o mesmo que omitir block), não como uma substituição.
  • reply_dispatch: retornar { handled: true, ... } é terminal. Assim que algum handler assumir o dispatch, handlers de prioridade mais baixa e o caminho padrão de dispatch do modelo são ignorados.
  • message_sending: retornar { cancel: true } é terminal. Assim que algum handler definir isso, handlers de prioridade mais baixa são ignorados.
  • message_sending: retornar { cancel: false } é tratado como nenhuma decisão (o mesmo que omitir cancel), não como uma substituição.

Campos do objeto API

CampoTipoDescrição
api.idstringId do plugin
api.namestringNome de exibição
api.versionstring?Versão do plugin (opcional)
api.descriptionstring?Descrição do plugin (opcional)
api.sourcestringCaminho de origem do plugin
api.rootDirstring?Diretório raiz do plugin (opcional)
api.configOpenClawConfigSnapshot de configuração atual (snapshot de runtime ativo em memória quando disponível)
api.pluginConfigRecord<string, unknown>Configuração específica do plugin em plugins.entries.<id>.config
api.runtimePluginRuntimeHelpers de runtime
api.loggerPluginLoggerLogger com escopo (debug, info, warn, error)
api.registrationModePluginRegistrationModeModo de carregamento atual; "setup-runtime" é a janela leve de inicialização/configuração antes da entrada completa
api.resolvePath(input)(string) => stringResolve caminho relativo à raiz do plugin

Convenção de módulo interno

Dentro do seu plugin, use arquivos barrel locais para importações internas:
my-plugin/
  api.ts            # Exportações públicas para consumidores externos
  runtime-api.ts    # Exportações internas apenas de runtime
  index.ts          # Ponto de entrada do plugin
  setup-entry.ts    # Entrada leve apenas para configuração (opcional)
Nunca importe seu próprio plugin por openclaw/plugin-sdk/<your-plugin> a partir de código de produção. Encaminhe importações internas por ./api.ts ou ./runtime-api.ts. O caminho do SDK é apenas o contrato externo.
Superfícies públicas de plugins empacotados carregadas por fachada (api.ts, runtime-api.ts, index.ts, setup-entry.ts e arquivos de entrada pública semelhantes) agora preferem o snapshot ativo de configuração de runtime quando o OpenClaw já está em execução. Se ainda não existir snapshot de runtime, elas recorrem ao arquivo de configuração resolvido em disco. Plugins de provedor também podem expor um barrel de contrato local e estreito ao plugin quando um helper for intencionalmente específico do provedor e ainda não pertencer a um subcaminho genérico do SDK. Exemplo empacotado atual: o provedor Anthropic mantém seus helpers de stream Claude em seu próprio seam público api.ts / contract-api.ts em vez de promover lógica de cabeçalho beta da Anthropic e service_tier para um contrato genérico plugin-sdk/*. Outros exemplos empacotados atuais:
  • @openclaw/openai-provider: api.ts exporta builders de provedor, helpers de modelo padrão e builders de provedor realtime
  • @openclaw/openrouter-provider: api.ts exporta o builder de provedor mais helpers de onboarding/configuração
O código de produção de extensões também deve evitar importações de openclaw/plugin-sdk/<other-plugin>. Se um helper for realmente compartilhado, promova-o para um subcaminho neutro do SDK, como openclaw/plugin-sdk/speech, .../provider-model-shared ou outra superfície orientada por capacidade, em vez de acoplar dois plugins.

Relacionado