Vai al contenuto principale

Panoramica del Plugin SDK

Il Plugin SDK è 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 import

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 rapido l’avvio e previene problemi di dipendenze circolari. Per gli helper di entry/build specifici dei canali, preferisci openclaw/plugin-sdk/channel-core; mantieni openclaw/plugin-sdk/core per la superficie umbrella più ampia e gli helper condivisi come buildChannelConfigSchema. Non aggiungere né dipendere da seam di convenienza con nomi di provider come openclaw/plugin-sdk/slack, openclaw/plugin-sdk/discord, openclaw/plugin-sdk/signal, openclaw/plugin-sdk/whatsapp o seam helper con branding di canale. I plugin inclusi 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 la necessità è davvero cross-channel. La mappa di esportazione generata contiene ancora un piccolo insieme di seam helper di plugin inclusi come plugin-sdk/feishu, plugin-sdk/feishu-setup, plugin-sdk/zalo, plugin-sdk/zalo-setup e plugin-sdk/matrix*. Questi sottopercorsi esistono solo per la manutenzione e la compatibilità dei plugin inclusi; sono intenzionalmente omessi dalla tabella comune qui sotto e non sono il percorso di import consigliato per nuovi plugin di terze parti.

Riferimento dei sottopercorsi

I sottopercorsi più usati, 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 inclusi compaiono ancora in quell’elenco generato. Trattali come superfici di dettaglio implementativo/compatibilità a meno che una pagina della 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 di openclaw.json (OpenClawSchema)
plugin-sdk/channel-setupcreateOptionalChannelSetupSurface, createOptionalChannelSetupAdapter, createOptionalChannelSetupWizard, più DEFAULT_ACCOUNT_ID, createTopLevelChannelDmPolicy, setSetupChannelEnabled, splitSetupEntries
plugin-sdk/setupHelper condivisi per la procedura guidata di setup, prompt allowlist, builder di stato 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 configurazione multi-account/action-gate e helper di fallback dell’account predefinito
plugin-sdk/account-idDEFAULT_ACCOUNT_ID, helper di normalizzazione dell’account id
plugin-sdk/account-resolutionHelper per ricerca account + fallback predefinito
plugin-sdk/account-helpersHelper ristretti per elenco account/azioni account
plugin-sdk/channel-pairingcreateChannelPairingController
plugin-sdk/channel-reply-pipelinecreateChannelReplyPipeline
plugin-sdk/channel-config-helperscreateHybridChannelConfigAdapter
plugin-sdk/channel-config-schemaTipi di schema della configurazione dei canali
plugin-sdk/telegram-command-configHelper di normalizzazione/validazione dei comandi personalizzati Telegram con fallback al contratto incluso
plugin-sdk/channel-policyresolveChannelGroupRequireMention
plugin-sdk/channel-lifecyclecreateAccountStatusSink
plugin-sdk/inbound-envelopeHelper condivisi per routing inbound + costruzione dell’envelope
plugin-sdk/inbound-reply-dispatchHelper condivisi per registrazione e dispatch inbound
plugin-sdk/messaging-targetsHelper per parsing/corrispondenza dei target
plugin-sdk/outbound-mediaHelper condivisi per caricamento dei media outbound
plugin-sdk/outbound-runtimeHelper per identità outbound/delegati di invio
plugin-sdk/thread-bindings-runtimeHelper per ciclo di vita e adattatori dei thread binding
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 runtime per la risoluzione della group policy
plugin-sdk/channel-statusHelper condivisi per snapshot/riepilogo dello stato del canale
plugin-sdk/channel-config-primitivesPrimitive ristrette dello schema di configurazione dei canali
plugin-sdk/channel-config-writesHelper di autorizzazione per scritture della configurazione dei canali
plugin-sdk/channel-plugin-commonEsportazioni di preludio condivise dei plugin di canale
plugin-sdk/allowlist-config-editHelper per lettura/modifica della configurazione allowlist
plugin-sdk/group-accessHelper condivisi per decisioni di accesso ai gruppi
plugin-sdk/direct-dmHelper condivisi per autenticazione/protezioni DM diretti
plugin-sdk/interactive-runtimeHelper per normalizzazione/riduzione dei payload di risposta interattiva
plugin-sdk/channel-inboundHelper per debounce, matching delle menzioni ed envelope
plugin-sdk/channel-send-resultTipi del risultato di risposta
plugin-sdk/channel-actionscreateMessageToolButtonsSchema, createMessageToolCardSchema
plugin-sdk/channel-targetsHelper per parsing/corrispondenza dei target
plugin-sdk/channel-contractTipi del contratto del canale
plugin-sdk/channel-feedbackWiring per feedback/reazioni
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 dei plugin provider
plugin-sdk/provider-auth-api-keyHelper per onboarding API key/scrittura del profilo
plugin-sdk/provider-auth-resultBuilder standard del risultato di autenticazione OAuth
plugin-sdk/provider-auth-loginHelper condivisi di login interattivo per plugin provider
plugin-sdk/provider-env-varsHelper per il lookup delle env var auth dei provider
plugin-sdk/provider-authcreateProviderApiKeyAuthMethod, ensureApiKeyFromOptionEnvOrPrompt, upsertAuthProfile
plugin-sdk/provider-model-sharedProviderReplayFamily, buildProviderReplayFamilyHooks, normalizeModelCompat, builder condivisi di replay-policy, helper per endpoint provider e helper di normalizzazione dell’id del modello come normalizeNativeXaiModelId
plugin-sdk/provider-catalog-sharedfindCatalogTemplate, buildSingleProviderApiKeyCatalog, supportsNativeStreamingUsageCompat, applyProviderNativeStreamingUsageCompat
plugin-sdk/provider-httpHelper generici per capacità HTTP/endpoint dei provider
plugin-sdk/provider-web-fetchHelper per registrazione/cache dei provider web-fetch
plugin-sdk/provider-web-searchHelper per registrazione/cache/config dei provider web-search
plugin-sdk/provider-toolsProviderToolCompatFamily, buildProviderToolCompatFamilyHooks, pulizia + diagnostica dello schema Gemini 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 condivisi per wrapper Anthropic/Bedrock/Google/Kilocode/Moonshot/OpenAI/OpenRouter/Z.A.I/MiniMax/Copilot
plugin-sdk/provider-onboardHelper per patch di configurazione dell’onboarding
plugin-sdk/global-singletonHelper per singleton/mappe/cache locali al processo
SottopercorsoEsportazioni chiave
plugin-sdk/command-authresolveControlCommandGate, helper per registro comandi, helper per autorizzazione del mittente
plugin-sdk/approval-auth-runtimeHelper per risoluzione dell’approvatore e action-auth nella stessa chat
plugin-sdk/approval-client-runtimeHelper nativi per profili/filtri di approvazione exec
plugin-sdk/approval-delivery-runtimeAdattatori nativi per capability/consegna delle approvazioni
plugin-sdk/approval-native-runtimeHelper nativi per target di approvazione + account binding
plugin-sdk/approval-reply-runtimeHelper per payload di risposta di approvazione exec/plugin
plugin-sdk/command-auth-nativeHelper nativi per auth dei comandi + target di sessione nativi
plugin-sdk/command-detectionHelper condivisi per rilevamento comandi
plugin-sdk/command-surfaceHelper per normalizzazione del corpo comando e superficie dei comandi
plugin-sdk/allow-fromformatAllowFromLowercase
plugin-sdk/security-runtimeHelper condivisi per fiducia, gating DM, contenuti esterni e raccolta secret
plugin-sdk/ssrf-policyHelper per allowlist host e policy SSRF della rete privata
plugin-sdk/ssrf-runtimeHelper per pinned-dispatcher, fetch protetto da SSRF e policy SSRF
plugin-sdk/secret-inputHelper per parsing degli input secret
plugin-sdk/webhook-ingressHelper per richieste/target webhook
plugin-sdk/webhook-request-guardsHelper per dimensione body/timeout della richiesta
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/runtime-storecreatePluginRuntimeStore
plugin-sdk/plugin-runtimeHelper condivisi per comandi/hook/http/interattivi dei plugin
plugin-sdk/hook-runtimeHelper condivisi per pipeline webhook/hook interni
plugin-sdk/lazy-runtimeHelper per import/binding lazy del runtime come createLazyRuntimeModule, createLazyRuntimeMethod e createLazyRuntimeSurface
plugin-sdk/process-runtimeHelper per esecuzione di processi
plugin-sdk/cli-runtimeHelper per formattazione CLI, attesa e versioni
plugin-sdk/gateway-runtimeHelper per client Gateway e patch di stato dei canali
plugin-sdk/config-runtimeHelper per 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 inclusa non è disponibile
plugin-sdk/approval-runtimeHelper per approvazioni exec/plugin, builder di capability di approvazione, helper auth/profilo, helper nativi di routing/runtime
plugin-sdk/reply-runtimeHelper condivisi per runtime inbound/reply, chunking, dispatch, heartbeat, pianificatore delle risposte
plugin-sdk/reply-dispatch-runtimeHelper ristretti per dispatch/finalizzazione della risposta
plugin-sdk/reply-historyHelper condivisi per la reply-history a finestra breve 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 session store + updated-at
plugin-sdk/state-pathsHelper per percorsi di stato/directory OAuth
plugin-sdk/routingHelper per route/session-key/account binding come resolveAgentRoute, buildAgentSessionKey e resolveDefaultAgentBoundAccountId
plugin-sdk/status-helpersHelper condivisi per riepilogo di stato canale/account, valori predefiniti dello stato runtime e helper per metadati degli issue
plugin-sdk/target-resolver-runtimeHelper condivisi per il resolver dei target
plugin-sdk/string-normalization-runtimeHelper di normalizzazione di slug/stringhe
plugin-sdk/request-urlEstrae URL stringa da input simili a fetch/request
plugin-sdk/run-commandEsecutore di comandi con timeout e risultati stdout/stderr normalizzati
plugin-sdk/param-readersLettori comuni di parametri tool/CLI
plugin-sdk/tool-sendEstrae campi canonici del target di invio dagli argomenti del tool
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 modalità tabella markdown
plugin-sdk/json-storePiccoli helper per lettura/scrittura di stato JSON
plugin-sdk/file-lockHelper per file-lock rientranti
plugin-sdk/persistent-dedupeHelper per cache dedupe persistente su disco
plugin-sdk/acp-runtimeHelper per runtime/sessioni ACP
plugin-sdk/agent-config-primitivesPrimitive ristrette dello schema di configurazione runtime dell’agente
plugin-sdk/boolean-paramLettore permissivo di parametri booleani
plugin-sdk/dangerous-name-runtimeHelper per risoluzione del matching di nomi pericolosi
plugin-sdk/device-bootstrapHelper per bootstrap del dispositivo e token di pairing
plugin-sdk/extension-sharedPrimitive helper condivise per canali passivi e stato
plugin-sdk/models-provider-runtimeHelper per risposta del comando /models/provider
plugin-sdk/skill-commands-runtimeHelper per elenco dei comandi Skills
plugin-sdk/native-command-registryHelper per registro/build/serializzazione dei comandi nativi
plugin-sdk/provider-zai-endpointHelper per rilevamento endpoint Z.AI
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-runtimeHelper per grafo degli errori, formattazione, classificazione condivisa degli errori, isApprovalNotFoundError
plugin-sdk/fetch-runtimeHelper per fetch wrappato, proxy e lookup fissati
plugin-sdk/host-runtimeHelper di normalizzazione per hostname e host SCP
plugin-sdk/retry-runtimeHelper per configurazione retry e runner di retry
plugin-sdk/agent-runtimeHelper per directory/identità/workspace dell’agente
plugin-sdk/directory-runtimeQuery/dedup di directory supportata da configurazione
plugin-sdk/keyed-async-queueKeyedAsyncQueue
SottopercorsoEsportazioni chiave
plugin-sdk/media-runtimeHelper condivisi per fetch/trasformazione/storage dei media più builder del payload media
plugin-sdk/media-understandingTipi di provider per media understanding più esportazioni helper image/audio rivolte ai provider
plugin-sdk/text-runtimeHelper condivisi per testo/markdown/logging come rimozione del testo visibile all’assistente, helper di rendering/chunking/tabelle markdown, helper di redazione, helper per tag direttiva e utility di testo sicuro
plugin-sdk/text-chunkingHelper per chunking del testo outbound
plugin-sdk/speechTipi di provider speech più helper rivolti ai provider per direttive, registro e validazione
plugin-sdk/speech-coreTipi condivisi di provider speech, helper per registro, direttive e 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 di immagini
plugin-sdk/image-generation-coreTipi condivisi per generazione di immagini, helper per failover, auth e registro
plugin-sdk/video-generationTipi provider/request/result per generazione video
plugin-sdk/video-generation-coreTipi condivisi per generazione video, helper di failover, lookup dei provider e parsing dei model ref
plugin-sdk/webhook-targetsHelper per registro dei target webhook e 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 consumatori del Plugin SDK
plugin-sdk/testinginstallCommonResolveTargetErrorCases, shouldAckReaction
SottopercorsoEsportazioni chiave
plugin-sdk/memory-coreSuperficie helper inclusa di 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 host della memoria
plugin-sdk/memory-core-host-engine-embeddingsEsportazioni del motore embeddings host della memoria
plugin-sdk/memory-core-host-engine-qmdEsportazioni del motore QMD host della memoria
plugin-sdk/memory-core-host-engine-storageEsportazioni del motore storage host della memoria
plugin-sdk/memory-core-host-multimodalHelper multimodali host della memoria
plugin-sdk/memory-core-host-queryHelper di query host della memoria
plugin-sdk/memory-core-host-secretHelper secret host della memoria
plugin-sdk/memory-core-host-statusHelper di stato host della memoria
plugin-sdk/memory-core-host-runtime-cliHelper runtime CLI host della memoria
plugin-sdk/memory-core-host-runtime-coreHelper core runtime host della memoria
plugin-sdk/memory-core-host-runtime-filesHelper file/runtime host della memoria
plugin-sdk/memory-lancedbSuperficie helper inclusa di memory-lancedb
FamigliaSottopercorsi attualiUso previsto
Browserplugin-sdk/browser-config-support, plugin-sdk/browser-supportHelper di supporto per il plugin browser incluso
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 inclusa
Lineplugin-sdk/line, plugin-sdk/line-core, plugin-sdk/line-runtime, plugin-sdk/line-surfaceSuperficie helper/runtime LINE inclusa
IRCplugin-sdk/irc, plugin-sdk/irc-surfaceSuperficie helper IRC inclusa
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 helper/compatibilità dei canali inclusi
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 di funzionalità/plugin inclusi; 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.registerCliBackend(...)Backend CLI locale di 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 di immagini
api.registerVideoGenerationProvider(...)Generazione video
api.registerWebFetchProvider(...)Provider di web fetch / scrape
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 di 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)Handler interattivo
Gli spazi dei nomi amministrativi del core riservati (config.*, exec.approvals.*, wizard.*, update.*) restano sempre operator.admin, anche se un plugin tenta di assegnare un ambito più ristretto a un metodo gateway. Preferisci prefissi specifici del plugin per i metodi gestiti dal plugin.

Metadati di registrazione CLI

api.registerCli(registrar, opts?) accetta due tipi di metadati di primo livello:
  • commands: radici di comando esplicite possedute dal registrar
  • descriptors: descrittori di comando in fase di parsing usati per l’help della CLI radice, il routing e la registrazione lazy della CLI del plugin
Se vuoi che un comando del plugin resti lazy-loaded nel normale percorso della CLI radice, fornisci descriptors che coprano ogni radice di comando di primo livello esposta da quel registrar.
api.registerCli(
  async ({ program }) => {
    const { registerMatrixCli } = await import("./src/cli.js");
    registerMatrixCli({ program });
  },
  {
    descriptors: [
      {
        name: "matrix",
        description: "Gestisci account Matrix, verifica, dispositivi e stato del profilo",
        hasSubcommands: true,
      },
    ],
  },
);
Usa commands da solo solo quando non hai bisogno della registrazione lazy della CLI radice. Quel percorso di compatibilità eager resta supportato, ma non installa placeholder basati su descriptor per il lazy loading in fase di parsing.

Registrazione del backend CLI

api.registerCliBackend(...) permette a un plugin di possedere la configurazione predefinita per un backend CLI AI locale come claude-cli o codex-cli.
  • Il id del backend diventa il prefisso provider nei model ref come claude-cli/opus.
  • La config del backend usa la stessa forma di agents.defaults.cliBackends.<id>.
  • La configurazione utente ha comunque la precedenza. OpenClaw unisce agents.defaults.cliBackends.<id> sopra il valore predefinito del plugin prima di eseguire la CLI.
  • Usa normalizeConfig quando un backend ha bisogno di riscritture di compatibilità dopo il merge (ad esempio normalizzare vecchie forme di flag).

Slot esclusivi

MetodoCosa registra
api.registerContextEngine(id, factory)Motore di contesto (uno attivo alla volta)
api.registerMemoryPromptSection(builder)Builder di sezione prompt memoria
api.registerMemoryFlushPlan(resolver)Resolver 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
  • registerMemoryPromptSection, registerMemoryFlushPlan e registerMemoryRuntime sono esclusivi dei plugin di memoria.
  • 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 a quegli 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 di risoluzione del conversation binding

Semantica decisionale degli hook

  • before_tool_call: restituire { block: true } è terminale. Una volta che 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 override.
  • before_install: restituire { block: true } è terminale. Una volta che 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 override.
  • message_sending: restituire { cancel: true } è terminale. Una volta che 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 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 radice del plugin (facoltativa)
api.configOpenClawConfigSnapshot di configurazione corrente (snapshot runtime in-memory attivo quando disponibile)
api.pluginConfigRecord<string, unknown>Configurazione specifica del plugin da plugins.entries.<id>.config
api.runtimePluginRuntimeHelper runtime
api.loggerPluginLoggerLogger con scope (debug, info, warn, error)
api.registrationModePluginRegistrationModeModalità di caricamento corrente; "setup-runtime" è la finestra leggera di startup/setup prima dell’entry completa
api.resolvePath(input)(string) => stringRisolve il percorso relativo alla radice 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 consumatori esterni
  runtime-api.ts    # Esportazioni runtime solo interne
  index.ts          # Entry point del plugin
  setup-entry.ts    # Entry leggera opzionale solo per setup
Non importare mai il tuo stesso 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 inclusi caricate tramite facciata (api.ts, runtime-api.ts, index.ts, setup-entry.ts e file entry pubblici simili) ora preferiscono lo snapshot di configurazione runtime attivo quando OpenClaw è già in esecuzione. Se non esiste ancora alcuno snapshot runtime, ricadono sul file di configurazione risolto su disco. I plugin provider possono anche esporre un barrel contrattuale ristretto locale al plugin quando un helper è intenzionalmente specifico del provider e non appartiene ancora a un sottopercorso SDK generico. Esempio incluso 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 inclusi attuali:
  • @openclaw/openai-provider: api.ts esporta builder del provider, helper per modello predefinito e builder per provider realtime
  • @openclaw/openrouter-provider: api.ts esporta il builder del provider più helper per onboarding/configurazione
Anche il codice di produzione delle estensioni dovrebbe evitare gli import 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 a un’altra superficie orientata alle capability invece di accoppiare due plugin tra loro.

Correlati