Naar hoofdinhoud gaan

Documentation Index

Fetch the complete documentation index at: https://docs2.openclaw.ai/llms.txt

Use this file to discover all available pages before exploring further.

OpenClaw is overgestapt van een brede laag voor achterwaartse compatibiliteit naar een moderne pluginarchitectuur met gerichte, gedocumenteerde imports. Als je plugin vóór de nieuwe architectuur is gebouwd, helpt deze gids je bij de migratie.

Wat verandert er

Het oude pluginsysteem bood twee zeer ruime oppervlakken waarmee plugins alles wat ze nodig hadden vanuit één entrypoint konden importeren:
  • openclaw/plugin-sdk/compat - één import die tientallen helpers opnieuw exporteerde. Deze werd geïntroduceerd om oudere, op hooks gebaseerde plugins werkend te houden terwijl de nieuwe pluginarchitectuur werd gebouwd.
  • openclaw/plugin-sdk/infra-runtime - een brede barrel voor runtimehelpers die systeemgebeurtenissen, Heartbeat-status, afleverwachtrijen, fetch-/proxyhelpers, bestandshelpers, goedkeuringstypen en niet-gerelateerde hulpprogramma’s mengde.
  • openclaw/plugin-sdk/config-runtime - een brede barrel voor configuratiecompatibiliteit die tijdens de migratieperiode nog verouderde directe laad-/schrijfhelpers bevat.
  • openclaw/extension-api - een bridge die plugins directe toegang gaf tot host-side helpers zoals de ingebedde agentrunner.
  • api.registerEmbeddedExtensionFactory(...) - een verwijderde, alleen voor Pi bedoelde gebundelde extensiehook 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 alleen voor Pi bedoelde registratie-API voor embedded extension factories is verwijderd; gebruik in plaats daarvan tool-result middleware. OpenClaw verwijdert of herinterpreteert gedocumenteerd plugingedrag niet in dezelfde wijziging die een vervanging introduceert. Brekende contractwijzigingen moeten eerst via een compatibiliteitsadapter, diagnostiek, docs en een deprecation window lopen. 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, breken wanneer dat gebeurt. Alleen voor Pi bedoelde registraties van embedded extension factories worden nu al niet meer geladen.

Waarom dit is gewijzigd

De oude aanpak veroorzaakte problemen:
  • Trage opstart - 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 - er was geen manier om te zien welke exports stabiel waren en welke 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. Legacy provider-convenience seams voor gebundelde kanalen zijn ook verdwenen. Kanaalgebrande helperseams waren private mono-repo-snelkoppelingen, geen stabiele plugincontracten. Gebruik in plaats daarvan smalle generieke SDK-subpaden. Houd binnen de werkruimte van gebundelde plugins 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 de eigen api.ts / contract-api.ts seam
  • OpenAI houdt providerbuilders, default-model-helpers en realtime providerbuilders in de eigen api.ts
  • OpenRouter houdt providerbuilder en onboarding-/configuratiehelpers in de eigen api.ts

Migratieplan voor Talk en realtime spraak

Realtime spraak, telefonie, meetings en browser-Talk-code verhuizen van oppervlak-lokale beurtadministratie 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, capturestatus, output-audiostatus, recente gebeurtenisgeschiedenis en afwijzing van verouderde beurten. Providerplugins moeten eigenaar blijven van leveranciersspecifieke realtime sessies; surface-plugins moeten eigenaar blijven van capture, playback, telefonie en meeting-eigenaardigheden. Deze Talk-migratie is bewust clean breaking:
  1. Houd de gedeelde controller-/runtimeprimitieven in plugin-sdk/realtime-voice.
  2. Verplaats gebundelde surfaces naar de gedeelde controller: browser relay, managed-room handoff, voice-call realtime, voice-call streaming STT, 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 pad voor request-time instruction overrides.
Nieuwe code moet createTalkEventSequencer(...) niet direct aanroepen, tenzij die een low-level adapter of testfixture implementeert. Geef de voorkeur aan de gedeelde controller, zodat turn-scoped gebeurtenissen niet zonder turn id kunnen worden uitgezonden, verouderde turnEnd- / turnCancel-aanroepen geen nieuwere actieve beurt kunnen wissen, en lifecycle-gebeurtenissen voor output-audio consistent blijven in telefonie, meetings, browser relay, managed-room handoff en native Talk-clients. De beoogde publieke API-vorm 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 });
Browser-owned WebRTC-/provider-websocket-sessies gebruiken talk.client.create, omdat de browser eigenaar is van de provideronderhandeling en het mediatransport, terwijl de Gateway eigenaar is van credentials, instructies en toolbeleid. talk.session.* is het gemeenschappelijke door de Gateway beheerde oppervlak voor gateway-relay realtime, gateway-relay transcriptie en managed-room native STT-/TTS-sessies. Legacy configuraties die realtime selectors naast talk.provider / talk.providers plaatsten, moeten worden gerepareerd met openclaw doctor --fix; runtime Talk herinterpreteert speech-/TTS-providerconfiguratie niet als realtime providerconfiguratie. De ondersteunde combinaties voor talk.session.create zijn bewust klein:
ModusTransportBrainEigenaarOpmerkingen
realtimegateway-relayagent-consultGatewayFull-duplex provider-audio gebridged via de Gateway; toolaanroepen worden gerouteerd via de agent-consult-tool.
transcriptiongateway-relaynoneGatewayAlleen streaming STT; callers sturen inputaudio 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.
stt-ttsmanaged-roomdirect-toolsNative/client roomAdmin-only roommodus voor vertrouwde first-party surfaces die Gateway-toolacties direct uitvoeren.
Verwijderde methodemap:
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-audiochunk toe aan de providersessie die eigendom is van dezelfde Gateway-verbinding.
talk.session.startTurnstt-tts/managed-roomStart een managed-room-gebruikersbeurt.
talk.session.endTurnstt-tts/managed-roomBeëindig de actieve beurt na validatie van verouderde beurten.
talk.session.cancelTurnalle Gateway-owned sessiesAnnuleer actieve capture-/provider-/agent-/TTS-werkzaamheden voor een beurt.
talk.session.cancelOutputrealtime/gateway-relayStop audio-uitvoer van de assistant zonder noodzakelijkerwijs de gebruikersbeurt te beëindigen.
talk.session.submitToolResultrealtime/gateway-relayVoltooi een provider-toolaanroep die door de relay is uitgezonden; geef options.willContinue door voor tussentijdse output of options.suppressResponse om de call te voldoen zonder nog een assistant response.
talk.session.closealle uniforme sessiesStop relay-sessies of trek managed-room-status in, en vergeet daarna de uniforme session id.
Voer geen provider- of platformspecifieke uitzonderingen in de kern in om dit te laten werken. De kern beheert de semantiek van Talk-sessies. Providerplugins beheren de sessie-instelling van leveranciers. Spraakoproepen en Google Meet beheren telefonie-/vergaderadapters. Browsers en native apps beheren de UX voor apparaatopname/-weergave.

Compatibiliteitsbeleid

Voor externe plugins volgt compatibiliteitswerk deze volgorde:
  1. voeg het nieuwe contract toe
  2. houd het oude gedrag verbonden 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 afschaffing en het migratiepad
  6. verwijder pas na de aangekondigde migratieperiode, 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 vervallen compatibiliteitsrecords, gereserveerde SDK-imports over eigenaren heen, of ongebruikte gereserveerde SDK- subpaden. Het rapport groepeert verouderde compatibiliteitsrecords op verwijderdatum, telt lokale code-/docsverwijzingen, toont gereserveerde SDK-imports over eigenaren heen, en vat de private SDK-brug voor geheugenhosts samen zodat compatibiliteitsopschoning expliciet blijft in plaats van te vertrouwen op ad-hoczoekopdrachten. Gereserveerde SDK-subpaden moeten bijgehouden eigenaarsgebruik hebben; ongebruikte gereserveerde helperexports 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

Runtime-configuratiehelpers voor laden/schrijven migreren

Gebundelde plugins moeten stoppen met het direct 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() uit de toolcontext binnen execute gebruiken, zodat een tool die vóór een configuratieschrijving is aangemaakt nog steeds de vernieuwde runtimeconfiguratie ziet.Configuratieschrijfbewerkingen moeten via de transactionele helpers verlopen en een after-write-beleid 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 gatewayherstart vereist, en afterWrite: { mode: "none", reason: "..." } alleen wanneer de aanroeper eigenaar is van de opvolging en de herlaadplanner bewust 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 compatibiliteitshelpers voor externe plugins tijdens de migratieperiode en waarschuwen eenmaal met de compatibiliteitscode runtime-config-load-write. Gebundelde plugins en runtimecode in de repo worden beschermd door scannerguardrails in pnpm check:deprecated-api-usage en pnpm check:no-runtime-action-load-config: nieuw gebruik in productieplugins faalt direct, directe configuratieschrijfbewerkingen falen, gatewayservermethoden moeten de runtime-snapshot van het verzoek gebruiken, runtimehelpers voor kanaalverzending/actie/client moeten configuratie van hun grens ontvangen, en langlevende runtimemodules hebben nul toegestane ambient loadConfig()-aanroepen.Nieuwe plugincode moet ook vermijden om de brede compatibiliteitsbarrel openclaw/plugin-sdk/config-runtime te importeren. Gebruik het smalle SDK-subpad dat past bij de taak:
BehoefteImport
Configuratietypen zoals OpenClawConfigopenclaw/plugin-sdk/config-contracts
Asserties voor al geladen configuratie en configuratie-lookup voor pluginvermeldingenopenclaw/plugin-sdk/plugin-config-runtime
Lezen van huidige runtime-snapshotopenclaw/plugin-sdk/runtime-config-snapshot
Configuratieschrijfbewerkingenopenclaw/plugin-sdk/config-mutation
Helpers voor sessiestoreopenclaw/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

Pi-toolresultaatextensies naar middleware migreren

Gebundelde plugins moeten Pi-only api.registerEmbeddedExtensionFactory(...)-toolresulthandlers vervangen door runtime-neutrale middleware.
// Pi and Codex runtime dynamic tools
api.registerAgentToolResultMiddleware(async (event) => {
  return compactToolResult(event);
}, {
  runtimes: ["pi", "codex"],
});
Werk tegelijkertijd het pluginmanifest bij:
{
  "contracts": {
    "agentToolResultMiddleware": ["pi", "codex"]
  }
}
Externe plugins kunnen geen toolresultaatmiddleware registreren, omdat die tooluitvoer met hoog vertrouwen kan herschrijven voordat het model die ziet.
3

Approval-native handlers naar capability-feiten migreren

Kanaalplugins met approval-ondersteuning stellen native approvalgedrag nu beschikbaar via approvalCapability.nativeRuntime plus de gedeelde runtime-contextregistry.Belangrijke 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-plugincontract; verplaats delivery/native/render-velden naar approvalCapability
  • plugin.auth blijft alleen voor kanaal-login-/logoutflows; approval-auth hooks daar worden niet langer door de kern gelezen
  • Registreer runtimeobjecten die eigendom zijn van het kanaal, zoals clients, tokens of Bolt- apps, via openclaw/plugin-sdk/channel-runtime-context
  • Verstuur geen plugin-eigen omleidingsmeldingen vanuit native approvalhandlers; de kern beheert nu routed-elsewhere-meldingen vanuit daadwerkelijke deliveryresultaten
  • Geef bij het doorgeven van channelRuntime aan createChannelManager(...) een echt createPluginRuntime().channel-oppervlak op. Gedeeltelijke stubs worden geweigerd.
Zie /plugins/sdk-channel-plugins voor de huidige indeling van approval-capabilities.
4

Fallbackgedrag van Windows-wrappers auditen

Als je plugin openclaw/plugin-sdk/windows-spawn gebruikt, falen onopgeloste 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 op shellfallback vertrouwt, stel allowShellFallback dan niet in en verwerk in plaats daarvan de gegooide fout.
5

Verouderde imports vinden

Doorzoek je plugin op 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

Vervangen door gerichte imports

Elke export uit het oude oppervlak komt overeen met 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 direct te importeren:
// 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 });
Hetzelfde patroon geldt voor andere legacy bridgehelpers:
Oude importModern 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
helpers voor sessiestoreapi.runtime.agent.session.*
7

Brede infra-runtime-imports vervangen

openclaw/plugin-sdk/infra-runtime bestaat nog steeds voor externe compatibiliteit, maar nieuwe code moet het gerichte helperoppervlak importeren dat die daadwerkelijk nodig heeft:
BehoefteImport
Helpers voor systeemeventqueueopenclaw/plugin-sdk/system-event-runtime
Helpers voor Heartbeat wake, event en zichtbaarheidopenclaw/plugin-sdk/heartbeat-runtime
Drain van wachtrij voor pending deliveryopenclaw/plugin-sdk/delivery-queue-runtime
Telemetrie voor kanaalactiviteitopenclaw/plugin-sdk/channel-activity-runtime
In-memory dedupecachesopenclaw/plugin-sdk/dedupe-runtime
Veilige helpers voor lokale bestands-/mediapadenopenclaw/plugin-sdk/file-access-runtime
Dispatcher-aware fetchopenclaw/plugin-sdk/runtime-fetch
Proxy- en guarded fetch-helpersopenclaw/plugin-sdk/fetch-runtime
SSRF-dispatcherbeleidstypenopenclaw/plugin-sdk/ssrf-dispatcher
Typen voor approvalverzoek/-oplossingopenclaw/plugin-sdk/approval-runtime
Helpers voor approval-antwoordpayload en opdrachtenopenclaw/plugin-sdk/approval-reply-runtime
Helpers voor foutopmaakopenclaw/plugin-sdk/error-runtime
Wachttijden voor transportgereedheidopenclaw/plugin-sdk/transport-ready-runtime
Helpers voor veilige tokensopenclaw/plugin-sdk/secure-random-runtime
Begrensde async taakconcurrencyopenclaw/plugin-sdk/concurrency-runtime
Numerieke coercionopenclaw/plugin-sdk/number-runtime
Process-local async lockopenclaw/plugin-sdk/async-lock-runtime
Bestandslocksopenclaw/plugin-sdk/file-lock
Gebundelde plugins worden door scanners beschermd tegen infra-runtime, zodat repocode niet kan terugvallen naar de brede barrel.
8

Kanaalroutehelpers migreren

Nieuwe kanaalroutecode moet openclaw/plugin-sdk/channel-route gebruiken. De oudere route-key- en comparable-target-namen blijven compatibiliteitsaliassen tijdens de migratieperiode, maar nieuwe plugins moeten de routenamen gebruiken die het gedrag direct beschrijven:
Oude helperModerne helper
channelRouteIdentityKey(...)channelRouteDedupeKey(...)
channelRouteKey(...)channelRouteCompactKey(...)
ComparableChannelTargetChannelRouteParsedTarget
resolveComparableTargetForChannel(...)resolveRouteTargetForChannel(...)
resolveComparableTargetForLoadedChannel(...)resolveRouteTargetForLoadedChannel(...)
comparableChannelTargetsMatch(...)channelRouteTargetsMatchExact(...)
comparableChannelTargetsShareRoute(...)channelRouteTargetsShareConversation(...)
De moderne routehelpers normaliseren { channel, to, accountId, threadId } consistent voor native goedkeuringen, onderdrukking van antwoorden, inkomende deduplicatie, cronlevering en sessieroutering. Als je plugin aangepaste doelgrammatica beheert, gebruik dan resolveChannelRouteTargetWithParser(...) om die parser aan te passen aan hetzelfde routedoelcontract.
9

Build and test

pnpm build
pnpm test -- my-plugin/

Referentie voor importpaden

ImportpadDoelBelangrijkste exports
plugin-sdk/plugin-entryCanonieke Plugin-invoerhelperdefinePluginEntry
plugin-sdk/coreVerouderde overkoepelende re-export voor definities/builders van kanaalinvoerdefineChannelPluginEntry, createChatChannelPlugin
plugin-sdk/config-schemaExport van rootconfiguratieschemaOpenClawSchema
plugin-sdk/provider-entryInvoerhelper voor één providerdefineSingleProviderPluginEntry
plugin-sdk/channel-coreGerichte definities en builders voor kanaalinvoerdefineChannelPluginEntry, defineSetupPluginEntry, createChatChannelPlugin, createChannelPluginBase
plugin-sdk/setupGedeelde helpers voor de configuratiewizardPrompts voor allowlist, builders voor configuratiestatus
plugin-sdk/setup-runtimeRuntimehelpers voor configuratietijdImportveilige adapters voor configuratiepatches, helpers voor opzoeknotities, promptResolvedAllowFrom, splitSetupEntries, gedelegeerde configuratieproxies
plugin-sdk/setup-adapter-runtimeVerouderde alias voor configuratieadapterGebruik plugin-sdk/setup-runtime
plugin-sdk/setup-toolsHelpers voor configuratietoolingformatCliCommand, detectBinary, extractArchive, resolveBrewExecutable, formatDocsLink, CONFIG_DIR
plugin-sdk/account-coreHelpers voor meerdere accountsHelpers voor accountlijst/configuratie/actiegate
plugin-sdk/account-idHelpers voor account-ID’sDEFAULT_ACCOUNT_ID, normalisatie van account-ID’s
plugin-sdk/account-resolutionHelpers voor accounts opzoekenHelpers voor accounts opzoeken + standaardfallback
plugin-sdk/account-helpersSmalle accounthelpersHelpers voor accountlijst/accountactie
plugin-sdk/channel-setupAdapters voor configuratiewizardcreateOptionalChannelSetupSurface, createOptionalChannelSetupAdapter, createOptionalChannelSetupWizard, plus DEFAULT_ACCOUNT_ID, createTopLevelChannelDmPolicy, setSetupChannelEnabled, splitSetupEntries
plugin-sdk/channel-pairingPrimitieven voor DM-koppelingcreateChannelPairingController
plugin-sdk/channel-reply-pipelineWiring voor antwoordprefix, typen en bronleveringcreateChannelReplyPipeline, resolveChannelSourceReplyDeliveryMode
plugin-sdk/channel-config-helpersFactories voor configuratieadapters en helpers voor DM-toegangcreateHybridChannelConfigAdapter, resolveChannelDmAccess, resolveChannelDmAllowFrom, resolveChannelDmPolicy, normalizeChannelDmPolicy, normalizeLegacyDmAliases
plugin-sdk/channel-config-schemaBuilders voor configuratieschema’sAlleen gedeelde primitieven voor kanaalconfiguratieschema’s en de generieke builder
plugin-sdk/bundled-channel-config-schemaMeegeleverde configuratieschema’sAlleen door OpenClaw onderhouden meegeleverde plugins; nieuwe plugins moeten Plugin-lokale schema’s definiëren
plugin-sdk/channel-config-schema-legacyVerouderde meegeleverde configuratieschema’sAlleen compatibiliteitsalias; gebruik plugin-sdk/bundled-channel-config-schema voor onderhouden meegeleverde plugins
plugin-sdk/telegram-command-configHelpers voor Telegram-commandoconfiguratieNormalisatie van commandonamen, bijsnijden van beschrijvingen, validatie van duplicaten/conflicten
plugin-sdk/channel-policyBeleidsresolutie voor groep/DMresolveChannelGroupRequireMention
plugin-sdk/channel-lifecycleHelpers voor accountstatus en levenscyclus van conceptstreamcreateAccountStatusSink, helpers voor finalisatie van conceptpreview
plugin-sdk/inbound-envelopeHelpers voor inkomende enveloppenGedeelde route- en envelopbuilderhelpers
plugin-sdk/inbound-reply-dispatchHelpers voor inkomende antwoordenGedeelde helpers voor vastleggen en dispatchen
plugin-sdk/messaging-targetsParsing van messagingdoelenHelpers voor doelparsing/-matching
plugin-sdk/outbound-mediaHelpers voor uitgaande mediaGedeeld laden van uitgaande media
plugin-sdk/outbound-send-depsHelpers voor uitgaande verzendafhankelijkhedenLichtgewicht opzoeken van resolveOutboundSendDep zonder de volledige uitgaande runtime te importeren
plugin-sdk/outbound-runtimeHelpers voor uitgaande runtimeHelpers voor uitgaande levering, identiteit/verzenddelegatie, sessie, formatting en payloadplanning
plugin-sdk/thread-bindings-runtimeHelpers voor threadbindingHelpers voor levenscyclus en adapters van threadbinding
plugin-sdk/agent-media-payloadVerouderde helpers voor mediapayloadsBuilder voor agentmediapayloads voor verouderde veldindelingen
plugin-sdk/channel-runtimeVerouderde compatibiliteitsshimAlleen verouderde kanaalruntimehulpprogramma’s
plugin-sdk/channel-send-resultTypen voor verzendresultatenTypen voor antwoordresultaten
plugin-sdk/runtime-storePersistente Plugin-opslagcreatePluginRuntimeStore
plugin-sdk/runtimeBrede runtimehelpersHelpers voor runtime/logging/back-up/Plugin-installatie
plugin-sdk/runtime-envSmalle helpers voor runtimeomgevingHelpers voor logger/runtimeomgeving, timeout, opnieuw proberen en backoff
plugin-sdk/plugin-runtimeGedeelde helpers voor Plugin-runtimeHelpers voor Plugin-commando’s/hooks/http/interactief
plugin-sdk/hook-runtimeHelpers voor hookpipelineGedeelde helpers voor Webhook/interne hookpipeline
plugin-sdk/lazy-runtimeLuie runtimehelperscreateLazyRuntimeModule, createLazyRuntimeMethod, createLazyRuntimeMethodBinder, createLazyRuntimeNamedExport, createLazyRuntimeSurface
plugin-sdk/process-runtimeProceshelpersGedeelde exechelpers
plugin-sdk/cli-runtimeCLI-runtimehelpersHelpers voor commando-opmaak, wachten, versies
plugin-sdk/gateway-runtimeGateway-helpersGateway-client, starthelper voor event-loop-ready en helpers voor kanaalstatuspatches
plugin-sdk/config-runtimeVerouderde shim voor configuratiecompatibiliteitGeef de voorkeur aan config-contracts, plugin-config-runtime, runtime-config-snapshot en config-mutation
plugin-sdk/telegram-command-configHelpers voor Telegram-commando’sFallback-stabiele helpers voor validatie van Telegram-commando’s wanneer het meegeleverde contractoppervlak van Telegram niet beschikbaar is
plugin-sdk/approval-runtimeHelpers voor goedkeuringspromptsPayload voor exec/Plugin-goedkeuring, helpers voor goedkeuringscapaciteit/-profiel, native goedkeuringsrouting/runtimehelpers en gestructureerde opmaak van weergavepaden voor goedkeuringen
plugin-sdk/approval-auth-runtimeHelpers voor goedkeuringsauthenticatieOplossing van goedkeurders, actie-authenticatie in dezelfde chat
plugin-sdk/approval-client-runtimeHelpers voor goedkeuringsclientNative helpers voor exec-goedkeuringsprofiel/-filter
plugin-sdk/approval-delivery-runtimeHelpers voor goedkeuringsleveringNative adapters voor goedkeuringscapaciteit/-levering
plugin-sdk/approval-gateway-runtimeHelpers voor goedkeurings-GatewayGedeelde helper voor resolutie van goedkeurings-Gateway
plugin-sdk/approval-handler-adapter-runtimeHelpers voor goedkeuringsadapterLichtgewicht helpers voor het laden van native goedkeuringsadapters voor hete kanaalentrypoints
plugin-sdk/approval-handler-runtimeHelpers voor goedkeuringshandlerBredere runtimehelpers voor goedkeuringshandlers; geef de voorkeur aan de smallere adapter-/Gateway-naden wanneer die voldoende zijn
plugin-sdk/approval-native-runtimeHelpers voor goedkeuringsdoelNative helpers voor binding van goedkeuringsdoel/account
plugin-sdk/approval-reply-runtimeHelpers voor goedkeuringsantwoordPayloadhelpers voor exec/Plugin-goedkeuringsantwoord
plugin-sdk/channel-runtime-contextHelpers voor kanaalruntimecontextGenerieke helpers voor registreren/ophalen/bewaken van kanaalruntimecontext
plugin-sdk/security-runtimeBeveiligingshelpersGedeelde helpers voor vertrouwen, DM-gating, root-begrensde bestanden/paden, externe content en geheimverzameling
plugin-sdk/ssrf-policyHelpers voor SSRF-beleidHelpers voor hostallowlist en privénetwerkbeleid
plugin-sdk/ssrf-runtimeHelpers voor SSRF-runtimeVastgezette dispatcher, bewaakte fetch, helpers voor SSRF-beleid
plugin-sdk/system-event-runtimeHelpers voor systeemeventsenqueueSystemEvent, peekSystemEventEntries
plugin-sdk/heartbeat-runtimeHeartbeat-helpersHelpers voor Heartbeat-wekken, events en zichtbaarheid
plugin-sdk/delivery-queue-runtimeHelpers voor leveringswachtrijdrainPendingDeliveries
plugin-sdk/channel-activity-runtimeHelpers voor kanaalactiviteitrecordChannelActivity
plugin-sdk/dedupe-runtimeDedupe-helpersIn-memory dedupe-caches
plugin-sdk/file-access-runtimeHelpers voor bestandstoegangVeilige helpers voor lokale bestands-/mediapaden
plugin-sdk/transport-ready-runtimeHelpers voor transportgereedheidwaitForTransportReady
plugin-sdk/collection-runtimeHelpers voor begrensde cachepruneMapToMaxSize
plugin-sdk/diagnostic-runtimeHelpers voor diagnostische gatingisDiagnosticFlagEnabled, isDiagnosticsEnabled
plugin-sdk/error-runtimeHelpers voor foutopmaakformatUncaughtError, isApprovalNotFoundError, helpers voor foutgrafen
plugin-sdk/fetch-runtimeHelpers voor gewrapte fetch/proxyresolveFetch, proxyhelpers, helpers voor EnvHttpProxyAgent-opties
plugin-sdk/host-runtimeHelpers voor hostnormalisatienormalizeHostname, normalizeScpRemoteHost
plugin-sdk/retry-runtimeHelpers voor opnieuw proberenRetryConfig, retryAsync, beleidsrunners
plugin-sdk/allow-fromAllowlist-opmaakformatAllowFromLowercase
plugin-sdk/allowlist-resolutionMapping van allowlist-invoermapAllowlistResolutionInputs
plugin-sdk/command-authHelpers voor commandogating en commando-oppervlakresolveControlCommandGate, helpers voor zenderautorisatie, helpers voor commandoregistratie inclusief opmaak van dynamische argumentmenu’s
plugin-sdk/command-statusRenderers voor commandostatus/helpbuildCommandsMessage, buildCommandsMessagePaginated, buildHelpMessage
plugin-sdk/secret-inputParsing van geheime invoerHelpers voor geheime invoer
plugin-sdk/webhook-ingressHelpers voor Webhook-aanvragenHulpprogramma’s voor Webhook-doelen
plugin-sdk/webhook-request-guardsHelpers voor Webhook-bodyguardHelpers voor lezen/limiteren van requestbody
plugin-sdk/reply-runtimeGedeelde antwoordruntimeInkomende dispatch, Heartbeat, antwoordplanner, opdelen
plugin-sdk/reply-dispatch-runtimeSmalle helpers voor antwoorddispatchFinaliseren, providerdispatch en helpers voor gesprekslabels
plugin-sdk/reply-historyHelpers voor antwoordgeschiedenisbuildHistoryContext, buildPendingHistoryContextFromMap, recordPendingHistoryEntry, clearHistoryEntriesIfEnabled
plugin-sdk/reply-referencePlanning van antwoordreferentiescreateReplyReferencePlanner
plugin-sdk/reply-chunkingHelpers voor antwoordchunksHelpers voor opdelen van tekst/markdown
plugin-sdk/session-store-runtimeHelpers voor sessiestoreStorepad + updated-at-helpers
plugin-sdk/state-pathsHelpers voor statuspadenHelpers voor status- en OAuth-directory
plugin-sdk/routingHelpers voor routing/sessiesleutelsresolveAgentRoute, buildAgentSessionKey, resolveDefaultAgentBoundAccountId, helpers voor normalisatie van sessiesleutels
plugin-sdk/status-helpersHelpers voor kanaalstatusBuilders voor samenvattingen van kanaal-/accountstatus, standaardwaarden voor runtimestatus, helpers voor issuemetadata
plugin-sdk/target-resolver-runtimeHelpers voor doelresolverGedeelde helpers voor doelresolver
plugin-sdk/string-normalization-runtimeHelpers voor tekenreeksnormalisatieHelpers voor slug-/tekenreeksnormalisatie
plugin-sdk/request-urlHelpers voor request-URL’sTekenreeks-URL’s uit request-achtige invoer extraheren
plugin-sdk/run-commandHelpers voor getimede commando’sRunner voor getimede commando’s met genormaliseerde stdout/stderr
plugin-sdk/param-readersParamlezersAlgemene paramlezers voor tool/CLI
plugin-sdk/tool-payloadExtractie van toolpayloadExtraheer genormaliseerde payloads uit toolresultaatobjecten
plugin-sdk/tool-sendExtractie van toolverzendingExtraheer canonieke velden voor verzenddoelen uit toolargumenten
plugin-sdk/temp-pathHelpers voor tijdelijk padGedeelde helpers voor tijdelijke downloadpaden
plugin-sdk/logging-coreLoghelpersSubsysteemlogger en redactiehelpers
plugin-sdk/markdown-table-runtimeMarkdown-tabelhelpersHelpers voor Markdown-tabelmodus
plugin-sdk/reply-payloadTypen voor berichtantwoordTypen voor antwoordpayload
plugin-sdk/provider-setupGecureerde helpers voor lokale/zelfgehoste providerinstellingHelpers voor ontdekking/configuratie van zelfgehoste providers
plugin-sdk/self-hosted-provider-setupGerichte OpenAI-compatibele helpers voor zelfgehoste providerinstellingDezelfde helpers voor ontdekking/configuratie van zelfgehoste providers
plugin-sdk/provider-auth-runtimeRuntime-authenticatiehelpers voor providersHelpers voor API-sleutelresolutie tijdens runtime
plugin-sdk/provider-auth-api-keyInstelhelpers voor provider-API-sleutelsHelpers voor API-sleutelonboarding/profielschrijven
plugin-sdk/provider-auth-resultHelpers voor provider-auth-resultatenStandaard OAuth-auth-resultaatbouwer
plugin-sdk/provider-selection-runtimeProviderselectiehelpersGeconfigureerde-of-automatische providerselectie en samenvoeging van ruwe providerconfiguratie
plugin-sdk/provider-env-varsHelpers voor provider-env-varsHelpers voor opzoeken van provider-auth-env-vars
plugin-sdk/provider-model-sharedGedeelde helpers voor providermodel/replayProviderReplayFamily, buildProviderReplayFamilyHooks, normalizeModelCompat, gedeelde bouwers voor replaybeleid, provider-endpointhelpers en helpers voor model-id-normalisatie
plugin-sdk/provider-catalog-sharedGedeelde helpers voor providercatalogusfindCatalogTemplate, buildSingleProviderApiKeyCatalog, buildManifestModelProviderConfig, supportsNativeStreamingUsageCompat, applyProviderNativeStreamingUsageCompat
plugin-sdk/provider-onboardPatches voor provideronboardingHelpers voor onboardingconfiguratie
plugin-sdk/provider-httpHTTP-helpers voor providersGenerieke HTTP-/endpoint-capabilityhelpers voor providers, inclusief multipart-formulierhelpers voor audiotranscriptie
plugin-sdk/provider-web-fetchHelpers voor provider-web-fetchRegistratie-/cachehelpers voor web-fetch-providers
plugin-sdk/provider-web-search-config-contractConfiguratiehelpers voor provider-webzoekopdrachtenSmalle configuratie-/credentialhelpers voor webzoekopdrachten voor providers die geen plugin-enable-bedrading nodig hebben
plugin-sdk/provider-web-search-contractContracthelpers voor provider-webzoekopdrachtenSmalle configuratie-/credentialcontracthelpers voor webzoekopdrachten, zoals createWebSearchProviderContractFields, enablePluginInConfig, resolveProviderWebSearchPluginConfig en gescopete credential-setters/getters
plugin-sdk/provider-web-searchHelpers voor provider-webzoekopdrachtenRegistratie-/cache-/runtimehelpers voor webzoekproviders
plugin-sdk/provider-toolsCompatibiliteitshelpers voor providertools/schema’sProviderToolCompatFamily, buildProviderToolCompatFamilyHooks en Gemini-schemaopschoning + diagnostiek
plugin-sdk/provider-usageProvidergebruikshelpersfetchClaudeUsage, fetchGeminiUsage, fetchGithubCopilotUsage en andere providergebruikshelpers
plugin-sdk/provider-streamHelpers voor providerstream-wrappersProviderStreamFamily, buildProviderStreamFamilyHooks, composeProviderStreamWrappers, typen voor stream-wrappers en gedeelde wrapperhelpers voor Anthropic/Bedrock/DeepSeek V4/Google/Kilocode/Moonshot/OpenAI/OpenRouter/Z.A.I/MiniMax/Copilot
plugin-sdk/provider-transport-runtimeProvidertransporthelpersNative providertransporthelpers zoals bewaakte fetch, transportberichttransformaties en schrijfbare transporteventstreams
plugin-sdk/keyed-async-queueGeordende asynchrone wachtrijKeyedAsyncQueue
plugin-sdk/media-runtimeGedeelde mediahelpersHelpers voor media ophalen/transformeren/opslaan, ffprobe-ondersteunde probing van videoafmetingen en bouwers voor mediapayloads
plugin-sdk/media-generation-runtimeGedeelde helpers voor mediageneratieGedeelde failoverhelpers, kandidaatselectie en berichten bij ontbrekende modellen voor generatie van afbeeldingen/video/muziek
plugin-sdk/media-understandingHelpers voor mediabegripProvidertypen voor mediabegrip plus providergerichte exports voor afbeelding-/audiohelpers
plugin-sdk/text-runtimeVerouderde brede compatibiliteitsexport voor tekstGebruik string-coerce-runtime, text-chunking, text-utility-runtime en logging-core
plugin-sdk/text-chunkingHelpers voor tekstchunkingHelper voor chunking van uitgaande tekst
plugin-sdk/speechSpraakhelpersSpraakprovidertypen plus providergerichte directive-, registry- en validatiehelpers, en OpenAI-compatibele TTS-bouwer
plugin-sdk/speech-coreGedeelde spraakkernSpraakprovidertypen, registry, directives, normalisatie
plugin-sdk/realtime-transcriptionRealtime transcriptiehelpersProvidertypen, registryhelpers en gedeelde WebSocket-sessiehelper
plugin-sdk/realtime-voiceRealtime spraakhelpersProvidertypen, registry-/resolutiehelpers, bridgesessiehelpers, gedeelde talk-back-wachtrijen voor agents, transcript-/eventgezondheid, echo-onderdrukking en snelle contextconsulthelpers
plugin-sdk/image-generationHelpers voor afbeeldingsgeneratieProvidertypen voor afbeeldingsgeneratie plus helpers voor afbeeldingsassets/data-URL’s en de OpenAI-compatibele afbeeldingsproviderbouwer
plugin-sdk/image-generation-coreGedeelde kern voor afbeeldingsgeneratieTypen voor afbeeldingsgeneratie, failover, auth en registryhelpers
plugin-sdk/music-generationHelpers voor muziekgeneratieProvidertypen voor muziekgeneratie/aanvragen/resultaten
plugin-sdk/music-generation-coreGedeelde kern voor muziekgeneratieTypen voor muziekgeneratie, failoverhelpers, provideropzoeking en model-ref-parsing
plugin-sdk/video-generationHelpers voor videogeneratieProvidertypen voor videogeneratie/aanvragen/resultaten
plugin-sdk/video-generation-coreGedeelde kern voor videogeneratieTypen voor videogeneratie, failoverhelpers, provideropzoeking en model-ref-parsing
plugin-sdk/interactive-runtimeHelpers voor interactief antwoordNormalisatie/reductie van interactieve antwoordpayload
plugin-sdk/channel-config-primitivesChannel-configuratieprimitievenSmalle channel-configuratieschemaprimitieven
plugin-sdk/channel-config-writesHelpers voor channel-configuratieschrijvenAutorisatiehelpers voor channel-configuratieschrijven
plugin-sdk/channel-plugin-commonGedeelde channel-preludeGedeelde prelude-exports voor channel-Plugin
plugin-sdk/channel-statusChannel-statushelpersGedeelde helpers voor channel-statussnapshot/samenvatting
plugin-sdk/allowlist-config-editConfiguratiehelpers voor allowlistHelpers voor allowlist-configuratie bewerken/lezen
plugin-sdk/group-accessGroepstoeganghelpersGedeelde beslissinghelpers voor groepstoegang
plugin-sdk/direct-dmHelpers voor directe DMGedeelde auth-/guardhelpers voor directe DM
plugin-sdk/extension-sharedGedeelde extensiehelpersPrimitieven voor passieve channel/status en omgevingsproxyhelpers
plugin-sdk/webhook-targetsHelpers voor Webhook-doelenRegistry voor Webhook-doelen en route-installatiehelpers
plugin-sdk/webhook-pathVerouderde alias voor Webhook-padGebruik plugin-sdk/webhook-ingress
plugin-sdk/web-mediaGedeelde webmediahelpersHelpers voor laden van remote/lokale media
plugin-sdk/zodVerouderde Zod-compatibiliteits-re-exportImporteer zod rechtstreeks uit zod
plugin-sdk/memory-coreGebundelde memory-core-helpersHelperoppervlak voor memory manager/configuratie/bestand/CLI
plugin-sdk/memory-core-engine-runtimeRuntimefacade voor memory-engineRuntimefacade voor memory-index/zoeken
plugin-sdk/memory-core-host-engine-foundationFoundation-engine voor memory-hostExports voor foundation-engine van memory-host
plugin-sdk/memory-core-host-engine-embeddingsEmbedding-engine voor memory-hostMemory-embeddingcontracten, registrytoegang, lokale provider en generieke batch-/remotehelpers; concrete remoteproviders staan in hun eigen plugins
plugin-sdk/memory-core-host-engine-qmdQMD-engine voor memory-hostExports voor QMD-engine van memory-host
plugin-sdk/memory-core-host-engine-storageStorage-engine voor memory-hostExports voor storage-engine van memory-host
plugin-sdk/memory-core-host-multimodalMultimodale helpers voor memory-hostMultimodale helpers voor memory-host
plugin-sdk/memory-core-host-queryQueryhelpers voor memory-hostQueryhelpers voor memory-host
plugin-sdk/memory-core-host-secretGeheimhelpers voor memory-hostGeheimhelpers voor memory-host
plugin-sdk/memory-core-host-eventsVerouderde memory-eventaliasGebruik plugin-sdk/memory-host-events
plugin-sdk/memory-core-host-statusStatushelpers voor memory-hostStatushelpers voor memory-host
plugin-sdk/memory-core-host-runtime-cliCLI-runtime voor memory-hostCLI-runtimehelpers voor memory-host
plugin-sdk/memory-core-host-runtime-coreKernruntime voor memory-hostKernruntimehelpers voor memory-host
plugin-sdk/memory-core-host-runtime-filesBestands-/runtimehelpers voor memory-hostBestands-/runtimehelpers voor memory-host
plugin-sdk/memory-host-coreAlias voor kernruntime van memory-hostLeverancieronafhankelijke alias voor kernruntimehelpers van memory-host
plugin-sdk/memory-host-eventsAlias voor eventjournal van memory-hostLeverancieronafhankelijke alias voor eventjournalhelpers van memory-host
plugin-sdk/memory-host-filesVerouderde alias voor memory-bestand/runtimeGebruik plugin-sdk/memory-core-host-runtime-files
plugin-sdk/memory-host-markdownBeheerde Markdown-helpersGedeelde beheerde-Markdown-helpers voor memory-aangrenzende plugins
plugin-sdk/memory-host-searchFacade voor Active Memory-zoekenLazy runtimefacade voor Active Memory-zoekmanager
plugin-sdk/memory-host-statusVerouderde statusalias voor memory-hostGebruik plugin-sdk/memory-core-host-status
plugin-sdk/testingTesthulpprogramma’sRepo-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 exportmap van de publieke SDK verwijderd, behalve expliciet gedocumenteerde compatibiliteitsfacades zoals de verouderde plugin-sdk/discord-shim die behouden blijft voor het gepubliceerde @openclaw/discord@2026.3.13-pakket. Eigenaarsspecifieke helpers staan binnen het pakket van de beherende Plugin; gedeeld hostgedrag moet via generieke SDK-contracten verlopen, 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 ervoor verantwoordelijk moet zijn.

Actieve deprecations

Smallere deprecations die gelden voor de Plugin-SDK, het providercontract, het runtime-oppervlak en het 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 kanaal-Plugins (Slack, Discord, Matrix, MS Teams) zijn al overgestapt.
openclaw/plugin-sdk/channel-runtime is een compatibiliteitsshim voor oudere kanaal-Plugins. Importeer deze 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 deprecated naast ruwe “actions”-kanaalexports. Stel capabilities in plaats daarvan beschikbaar via het semantische presentation-oppervlak - kanaal-Plugins declareren wat ze renderen (kaarten, knoppen, selecties) in plaats van welke ruwe actienamen ze accepteren.
Oud: tool()-factory uit openclaw/plugin-sdk/provider-web-search.Nieuw: implementeer createTool(...) direct 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 prompt-envelope in plaintext te bouwen uit inkomende kanaalberichten.Nieuw: BodyForAgent plus gestructureerde blokken met gebruikerscontext. Kanaal-Plugins voegen routeringsmetadata (thread, topic, reply-to, reacties) toe als getypeerde velden in plaats van ze samen te voegen tot een promptstring. De formatAgentEnvelope(...)-helper blijft ondersteund voor gesynthetiseerde assistant-gerichte envelopes, maar inkomende plaintext-envelopes verdwijnen geleidelijk.Betrokken gebieden: inbound_claim, message_received en elke aangepaste kanaal-Plugin die channelEnvelope-tekst nabewerkte.
Vier discovery-typealiassen zijn nu dunne wrappers rond de catalog-era-typen:
Oude aliasNieuw type
ProviderDiscoveryOrderProviderCatalogOrder
ProviderDiscoveryContextProviderCatalogContext
ProviderDiscoveryResultProviderCatalogResult
ProviderPluginDiscoveryProviderPluginCatalog
Plus de legacy statische ProviderCapabilities-bag - provider-Plugins moeten expliciete provider-hooks 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 levellijst. OpenClaw downgradet automatisch verouderde opgeslagen waarden op basis van profielrang.Implementeer één hook in plaats van drie. De legacy-hooks blijven werken tijdens de deprecation-periode, maar worden niet samengesteld met het profielresultaat.
Oud: resolveExternalOAuthProfiles(...) implementeren zonder de provider in het Plugin-manifest te declareren.Nieuw: declareer contracts.externalAuthProviders in het Plugin-manifest en implementeer resolveExternalAuthProfiles(...). Het oude “auth fallback”-pad geeft tijdens runtime een waarschuwing en wordt verwijderd.
{
  "contracts": {
    "externalAuthProviders": ["anthropic", "openai"]
  }
}
Oud manifestveld: providerAuthEnvVars: { anthropic: ["ANTHROPIC_API_KEY"] }.Nieuw: spiegel dezelfde env-var-lookup naar setup.providers[].envVars in het manifest. Dit consolideert setup/status-env-metadata op één plek en voorkomt dat de Plugin-runtime moet starten alleen om env-var-lookups te beantwoorden.providerAuthEnvVars blijft ondersteund via een compatibiliteitsadapter tot de deprecation-periode 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 memory-helpers (registerMemoryPromptSupplement, registerMemoryCorpusSupplement, registerMemoryEmbeddingProvider) worden niet geraakt.
Twee legacy-typealiassen worden nog geëxporteerd uit src/plugins/runtime/types.ts:
OudNieuw
SubagentReadSessionParamsSubagentGetSessionMessagesParams
SubagentReadSessionResultSubagentGetSessionMessagesResult
De runtime-methode readSession is deprecated 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 → Migreer Pi-tool-result-extensies naar middleware” hierboven. Hier opgenomen voor volledigheid: het verwijderde Pi-only api.registerEmbeddedExtensionFactory(...)-pad is vervangen door api.registerAgentToolResultMiddleware(...) met een expliciete runtime-lijst in contracts.agentToolResultMiddleware.
OpenClawSchemaType, opnieuw geëxporteerd uit openclaw/plugin-sdk, is nu een eenregelige alias 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";
Deprecations op extensieniveau (binnen gebundelde kanaal-/provider-Plugins onder extensions/) worden bijgehouden in hun eigen api.ts- en runtime-api.ts-barrels. Ze hebben geen invloed op contracten van third-party Plugins en worden hier niet vermeld. Als je de lokale barrel van een gebundelde Plugin rechtstreeks gebruikt, lees dan de deprecation-opmerkingen in die barrel voordat je upgradet.

Verwijderingstijdlijn

WanneerWat gebeurt er
NuDeprecated oppervlakken geven runtime-waarschuwingen
Volgende major releaseDeprecated 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