Skip to main content
OpenClaw heeft een brede laag voor achterwaartse compatibiliteit vervangen door een moderne Plugin- architectuur die is opgebouwd uit kleine, gerichte imports. Als jouw Plugin van vóór die wijziging dateert, helpt deze handleiding je om over te stappen op de huidige contracten.

Wat is er gewijzigd

Verschillende zeer ruime importoppervlakken gaven Plugins voorheen vanuit één toegangspunt toegang tot vrijwel alles:
  • openclaw/plugin-sdk en openclaw/plugin-sdk/compat - exporteerden tientallen helpers opnieuw terwijl de gerichte SDK werd gebouwd. Beide hoofdpaden zijn nu verwijderd; importeer in plaats daarvan een gedocumenteerd subpad.
  • openclaw/plugin-sdk/infra-runtime - een brede barrel die systeem- gebeurtenissen, Heartbeat-status, afleveringswachtrijen, fetch-/proxyhelpers, bestandshelpers, goedkeuringstypen en niet-gerelateerde hulpprogramma’s combineerde.
  • openclaw/plugin-sdk/config-runtime - een brede configuratiebarrel die alleen behouden bleef voor het latere compatibiliteitsvenster; directe runtimehelpers voor laden/schrijven zijn verwijderd.
  • openclaw/extension-api - een verwijderde brug die Plugins directe toegang gaf tot helpers aan de hostzijde, zoals de ingebedde agentrunner.
  • api.registerEmbeddedExtensionFactory(...) - een verwijderde hook die uitsluitend voor de ingebedde runner was bedoeld en gebeurtenissen daarvan observeerde, zoals tool_result. Gebruik in plaats daarvan middleware voor agenttoolresultaten (zie Ingebedde extensies voor toolresultaten migreren naar middleware).
De hoofd-SDK, compatibiliteitsbarrel, extensiebrug en fabriek voor ingebedde extensies zijn verwijderd. infra-runtime en config-runtime blijven alleen bestaan voor hun afzonderlijk vastgelegde latere vensters; nieuwe Plugins moeten gerichte subpaden gebruiken.
Plugins die de verwijderde hoofd-, compatibiliteits- of extensieoppervlakken importeren, worden niet meer geladen. Volg vóór het upgraden de onderstaande omzettingen.
OpenClaw verwijdert of herinterpreteert gedocumenteerd Plugingedrag niet in dezelfde wijziging waarin een vervanging wordt geïntroduceerd. Incompatibele contractwijzigingen doorlopen eerst een compatibiliteitsadapter, diagnostiek, documentatie en een uitfaseringsvenster. Dat geldt voor SDK-imports, manifestvelden, installatie-API’s, hooks en runtimegedrag voor registratie.

Waarom

  • Langzaam opstarten - door één helper te importeren, werden tientallen niet-gerelateerde modules geladen.
  • Circulaire afhankelijkheden - brede herexports maakten het eenvoudig om importcycli te creëren.
  • Onduidelijk API-oppervlak - er was geen manier om stabiele exports van interne exports te onderscheiden.
Elke openclaw/plugin-sdk/<subpath> is nu een kleine, zelfstandige module met een gedocumenteerd contract. Verouderde gemaksinterfaces voor providers van gebundelde kanalen zijn ook verdwenen - helpersnelkoppelingen met kanaalnamen waren private gemakken voor de monorepo, geen stabiele Plugincontracten. Gebruik in plaats daarvan smalle, algemene SDK-subpaden. Houd binnen de werkruimte van de gebundelde Plugin helpers die eigendom zijn van de provider in de eigen api.ts of runtime-api.ts van die Plugin:
  • Anthropic bewaart Claude-specifieke streamhelpers in zijn eigen api.ts / contract-api.ts-interface.
  • OpenAI bewaart providerbouwers, helpers voor standaardmodellen en realtime providerbouwers in zijn eigen api.ts.
  • OpenRouter bewaart de providerbouwer en helpers voor onboarding/configuratie in zijn eigen api.ts.

Compatibiliteitsbeleid

Compatibiliteitswerk voor externe Plugins volgt deze volgorde:
  1. Voeg het nieuwe contract toe.
  2. Behoud het oude gedrag via een compatibiliteitsadapter.
  3. Geef een diagnostisch bericht of waarschuwing weer waarin het oude pad en de vervanging worden genoemd.
  4. Dek beide paden af met tests.
  5. Documenteer de uitfasering en het migratiepad.
  6. Verwijder pas na het aangekondigde migratievenster, meestal in een hoofd- release.
Als een manifestveld nog wordt geaccepteerd, blijf het dan gebruiken totdat de documentatie en diagnostiek anders aangeven. Nieuwe code moet de gedocumenteerde vervanging gebruiken; bestaande Plugins mogen niet defect raken tijdens normale kleinere releases.

Compatibiliteit voor installatie van gepubliceerde kanalen

Slack-, Discord-, Signal- en Microsoft Teams-pakketten die via 2026.7.1 worden gepubliceerd, importeren kanaalspecifieke configuratieschema’s uit openclaw/plugin-sdk/bundled-channel-config-schema. De gepubliceerde Slack- en Discord-pakketten importeren ook createLegacyCompatChannelDmPolicy en promptLegacyChannelAllowFromForAccount uit openclaw/plugin-sdk/setup-runtime. Die exports blijven beschikbaar als verouderde runtimecompatibiliteitsadapters. Nieuwe en opnieuw gepubliceerde Plugins moeten hun configuratieschema’s en installatiebeleid lokaal beheren, met algemene primitieve onderdelen uit channel-config-schema en setup-runtime. De compatibiliteitsexports kunnen pas worden verwijderd wanneer de minimaal ondersteunde versies van gepubliceerde pakketten ze niet meer importeren.

Compatibiliteit van invoervelden voor kanaalinstallatie

ChannelSetupInput houdt nu alleen de kanaaloverstijgende installatie-envelop permanent getypeerd. Kanaalspecifieke velden blijven getypeerd in een verouderde compatibiliteits- laag, zodat bestaande externe Plugins blijven compileren terwijl Pluginauteurs die velden verplaatsen naar lokale invoertypen voor de installatie van hun Plugin. OpenClaw brengt geen hoofdreleases uit. Bij een registersweep op 2026-07-22 werden 426 gepubliceerde externe kanaal-Plugins geïnspecteerd en 21 velden zonder lezers verwijderd. De 22 behouden velden hebben elk een bekende gepubliceerde lezer. Elk volgend veld wordt verwijderd zodra geen gepubliceerde Plugin het meer leest; de behouden verzameling krimpt naarmate Pluginauteurs migreren naar lokale invoertypen voor Plugininstallatie. Dezelfde sweep verwijderde 23 verouderde promotiesleutels voor niet-gedeclareerde adapters zonder gepubliceerde afhankelijken. Zes algemene sleutels en de uitsluitend voor installatie bedoelde sleutel rooms blijven bestaan. Ook die verzameling krimpt naarmate gepubliceerde Plugins singleAccountKeysToMove declareren. Het gedeelde type heeft geen indexsignatuur. Sleutels die eigendom zijn van Plugins kunnen nog steeds aanwezig zijn in runtime-invoerobjecten; declareer ze in een lokale intersectie voor de Plugin of beperk ze via het installatieschema van de eigenaar-Plugin. De verouderde promotielaag voor niet-gedeclareerde adapters volgt hetzelfde beleid op basis van lezers. Declareer singleAccountKeysToMove, inclusief een lege array wanneer de Plugin geen extra promotiesleutels nodig heeft, zodat de gedeelde fallback sleutel voor sleutel kan worden uitgefaseerd.

Lezers verifiëren

  1. Doorloop https://clawhub.ai/api/v1/packages?family=code-plugin&limit=100 pagina voor pagina met elke nextCursor en behoud pakketten waarvan de categories channels bevatten.
  2. Voeg npm-kandidaten uit npm search --json --searchlimit=1000 "openclaw channel plugin" toe. Voeg kandidaten toe die alleen als bron beschikbaar zijn via GitHub-codezoekopdrachten naar openclaw/plugin-sdk/channel-setup, openclaw/plugin-sdk/setup en openclaw/plugin-sdk/core.
  3. Bepaal voor elke kandidaat de laatst gepubliceerde versie. Voer npm pack <package>@<version> --json --pack-destination <temp-dir> uit, pak het pakket uit en inspecteer de meegeleverde dist-JavaScript en declaraties op directe of gedestructureerde leesbewerkingen van velden. Download het ClawHub-artefact wanneer een pakket geen npm-release heeft.
  4. Leg pakket, versie, veld of promotiesleutel en overeenkomend bestand vast. Een veld of sleutel kan alleen worden verwijderd wanneer geen gepubliceerd Pluginartefact het leest. Houd de namen van lezers in de codeopmerkingen naast de lijsten met behouden velden en sleutels gesynchroniseerd met de sweep.
Dit is uitsluitend een compatibiliteitsregistratie voor broncode/typen. Er is geen runtimeadapter of vermelding in het compatibiliteitsregister, omdat runtime-invoerobjecten voor installatie en het installatiegedrag ongewijzigd zijn. Controleer de huidige migratiewachtrij met pnpm plugins:boundary-report: pnpm plugins:boundary-report:ci wordt uitgevoerd met alle drie foutvlaggen. Verouderde registraties hebben normaal gesproken een expliciete datum removeAfter in plaats van een vage ‘volgende hoofdrelease’. Bij een registratie waarvan de eigenaar geen datum heeft goedgekeurd, ontbreekt removeAfter, wordt no-date weergegeven en is verwijdering nooit toegestaan. Het rapport groepeert verouderde registraties op datum, telt lokale verwijzingen in code/documentatie, toont gereserveerde SDK-imports tussen eigenaren en vat de private SDK-brug voor de geheugenhost samen. Gereserveerde SDK-subpaden moeten bijgehouden gebruik door eigenaren hebben; ongebruikte gereserveerde exports moeten uit de openbare SDK worden verwijderd.

Verouderde mediaprojectie

De compatibiliteitsregistratie media-legacy-projection omvat de oude parallelle mediavelden, payloadbouwers, aliassen voor hookmetadata en namen van mediasjablonen. De goedgekeurde datum removeAfter is 2026-10-01 (twee releasetreinen nadat de op feiten gebaseerde vervangingen zijn uitgebracht). Voor verwijdering is daarnaast op dat moment een schone sweep van gepubliceerde Pluginartefacten vereist; migreer vóór die datum. Vervang voor binnenkomende kanaalgegevens de enkelvoudige/meervoudige MediaPath, MediaUrl, MediaType, MediaPaths, MediaUrls, MediaTypes, MediaTranscribedIndexes, MediaWorkspaceDir en MediaStaged door geordende feiten:
Gebruik event.media in de hooks inbound_claim en message_received. Als externe media niet lokaal zijn klaargezet, gebruik dan event.originalMedia voor identiteit/diagnostiek en wacht op event.media; event.mediaStagingPending onderscheidt die status. Lees de verouderde enkelvoudige/meervoudige eigenschappen niet uit event.metadata. Vervang voor CLI-mediamodellen {{MediaPath}}, {{MediaUrl}}, {{MediaType}} en {{MediaDir}} door {{AttachmentPath}}, {{AttachmentUrl}}, {{AttachmentContentType}} en {{AttachmentDir}}. Gebruik {{AttachmentIndex}} wanneer de positie van de bijlage van belang is. Importeer voor lokaal beleid voor het lezen van media getAgentScopedMediaLocalRoots(...) of getAgentScopedMediaLocalRootsForSources(...) uit openclaw/plugin-sdk/media-local-roots. De openclaw/plugin-sdk/agent-media-payload-facade en de bijbehorende buildAgentMediaPayload(...)-projectie zijn verouderd.

Migreren

1

Runtimehelpers voor laden/schrijven van configuratie migreren

Gebundelde Plugins mogen api.runtime.config.loadConfig() en api.runtime.config.writeConfigFile(...) niet meer rechtstreeks aanroepen. Gebruik bij voorkeur de 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() binnen execute lezen, zodat een tool die vóór een configuratieschrijfactie is gemaakt, toch de vernieuwde configuratie ziet.Configuratieschrijfacties verlopen via de transactionele helper met een expliciet beleid voor na het schrijven:
Gebruik afterWrite: { mode: "restart", reason: "..." } wanneer de wijziging een schone herstart van de Gateway vereist, en afterWrite: { mode: "none", reason: "..." } alleen wanneer de aanroeper verantwoordelijk is voor de vervolgactie en de herlaadplanner bewust onderdrukt. Mutatieresultaten bevatten een getypeerd followUp-overzicht voor tests en logboekregistratie; de Gateway blijft verantwoordelijk voor het toepassen of plannen van de herstart.loadConfig en writeConfigFile zijn verwijderd uit de Plugin- runtime. Gebundelde plugins en runtimecode van de repository worden bewaakt door pnpm check:deprecated-api-usage en pnpm check:no-runtime-action-load-config: nieuw productiegebruik door plugins mislukt direct, rechtstreekse configuratieschrijfbewerkingen mislukken, Gateway-servermethoden moeten de runtime-snapshot van het verzoek gebruiken, runtimehelpers voor verzenden/acties/clients van kanalen moeten configuratie vanuit hun grens ontvangen en langlevende runtimemodules staan nul omgevingsaanroepen naar loadConfig() toe.Nieuwe plugincode moet de brede openclaw/plugin-sdk/config-runtime- barrel vermijden. Gebruik het specifieke subpad voor de taak: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 barrel bestaat nog steeds voor externe compatibiliteit, maar nieuwe code mag er niet van afhankelijk zijn.
2

Ingebedde extensies voor toolresultaten naar middleware migreren

Gebundelde plugins moeten de uitsluitend voor ingebedde runners bedoelde api.registerEmbeddedExtensionFactory(...)-handlers voor toolresultaten vervangen door runtime-neutrale middleware:
Werk tegelijkertijd het Plugin-manifest bij:
Geïnstalleerde plugins kunnen ook middleware voor toolresultaten registreren wanneer dit expliciet is ingeschakeld en elke beoogde runtime is gedeclareerd in contracts.agentToolResultMiddleware. Niet-gedeclareerde middleware- registraties van geïnstalleerde plugins worden geweigerd.
3

Native goedkeuringshandlers naar capaciteitsfeiten migreren

Kanaalplugins met ondersteuning voor goedkeuring stellen native goedkeuringsgedrag beschikbaar via approvalCapability.nativeRuntime plus het gedeelde register voor runtimecontext:
  • Vervang approvalCapability.handler.loadRuntime(...) door approvalCapability.nativeRuntime.
  • Verplaats goedkeuringsspecifieke authenticatie/bezorging van de verouderde plugin.auth-/ plugin.approvals-bedrading naar approvalCapability.
  • ChannelPlugin.approvals is verwijderd uit het openbare kanaalplugincontract; verplaats bezorgings-, native en renderingsvelden naar approvalCapability.
  • plugin.auth blijft alleen voor aanmeld-/afmeldflows van kanalen; de kern leest daar geen authenticatiehooks voor goedkeuring meer.
  • Registreer runtimeobjecten die eigendom zijn van het kanaal (clients, tokens, Bolt-apps) via openclaw/plugin-sdk/channel-runtime-context.
  • Verzend geen omleidingsmeldingen die eigendom zijn van de Plugin vanuit native goedkeuringshandlers; de kern beheert meldingen over routering naar elders op basis van werkelijke bezorgingsresultaten.
  • Wanneer je channelRuntime doorgeeft aan createChannelManager(...), geef dan een echte createPluginRuntime().channel-interface op; gedeeltelijke stubs worden geweigerd.
Zie Kanaalplugins voor de huidige indeling van goedkeuringscapaciteiten.
4

Fallbackgedrag van Windows-wrappers controleren

Als je Plugin openclaw/plugin-sdk/windows-spawn gebruikt, mislukken niet-opgeloste Windows- wrappers voor .cmd/.bat nu standaard veilig, tenzij je expliciet allowShellFallback: true doorgeeft:
Als je aanroeper niet bewust afhankelijk is van een shellfallback, stel allowShellFallback dan niet in en handel in plaats daarvan de gegenereerde fout af.
5

Verouderde imports zoeken

6

Vervangen door gerichte imports

Elke export van de oude interface correspondeert met een specifiek modern importpad:
Gebruik voor helpers aan de hostzijde de geïnjecteerde Plugin-runtime in plaats van rechtstreeks te importeren:
Hetzelfde patroon geldt voor andere verouderde brughelpers:
7

Brede infra-runtime-imports vervangen

openclaw/plugin-sdk/infra-runtime bestaat nog steeds voor externe compatibiliteit, maar nieuwe code moet de gerichte interface importeren die daadwerkelijk nodig is:Gebundelde plugins worden door scanners beschermd tegen infra-runtime, zodat repositorycode niet kan terugvallen op de brede barrel.
8

Helpers voor kanaalroutes migreren

Nieuwe code voor kanaalroutes gebruikt openclaw/plugin-sdk/channel-route. De oudere route-sleutelnamen blijven beschikbaar als compatibiliteitsaliassen:De moderne routehelpers normaliseren { channel, to, accountId, threadId } consistent voor native goedkeuringen, onderdrukking van antwoorden, deduplicatie van inkomende berichten, Cron-bezorging en sessieroutering.Voeg geen nieuw gebruik toe van ChannelMessagingAdapter.parseExplicitTarget of resolveChannelRouteTargetWithParser(...) uit plugin-sdk/channel-route; deze zijn verouderd en blijven alleen voor oudere plugins bestaan. Nieuwe kanaalplugins moeten messaging.targetResolver.resolveTarget(...) gebruiken voor normalisatie van doel-id’s en fallback bij ontbrekende directoryvermeldingen, messaging.inferTargetChatType(...) wanneer de kern vroegtijdig een peertype nodig heeft, en messaging.resolveOutboundSessionRoute(...) voor provider-native sessie- en threadidentiteit.
9

Bouwen en testen

Naslag voor importpaden

De exportmap van het openbare pakket is de gezaghebbende bron voor importeerbare SDK- subpaden. Gebruik de thematische SDK-handleidingen waarnaar wordt verwezen vanuit het SDK-overzicht en geef de voorkeur aan het specifiekste gedocumenteerde openbare subpad. De compilerinventaris in scripts/lib/plugin-sdk-entrypoints.json bevat ook privé-lokale vermeldingen die worden gebruikt om gebundelde plugins te bouwen; hun aanwezigheid daarin maakt ze niet tot openbare pakketexports. Deze tabel is de gebruikelijke migratiesubset, niet de volledige SDK-interface. De inventaris met compilerinvoerpunten staat in scripts/lib/plugin-sdk-entrypoints.json; pakketexports worden gegenereerd uit de openbare subset. Gereserveerde helperinterfaces voor gebundelde plugins zijn uit de openbare SDK- exportmap verwijderd, met uitzondering van expliciet gedocumenteerde compatibiliteitsfacades zoals de verouderde plugin-sdk/discord-shim die behouden blijft voor externe plugins die nog steeds rechtstreeks het gepubliceerde pakket @openclaw/discord importeren. Eigenaarsspecifieke helpers bevinden zich in het pakket van de eigenaar; gedeeld hostgedrag verloopt via generieke SDK-contracten zoals plugin-sdk/gateway-runtime, plugin-sdk/security-runtime en de geïnjecteerde Plugin-API. Gebruik de specifiekste import die bij de taak past. Als je geen export kunt vinden, controleer dan de bron in src/plugin-sdk/ of vraag de beheerders welk generiek contract er eigenaar van moet zijn.

Verwijderde compatibiliteitsinterfaces

Tijdens de opschoningsronde van juli 2026 zijn de root-SDK- en compat-barrels, de extension API- brug, de verlopen aliassen voor SDK-subpaden, ongebruikte SDK-subpaden en de openbare exports voor uitsluitend gebundelde SDK-modules verwijderd. Uitsluitend gebundelde modules blijven voor hun repository-eigenaren beschikbaar via privé-lokale bouwtoewijzingen; ze zijn niet importeerbaar vanuit het gepubliceerde pakket.

Procesglobale publicatie van API-providers

registerApiProvider(...) en unregisterApiProviders(...) zijn verwijderd uit openclaw/plugin-sdk/llm. Ze publiceerden API-transporten in procesglobale status, die modelruntimes met een eigen levenscyclus vervolgens naar elk voorbereid register moesten kopiëren. Providerplugins moeten providers voor tekstinferentie registreren via api.registerProvider(...). Code en tests die eigendom zijn van de host en een ApiRegistry aanmaken, moeten rechtstreeks in dat register registreren, zodat providereigendom en afbouw beperkt blijven tot de voorbereide runtime.

Privétestbarrel

openclaw/plugin-sdk/testing was repository-lokaal en uitgesloten van uitgebrachte pakket- artefacten, en is daarom vóór de removeAfter-datum van 2026-07-28 verwijderd. Repository- tests gebruiken gerichte subpaden 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.

Migratienaslag

Deze toewijzingen omvatten zowel in juli 2026 verwijderde oppervlakken als actieve afschrijvingen met een latere termijn. Een toewijzing is migratierichtlijn, geen bewijs dat het oude oppervlak beschikbaar blijft; raadpleeg het compatibiliteitsregister en de verwijderingstijdlijn voor de huidige status.
Oud (openclaw/plugin-sdk/command-auth): buildCommandsMessage, buildCommandsMessagePaginated, buildHelpMessage.Nieuw (openclaw/plugin-sdk/command-status): dezelfde signaturen, geïmporteerd vanuit het specifiekere subpad. De compatibiliteitsherexports van command-auth zijn verwijderd.
Oud: resolveMentionGating(params) en resolveMentionGatingWithBypass(params) uit openclaw/plugin-sdk/channel-inbound of openclaw/plugin-sdk/channel-mention-gating.Nieuw: resolveInboundMentionDecision({ facts, policy }) — één beslissingsobject in plaats van twee afzonderlijke aanroepvormen.In gebruik genomen voor Discord, iMessage, Matrix, MS Teams, QQBot, Signal, Telegram, WhatsApp en Zalo. Slacks eigen app_mention-gebeurtenismodel gebruikt deze helper niet.
openclaw/plugin-sdk/channel-runtime is verwijderd. Gebruik openclaw/plugin-sdk/channel-runtime-context om runtimeobjecten te registreren.De helpers voor het systeemeigen berichtschema in openclaw/plugin-sdk/channel-actions zijn samen met de onbewerkte kanaalexports voor “actions” verwijderd. Stel mogelijkheden in plaats daarvan beschikbaar via het semantische presentation-oppervlak — kanaalplugins geven aan wat ze weergeven (kaarten, knoppen, selecties) in plaats van welke onbewerkte actienamen ze accepteren.
Oud: tool()-factory uit openclaw/plugin-sdk/provider-web-search.Nieuw: implementeer createTool(...) rechtstreeks op de providerplugin. OpenClaw heeft de SDK-helper niet langer nodig om de toolwrapper te registreren.
Oud: api.runtime.channel.reply.formatInboundEnvelope(...) (en het channelEnvelope-veld op inkomende berichtobjecten) om van inkomende kanaalberichten een platte plattetekst-promptenvelop te maken.Nieuw: BodyForAgent plus gestructureerde gebruikerscontextblokken. Kanaalplugins voegen routeringsmetadata (thread, onderwerp, antwoord-op, reacties) toe als getypeerde velden in plaats van ze samen te voegen tot een prompttekenreeks. De helper formatAgentEnvelope(...) wordt nog steeds ondersteund voor gegenereerde, op de assistent gerichte enveloppen, maar inkomende plattetekst-enveloppen worden uitgefaseerd.Betrokken gebieden: inbound_claim, message_received en elke aangepaste kanaalplugin die de oude enveloptekst nabewerkte.
Oud: api.on("deactivate", handler).Nieuw: api.on("gateway_stop", handler). Hetzelfde contract voor opschoning bij afsluiten; alleen de hooknaam verandert.
deactivate blijft als afgeschreven compatibiliteitsalias gekoppeld totdat deze na 2026-08-16 wordt verwijderd.
Oud: api.on("subagent_spawning", handler) retourneert threadBindingReady of deliveryOrigin.Nieuw: laat de kern thread: true-subagentbindingen voorbereiden via de adapter voor kanaalsessiebindingen. Gebruik api.on("subagent_spawned", handler) alleen voor observatie na het starten.
subagent_spawning, PluginHookSubagentSpawningEvent, PluginHookSubagentSpawningResult en SubagentLifecycleHookRunner.runSubagentSpawning(...) blijven alleen bestaan als afgeschreven compatibiliteitsoppervlakken terwijl externe plugins migreren, en worden na 2026-08-30 verwijderd.
Vier typealiassen voor detectie zijn nu dunne wrappers rond de typen uit het catalogustijdperk:De aliassen en de verouderde statische verzameling ProviderCapabilities zijn verwijderd. Providerplugins 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, een optionele label en een gerangschikte niveaulijst. OpenClaw verlaagt verouderde opgeslagen waarden automatisch op basis van de profielrang.De context bevat provider, modelId, optionele samengevoegde reasoning-feiten en optionele samengevoegde compat-feiten over het model. Providerplugins kunnen die catalogusfeiten gebruiken om alleen een modelspecifiek profiel beschikbaar te stellen wanneer het geconfigureerde aanvraagcontract dit ondersteunt.Implementeer één hook in plaats van drie. De verouderde hooks zijn verwijderd.
Oud: externe authenticatiehooks implementeren zonder de provider in het pluginmanifest te declareren.Nieuw: declareer contracts.externalAuthProviders in het pluginmanifest en implementeer resolveExternalAuthProfiles(...).
Oud manifestveld: providerAuthEnvVars: { anthropic: ["ANTHROPIC_API_KEY"] }.Nieuw: spiegel dezelfde opzoekactie voor omgevingsvariabelen naar setup.providers[].envVars in het manifest. Dit brengt omgevingsmetadata voor installatie en status op één plaats samen en voorkomt dat de pluginruntime alleen voor het opzoeken van omgevingsvariabelen moet worden gestart.providerAuthEnvVars wordt niet langer geaccepteerd.
Oud: drie afzonderlijke aanroepen — api.registerMemoryPromptSection(...), api.registerMemoryFlushPlan(...), api.registerMemoryRuntime(...).Nieuw: één aanroep op de API voor geheugenstatus — registerMemoryCapability(pluginId, { promptBuilder, flushPlanResolver, runtime }).Dezelfde posities, één registratieaanroep. Aanvullende helpers voor prompts en corpora (registerMemoryPromptSupplement, registerMemoryCorpusSupplement) worden niet beïnvloed.
Oud: api.registerMemoryEmbeddingProvider(...) plus contracts.memoryEmbeddingProviders.Nieuw: api.registerEmbeddingProvider(...) plus contracts.embeddingProviders.Het generieke contract voor providers van insluitingen is buiten het geheugen herbruikbaar en vormt het ondersteunde pad voor nieuwe providers. De geheugenspecifieke registratie-API blijft als afgeschreven compatibiliteitslaag gekoppeld terwijl bestaande providers migreren. Plugininspectie rapporteert niet-gebundeld gebruik als compatibiliteitsschuld.
Oud: retourneer { ok, messageId, error } via ChannelSendRawResult en normaliseer het met createRawChannelSendResultAdapter(...).Nieuw: retourneer OutboundDeliveryResult-velden en voeg het kanaal toe met createAttachedChannelResultAdapter(...). Mislukte verzendingen moeten een uitzondering genereren in plaats van een fouttekenreeks te retourneren. Het onbewerkte resultaattype blijft beschikbaar tot de volgende hoofdversie van de plugin-SDK.
Twee verouderde typealiassen worden nog steeds geëxporteerd vanuit src/plugins/runtime/types.ts:De runtimemethode readSession is afgeschreven ten gunste van getSessionMessages. Dezelfde signatuur; de oude methode roept de nieuwe aan.
De omschakeling van sessies en transcripten naar SQLite verwijdert of schrijft plugingerichte API’s af die actieve sessions.json-opslagen, paden naar JSONL-transcripten of lijsten met sessiebestanden beschikbaar stelden. Runtimeplugins moeten sessie-identiteit en SDK-runtimehelpers gebruiken in plaats van actieve bestanden op te zoeken of te wijzigen.Verouderde JSONL-transcriptbestanden blijven geldig als import-, archief-, export- en ondersteuningsartefacten. Ze vormen niet langer het permanente runtimecontract voor actieve sessies.Officiële plugins die met v2026.7.1-beta.5 zijn uitgebracht, importeerden de vier bovenstaande afgeschreven helpers. openclaw/plugin-sdk/session-store-runtime behoudt precies die brug tot en met 2026-10-12; nieuwe plugins moeten de vervangingen gebruiken. resolveStorePath(...) blijft een ondersteunde SDK-helper en maakt geen deel uit van deze afschrijving.openclaw plugins inspect --all --runtime rapporteert niet-gebundelde plugins waarvan laadfouten of diagnostiek nog naar deze verwijderde bestands-API’s verwijzen. De adviserende controle van @openclaw/plugin-inspector moet versie 0.3.17 of nieuwer gebruiken, zodat scans van externe pakketten vóór een release ook helpers voor volledige sessieopslagen, helpers voor sessiebestandspaden, verouderde transcriptbestandsdoelen en laag-niveau-transcripthelpers markeren.
Oud: runtime.tasks.flow (enkelvoud) retourneerde een live accessor voor taakstromen.Nieuw: runtime.tasks.managedFlows behoudt de beheerde TaskFlow-mutatie-runtime voor plugins die vanuit een stroom onderliggende taken maken, bijwerken, annuleren of uitvoeren. Gebruik runtime.tasks.flows wanneer de plugin alleen op DTO’s gebaseerde leesbewerkingen nodig heeft.
De verouderde aliassen zijn in juli 2026 verwijderd.
Hierboven behandeld in Migreren. Voor de volledigheid hier opgenomen: het verwijderde, uitsluitend voor de ingebedde runner bestemde pad api.registerEmbeddedExtensionFactory(...) is vervangen door api.registerAgentToolResultMiddleware(...) met een expliciete runtimelijst in contracts.agentToolResultMiddleware.
De root-SDK-alias OpenClawSchemaType is verwijderd. Gebruik de canonieke naam OpenClawConfig.
Verouderingen op extensieniveau (binnen gebundelde kanaal-/providerplugins onder extensions/) worden bijgehouden in hun eigen api.ts- en runtime-api.ts- barrels. Ze hebben geen invloed op contracten van plugins van derden en worden hier niet vermeld. Als je rechtstreeks de lokale barrel van een gebundelde plugin gebruikt, lees dan vóór het upgraden de opmerkingen over veroudering in die barrel.

Migratie van Talk en realtime-spraak

Code voor realtime-spraak, telefonie, vergaderingen en browser-Talk gebruikt één Talk- sessiecontroller die wordt geëxporteerd door openclaw/plugin-sdk/realtime-voice. De controller beheert de algemene Talk-eventenvelop, de status van de actieve beurt, de opname- status, de status van uitgaande audio, de recente eventgeschiedenis en het weigeren van verouderde beurten. Providerplugins beheren leveranciersspecifieke realtime-sessies. Plugins voor browservergaderingen gebruiken openclaw/plugin-sdk/meeting-runtime voor sessie-, browser-, audio-, nodehost-, agentconsultatie- en spraakoproepmechanismen en implementeren vervolgens MeetingPlatformAdapter voor URL-regels, DOM-scripts, het koppelen van handmatige acties, ondertiteling, het aanmaken en inbel- plannen. REST-API’s van platforms, OAuth, artefacten, selectors en namen voor overdracht blijven in de plugin. Browsermachtigingsplannen ontvangen de aangevraagde vergader-URL, zodat elk platform alleen zijn exact ondersteunde origins kan toestaan. Sessieruntimes moeten ook platformspecifieke live-status normaliseren nadat het verlaten van de browser is bevestigd; historische transcriptvelden mogen behouden blijven, maar de gereedheid van ondertiteling en audio mag na het verlaten niet actief blijven. Alle gebundelde oppervlakken draaien op de gedeelde controller: browserrelay, overdracht van beheerde ruimtes, realtime-spraakoproepen, streaming-STT voor spraakoproepen, realtime van Google Meet en native push-to-talk. Gateway maakt één live Talk-eventkanaal bekend in hello-ok.features.events: talk.event. Nieuwe code hoort createTalkEventSequencer(...) niet rechtstreeks aan te roepen, tenzij een adapter op laag niveau of testfixture wordt geïmplementeerd. Gebruik de gedeelde controller, zodat events die aan een beurt zijn gekoppeld niet zonder beurt-id kunnen worden uitgezonden, verouderde aanroepen van turnEnd / turnCancel een nieuwere actieve beurt niet kunnen wissen en lifecycle-events voor uitgaande audio consistent blijven voor telefonie, vergaderingen, browserrelay, overdracht van beheerde ruimtes en native Talk-clients. De vorm van de openbare API:
WebRTC-/provider-websocketsessies die door de browser worden beheerd, gebruiken talk.client.create, omdat de browser de provideronderhandeling en het mediatransport beheert, terwijl de Gateway de inloggegevens, instructies en het toolbeleid beheert. talk.session.* is het algemene, door Gateway beheerde oppervlak voor realtime via gatewayrelay, transcriptie via gatewayrelay en native STT/TTS-sessies in beheerde ruimtes. Verouderde configuraties die realtime-selectors naast talk.provider / talk.providers plaatsen, moeten worden gerepareerd met openclaw doctor --fix; Talk in de runtime interpreteert providerconfiguratie voor spraak/TTS niet opnieuw als providerconfiguratie voor realtime. De ondersteunde combinaties voor talk.session.create zijn bewust beperkt: Methodetoewijzing voor lezers die migreren van de oudere families talk.realtime.* / talk.transcription.* / talk.handoff.* (allemaal verwijderd): Het uniforme besturingsvocabulaire is eveneens bewust beperkt: Voer geen speciale gevallen voor providers of platforms in de kern in om dit te laten werken. De kern beheert de semantiek van Talk-sessies. Providerplugins beheren het opzetten van leverancierssessies. Spraakoproepen en Google Meet beheren telefonie-/vergaderadapters. Browser- en native apps beheren de UX voor opname/afspelen op het apparaat.

Tijdlijn voor verwijdering

De resterende openbare SDK-subpaden hieronder hebben registergestuurde verwijderingsvensters. De rijen van 30 juli zijn verwijderd na hun vroege, door onderhouders goedgekeurde opschoningsronde: ongebruikte subpaden zijn verwijderd, eerdere compatibiliteitsaliassen zijn verwijderd en uitsluitend gebundelde modules zijn gedegradeerd tot privé-lokale buildtoewijzingen. Alle coreplugins zijn al gemigreerd. Externe plugins moeten migreren vóór de volgende hoofdrelease. Voer pnpm plugins:boundary-report uit om te zien welke compatibiliteitsrecords het eerst verlopen voor de oppervlakken die jouw plugin gebruikt.

De waarschuwingen tijdelijk onderdrukken

Dit is een tijdelijke uitweg, geen permanente oplossing.

Gerelateerd