Zum Hauptinhalt springen

Überblick über das Plugin SDK

Das Plugin SDK ist der typisierte Vertrag zwischen Plugins und Core. Diese Seite ist die Referenz dafür, was importiert werden soll und was registriert werden kann.
Sie suchen eine Schritt-für-Schritt-Anleitung?

Importkonvention

Importieren Sie immer aus einem spezifischen Subpath:
import { definePluginEntry } from "openclaw/plugin-sdk/plugin-entry";
import { defineChannelPluginEntry } from "openclaw/plugin-sdk/channel-core";
Jeder Subpath ist ein kleines, in sich abgeschlossenes Modul. Das hält den Start schnell und verhindert Probleme mit zirkulären Abhängigkeiten. Für kanalspezifische Einstiegs-/Build-Helfer sollten Sie openclaw/plugin-sdk/channel-core bevorzugen; verwenden Sie openclaw/plugin-sdk/core für die umfassendere Dachoberfläche und gemeinsame Helfer wie buildChannelConfigSchema. Fügen Sie keine providerbenannten Convenience-Seams wie openclaw/plugin-sdk/slack, openclaw/plugin-sdk/discord, openclaw/plugin-sdk/signal, openclaw/plugin-sdk/whatsapp oder kanalmarkenspezifische Helper-Seams hinzu und machen Sie sich nicht von ihnen abhängig. Gebündelte Plugins sollten generische SDK-Subpaths in ihren eigenen api.ts- oder runtime-api.ts-Barrels zusammensetzen, und Core sollte entweder diese plugin-lokalen Barrels verwenden oder einen schmalen generischen SDK-Vertrag hinzufügen, wenn der Bedarf wirklich kanalübergreifend ist. Die generierte Export-Map enthält weiterhin eine kleine Menge an Hilfs-Seams für gebündelte Plugins wie plugin-sdk/feishu, plugin-sdk/feishu-setup, plugin-sdk/zalo, plugin-sdk/zalo-setup und plugin-sdk/matrix*. Diese Subpaths existieren nur für die Wartung gebündelter Plugins und zur Kompatibilität; sie werden absichtlich in der allgemeinen Tabelle unten ausgelassen und sind nicht der empfohlene Importpfad für neue Drittanbieter-Plugins.

Subpath-Referenz

Die am häufigsten verwendeten Subpaths, nach Zweck gruppiert. Die generierte vollständige Liste mit mehr als 200 Subpaths befindet sich in scripts/lib/plugin-sdk-entrypoints.json. Reservierte Hilfs-Subpaths für gebündelte Plugins erscheinen weiterhin in dieser generierten Liste. Behandeln Sie sie als Implementierungsdetail-/Kompatibilitätsoberflächen, sofern nicht eine Dokumentationsseite eine davon ausdrücklich als öffentlich bewirbt.

Plugin-Einstieg

SubpathWichtige Exporte
plugin-sdk/plugin-entrydefinePluginEntry
plugin-sdk/coredefineChannelPluginEntry, createChatChannelPlugin, createChannelPluginBase, defineSetupPluginEntry, buildChannelConfigSchema
plugin-sdk/config-schemaOpenClawSchema
plugin-sdk/provider-entrydefineSingleProviderPluginEntry
SubpathWichtige Exporte
plugin-sdk/channel-coredefineChannelPluginEntry, defineSetupPluginEntry, createChatChannelPlugin, createChannelPluginBase
plugin-sdk/config-schemaRoot-openclaw.json-Zod-Schemaexport (OpenClawSchema)
plugin-sdk/channel-setupcreateOptionalChannelSetupSurface, createOptionalChannelSetupAdapter, createOptionalChannelSetupWizard, plus DEFAULT_ACCOUNT_ID, createTopLevelChannelDmPolicy, setSetupChannelEnabled, splitSetupEntries
plugin-sdk/setupGemeinsame Helfer für Setup-Assistenten, Allowlist-Prompts, Builder für Setup-Status
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-coreHelfer für Multi-Account-Konfiguration/Aktions-Gates, Helfer für Standardkonto-Fallback
plugin-sdk/account-idDEFAULT_ACCOUNT_ID, Helfer zur Account-ID-Normalisierung
plugin-sdk/account-resolutionHelfer für Account-Lookup + Standard-Fallback
plugin-sdk/account-helpersSchmale Helfer für Kontolisten/Kontoaktionen
plugin-sdk/channel-pairingcreateChannelPairingController
plugin-sdk/channel-reply-pipelinecreateChannelReplyPipeline
plugin-sdk/channel-config-helperscreateHybridChannelConfigAdapter
plugin-sdk/channel-config-schemaTypen für Kanal-Konfigurationsschemata
plugin-sdk/telegram-command-configHelfer zur Normalisierung/Validierung benutzerdefinierter Telegram-Befehle mit Fallback auf gebündelten Vertrag
plugin-sdk/channel-policyresolveChannelGroupRequireMention
plugin-sdk/channel-lifecyclecreateAccountStatusSink
plugin-sdk/inbound-envelopeGemeinsame Helfer für eingehende Routen + Envelope-Builder
plugin-sdk/inbound-reply-dispatchGemeinsame Helfer zum Aufzeichnen und Dispatchen eingehender Ereignisse
plugin-sdk/messaging-targetsHelfer zum Parsen/Abgleichen von Zielen
plugin-sdk/outbound-mediaGemeinsame Helfer zum Laden ausgehender Medien
plugin-sdk/outbound-runtimeHelfer für ausgehende Identität/Sende-Delegates
plugin-sdk/thread-bindings-runtimeHelfer für den Lebenszyklus von Thread-Bindings und Adapter
plugin-sdk/agent-media-payloadLegacy-Builder für Agent-Media-Payloads
plugin-sdk/conversation-runtimeHelfer für Conversation-/Thread-Binding, Pairing und konfigurierte Bindings
plugin-sdk/runtime-config-snapshotHelfer für Runtime-Konfigurations-Snapshots
plugin-sdk/runtime-group-policyHelfer zur Auflösung von Gruppenrichtlinien zur Laufzeit
plugin-sdk/channel-statusGemeinsame Helfer für Kanalstatus-Snapshots/-Zusammenfassungen
plugin-sdk/channel-config-primitivesSchmale Primitive für Kanal-Konfigurationsschemata
plugin-sdk/channel-config-writesHelfer zur Autorisierung von Kanal-Konfigurationsschreibvorgängen
plugin-sdk/channel-plugin-commonGemeinsame Prelude-Exporte für Kanal-Plugins
plugin-sdk/allowlist-config-editHelfer zum Bearbeiten/Lesen von Allowlist-Konfigurationen
plugin-sdk/group-accessGemeinsame Helfer für Entscheidungen zum Gruppenzugriff
plugin-sdk/direct-dmGemeinsame Helfer für direkte-DM-Authentifizierung/Guards
plugin-sdk/interactive-runtimeHelfer zur Normalisierung/Reduktion interaktiver Antwort-Payloads
plugin-sdk/channel-inboundDebounce-, Mention-Matching- und Envelope-Helfer
plugin-sdk/channel-send-resultTypen für Antwortergebnisse
plugin-sdk/channel-actionscreateMessageToolButtonsSchema, createMessageToolCardSchema
plugin-sdk/channel-targetsHelfer zum Parsen/Abgleichen von Zielen
plugin-sdk/channel-contractKanal-Vertragstypen
plugin-sdk/channel-feedbackFeedback-/Reaktions-Verkabelung
SubpathWichtige Exporte
plugin-sdk/provider-entrydefineSingleProviderPluginEntry
plugin-sdk/provider-setupKuratierte Helfer für die Einrichtung lokaler/self-hosted Provider
plugin-sdk/self-hosted-provider-setupFokussierte Helfer für die Einrichtung selbstgehosteter OpenAI-kompatibler Provider
plugin-sdk/cli-backendStandardwerte für CLI-Backends + Watchdog-Konstanten
plugin-sdk/provider-auth-runtimeHelfer zur Runtime-Auflösung von API-Schlüsseln für Provider-Plugins
plugin-sdk/provider-auth-api-keyHelfer für API-Key-Onboarding/Profilschreibvorgänge
plugin-sdk/provider-auth-resultStandard-Builder für OAuth-Auth-Ergebnisse
plugin-sdk/provider-auth-loginGemeinsame interaktive Login-Helfer für Provider-Plugins
plugin-sdk/provider-env-varsHelfer zum Nachschlagen von Provider-Auth-Umgebungsvariablen
plugin-sdk/provider-authcreateProviderApiKeyAuthMethod, ensureApiKeyFromOptionEnvOrPrompt, upsertAuthProfile
plugin-sdk/provider-model-sharedProviderReplayFamily, buildProviderReplayFamilyHooks, normalizeModelCompat, gemeinsame Builder für Replay-Richtlinien, Provider-Endpunkt-Helfer und Helfer zur Modell-ID-Normalisierung wie normalizeNativeXaiModelId
plugin-sdk/provider-catalog-sharedfindCatalogTemplate, buildSingleProviderApiKeyCatalog, supportsNativeStreamingUsageCompat, applyProviderNativeStreamingUsageCompat
plugin-sdk/provider-httpGenerische Helfer für Provider-HTTP/Endpunktfähigkeiten
plugin-sdk/provider-web-fetchHelfer für Registrierung/Cache von Web-Fetch-Providern
plugin-sdk/provider-web-searchHelfer für Registrierung/Cache/Konfiguration von Web-Such-Providern
plugin-sdk/provider-toolsProviderToolCompatFamily, buildProviderToolCompatFamilyHooks, Gemini-Schema-Bereinigung + Diagnosefunktionen und xAI-Kompatibilitätshelfer wie resolveXaiModelCompatPatch / applyXaiModelCompat
plugin-sdk/provider-usagefetchClaudeUsage und Ähnliches
plugin-sdk/provider-streamProviderStreamFamily, buildProviderStreamFamilyHooks, composeProviderStreamWrappers, Typen für Stream-Wrapper und gemeinsame Wrapper-Helfer für Anthropic/Bedrock/Google/Kilocode/Moonshot/OpenAI/OpenRouter/Z.A.I/MiniMax/Copilot
plugin-sdk/provider-onboardHelfer zum Patchen der Onboarding-Konfiguration
plugin-sdk/global-singletonHelfer für prozesslokale Singleton-/Map-/Cache-Strukturen
SubpathWichtige Exporte
plugin-sdk/command-authresolveControlCommandGate, Helfer für Befehlsregistrierung, Helfer zur Sender-Autorisierung
plugin-sdk/approval-auth-runtimeHelfer zur Approver-Auflösung und Aktionsauthentifizierung im selben Chat
plugin-sdk/approval-client-runtimeHelfer für native Exec-Freigabeprofile/-Filter
plugin-sdk/approval-delivery-runtimeAdapter für native Freigabefähigkeiten/-zustellung
plugin-sdk/approval-native-runtimeHelfer für natives Freigabeziel + Account-Binding
plugin-sdk/approval-reply-runtimeHelfer für Antwort-Payloads bei Exec-/Plugin-Freigaben
plugin-sdk/command-auth-nativeNative Befehlsauthentifizierung + Helfer für native Sitzungsziele
plugin-sdk/command-detectionGemeinsame Helfer zur Befehlserkennung
plugin-sdk/command-surfaceHelfer für Befehls-Body-Normalisierung und Befehlsoberfläche
plugin-sdk/allow-fromformatAllowFromLowercase
plugin-sdk/security-runtimeGemeinsame Helfer für Trust, DM-Gating, externe Inhalte und Secret-Erfassung
plugin-sdk/ssrf-policyHelfer für Host-Allowlist und SSRF-Richtlinien für private Netzwerke
plugin-sdk/ssrf-runtimeHelfer für pinned dispatcher, SSRF-geschütztes Fetch und SSRF-Richtlinien
plugin-sdk/secret-inputHelfer zum Parsen von Secret-Eingaben
plugin-sdk/webhook-ingressHelfer für Webhook-Requests/-Ziele
plugin-sdk/webhook-request-guardsHelfer für Body-Größe/Timeout von Requests
SubpathWichtige Exporte
plugin-sdk/runtimeBreite Helfer für Runtime/Logging/Backups/Plugin-Installationen
plugin-sdk/runtime-envSchmale Helfer für Runtime-Umgebung, Logger, Timeouts, Retries und Backoff
plugin-sdk/runtime-storecreatePluginRuntimeStore
plugin-sdk/plugin-runtimeGemeinsame Helfer für Plugin-Befehle/-Hooks/-HTTP/-Interaktivität
plugin-sdk/hook-runtimeGemeinsame Helfer für Webhook-/interne Hook-Pipelines
plugin-sdk/lazy-runtimeHelfer für Lazy-Runtime-Import/Binding wie createLazyRuntimeModule, createLazyRuntimeMethod und createLazyRuntimeSurface
plugin-sdk/process-runtimeHelfer für Prozessausführung
plugin-sdk/cli-runtimeHelfer für CLI-Formatierung, Warten und Versionsinformationen
plugin-sdk/gateway-runtimeHelfer für Gateway-Client und Kanalstatus-Patches
plugin-sdk/config-runtimeHelfer zum Laden/Schreiben von Konfiguration
plugin-sdk/telegram-command-configHelfer zur Normalisierung von Telegram-Befehlsnamen/-Beschreibungen und zur Prüfung von Duplikaten/Konflikten, auch wenn die gebündelte Telegram-Vertragsoberfläche nicht verfügbar ist
plugin-sdk/approval-runtimeHelfer für Exec-/Plugin-Freigaben, Builder für Freigabefähigkeiten, Auth-/Profil-Helfer, native Routing-/Runtime-Helfer
plugin-sdk/reply-runtimeGemeinsame Helfer für eingehende/Antwort-Runtime, Chunking, Dispatch, Heartbeat, Antwortplanung
plugin-sdk/reply-dispatch-runtimeSchmale Helfer für Antwort-Dispatch/Finalisierung
plugin-sdk/reply-historyGemeinsame Helfer für Antwortverläufe in kurzen Fenstern wie buildHistoryContext, recordPendingHistoryEntry und clearHistoryEntriesIfEnabled
plugin-sdk/reply-referencecreateReplyReferencePlanner
plugin-sdk/reply-chunkingSchmale Helfer für Text-/Markdown-Chunking
plugin-sdk/session-store-runtimeHelfer für Pfade zum Sitzungsspeicher + updated-at
plugin-sdk/state-pathsHelfer für Pfade zu Status-/OAuth-Verzeichnissen
plugin-sdk/routingHelfer für Route/Sitzungsschlüssel/Account-Bindings wie resolveAgentRoute, buildAgentSessionKey und resolveDefaultAgentBoundAccountId
plugin-sdk/status-helpersGemeinsame Helfer für Kanal-/Kontostatus-Zusammenfassungen, Standardwerte für Runtime-Status und Issue-Metadaten
plugin-sdk/target-resolver-runtimeGemeinsame Helfer für Target-Resolver
plugin-sdk/string-normalization-runtimeHelfer zur Slug-/String-Normalisierung
plugin-sdk/request-urlZeichenketten-URLs aus fetch-/request-ähnlichen Eingaben extrahieren
plugin-sdk/run-commandZeitgesteuerter Command-Runner mit normalisierten stdout-/stderr-Ergebnissen
plugin-sdk/param-readersGängige Parameterleser für Tool/CLI
plugin-sdk/tool-sendKanonische Sendefeld-Ziele aus Tool-Argumenten extrahieren
plugin-sdk/temp-pathGemeinsame Helfer für Pfade zu temporären Downloads
plugin-sdk/logging-coreHelfer für Subsystem-Logger und Redaction
plugin-sdk/markdown-table-runtimeHelfer für Markdown-Tabellenmodi
plugin-sdk/json-storeKleine Helfer zum Lesen/Schreiben von JSON-Status
plugin-sdk/file-lockReentrante Helfer für Dateisperren
plugin-sdk/persistent-dedupeHelfer für diskgestützte Dedupe-Caches
plugin-sdk/acp-runtimeACP-Runtime-/Sitzungs-Helfer
plugin-sdk/agent-config-primitivesSchmale Primitive für Laufzeit-Konfigurationsschemata von Agenten
plugin-sdk/boolean-paramToleranter Reader für boolesche Parameter
plugin-sdk/dangerous-name-runtimeHelfer zur Auflösung gefährlicher Namensabgleiche
plugin-sdk/device-bootstrapHelfer für Geräte-Bootstrap und Pairing-Token
plugin-sdk/extension-sharedGemeinsame Primitive für passive Kanäle und Statushelfer
plugin-sdk/models-provider-runtimeHelfer für Provider-Antworten beim /models-Befehl
plugin-sdk/skill-commands-runtimeHelfer zum Auflisten von Skill-Befehlen
plugin-sdk/native-command-registryHelfer zum Registrieren/Erstellen/Serialisieren nativer Befehle
plugin-sdk/provider-zai-endpointHelfer zur Erkennung von Z.AI-Endpunkten
plugin-sdk/infra-runtimeHelfer für Systemereignisse/Heartbeats
plugin-sdk/collection-runtimeKleine Helfer für begrenzte Caches
plugin-sdk/diagnostic-runtimeHelfer für Diagnose-Flags und -Ereignisse
plugin-sdk/error-runtimeHelfer für Fehlergraph, Formatierung, gemeinsame Fehlerklassifizierung, isApprovalNotFoundError
plugin-sdk/fetch-runtimeHelfer für umschlossenes Fetch, Proxy und gepinnte Lookups
plugin-sdk/host-runtimeHelfer zur Normalisierung von Hostnamen und SCP-Hosts
plugin-sdk/retry-runtimeHelfer für Retry-Konfiguration und Retry-Runner
plugin-sdk/agent-runtimeHelfer für Agent-Verzeichnis/Identität/Workspace
plugin-sdk/directory-runtimeKonfigurationsgestützte Verzeichnisabfrage/-Dedupe
plugin-sdk/keyed-async-queueKeyedAsyncQueue
SubpathWichtige Exporte
plugin-sdk/media-runtimeGemeinsame Helfer für Medienabruf/-Transformation/-Speicherung sowie Builder für Medien-Payloads
plugin-sdk/media-understandingTypen für Media-Understanding-Provider sowie providerseitige Hilfsexporte für Bilder/Audio
plugin-sdk/text-runtimeGemeinsame Helfer für Text/Markdown/Logging wie das Entfernen von für Assistenten sichtbarem Text, Helfer für Rendering/Chunking/Tabellen in Markdown, Redaction-Helfer, Directive-Tag-Helfer und Hilfsfunktionen für sicheren Text
plugin-sdk/text-chunkingHelfer zum Chunking ausgehender Texte
plugin-sdk/speechTypen für Speech-Provider sowie providerseitige Helfer für Directives, Registries und Validierung
plugin-sdk/speech-coreGemeinsame Helfer für Speech-Provider-Typen, Registry, Directives und Normalisierung
plugin-sdk/realtime-transcriptionTypen für Realtime-Transcription-Provider und Registry-Helfer
plugin-sdk/realtime-voiceTypen für Realtime-Voice-Provider und Registry-Helfer
plugin-sdk/image-generationTypen für Image-Generation-Provider
plugin-sdk/image-generation-coreGemeinsame Helfer für Image-Generation-Typen, Failover, Auth und Registry
plugin-sdk/video-generationTypen für Video-Generation-Provider/-Requests/-Ergebnisse
plugin-sdk/video-generation-coreGemeinsame Helfer für Video-Generation-Typen, Failover-Helfer, Provider-Lookup und das Parsen von Modellreferenzen
plugin-sdk/webhook-targetsRegistry für Webhook-Ziele und Helfer für die Routeninstallation
plugin-sdk/webhook-pathHelfer zur Normalisierung von Webhook-Pfaden
plugin-sdk/web-mediaGemeinsame Helfer zum Laden entfernter/lokaler Medien
plugin-sdk/zodRe-exportiertes zod für Konsumenten des Plugin SDK
plugin-sdk/testinginstallCommonResolveTargetErrorCases, shouldAckReaction
SubpathWichtige Exporte
plugin-sdk/memory-coreGebündelte memory-core-Helferoberfläche für Manager-/Konfigurations-/Datei-/CLI-Helfer
plugin-sdk/memory-core-engine-runtimeRuntime-Fassade für Memory-Index/Suche
plugin-sdk/memory-core-host-engine-foundationExporte der Foundation-Engine für Memory-Hosts
plugin-sdk/memory-core-host-engine-embeddingsExporte der Embedding-Engine für Memory-Hosts
plugin-sdk/memory-core-host-engine-qmdExporte der QMD-Engine für Memory-Hosts
plugin-sdk/memory-core-host-engine-storageExporte der Storage-Engine für Memory-Hosts
plugin-sdk/memory-core-host-multimodalMultimodale Helfer für Memory-Hosts
plugin-sdk/memory-core-host-queryQuery-Helfer für Memory-Hosts
plugin-sdk/memory-core-host-secretSecret-Helfer für Memory-Hosts
plugin-sdk/memory-core-host-statusStatushelfer für Memory-Hosts
plugin-sdk/memory-core-host-runtime-cliCLI-Runtime-Helfer für Memory-Hosts
plugin-sdk/memory-core-host-runtime-coreCore-Runtime-Helfer für Memory-Hosts
plugin-sdk/memory-core-host-runtime-filesDatei-/Runtime-Helfer für Memory-Hosts
plugin-sdk/memory-lancedbGebündelte memory-lancedb-Helferoberfläche
FamilieAktuelle SubpathsVorgesehene Verwendung
Browserplugin-sdk/browser-config-support, plugin-sdk/browser-supportUnterstützungshelfer für gebündelte Browser-Plugins
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-bindingsHilfs-/Runtime-Oberfläche für gebündeltes Matrix
Lineplugin-sdk/line, plugin-sdk/line-core, plugin-sdk/line-runtime, plugin-sdk/line-surfaceHilfs-/Runtime-Oberfläche für gebündeltes LINE
IRCplugin-sdk/irc, plugin-sdk/irc-surfaceHilfsoberfläche für gebündeltes IRC
Kanalspezifische Helferplugin-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/twitchKompatibilitäts-/Hilfs-Seams für gebündelte Kanäle
Auth-/plugin-spezifische Helferplugin-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-callFunktions-/Plugin-Hilfs-Seams für gebündelte Features; plugin-sdk/github-copilot-token exportiert derzeit DEFAULT_COPILOT_API_BASE_URL, deriveCopilotApiBaseUrlFromToken und resolveCopilotApiToken

Registrierungs-API

Der Callback register(api) erhält ein Objekt vom Typ OpenClawPluginApi mit diesen Methoden:

Fähigkeitsregistrierung

MethodeWas registriert wird
api.registerProvider(...)Textinferenz (LLM)
api.registerCliBackend(...)Lokales CLI-Inferenz-Backend
api.registerChannel(...)Messaging-Kanal
api.registerSpeechProvider(...)Text-to-Speech-/STT-Synthese
api.registerRealtimeTranscriptionProvider(...)Streaming-Echtzeit-Transkription
api.registerRealtimeVoiceProvider(...)Duplex-Echtzeit-Sprachsitzungen
api.registerMediaUnderstandingProvider(...)Bild-/Audio-/Videoanalyse
api.registerImageGenerationProvider(...)Bildgenerierung
api.registerVideoGenerationProvider(...)Videogenerierung
api.registerWebFetchProvider(...)Web-Fetch-/Scrape-Provider
api.registerWebSearchProvider(...)Websuche

Tools und Befehle

MethodeWas registriert wird
api.registerTool(tool, opts?)Agent-Tool (erforderlich oder { optional: true })
api.registerCommand(def)Benutzerdefinierter Befehl (umgeht das LLM)

Infrastruktur

MethodeWas registriert wird
api.registerHook(events, handler, opts?)Ereignis-Hook
api.registerHttpRoute(params)Gateway-HTTP-Endpunkt
api.registerGatewayMethod(name, handler)Gateway-RPC-Methode
api.registerCli(registrar, opts?)CLI-Unterbefehl
api.registerService(service)Hintergrunddienst
api.registerInteractiveHandler(registration)Interaktiver Handler
Reservierte Core-Admin-Namespaces (config.*, exec.approvals.*, wizard.*, update.*) bleiben immer operator.admin, auch wenn ein Plugin versucht, einen engeren Scope für die Gateway-Methode zuzuweisen. Verwenden Sie für plugin-eigene Methoden vorzugsweise plugin-spezifische Präfixe.

Registrierungsmetadaten für die CLI

api.registerCli(registrar, opts?) akzeptiert zwei Arten von Metadaten auf oberster Ebene:
  • commands: explizite Befehlswurzeln, die dem Registrar gehören
  • descriptors: Parse-Zeit-Befehlsdeskriptoren für Root-CLI-Hilfe, Routing und Lazy-Registrierung der Plugin-CLI
Wenn ein Plugin-Befehl im normalen Root-CLI-Pfad lazy geladen bleiben soll, geben Sie descriptors an, die jede oberste Befehlswurzel abdecken, die von diesem Registrar bereitgestellt wird.
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,
      },
    ],
  },
);
Verwenden Sie commands allein nur dann, wenn Sie keine lazy Registrierung in der Root-CLI benötigen. Dieser eager Kompatibilitätspfad bleibt unterstützt, installiert aber keine deskriptorbasierten Platzhalter für lazy Laden zur Parse-Zeit.

Registrierung von CLI-Backends

Mit api.registerCliBackend(...) kann ein Plugin die Standardkonfiguration für ein lokales KI-CLI-Backend wie claude-cli oder codex-cli besitzen.
  • Die Backend-id wird zum Provider-Präfix in Modellreferenzen wie claude-cli/opus.
  • Die Backend-config verwendet dieselbe Struktur wie agents.defaults.cliBackends.<id>.
  • Benutzerkonfiguration hat weiterhin Vorrang. OpenClaw merged agents.defaults.cliBackends.<id> über den Plugin-Standardwert, bevor die CLI ausgeführt wird.
  • Verwenden Sie normalizeConfig, wenn ein Backend nach dem Merge Kompatibilitätsumschreibungen benötigt (zum Beispiel zur Normalisierung alter Flag-Formen).

Exklusive Slots

MethodeWas registriert wird
api.registerContextEngine(id, factory)Kontext-Engine (immer nur eine aktiv)
api.registerMemoryPromptSection(builder)Builder für Memory-Prompt-Abschnitt
api.registerMemoryFlushPlan(resolver)Resolver für Memory-Flush-Plan
api.registerMemoryRuntime(runtime)Adapter für Memory-Runtime

Memory-Embedding-Adapter

MethodeWas registriert wird
api.registerMemoryEmbeddingProvider(adapter)Memory-Embedding-Adapter für das aktive Plugin
  • registerMemoryPromptSection, registerMemoryFlushPlan und registerMemoryRuntime sind exklusiv für Memory-Plugins.
  • registerMemoryEmbeddingProvider erlaubt es dem aktiven Memory-Plugin, einen oder mehrere Embedding-Adapter-IDs zu registrieren (zum Beispiel openai, gemini oder eine benutzerdefinierte, vom Plugin definierte ID).
  • Benutzerkonfiguration wie agents.defaults.memorySearch.provider und agents.defaults.memorySearch.fallback wird gegen diese registrierten Adapter-IDs aufgelöst.

Ereignisse und Lebenszyklus

MethodeWas sie tut
api.on(hookName, handler, opts?)Typisierter Lebenszyklus-Hook
api.onConversationBindingResolved(handler)Callback für Conversation-Binding

Semantik von Hook-Entscheidungen

  • before_tool_call: Die Rückgabe von { block: true } ist terminal. Sobald ein Handler dies setzt, werden Handler mit niedrigerer Priorität übersprungen.
  • before_tool_call: Die Rückgabe von { block: false } wird als keine Entscheidung behandelt (wie das Weglassen von block), nicht als Überschreibung.
  • before_install: Die Rückgabe von { block: true } ist terminal. Sobald ein Handler dies setzt, werden Handler mit niedrigerer Priorität übersprungen.
  • before_install: Die Rückgabe von { block: false } wird als keine Entscheidung behandelt (wie das Weglassen von block), nicht als Überschreibung.
  • message_sending: Die Rückgabe von { cancel: true } ist terminal. Sobald ein Handler dies setzt, werden Handler mit niedrigerer Priorität übersprungen.
  • message_sending: Die Rückgabe von { cancel: false } wird als keine Entscheidung behandelt (wie das Weglassen von cancel), nicht als Überschreibung.

Felder des API-Objekts

FeldTypBeschreibung
api.idstringPlugin-ID
api.namestringAnzeigename
api.versionstring?Plugin-Version (optional)
api.descriptionstring?Plugin-Beschreibung (optional)
api.sourcestringQuellpfad des Plugins
api.rootDirstring?Root-Verzeichnis des Plugins (optional)
api.configOpenClawConfigAktueller Konfigurations-Snapshot (aktiver In-Memory-Runtime-Snapshot, wenn verfügbar)
api.pluginConfigRecord<string, unknown>Plugin-spezifische Konfiguration aus plugins.entries.<id>.config
api.runtimePluginRuntimeRuntime-Helfer
api.loggerPluginLoggerBereichsbezogener Logger (debug, info, warn, error)
api.registrationModePluginRegistrationModeAktueller Lademodus; "setup-runtime" ist das leichtgewichtige Fenster für Start/Setup vor dem vollständigen Entry
api.resolvePath(input)(string) => stringPfad relativ zum Plugin-Root auflösen

Interne Modulkonvention

Verwenden Sie innerhalb Ihres Plugins lokale Barrel-Dateien für interne Importe:
my-plugin/
  api.ts            # Öffentliche Exporte für externe Konsumenten
  runtime-api.ts    # Nur interne Runtime-Exporte
  index.ts          # Plugin-Einstiegspunkt
  setup-entry.ts    # Optionaler leichtgewichtiger reiner Setup-Einstieg
Importieren Sie Ihr eigenes Plugin im Produktionscode niemals über openclaw/plugin-sdk/<your-plugin>. Leiten Sie interne Importe über ./api.ts oder ./runtime-api.ts. Der SDK-Pfad ist nur der externe Vertrag.
Fassadengeladene öffentliche Oberflächen gebündelter Plugins (api.ts, runtime-api.ts, index.ts, setup-entry.ts und ähnliche öffentliche Entry-Dateien) bevorzugen jetzt den aktiven Runtime-Konfigurations-Snapshot, wenn OpenClaw bereits läuft. Falls noch kein Runtime-Snapshot existiert, greifen sie auf die auf dem Datenträger aufgelöste Konfigurationsdatei zurück. Provider-Plugins können auch ein schmales plugin-lokales Vertrags-Barrel bereitstellen, wenn ein Helfer absichtlich providerspezifisch ist und noch nicht in einen generischen SDK-Subpath gehört. Aktuelles gebündeltes Beispiel: Der Anthropic-Provider behält seine Claude- Stream-Helfer in seinem eigenen öffentlichen api.ts- / contract-api.ts-Seam, anstatt Anthropic-Beta-Header- und service_tier-Logik in einen generischen plugin-sdk/*-Vertrag hochzustufen. Weitere aktuelle gebündelte Beispiele:
  • @openclaw/openai-provider: api.ts exportiert Provider-Builder, Helfer für Standardmodelle und Builder für Realtime-Provider
  • @openclaw/openrouter-provider: api.ts exportiert den Provider-Builder sowie Helfer für Onboarding/Konfiguration
Produktionscode von Erweiterungen sollte auch Importe von openclaw/plugin-sdk/<other-plugin> vermeiden. Wenn ein Helfer wirklich gemeinsam genutzt wird, verschieben Sie ihn in einen neutralen SDK-Subpath wie openclaw/plugin-sdk/speech, .../provider-model-shared oder eine andere fähigkeitsorientierte Oberfläche, statt zwei Plugins miteinander zu koppeln.

Verwandte Themen