Vai al contenuto principale

Panoramica dell’SDK dei plugin

L’SDK dei plugin è il contratto tipizzato tra i plugin e il core. Questa pagina è il riferimento per cosa importare e cosa puoi registrare.
Cerchi una guida pratica?

Convenzione di importazione

Importa sempre da un sottopercorso specifico:
import { definePluginEntry } from "openclaw/plugin-sdk/plugin-entry";
import { defineChannelPluginEntry } from "openclaw/plugin-sdk/channel-core";
Ogni sottopercorso è un modulo piccolo e autosufficiente. Questo mantiene l’avvio rapido e previene problemi di dipendenze circolari. Per helper specifici di entry/build dei canali, preferisci openclaw/plugin-sdk/channel-core; mantieni openclaw/plugin-sdk/core per la superficie ombrello più ampia e per gli helper condivisi come buildChannelConfigSchema. Non aggiungere né dipendere da seam di convenienza con nome di provider come openclaw/plugin-sdk/slack, openclaw/plugin-sdk/discord, openclaw/plugin-sdk/signal, openclaw/plugin-sdk/whatsapp o seam helper con brand del canale. I plugin bundled dovrebbero comporre sottopercorsi SDK generici all’interno dei propri barrel api.ts o runtime-api.ts, e il core dovrebbe usare quei barrel locali al plugin oppure aggiungere un contratto SDK generico ristretto quando l’esigenza è davvero cross-channel. La mappa delle esportazioni generata contiene ancora un piccolo insieme di seam helper per plugin bundled come plugin-sdk/feishu, plugin-sdk/feishu-setup, plugin-sdk/zalo, plugin-sdk/zalo-setup e plugin-sdk/matrix*. Questi sottopercorsi esistono solo per manutenzione e compatibilità dei plugin bundled; sono intenzionalmente omessi dalla tabella comune qui sotto e non sono il percorso di importazione consigliato per nuovi plugin di terze parti.

Riferimento dei sottopercorsi

I sottopercorsi usati più comunemente, raggruppati per scopo. L’elenco completo generato di oltre 200 sottopercorsi si trova in scripts/lib/plugin-sdk-entrypoints.json. I sottopercorsi helper riservati ai plugin bundled compaiono ancora in quell’elenco generato. Trattali come superfici di dettaglio implementativo/compatibilità a meno che una pagina di documentazione non ne promuova esplicitamente una come pubblica.

Entry del plugin

SottopercorsoEsportazioni chiave
plugin-sdk/plugin-entrydefinePluginEntry
plugin-sdk/coredefineChannelPluginEntry, createChatChannelPlugin, createChannelPluginBase, defineSetupPluginEntry, buildChannelConfigSchema
plugin-sdk/config-schemaOpenClawSchema
plugin-sdk/provider-entrydefineSingleProviderPluginEntry
SottopercorsoEsportazioni chiave
plugin-sdk/channel-coredefineChannelPluginEntry, defineSetupPluginEntry, createChatChannelPlugin, createChannelPluginBase
plugin-sdk/config-schemaEsportazione dello schema Zod radice openclaw.json (OpenClawSchema)
plugin-sdk/channel-setupcreateOptionalChannelSetupSurface, createOptionalChannelSetupAdapter, createOptionalChannelSetupWizard, più DEFAULT_ACCOUNT_ID, createTopLevelChannelDmPolicy, setSetupChannelEnabled, splitSetupEntries
plugin-sdk/setupHelper condivisi per il wizard di setup, prompt allowlist, builder di stato del setup
plugin-sdk/setup-runtimecreatePatchedAccountSetupAdapter, createEnvPatchedAccountSetupAdapter, createSetupInputPresenceValidator, noteChannelLookupFailure, noteChannelLookupSummary, promptResolvedAllowFrom, splitSetupEntries, createAllowlistSetupWizardProxy, createDelegatedSetupWizardProxy
plugin-sdk/setup-adapter-runtimecreateEnvPatchedAccountSetupAdapter
plugin-sdk/setup-toolsformatCliCommand, detectBinary, extractArchive, resolveBrewExecutable, formatDocsLink, CONFIG_DIR
plugin-sdk/account-coreHelper per config/action-gate multi-account, helper di fallback dell’account predefinito
plugin-sdk/account-idDEFAULT_ACCOUNT_ID, helper di normalizzazione account-id
plugin-sdk/account-resolutionHelper per ricerca account + fallback predefinito
plugin-sdk/account-helpersHelper ristretti per elenco account/azioni sugli account
plugin-sdk/channel-pairingcreateChannelPairingController
plugin-sdk/channel-reply-pipelinecreateChannelReplyPipeline
plugin-sdk/channel-config-helperscreateHybridChannelConfigAdapter
plugin-sdk/channel-config-schemaTipi di schema di configurazione del canale
plugin-sdk/telegram-command-configHelper di normalizzazione/validazione per comandi personalizzati Telegram con fallback al contratto bundled
plugin-sdk/channel-policyresolveChannelGroupRequireMention
plugin-sdk/channel-lifecyclecreateAccountStatusSink
plugin-sdk/inbound-envelopeHelper condivisi per instradamento inbound e costruzione dell’envelope
plugin-sdk/inbound-reply-dispatchHelper condivisi per registrazione e dispatch inbound
plugin-sdk/messaging-targetsHelper per parsing/corrispondenza delle destinazioni
plugin-sdk/outbound-mediaHelper condivisi per caricamento dei media outbound
plugin-sdk/outbound-runtimeHelper per identità outbound e delegati di invio
plugin-sdk/thread-bindings-runtimeHelper per ciclo di vita e adattatori del binding dei thread
plugin-sdk/agent-media-payloadBuilder legacy del payload media dell’agente
plugin-sdk/conversation-runtimeHelper per binding conversazione/thread, pairing e binding configurati
plugin-sdk/runtime-config-snapshotHelper per snapshot della configurazione runtime
plugin-sdk/runtime-group-policyHelper per risoluzione della policy di gruppo a runtime
plugin-sdk/channel-statusHelper condivisi per snapshot/riepilogo dello stato del canale
plugin-sdk/channel-config-primitivesPrimitive ristrette dello schema di configurazione del canale
plugin-sdk/channel-config-writesHelper di autorizzazione per scritture della configurazione del canale
plugin-sdk/channel-plugin-commonEsportazioni di preambolo condivise per i plugin canale
plugin-sdk/allowlist-config-editHelper di lettura/modifica della configurazione allowlist
plugin-sdk/group-accessHelper condivisi per decisioni di accesso ai gruppi
plugin-sdk/direct-dmHelper condivisi per auth/guard dei DM diretti
plugin-sdk/interactive-runtimeHelper di normalizzazione/riduzione del payload di risposta interattiva
plugin-sdk/channel-inboundDebounce inbound, corrispondenza mention, helper per policy mention ed envelope
plugin-sdk/channel-send-resultTipi di risultato della risposta
plugin-sdk/channel-actionscreateMessageToolButtonsSchema, createMessageToolCardSchema
plugin-sdk/channel-targetsHelper per parsing/corrispondenza delle destinazioni
plugin-sdk/channel-contractTipi del contratto del canale
plugin-sdk/channel-feedbackWiring di feedback/reazioni
plugin-sdk/channel-secret-runtimeHelper ristretti per il contratto dei secret come collectSimpleChannelFieldAssignments, getChannelSurface, pushAssignment e tipi di destinazione dei secret
SottopercorsoEsportazioni chiave
plugin-sdk/provider-entrydefineSingleProviderPluginEntry
plugin-sdk/provider-setupHelper curati per il setup di provider locali/self-hosted
plugin-sdk/self-hosted-provider-setupHelper focalizzati per il setup di provider self-hosted compatibili con OpenAI
plugin-sdk/cli-backendValori predefiniti del backend CLI + costanti watchdog
plugin-sdk/provider-auth-runtimeHelper runtime per la risoluzione delle API key per i plugin provider
plugin-sdk/provider-auth-api-keyHelper per onboarding/scrittura del profilo API key come upsertApiKeyProfile
plugin-sdk/provider-auth-resultBuilder standard del risultato auth OAuth
plugin-sdk/provider-auth-loginHelper condivisi di login interattivo per i plugin provider
plugin-sdk/provider-env-varsHelper di ricerca delle env var auth dei provider
plugin-sdk/provider-authcreateProviderApiKeyAuthMethod, ensureApiKeyFromOptionEnvOrPrompt, upsertAuthProfile, upsertApiKeyProfile, writeOAuthCredentials
plugin-sdk/provider-model-sharedProviderReplayFamily, buildProviderReplayFamilyHooks, normalizeModelCompat, builder condivisi di replay-policy, helper per endpoint provider e helper di normalizzazione model-id come normalizeNativeXaiModelId
plugin-sdk/provider-catalog-sharedfindCatalogTemplate, buildSingleProviderApiKeyCatalog, supportsNativeStreamingUsageCompat, applyProviderNativeStreamingUsageCompat
plugin-sdk/provider-httpHelper generici per capability HTTP/endpoint dei provider
plugin-sdk/provider-web-fetch-contractHelper ristretti per contratti di configurazione/selezione web-fetch come enablePluginInConfig e WebFetchProviderPlugin
plugin-sdk/provider-web-fetchHelper per registrazione/cache dei provider web-fetch
plugin-sdk/provider-web-search-config-contractHelper ristretti per configurazione/credenziali web-search per provider che non richiedono wiring di abilitazione del plugin
plugin-sdk/provider-web-search-contractHelper ristretti per contratti di configurazione/credenziali web-search come createWebSearchProviderContractFields, enablePluginInConfig, resolveProviderWebSearchPluginConfig e setter/getter di credenziali con scope
plugin-sdk/provider-web-searchHelper per registrazione/cache/runtime dei provider web-search
plugin-sdk/provider-toolsProviderToolCompatFamily, buildProviderToolCompatFamilyHooks, pulizia schema Gemini + diagnostica, e helper di compatibilità xAI come resolveXaiModelCompatPatch / applyXaiModelCompat
plugin-sdk/provider-usagefetchClaudeUsage e simili
plugin-sdk/provider-streamProviderStreamFamily, buildProviderStreamFamilyHooks, composeProviderStreamWrappers, tipi di wrapper stream e helper wrapper condivisi per Anthropic/Bedrock/Google/Kilocode/Moonshot/OpenAI/OpenRouter/Z.A.I/MiniMax/Copilot
plugin-sdk/provider-onboardHelper per patch di configurazione onboarding
plugin-sdk/global-singletonHelper per singleton/map/cache locali al processo
SottopercorsoEsportazioni chiave
plugin-sdk/command-authresolveControlCommandGate, helper del registro comandi, helper di autorizzazione del mittente
plugin-sdk/command-statusBuilder di comandi/messaggi di help come buildCommandsMessagePaginated e buildHelpMessage
plugin-sdk/approval-auth-runtimeRisoluzione degli approvatori e helper di action-auth nella stessa chat
plugin-sdk/approval-client-runtimeHelper per profilo/filtro di approvazione exec nativa
plugin-sdk/approval-delivery-runtimeAdattatori di capability/consegna per approvazioni native
plugin-sdk/approval-gateway-runtimeHelper condiviso per la risoluzione del gateway di approvazione
plugin-sdk/approval-handler-adapter-runtimeHelper leggeri di caricamento dell’adattatore di approvazione nativa per entrypoint hot dei canali
plugin-sdk/approval-handler-runtimeHelper runtime più ampi per il gestore delle approvazioni; preferisci i seam più ristretti di adapter/gateway quando sono sufficienti
plugin-sdk/approval-native-runtimeHelper per destinazioni di approvazione native e binding degli account
plugin-sdk/approval-reply-runtimeHelper per payload di risposta delle approvazioni exec/plugin
plugin-sdk/command-auth-nativeHelper di auth dei comandi nativi + helper nativi per la destinazione della sessione
plugin-sdk/command-detectionHelper condivisi per il rilevamento dei comandi
plugin-sdk/command-surfaceNormalizzazione del corpo del comando e helper della superficie del comando
plugin-sdk/allow-fromformatAllowFromLowercase
plugin-sdk/channel-secret-runtimeHelper ristretti di raccolta per il contratto dei secret nelle superfici secret di canali/plugin
plugin-sdk/secret-ref-runtimeHelper ristretti coerceSecretRef e di tipizzazione SecretRef per il parsing del contratto secret/della configurazione
plugin-sdk/security-runtimeHelper condivisi per trust, gating DM, contenuti esterni e raccolta dei secret
plugin-sdk/ssrf-policyHelper per allowlist host e policy SSRF di rete privata
plugin-sdk/ssrf-runtimeDispatcher pinned, fetch protetto da SSRF e helper per policy SSRF
plugin-sdk/secret-inputHelper per il parsing degli input segreti
plugin-sdk/webhook-ingressHelper per richieste/destinazioni webhook
plugin-sdk/webhook-request-guardsHelper per dimensione body/timeout delle richieste
SottopercorsoEsportazioni chiave
plugin-sdk/runtimeAmpi helper per runtime/logging/backup/installazione plugin
plugin-sdk/runtime-envHelper ristretti per env runtime, logger, timeout, retry e backoff
plugin-sdk/channel-runtime-contextHelper generici per registrazione e lookup del contesto runtime del canale
plugin-sdk/runtime-storecreatePluginRuntimeStore
plugin-sdk/plugin-runtimeHelper condivisi per comandi/hook/http/interattivi dei plugin
plugin-sdk/hook-runtimeHelper condivisi per la pipeline di webhook/hook interni
plugin-sdk/lazy-runtimeHelper per import/binding lazy del runtime come createLazyRuntimeModule, createLazyRuntimeMethod e createLazyRuntimeSurface
plugin-sdk/process-runtimeHelper per exec dei processi
plugin-sdk/cli-runtimeHelper per formattazione CLI, attesa e versione
plugin-sdk/gateway-runtimeHelper per client gateway e patch dello stato del canale
plugin-sdk/config-runtimeHelper di caricamento/scrittura della configurazione
plugin-sdk/telegram-command-configNormalizzazione di nome/descrizione dei comandi Telegram e controlli di duplicati/conflitti, anche quando la superficie di contratto Telegram bundled non è disponibile
plugin-sdk/approval-runtimeHelper per approvazioni exec/plugin, builder di capability di approvazione, helper di auth/profilo, helper di routing/runtime nativi
plugin-sdk/reply-runtimeHelper runtime condivisi per inbound/reply, chunking, dispatch, heartbeat, pianificatore delle risposte
plugin-sdk/reply-dispatch-runtimeHelper ristretti per dispatch/finalizzazione delle risposte
plugin-sdk/reply-historyHelper condivisi per la cronologia delle risposte in finestre brevi come buildHistoryContext, recordPendingHistoryEntry e clearHistoryEntriesIfEnabled
plugin-sdk/reply-referencecreateReplyReferencePlanner
plugin-sdk/reply-chunkingHelper ristretti per chunking di testo/Markdown
plugin-sdk/session-store-runtimeHelper per percorso dello store di sessione e updated-at
plugin-sdk/state-pathsHelper per i percorsi delle directory state/OAuth
plugin-sdk/routingHelper per binding di route/session-key/account come resolveAgentRoute, buildAgentSessionKey e resolveDefaultAgentBoundAccountId
plugin-sdk/status-helpersHelper condivisi per riepilogo dello stato di canali/account, valori predefiniti dello stato runtime e helper per metadati dei problemi
plugin-sdk/target-resolver-runtimeHelper condivisi per il risolutore delle destinazioni
plugin-sdk/string-normalization-runtimeHelper per normalizzazione di slug/stringhe
plugin-sdk/request-urlEstrazione di URL stringa da input simili a fetch/request
plugin-sdk/run-commandRunner di comandi temporizzato con risultati stdout/stderr normalizzati
plugin-sdk/param-readersLettori comuni di parametri per strumenti/CLI
plugin-sdk/tool-payloadEstrazione di payload normalizzati da oggetti risultato degli strumenti
plugin-sdk/tool-sendEstrazione dei campi canonici della destinazione di invio dagli argomenti degli strumenti
plugin-sdk/temp-pathHelper condivisi per percorsi temporanei di download
plugin-sdk/logging-coreHelper per logger di sottosistema e redazione
plugin-sdk/markdown-table-runtimeHelper per la modalità tabella Markdown
plugin-sdk/json-storePiccoli helper di lettura/scrittura dello stato JSON
plugin-sdk/file-lockHelper per file-lock rientranti
plugin-sdk/persistent-dedupeHelper per cache di deduplicazione su disco
plugin-sdk/acp-runtimeHelper per runtime/sessione ACP e reply-dispatch
plugin-sdk/agent-config-primitivesPrimitive ristrette dello schema di configurazione del runtime agente
plugin-sdk/boolean-paramLettore permissivo di parametri booleani
plugin-sdk/dangerous-name-runtimeHelper di risoluzione per corrispondenza di nomi pericolosi
plugin-sdk/device-bootstrapHelper per bootstrap del dispositivo e token di pairing
plugin-sdk/extension-sharedPrimitive helper condivise per canali passivi, stato e proxy ambientali
plugin-sdk/models-provider-runtimeHelper di risposta per il comando /models e i provider
plugin-sdk/skill-commands-runtimeHelper per l’elenco dei comandi delle Skills
plugin-sdk/native-command-registryHelper per registro/build/serializzazione dei comandi nativi
plugin-sdk/agent-harnessSuperficie sperimentale per plugin trusted per agent harness di basso livello: tipi di harness, helper di steer/abort delle esecuzioni attive, bridge degli strumenti OpenClaw e utility per i risultati dei tentativi
plugin-sdk/provider-zai-endpointHelper di rilevamento endpoint Z.A.I
plugin-sdk/infra-runtimeHelper per eventi di sistema/heartbeat
plugin-sdk/collection-runtimePiccoli helper per cache limitate
plugin-sdk/diagnostic-runtimeHelper per flag ed eventi diagnostici
plugin-sdk/error-runtimeGrafo degli errori, formattazione, helper condivisi di classificazione degli errori, isApprovalNotFoundError
plugin-sdk/fetch-runtimeHelper per fetch wrapped, proxy e lookup pinned
plugin-sdk/host-runtimeHelper per normalizzazione di hostname e host SCP
plugin-sdk/retry-runtimeHelper per configurazione retry e runner di retry
plugin-sdk/agent-runtimeHelper per directory/identità/workspace degli agenti
plugin-sdk/directory-runtimeQuery/dedup di directory basate sulla configurazione
plugin-sdk/keyed-async-queueKeyedAsyncQueue
SottopercorsoEsportazioni chiave
plugin-sdk/media-runtimeHelper condivisi per fetch/trasformazione/archiviazione dei media più builder di payload media
plugin-sdk/media-generation-runtimeHelper condivisi per failover di generazione media, selezione dei candidati e messaggi per modelli mancanti
plugin-sdk/media-understandingTipi di provider per comprensione dei media più esportazioni helper lato provider per immagini/audio
plugin-sdk/text-runtimeHelper condivisi per testo/Markdown/logging come rimozione del testo visibile all’assistente, helper per rendering/chunking/tabelle Markdown, helper di redazione, helper per tag direttiva e utility per testo sicuro
plugin-sdk/text-chunkingHelper per chunking del testo in uscita
plugin-sdk/speechTipi di provider speech più helper lato provider per direttive, registro e validazione
plugin-sdk/speech-coreTipi condivisi di provider speech, registro, direttive e helper di normalizzazione
plugin-sdk/realtime-transcriptionTipi di provider per trascrizione realtime e helper di registro
plugin-sdk/realtime-voiceTipi di provider per voce realtime e helper di registro
plugin-sdk/image-generationTipi di provider per generazione immagini
plugin-sdk/image-generation-coreTipi condivisi per generazione immagini, failover, auth e helper di registro
plugin-sdk/music-generationTipi di provider/richiesta/risultato per generazione musicale
plugin-sdk/music-generation-coreTipi condivisi per generazione musicale, helper di failover, lookup provider e parsing dei riferimenti ai modelli
plugin-sdk/video-generationTipi di provider/richiesta/risultato per generazione video
plugin-sdk/video-generation-coreTipi condivisi per generazione video, helper di failover, lookup provider e parsing dei riferimenti ai modelli
plugin-sdk/webhook-targetsRegistro delle destinazioni webhook e helper di installazione delle route
plugin-sdk/webhook-pathHelper per normalizzazione del percorso webhook
plugin-sdk/web-mediaHelper condivisi per caricamento di media remoti/locali
plugin-sdk/zodzod riesportato per i consumer del plugin SDK
plugin-sdk/testinginstallCommonResolveTargetErrorCases, shouldAckReaction
SottopercorsoEsportazioni chiave
plugin-sdk/memory-coreSuperficie helper bundled memory-core per helper di manager/config/file/CLI
plugin-sdk/memory-core-engine-runtimeFacciata runtime per indice/ricerca della memoria
plugin-sdk/memory-core-host-engine-foundationEsportazioni del motore foundation dell’host memoria
plugin-sdk/memory-core-host-engine-embeddingsEsportazioni del motore embeddings dell’host memoria
plugin-sdk/memory-core-host-engine-qmdEsportazioni del motore QMD dell’host memoria
plugin-sdk/memory-core-host-engine-storageEsportazioni del motore storage dell’host memoria
plugin-sdk/memory-core-host-multimodalHelper multimodali dell’host memoria
plugin-sdk/memory-core-host-queryHelper di query dell’host memoria
plugin-sdk/memory-core-host-secretHelper dei secret dell’host memoria
plugin-sdk/memory-core-host-eventsHelper del journal eventi dell’host memoria
plugin-sdk/memory-core-host-statusHelper di stato dell’host memoria
plugin-sdk/memory-core-host-runtime-cliHelper runtime CLI dell’host memoria
plugin-sdk/memory-core-host-runtime-coreHelper core runtime dell’host memoria
plugin-sdk/memory-core-host-runtime-filesHelper per file/runtime dell’host memoria
plugin-sdk/memory-host-coreAlias neutrale rispetto al vendor per gli helper core runtime dell’host memoria
plugin-sdk/memory-host-eventsAlias neutrale rispetto al vendor per gli helper del journal eventi dell’host memoria
plugin-sdk/memory-host-filesAlias neutrale rispetto al vendor per gli helper file/runtime dell’host memoria
plugin-sdk/memory-host-markdownHelper condivisi per managed-markdown per plugin adiacenti alla memoria
plugin-sdk/memory-host-searchFacciata runtime della memoria attiva per l’accesso al search-manager
plugin-sdk/memory-host-statusAlias neutrale rispetto al vendor per gli helper di stato dell’host memoria
plugin-sdk/memory-lancedbSuperficie helper bundled memory-lancedb
FamigliaSottopercorsi attualiUso previsto
Browserplugin-sdk/browser-cdp, plugin-sdk/browser-config-runtime, plugin-sdk/browser-config-support, plugin-sdk/browser-control-auth, plugin-sdk/browser-node-runtime, plugin-sdk/browser-profiles, plugin-sdk/browser-security-runtime, plugin-sdk/browser-setup-tools, plugin-sdk/browser-supportHelper di supporto per il plugin browser bundled (browser-support resta il barrel di compatibilità)
Matrixplugin-sdk/matrix, plugin-sdk/matrix-helper, plugin-sdk/matrix-runtime-heavy, plugin-sdk/matrix-runtime-shared, plugin-sdk/matrix-runtime-surface, plugin-sdk/matrix-surface, plugin-sdk/matrix-thread-bindingsSuperficie helper/runtime Matrix bundled
Lineplugin-sdk/line, plugin-sdk/line-core, plugin-sdk/line-runtime, plugin-sdk/line-surfaceSuperficie helper/runtime LINE bundled
IRCplugin-sdk/irc, plugin-sdk/irc-surfaceSuperficie helper IRC bundled
Helper specifici del canaleplugin-sdk/googlechat, plugin-sdk/zalouser, plugin-sdk/bluebubbles, plugin-sdk/bluebubbles-policy, plugin-sdk/mattermost, plugin-sdk/mattermost-policy, plugin-sdk/feishu-conversation, plugin-sdk/msteams, plugin-sdk/nextcloud-talk, plugin-sdk/nostr, plugin-sdk/tlon, plugin-sdk/twitchSeam di compatibilità/helper per canali bundled
Helper specifici di auth/pluginplugin-sdk/github-copilot-login, plugin-sdk/github-copilot-token, plugin-sdk/diagnostics-otel, plugin-sdk/diffs, plugin-sdk/llm-task, plugin-sdk/thread-ownership, plugin-sdk/voice-callSeam helper per funzionalità/plugin bundled; plugin-sdk/github-copilot-token esporta attualmente DEFAULT_COPILOT_API_BASE_URL, deriveCopilotApiBaseUrlFromToken e resolveCopilotApiToken

API di registrazione

La callback register(api) riceve un oggetto OpenClawPluginApi con questi metodi:

Registrazione delle capability

MetodoCosa registra
api.registerProvider(...)Inferenza testuale (LLM)
api.registerAgentHarness(...)Esecutore sperimentale di basso livello dell’agente
api.registerCliBackend(...)Backend CLI locale per inferenza
api.registerChannel(...)Canale di messaggistica
api.registerSpeechProvider(...)Sintesi text-to-speech / STT
api.registerRealtimeTranscriptionProvider(...)Trascrizione realtime in streaming
api.registerRealtimeVoiceProvider(...)Sessioni vocali realtime duplex
api.registerMediaUnderstandingProvider(...)Analisi di immagini/audio/video
api.registerImageGenerationProvider(...)Generazione immagini
api.registerMusicGenerationProvider(...)Generazione musicale
api.registerVideoGenerationProvider(...)Generazione video
api.registerWebFetchProvider(...)Provider di fetch / scraping web
api.registerWebSearchProvider(...)Ricerca web

Strumenti e comandi

MetodoCosa registra
api.registerTool(tool, opts?)Strumento dell’agente (obbligatorio o { optional: true })
api.registerCommand(def)Comando personalizzato (bypassa l’LLM)

Infrastruttura

MetodoCosa registra
api.registerHook(events, handler, opts?)Hook evento
api.registerHttpRoute(params)Endpoint HTTP del Gateway
api.registerGatewayMethod(name, handler)Metodo RPC del Gateway
api.registerCli(registrar, opts?)Sottocomando CLI
api.registerService(service)Servizio in background
api.registerInteractiveHandler(registration)Gestore interattivo
api.registerMemoryPromptSupplement(builder)Sezione di prompt additiva adiacente alla memoria
api.registerMemoryCorpusSupplement(adapter)Corpus additivo per ricerca/lettura della memoria
Gli spazi dei nomi di amministrazione core riservati (config.*, exec.approvals.*, wizard.*, update.*) restano sempre operator.admin, anche se un plugin prova ad assegnare uno scope più ristretto a un metodo gateway. Preferisci prefissi specifici del plugin per metodi posseduti dal plugin.

Metadati di registrazione CLI

api.registerCli(registrar, opts?) accetta due tipi di metadati di livello superiore:
  • commands: radici di comando esplicite possedute dal registrar
  • descriptors: descrittori di comando a tempo di parsing usati per help della CLI root, instradamento e registrazione lazy della CLI del plugin
Se vuoi che un comando del plugin resti caricato lazy nel normale percorso CLI root, fornisci descriptors che coprano ogni radice di comando di livello superiore esposta da quel registrar.
api.registerCli(
  async ({ program }) => {
    const { registerMatrixCli } = await import("./src/cli.js");
    registerMatrixCli({ program });
  },
  {
    descriptors: [
      {
        name: "matrix",
        description: "Manage Matrix accounts, verification, devices, and profile state",
        hasSubcommands: true,
      },
    ],
  },
);
Usa commands da solo solo quando non ti serve la registrazione lazy della CLI root. Quel percorso di compatibilità eager continua a essere supportato, ma non installa segnaposto supportati da descriptor per il caricamento lazy a tempo di parsing.

Registrazione del backend CLI

api.registerCliBackend(...) consente a un plugin di possedere la configurazione predefinita per un backend CLI AI locale come codex-cli.
  • L’id del backend diventa il prefisso provider nei riferimenti ai modelli come codex-cli/gpt-5.
  • La config del backend usa la stessa struttura di agents.defaults.cliBackends.<id>.
  • La configurazione utente continua ad avere la precedenza. OpenClaw unisce agents.defaults.cliBackends.<id> sopra la configurazione predefinita del plugin prima di eseguire la CLI.
  • Usa normalizeConfig quando un backend necessita di riscritture di compatibilità dopo l’unione (ad esempio normalizzare vecchie forme di flag).

Slot esclusivi

MetodoCosa registra
api.registerContextEngine(id, factory)Motore di contesto (uno attivo alla volta). La callback assemble() riceve availableTools e citationsMode così il motore può adattare le aggiunte al prompt.
api.registerMemoryCapability(capability)Capability di memoria unificata
api.registerMemoryPromptSection(builder)Builder di sezione del prompt di memoria
api.registerMemoryFlushPlan(resolver)Risolutore del piano di flush della memoria
api.registerMemoryRuntime(runtime)Adattatore runtime della memoria

Adattatori di embedding della memoria

MetodoCosa registra
api.registerMemoryEmbeddingProvider(adapter)Adattatore di embedding della memoria per il plugin attivo
  • registerMemoryCapability è l’API preferita del plugin di memoria esclusivo.
  • registerMemoryCapability può anche esporre publicArtifacts.listArtifacts(...) così i plugin companion possono usare gli artifact di memoria esportati tramite openclaw/plugin-sdk/memory-host-core invece di raggiungere il layout privato di uno specifico plugin di memoria.
  • registerMemoryPromptSection, registerMemoryFlushPlan e registerMemoryRuntime sono API esclusive del plugin di memoria compatibili con i sistemi legacy.
  • registerMemoryEmbeddingProvider consente al plugin di memoria attivo di registrare uno o più id di adattatore embedding (ad esempio openai, gemini o un id personalizzato definito dal plugin).
  • La configurazione utente come agents.defaults.memorySearch.provider e agents.defaults.memorySearch.fallback viene risolta rispetto agli id di adattatore registrati.

Eventi e ciclo di vita

MetodoCosa fa
api.on(hookName, handler, opts?)Hook di ciclo di vita tipizzato
api.onConversationBindingResolved(handler)Callback del binding della conversazione

Semantica delle decisioni degli hook

  • before_tool_call: restituire { block: true } è terminale. Non appena un handler lo imposta, gli handler a priorità più bassa vengono saltati.
  • before_tool_call: restituire { block: false } viene trattato come nessuna decisione (come omettere block), non come un override.
  • before_install: restituire { block: true } è terminale. Non appena un handler lo imposta, gli handler a priorità più bassa vengono saltati.
  • before_install: restituire { block: false } viene trattato come nessuna decisione (come omettere block), non come un override.
  • reply_dispatch: restituire { handled: true, ... } è terminale. Non appena un handler rivendica il dispatch, gli handler a priorità più bassa e il percorso di dispatch predefinito del modello vengono saltati.
  • message_sending: restituire { cancel: true } è terminale. Non appena un handler lo imposta, gli handler a priorità più bassa vengono saltati.
  • message_sending: restituire { cancel: false } viene trattato come nessuna decisione (come omettere cancel), non come un override.

Campi dell’oggetto API

CampoTipoDescrizione
api.idstringID del plugin
api.namestringNome visualizzato
api.versionstring?Versione del plugin (facoltativa)
api.descriptionstring?Descrizione del plugin (facoltativa)
api.sourcestringPercorso sorgente del plugin
api.rootDirstring?Directory root del plugin (facoltativa)
api.configOpenClawConfigSnapshot della configurazione corrente (snapshot runtime in memoria attivo quando disponibile)
api.pluginConfigRecord<string, unknown>Configurazione specifica del plugin da plugins.entries.<id>.config
api.runtimePluginRuntimeHelper di runtime
api.loggerPluginLoggerLogger con scope (debug, info, warn, error)
api.registrationModePluginRegistrationModeModalità di caricamento corrente; "setup-runtime" è la finestra leggera di avvio/setup prima dell’entry completa
api.resolvePath(input)(string) => stringRisolve il percorso relativo alla root del plugin

Convenzione dei moduli interni

All’interno del tuo plugin, usa file barrel locali per gli import interni:
my-plugin/
  api.ts            # Esportazioni pubbliche per consumer esterni
  runtime-api.ts    # Esportazioni runtime solo interne
  index.ts          # Punto di ingresso del plugin
  setup-entry.ts    # Entry leggera solo setup (facoltativa)
Non importare mai il tuo plugin tramite openclaw/plugin-sdk/<your-plugin> dal codice di produzione. Instrada gli import interni tramite ./api.ts o ./runtime-api.ts. Il percorso SDK è solo il contratto esterno.
Le superfici pubbliche dei plugin bundled caricate tramite facade (api.ts, runtime-api.ts, index.ts, setup-entry.ts e file entry pubblici simili) ora preferiscono lo snapshot attivo della configurazione runtime quando OpenClaw è già in esecuzione. Se non esiste ancora uno snapshot runtime, ricadono sulla configurazione risolta su disco. I plugin provider possono anche esporre un barrel di contratto locale al plugin quando un helper è intenzionalmente specifico del provider e non appartiene ancora a un sottopercorso SDK generico. Esempio bundled attuale: il provider Anthropic mantiene i suoi helper di stream Claude nel proprio seam pubblico api.ts / contract-api.ts invece di promuovere la logica dell’header beta Anthropic e service_tier in un contratto generico plugin-sdk/*. Altri esempi bundled attuali:
  • @openclaw/openai-provider: api.ts esporta builder del provider, helper per il modello predefinito e builder del provider realtime
  • @openclaw/openrouter-provider: api.ts esporta il builder del provider più helper di onboarding/configurazione
Anche il codice di produzione delle estensioni dovrebbe evitare import da openclaw/plugin-sdk/<other-plugin>. Se un helper è davvero condiviso, promuovilo a un sottopercorso SDK neutrale come openclaw/plugin-sdk/speech, .../provider-model-shared o un’altra superficie orientata alle capability invece di accoppiare due plugin tra loro.

Correlati