Passer au contenu principal

Migration du Plugin SDK

OpenClaw est passé d’une large couche de rétrocompatibilité à une architecture de plugin moderne avec des imports ciblés et documentés. Si votre plugin a été construit avant la nouvelle architecture, ce guide vous aide à migrer.

Ce qui change

L’ancien système de plugins fournissait deux surfaces très ouvertes qui permettaient aux plugins d’importer tout ce dont ils avaient besoin depuis un point d’entrée unique :
  • openclaw/plugin-sdk/compat — un import unique qui réexportait des dizaines de helpers. Il a été introduit pour que les anciens plugins basés sur des hooks continuent de fonctionner pendant que la nouvelle architecture de plugin était en cours de construction.
  • openclaw/extension-api — un pont donnant aux plugins un accès direct à des helpers côté hôte comme le runner d’agent intégré.
Ces deux surfaces sont maintenant obsolètes. Elles fonctionnent encore à l’exécution, mais les nouveaux plugins ne doivent pas les utiliser, et les plugins existants doivent migrer avant que la prochaine version majeure ne les supprime.
La couche de rétrocompatibilité sera supprimée dans une future version majeure. Les plugins qui importent encore depuis ces surfaces cesseront de fonctionner à ce moment-là.

Pourquoi cela a changé

L’ancienne approche causait des problèmes :
  • Démarrage lent — importer un helper chargeait des dizaines de modules non liés
  • Dépendances circulaires — les réexportations larges facilitaient la création de cycles d’import
  • Surface API peu claire — impossible de savoir quelles exportations étaient stables ou internes
Le Plugin SDK moderne corrige cela : chaque chemin d’import (openclaw/plugin-sdk/\<subpath\>) est un petit module autonome avec une finalité claire et un contrat documenté. Les coutures de commodité héritées pour les fournisseurs de canaux intégrés ont aussi disparu. Les imports comme openclaw/plugin-sdk/slack, openclaw/plugin-sdk/discord, openclaw/plugin-sdk/signal, openclaw/plugin-sdk/whatsapp, les coutures de helpers de canal marquées à leur nom, et openclaw/plugin-sdk/telegram-core étaient des raccourcis privés du mono-repo, pas des contrats de plugin stables. Utilisez plutôt des sous-chemins SDK génériques et étroits. À l’intérieur de l’espace de travail des plugins intégrés, gardez les helpers propres au fournisseur dans le api.ts ou runtime-api.ts de ce plugin. Exemples actuels de fournisseurs intégrés :
  • Anthropic conserve les helpers de flux spécifiques à Claude dans sa propre couture api.ts / contract-api.ts
  • OpenAI conserve les builders de fournisseurs, les helpers de modèle par défaut et les builders de fournisseur realtime dans son propre api.ts
  • OpenRouter conserve le builder de fournisseur et les helpers d’onboarding/configuration dans son propre api.ts

Comment migrer

1

Auditer le comportement de repli du wrapper Windows

Si votre plugin utilise openclaw/plugin-sdk/windows-spawn, les wrappers Windows .cmd/.bat non résolus échouent maintenant de manière fermée sauf si vous passez explicitement allowShellFallback: true.
// Before
const program = applyWindowsSpawnProgramPolicy({ candidate });

// After
const program = applyWindowsSpawnProgramPolicy({
  candidate,
  // Only set this for trusted compatibility callers that intentionally
  // accept shell-mediated fallback.
  allowShellFallback: true,
});
Si votre appelant ne repose pas intentionnellement sur le repli du shell, ne définissez pas allowShellFallback et gérez plutôt l’erreur levée.
2

Trouver les imports obsolètes

Recherchez dans votre plugin les imports depuis l’une ou l’autre surface obsolète :
grep -r "plugin-sdk/compat" my-plugin/
grep -r "openclaw/extension-api" my-plugin/
3

Remplacer par des imports ciblés

Chaque exportation de l’ancienne surface correspond à un chemin d’import moderne spécifique :
// Before (deprecated backwards-compatibility layer)
import {
  createChannelReplyPipeline,
  createPluginRuntimeStore,
  resolveControlCommandGate,
} from "openclaw/plugin-sdk/compat";

// After (modern focused imports)
import { createChannelReplyPipeline } from "openclaw/plugin-sdk/channel-reply-pipeline";
import { createPluginRuntimeStore } from "openclaw/plugin-sdk/runtime-store";
import { resolveControlCommandGate } from "openclaw/plugin-sdk/command-auth";
Pour les helpers côté hôte, utilisez le runtime de plugin injecté au lieu d’un import direct :
// Before (deprecated extension-api bridge)
import { runEmbeddedPiAgent } from "openclaw/extension-api";
const result = await runEmbeddedPiAgent({ sessionId, prompt });

// After (injected runtime)
const result = await api.runtime.agent.runEmbeddedPiAgent({ sessionId, prompt });
Le même modèle s’applique aux autres helpers hérités du pont :
Ancien importÉquivalent moderne
resolveAgentDirapi.runtime.agent.resolveAgentDir
resolveAgentWorkspaceDirapi.runtime.agent.resolveAgentWorkspaceDir
resolveAgentIdentityapi.runtime.agent.resolveAgentIdentity
resolveThinkingDefaultapi.runtime.agent.resolveThinkingDefault
resolveAgentTimeoutMsapi.runtime.agent.resolveAgentTimeoutMs
ensureAgentWorkspaceapi.runtime.agent.ensureAgentWorkspace
helpers de magasin de sessionapi.runtime.agent.session.*
4

Build et test

pnpm build
pnpm test -- my-plugin/

Référence des chemins d’import

Chemin d’importFinalitéExportations clés
plugin-sdk/plugin-entryHelper d’entrée canonique du plugindefinePluginEntry
plugin-sdk/coreRéexportation umbrella héritée pour les définitions/builders d’entrée de canaldefineChannelPluginEntry, createChatChannelPlugin
plugin-sdk/config-schemaExportation du schéma de configuration racineOpenClawSchema
plugin-sdk/provider-entryHelper d’entrée mono-fournisseurdefineSingleProviderPluginEntry
plugin-sdk/channel-coreDéfinitions et builders ciblés d’entrée de canaldefineChannelPluginEntry, defineSetupPluginEntry, createChatChannelPlugin, createChannelPluginBase
plugin-sdk/setupHelpers partagés d’assistant de configurationPrompts allowlist, builders d’état de configuration
plugin-sdk/setup-runtimeHelpers runtime au moment de la configurationAdaptateurs de patch de configuration sûrs à l’import, helpers de lookup-note, promptResolvedAllowFrom, splitSetupEntries, proxys de configuration délégués
plugin-sdk/setup-adapter-runtimeHelpers d’adaptateur de configurationcreateEnvPatchedAccountSetupAdapter
plugin-sdk/setup-toolsHelpers d’outillage de configurationformatCliCommand, detectBinary, extractArchive, resolveBrewExecutable, formatDocsLink, CONFIG_DIR
plugin-sdk/account-coreHelpers multi-comptesHelpers de liste/configuration/action-gate de compte
plugin-sdk/account-idHelpers d’identifiant de compteDEFAULT_ACCOUNT_ID, normalisation d’identifiant de compte
plugin-sdk/account-resolutionHelpers de résolution de compteHelpers de recherche de compte + repli par défaut
plugin-sdk/account-helpersHelpers de compte étroitsHelpers de liste de compte/action de compte
plugin-sdk/channel-setupAdaptateurs d’assistant de configurationcreateOptionalChannelSetupSurface, createOptionalChannelSetupAdapter, createOptionalChannelSetupWizard, plus DEFAULT_ACCOUNT_ID, createTopLevelChannelDmPolicy, setSetupChannelEnabled, splitSetupEntries
plugin-sdk/channel-pairingPrimitives d’appairage DMcreateChannelPairingController
plugin-sdk/channel-reply-pipelinePréfixe de réponse + câblage typingcreateChannelReplyPipeline
plugin-sdk/channel-config-helpersFabriques d’adaptateurs de configurationcreateHybridChannelConfigAdapter
plugin-sdk/channel-config-schemaBuilders de schéma de configurationTypes de schéma de configuration de canal
plugin-sdk/telegram-command-configHelpers de configuration de commandes TelegramNormalisation des noms de commande, trimming des descriptions, validation des doublons/conflits
plugin-sdk/channel-policyRésolution des politiques groupe/DMresolveChannelGroupRequireMention
plugin-sdk/channel-lifecycleSuivi de l’état des comptescreateAccountStatusSink
plugin-sdk/inbound-envelopeHelpers d’enveloppe entranteHelpers partagés de route + builder d’enveloppe
plugin-sdk/inbound-reply-dispatchHelpers de réponse entranteHelpers partagés d’enregistrement et de dispatch
plugin-sdk/messaging-targetsAnalyse des cibles de messagerieHelpers d’analyse/correspondance de cibles
plugin-sdk/outbound-mediaHelpers de média sortantChargement partagé des médias sortants
plugin-sdk/outbound-runtimeHelpers runtime sortantsHelpers de délégation d’identité/envoi sortants
plugin-sdk/thread-bindings-runtimeHelpers de liaison de filHelpers de cycle de vie et d’adaptateur de liaison de fil
plugin-sdk/agent-media-payloadHelpers hérités de charge utile médiaBuilder de charge utile média d’agent pour dispositions de champs héritées
plugin-sdk/channel-runtimeShim de compatibilité obsolèteUniquement utilitaires runtime de canal hérités
plugin-sdk/channel-send-resultTypes de résultat d’envoiTypes de résultat de réponse
plugin-sdk/runtime-storeStockage persistant du plugincreatePluginRuntimeStore
plugin-sdk/runtimeHelpers runtime largesHelpers runtime/journalisation/sauvegarde/installation de plugin
plugin-sdk/runtime-envHelpers étroits d’environnement runtimeLogger/env runtime, timeout, retry et helpers de backoff
plugin-sdk/plugin-runtimeHelpers partagés du runtime de pluginHelpers de commandes/hooks/http/interactive de plugin
plugin-sdk/hook-runtimeHelpers de pipeline de hooksHelpers partagés de pipeline de webhook/hooks internes
plugin-sdk/lazy-runtimeHelpers de runtime lazycreateLazyRuntimeModule, createLazyRuntimeMethod, createLazyRuntimeMethodBinder, createLazyRuntimeNamedExport, createLazyRuntimeSurface
plugin-sdk/process-runtimeHelpers de processusHelpers partagés d’exec
plugin-sdk/cli-runtimeHelpers runtime CLIFormatage des commandes, waits, helpers de version
plugin-sdk/gateway-runtimeHelpers GatewayClient Gateway et helpers de patch d’état de canal
plugin-sdk/config-runtimeHelpers de configurationHelpers de chargement/écriture de configuration
plugin-sdk/telegram-command-configHelpers de commandes TelegramHelpers de validation de commandes Telegram stables en repli lorsque la surface de contrat Telegram intégrée n’est pas disponible
plugin-sdk/approval-runtimeHelpers d’invite d’approbationCharge utile d’approbation exec/plugin, helpers de capacité/profil d’approbation, helpers de routage/runtime d’approbation native
plugin-sdk/approval-auth-runtimeHelpers d’authentification d’approbationRésolution des approbateurs, auth d’action same-chat
plugin-sdk/approval-client-runtimeHelpers de client d’approbationHelpers de profil/filtre d’approbation exec native
plugin-sdk/approval-delivery-runtimeHelpers d’envoi d’approbationAdaptateurs de capacité/envoi d’approbation native
plugin-sdk/approval-native-runtimeHelpers de cible d’approbationHelpers de liaison cible/compte d’approbation native
plugin-sdk/approval-reply-runtimeHelpers de réponse d’approbationHelpers de charge utile de réponse d’approbation exec/plugin
plugin-sdk/security-runtimeHelpers de sécuritéHelpers partagés de confiance, gating DM, contenu externe et collecte de secrets
plugin-sdk/ssrf-policyHelpers de politique SSRFHelpers d’allowlist d’hôtes et de politique de réseau privé
plugin-sdk/ssrf-runtimeHelpers runtime SSRFHelpers de pinned-dispatcher, fetch protégé, politique SSRF
plugin-sdk/collection-runtimeHelpers de cache bornépruneMapToMaxSize
plugin-sdk/diagnostic-runtimeHelpers de gating diagnostiqueisDiagnosticFlagEnabled, isDiagnosticsEnabled
plugin-sdk/error-runtimeHelpers de formatage d’erreurformatUncaughtError, isApprovalNotFoundError, helpers de graphe d’erreur
plugin-sdk/fetch-runtimeHelpers de fetch/proxy enveloppésresolveFetch, helpers de proxy
plugin-sdk/host-runtimeHelpers de normalisation d’hôtenormalizeHostname, normalizeScpRemoteHost
plugin-sdk/retry-runtimeHelpers de retryRetryConfig, retryAsync, exécuteurs de politique
plugin-sdk/allow-fromFormatage d’allowlistformatAllowFromLowercase
plugin-sdk/allowlist-resolutionMapping d’entrée d’allowlistmapAllowlistResolutionInputs
plugin-sdk/command-authGating de commande et helpers de surface de commanderesolveControlCommandGate, helpers d’autorisation d’expéditeur, helpers de registre de commande
plugin-sdk/secret-inputAnalyse d’entrée de secretHelpers d’entrée de secret
plugin-sdk/webhook-ingressHelpers de requête webhookUtilitaires de cible webhook
plugin-sdk/webhook-request-guardsHelpers de garde de corps webhookHelpers de lecture/limite du corps de requête
plugin-sdk/reply-runtimeRuntime partagé de réponseDispatch entrant, heartbeat, planificateur de réponse, chunking
plugin-sdk/reply-dispatch-runtimeHelpers étroits de dispatch de réponseHelpers de finalisation + dispatch fournisseur
plugin-sdk/reply-historyHelpers d’historique de réponsebuildHistoryContext, buildPendingHistoryContextFromMap, recordPendingHistoryEntry, clearHistoryEntriesIfEnabled
plugin-sdk/reply-referencePlanification des références de réponsecreateReplyReferencePlanner
plugin-sdk/reply-chunkingHelpers de chunk de réponseHelpers de chunking texte/markdown
plugin-sdk/session-store-runtimeHelpers de magasin de sessionHelpers de chemin de magasin + updated-at
plugin-sdk/state-pathsHelpers de chemin d’étatHelpers de répertoire d’état et OAuth
plugin-sdk/routingHelpers de routage/clé de sessionresolveAgentRoute, buildAgentSessionKey, resolveDefaultAgentBoundAccountId, helpers de normalisation de clé de session
plugin-sdk/status-helpersHelpers d’état de canalBuilders de résumé/instantané d’état de canal/compte, valeurs par défaut d’état runtime, helpers de métadonnées de problème
plugin-sdk/target-resolver-runtimeHelpers de résolution de cibleHelpers partagés de résolution de cible
plugin-sdk/string-normalization-runtimeHelpers de normalisation de chaîneHelpers de normalisation slug/chaîne
plugin-sdk/request-urlHelpers d’URL de requêteExtraire des URL chaîne depuis des entrées de type requête
plugin-sdk/run-commandHelpers de commande temporiséeExécuteur de commande temporisée avec stdout/stderr normalisés
plugin-sdk/param-readersLecteurs de paramètresLecteurs de paramètres communs d’outil/CLI
plugin-sdk/tool-sendExtraction d’envoi d’outilExtraire les champs canoniques de cible d’envoi depuis les args d’outil
plugin-sdk/temp-pathHelpers de chemin temporaireHelpers partagés de chemin de téléchargement temporaire
plugin-sdk/logging-coreHelpers de journalisationLogger de sous-système et helpers de rédaction
plugin-sdk/markdown-table-runtimeHelpers de tableau MarkdownHelpers de mode tableau Markdown
plugin-sdk/reply-payloadTypes de réponse de messageTypes de charge utile de réponse
plugin-sdk/provider-setupHelpers ciblés de configuration de fournisseur local/auto-hébergéHelpers de découverte/configuration de fournisseur auto-hébergé
plugin-sdk/self-hosted-provider-setupHelpers ciblés de configuration de fournisseur auto-hébergé compatible OpenAIMêmes helpers de découverte/configuration de fournisseur auto-hébergé
plugin-sdk/provider-auth-runtimeHelpers runtime d’authentification fournisseurHelpers runtime de résolution de clé API
plugin-sdk/provider-auth-api-keyHelpers de configuration de clé API fournisseurHelpers d’onboarding/écriture de profil pour clé API
plugin-sdk/provider-auth-resultHelpers de résultat d’authentification fournisseurBuilder standard de résultat d’authentification OAuth
plugin-sdk/provider-auth-loginHelpers de connexion interactive fournisseurHelpers partagés de connexion interactive
plugin-sdk/provider-env-varsHelpers de variables d’environnement fournisseurHelpers de recherche de variables d’environnement d’authentification fournisseur
plugin-sdk/provider-model-sharedHelpers partagés de modèle/replay fournisseurProviderReplayFamily, buildProviderReplayFamilyHooks, normalizeModelCompat, builders partagés de politique de replay, helpers de point de terminaison fournisseur et helpers de normalisation d’identifiant de modèle
plugin-sdk/provider-catalog-sharedHelpers partagés de catalogue fournisseurfindCatalogTemplate, buildSingleProviderApiKeyCatalog, supportsNativeStreamingUsageCompat, applyProviderNativeStreamingUsageCompat
plugin-sdk/provider-onboardPatches d’onboarding fournisseurHelpers de configuration d’onboarding
plugin-sdk/provider-httpHelpers HTTP fournisseurHelpers génériques de capacité HTTP/point de terminaison fournisseur
plugin-sdk/provider-web-fetchHelpers web-fetch fournisseurHelpers d’enregistrement/cache de fournisseur web-fetch
plugin-sdk/provider-web-searchHelpers web-search fournisseurHelpers d’enregistrement/cache/configuration de fournisseur web-search
plugin-sdk/provider-toolsHelpers de compatibilité d’outil/schéma fournisseurProviderToolCompatFamily, buildProviderToolCompatFamilyHooks, nettoyage de schéma Gemini + diagnostics, et helpers de compatibilité xAI comme resolveXaiModelCompatPatch / applyXaiModelCompat
plugin-sdk/provider-usageHelpers d’usage fournisseurfetchClaudeUsage, fetchGeminiUsage, fetchGithubCopilotUsage, et autres helpers d’usage fournisseur
plugin-sdk/provider-streamHelpers de wrapper de flux fournisseurProviderStreamFamily, buildProviderStreamFamilyHooks, composeProviderStreamWrappers, types de wrapper de flux, et helpers de wrapper partagés Anthropic/Bedrock/Google/Kilocode/Moonshot/OpenAI/OpenRouter/Z.A.I/MiniMax/Copilot
plugin-sdk/keyed-async-queueFile async ordonnéeKeyedAsyncQueue
plugin-sdk/media-runtimeHelpers partagés de médiaHelpers de récupération/transformation/stockage média plus builders de charge utile média
plugin-sdk/media-understandingHelpers de compréhension des médiasTypes de fournisseur de compréhension des médias plus exportations de helpers image/audio côté fournisseur
plugin-sdk/text-runtimeHelpers partagés de texteSuppression de texte visible par l’assistant, helpers de rendu/chunking/table Markdown, helpers de rédaction, helpers de balise de directive, utilitaires de texte sûr et helpers associés de texte/journalisation
plugin-sdk/text-chunkingHelpers de chunking de texteHelper de chunking de texte sortant
plugin-sdk/speechHelpers de paroleTypes de fournisseur de parole plus helpers côté fournisseur pour directives, registre et validation
plugin-sdk/speech-coreCœur partagé de la paroleTypes de fournisseur de parole, registre, directives, normalisation
plugin-sdk/realtime-transcriptionHelpers de transcription temps réelTypes de fournisseur et helpers de registre
plugin-sdk/realtime-voiceHelpers de voix temps réelTypes de fournisseur et helpers de registre
plugin-sdk/image-generation-coreCœur partagé de génération d’imageTypes de génération d’image, failover, auth et helpers de registre
plugin-sdk/video-generationHelpers de génération vidéoTypes de fournisseur/requête/résultat de génération vidéo
plugin-sdk/video-generation-coreCœur partagé de génération vidéoTypes de génération vidéo, helpers de failover, lookup fournisseur et parsing de référence de modèle
plugin-sdk/interactive-runtimeHelpers de réponse interactiveNormalisation/réduction de charge utile de réponse interactive
plugin-sdk/channel-config-primitivesPrimitives de configuration de canalPrimitives étroites de schéma de configuration de canal
plugin-sdk/channel-config-writesHelpers d’écriture de configuration de canalHelpers d’autorisation d’écriture de configuration de canal
plugin-sdk/channel-plugin-commonPrélude de canal partagéExportations de prélude partagées de plugin de canal
plugin-sdk/channel-statusHelpers d’état de canalHelpers partagés d’instantané/résumé d’état de canal
plugin-sdk/allowlist-config-editHelpers de configuration d’allowlistHelpers d’édition/lecture de configuration d’allowlist
plugin-sdk/group-accessHelpers d’accès de groupeHelpers partagés de décision d’accès de groupe
plugin-sdk/direct-dmHelpers de DM directHelpers partagés d’auth/garde de DM direct
plugin-sdk/extension-sharedHelpers partagés d’extensionPrimitives de helper passif de canal/état
plugin-sdk/webhook-targetsHelpers de cible webhookHelpers de registre de cible webhook et d’installation de route
plugin-sdk/webhook-pathHelpers de chemin webhookHelpers de normalisation de chemin webhook
plugin-sdk/web-mediaHelpers partagés de média webHelpers de chargement de média distant/local
plugin-sdk/zodRéexportation zodRéexportation de zod pour les consommateurs du Plugin SDK
plugin-sdk/memory-coreHelpers intégrés memory-coreSurface helper de gestionnaire/configuration/fichier/CLI mémoire
plugin-sdk/memory-core-engine-runtimeFaçade runtime de moteur de mémoireFaçade runtime d’index/recherche mémoire
plugin-sdk/memory-core-host-engine-foundationMoteur foundation d’hôte mémoireExportations du moteur foundation d’hôte mémoire
plugin-sdk/memory-core-host-engine-embeddingsMoteur d’embeddings d’hôte mémoireExportations du moteur d’embeddings d’hôte mémoire
plugin-sdk/memory-core-host-engine-qmdMoteur QMD d’hôte mémoireExportations du moteur QMD d’hôte mémoire
plugin-sdk/memory-core-host-engine-storageMoteur de stockage d’hôte mémoireExportations du moteur de stockage d’hôte mémoire
plugin-sdk/memory-core-host-multimodalHelpers multimodaux d’hôte mémoireHelpers multimodaux d’hôte mémoire
plugin-sdk/memory-core-host-queryHelpers de requête d’hôte mémoireHelpers de requête d’hôte mémoire
plugin-sdk/memory-core-host-secretHelpers de secret d’hôte mémoireHelpers de secret d’hôte mémoire
plugin-sdk/memory-core-host-statusHelpers d’état d’hôte mémoireHelpers d’état d’hôte mémoire
plugin-sdk/memory-core-host-runtime-cliRuntime CLI d’hôte mémoireHelpers runtime CLI d’hôte mémoire
plugin-sdk/memory-core-host-runtime-coreRuntime cœur d’hôte mémoireHelpers runtime cœur d’hôte mémoire
plugin-sdk/memory-core-host-runtime-filesHelpers fichier/runtime d’hôte mémoireHelpers fichier/runtime d’hôte mémoire
plugin-sdk/memory-lancedbHelpers intégrés memory-lancedbSurface helper de memory-lancedb
plugin-sdk/testingUtilitaires de testHelpers et mocks de test
Ce tableau est volontairement le sous-ensemble courant pour la migration, et non la surface complète du SDK. La liste complète des plus de 200 points d’entrée se trouve dans scripts/lib/plugin-sdk-entrypoints.json. Cette liste inclut encore certaines coutures de helper de plugin intégré comme plugin-sdk/feishu, plugin-sdk/feishu-setup, plugin-sdk/zalo, plugin-sdk/zalo-setup, et plugin-sdk/matrix*. Elles restent exportées pour la maintenance/compatibilité des plugins intégrés, mais elles sont volontairement omises du tableau de migration courant et ne constituent pas la cible recommandée pour le nouveau code de plugin. La même règle s’applique à d’autres familles de helpers intégrés comme :
  • helpers de support navigateur : plugin-sdk/browser-config-support, plugin-sdk/browser-support
  • Matrix : plugin-sdk/matrix*
  • LINE : plugin-sdk/line*
  • IRC : plugin-sdk/irc*
  • surfaces de helper/plugin intégrées comme plugin-sdk/googlechat, plugin-sdk/zalouser, plugin-sdk/bluebubbles*, plugin-sdk/mattermost*, plugin-sdk/msteams, plugin-sdk/nextcloud-talk, plugin-sdk/nostr, plugin-sdk/tlon, plugin-sdk/twitch, plugin-sdk/github-copilot-login, plugin-sdk/github-copilot-token, plugin-sdk/diagnostics-otel, plugin-sdk/diffs, plugin-sdk/llm-task, plugin-sdk/thread-ownership, et plugin-sdk/voice-call
plugin-sdk/github-copilot-token expose actuellement la surface étroite de helper de jeton DEFAULT_COPILOT_API_BASE_URL, deriveCopilotApiBaseUrlFromToken, et resolveCopilotApiToken. Utilisez l’import le plus étroit correspondant au besoin. Si vous ne trouvez pas une exportation, consultez la source dans src/plugin-sdk/ ou demandez sur Discord.

Calendrier de suppression

QuandCe qui se passe
MaintenantLes surfaces obsolètes émettent des avertissements à l’exécution
Prochaine version majeureLes surfaces obsolètes seront supprimées ; les plugins qui les utilisent encore échoueront
Tous les plugins du cœur ont déjà été migrés. Les plugins externes devraient migrer avant la prochaine version majeure.

Supprimer temporairement les avertissements

Définissez ces variables d’environnement pendant que vous travaillez à la migration :
OPENCLAW_SUPPRESS_PLUGIN_SDK_COMPAT_WARNING=1 openclaw gateway run
OPENCLAW_SUPPRESS_EXTENSION_API_WARNING=1 openclaw gateway run
C’est une échappatoire temporaire, pas une solution permanente.

Lié