Naar hoofdinhoud gaan
OpenClaw is overgestapt van een brede laag voor achterwaartse compatibiliteit naar een moderne Plugin- architectuur met gerichte, gedocumenteerde imports. Als je Plugin is gebouwd vóór de nieuwe architectuur, helpt deze gids je met migreren.

Wat verandert er

Het oude Plugin-systeem bood twee volledig open oppervlakken waarmee Plugins alles wat ze nodig hadden vanuit één enkel ingangspunt konden importeren:
  • openclaw/plugin-sdk/compat - één import die tientallen helpers opnieuw exporteerde. Deze werd geïntroduceerd om oudere hook-gebaseerde Plugins te laten werken terwijl de nieuwe Plugin-architectuur werd gebouwd.
  • openclaw/plugin-sdk/infra-runtime - een brede runtime-helperbarrel die systeemgebeurtenissen, Heartbeat-status, afleverwachtrijen, fetch/proxy-helpers, bestandshelpers, goedkeuringstypen en niet-gerelateerde hulpprogramma’s combineerde.
  • openclaw/plugin-sdk/config-runtime - een brede configuratiecompatibiliteitsbarrel die tijdens het migratievenster nog verouderde directe laad-/schrijfhelpers bevat.
  • openclaw/extension-api - een brug die Plugins directe toegang gaf tot host-side helpers zoals de ingebouwde agent-runner.
  • api.registerEmbeddedExtensionFactory(...) - een verwijderde, alleen voor de embedded runner bestemde gebundelde extensie-hook die embedded-runner-gebeurtenissen zoals tool_result kon observeren.
De brede importoppervlakken zijn nu verouderd. Ze werken nog steeds tijdens runtime, maar nieuwe Plugins mogen ze niet gebruiken, en bestaande Plugins moeten migreren voordat de volgende major release ze verwijdert. De API voor registratie van extensiefactory’s die alleen voor de embedded runner was bedoeld, is verwijderd; gebruik in plaats daarvan tool-result-middleware. OpenClaw verwijdert of herinterpreteert gedocumenteerd Plugin-gedrag niet in dezelfde wijziging die een vervanging introduceert. Brekende contractwijzigingen moeten eerst via een compatibiliteitsadapter, diagnostiek, documentatie en een deprecatievenster verlopen. Dat geldt voor SDK-imports, manifestvelden, setup-API’s, hooks en runtime- registratiegedrag.
De laag voor achterwaartse compatibiliteit wordt in een toekomstige major release verwijderd. Plugins die nog steeds uit deze oppervlakken importeren, zullen dan niet meer werken. Verouderde registraties van embedded extensiefactory’s laden nu al niet meer.

Waarom dit is gewijzigd

De oude aanpak veroorzaakte problemen:
  • Trage start - het importeren van één helper laadde tientallen niet-gerelateerde modules
  • Circulaire afhankelijkheden - brede herexports maakten het makkelijk om importcycli te creëren
  • Onduidelijk API-oppervlak - geen manier om te zien welke exports stabiel waren versus intern
De moderne Plugin-SDK lost dit op: elk importpad (openclaw/plugin-sdk/\<subpath\>) is een kleine, zelfstandige module met een duidelijk doel en een gedocumenteerd contract. Verouderde gemaksovergangen voor providers voor gebundelde kanalen zijn ook verdwenen. Kanaalbranded helperovergangen waren private mono-repo-snelkoppelingen, geen stabiele Plugin-contracten. Gebruik in plaats daarvan smalle generieke SDK-subpaden. Houd binnen de gebundelde Plugin-werkruimte provider-owned helpers in de eigen api.ts of runtime-api.ts van die Plugin. Huidige voorbeelden van gebundelde providers:
  • Anthropic houdt Claude-specifieke streamhelpers in zijn eigen api.ts / contract-api.ts-overgang
  • OpenAI houdt provider-builders, default-model-helpers en realtime-provider- builders in zijn eigen api.ts
  • OpenRouter houdt provider-builder- en onboarding-/configuratiehelpers in zijn eigen api.ts

Migratieplan voor Talk en realtime spraak

Realtime spraak-, telefonie-, meeting- en browser-Talk-code verhuist van oppervlaklokale beurtboekhouding naar een gedeelde Talk-sessiecontroller die wordt geëxporteerd door openclaw/plugin-sdk/realtime-voice. De nieuwe controller beheert de gemeenschappelijke Talk- gebeurtenisenvelop, actieve beurtstatus, capture-status, output-audio-status, recente gebeurtenisgeschiedenis en afwijzing van verouderde beurten. Provider-Plugins moeten vendor- specifieke realtime-sessies blijven beheren; surface-Plugins moeten capture, playback, telefonie- en meeting-eigenaardigheden blijven beheren. Deze Talk-migratie is bewust brekend schoon:
  1. Houd de gedeelde controller-/runtime-primitieven in plugin-sdk/realtime-voice.
  2. Zet gebundelde oppervlakken over naar de gedeelde controller: browserrelay, managed-room-handoff, realtime voice-call, streaming STT voor voice-call, Google Meet realtime en native push-to-talk.
  3. Vervang oude Talk-RPC-families door de definitieve talk.session.*- en talk.client.*-API.
  4. Adverteer één live Talk-gebeurteniskanaal in Gateway hello-ok.features.events: talk.event.
  5. Verwijder het oude realtime HTTP-endpoint en elk request-time pad voor instructie-override.
Nieuwe code mag createTalkEventSequencer(...) niet rechtstreeks aanroepen, tenzij deze een low-level adapter of testfixture implementeert. Geef de voorkeur aan de gedeelde controller zodat beurtgebonden gebeurtenissen niet zonder turn id kunnen worden uitgezonden, verouderde turnEnd- / turnCancel-aanroepen geen nieuwere actieve beurt kunnen wissen, en output-audio-lifecycle- gebeurtenissen consistent blijven tussen telefonie, meetings, browserrelay, managed-room- handoff en native Talk-clients. De beoogde vorm van de publieke API is:
// Gateway-owned Talk session API.
await gateway.request("talk.session.create", {
  mode: "realtime",
  transport: "gateway-relay",
  brain: "agent-consult",
  sessionKey: "main",
});
await gateway.request("talk.session.appendAudio", { sessionId, audioBase64 });
await gateway.request("talk.session.cancelOutput", { sessionId, reason: "barge-in" });
await gateway.request("talk.session.submitToolResult", {
  sessionId,
  callId,
  result: { status: "working" },
  options: { willContinue: true },
});
await gateway.request("talk.session.submitToolResult", {
  sessionId,
  callId,
  result: { status: "already_delivered" },
  options: { suppressResponse: true },
});
await gateway.request("talk.session.submitToolResult", { sessionId, callId, result });
await gateway.request("talk.session.close", { sessionId });

// Client-owned provider session API.
await gateway.request("talk.client.create", {
  mode: "realtime",
  transport: "webrtc",
  brain: "agent-consult",
  sessionKey: "main",
});
await gateway.request("talk.client.toolCall", { sessionKey, callId, name, args });
await gateway.request("talk.client.steer", { sessionKey, text, mode: "steer" });
Browser-owned WebRTC/provider-websocket-sessies gebruiken talk.client.create, omdat de browser de provideronderhandeling en mediatransport beheert terwijl de Gateway referenties, instructies en toolbeleid beheert. talk.session.* is het gemeenschappelijke door Gateway beheerde oppervlak voor gateway-relay-realtime, gateway-relay- transcriptie en managed-room native STT/TTS-sessies. Verouderde configuraties die realtime-selectors naast talk.provider / talk.providers plaatsten, moeten worden gerepareerd met openclaw doctor --fix; runtime Talk herinterpreteert spraak-/TTS-providerconfiguratie niet als realtime-providerconfiguratie. De ondersteunde combinaties voor talk.session.create zijn bewust klein:
ModusTransportBrainEigenaarOpmerkingen
realtimegateway-relayagent-consultGatewayFull-duplex provider-audio overbrugd via de Gateway; toolaanroepen worden via de agent-consult-tool gerouteerd.
transcriptiongateway-relaynoneGatewayAlleen streaming-STT; callers sturen invoeraudio en ontvangen transcriptgebeurtenissen.
stt-ttsmanaged-roomagent-consultNative/client roomPush-to-talk- en walkie-talkie-achtige rooms waarbij de client capture/playback beheert en de Gateway beurtstatus beheert.
stt-ttsmanaged-roomdirect-toolsNative/client roomAdmin-only roommodus voor vertrouwde first-party oppervlakken die Gateway-toolacties rechtstreeks uitvoeren.
Kaart met verwijderde methoden:
OudNieuw
talk.realtime.sessiontalk.client.create
talk.realtime.toolCalltalk.client.toolCall
talk.realtime.relayAudiotalk.session.appendAudio
talk.realtime.relayCanceltalk.session.cancelOutput of talk.session.cancelTurn
talk.realtime.relayToolResulttalk.session.submitToolResult
talk.realtime.relayStoptalk.session.close
talk.transcription.sessiontalk.session.create({ mode: "transcription" })
talk.transcription.relayAudiotalk.session.appendAudio
talk.transcription.relayCanceltalk.session.cancelTurn
talk.transcription.relayStoptalk.session.close
talk.handoff.createtalk.session.create({ transport: "managed-room" })
talk.handoff.jointalk.session.join
talk.handoff.revoketalk.session.close
De uniforme controlevocabulaire is ook bewust smal:
MethodeVan toepassing opContract
talk.session.appendAudiorealtime/gateway-relay, transcription/gateway-relayVoeg een base64 PCM-audiofragment toe aan de providersessie die eigendom is van dezelfde Gateway-verbinding.
talk.session.startTurnstt-tts/managed-roomStart een gebruikersbeurt in een beheerde ruimte.
talk.session.endTurnstt-tts/managed-roomBeëindig de actieve beurt na validatie van een verouderde beurt.
talk.session.cancelTurnalle sessies die eigendom zijn van GatewayAnnuleer actief opname-, provider-, agent- en TTS-werk voor een beurt.
talk.session.cancelOutputrealtime/gateway-relayStop de audio-uitvoer van de assistent zonder noodzakelijkerwijs de gebruikersbeurt te beëindigen.
talk.session.submitToolResultrealtime/gateway-relayVoltooi een provider-toolaanroep die door de relay is uitgegeven; geef options.willContinue door voor tussentijdse uitvoer of options.suppressResponse om aan de aanroep te voldoen zonder nog een assistentantwoord.
talk.session.steerTalk-sessies met agent-ondersteuningStuur gesproken status-, steer-, cancel- of followup-besturing naar de actieve ingesloten run die vanuit de Talk-sessie is opgelost.
talk.session.closealle uniforme sessiesStop relay-sessies of trek de status van de beheerde ruimte in, en vergeet daarna de uniforme sessie-id.
Introduceer geen provider- of platformspecifieke uitzonderingen in core om dit te laten werken. Core beheert de semantiek van Talk-sessies. Provider-plugins beheren het instellen van leverancierssessies. Spraakoproepen en Google Meet beheren telefonie- en vergaderadapters. Browser- en native apps beheren de UX voor apparaatopname en -weergave.

Compatibiliteitsbeleid

Voor externe plugins volgt compatibiliteitswerk deze volgorde:
  1. voeg het nieuwe contract toe
  2. houd het oude gedrag aangesloten via een compatibiliteitsadapter
  3. geef een diagnose of waarschuwing uit die het oude pad en de vervanging noemt
  4. dek beide paden af in tests
  5. documenteer de veroudering en het migratiepad
  6. verwijder pas na het aangekondigde migratievenster, meestal in een major release
Maintainers kunnen de huidige migratiewachtrij controleren met pnpm plugins:boundary-report. Gebruik pnpm plugins:boundary-report:summary voor compacte aantallen, --owner <id> voor één plugin of compatibiliteitseigenaar, en pnpm plugins:boundary-report:ci wanneer een CI-gate moet falen op verlopen compatibiliteitsrecords, cross-owner gereserveerde SDK-imports of ongebruikte gereserveerde SDK- subpaden. Het rapport groepeert verouderde compatibiliteitsrecords op verwijderdatum, telt lokale code-/docs-verwijzingen, brengt cross-owner gereserveerde SDK-imports naar boven en vat de private memory-host SDK-bridge samen, zodat compatibiliteitsopschoning expliciet blijft in plaats van te vertrouwen op ad-hoczoekopdrachten. Gereserveerde SDK-subpaden moeten bijgehouden eigenaarsgebruik hebben; ongebruikte gereserveerde helper-exports moeten uit de publieke SDK worden verwijderd. Als een manifestveld nog steeds wordt geaccepteerd, kunnen pluginauteurs het blijven gebruiken totdat de docs en diagnoses anders aangeven. Nieuwe code moet de gedocumenteerde vervanging verkiezen, maar bestaande plugins mogen niet breken tijdens gewone minor releases.

Migreren

1

Migrate runtime config load/write helpers

Gebundelde plugins moeten stoppen met het rechtstreeks aanroepen van api.runtime.config.loadConfig() en api.runtime.config.writeConfigFile(...). Geef de voorkeur aan configuratie die al aan het actieve aanroeppad is doorgegeven. Langlevende handlers die de huidige processnapshot nodig hebben, kunnen api.runtime.config.current() gebruiken. Langlevende agenttools moeten ctx.getRuntimeConfig() van de toolcontext binnen execute gebruiken, zodat een tool die vóór een configuratieschrijving is gemaakt nog steeds de vernieuwde runtimeconfiguratie ziet.Configuratieschrijvingen moeten via de transactionele helpers lopen en een beleid voor na het schrijven kiezen:
await api.runtime.config.mutateConfigFile({
  afterWrite: { mode: "auto" },
  mutate(draft) {
    draft.plugins ??= {};
  },
});
Gebruik afterWrite: { mode: "restart", reason: "..." } wanneer de aanroeper weet dat de wijziging een schone gateway-herstart vereist, en afterWrite: { mode: "none", reason: "..." } alleen wanneer de aanroeper eigenaar is van de follow-up en bewust de herlaadplanner wil onderdrukken. Mutatieresultaten bevatten een getypeerde followUp-samenvatting voor tests en logging; de gateway blijft verantwoordelijk voor het toepassen of plannen van de herstart. loadConfig en writeConfigFile blijven als verouderde compatibiliteits- helpers voor externe plugins bestaan tijdens het migratievenster en waarschuwen één keer met de compatibiliteitscode runtime-config-load-write. Gebundelde plugins en runtimecode in de repo worden beschermd door scanner-guardrails in pnpm check:deprecated-api-usage en pnpm check:no-runtime-action-load-config: nieuw gebruik in productieplugins faalt direct, directe configuratieschrijvingen falen, gatewayservermethoden moeten de request-runtime-snapshot gebruiken, runtimehelpers voor channel send/action/client moeten configuratie van hun boundary ontvangen, en langlevende runtimemodules hebben nul toegestane ambient loadConfig()-aanroepen.Nieuwe plugincode moet ook vermijden de brede openclaw/plugin-sdk/config-runtime-compatibiliteitsbarrel te importeren. Gebruik het smalle SDK-subpad dat bij de taak past:
BehoefteImport
Configuratietypen zoals OpenClawConfigopenclaw/plugin-sdk/config-contracts
Al geladen configuratieasserties en configuratieopzoeking voor plugin-entryopenclaw/plugin-sdk/plugin-config-runtime
Lezingen van de huidige runtimesnapshotopenclaw/plugin-sdk/runtime-config-snapshot
Configuratieschrijvingenopenclaw/plugin-sdk/config-mutation
Helpers voor sessieopslagopenclaw/plugin-sdk/session-store-runtime
Markdown-tabelconfiguratieopenclaw/plugin-sdk/markdown-table-runtime
Runtimehelpers voor groepsbeleidopenclaw/plugin-sdk/runtime-group-policy
Oplossing van geheime invoeropenclaw/plugin-sdk/secret-input-runtime
Model-/sessie-overschrijvingenopenclaw/plugin-sdk/model-session-runtime
Gebundelde plugins en hun tests worden door scanners beschermd tegen de brede barrel, zodat imports en mocks lokaal blijven voor het gedrag dat ze nodig hebben. De brede barrel bestaat nog steeds voor externe compatibiliteit, maar nieuwe code mag er niet van afhankelijk zijn.
2

Migrate embedded tool-result extensions to middleware

Gebundelde plugins moeten embedded-runner-only api.registerEmbeddedExtensionFactory(...)-handlers voor toolresultaten vervangen door runtime-neutrale middleware.
// OpenClaw and Codex runtime dynamic tools
api.registerAgentToolResultMiddleware(async (event) => {
  return compactToolResult(event);
}, {
  runtimes: ["openclaw", "codex"],
});
Werk tegelijk het pluginmanifest bij:
{
  "contracts": {
    "agentToolResultMiddleware": ["openclaw", "codex"]
  }
}
Geïnstalleerde plugins kunnen ook middleware voor toolresultaten registreren wanneer ze expliciet zijn ingeschakeld en elke beoogde runtime declareren in contracts.agentToolResultMiddleware. Niet-gedeclareerde geïnstalleerde middleware- registraties worden geweigerd.
3

Migrate approval-native handlers to capability facts

Channel-plugins met approval-ondersteuning stellen native approvalgedrag nu beschikbaar via approvalCapability.nativeRuntime plus het gedeelde runtime-contextregister.Belangrijkste wijzigingen:
  • Vervang approvalCapability.handler.loadRuntime(...) door approvalCapability.nativeRuntime
  • Verplaats approval-specifieke auth/delivery van legacy plugin.auth / plugin.approvals-bedrading naar approvalCapability
  • ChannelPlugin.approvals is verwijderd uit het publieke channel-plugin- contract; verplaats delivery/native/render-velden naar approvalCapability
  • plugin.auth blijft alleen voor channel-login-/logoutflows; approval-auth- hooks daar worden niet langer door core gelezen
  • Registreer runtimeobjecten die eigendom zijn van het channel, zoals clients, tokens of Bolt- apps, via openclaw/plugin-sdk/channel-runtime-context
  • Verstuur geen reroute-meldingen die eigendom zijn van de plugin vanuit native approvalhandlers; core beheert nu elders-gerouteerde meldingen vanuit daadwerkelijke bezorgresultaten
  • Wanneer je channelRuntime doorgeeft aan createChannelManager(...), lever dan een echt createPluginRuntime().channel-oppervlak. Gedeeltelijke stubs worden geweigerd.
Zie /plugins/sdk-channel-plugins voor de huidige indeling van approval-capabilities.
4

Audit Windows wrapper fallback behavior

Als je plugin openclaw/plugin-sdk/windows-spawn gebruikt, falen niet-opgeloste Windows .cmd/.bat-wrappers nu gesloten, tenzij je expliciet allowShellFallback: true doorgeeft.
// 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,
});
Als je aanroeper niet bewust vertrouwt op shell-fallback, stel dan allowShellFallback niet in en handel in plaats daarvan de gegooide fout af.
5

Find deprecated imports

Zoek in je plugin naar imports uit een van beide verouderde oppervlakken:
grep -r "plugin-sdk/compat" my-plugin/
grep -r "plugin-sdk/infra-runtime" my-plugin/
grep -r "plugin-sdk/config-runtime" my-plugin/
grep -r "openclaw/extension-api" my-plugin/
6

Replace with focused imports

Elke export uit het oude oppervlak verwijst naar een specifiek modern importpad:
// 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";
Gebruik voor host-side helpers de geïnjecteerde pluginruntime in plaats van rechtstreeks te importeren:
// Before (deprecated extension-api bridge)
import { runEmbeddedAgent } from "openclaw/extension-api";
const result = await runEmbeddedAgent({ sessionId, prompt });

// After (injected runtime)
const result = await api.runtime.agent.runEmbeddedAgent({ sessionId, prompt });
Hetzelfde patroon geldt voor andere verouderde bridge-helpers:
Oude importModerne equivalent
resolveAgentDirapi.runtime.agent.resolveAgentDir
resolveAgentWorkspaceDirapi.runtime.agent.resolveAgentWorkspaceDir
resolveAgentIdentityapi.runtime.agent.resolveAgentIdentity
resolveThinkingDefaultapi.runtime.agent.resolveThinkingDefault
resolveAgentTimeoutMsapi.runtime.agent.resolveAgentTimeoutMs
ensureAgentWorkspaceapi.runtime.agent.ensureAgentWorkspace
sessieopslaghelpersapi.runtime.agent.session.*
7

Replace broad infra-runtime imports

openclaw/plugin-sdk/infra-runtime bestaat nog steeds voor externe compatibiliteit, maar nieuwe code moet het gerichte helperoppervlak importeren dat daadwerkelijk nodig is:
BehoefteImport
Helpers voor systeemgebeurteniswachtrijopenclaw/plugin-sdk/system-event-runtime
Helpers voor Heartbeat-wake, gebeurtenissen en zichtbaarheidopenclaw/plugin-sdk/heartbeat-runtime
Leegmaken van wachtrij voor openstaande leveringopenclaw/plugin-sdk/delivery-queue-runtime
Telemetrie voor kanaalactiviteitopenclaw/plugin-sdk/channel-activity-runtime
In-memory en persistentie-ondersteunde dedupe-cachesopenclaw/plugin-sdk/dedupe-runtime
Helpers voor veilige lokale bestands-/mediapadenopenclaw/plugin-sdk/file-access-runtime
Dispatcher-bewuste fetchopenclaw/plugin-sdk/runtime-fetch
Helpers voor proxy en bewaakte fetchopenclaw/plugin-sdk/fetch-runtime
Beleidstypen voor SSRF-dispatcheropenclaw/plugin-sdk/ssrf-dispatcher
Typen voor goedkeuringsverzoek/-afhandelingopenclaw/plugin-sdk/approval-runtime
Helpers voor payload en opdracht van goedkeuringsantwoordopenclaw/plugin-sdk/approval-reply-runtime
Helpers voor foutopmaakopenclaw/plugin-sdk/error-runtime
Wachten op transportgereedheidopenclaw/plugin-sdk/transport-ready-runtime
Helpers voor veilige tokensopenclaw/plugin-sdk/secure-random-runtime
Begrensde gelijktijdigheid van async takenopenclaw/plugin-sdk/concurrency-runtime
Numerieke coercieopenclaw/plugin-sdk/number-runtime
Proces-lokaal async-slotopenclaw/plugin-sdk/async-lock-runtime
Bestandsslotenopenclaw/plugin-sdk/file-lock
Gebundelde plugins worden door de scanner beschermd tegen infra-runtime, zodat repocode niet kan terugvallen naar de brede barrel.
8

Migrate channel route helpers

Nieuwe kanaalroutecode moet openclaw/plugin-sdk/channel-route gebruiken. De oudere route-key- en comparable-target-namen blijven als compatibiliteitsaliassen bestaan tijdens de migratieperiode, maar nieuwe plugins moeten de routenamen gebruiken die het gedrag direct beschrijven:
Oude helperModerne helper
channelRouteIdentityKey(...)channelRouteDedupeKey(...)
channelRouteKey(...)channelRouteCompactKey(...)
ComparableChannelTargetChannelRouteParsedTarget
comparableChannelTargetsMatch(...)channelRouteTargetsMatchExact(...)
comparableChannelTargetsShareRoute(...)channelRouteTargetsShareConversation(...)
De moderne routehelpers normaliseren { channel, to, accountId, threadId } consistent voor native goedkeuringen, onderdrukking van antwoorden, inkomende dedupe, cronlevering en sessierouting.Voeg geen nieuwe toepassingen toe van ChannelMessagingAdapter.parseExplicitTarget of de parser-ondersteunde geladen-routehelpers (parseExplicitTargetForLoadedChannel of resolveRouteTargetForLoadedChannel) of resolveChannelRouteTargetWithParser(...) uit plugin-sdk/channel-route. Die hooks zijn verouderd en blijven alleen voor oudere plugins bestaan tijdens de migratieperiode. Nieuwe kanaalplugins moeten messaging.targetResolver.resolveTarget(...) gebruiken voor normalisatie van doel-id’s en fallback bij ontbrekende directoryvermeldingen, messaging.inferTargetChatType(...) wanneer core vroeg een peer-soort nodig heeft, en messaging.resolveOutboundSessionRoute(...) voor provider-native sessie- en threadidentiteit.
9

Build and test

pnpm build
pnpm test -- my-plugin/

Referentie voor importpaden

ImportpadDoelBelangrijkste exports
plugin-sdk/plugin-entryCanonieke invoerhulpfunctie voor PlugindefinePluginEntry
plugin-sdk/coreVerouderde overkoepelende her-export voor kanaalinvoerdefinities/-bouwersdefineChannelPluginEntry, createChatChannelPlugin
plugin-sdk/config-schemaExport van rootconfiguratieschemaOpenClawSchema
plugin-sdk/provider-entryInvoerhulpfunctie voor één providerdefineSingleProviderPluginEntry
plugin-sdk/channel-coreGerichte kanaalinvoerdefinities en -bouwersdefineChannelPluginEntry, defineSetupPluginEntry, createChatChannelPlugin, createChannelPluginBase
plugin-sdk/setupGedeelde hulpfuncties voor de configuratiewizardConfiguratievertaler, prompts voor toegestane lijsten, bouwers voor configuratiestatus
plugin-sdk/setup-runtimeRuntime-hulpfuncties tijdens configuratiecreateSetupTranslator, importveilige configuratiepatchadapters, hulpfuncties voor opzoeknotities, promptResolvedAllowFrom, splitSetupEntries, gedelegeerde configuratieproxy’s
plugin-sdk/setup-adapter-runtimeVerouderde alias voor configuratieadapterGebruik plugin-sdk/setup-runtime
plugin-sdk/setup-toolsHulpfuncties voor configuratietoolingformatCliCommand, detectBinary, extractArchive, resolveBrewExecutable, formatDocsLink, CONFIG_DIR
plugin-sdk/account-coreHulpfuncties voor meerdere accountsHulpfuncties voor accountlijst/configuratie/actiepoort
plugin-sdk/account-idHulpfuncties voor account-ID’sDEFAULT_ACCOUNT_ID, normalisatie van account-ID’s
plugin-sdk/account-resolutionHulpfuncties voor accountopzoekingHulpfuncties voor accountopzoeking + standaard-terugval
plugin-sdk/account-helpersSmalle accounthulpfunctiesHulpfuncties voor accountlijst/accountacties
plugin-sdk/channel-setupAdapters voor de configuratiewizardcreateOptionalChannelSetupSurface, createOptionalChannelSetupAdapter, createOptionalChannelSetupWizard, plus DEFAULT_ACCOUNT_ID, createTopLevelChannelDmPolicy, setSetupChannelEnabled, splitSetupEntries
plugin-sdk/channel-pairingPrimitieven voor DM-koppelingcreateChannelPairingController
plugin-sdk/channel-reply-pipelineBekabeling voor antwoordprefix, typen en bronleveringcreateChannelReplyPipeline, resolveChannelSourceReplyDeliveryMode
plugin-sdk/channel-config-helpersFabrieken voor configuratieadapters en hulpfuncties voor DM-toegangcreateHybridChannelConfigAdapter, resolveChannelDmAccess, resolveChannelDmAllowFrom, resolveChannelDmPolicy, normalizeChannelDmPolicy, normalizeLegacyDmAliases
plugin-sdk/channel-config-schemaBouwers voor configuratieschema’sGedeelde kanaalconfiguratieschema-primitieven en alleen de generieke bouwer
plugin-sdk/bundled-channel-config-schemaGebundelde configuratieschema’sAlleen door OpenClaw onderhouden gebundelde plugins; nieuwe plugins moeten pluginlokale schema’s definiëren
plugin-sdk/channel-config-schema-legacyVerouderde gebundelde configuratieschema’sAlleen compatibiliteitsalias; gebruik plugin-sdk/bundled-channel-config-schema voor onderhouden gebundelde plugins
plugin-sdk/telegram-command-configHulpfuncties voor Telegram-opdrachtconfiguratieNormalisatie van opdrachtnamen, inkorten van beschrijvingen, validatie van duplicaten/conflicten
plugin-sdk/channel-policyBeleidsresolutie voor groep/DMresolveChannelGroupRequireMention
plugin-sdk/channel-lifecycleVerouderde compatibiliteitsfacadeGebruik plugin-sdk/channel-outbound
plugin-sdk/inbound-envelopeHulpfuncties voor inkomende enveloppenGedeelde route- + envelopbouwhulpfuncties
plugin-sdk/channel-inboundHulpfuncties voor inkomende ontvangstContextopbouw, opmaak, roots, runners, voorbereide antwoordverzending en dispatchpredicaten
plugin-sdk/messaging-targetsVerouderd importpad voor doelparseringGebruik plugin-sdk/channel-targets voor generieke hulpfuncties voor doelparsering, plugin-sdk/channel-route voor routevergelijking en plugin-eigen messaging.targetResolver / messaging.resolveOutboundSessionRoute voor provider-specifieke doelresolutie
plugin-sdk/outbound-mediaHulpfuncties voor uitgaande mediaGedeeld laden van uitgaande media
plugin-sdk/outbound-send-depsVerouderde compatibiliteitsfacadeGebruik plugin-sdk/channel-outbound
plugin-sdk/channel-outboundHulpfuncties voor levenscyclus van uitgaande berichtenBerichtadapters, ontvangstbewijzen, duurzame verzendhulpfuncties, livevoorbeeld-/streaminghulpfuncties, antwoordopties, levenscyclushulpfuncties, uitgaande identiteit en payloadplanning
plugin-sdk/channel-streamingVerouderde compatibiliteitsfacadeGebruik plugin-sdk/channel-outbound
plugin-sdk/outbound-runtimeVerouderde compatibiliteitsfacadeGebruik plugin-sdk/channel-outbound
plugin-sdk/thread-bindings-runtimeHulpfuncties voor threadbindingLevenscyclus- en adapterhulpfuncties voor threadbinding
plugin-sdk/agent-media-payloadHulpfuncties voor verouderde mediapayloadsBouwer voor agent-mediapayloads voor verouderde veldindelingen
plugin-sdk/channel-runtimeVerouderde compatibiliteitslaagAlleen verouderde kanaalruntimehulpmiddelen
plugin-sdk/channel-send-resultVerzendresultaattypenAntwoordresultaattypen
plugin-sdk/runtime-storePersistente Plugin-opslagcreatePluginRuntimeStore
plugin-sdk/runtimeBrede runtime-hulpfunctiesRuntime-/logging-/back-up-/Plugin-installatiehulpfuncties
plugin-sdk/runtime-envSmalle runtime-omgevingshulpfunctiesLogger-/runtime-omgeving, timeout-, retry- en backoff-hulpfuncties
plugin-sdk/plugin-runtimeGedeelde Plugin-runtimehulpfunctiesPlugin-opdrachten/-hooks/-HTTP-/interactieve hulpfuncties
plugin-sdk/hook-runtimeHulpfuncties voor hookpijplijnenGedeelde Webhook-/interne hookpijplijnhulpfuncties
plugin-sdk/lazy-runtimeLuie runtime-hulpfunctiescreateLazyRuntimeModule, createLazyRuntimeMethod, createLazyRuntimeMethodBinder, createLazyRuntimeNamedExport, createLazyRuntimeSurface
plugin-sdk/process-runtimeProceshulpfunctiesGedeelde uitvoeringshulpfuncties
plugin-sdk/cli-runtimeCLI-runtimehulpfunctiesOpdrachtopmaak, wachttijden, versiehulpfuncties
plugin-sdk/gateway-runtimeGateway-hulpfunctiesGateway-client, starthulpfunctie voor gereedheid van eventloop, resolutie van geadverteerde LAN-host en hulpfuncties voor kanaalstatuspatches
plugin-sdk/config-runtimeVerouderde compatibiliteitslaag voor configuratieGeef de voorkeur aan config-contracts, plugin-config-runtime, runtime-config-snapshot en config-mutation
plugin-sdk/telegram-command-configHulpfuncties voor Telegram-opdrachtenTerugvalstabiele hulpfuncties voor validatie van Telegram-opdrachten wanneer het gebundelde Telegram-contractoppervlak niet beschikbaar is
plugin-sdk/approval-runtimeHulpfuncties voor goedkeuringspromptsPayload voor goedkeuring van uitvoering/Plugin, hulpfuncties voor goedkeuringsmogelijkheden/-profielen, native routerings-/runtimehulpfuncties voor goedkeuringen en gestructureerde opmaak van weergavepaden voor goedkeuringen
plugin-sdk/approval-auth-runtimeHulpfuncties voor goedkeuringsauthenticatieOplossing van goedkeurders, autorisatie van acties in dezelfde chat
plugin-sdk/approval-client-runtimeHulpfuncties voor goedkeuringsclientsNative profiel-/filterhulpfuncties voor uitvoeringsgoedkeuring
plugin-sdk/approval-delivery-runtimeHulpfuncties voor goedkeuringsleveringNative mogelijkheid-/leveringsadapters voor goedkeuringen
plugin-sdk/approval-gateway-runtimeGateway-hulpfuncties voor goedkeuringenGedeelde hulpfunctie voor Gateway-resolutie van goedkeuringen
plugin-sdk/approval-handler-adapter-runtimeAdapterhulpfuncties voor goedkeuringenLichtgewicht hulpfuncties voor het laden van native goedkeuringsadapters voor snelle kanaalingangspunten
plugin-sdk/approval-handler-runtimeHandlerhulpfuncties voor goedkeuringenBredere runtime-hulpfuncties voor goedkeuringshandlers; geef de voorkeur aan de smallere adapter-/Gateway-randen wanneer die voldoende zijn
plugin-sdk/approval-native-runtimeDoelhulpfuncties voor goedkeuringenNative hulpfuncties voor goedkeuringsdoelen/accountbinding
plugin-sdk/approval-reply-runtimeAntwoordhulpfuncties voor goedkeuringenHulpfuncties voor antwoordpayloads voor uitvoering-/Plugin-goedkeuringen
plugin-sdk/channel-runtime-contextHulpfuncties voor kanaalruntimecontextGenerieke hulpfuncties voor registreren/ophalen/bekijken van kanaalruntimecontext
plugin-sdk/security-runtimeBeveiligingshulpfunctiesGedeelde hulpfuncties voor vertrouwen, DM-poorten, root-begrensde bestanden/paden, externe content en geheimverzameling
plugin-sdk/ssrf-policySSRF-beleidshulpfunctiesHulpfuncties voor toegestane-hostlijst en privé-netwerkbeleid
plugin-sdk/ssrf-runtimeSSRF-runtimehulpfunctiesVastgepinde dispatcher, bewaakte fetch, SSRF-beleidshulpfuncties
plugin-sdk/system-event-runtimeHulpfuncties voor systeemgebeurtenissenenqueueSystemEvent, peekSystemEventEntries
plugin-sdk/heartbeat-runtimeHeartbeat-hulpfunctiesHulpfuncties voor Heartbeat-wake, gebeurtenis en zichtbaarheid
plugin-sdk/delivery-queue-runtimeHulpfuncties voor leveringswachtrijendrainPendingDeliveries
plugin-sdk/channel-activity-runtimeHulpfuncties voor kanaalactiviteitrecordChannelActivity
plugin-sdk/dedupe-runtimeDedupe-hulpfunctiesIn-memory en persistentie-ondersteunde dedupe-caches
plugin-sdk/file-access-runtimeHulpfuncties voor bestandstoegangHulpfuncties voor veilige lokale bestands-/mediapaden
plugin-sdk/transport-ready-runtimeHulpfuncties voor transportgereedheidwaitForTransportReady
plugin-sdk/exec-approvals-runtimeBeleidshulpfuncties voor uitvoeringsgoedkeuringloadExecApprovals, resolveExecApprovalsFromFile, ExecApprovalsFile
plugin-sdk/collection-runtimeHulpfuncties voor begrensde cachespruneMapToMaxSize
plugin-sdk/diagnostic-runtimeHulpfuncties voor diagnostische poortenisDiagnosticFlagEnabled, isDiagnosticsEnabled
plugin-sdk/error-runtimeHulpfuncties voor foutopmaakformatUncaughtError, isApprovalNotFoundError, hulpfuncties voor foutgrafen
plugin-sdk/fetch-runtimeHulpfuncties voor ingepakte fetch/proxyresolveFetch, proxyhulpfuncties, optiehulpfuncties voor EnvHttpProxyAgent
plugin-sdk/host-runtimeHulpfuncties voor hostnormalisatienormalizeHostname, normalizeScpRemoteHost
plugin-sdk/retry-runtimeRetry-hulpfunctiesRetryConfig, retryAsync, beleidsrunners
plugin-sdk/allow-fromOpmaak van toegestane lijsten en invoermappingformatAllowFromLowercase, mapAllowlistResolutionInputs
plugin-sdk/command-authHulpfuncties voor opdrachtpoorten en opdrachtoppervlakkenresolveControlCommandGate, hulpfuncties voor afzenderautorisatie, hulpfuncties voor opdrachtregisters inclusief opmaak van dynamische argumentmenu’s
plugin-sdk/command-statusRenderers voor opdrachtstatus/-hulpbuildCommandsMessage, buildCommandsMessagePaginated, buildHelpMessage
plugin-sdk/secret-inputParsering van geheime invoerHulpfuncties voor geheime invoer
plugin-sdk/webhook-ingressHulpfuncties voor Webhook-verzoekenHulpmiddelen voor Webhook-doelen
plugin-sdk/webhook-request-guardsGuard-hulpfuncties voor Webhook-body’sHulpfuncties voor lezen/beperken van requestbody’s
plugin-sdk/reply-runtimeGedeelde antwoordruntimeInkomende dispatch, Heartbeat, antwoordplanner, opdelen in chunks
plugin-sdk/reply-dispatch-runtimeSmalle hulpfuncties voor antwoorddispatchAfronden, providerdispatch en hulpfuncties voor gesprekslabels
plugin-sdk/reply-historyHulpfuncties voor antwoordgeschiedeniscreateChannelHistoryWindow; verouderde compatibiliteitsexports voor maphulpfuncties zoals buildPendingHistoryContextFromMap, recordPendingHistoryEntry en clearHistoryEntriesIfEnabled
plugin-sdk/reply-referencePlanning van antwoordverwijzingencreateReplyReferencePlanner
plugin-sdk/reply-chunkingHulpfuncties voor antwoordchunksHulpfuncties voor opdelen van tekst/markdown in chunks
plugin-sdk/session-store-runtimeHulpfuncties voor sessiestoresStorepad + hulpfuncties voor bijgewerkt-op
plugin-sdk/state-pathsHulpfuncties voor statuspadenHulpfuncties voor status- en OAuth-mappen
plugin-sdk/routingRouting-/sessiesleutelhulpfunctiesresolveAgentRoute, buildAgentSessionKey, resolveDefaultAgentBoundAccountId, hulpfuncties voor sessiesleutelnormalisatie
plugin-sdk/status-helpersHulpfuncties voor kanaalstatusBouwers voor kanaal-/accountstatussamenvattingen, standaardwaarden voor runtimestatus, hulpfuncties voor probleemmetadata
plugin-sdk/target-resolver-runtimeHulpfuncties voor doelresolverGedeelde hulpfuncties voor doelresolver
plugin-sdk/string-normalization-runtimeHulpfuncties voor tekenreeksnormalisatieHulpfuncties voor slug-/tekenreeksnormalisatie
plugin-sdk/request-urlHulpfuncties voor aanvraag-URL’sTekenreeks-URL’s extraheren uit aanvraagachtige invoer
plugin-sdk/run-commandHulpfuncties voor getimede opdrachtenGetimede opdrachtuitvoerder met genormaliseerde stdout/stderr
plugin-sdk/param-readersParameterlezersAlgemene parameterlezers voor tools/CLI
plugin-sdk/tool-payloadExtractie van toolpayloadGenormaliseerde payloads extraheren uit toolresultaatobjecten
plugin-sdk/tool-sendExtractie van toolverzendingCanonieke velden voor verzenddoelen extraheren uit toolargumenten
plugin-sdk/temp-pathHulpfuncties voor tijdelijke padenGedeelde hulpfuncties voor tijdelijke downloadpaden
plugin-sdk/logging-coreLoghulpfunctiesSubsystemlogger en redactiehulpfuncties
plugin-sdk/markdown-table-runtimeHulpfuncties voor Markdown-tabellenHulpfuncties voor Markdown-tabelmodi
plugin-sdk/reply-payloadTypen voor berichtantwoordenTypen voor antwoordpayloads
plugin-sdk/provider-setupSamengestelde hulpfuncties voor lokale/zelfgehoste providerinstellingHulpfuncties voor ontdekking/configuratie van zelfgehoste providers
plugin-sdk/self-hosted-provider-setupGerichte hulpfuncties voor OpenAI-compatibele zelfgehoste providerinstellingDezelfde hulpfuncties voor ontdekking/configuratie van zelfgehoste providers
plugin-sdk/provider-auth-runtimeHulpfuncties voor providerruntime-authenticatieHulpfuncties voor runtime-resolutie van API-sleutels
plugin-sdk/provider-auth-api-keyHulpfuncties voor provider-API-sleutelinstellingHulpfuncties voor API-sleutelonboarding/profielschrijven
plugin-sdk/provider-auth-resultHulpfuncties voor provider-auth-resultatenStandaardbouwer voor OAuth-auth-resultaten
plugin-sdk/provider-selection-runtimeHulpfuncties voor providerselectieSelectie van geconfigureerde of automatische provider en samenvoeging van onbewerkte providerconfiguratie
plugin-sdk/provider-env-varsHulpfuncties voor provideromgevingsvariabelenHulpfuncties voor het opzoeken van provider-authenticatieomgevingsvariabelen
plugin-sdk/provider-model-sharedGedeelde hulpfuncties voor providermodel/herhalingProviderReplayFamily, buildProviderReplayFamilyHooks, normalizeModelCompat, gedeelde bouwers voor herhalingsbeleid, hulpfuncties voor provider-eindpunten en hulpfuncties voor model-id-normalisatie
plugin-sdk/provider-catalog-sharedGedeelde hulpfuncties voor providercatalogusfindCatalogTemplate, buildSingleProviderApiKeyCatalog, buildManifestModelProviderConfig, supportsNativeStreamingUsageCompat, applyProviderNativeStreamingUsageCompat
plugin-sdk/provider-onboardPatches voor provideronboardingHulpfuncties voor onboardingconfiguratie
plugin-sdk/provider-httpProvider-HTTP-hulpfunctiesAlgemene hulpfuncties voor provider-HTTP/eindpuntmogelijkheden, inclusief hulpfuncties voor multipartformulieren voor audiotranscriptie
plugin-sdk/provider-web-fetchHulpfuncties voor provider-webfetchHulpfuncties voor registratie/cache van webfetchproviders
plugin-sdk/provider-web-search-config-contractHulpfuncties voor provider-webzoekconfiguratieSmalle webzoekconfiguratie-/referentiehulpfuncties voor providers die geen Plugin-inschakelbedrading nodig hebben
plugin-sdk/provider-web-search-contractHulpfuncties voor provider-webzoekcontractSmalle webzoekconfiguratie-/referentiecontracthulpfuncties zoals createWebSearchProviderContractFields, enablePluginInConfig, resolveProviderWebSearchPluginConfig en scoped setters/getters voor referenties
plugin-sdk/provider-web-searchHulpfuncties voor provider-webzoekHulpfuncties voor registratie/cache/runtime van webzoekproviders
plugin-sdk/provider-toolsHulpfuncties voor provider-tool-/schemacompatibiliteitProviderToolCompatFamily, buildProviderToolCompatFamilyHooks en opschoning + diagnostiek voor DeepSeek/Gemini/OpenAI-schema’s
plugin-sdk/provider-usageHulpfuncties voor providergebruikfetchClaudeUsage, fetchGeminiUsage, fetchGithubCopilotUsage en andere hulpfuncties voor providergebruik
plugin-sdk/provider-streamHulpfuncties voor providerstreamwrappersProviderStreamFamily, buildProviderStreamFamilyHooks, composeProviderStreamWrappers, typen voor streamwrappers en gedeelde wrapperhulpfuncties voor Anthropic/Bedrock/DeepSeek V4/Google/Kilocode/Moonshot/OpenAI/OpenRouter/Z.A.I/MiniMax/Copilot
plugin-sdk/provider-transport-runtimeHulpfuncties voor providertransportNative providertransporthulpfuncties zoals bewaakte fetch, tekstextractie van toolresultaten, transportberichttransformaties en schrijfbare transportgebeurtenisstreams
plugin-sdk/keyed-async-queueGeordende async-wachtrijKeyedAsyncQueue
plugin-sdk/media-runtimeGedeelde mediahulpfunctiesHulpfuncties voor media ophalen/transformeren/opslaan, door ffprobe ondersteunde detectie van videodimensies en bouwers voor mediapayloads
plugin-sdk/media-generation-runtimeGedeelde hulpfuncties voor mediageneratieGedeelde failoverhulpfuncties, kandidaatselectie en meldingen voor ontbrekende modellen voor beeld-/video-/muziekgeneratie
plugin-sdk/media-understandingHulpfuncties voor mediabegripProvidertypen voor mediabegrip plus providergerichte exports van beeld-/audiohulpfuncties
plugin-sdk/text-runtimeVerouderde brede export voor tekstcompatibiliteitGebruik string-coerce-runtime, text-chunking, text-utility-runtime en logging-core
plugin-sdk/text-chunkingHulpfuncties voor tekstopdelingHulpfunctie voor uitgaande tekstopdeling
plugin-sdk/speechSpraakhulpfunctiesSpraakprovidertypen plus providergerichte hulpfuncties voor richtlijnen, register, validatie en OpenAI-compatibele TTS-bouwer
plugin-sdk/speech-coreGedeelde spraakkernSpraakprovidertypen, register, richtlijnen, normalisatie
plugin-sdk/realtime-transcriptionHulpfuncties voor realtime transcriptieProvidertypen, registerhulpfuncties en gedeelde WebSocket-sessiehulpfunctie
plugin-sdk/realtime-voiceHulpfuncties voor realtime spraakProvidertypen, register-/resolutiehulpfuncties, brugsessiehulpfuncties, gedeelde terugspreekwachtrijen voor agents, spraakbesturing voor actieve runs, gezondheid van transcript/gebeurtenissen, echo-onderdrukking, matching van consultvragen, coördinatie van geforceerde consults, tracking van beurtcontext, tracking van uitvoeractiviteit en snelle contextconsult-hulpfuncties
plugin-sdk/image-generationHulpfuncties voor beeldgeneratieProvidertypen voor beeldgeneratie plus hulpfuncties voor beeldassets/data-URL’s en de OpenAI-compatibele beeldproviderbouwer
plugin-sdk/image-generation-coreGedeelde kern voor beeldgeneratieTypen voor beeldgeneratie, failover, authenticatie en registerhulpfuncties
plugin-sdk/music-generationHulpfuncties voor muziekgeneratieProvider-/aanvraag-/resultaattypen voor muziekgeneratie
plugin-sdk/music-generation-coreGedeelde kern voor muziekgeneratieTypen voor muziekgeneratie, failoverhulpfuncties, provideropzoeking en model-ref-parsing
plugin-sdk/video-generationHulpfuncties voor videogeneratieProvider-/aanvraag-/resultaattypen voor videogeneratie
plugin-sdk/video-generation-coreGedeelde kern voor videogeneratieTypen voor videogeneratie, failoverhulpfuncties, provideropzoeking en model-ref-parsing
plugin-sdk/interactive-runtimeHulpfuncties voor interactieve antwoordenNormalisatie/reductie van interactieve antwoordpayloads
plugin-sdk/channel-config-primitivesPrimitieven voor kanaalconfiguratieSmalle primitieve waarden voor kanaalconfiguratieschema’s
plugin-sdk/channel-config-writesHulpfuncties voor schrijven van kanaalconfiguratieHulpfuncties voor autorisatie van schrijven naar kanaalconfiguratie
plugin-sdk/channel-plugin-commonGedeelde kanaalpreludeGedeelde prelude-exports voor kanaal-Plugins
plugin-sdk/channel-statusHulpfuncties voor kanaalstatusGedeelde hulpfuncties voor kanaalstatussnapshots/-samenvattingen
plugin-sdk/allowlist-config-editHulpfuncties voor allowlistconfiguratieHulpfuncties voor bewerken/lezen van allowlistconfiguratie
plugin-sdk/group-accessHulpfuncties voor groepstoegangGedeelde beslissingshulpfuncties voor groepstoegang
plugin-sdk/direct-dm, plugin-sdk/direct-dm-accessVerouderde compatibiliteitsfacadesGebruik plugin-sdk/channel-inbound
plugin-sdk/direct-dm-guard-policyHulpfuncties voor Direct-DM-bewakingSmalle beleidshelpers voor bewaking vóór crypto
plugin-sdk/extension-sharedGedeelde extensiehulpfunctiesPrimitieven voor passief kanaal/status en ambient-proxyhulpfuncties
plugin-sdk/webhook-targetsHulpfuncties voor Webhook-doelenWebhook-doelregister en hulpfuncties voor route-installatie
plugin-sdk/webhook-pathVerouderde alias voor Webhook-padGebruik plugin-sdk/webhook-ingress
plugin-sdk/web-mediaGedeelde webmediahulpfunctiesHulpfuncties voor laden van externe/lokale media
plugin-sdk/zodVerouderde herexport voor Zod-compatibiliteitImporteer zod rechtstreeks uit zod
plugin-sdk/memory-coreGebundelde memory-core-hulpfunctiesHulpoppervlak voor geheugenbeheerder/configuratie/bestand/CLI
plugin-sdk/memory-core-engine-runtimeRuntimefacade voor geheugenengineRuntimefacade voor geheugenindex/-zoekfunctie
plugin-sdk/memory-core-host-embedding-registryRegister voor geheugenembeddingsLichtgewicht registerhulpfuncties voor provider van geheugenembeddings
plugin-sdk/memory-core-host-engine-foundationGeheugenhost-foundation-engineExports voor geheugenhost-foundation-engine
plugin-sdk/memory-core-host-engine-embeddingsGeheugenhost-embeddingengineContracten voor geheugenembeddings, registertoegang, lokale provider en algemene batch-/externe hulpfuncties; concrete externe providers staan in hun eigen Plugins
plugin-sdk/memory-core-host-engine-qmdGeheugenhost-QMD-engineExports voor geheugenhost-QMD-engine
plugin-sdk/memory-core-host-engine-storageOpslagengine voor geheugenhostExports voor opslagengine van geheugenhost
plugin-sdk/memory-core-host-multimodalMultimodale hulpfuncties voor geheugenhostMultimodale hulpfuncties voor geheugenhost
plugin-sdk/memory-core-host-queryQueryhulpfuncties voor geheugenhostQueryhulpfuncties voor geheugenhost
plugin-sdk/memory-core-host-secretGeheimhulpfuncties voor geheugenhostGeheimhulpfuncties voor geheugenhost
plugin-sdk/memory-core-host-eventsVerouderde alias voor geheugengebeurtenissenGebruik plugin-sdk/memory-host-events
plugin-sdk/memory-core-host-statusStatushulpfuncties voor geheugenhostStatushulpfuncties voor geheugenhost
plugin-sdk/memory-core-host-runtime-cliCLI-runtime voor geheugenhostHulpfuncties voor CLI-runtime van geheugenhost
plugin-sdk/memory-core-host-runtime-coreKernruntime voor geheugenhostHulpfuncties voor kernruntime van geheugenhost
plugin-sdk/memory-core-host-runtime-filesBestands-/runtimehulpfuncties voor geheugenhostBestands-/runtimehulpfuncties voor geheugenhost
plugin-sdk/memory-host-coreAlias voor kernruntime van geheugenhostLeverancieronafhankelijke alias voor hulpfuncties van kernruntime van geheugenhost
plugin-sdk/memory-host-eventsAlias voor gebeurtenisjournaal van geheugenhostLeverancieronafhankelijke alias voor hulpfuncties van gebeurtenisjournaal van geheugenhost
plugin-sdk/memory-host-filesVerouderde alias voor geheugenbestand/-runtimeGebruik plugin-sdk/memory-core-host-runtime-files
plugin-sdk/memory-host-markdownHulpfuncties voor beheerde MarkdownGedeelde hulpfuncties voor beheerde Markdown voor geheugenverwante Plugins
plugin-sdk/memory-host-searchActive Memory-zoekfacadeLuie runtimefacade voor Active Memory-zoekbeheerder
plugin-sdk/memory-host-statusVerouderde alias voor geheugenhoststatusGebruik plugin-sdk/memory-core-host-status
plugin-sdk/testingTesthulpmiddelenRepo-lokale verouderde compatibiliteitsbarrel; gebruik gerichte repo-lokale testsubpaden zoals plugin-sdk/plugin-test-runtime, plugin-sdk/channel-test-helpers, plugin-sdk/channel-target-testing, plugin-sdk/test-env en plugin-sdk/test-fixtures
Deze tabel is bewust de gemeenschappelijke migratiesubset, niet het volledige SDK- oppervlak. De inventaris van compiler-entrypoints staat in scripts/lib/plugin-sdk-entrypoints.json; package-exports worden gegenereerd uit de publieke subset. Gereserveerde helper-seams voor gebundelde Plugins zijn uit de publieke SDK- exportmap gehaald, behalve expliciet gedocumenteerde compatibiliteitsfacades zoals de verouderde plugin-sdk/discord-shim die behouden blijft voor het gepubliceerde pakket @openclaw/discord@2026.3.13. Eigenaarsspecifieke helpers staan binnen het eigenaarspakket van de Plugin; gedeeld hostgedrag moet via generieke SDK- contracten lopen, zoals plugin-sdk/gateway-runtime, plugin-sdk/security-runtime en plugin-sdk/plugin-config-runtime. Gebruik de smalste import die bij de taak past. Als je geen export kunt vinden, controleer dan de bron in src/plugin-sdk/ of vraag maintainers welk generiek contract er eigenaar van moet zijn.

Actieve deprecaties

Smalere deprecaties die gelden voor de plugin-SDK, het providercontract, runtime-oppervlak en manifest. Ze werken vandaag nog allemaal, maar worden in een toekomstige major release verwijderd. De vermelding onder elk item koppelt de oude API aan de canonieke vervanging.
Oud (openclaw/plugin-sdk/command-auth): buildCommandsMessage, buildCommandsMessagePaginated, buildHelpMessage.Nieuw (openclaw/plugin-sdk/command-status): dezelfde signatures, dezelfde exports - alleen geïmporteerd vanuit het smallere subpad. command-auth exporteert ze opnieuw als compat-stubs.
// Before
import { buildHelpMessage } from "openclaw/plugin-sdk/command-auth";

// After
import { buildHelpMessage } from "openclaw/plugin-sdk/command-status";
Oud: resolveInboundMentionRequirement({ facts, policy }) en shouldDropInboundForMention(...) uit openclaw/plugin-sdk/channel-inbound of openclaw/plugin-sdk/channel-mention-gating.Nieuw: resolveInboundMentionDecision({ facts, policy }) - retourneert één beslissingsobject in plaats van twee gesplitste calls.Downstream channel-Plugins (Slack, Discord, Matrix, MS Teams) zijn al overgestapt.
openclaw/plugin-sdk/channel-runtime is een compatibiliteitsshim voor oudere channel-Plugins. Importeer dit niet vanuit nieuwe code; gebruik openclaw/plugin-sdk/channel-runtime-context voor het registreren van runtime- objecten.channelActions*-helpers in openclaw/plugin-sdk/channel-actions zijn verouderd naast ruwe “actions”-channel-exports. Stel capabilities in plaats daarvan beschikbaar via het semantische presentation-oppervlak - channel-Plugins declareren wat ze renderen (cards, buttons, selects) in plaats van welke ruwe action-namen ze accepteren.
Oud: tool()-factory uit openclaw/plugin-sdk/provider-web-search.Nieuw: implementeer createTool(...) rechtstreeks op de provider-Plugin. OpenClaw heeft de SDK-helper niet langer nodig om de tool-wrapper te registreren.
Oud: formatInboundEnvelope(...) (en ChannelMessageForAgent.channelEnvelope) om een platte plaintext prompt- envelope te bouwen uit inkomende channel-berichten.Nieuw: BodyForAgent plus gestructureerde gebruikerscontextblokken. Channel- Plugins koppelen routeringsmetadata (thread, topic, reply-to, reactions) als getypeerde velden in plaats van ze samen te voegen tot een promptstring. De helper formatAgentEnvelope(...) wordt nog steeds ondersteund voor gesynthetiseerde assistant-facing envelopes, maar inkomende plaintext-envelopes worden uitgefaseerd.Betrokken gebieden: inbound_claim, message_received en elke aangepaste channel-Plugin die channelEnvelope-tekst nabewerkte.
Oud: api.on("deactivate", handler).Nieuw: api.on("gateway_stop", handler). De event en context zijn hetzelfde shutdown-cleanupcontract; alleen de hooknaam verandert.
// Before
api.on("deactivate", async (event, ctx) => {
  await stopPluginService(ctx);
});

// After
api.on("gateway_stop", async (event, ctx) => {
  await stopPluginService(ctx);
});
deactivate blijft tot na 2026-08-16 gekoppeld als een verouderde compatibiliteitsalias.
Oud: api.on("subagent_spawning", handler) retourneert threadBindingReady of deliveryOrigin.Nieuw: laat core thread: true-subagentbindings voorbereiden via de channel session-bindingadapter. Gebruik api.on("subagent_spawned", handler) alleen voor observatie na de start.
// Before
api.on("subagent_spawning", async () => ({
  status: "ok",
  threadBindingReady: true,
  deliveryOrigin: { channel: "discord", to: "channel:123", threadId: "456" },
}));

// After
api.on("subagent_spawned", async (event) => {
  await observeSubagentLaunch(event);
});
subagent_spawning, PluginHookSubagentSpawningEvent, PluginHookSubagentSpawningResult en SubagentLifecycleHookRunner.runSubagentSpawning(...) blijven alleen bestaan als verouderde compatibiliteitsoppervlakken terwijl externe Plugins migreren.
Vier discovery-typealiases zijn nu dunne wrappers rond de catalog-era types:
Oude aliasNieuw type
ProviderDiscoveryOrderProviderCatalogOrder
ProviderDiscoveryContextProviderCatalogContext
ProviderDiscoveryResultProviderCatalogResult
ProviderPluginDiscoveryProviderPluginCatalog
Plus de verouderde statische ProviderCapabilities-bag - provider-Plugins moeten expliciete providerhooks gebruiken, zoals buildReplayPolicy, normalizeToolSchemas en wrapStreamFn, in plaats van een statisch object.
Oud (drie afzonderlijke hooks op ProviderThinkingPolicy): isBinaryThinking(ctx), supportsXHighThinking(ctx) en resolveDefaultThinkingLevel(ctx).Nieuw: één resolveThinkingProfile(ctx) die een ProviderThinkingProfile retourneert met de canonieke id, optionele label en gerangschikte niveaulijst. OpenClaw verlaagt verouderde opgeslagen waarden automatisch op basis van profielrang.De context bevat provider, modelId, optioneel samengevoegde reasoning en optioneel samengevoegde model-compat-feiten. Provider-Plugins kunnen die catalogusfeiten gebruiken om een modelspecifiek profiel alleen beschikbaar te stellen wanneer het geconfigureerde requestcontract dit ondersteunt.Implementeer één hook in plaats van drie. De legacy hooks blijven werken tijdens de deprecationperiode, maar worden niet gecombineerd met het profielresultaat.
Oud: externe authhooks implementeren zonder de provider in het Plugin-manifest te declareren.Nieuw: declareer contracts.externalAuthProviders in het Plugin-manifest en implementeer resolveExternalAuthProfiles(...).
{
  "contracts": {
    "externalAuthProviders": ["anthropic", "openai"]
  }
}
Oud manifestveld: providerAuthEnvVars: { anthropic: ["ANTHROPIC_API_KEY"] }.Nieuw: spiegel dezelfde env-var-lookup naar setup.providers[].envVars op het manifest. Dit consolideert setup/status-env-metadata op één plek en voorkomt dat de Plugin-runtime alleen hoeft te starten om env-var- lookups te beantwoorden.providerAuthEnvVars blijft ondersteund via een compatibiliteitsadapter totdat de deprecationperiode sluit.
Oud: drie afzonderlijke calls - api.registerMemoryPromptSection(...), api.registerMemoryFlushPlan(...), api.registerMemoryRuntime(...).Nieuw: één call op de memory-state-API - registerMemoryCapability(pluginId, { promptBuilder, flushPlanResolver, runtime }).Dezelfde slots, één registratiecall. Additieve prompt- en corpushelpers (registerMemoryPromptSupplement, registerMemoryCorpusSupplement) worden niet beïnvloed.
Oud: api.registerMemoryEmbeddingProvider(...) plus contracts.memoryEmbeddingProviders.Nieuw: api.registerEmbeddingProvider(...) plus contracts.embeddingProviders.Het generieke embeddingprovidercontract is buiten memory herbruikbaar en is het ondersteunde pad voor nieuwe providers. De memory-specifieke registratie-API blijft gekoppeld als verouderde compatibiliteit terwijl bestaande providers migreren. Plugin-inspectie rapporteert niet-gebundeld gebruik als compatibiliteitsschuld.
Twee legacy typealiases worden nog steeds geëxporteerd uit src/plugins/runtime/types.ts:
OudNieuw
SubagentReadSessionParamsSubagentGetSessionMessagesParams
SubagentReadSessionResultSubagentGetSessionMessagesResult
De runtimemethode readSession is verouderd ten gunste van getSessionMessages. Dezelfde signature; de oude methode roept door naar de nieuwe.
Oud: runtime.tasks.flow (enkelvoud) retourneerde een live task-flow-accessor.Nieuw: runtime.tasks.managedFlows behoudt de beheerde TaskFlow-mutatie- runtime voor Plugins die child-taken vanuit een flow maken, bijwerken, annuleren of uitvoeren. Gebruik runtime.tasks.flows wanneer de Plugin alleen DTO-gebaseerde reads nodig heeft.
// Before
const flow = api.runtime.tasks.flow.fromToolContext(ctx);
// After
const flow = api.runtime.tasks.managedFlows.fromToolContext(ctx);
Behandeld in “Migreren → Ingebedde tool-result-extensies migreren naar middleware” hierboven. Hier opgenomen voor volledigheid: het verwijderde embedded-runner-only pad api.registerEmbeddedExtensionFactory(...) wordt vervangen door api.registerAgentToolResultMiddleware(...) met een expliciete runtimelijst in contracts.agentToolResultMiddleware.
OpenClawSchemaType, opnieuw geëxporteerd vanuit openclaw/plugin-sdk, is nu een alias van één regel voor OpenClawConfig. Geef de voorkeur aan de canonieke naam.
// Before
import type { OpenClawSchemaType } from "openclaw/plugin-sdk";
// After
import type { OpenClawConfig } from "openclaw/plugin-sdk/config-schema";
Deprecaties op extensieniveau (binnen gebundelde channel/provider-Plugins onder extensions/) worden bijgehouden in hun eigen api.ts- en runtime-api.ts- barrels. Ze hebben geen invloed op Plugin-contracten van derden en worden hier niet vermeld. Als je de lokale barrel van een gebundelde Plugin rechtstreeks gebruikt, lees dan de deprecationcomments in die barrel voordat je upgradet.

Verwijderingstijdlijn

WanneerWat er gebeurt
NuVerouderde oppervlakken geven runtime-waarschuwingen
Volgende major releaseVerouderde oppervlakken worden verwijderd; plugins die ze nog gebruiken falen
Alle core-plugins zijn al gemigreerd. Externe plugins moeten migreren vóór de volgende major release.

De waarschuwingen tijdelijk onderdrukken

Stel deze omgevingsvariabelen in terwijl je aan de migratie werkt:
OPENCLAW_SUPPRESS_PLUGIN_SDK_COMPAT_WARNING=1 openclaw gateway run
OPENCLAW_SUPPRESS_EXTENSION_API_WARNING=1 openclaw gateway run
Dit is een tijdelijke uitweg, geen permanente oplossing.

Gerelateerd