clawhub: quando vuoi la risoluzione ClawHub.
Requisiti
- Usa Node 22.19+, Node 23.11+ o Node 24+ e un package manager come
npmopnpm. - Familiarità con i moduli TypeScript ESM.
- Per lavorare su Plugin in bundle nel repository, clona il repository ed esegui
pnpm install. Lo sviluppo di Plugin da checkout del sorgente è solo pnpm perché OpenClaw carica i Plugin in bundle dai pacchetti workspaceextensions/*.
Scegli la forma del Plugin
Plugin di canale
Collega OpenClaw a una piattaforma di messaggistica.
Plugin provider
Aggiungi un provider di modelli, media, ricerca, fetch, voce o realtime.
Plugin backend CLI
Esegui una CLI AI locale tramite il fallback del modello OpenClaw.
Plugin strumento
Registra strumenti agente.
Avvio rapido
Crea un Plugin strumento minimo registrando uno strumento agente obbligatorio. Questa è la forma di Plugin utile più breve e mostra il pacchetto, il manifest, l’entry point e la prova locale.Crea i metadati del pacchetto
contracts.tools in modo che OpenClaw possa scoprire la proprietà senza caricare con entusiasmo ogni runtime di Plugin. Imposta activation.onStartup intenzionalmente. Questo esempio si avvia all’avvio del Gateway.Anche le superfici Plugin considerate attendibili dall’host sono controllate dal manifest e richiedono l’abilitazione esplicita per i Plugin installati. Se un Plugin installato registra api.registerAgentToolResultMiddleware(...), dichiara ogni runtime di destinazione in contracts.agentToolResultMiddleware. Se registra api.registerTrustedToolPolicy(...), dichiara ogni ID di policy in contracts.trustedToolPolicies. Queste dichiarazioni mantengono allineate l’ispezione in fase di installazione e la registrazione runtime.Per ogni campo del manifest, vedi manifest del Plugin.Registra lo strumento
index.ts
definePluginEntry per i Plugin non di canale. I Plugin di canale usano defineChannelPluginEntry.Testa il runtime
Per un Plugin installato o esterno, ispeziona il runtime caricato:Se il Plugin registra un comando CLI, esegui anche quel comando. Ad esempio, un comando demo dovrebbe avere una prova di esecuzione come
openclaw demo-plugin ping.Per un Plugin in bundle in questo repository, OpenClaw scopre i pacchetti Plugin da checkout del sorgente dal workspace extensions/*. Esegui il test mirato più vicino:Testa l'installazione del pacchetto
Prima di pubblicare un Plugin pronto come pacchetto, testa la stessa forma di installazione che avranno gli utenti. Prima aggiungi uno step di build, punta le voci runtime come
openclaw.extensions a JavaScript compilato come ./dist/index.js e assicurati che npm pack includa quell’output dist/. Le voci sorgente TypeScript servono solo per checkout del sorgente e percorsi di sviluppo locali.Quindi impacchetta il Plugin e installa il tarball con npm-pack::npm-pack: usa il progetto npm per-Plugin gestito da OpenClaw, quindi intercetta errori nelle dipendenze runtime che i test da checkout del sorgente possono nascondere. Dimostra la forma del pacchetto e delle dipendenze, non la fiducia ufficiale collegata al catalogo. Gli import runtime devono essere in dependencies o optionalDependencies; le dipendenze lasciate solo in devDependencies non verranno installate per il progetto runtime gestito.Non usare un’installazione da archivio/percorso grezza come prova finale per il comportamento ufficiale o privilegiato di un Plugin. I sorgenti grezzi sono utili per il debug locale, ma non dimostrano lo stesso percorso delle dipendenze delle installazioni npm o ClawHub. Se il tuo Plugin dipende dallo stato attendibile di Plugin ufficiale, aggiungi una seconda prova tramite un’installazione ufficiale supportata da catalogo o un percorso di pacchetto pubblicato che registra la fiducia ufficiale. Vedi risoluzione delle dipendenze del Plugin per dettagli su radice di installazione e proprietà delle dipendenze.Pubblica
Valida il pacchetto prima della pubblicazione:Gli snippet canonici di ClawHub si trovano in
docs/snippets/plugin-publish/.Registrazione degli strumenti
Gli strumenti possono essere obbligatori o opzionali. Gli strumenti obbligatori sono sempre disponibili quando il Plugin è abilitato. Gli strumenti opzionali richiedono l’opt-in dell’utente.api.registerTool(...) deve anche essere dichiarato nel manifest del Plugin:
tools.allow:
parameters, vengono ignorate e segnalate nello stesso modo. Gli strumenti registrati sono funzioni tipizzate che il modello può chiamare dopo il superamento dei controlli di policy e allowlist.
Le factory degli strumenti ricevono un oggetto di contesto fornito dal runtime. Usa ctx.activeModel quando uno strumento deve registrare, mostrare o adattarsi al modello attivo per il turno corrente. L’oggetto può includere provider, modelId e modelRef. Trattalo come metadati runtime informativi, non come un confine di sicurezza contro l’operatore locale, il codice dei Plugin installati o un runtime OpenClaw modificato. Gli strumenti locali sensibili devono comunque richiedere un opt-in esplicito del Plugin o dell’operatore e fallire in modo chiuso quando i metadati del modello attivo mancano o non sono adatti.
Il manifest dichiara proprietà e discovery; l’esecuzione chiama comunque l’implementazione live dello strumento registrato. Mantieni toolMetadata.<tool>.optional: true allineato con api.registerTool(..., { optional: true }) in modo che OpenClaw possa evitare di caricare quel runtime di Plugin finché lo strumento non viene esplicitamente inserito nell’allowlist.
Convenzioni di importazione
Importa dai sottopercorsi SDK focalizzati:api.ts e runtime-api.ts per gli import interni. Non importare il tuo Plugin tramite un percorso SDK. Gli helper specifici del provider devono restare nel pacchetto provider, a meno che il punto di raccordo non sia davvero generico.
I metodi RPC Gateway personalizzati sono un entry point avanzato. Mantienili su un prefisso specifico del Plugin; gli spazi dei nomi di amministrazione core come config.*, exec.approvals.*, operator.admin.*, wizard.* e update.* restano riservati e si risolvono in operator.admin. Il bridge openclaw/plugin-sdk/gateway-method-runtime è riservato alle route HTTP dei Plugin che dichiarano contracts.gatewayMethodDispatch: ["authenticated-request"].
Per la mappa completa degli import, vedi panoramica Plugin SDK.
Checklist prima dell’invio
package.json ha metadati
openclaw correttiIl manifest openclaw.plugin.json è presente e valido
L’entry point usa
defineChannelPluginEntry o definePluginEntryTutti gli import usano percorsi focalizzati
plugin-sdk/<subpath>Gli import interni usano moduli locali, non auto-import SDK
I test passano (
pnpm test -- <bundled-plugin-root>/my-plugin/)pnpm check passa (Plugin nel repository)Testa rispetto alle release beta
- Controlla i tag di rilascio GitHub su openclaw/openclaw e iscriviti tramite
Watch>Releases. I tag beta hanno un formato simile av2026.3.N-beta.1. Puoi anche attivare le notifiche per l’account X ufficiale di OpenClaw @openclaw per gli annunci di rilascio. - Testa il tuo plugin rispetto al tag beta non appena compare. La finestra prima della versione stabile di solito dura solo poche ore.
- Pubblica nel thread del tuo plugin nel canale Discord
plugin-forumdopo il test, indicandoall goodoppure cosa si è rotto. Se non hai ancora un thread, creane uno. - Se qualcosa si rompe, apri o aggiorna una issue intitolata
Beta blocker: <plugin-name> - <summary>e applica l’etichettabeta-blocker. Inserisci il link della issue nel tuo thread. - Apri una PR verso
mainintitolatafix(<plugin-id>): beta blocker - <summary>e collega la issue sia nella PR sia nel tuo thread Discord. I contributori non possono etichettare le PR, quindi il titolo è il segnale lato PR per maintainer e automazione. I blocker con una PR vengono uniti; i blocker senza PR potrebbero comunque essere rilasciati. I maintainer monitorano questi thread durante il beta testing. - Il silenzio significa verde. Se perdi la finestra, è probabile che la tua correzione arrivi nel ciclo successivo.
Passaggi successivi
Channel Plugins
Crea un plugin per canali di messaggistica
Provider Plugins
Crea un plugin provider di modelli
CLI Backend Plugins
Registra un backend CLI AI locale
SDK Overview
Riferimento alla mappa di importazione e all’API di registrazione
Runtime Helpers
TTS, ricerca, subagent tramite api.runtime
Testing
Utilità e pattern di test
Plugin Manifest
Riferimento completo allo schema del manifest