Este é um guia para colaboradores destinado aos desenvolvedores do núcleo do OpenClaw. Se você estiver
desenvolvendo um plugin externo, consulte Desenvolvimento de plugins.
Para obter a referência detalhada da arquitetura (modelo de capacidades, responsabilidades,
pipeline de carregamento, auxiliares de runtime), consulte Aspectos internos dos plugins.
- plugin = limite de responsabilidade
- capacidade = contrato compartilhado do núcleo
Quando criar uma capacidade
Crie uma nova capacidade somente quando todas estas condições forem verdadeiras:- Mais de um fornecedor poderia implementá-la de forma plausível.
- Canais, ferramentas ou plugins de funcionalidade devem poder consumi-la sem se preocupar com o fornecedor.
- O núcleo precisa controlar o fallback, a política, a configuração ou o comportamento de entrega.
A sequência padrão
- Defina o contrato tipado do núcleo.
- Adicione o registro de plugins para esse contrato.
- Adicione um auxiliar de runtime compartilhado.
- Conecte um plugin de fornecedor real como comprovação.
- Migre os consumidores de funcionalidade/canal para o auxiliar de runtime.
- Adicione testes de contrato.
- Documente a configuração voltada ao operador e o modelo de responsabilidades.
O que fica onde
Pontos de integração de provedores e harnesses
Use hooks de provedor quando o comportamento pertencer ao contrato do provedor de modelo, e não ao loop genérico do agente. Alguns exemplos são parâmetros de solicitação específicos do provedor após a seleção do transporte, preferência de perfil de autenticação, sobreposições de prompts e roteamento de fallback subsequente após o failover de modelo/perfil. Use hooks de harness do agente quando o comportamento pertencer ao runtime que está executando um turno. Os harnesses podem classificar resultados explícitos do protocolo, como saída vazia, raciocínio sem saída visível ou um plano estruturado sem resposta final, para que a política externa de fallback do modelo possa decidir se deve tentar novamente. Mantenha ambos os pontos de integração restritos:- O núcleo controla a política de nova tentativa/fallback.
- Os plugins de provedor controlam parâmetros de solicitação, autenticação e indicações de roteamento específicos do provedor.
- Os plugins de harness controlam a classificação de tentativas específica do runtime.
- Plugins de terceiros retornam indicações, não mutações diretas do estado do núcleo.
Lista de verificação de arquivos
Para uma nova capacidade, espere modificar estas áreas:src/<capability>/types.tssrc/<capability>/...registry/runtime.tssrc/plugins/types.tssrc/plugins/registry.tssrc/plugins/captured-registration.tssrc/plugins/contracts/registry.tssrc/plugins/runtime/types-core.tssrc/plugins/runtime/index.tssrc/plugin-sdk/<capability>.tssrc/plugin-sdk/<capability>-runtime.ts- Um ou mais pacotes de plugins incluídos na distribuição.
- Configuração, documentação e testes.
Exemplo prático: geração de imagens
A geração de imagens segue a estrutura padrão:- O núcleo define
ImageGenerationProvider. - O núcleo expõe
registerImageGenerationProvider(...). - O núcleo expõe
api.runtime.imageGeneration.generate(...)e.listProviders(...). - Os plugins de fornecedores (
comfy,deepinfra,fal,google,litellm,microsoft-foundry,minimax,openai,openrouter,vydra,xai) registram implementações respaldadas por fornecedores. - Futuros fornecedores registram o mesmo contrato sem alterar canais/ferramentas.
agents.defaults.imageModelanalisa imagens.agents.defaults.imageGenerationModelgera imagens.
Provedores de embeddings
UseregisterEmbeddingProvider(...) / contrato embeddingProviders para
provedores reutilizáveis de embeddings vetoriais. Este contrato é intencionalmente mais amplo
que a memória: ferramentas, busca, recuperação, importadores ou futuros plugins de funcionalidade
podem consumir embeddings sem depender do mecanismo de memória. A busca na memória
também consome embeddingProviders genéricos.
A API de registro mais antiga, específica para memória, e o contrato memoryEmbeddingProviders
estão obsoletos. Use registerEmbeddingProvider e
embeddingProviders para todos os novos provedores de embeddings.
Lista de verificação da revisão
Antes de disponibilizar uma nova capacidade, verifique:- Nenhum canal/ferramenta importa diretamente o código de um fornecedor.
- O auxiliar de runtime é o caminho compartilhado.
- Pelo menos um teste de contrato valida a responsabilidade dos componentes incluídos na distribuição.
- A documentação de configuração informa a nova chave de modelo/configuração.
- A documentação de plugins explica o limite de responsabilidade.
Conteúdo relacionado
- Aspectos internos dos plugins — modelo de capacidades, responsabilidades, pipeline de carregamento e auxiliares de runtime.
- Desenvolvimento de plugins — tutorial do primeiro plugin.
- Visão geral do SDK — mapa de importações e referência da API de registro.
- Criação de Skills — superfície complementar para colaboradores.