clawhub: quando quiser resolução pelo ClawHub.
Requisitos
- Use Node 22.19+, Node 23.11+ ou Node 24+ e um gerenciador de pacotes como
npmoupnpm. - Tenha familiaridade com módulos ESM do TypeScript.
- Para trabalho em plugin empacotado dentro do repositório, clone o repositório e execute
pnpm install. O desenvolvimento de plugins em checkout de código-fonte usa apenas pnpm porque o OpenClaw carrega plugins empacotados a partir dos pacotes de workspaceextensions/*.
Escolha o formato do plugin
Channel plugin
Conecte o OpenClaw a uma plataforma de mensagens.
Provider plugin
Adicione um provedor de modelo, mídia, busca, fetch, fala ou tempo real.
CLI backend plugin
Execute uma CLI de IA local por meio do fallback de modelo do OpenClaw.
Tool plugin
Registre ferramentas de agente.
Início rápido
Crie um plugin de ferramenta mínimo registrando uma ferramenta de agente obrigatória. Este é o formato útil mais curto de plugin e mostra o pacote, o manifesto, o ponto de entrada e a prova local.Create package metadata
contracts.tools para que o OpenClaw possa descobrir a propriedade sem carregar antecipadamente todos os runtimes de plugins. Defina activation.onStartup intencionalmente. Este exemplo inicia na inicialização do Gateway.Superfícies de plugin confiáveis pelo host também são controladas pelo manifesto e exigem habilitação explícita para plugins instalados. Se um plugin instalado registrar api.registerAgentToolResultMiddleware(...), declare cada runtime de destino em contracts.agentToolResultMiddleware. Se ele registrar api.registerTrustedToolPolicy(...), declare cada id de política em contracts.trustedToolPolicies. Essas declarações mantêm a inspeção no momento da instalação alinhada com o registro em runtime.Para cada campo do manifesto, consulte manifesto do Plugin.Register the tool
index.ts
definePluginEntry para plugins que não são de canal. Plugins de canal usam defineChannelPluginEntry.Test the runtime
Para um plugin instalado ou externo, inspecione o runtime carregado:Se o plugin registrar um comando de CLI, execute esse comando também. Por exemplo, um comando de demonstração deve ter uma prova de execução como
openclaw demo-plugin ping.Para um plugin empacotado neste repositório, o OpenClaw descobre pacotes de plugin em checkout de código-fonte pelo workspace extensions/*. Execute o teste direcionado mais próximo:Test the package install
Antes de publicar um plugin pronto para pacote, teste o mesmo formato de instalação que os usuários receberão. Primeiro adicione uma etapa de build, aponte entradas de runtime como
openclaw.extensions para JavaScript compilado, como ./dist/index.js, e garanta que npm pack inclua essa saída dist/. Entradas de código-fonte TypeScript são apenas para checkouts de código-fonte e caminhos de desenvolvimento local.Em seguida, empacote o plugin e instale o tarball com npm-pack::npm-pack: usa o projeto npm gerenciado por plugin do OpenClaw, então captura erros de dependência de runtime que testes em checkout de código-fonte podem ocultar. Ele comprova o formato do pacote e das dependências, não a confiança oficial vinculada ao catálogo. Imports de runtime devem estar em dependencies ou optionalDependencies; dependências deixadas apenas em devDependencies não serão instaladas para o projeto de runtime gerenciado.Não use uma instalação bruta por arquivo/caminho como prova final para comportamento de Plugin oficial ou
privilegiado. Fontes brutas são úteis para depuração local, mas
não provam o mesmo caminho de dependência que instalações via npm ou ClawHub. Se
seu Plugin depende de status confiável de Plugin oficial, adicione uma segunda prova
por meio de uma instalação oficial baseada em catálogo ou de um caminho de pacote publicado que
registre confiança oficial. Consulte
Resolução de dependências de Plugin para
detalhes sobre raiz de instalação e propriedade de dependências.Publicar
Valide o pacote antes de publicar:Os snippets canônicos do ClawHub ficam em
docs/snippets/plugin-publish/.Registrando ferramentas
Ferramentas podem ser obrigatórias ou opcionais. Ferramentas obrigatórias estão sempre disponíveis quando o Plugin está habilitado. Ferramentas opcionais exigem adesão do usuário.api.registerTool(...) também deve ser declarada no
manifesto do Plugin:
tools.allow:
parameters, são ignorados e
relatados da mesma forma. Ferramentas registradas são funções tipadas que o modelo pode chamar
depois que as verificações de política e lista de permissões são aprovadas.
Fábricas de ferramentas recebem um objeto de contexto fornecido pelo runtime. Use ctx.activeModel
quando uma ferramenta precisar registrar, exibir ou se adaptar ao modelo ativo do turno
atual. O objeto pode incluir provider, modelId e modelRef. Trate-o como
metadados informativos de runtime, não como uma fronteira de segurança contra o operador
local, código de Plugin instalado ou um runtime do OpenClaw modificado. Ferramentas locais
sensíveis ainda devem exigir uma adesão explícita do Plugin ou operador e falhar de modo fechado
quando os metadados de modelo ativo estiverem ausentes ou forem inadequados.
O manifesto declara propriedade e descoberta; a execução ainda chama a implementação
registrada ativa da ferramenta. Mantenha toolMetadata.<tool>.optional: true
alinhado com api.registerTool(..., { optional: true }) para que o OpenClaw possa evitar
carregar o runtime desse Plugin até que a ferramenta seja explicitamente incluída na lista de permissões.
Convenções de importação
Importe de subcaminhos focados do SDK:api.ts e
runtime-api.ts, para importações internas. Não importe seu próprio Plugin por meio de um
caminho do SDK. Helpers específicos de provedor devem permanecer no pacote do provedor, a menos que
a interface seja realmente genérica.
Métodos RPC personalizados do Gateway são um ponto de entrada avançado. Mantenha-os em um
prefixo específico do Plugin; namespaces administrativos principais, como config.*,
exec.approvals.*, operator.admin.*, wizard.* e update.*, permanecem reservados
e resolvem para operator.admin. A ponte
openclaw/plugin-sdk/gateway-method-runtime é reservada para rotas HTTP de Plugin
que declaram contracts.gatewayMethodDispatch: ["authenticated-request"].
Para o mapa completo de importações, consulte Visão geral do SDK de Plugin.
Lista de verificação de pré-envio
package.json tem metadados
openclaw corretosO manifesto openclaw.plugin.json está presente e é válido
O ponto de entrada usa
defineChannelPluginEntry ou definePluginEntryTodas as importações usam caminhos focados
plugin-sdk/<subpath>Importações internas usam módulos locais, não autoimportações do SDK
Os testes passam (
pnpm test -- <bundled-plugin-root>/my-plugin/)pnpm check passa (plugins dentro do repositório)Testar contra versões beta
- Acompanhe as tags de lançamento do GitHub em openclaw/openclaw e assine via
Watch>Releases. Tags beta são parecidas comv2026.3.N-beta.1. Você também pode ativar notificações para a conta oficial da OpenClaw no X @openclaw para anúncios de lançamento. - Teste seu Plugin contra a tag beta assim que ela aparecer. A janela antes da versão estável normalmente é de apenas algumas horas.
- Publique na thread do seu Plugin no canal
plugin-forumdo Discord depois de testar, comall goodou informando o que quebrou. Se você ainda não tiver uma thread, crie uma. - Se algo quebrar, abra ou atualize uma issue intitulada
Beta blocker: <plugin-name> - <summary>e aplique o rótulobeta-blocker. Coloque o link da issue na sua thread. - Abra um PR para
mainintituladofix(<plugin-id>): beta blocker - <summary>e vincule a issue tanto no PR quanto na sua thread do Discord. Contribuidores não podem rotular PRs, então o título é o sinal do lado do PR para mantenedores e automação. Bloqueadores com PR são mesclados; bloqueadores sem PR podem ser enviados mesmo assim. Mantenedores acompanham essas threads durante os testes beta. - Silêncio significa sinal verde. Se você perder a janela, sua correção provavelmente entrará no próximo ciclo.
Próximas etapas
Channel Plugins
Crie um Plugin de canal de mensagens
Provider Plugins
Crie um Plugin de provedor de modelo
CLI Backend Plugins
Registre um backend local de CLI de IA
SDK Overview
Mapa de importação e referência da API de registro
Runtime Helpers
TTS, busca, subagente via api.runtime
Testing
Utilitários e padrões de teste
Plugin Manifest
Referência completa do esquema do manifesto