Vai al contenuto principale

Plugin

I plugin estendono OpenClaw con nuove capacità: canali, provider di modelli, strumenti, skills, speech, trascrizione in tempo reale, voce in tempo reale, media-understanding, generazione di immagini, generazione video, web fetch, web search e altro ancora. Alcuni plugin sono core (forniti con OpenClaw), altri sono esterni (pubblicati su npm dalla community).

Avvio rapido

1

Vedi cosa è caricato

openclaw plugins list
2

Installa un plugin

# Da npm
openclaw plugins install @openclaw/voice-call

# Da una directory locale o un archivio
openclaw plugins install ./my-plugin
openclaw plugins install ./my-plugin.tgz
3

Riavvia il Gateway

openclaw gateway restart
Quindi configura in plugins.entries.\<id\>.config nel tuo file di configurazione.
Se preferisci il controllo nativo via chat, abilita commands.plugins: true e usa:
/plugin install clawhub:@openclaw/voice-call
/plugin show voice-call
/plugin enable voice-call
Il percorso di installazione usa lo stesso resolver della CLI: percorso/archivio locale, clawhub:<pkg> esplicito oppure specifica pacchetto semplice (prima ClawHub, poi fallback su npm). Se la configurazione non è valida, normalmente l’installazione fallisce in modo sicuro e ti indirizza a openclaw doctor --fix. L’unica eccezione di recupero è un ristretto percorso di reinstallazione di plugin inclusi per i plugin che scelgono di aderire a openclaw.install.allowInvalidConfigRecovery.

Tipi di plugin

OpenClaw riconosce due formati di plugin:
FormatoCome funzionaEsempi
Nativeopenclaw.plugin.json + modulo runtime; viene eseguito in-processPlugin ufficiali, pacchetti npm della community
BundleLayout compatibile con Codex/Claude/Cursor; mappato alle funzionalità OpenClaw.codex-plugin/, .claude-plugin/, .cursor-plugin/
Entrambi compaiono in openclaw plugins list. Vedi Plugin Bundles per i dettagli sui bundle. Se stai scrivendo un plugin nativo, inizia da Building Plugins e da Plugin SDK Overview.

Plugin ufficiali

Installabili (npm)

PluginPacchettoDocumentazione
Matrix@openclaw/matrixMatrix
Microsoft Teams@openclaw/msteamsMicrosoft Teams
Nostr@openclaw/nostrNostr
Voice Call@openclaw/voice-callVoice Call
Zalo@openclaw/zaloZalo
Zalo Personal@openclaw/zalouserZalo Personal

Core (forniti con OpenClaw)

anthropic, byteplus, cloudflare-ai-gateway, github-copilot, google, huggingface, kilocode, kimi-coding, minimax, mistral, qwen, moonshot, nvidia, openai, opencode, opencode-go, openrouter, qianfan, synthetic, together, venice, vercel-ai-gateway, volcengine, xiaomi, zai
  • memory-core — ricerca di memoria inclusa (predefinita tramite plugins.slots.memory)
  • memory-lancedb — memoria a lungo termine installata su richiesta con auto-recall/capture (imposta plugins.slots.memory = "memory-lancedb")
elevenlabs, microsoft
  • browser — plugin browser incluso per lo strumento browser, la CLI openclaw browser, il metodo gateway browser.request, il runtime browser e il servizio predefinito di controllo browser (abilitato per impostazione predefinita; disabilitalo prima di sostituirlo)
  • copilot-proxy — bridge VS Code Copilot Proxy (disabilitato per impostazione predefinita)
Cerchi plugin di terze parti? Vedi Community Plugins.

Configurazione

{
  plugins: {
    enabled: true,
    allow: ["voice-call"],
    deny: ["untrusted-plugin"],
    load: { paths: ["~/Projects/oss/voice-call-extension"] },
    entries: {
      "voice-call": { enabled: true, config: { provider: "twilio" } },
    },
  },
}
CampoDescrizione
enabledInterruttore principale (predefinito: true)
allowAllowlist dei plugin (facoltativa)
denyDenylist dei plugin (facoltativa; deny ha precedenza)
load.pathsFile/directory plugin aggiuntivi
slotsSelettori di slot esclusivi (ad es. memory, contextEngine)
entries.\<id\>Attivazione/disattivazione + configurazione per plugin
Le modifiche alla configurazione richiedono un riavvio del gateway. Se il Gateway è in esecuzione con config watch + riavvio in-process abilitato (il percorso predefinito di openclaw gateway), quel riavvio viene di solito eseguito automaticamente poco dopo che la scrittura della configurazione è stata applicata.
  • Disabilitato: il plugin esiste ma le regole di abilitazione lo hanno disattivato. La configurazione viene mantenuta.
  • Mancante: la configurazione fa riferimento a un ID plugin che il rilevamento non ha trovato.
  • Non valido: il plugin esiste ma la sua configurazione non corrisponde allo schema dichiarato.

Rilevamento e precedenza

OpenClaw analizza i plugin in questo ordine (la prima corrispondenza vince):
1

Percorsi di configurazione

plugins.load.paths — percorsi espliciti di file o directory.
2

Estensioni del workspace

\<workspace\>/.openclaw/<plugin-root>/*.ts e \<workspace\>/.openclaw/<plugin-root>/*/index.ts.
3

Estensioni globali

~/.openclaw/<plugin-root>/*.ts e ~/.openclaw/<plugin-root>/*/index.ts.
4

Plugin inclusi

Forniti con OpenClaw. Molti sono abilitati per impostazione predefinita (provider di modelli, speech). Altri richiedono un’abilitazione esplicita.

Regole di abilitazione

  • plugins.enabled: false disabilita tutti i plugin
  • plugins.deny ha sempre la precedenza su allow
  • plugins.entries.\<id\>.enabled: false disabilita quel plugin
  • I plugin di origine workspace sono disabilitati per impostazione predefinita (devono essere abilitati esplicitamente)
  • I plugin inclusi seguono l’insieme predefinito integrato attivo salvo override
  • Gli slot esclusivi possono forzare l’abilitazione del plugin selezionato per quello slot

Slot dei plugin (categorie esclusive)

Alcune categorie sono esclusive (solo una può essere attiva alla volta):
{
  plugins: {
    slots: {
      memory: "memory-core", // oppure "none" per disabilitare
      contextEngine: "legacy", // oppure un ID plugin
    },
  },
}
SlotCosa controllaPredefinito
memoryPlugin di memoria attivomemory-core
contextEngineMotore di contesto attivolegacy (integrato)

Riferimento CLI

openclaw plugins list                       # inventario compatto
openclaw plugins list --enabled            # solo plugin caricati
openclaw plugins list --verbose            # righe di dettaglio per plugin
openclaw plugins list --json               # inventario leggibile da macchina
openclaw plugins inspect <id>              # dettaglio approfondito
openclaw plugins inspect <id> --json       # leggibile da macchina
openclaw plugins inspect --all             # tabella dell'intera flotta
openclaw plugins info <id>                 # alias di inspect
openclaw plugins doctor                    # diagnostica

openclaw plugins install <package>         # installa (prima ClawHub, poi npm)
openclaw plugins install clawhub:<pkg>     # installa solo da ClawHub
openclaw plugins install <spec> --force    # sovrascrive l'installazione esistente
openclaw plugins install <path>            # installa da percorso locale
openclaw plugins install -l <path>         # collega (senza copia) per sviluppo
openclaw plugins install <plugin> --marketplace <source>
openclaw plugins install <plugin> --marketplace https://github.com/<owner>/<repo>
openclaw plugins install <spec> --pin      # registra la specifica npm esatta risolta
openclaw plugins install <spec> --dangerously-force-unsafe-install
openclaw plugins update <id>             # aggiorna un plugin
openclaw plugins update <id> --dangerously-force-unsafe-install
openclaw plugins update --all            # aggiorna tutti
openclaw plugins uninstall <id>          # rimuove record di configurazione/installazione
openclaw plugins uninstall <id> --keep-files
openclaw plugins marketplace list <source>
openclaw plugins marketplace list <source> --json

openclaw plugins enable <id>
openclaw plugins disable <id>
I plugin inclusi vengono forniti con OpenClaw. Molti sono abilitati per impostazione predefinita (ad esempio i provider di modelli inclusi, i provider speech inclusi e il plugin browser incluso). Altri plugin inclusi richiedono comunque openclaw plugins enable <id>. --force sovrascrive sul posto un plugin o un pacchetto hook già installato. Non è supportato con --link, che riutilizza il percorso sorgente invece di copiare su una destinazione di installazione gestita. --pin è solo per npm. Non è supportato con --marketplace, perché le installazioni dal marketplace mantengono i metadati della sorgente del marketplace invece di una specifica npm. --dangerously-force-unsafe-install è un override di emergenza per falsi positivi del rilevatore integrato di codice pericoloso. Consente alle installazioni e agli aggiornamenti dei plugin di proseguire oltre i rilevamenti integrati critical, ma comunque non aggira i blocchi di policy before_install del plugin né i blocchi dovuti a errori di scansione. Questo flag CLI si applica solo ai flussi di installazione/aggiornamento dei plugin. Le installazioni di dipendenze skill supportate dal Gateway usano invece il corrispondente override di richiesta dangerouslyForceUnsafeInstall, mentre openclaw skills install resta il flusso separato di download/installazione skill da ClawHub. I bundle compatibili partecipano allo stesso flusso plugin di list/inspect/enable/disable. Il supporto runtime attuale include skill bundle, command-skills Claude, valori predefiniti Claude settings.json, valori predefiniti Claude .lsp.json e lspServers dichiarati nel manifest, command-skills Cursor e directory hook Codex compatibili. openclaw plugins inspect <id> riporta anche le capacità del bundle rilevate più le voci di server MCP e LSP supportate o non supportate per i plugin basati su bundle. Le sorgenti del marketplace possono essere un nome di marketplace noto di Claude da ~/.claude/plugins/known_marketplaces.json, una root di marketplace locale o un percorso marketplace.json, una forma abbreviata GitHub come owner/repo, un URL di repository GitHub oppure un URL git. Per i marketplace remoti, le voci plugin devono rimanere dentro il repository del marketplace clonato e usare solo sorgenti di percorso relative. Vedi il riferimento CLI openclaw plugins per tutti i dettagli.

Panoramica dell’API dei plugin

I plugin nativi esportano un oggetto entry che espone register(api). I plugin più vecchi possono ancora usare activate(api) come alias legacy, ma i nuovi plugin dovrebbero usare register.
export default definePluginEntry({
  id: "my-plugin",
  name: "My Plugin",
  register(api) {
    api.registerProvider({
      /* ... */
    });
    api.registerTool({
      /* ... */
    });
    api.registerChannel({
      /* ... */
    });
  },
});
OpenClaw carica l’oggetto entry e chiama register(api) durante l’attivazione del plugin. Il loader continua a usare come fallback activate(api) per i plugin più vecchi, ma i plugin inclusi e i nuovi plugin esterni dovrebbero trattare register come contratto pubblico. Metodi di registrazione comuni:
MetodoCosa registra
registerProviderProvider di modelli (LLM)
registerChannelCanale di chat
registerToolStrumento agente
registerHook / on(...)Hook del ciclo di vita
registerSpeechProviderText-to-speech / STT
registerRealtimeTranscriptionProviderSTT in streaming
registerRealtimeVoiceProviderVoce realtime duplex
registerMediaUnderstandingProviderAnalisi di immagini/audio
registerImageGenerationProviderGenerazione di immagini
registerVideoGenerationProviderGenerazione video
registerWebFetchProviderProvider di web fetch / scrape
registerWebSearchProviderWeb search
registerHttpRouteEndpoint HTTP
registerCommand / registerCliComandi CLI
registerContextEngineMotore di contesto
registerServiceServizio in background
Comportamento delle guardie hook per hook del ciclo di vita tipizzati:
  • before_tool_call: { block: true } è terminale; i gestori con priorità più bassa vengono saltati.
  • before_tool_call: { block: false } è un no-op e non annulla un blocco precedente.
  • before_install: { block: true } è terminale; i gestori con priorità più bassa vengono saltati.
  • before_install: { block: false } è un no-op e non annulla un blocco precedente.
  • message_sending: { cancel: true } è terminale; i gestori con priorità più bassa vengono saltati.
  • message_sending: { cancel: false } è un no-op e non annulla una precedente cancellazione.
Per il comportamento completo degli hook tipizzati, vedi SDK Overview.

Correlati