Passer au contenu principal

Vue d’ensemble du SDK Plugin

Le SDK Plugin est le contrat typé entre les plugins et le cœur. Cette page est la référence pour quoi importer et ce que vous pouvez enregistrer.
Vous cherchez un guide pratique ?

Convention d’import

Importez toujours depuis un sous-chemin spécifique :
import { definePluginEntry } from "openclaw/plugin-sdk/plugin-entry";
import { defineChannelPluginEntry } from "openclaw/plugin-sdk/channel-core";
Chaque sous-chemin est un petit module autonome. Cela garde un démarrage rapide et évite les problèmes de dépendances circulaires. Pour les helpers d’entrée/de build spécifiques aux canaux, préférez openclaw/plugin-sdk/channel-core ; gardez openclaw/plugin-sdk/core pour la surface parapluie plus large et les helpers partagés tels que buildChannelConfigSchema. N’ajoutez pas et ne dépendez pas de coutures pratiques nommées par fournisseur telles que openclaw/plugin-sdk/slack, openclaw/plugin-sdk/discord, openclaw/plugin-sdk/signal, openclaw/plugin-sdk/whatsapp, ou des coutures de helpers marquées au nom d’un canal. Les plugins intégrés doivent composer des sous-chemins génériques du SDK dans leurs propres barrels api.ts ou runtime-api.ts, et le cœur doit soit utiliser ces barrels locaux au plugin soit ajouter un contrat SDK générique étroit lorsque le besoin est réellement inter-canaux. La carte d’export générée contient toujours un petit ensemble de coutures helper pour plugins intégrés telles que plugin-sdk/feishu, plugin-sdk/feishu-setup, plugin-sdk/zalo, plugin-sdk/zalo-setup, et plugin-sdk/matrix*. Ces sous-chemins existent uniquement pour la maintenance et la compatibilité des plugins intégrés ; ils sont volontairement omis du tableau commun ci-dessous et ne constituent pas le chemin d’import recommandé pour les nouveaux plugins tiers.

Référence des sous-chemins

Les sous-chemins les plus couramment utilisés, regroupés par objectif. La liste complète générée des 200+ sous-chemins se trouve dans scripts/lib/plugin-sdk-entrypoints.json. Les sous-chemins helper réservés aux plugins intégrés apparaissent encore dans cette liste générée. Traitez-les comme des surfaces de détail d’implémentation/compatibilité à moins qu’une page de documentation n’en promeuve explicitement une comme publique.

Entrée de plugin

Sous-cheminExports clés
plugin-sdk/plugin-entrydefinePluginEntry
plugin-sdk/coredefineChannelPluginEntry, createChatChannelPlugin, createChannelPluginBase, defineSetupPluginEntry, buildChannelConfigSchema
plugin-sdk/config-schemaOpenClawSchema
plugin-sdk/provider-entrydefineSingleProviderPluginEntry
Sous-cheminExports clés
plugin-sdk/channel-coredefineChannelPluginEntry, defineSetupPluginEntry, createChatChannelPlugin, createChannelPluginBase
plugin-sdk/config-schemaExport du schéma Zod racine openclaw.json (OpenClawSchema)
plugin-sdk/channel-setupcreateOptionalChannelSetupSurface, createOptionalChannelSetupAdapter, createOptionalChannelSetupWizard, plus DEFAULT_ACCOUNT_ID, createTopLevelChannelDmPolicy, setSetupChannelEnabled, splitSetupEntries
plugin-sdk/setupHelpers partagés pour l’assistant de configuration initiale, invites de liste d’autorisation, constructeurs d’état de configuration initiale
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-coreHelpers multi-compte de configuration/contrôle d’action, helpers de repli de compte par défaut
plugin-sdk/account-idDEFAULT_ACCOUNT_ID, helpers de normalisation d’identifiant de compte
plugin-sdk/account-resolutionRecherche de compte + helpers de repli par défaut
plugin-sdk/account-helpersHelpers étroits de liste d’actions/de comptes
plugin-sdk/channel-pairingcreateChannelPairingController
plugin-sdk/channel-reply-pipelinecreateChannelReplyPipeline
plugin-sdk/channel-config-helperscreateHybridChannelConfigAdapter
plugin-sdk/channel-config-schemaTypes de schéma de configuration de canal
plugin-sdk/telegram-command-configHelpers de normalisation/validation des commandes personnalisées Telegram avec repli de contrat intégré
plugin-sdk/command-gatingHelpers étroits de contrôle d’autorisation des commandes
plugin-sdk/channel-policyresolveChannelGroupRequireMention
plugin-sdk/channel-lifecyclecreateAccountStatusSink, helpers de cycle de vie/finalisation de flux brouillon
plugin-sdk/inbound-envelopeHelpers partagés de route entrante + construction d’enveloppe
plugin-sdk/inbound-reply-dispatchHelpers partagés d’enregistrement-et-répartition entrants
plugin-sdk/messaging-targetsHelpers d’analyse/correspondance des cibles
plugin-sdk/outbound-mediaHelpers partagés de chargement des médias sortants
plugin-sdk/outbound-runtimeHelpers d’identité sortante, de délégation d’envoi et de planification de charge utile
plugin-sdk/poll-runtimeHelpers étroits de normalisation des sondages
plugin-sdk/thread-bindings-runtimeHelpers de cycle de vie et d’adaptateur des liaisons de fil
plugin-sdk/agent-media-payloadConstructeur hérité de charge utile média d’agent
plugin-sdk/conversation-runtimeHelpers de liaison conversation/fil, d’appairage et de liaison configurée
plugin-sdk/runtime-config-snapshotHelper d’instantané de configuration d’exécution
plugin-sdk/runtime-group-policyHelpers de résolution de politique de groupe à l’exécution
plugin-sdk/channel-statusHelpers partagés d’instantané/résumé d’état de canal
plugin-sdk/channel-config-primitivesPrimitives étroites de schéma de configuration de canal
plugin-sdk/channel-config-writesHelpers d’autorisation d’écriture de configuration de canal
plugin-sdk/channel-plugin-commonExports partagés de prélude de plugin de canal
plugin-sdk/allowlist-config-editHelpers de lecture/modification de configuration de liste d’autorisation
plugin-sdk/group-accessHelpers partagés de décision d’accès de groupe
plugin-sdk/direct-dmHelpers partagés d’authentification/protection des messages privés directs
plugin-sdk/interactive-runtimePrésentation sémantique des messages, livraison et helpers hérités de réponse interactive. Consultez Présentation des messages
plugin-sdk/channel-inboundBarrel de compatibilité pour les helpers d’anti-rebond entrant, de correspondance de mention, de politique de mention et d’enveloppe
plugin-sdk/channel-mention-gatingHelpers étroits de politique de mention sans la surface d’exécution entrante plus large
plugin-sdk/channel-locationHelpers de contexte et de formatage d’emplacement de canal
plugin-sdk/channel-loggingHelpers de journalisation de canal pour les abandons entrants et les échecs de typing/accusé
plugin-sdk/channel-send-resultTypes de résultat de réponse
plugin-sdk/channel-actionsHelpers d’action de message de canal, plus helpers de schéma natif obsolètes conservés pour la compatibilité des plugins
plugin-sdk/channel-targetsHelpers d’analyse/correspondance des cibles
plugin-sdk/channel-contractTypes de contrat de canal
plugin-sdk/channel-feedbackCâblage de retour/réaction
plugin-sdk/channel-secret-runtimeHelpers étroits de contrat de secret tels que collectSimpleChannelFieldAssignments, getChannelSurface, pushAssignment, et types de cible de secret
Sous-cheminExports clés
plugin-sdk/provider-entrydefineSingleProviderPluginEntry
plugin-sdk/provider-setupHelpers sélectionnés de configuration initiale de fournisseur local/auto-hébergé
plugin-sdk/self-hosted-provider-setupHelpers ciblés de configuration initiale de fournisseur auto-hébergé compatible OpenAI
plugin-sdk/cli-backendValeurs par défaut du backend CLI + constantes watchdog
plugin-sdk/provider-auth-runtimeHelpers d’exécution de résolution de clé API pour les plugins de fournisseur
plugin-sdk/provider-auth-api-keyHelpers d’onboarding/écriture de profil de clé API tels que upsertApiKeyProfile
plugin-sdk/provider-auth-resultConstructeur standard de résultat d’authentification OAuth
plugin-sdk/provider-auth-loginHelpers interactifs partagés de connexion pour les plugins de fournisseur
plugin-sdk/provider-env-varsHelpers de recherche des variables d’environnement d’authentification fournisseur
plugin-sdk/provider-authcreateProviderApiKeyAuthMethod, ensureApiKeyFromOptionEnvOrPrompt, upsertAuthProfile, upsertApiKeyProfile, writeOAuthCredentials
plugin-sdk/provider-model-sharedProviderReplayFamily, buildProviderReplayFamilyHooks, normalizeModelCompat, constructeurs partagés de politique de replay, helpers de point de terminaison fournisseur, et helpers de normalisation d’identifiant de modèle tels que normalizeNativeXaiModelId
plugin-sdk/provider-catalog-sharedfindCatalogTemplate, buildSingleProviderApiKeyCatalog, supportsNativeStreamingUsageCompat, applyProviderNativeStreamingUsageCompat
plugin-sdk/provider-httpHelpers génériques de capacité HTTP/point de terminaison fournisseur
plugin-sdk/provider-web-fetch-contractHelpers étroits de contrat config/sélection web-fetch tels que enablePluginInConfig et WebFetchProviderPlugin
plugin-sdk/provider-web-fetchHelpers d’enregistrement/cache de fournisseur web-fetch
plugin-sdk/provider-web-search-config-contractHelpers étroits de configuration/d’identifiants web-search pour les fournisseurs qui n’ont pas besoin du câblage d’activation de plugin
plugin-sdk/provider-web-search-contractHelpers étroits de contrat de configuration/d’identifiants web-search tels que createWebSearchProviderContractFields, enablePluginInConfig, resolveProviderWebSearchPluginConfig, et accesseurs/setters d’identifiants limités à une portée
plugin-sdk/provider-web-searchHelpers d’enregistrement/cache/exécution de fournisseur web-search
plugin-sdk/provider-toolsProviderToolCompatFamily, buildProviderToolCompatFamilyHooks, nettoyage du schéma Gemini + diagnostics, et helpers de compatibilité xAI tels que resolveXaiModelCompatPatch / applyXaiModelCompat
plugin-sdk/provider-usagefetchClaudeUsage et similaires
plugin-sdk/provider-streamProviderStreamFamily, buildProviderStreamFamilyHooks, composeProviderStreamWrappers, types d’enveloppe de flux, et helpers partagés d’enveloppe Anthropic/Bedrock/Google/Kilocode/Moonshot/OpenAI/OpenRouter/Z.A.I/MiniMax/Copilot
plugin-sdk/provider-transport-runtimeHelpers de transport natif fournisseur tels que fetch protégé, transformations de messages de transport, et flux d’événements de transport inscriptibles
plugin-sdk/provider-onboardHelpers de patch de configuration d’onboarding
plugin-sdk/global-singletonHelpers de singleton/map/cache locaux au processus
Sous-cheminExports clés
plugin-sdk/command-authresolveControlCommandGate, helpers de registre de commandes, helpers d’autorisation d’expéditeur
plugin-sdk/command-statusConstructeurs de messages de commande/d’aide tels que buildCommandsMessagePaginated et buildHelpMessage
plugin-sdk/approval-auth-runtimeRésolution des approbateurs et helpers d’authentification d’action dans la même discussion
plugin-sdk/approval-client-runtimeHelpers natifs de profil/filtre d’approbation exec
plugin-sdk/approval-delivery-runtimeAdaptateurs natifs de capacité/livraison d’approbation
plugin-sdk/approval-gateway-runtimeHelper partagé de résolution du gateway d’approbation
plugin-sdk/approval-handler-adapter-runtimeHelpers légers de chargement d’adaptateur natif d’approbation pour les points d’entrée de canal à chaud
plugin-sdk/approval-handler-runtimeHelpers plus larges d’exécution du gestionnaire d’approbation ; préférez les coutures plus étroites d’adaptateur/gateway lorsqu’elles suffisent
plugin-sdk/approval-native-runtimeHelpers natifs de cible d’approbation + liaison de compte
plugin-sdk/approval-reply-runtimeHelpers de charge utile de réponse d’approbation exec/plugin
plugin-sdk/command-auth-nativeHelpers natifs d’authentification de commande + de cible de session native
plugin-sdk/command-detectionHelpers partagés de détection de commande
plugin-sdk/command-surfaceHelpers de normalisation du corps de commande et de surface de commande
plugin-sdk/allow-fromformatAllowFromLowercase
plugin-sdk/channel-secret-runtimeHelpers étroits de collecte de contrat de secret pour les surfaces de secret de canal/plugin
plugin-sdk/secret-ref-runtimeHelpers étroits coerceSecretRef et de typage SecretRef pour l’analyse de contrat de secret/configuration
plugin-sdk/security-runtimeHelpers partagés de confiance, de contrôle des messages privés, de contenu externe et de collecte de secrets
plugin-sdk/ssrf-policyHelpers de politique SSRF pour liste d’autorisation d’hôtes et réseau privé
plugin-sdk/ssrf-dispatcherHelpers étroits de dispatcher épinglé sans la surface d’exécution infra large
plugin-sdk/ssrf-runtimeHelpers de dispatcher épinglé, fetch protégé contre SSRF et politique SSRF
plugin-sdk/secret-inputHelpers d’analyse d’entrée de secret
plugin-sdk/webhook-ingressHelpers de requête/cible Webhook
plugin-sdk/webhook-request-guardsHelpers de taille/timeout du corps de requête
Sous-cheminExports clés
plugin-sdk/runtimeHelpers larges d’exécution/journalisation/sauvegarde/installation de plugin
plugin-sdk/runtime-envHelpers étroits d’environnement d’exécution, journaliseur, timeout, retry, et backoff
plugin-sdk/channel-runtime-contextHelpers génériques d’enregistrement et de recherche du contexte d’exécution de canal
plugin-sdk/runtime-storecreatePluginRuntimeStore
plugin-sdk/plugin-runtimeHelpers partagés de plugin pour commandes/hooks/HTTP/interactif
plugin-sdk/hook-runtimeHelpers partagés de pipeline Webhook/hook interne
plugin-sdk/lazy-runtimeHelpers d’import/liaison d’exécution paresseuse tels que createLazyRuntimeModule, createLazyRuntimeMethod, et createLazyRuntimeSurface
plugin-sdk/process-runtimeHelpers d’exécution de processus
plugin-sdk/cli-runtimeHelpers CLI de formatage, attente et version
plugin-sdk/gateway-runtimeHelpers de client Gateway et de patch d’état de canal
plugin-sdk/config-runtimeHelpers de chargement/écriture de configuration
plugin-sdk/telegram-command-configNormalisation des noms/descriptions de commande Telegram et vérifications de doublon/conflit, même lorsque la surface de contrat Telegram intégrée n’est pas disponible
plugin-sdk/text-autolink-runtimeDétection d’autoliens de référence de fichier sans le barrel large text-runtime
plugin-sdk/approval-runtimeHelpers d’approbation exec/plugin, constructeurs de capacité d’approbation, helpers d’authentification/profil, helpers natifs de routage/exécution
plugin-sdk/reply-runtimeHelpers partagés d’exécution entrante/réponse, découpage, répartition, Heartbeat, planificateur de réponse
plugin-sdk/reply-dispatch-runtimeHelpers étroits de répartition/finalisation des réponses
plugin-sdk/reply-historyHelpers partagés d’historique de réponse sur fenêtre courte tels que buildHistoryContext, recordPendingHistoryEntry, et clearHistoryEntriesIfEnabled
plugin-sdk/reply-referencecreateReplyReferencePlanner
plugin-sdk/reply-chunkingHelpers étroits de découpage texte/Markdown
plugin-sdk/session-store-runtimeHelpers de chemin du magasin de session + updated-at
plugin-sdk/state-pathsHelpers de chemin d’état/répertoire OAuth
plugin-sdk/routingHelpers de route/clé de session/liaison de compte tels que resolveAgentRoute, buildAgentSessionKey, et resolveDefaultAgentBoundAccountId
plugin-sdk/status-helpersHelpers partagés de résumé d’état canal/compte, valeurs par défaut d’état d’exécution, et helpers de métadonnées de problème
plugin-sdk/target-resolver-runtimeHelpers partagés de résolution de cible
plugin-sdk/string-normalization-runtimeHelpers de normalisation de slug/chaîne
plugin-sdk/request-urlExtraire des URL chaîne depuis des entrées de type fetch/request
plugin-sdk/run-commandExécuteur de commande temporisé avec résultats stdout/stderr normalisés
plugin-sdk/param-readersLecteurs communs de paramètres d’outil/CLI
plugin-sdk/tool-payloadExtraire des charges utiles normalisées depuis les objets de résultat d’outil
plugin-sdk/tool-sendExtraire les champs canoniques de cible d’envoi depuis les arguments d’outil
plugin-sdk/temp-pathHelpers partagés de chemin de téléchargement temporaire
plugin-sdk/logging-coreHelpers de journaliseur de sous-système et de masquage
plugin-sdk/markdown-table-runtimeHelpers de mode de tableau Markdown
plugin-sdk/json-storePetits helpers de lecture/écriture d’état JSON
plugin-sdk/file-lockHelpers de verrou de fichier réentrant
plugin-sdk/persistent-dedupeHelpers de cache de déduplication sur disque
plugin-sdk/acp-runtimeHelpers ACP d’exécution/session et de répartition de réponse
plugin-sdk/acp-binding-resolve-runtimeRésolution ACP de liaison en lecture seule sans imports de démarrage du cycle de vie
plugin-sdk/agent-config-primitivesPrimitives étroites de schéma de configuration d’exécution d’agent
plugin-sdk/boolean-paramLecteur permissif de paramètre booléen
plugin-sdk/dangerous-name-runtimeHelpers de résolution de correspondance de nom dangereuse
plugin-sdk/device-bootstrapHelpers d’amorçage d’appareil et de jeton d’appairage
plugin-sdk/extension-sharedPrimitives helper partagées de canal passif, d’état et de proxy ambiant
plugin-sdk/models-provider-runtimeHelpers de réponse de commande /models / fournisseur
plugin-sdk/skill-commands-runtimeHelpers de liste des commandes Skills
plugin-sdk/native-command-registryHelpers natifs de registre/construction/sérialisation de commande
plugin-sdk/agent-harnessSurface expérimentale de plugin de confiance pour les harnais d’agent bas niveau : types de harnais, helpers de pilotage/abandon d’exécution active, helpers de bridge d’outil OpenClaw, et utilitaires de résultat de tentative
plugin-sdk/provider-zai-endpointHelpers de détection de point de terminaison Z.A.I
plugin-sdk/infra-runtimeHelpers d’événement système/Heartbeat
plugin-sdk/collection-runtimePetits helpers de cache borné
plugin-sdk/diagnostic-runtimeHelpers d’indicateur et d’événement de diagnostic
plugin-sdk/error-runtimeHelpers de graphe d’erreur, formatage, classification partagée des erreurs, isApprovalNotFoundError
plugin-sdk/fetch-runtimeHelpers de fetch encapsulé, proxy, et recherche épinglée
plugin-sdk/runtime-fetchFetch d’exécution conscient du dispatcher sans imports de proxy/fetch protégé
plugin-sdk/response-limit-runtimeLecteur borné du corps de réponse sans la surface large d’exécution média
plugin-sdk/session-binding-runtimeÉtat actuel de liaison de conversation sans routage de liaison configurée ni magasins d’appairage
plugin-sdk/session-store-runtimeHelpers de lecture du magasin de session sans imports larges d’écritures/maintenance de configuration
plugin-sdk/context-visibility-runtimeRésolution de visibilité du contexte et filtrage de contexte supplémentaire sans imports larges de configuration/sécurité
plugin-sdk/string-coerce-runtimeHelpers étroits de coercition et normalisation de chaîne/enregistrement primitif sans imports Markdown/journalisation
plugin-sdk/host-runtimeHelpers de normalisation de nom d’hôte et d’hôte SCP
plugin-sdk/retry-runtimeHelpers de configuration et d’exécuteur retry
plugin-sdk/agent-runtimeHelpers de répertoire/identité/espace de travail d’agent
plugin-sdk/directory-runtimeRequête/déduplication d’annuaire fondée sur la configuration
plugin-sdk/keyed-async-queueKeyedAsyncQueue
Sous-cheminExports clés
plugin-sdk/media-runtimeHelpers partagés de récupération/transformation/stockage de média ainsi que constructeurs de charge utile média
plugin-sdk/media-generation-runtimeHelpers partagés de bascule pour génération média, sélection de candidat, et messagerie de modèle manquant
plugin-sdk/media-understandingTypes de fournisseur de compréhension média ainsi qu’exports helper d’image/audio côté fournisseur
plugin-sdk/text-runtimeHelpers partagés de texte/Markdown/journalisation tels que suppression de texte visible par l’assistant, helpers de rendu/découpage/tableau Markdown, helpers de masquage, helpers de balise de directive, et utilitaires de texte sûr
plugin-sdk/text-chunkingHelper de découpage de texte sortant
plugin-sdk/speechTypes de fournisseur speech ainsi que helpers côté fournisseur pour directive, registre, et validation
plugin-sdk/speech-coreTypes partagés de fournisseur speech, helpers de registre, directive, et normalisation
plugin-sdk/realtime-transcriptionTypes de fournisseur de transcription temps réel et helpers de registre
plugin-sdk/realtime-voiceTypes de fournisseur de voix temps réel et helpers de registre
plugin-sdk/image-generationTypes de fournisseur de génération d’image
plugin-sdk/image-generation-coreTypes partagés de génération d’image, helpers de bascule, d’authentification, et de registre
plugin-sdk/music-generationTypes de fournisseur/requête/résultat de génération musicale
plugin-sdk/music-generation-coreTypes partagés de génération musicale, helpers de bascule, recherche de fournisseur, et analyse de référence de modèle
plugin-sdk/video-generationTypes de fournisseur/requête/résultat de génération vidéo
plugin-sdk/video-generation-coreTypes partagés de génération vidéo, helpers de bascule, recherche de fournisseur, et analyse de référence de modèle
plugin-sdk/webhook-targetsRegistre de cibles Webhook et helpers d’installation de route
plugin-sdk/webhook-pathHelpers de normalisation de chemin Webhook
plugin-sdk/web-mediaHelpers partagés de chargement de média distant/local
plugin-sdk/zodzod réexporté pour les consommateurs du SDK Plugin
plugin-sdk/testinginstallCommonResolveTargetErrorCases, shouldAckReaction
Sous-cheminExports clés
plugin-sdk/memory-coreSurface helper intégrée memory-core pour les helpers de gestionnaire/configuration/fichier/CLI
plugin-sdk/memory-core-engine-runtimeFaçade d’exécution d’index/recherche Memory
plugin-sdk/memory-core-host-engine-foundationExports du moteur de fondation de l’hôte Memory
plugin-sdk/memory-core-host-engine-embeddingsContrats d’embeddings de l’hôte Memory, accès au registre, fournisseur local, et helpers génériques par lot/distants
plugin-sdk/memory-core-host-engine-qmdExports du moteur QMD de l’hôte Memory
plugin-sdk/memory-core-host-engine-storageExports du moteur de stockage de l’hôte Memory
plugin-sdk/memory-core-host-multimodalHelpers multimodaux de l’hôte Memory
plugin-sdk/memory-core-host-queryHelpers de requête de l’hôte Memory
plugin-sdk/memory-core-host-secretHelpers de secret de l’hôte Memory
plugin-sdk/memory-core-host-eventsHelpers de journal d’événements de l’hôte Memory
plugin-sdk/memory-core-host-statusHelpers d’état de l’hôte Memory
plugin-sdk/memory-core-host-runtime-cliHelpers d’exécution CLI de l’hôte Memory
plugin-sdk/memory-core-host-runtime-coreHelpers d’exécution core de l’hôte Memory
plugin-sdk/memory-core-host-runtime-filesHelpers de fichier/exécution de l’hôte Memory
plugin-sdk/memory-host-coreAlias neutre vis-à-vis du fournisseur pour les helpers d’exécution core de l’hôte Memory
plugin-sdk/memory-host-eventsAlias neutre vis-à-vis du fournisseur pour les helpers de journal d’événements de l’hôte Memory
plugin-sdk/memory-host-filesAlias neutre vis-à-vis du fournisseur pour les helpers de fichier/exécution de l’hôte Memory
plugin-sdk/memory-host-markdownHelpers partagés de Markdown géré pour les plugins adjacents à Memory
plugin-sdk/memory-host-searchFaçade d’exécution Active Memory pour l’accès au gestionnaire de recherche
plugin-sdk/memory-host-statusAlias neutre vis-à-vis du fournisseur pour les helpers d’état de l’hôte Memory
plugin-sdk/memory-lancedbSurface helper intégrée memory-lancedb
FamilleSous-chemins actuelsUsage prévu
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-supportHelpers de prise en charge du plugin Browser intégré (browser-support reste le barrel de 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-bindingsSurface helper/exécution Matrix intégrée
Lineplugin-sdk/line, plugin-sdk/line-core, plugin-sdk/line-runtime, plugin-sdk/line-surfaceSurface helper/exécution LINE intégrée
IRCplugin-sdk/irc, plugin-sdk/irc-surfaceSurface helper IRC intégrée
Helpers spécifiques aux canauxplugin-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/twitchCoutures de compatibilité/helper de canaux intégrés
Helpers spécifiques à l’authentification/au 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-callCoutures helper de fonctionnalité/plugin intégrées ; plugin-sdk/github-copilot-token exporte actuellement DEFAULT_COPILOT_API_BASE_URL, deriveCopilotApiBaseUrlFromToken, et resolveCopilotApiToken

API d’enregistrement

Le callback register(api) reçoit un objet OpenClawPluginApi avec ces méthodes :

Enregistrement des capacités

MéthodeCe qu’elle enregistre
api.registerProvider(...)Inférence textuelle (LLM)
api.registerAgentHarness(...)Exécuteur d’agent bas niveau expérimental
api.registerCliBackend(...)Backend local d’inférence CLI
api.registerChannel(...)Canal de messagerie
api.registerSpeechProvider(...)Synthèse texte-vers-voix / STT
api.registerRealtimeTranscriptionProvider(...)Transcription temps réel en streaming
api.registerRealtimeVoiceProvider(...)Sessions vocales temps réel duplex
api.registerMediaUnderstandingProvider(...)Analyse d’image/audio/vidéo
api.registerImageGenerationProvider(...)Génération d’image
api.registerMusicGenerationProvider(...)Génération musicale
api.registerVideoGenerationProvider(...)Génération vidéo
api.registerWebFetchProvider(...)Fournisseur de récupération / scraping Web
api.registerWebSearchProvider(...)Recherche Web

Outils et commandes

MéthodeCe qu’elle enregistre
api.registerTool(tool, opts?)Outil d’agent (obligatoire ou { optional: true })
api.registerCommand(def)Commande personnalisée (contourne le LLM)

Infrastructure

MéthodeCe qu’elle enregistre
api.registerHook(events, handler, opts?)Hook d’événement
api.registerHttpRoute(params)Point de terminaison HTTP Gateway
api.registerGatewayMethod(name, handler)Méthode RPC Gateway
api.registerCli(registrar, opts?)Sous-commande CLI
api.registerService(service)Service en arrière-plan
api.registerInteractiveHandler(registration)Gestionnaire interactif
api.registerMemoryPromptSupplement(builder)Section additive de prompt adjacente à Memory
api.registerMemoryCorpusSupplement(adapter)Corpus additif de recherche/lecture Memory
Les espaces de noms d’administration centraux réservés (config.*, exec.approvals.*, wizard.*, update.*) restent toujours operator.admin, même si un plugin essaie d’assigner une portée plus étroite à une méthode Gateway. Préférez des préfixes propres au plugin pour les méthodes appartenant au plugin.

Métadonnées d’enregistrement CLI

api.registerCli(registrar, opts?) accepte deux types de métadonnées de premier niveau :
  • commands : racines de commandes explicites appartenant à l’enregistreur
  • descriptors : descripteurs de commandes au moment de l’analyse, utilisés pour l’aide CLI racine, le routage et l’enregistrement CLI paresseux du plugin
Si vous voulez qu’une commande de plugin reste chargée paresseusement dans le chemin CLI racine normal, fournissez des descriptors qui couvrent chaque racine de commande de premier niveau exposée par cet enregistreur.
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,
      },
    ],
  },
);
Utilisez commands seul uniquement lorsque vous n’avez pas besoin d’un enregistrement CLI racine paresseux. Ce chemin de compatibilité eager reste pris en charge, mais il n’installe pas de placeholders fondés sur des descripteurs pour le chargement paresseux au moment de l’analyse.

Enregistrement de backend CLI

api.registerCliBackend(...) permet à un plugin de posséder la configuration par défaut d’un backend CLI local d’IA tel que codex-cli.
  • L’id du backend devient le préfixe de fournisseur dans les références de modèle comme codex-cli/gpt-5.
  • La config du backend utilise la même forme que agents.defaults.cliBackends.<id>.
  • La configuration utilisateur reste prioritaire. OpenClaw fusionne agents.defaults.cliBackends.<id> par-dessus la valeur par défaut du plugin avant d’exécuter la CLI.
  • Utilisez normalizeConfig lorsqu’un backend a besoin de réécritures de compatibilité après fusion (par exemple pour normaliser d’anciennes formes de drapeaux).

Emplacements exclusifs

MéthodeCe qu’elle enregistre
api.registerContextEngine(id, factory)Moteur de contexte (un seul actif à la fois). Le callback assemble() reçoit availableTools et citationsMode afin que le moteur puisse adapter les ajouts au prompt.
api.registerMemoryCapability(capability)Capacité Memory unifiée
api.registerMemoryPromptSection(builder)Constructeur de section de prompt Memory
api.registerMemoryFlushPlan(resolver)Résolveur de plan de vidage Memory
api.registerMemoryRuntime(runtime)Adaptateur d’exécution Memory

Adaptateurs d’embeddings Memory

MéthodeCe qu’elle enregistre
api.registerMemoryEmbeddingProvider(adapter)Adaptateur d’embeddings Memory pour le plugin actif
  • registerMemoryCapability est l’API de plugin Memory exclusive préférée.
  • registerMemoryCapability peut aussi exposer publicArtifacts.listArtifacts(...) afin que des plugins compagnons puissent consommer des artefacts Memory exportés via openclaw/plugin-sdk/memory-host-core au lieu d’atteindre la disposition privée d’un plugin Memory spécifique.
  • registerMemoryPromptSection, registerMemoryFlushPlan, et registerMemoryRuntime sont des API exclusives compatibles avec l’ancien système pour les plugins Memory.
  • registerMemoryEmbeddingProvider permet au plugin Memory actif d’enregistrer un ou plusieurs identifiants d’adaptateur d’embeddings (par exemple openai, gemini, ou un identifiant personnalisé défini par un plugin).
  • La configuration utilisateur telle que agents.defaults.memorySearch.provider et agents.defaults.memorySearch.fallback se résout par rapport à ces identifiants d’adaptateur enregistrés.

Événements et cycle de vie

MéthodeCe qu’elle fait
api.on(hookName, handler, opts?)Hook de cycle de vie typé
api.onConversationBindingResolved(handler)Callback de liaison de conversation

Sémantique de décision des hooks

  • before_tool_call : renvoyer { block: true } est terminal. Dès qu’un gestionnaire le définit, les gestionnaires de priorité inférieure sont ignorés.
  • before_tool_call : renvoyer { block: false } est traité comme aucune décision (identique à l’omission de block), et non comme un remplacement.
  • before_install : renvoyer { block: true } est terminal. Dès qu’un gestionnaire le définit, les gestionnaires de priorité inférieure sont ignorés.
  • before_install : renvoyer { block: false } est traité comme aucune décision (identique à l’omission de block), et non comme un remplacement.
  • reply_dispatch : renvoyer { handled: true, ... } est terminal. Dès qu’un gestionnaire revendique la répartition, les gestionnaires de priorité inférieure et le chemin de répartition par défaut du modèle sont ignorés.
  • message_sending : renvoyer { cancel: true } est terminal. Dès qu’un gestionnaire le définit, les gestionnaires de priorité inférieure sont ignorés.
  • message_sending : renvoyer { cancel: false } est traité comme aucune décision (identique à l’omission de cancel), et non comme un remplacement.

Champs de l’objet API

ChampTypeDescription
api.idstringIdentifiant du plugin
api.namestringNom d’affichage
api.versionstring?Version du plugin (facultatif)
api.descriptionstring?Description du plugin (facultatif)
api.sourcestringChemin source du plugin
api.rootDirstring?Répertoire racine du plugin (facultatif)
api.configOpenClawConfigInstantané actuel de configuration (instantané d’exécution actif en mémoire lorsqu’il est disponible)
api.pluginConfigRecord<string, unknown>Configuration spécifique au plugin depuis plugins.entries.<id>.config
api.runtimePluginRuntimeHelpers d’exécution
api.loggerPluginLoggerJournaliseur limité à la portée (debug, info, warn, error)
api.registrationModePluginRegistrationModeMode de chargement actuel ; "setup-runtime" est la fenêtre légère de démarrage/configuration initiale avant le point d’entrée complet
api.resolvePath(input)(string) => stringRésoudre un chemin par rapport à la racine du plugin

Convention des modules internes

À l’intérieur de votre plugin, utilisez des fichiers barrel locaux pour les imports internes :
my-plugin/
  api.ts            # Exports publics pour les consommateurs externes
  runtime-api.ts    # Exports d’exécution internes uniquement
  index.ts          # Point d’entrée du plugin
  setup-entry.ts    # Point d’entrée léger de configuration initiale uniquement (facultatif)
N’importez jamais votre propre plugin via openclaw/plugin-sdk/<your-plugin> depuis le code de production. Faites passer les imports internes par ./api.ts ou ./runtime-api.ts. Le chemin SDK est uniquement le contrat externe.
Les surfaces publiques des plugins intégrés chargées via façade (api.ts, runtime-api.ts, index.ts, setup-entry.ts, et fichiers d’entrée publics similaires) préfèrent désormais l’ instantané de configuration d’exécution actif lorsqu’OpenClaw est déjà en cours d’exécution. Si aucun instantané d’exécution n’existe encore, elles reviennent à la configuration résolue sur disque. Les plugins de fournisseur peuvent aussi exposer un barrel de contrat local au plugin lorsqu’un helper est intentionnellement spécifique à un fournisseur et n’a pas encore sa place dans un sous-chemin générique du SDK. Exemple intégré actuel : le fournisseur Anthropic conserve ses helpers de flux Claude dans sa propre couture publique api.ts / contract-api.ts au lieu de promouvoir la logique d’en-tête bêta Anthropic et service_tier dans un contrat générique plugin-sdk/*. Autres exemples intégrés actuels :
  • @openclaw/openai-provider : api.ts exporte des constructeurs de fournisseur, des helpers de modèle par défaut, et des constructeurs de fournisseur temps réel
  • @openclaw/openrouter-provider : api.ts exporte le constructeur de fournisseur ainsi que des helpers d’onboarding/configuration
Le code de production d’extension doit également éviter les imports openclaw/plugin-sdk/<other-plugin>. Si un helper est réellement partagé, promouvez-le vers un sous-chemin neutre du SDK tel que openclaw/plugin-sdk/speech, .../provider-model-shared, ou une autre surface orientée capacité au lieu de coupler deux plugins ensemble.

Liens associés