Pular para o conteúdo principal

Migração do Plugin SDK

O OpenClaw passou de uma ampla camada de compatibilidade retroativa para uma arquitetura moderna de plugins com imports focados e documentados. Se o seu plugin foi criado antes da nova arquitetura, este guia ajuda você a migrar.

O que está mudando

O sistema antigo de plugins fornecia duas superfícies muito abertas que permitiam que plugins importassem qualquer coisa de que precisassem a partir de um único ponto de entrada:
  • openclaw/plugin-sdk/compat — um único import que reexportava dezenas de helpers. Ele foi introduzido para manter plugins mais antigos baseados em hooks funcionando enquanto a nova arquitetura de plugins estava sendo construída.
  • openclaw/extension-api — uma bridge que dava aos plugins acesso direto a helpers do lado do host, como o executor incorporado de agentes Pi.
Ambas as superfícies agora estão obsoletas. Elas ainda funcionam em runtime, mas novos plugins não devem usá-las, e plugins existentes devem migrar antes que a próxima versão major as remova.
A camada de compatibilidade retroativa será removida em uma futura versão major. Plugins que ainda fizerem import dessas superfícies irão falhar quando isso acontecer.

Por que isso mudou

A abordagem antiga causava problemas:
  • Inicialização lenta — importar um helper carregava dezenas de módulos não relacionados
  • Dependências circulares — reexports amplos facilitavam a criação de ciclos de import
  • Superfície de API pouco clara — não havia como dizer quais exports eram estáveis versus internos
O Plugin SDK moderno corrige isso: cada caminho de import (openclaw/plugin-sdk/\<subpath\>) é um módulo pequeno e autocontido com um propósito claro e um contrato documentado. As conveniências legadas de provider para canais empacotados também foram removidas. Imports como openclaw/plugin-sdk/slack, openclaw/plugin-sdk/discord, openclaw/plugin-sdk/signal, openclaw/plugin-sdk/whatsapp, superfícies de helpers com marca de canal e openclaw/plugin-sdk/telegram-core eram atalhos privados do mono-repo, não contratos estáveis de plugin. Use subpaths genéricos e estreitos do SDK em vez disso. Dentro do workspace de plugins empacotados, mantenha helpers pertencentes ao provider no próprio api.ts ou runtime-api.ts desse plugin. Exemplos atuais de providers empacotados:
  • O Anthropic mantém helpers de stream específicos do Claude em sua própria superfície api.ts / contract-api.ts
  • O OpenAI mantém builders de provider, helpers de modelo padrão e builders de provider realtime em seu próprio api.ts
  • O OpenRouter mantém helpers de builder de provider e de onboarding/config em seu próprio api.ts

Como migrar

1

Audite o comportamento de fallback do wrapper do Windows

Se o seu plugin usa openclaw/plugin-sdk/windows-spawn, wrappers .cmd/.bat do Windows não resolvidos agora falham de forma fechada, a menos que você passe explicitamente allowShellFallback: true.
// Antes
const program = applyWindowsSpawnProgramPolicy({ candidate });

// Depois
const program = applyWindowsSpawnProgramPolicy({
  candidate,
  // Defina isso apenas para chamadores de compatibilidade confiáveis que
  // aceitam intencionalmente fallback mediado por shell.
  allowShellFallback: true,
});
Se o seu chamador não depender intencionalmente de fallback por shell, não defina allowShellFallback e trate o erro lançado em vez disso.
2

Encontre imports obsoletos

Pesquise no seu plugin por imports de qualquer uma das superfícies obsoletas:
grep -r "plugin-sdk/compat" my-plugin/
grep -r "openclaw/extension-api" my-plugin/
3

Substitua por imports focados

Cada export da superfície antiga corresponde a um caminho de import moderno específico:
// Antes (camada obsoleta de compatibilidade retroativa)
import {
  createChannelReplyPipeline,
  createPluginRuntimeStore,
  resolveControlCommandGate,
} from "openclaw/plugin-sdk/compat";

// Depois (imports modernos e focados)
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 helpers do lado do host, use o runtime injetado do plugin em vez de importar diretamente:
// Antes (bridge obsoleta extension-api)
import { runEmbeddedPiAgent } from "openclaw/extension-api";
const result = await runEmbeddedPiAgent({ sessionId, prompt });

// Depois (runtime injetado)
const result = await api.runtime.agent.runEmbeddedPiAgent({ sessionId, prompt });
O mesmo padrão se aplica a outros helpers legados da bridge:
Import antigoEquivalente 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
helpers do session storeapi.runtime.agent.session.*
4

Compile e teste

pnpm build
pnpm test -- my-plugin/

Referência de caminhos de import

Caminho de importFinalidadeExports principais
plugin-sdk/plugin-entryHelper canônico de entrada de plugindefinePluginEntry
plugin-sdk/coreReexport umbrella legado para definições/builders de entrada de canaldefineChannelPluginEntry, createChatChannelPlugin
plugin-sdk/config-schemaExport da schema raiz de configuraçãoOpenClawSchema
plugin-sdk/provider-entryHelper de entrada para um único providerdefineSingleProviderPluginEntry
plugin-sdk/channel-coreDefinições e builders focados de entrada de canaldefineChannelPluginEntry, defineSetupPluginEntry, createChatChannelPlugin, createChannelPluginBase
plugin-sdk/setupHelpers compartilhados do assistente de configuraçãoPrompts de allowlist, builders de status de configuração
plugin-sdk/setup-runtimeHelpers de runtime no momento da configuraçãoAdaptadores de patch de configuração seguros para import, helpers de nota de lookup, promptResolvedAllowFrom, splitSetupEntries, proxies de configuração delegada
plugin-sdk/setup-adapter-runtimeHelpers de adaptador de configuraçãocreateEnvPatchedAccountSetupAdapter
plugin-sdk/setup-toolsHelpers de ferramentas de configuraçãoformatCliCommand, detectBinary, extractArchive, resolveBrewExecutable, formatDocsLink, CONFIG_DIR
plugin-sdk/account-coreHelpers para múltiplas contasHelpers de lista/config/controle de ação de conta
plugin-sdk/account-idHelpers de id de contaDEFAULT_ACCOUNT_ID, normalização de id de conta
plugin-sdk/account-resolutionHelpers de lookup de contaHelpers de lookup de conta + fallback padrão
plugin-sdk/account-helpersHelpers estreitos de contaHelpers de lista de conta/ação de conta
plugin-sdk/channel-setupAdaptadores do assistente de configuraçãocreateOptionalChannelSetupSurface, createOptionalChannelSetupAdapter, createOptionalChannelSetupWizard, além de DEFAULT_ACCOUNT_ID, createTopLevelChannelDmPolicy, setSetupChannelEnabled, splitSetupEntries
plugin-sdk/channel-pairingPrimitivas de pareamento por DMcreateChannelPairingController
plugin-sdk/channel-reply-pipelinePrefixo de resposta + wiring de digitaçãocreateChannelReplyPipeline
plugin-sdk/channel-config-helpersFábricas de adaptadores de configuraçãocreateHybridChannelConfigAdapter
plugin-sdk/channel-config-schemaBuilders de schema de configuraçãoTipos de schema de configuração de canal
plugin-sdk/telegram-command-configHelpers de configuração de comando do TelegramNormalização de nome de comando, trimming de descrição, validação de duplicatas/conflitos
plugin-sdk/channel-policyResolução de política de grupo/DMresolveChannelGroupRequireMention
plugin-sdk/channel-lifecycleRastreamento de status de contacreateAccountStatusSink
plugin-sdk/inbound-envelopeHelpers de envelope de entradaHelpers compartilhados de rota + builder de envelope
plugin-sdk/inbound-reply-dispatchHelpers de resposta de entradaHelpers compartilhados de registrar e despachar
plugin-sdk/messaging-targetsParsing de destinos de mensagemHelpers de parsing/correspondência de destino
plugin-sdk/outbound-mediaHelpers de mídia de saídaCarregamento compartilhado de mídia de saída
plugin-sdk/outbound-runtimeHelpers de runtime de saídaHelpers delegados de identidade/envio de saída
plugin-sdk/thread-bindings-runtimeHelpers de vínculo de threadCiclo de vida de vínculo de thread e helpers de adaptador
plugin-sdk/agent-media-payloadHelpers legados de payload de mídiaBuilder de payload de mídia de agente para layouts legados de campos
plugin-sdk/channel-runtimeShim de compatibilidade obsoletoSomente utilitários legados de runtime de canal
plugin-sdk/channel-send-resultTipos de resultado de envioTipos de resultado de resposta
plugin-sdk/runtime-storeArmazenamento persistente do plugincreatePluginRuntimeStore
plugin-sdk/runtimeHelpers amplos de runtimeHelpers de runtime/logging/backup/instalação de plugin
plugin-sdk/runtime-envHelpers estreitos de ambiente de runtimeLogger/ambiente de runtime, helpers de timeout, retry e backoff
plugin-sdk/plugin-runtimeHelpers compartilhados de runtime de pluginHelpers de comandos/hooks/http/interativos de plugin
plugin-sdk/hook-runtimeHelpers de pipeline de hookHelpers compartilhados de pipeline de webhook/hook interno
plugin-sdk/lazy-runtimeHelpers de runtime lazycreateLazyRuntimeModule, createLazyRuntimeMethod, createLazyRuntimeMethodBinder, createLazyRuntimeNamedExport, createLazyRuntimeSurface
plugin-sdk/process-runtimeHelpers de processoHelpers compartilhados de exec
plugin-sdk/cli-runtimeHelpers de runtime da CLIFormatação de comando, esperas, helpers de versão
plugin-sdk/gateway-runtimeHelpers do GatewayCliente do Gateway e helpers de patch de status de canal
plugin-sdk/config-runtimeHelpers de configuraçãoHelpers de carregamento/escrita de configuração
plugin-sdk/telegram-command-configHelpers de comando do TelegramHelpers de validação de comando do Telegram estáveis em fallback quando a superfície de contrato do Telegram empacotado não estiver disponível
plugin-sdk/approval-runtimeHelpers de prompt de aprovaçãoPayload de aprovação de exec/plugin, helpers de capacidade/perfil de aprovação, helpers nativos de roteamento/runtime de aprovação
plugin-sdk/approval-auth-runtimeHelpers de autenticação de aprovaçãoResolução de aprovador, autenticação de ação no mesmo chat
plugin-sdk/approval-client-runtimeHelpers de cliente de aprovaçãoHelpers nativos de perfil/filtro de aprovação de exec
plugin-sdk/approval-delivery-runtimeHelpers de entrega de aprovaçãoAdaptadores nativos de capacidade/entrega de aprovação
plugin-sdk/approval-native-runtimeHelpers de destino de aprovaçãoHelpers nativos de binding de destino/conta de aprovação
plugin-sdk/approval-reply-runtimeHelpers de resposta de aprovaçãoHelpers de payload de resposta de aprovação de exec/plugin
plugin-sdk/security-runtimeHelpers de segurançaHelpers compartilhados de confiança, restrição de DM, conteúdo externo e coleta de segredos
plugin-sdk/ssrf-policyHelpers de política de SSRFHelpers de allowlist de host e política de rede privada
plugin-sdk/ssrf-runtimeHelpers de runtime de SSRFDispatcher fixado, fetch protegido, helpers de política de SSRF
plugin-sdk/collection-runtimeHelpers de cache limitadopruneMapToMaxSize
plugin-sdk/diagnostic-runtimeHelpers de controle de diagnósticoisDiagnosticFlagEnabled, isDiagnosticsEnabled
plugin-sdk/error-runtimeHelpers de formatação de erroformatUncaughtError, isApprovalNotFoundError, helpers de grafo de erro
plugin-sdk/fetch-runtimeHelpers de fetch/proxy encapsuladosresolveFetch, helpers de proxy
plugin-sdk/host-runtimeHelpers de normalização de hostnormalizeHostname, normalizeScpRemoteHost
plugin-sdk/retry-runtimeHelpers de retryRetryConfig, retryAsync, executores de política
plugin-sdk/allow-fromFormatação de allowlistformatAllowFromLowercase
plugin-sdk/allowlist-resolutionMapeamento de entrada de allowlistmapAllowlistResolutionInputs
plugin-sdk/command-authRestrição de comandos e helpers de superfície de comandoresolveControlCommandGate, helpers de autorização do remetente, helpers de registro de comandos
plugin-sdk/secret-inputParsing de entrada de segredoHelpers de entrada de segredo
plugin-sdk/webhook-ingressHelpers de requisição de webhookUtilitários de destino de webhook
plugin-sdk/webhook-request-guardsHelpers de guarda do corpo de webhookHelpers de leitura/limite do corpo da requisição
plugin-sdk/reply-runtimeRuntime compartilhado de respostaDespacho de entrada, heartbeat, planejador de resposta, chunking
plugin-sdk/reply-dispatch-runtimeHelpers estreitos de despacho de respostaHelpers de finalização + despacho de provider
plugin-sdk/reply-historyHelpers de histórico de respostabuildHistoryContext, buildPendingHistoryContextFromMap, recordPendingHistoryEntry, clearHistoryEntriesIfEnabled
plugin-sdk/reply-referencePlanejamento de referência de respostacreateReplyReferencePlanner
plugin-sdk/reply-chunkingHelpers de chunks de respostaHelpers de chunking de texto/markdown
plugin-sdk/session-store-runtimeHelpers de session storeHelpers de caminho do store + updated-at
plugin-sdk/state-pathsHelpers de caminhos de estadoHelpers de diretório de estado e OAuth
plugin-sdk/routingHelpers de roteamento/chave de sessãoresolveAgentRoute, buildAgentSessionKey, resolveDefaultAgentBoundAccountId, helpers de normalização de chave de sessão
plugin-sdk/status-helpersHelpers de status de canalBuilders de resumo de status de canal/conta, padrões de estado de runtime, helpers de metadados de issue
plugin-sdk/target-resolver-runtimeHelpers de resolvedor de destinoHelpers compartilhados de resolvedor de destino
plugin-sdk/string-normalization-runtimeHelpers de normalização de stringHelpers de normalização de slug/string
plugin-sdk/request-urlHelpers de URL de requisiçãoExtrair URLs em string de entradas parecidas com requisição
plugin-sdk/run-commandHelpers de comando temporizadoExecutor de comando temporizado com stdout/stderr normalizados
plugin-sdk/param-readersLeitores de parâmetrosLeitores comuns de parâmetros de ferramenta/CLI
plugin-sdk/tool-sendExtração de envio de ferramentaExtrair campos canônicos de destino de envio de argumentos de ferramenta
plugin-sdk/temp-pathHelpers de caminho temporárioHelpers compartilhados de caminho temporário de download
plugin-sdk/logging-coreHelpers de loggingLogger de subsistema e helpers de redação
plugin-sdk/markdown-table-runtimeHelpers de tabela MarkdownHelpers de modo de tabela Markdown
plugin-sdk/reply-payloadTipos de resposta de mensagemTipos de payload de resposta
plugin-sdk/provider-setupHelpers curados de configuração de provider local/self-hostedHelpers de descoberta/configuração de provider self-hosted
plugin-sdk/self-hosted-provider-setupHelpers focados de configuração de provider self-hosted compatível com OpenAIOs mesmos helpers de descoberta/configuração de provider self-hosted
plugin-sdk/provider-auth-runtimeHelpers de autenticação de runtime de providerHelpers de resolução de chave de API em runtime
plugin-sdk/provider-auth-api-keyHelpers de configuração de chave de API de providerHelpers de onboarding/escrita de perfil para chave de API
plugin-sdk/provider-auth-resultHelpers de resultado de autenticação de providerBuilder padrão de resultado de autenticação OAuth
plugin-sdk/provider-auth-loginHelpers de login interativo de providerHelpers compartilhados de login interativo
plugin-sdk/provider-env-varsHelpers de variáveis de ambiente de providerHelpers de lookup de variáveis de ambiente de autenticação de provider
plugin-sdk/provider-model-sharedHelpers compartilhados de modelo/replay de providerProviderReplayFamily, buildProviderReplayFamilyHooks, normalizeModelCompat, builders compartilhados de política de replay, helpers de endpoint de provider e helpers de normalização de id de modelo
plugin-sdk/provider-catalog-sharedHelpers compartilhados de catálogo de providerfindCatalogTemplate, buildSingleProviderApiKeyCatalog, supportsNativeStreamingUsageCompat, applyProviderNativeStreamingUsageCompat
plugin-sdk/provider-onboardPatches de onboarding de providerHelpers de configuração de onboarding
plugin-sdk/provider-httpHelpers de HTTP de providerHelpers genéricos de HTTP/capacidade de endpoint de provider
plugin-sdk/provider-web-fetchHelpers de web-fetch de providerHelpers de registro/cache de provider web-fetch
plugin-sdk/provider-web-searchHelpers de web-search de providerHelpers de registro/cache/configuração de provider web-search
plugin-sdk/provider-toolsHelpers de compatibilidade de ferramenta/schema de providerProviderToolCompatFamily, buildProviderToolCompatFamilyHooks, limpeza de schema do Gemini + diagnósticos e helpers de compatibilidade do xAI como resolveXaiModelCompatPatch / applyXaiModelCompat
plugin-sdk/provider-usageHelpers de uso de providerfetchClaudeUsage, fetchGeminiUsage, fetchGithubCopilotUsage e outros helpers de uso de provider
plugin-sdk/provider-streamHelpers de wrapper de stream de providerProviderStreamFamily, buildProviderStreamFamilyHooks, composeProviderStreamWrappers, tipos de wrapper de stream e helpers compartilhados de wrapper para Anthropic/Bedrock/Google/Kilocode/Moonshot/OpenAI/OpenRouter/Z.A.I/MiniMax/Copilot
plugin-sdk/keyed-async-queueFila assíncrona ordenadaKeyedAsyncQueue
plugin-sdk/media-runtimeHelpers compartilhados de mídiaHelpers de busca/transformação/armazenamento de mídia mais builders de payload de mídia
plugin-sdk/media-understandingHelpers de entendimento de mídiaTipos de provider de entendimento de mídia mais exports de helpers de imagem/áudio voltados para provider
plugin-sdk/text-runtimeHelpers compartilhados de textoRemoção de texto visível ao assistente, helpers de renderização/chunking/tabela Markdown, helpers de redação, helpers de tag de diretiva, utilitários de texto seguro e helpers relacionados de texto/logging
plugin-sdk/text-chunkingHelpers de chunking de textoHelper de chunking de texto de saída
plugin-sdk/speechHelpers de falaTipos de provider de fala mais exports de helpers de diretiva, registro e validação voltados para provider
plugin-sdk/speech-coreNúcleo compartilhado de falaTipos de provider de fala, registro, diretivas, normalização
plugin-sdk/realtime-transcriptionHelpers de transcrição em tempo realTipos de provider e helpers de registro
plugin-sdk/realtime-voiceHelpers de voz em tempo realTipos de provider e helpers de registro
plugin-sdk/image-generation-coreNúcleo compartilhado de geração de imagemTipos de geração de imagem, failover, autenticação e helpers de registro
plugin-sdk/video-generationHelpers de geração de vídeoTipos de provider/requisição/resultado de geração de vídeo
plugin-sdk/video-generation-coreNúcleo compartilhado de geração de vídeoTipos de geração de vídeo, helpers de failover, lookup de provider e parsing de model-ref
plugin-sdk/interactive-runtimeHelpers de resposta interativaNormalização/redução de payload de resposta interativa
plugin-sdk/channel-config-primitivesPrimitivas de configuração de canalPrimitivas estreitas de schema de configuração de canal
plugin-sdk/channel-config-writesHelpers de escrita de configuração de canalHelpers de autorização de escrita de configuração de canal
plugin-sdk/channel-plugin-commonPrelúdio compartilhado de canalExports compartilhados de prelúdio de plugin de canal
plugin-sdk/channel-statusHelpers de status de canalHelpers compartilhados de snapshot/resumo de status de canal
plugin-sdk/allowlist-config-editHelpers de configuração de allowlistHelpers de edição/leitura de configuração de allowlist
plugin-sdk/group-accessHelpers de acesso a grupoHelpers compartilhados de decisão de acesso a grupo
plugin-sdk/direct-dmHelpers de DM diretoHelpers compartilhados de autenticação/guarda para DM direto
plugin-sdk/extension-sharedHelpers compartilhados de extensãoPrimitivas de helpers passivos de canal/status
plugin-sdk/webhook-targetsHelpers de destino de webhookRegistro de destinos de webhook e helpers de instalação de rota
plugin-sdk/webhook-pathHelpers de caminho de webhookHelpers de normalização de caminho de webhook
plugin-sdk/web-mediaHelpers compartilhados de mídia webHelpers de carregamento de mídia remota/local
plugin-sdk/zodReexport de Zodzod reexportado para consumidores do Plugin SDK
plugin-sdk/memory-coreHelpers empacotados de memory-coreSuperfície de helpers de gerenciador/config/arquivo/CLI de memória
plugin-sdk/memory-core-engine-runtimeFachada de runtime do engine de memóriaFachada de runtime de índice/busca de memória
plugin-sdk/memory-core-host-engine-foundationEngine de fundação do host de memóriaExports do engine de fundação do host de memória
plugin-sdk/memory-core-host-engine-embeddingsEngine de embeddings do host de memóriaExports do engine de embeddings do host de memória
plugin-sdk/memory-core-host-engine-qmdEngine QMD do host de memóriaExports do engine QMD do host de memória
plugin-sdk/memory-core-host-engine-storageEngine de armazenamento do host de memóriaExports do engine de armazenamento do host de memória
plugin-sdk/memory-core-host-multimodalHelpers multimodais do host de memóriaHelpers multimodais do host de memória
plugin-sdk/memory-core-host-queryHelpers de consulta do host de memóriaHelpers de consulta do host de memória
plugin-sdk/memory-core-host-secretHelpers de segredos do host de memóriaHelpers de segredos do host de memória
plugin-sdk/memory-core-host-statusHelpers de status do host de memóriaHelpers de status do host de memória
plugin-sdk/memory-core-host-runtime-cliRuntime de CLI do host de memóriaHelpers de runtime de CLI do host de memória
plugin-sdk/memory-core-host-runtime-coreRuntime central do host de memóriaHelpers de runtime central do host de memória
plugin-sdk/memory-core-host-runtime-filesHelpers de arquivo/runtime do host de memóriaHelpers de arquivo/runtime do host de memória
plugin-sdk/memory-lancedbHelpers empacotados de memory-lancedbSuperfície de helpers de memory-lancedb
plugin-sdk/testingUtilitários de testeHelpers e mocks de teste
Esta tabela é intencionalmente o subconjunto comum de migração, não a superfície completa do SDK. A lista completa de mais de 200 entrypoints está em scripts/lib/plugin-sdk-entrypoints.json. Essa lista ainda inclui algumas superfícies de helpers de plugins empacotados, como plugin-sdk/feishu, plugin-sdk/feishu-setup, plugin-sdk/zalo, plugin-sdk/zalo-setup e plugin-sdk/matrix*. Elas continuam exportadas para manutenção e compatibilidade de plugins empacotados, mas foram intencionalmente omitidas da tabela comum de migração e não são o destino recomendado para novo código de plugin. A mesma regra se aplica a outras famílias de helpers empacotados, como:
  • helpers de suporte a browser: plugin-sdk/browser-config-support, plugin-sdk/browser-support
  • Matrix: plugin-sdk/matrix*
  • LINE: plugin-sdk/line*
  • IRC: plugin-sdk/irc*
  • superfícies de helpers/plugins empacotados como plugin-sdk/googlechat, plugin-sdk/zalouser, plugin-sdk/bluebubbles*, plugin-sdk/mattermost*, plugin-sdk/msteams, plugin-sdk/nextcloud-talk, plugin-sdk/nostr, plugin-sdk/tlon, plugin-sdk/twitch, plugin-sdk/github-copilot-login, plugin-sdk/github-copilot-token, plugin-sdk/diagnostics-otel, plugin-sdk/diffs, plugin-sdk/llm-task, plugin-sdk/thread-ownership e plugin-sdk/voice-call
Atualmente, plugin-sdk/github-copilot-token expõe a superfície estreita de helpers de token DEFAULT_COPILOT_API_BASE_URL, deriveCopilotApiBaseUrlFromToken e resolveCopilotApiToken. Use o import mais estreito que corresponda à tarefa. Se você não conseguir encontrar um export, verifique a fonte em src/plugin-sdk/ ou pergunte no Discord.

Cronograma de remoção

QuandoO que acontece
AgoraSuperfícies obsoletas emitem avisos em runtime
Próxima versão majorAs superfícies obsoletas serão removidas; plugins que ainda as usam irão falhar
Todos os plugins centrais já foram migrados. Plugins externos devem migrar antes da próxima versão major.

Suprimindo os avisos temporariamente

Defina estas variáveis de ambiente enquanto trabalha na migração:
OPENCLAW_SUPPRESS_PLUGIN_SDK_COMPAT_WARNING=1 openclaw gateway run
OPENCLAW_SUPPRESS_EXTENSION_API_WARNING=1 openclaw gateway run
Esta é uma saída temporária, não uma solução permanente.

Relacionados