Pontos de entrada de plugin
Todo plugin exporta um objeto de entrada padrão. O SDK fornece três helpers para criá-los.definePluginEntry
Importação: openclaw/plugin-sdk/plugin-entry
Para plugins de provedor, plugins de ferramenta, plugins de hook e tudo o que não
for um canal de mensagens.
| Campo | Tipo | Obrigatório | Padrão |
|---|---|---|---|
id | string | Sim | — |
name | string | Sim | — |
description | string | Sim | — |
kind | string | Não | — |
configSchema | OpenClawPluginConfigSchema | () => OpenClawPluginConfigSchema | Não | Schema de objeto vazio |
register | (api: OpenClawPluginApi) => void | Sim | — |
iddeve corresponder ao seu manifestoopenclaw.plugin.json.kindé para slots exclusivos:"memory"ou"context-engine".configSchemapode ser uma função para avaliação preguiçosa.- O OpenClaw resolve e memoiza esse schema no primeiro acesso, portanto builders de schema caros são executados apenas uma vez.
defineChannelPluginEntry
Importação: openclaw/plugin-sdk/channel-core
Encapsula definePluginEntry com a infraestrutura específica de canal. Chama automaticamente
api.registerChannel({ plugin }), expõe uma seam opcional de metadados de CLI para ajuda na raiz
e controla registerFull de acordo com o modo de registro.
| Campo | Tipo | Obrigatório | Padrão |
|---|---|---|---|
id | string | Sim | — |
name | string | Sim | — |
description | string | Sim | — |
plugin | ChannelPlugin | Sim | — |
configSchema | OpenClawPluginConfigSchema | () => OpenClawPluginConfigSchema | Não | Schema de objeto vazio |
setRuntime | (runtime: PluginRuntime) => void | Não | — |
registerCliMetadata | (api: OpenClawPluginApi) => void | Não | — |
registerFull | (api: OpenClawPluginApi) => void | Não | — |
setRuntimeé chamado durante o registro para que você possa armazenar a referência de runtime (normalmente por meio decreatePluginRuntimeStore). Ele é ignorado durante a captura de metadados de CLI.registerCliMetadataé executado tanto duranteapi.registrationMode === "cli-metadata"quanto duranteapi.registrationMode === "full". Use-o como o local canônico para descritores de CLI pertencentes ao canal, para que a ajuda na raiz permaneça sem ativação, enquanto o registro normal de comandos da CLI continua compatível com carregamentos completos de plugin.registerFullé executado apenas quandoapi.registrationMode === "full". Ele é ignorado durante o carregamento somente de setup.- Assim como
definePluginEntry,configSchemapode ser uma factory preguiçosa e o OpenClaw memoiza o schema resolvido no primeiro acesso. - Para comandos de CLI na raiz pertencentes ao plugin, prefira
api.registerCli(..., { descriptors: [...] })quando quiser que o comando permaneça com lazy-loading sem desaparecer da árvore de parsing da CLI na raiz. Para plugins de canal, prefira registrar esses descritores emregisterCliMetadata(...)e manterregisterFull(...)focado em trabalho somente de runtime. - Se
registerFull(...)também registrar métodos RPC de gateway, mantenha-os em um prefixo específico do plugin. Namespaces administrativos principais reservados (config.*,exec.approvals.*,wizard.*,update.*) são sempre forçados paraoperator.admin.
defineSetupPluginEntry
Importação: openclaw/plugin-sdk/channel-core
Para o arquivo leve setup-entry.ts. Retorna apenas { plugin }, sem
infraestrutura de runtime ou de CLI.
defineSetupPluginEntry(...) com as famílias restritas de helpers de setup:
openclaw/plugin-sdk/setup-runtimepara helpers de setup seguros para runtime, como adaptadores de patch de setup seguros para importação, saída de nota de consulta,promptResolvedAllowFrom,splitSetupEntriese proxies de setup delegadosopenclaw/plugin-sdk/channel-setuppara superfícies de setup de instalação opcionalopenclaw/plugin-sdk/setup-toolspara helpers de CLI/arquivo/docs de setup/instalação
Modo de registro
api.registrationMode informa ao seu plugin como ele foi carregado:
| Modo | Quando | O que registrar |
|---|---|---|
"full" | Inicialização normal do gateway | Tudo |
"setup-only" | Canal desativado/não configurado | Apenas registro de canal |
"setup-runtime" | Fluxo de setup com runtime disponível | Registro de canal mais apenas o runtime leve necessário antes de a entrada completa carregar |
"cli-metadata" | Ajuda na raiz / captura de metadados de CLI | Apenas descritores de CLI |
defineChannelPluginEntry lida automaticamente com essa divisão. Se você usar
definePluginEntry diretamente para um canal, verifique o modo por conta própria:
"setup-runtime" como a janela em que superfícies de inicialização somente de setup devem
existir sem reentrar no runtime completo do canal empacotado. Bons encaixes são
registro de canal, rotas HTTP seguras para setup, métodos de gateway seguros para setup e
helpers de setup delegados. Serviços pesados em segundo plano, registradores de CLI e
bootstraps de SDK de provedor/cliente ainda pertencem a "full".
Especificamente para registradores de CLI:
- use
descriptorsquando o registrador possuir um ou mais comandos na raiz e você quiser que o OpenClaw faça lazy-load do módulo real da CLI na primeira invocação - garanta que esses descritores cubram todos os comandos de nível superior expostos pelo registrador
- use apenas
commandspara caminhos de compatibilidade eager
Formatos de plugin
O OpenClaw classifica plugins carregados de acordo com seu comportamento de registro:| Formato | Descrição |
|---|---|
| plain-capability | Um tipo de capacidade (por exemplo, apenas provedor) |
| hybrid-capability | Vários tipos de capacidade (por exemplo, provedor + fala) |
| hook-only | Apenas hooks, sem capacidades |
| non-capability | Ferramentas/comandos/serviços, mas sem capacidades |
openclaw plugins inspect <id> para ver o formato de um plugin.
Relacionado
- Visão geral do SDK — API de registro e referência de subcaminhos
- Helpers de runtime —
api.runtimeecreatePluginRuntimeStore - Setup e config — manifesto, entrada de setup, carregamento adiado
- Plugins de canal — como criar o objeto
ChannelPlugin - Plugins de provedor — registro de provedor e hooks