Wat is er gewijzigd
Verschillende zeer ruime importoppervlakken gaven Plugins voorheen vanuit één toegangspunt toegang tot vrijwel alles:openclaw/plugin-sdkenopenclaw/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, zoalstool_result. Gebruik in plaats daarvan middleware voor agenttoolresultaten (zie Ingebedde extensies voor toolresultaten migreren naar middleware).
infra-runtime en config-runtime blijven alleen bestaan voor hun
afzonderlijk vastgelegde latere vensters; nieuwe Plugins moeten gerichte subpaden gebruiken.
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.
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:- Voeg het nieuwe contract toe.
- Behoud het oude gedrag via een compatibiliteitsadapter.
- Geef een diagnostisch bericht of waarschuwing weer waarin het oude pad en de vervanging worden genoemd.
- Dek beide paden af met tests.
- Documenteer de uitfasering en het migratiepad.
- Verwijder pas na het aangekondigde migratievenster, meestal in een hoofd- release.
Compatibiliteit voor installatie van gepubliceerde kanalen
Slack-, Discord-, Signal- en Microsoft Teams-pakketten die via2026.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.
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
- Doorloop
https://clawhub.ai/api/v1/packages?family=code-plugin&limit=100pagina voor pagina met elkenextCursoren behoud pakketten waarvan decategorieschannelsbevatten. - 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 naaropenclaw/plugin-sdk/channel-setup,openclaw/plugin-sdk/setupenopenclaw/plugin-sdk/core. - 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 meegeleverdedist-JavaScript en declaraties op directe of gedestructureerde leesbewerkingen van velden. Download het ClawHub-artefact wanneer een pakket geen npm-release heeft. - 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.
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 compatibiliteitsregistratiemedia-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:
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
Runtimehelpers voor laden/schrijven van configuratie migreren
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: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:Ingebedde extensies voor toolresultaten naar middleware migreren
api.registerEmbeddedExtensionFactory(...)-handlers voor toolresultaten vervangen door
runtime-neutrale middleware:contracts.agentToolResultMiddleware. Niet-gedeclareerde middleware-
registraties van geïnstalleerde plugins worden geweigerd.Native goedkeuringshandlers naar capaciteitsfeiten migreren
approvalCapability.nativeRuntime plus het gedeelde register voor
runtimecontext:- Vervang
approvalCapability.handler.loadRuntime(...)doorapprovalCapability.nativeRuntime. - Verplaats goedkeuringsspecifieke authenticatie/bezorging van de verouderde
plugin.auth-/plugin.approvals-bedrading naarapprovalCapability. ChannelPlugin.approvalsis verwijderd uit het openbare kanaalplugincontract; verplaats bezorgings-, native en renderingsvelden naarapprovalCapability.plugin.authblijft 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
channelRuntimedoorgeeft aancreateChannelManager(...), geef dan een echtecreatePluginRuntime().channel-interface op; gedeeltelijke stubs worden geweigerd.
Fallbackgedrag van Windows-wrappers controleren
openclaw/plugin-sdk/windows-spawn gebruikt, mislukken niet-opgeloste Windows-
wrappers voor .cmd/.bat nu standaard veilig, tenzij je expliciet
allowShellFallback: true doorgeeft:allowShellFallback dan niet in en handel in plaats daarvan de gegenereerde fout af.Verouderde imports zoeken
Vervangen door gerichte imports
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:infra-runtime, zodat repositorycode
niet kan terugvallen op de brede barrel.Helpers voor kanaalroutes migreren
openclaw/plugin-sdk/channel-route. De oudere
route-sleutelnamen blijven beschikbaar als compatibiliteitsaliassen:{ 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.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 inscripts/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.Helpers voor command-auth-help -> command-status
Helpers voor command-auth-help -> command-status
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.Helpers voor vermeldingscontrole -> resolveInboundMentionDecision
Helpers voor vermeldingscontrole -> resolveInboundMentionDecision
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.Shim voor de kanaalruntime en helpers voor kanaalacties
Shim voor de kanaalruntime en helpers voor kanaalacties
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.Webzoekproviderhelper tool() -> createTool() op de plugin
Webzoekproviderhelper tool() -> createTool() op de plugin
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.Plattetekst-enveloppen voor kanalen -> BodyForAgent
Plattetekst-enveloppen voor kanalen -> BodyForAgent
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.deactivate-hook -> gateway_stop
deactivate-hook -> gateway_stop
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.subagent_spawning-hook -> kernbinding van threads
subagent_spawning-hook -> kernbinding van threads
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.Typen voor providerdetectie -> typen voor providercatalogi
Typen voor providerdetectie -> typen voor providercatalogi
ProviderCapabilities zijn
verwijderd. Providerplugins moeten expliciete providerhooks gebruiken, zoals
buildReplayPolicy, normalizeToolSchemas en wrapStreamFn, in plaats van
een statisch object.Hooks voor denkbeleid -> resolveThinkingProfile
Hooks voor denkbeleid -> resolveThinkingProfile
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.Externe authenticatieproviders -> contracts.externalAuthProviders
Externe authenticatieproviders -> contracts.externalAuthProviders
contracts.externalAuthProviders in het pluginmanifest
en implementeer resolveExternalAuthProfiles(...).Opzoeken van provideromgevingsvariabelen -> setup.providers[].envVars
Opzoeken van provideromgevingsvariabelen -> setup.providers[].envVars
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.Registratie van geheugenplugins -> registerMemoryCapability
Registratie van geheugenplugins -> registerMemoryCapability
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.API voor providers van geheugeninsluitingen
API voor providers van geheugeninsluitingen
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.Onbewerkte kanaalverzendresultaten -> OutboundDeliveryResult
Onbewerkte kanaalverzendresultaten -> OutboundDeliveryResult
{ 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.Typen voor subagentsessieberichten hernoemd
Typen voor subagentsessieberichten hernoemd
src/plugins/runtime/types.ts:readSession is afgeschreven ten gunste van
getSessionMessages. Dezelfde signatuur; de oude methode roept de nieuwe aan.Verwijderde API's voor sessie- en transcriptbestanden
Verwijderde API's voor sessie- en transcriptbestanden
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.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.runtime.tasks.flow -> runtime.tasks.managedFlows
runtime.tasks.flow -> runtime.tasks.managedFlows
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.Ingebedde extensiefabrieken -> middleware voor agenttoolresultaten
Ingebedde extensiefabrieken -> middleware voor agenttoolresultaten
api.registerEmbeddedExtensionFactory(...) is vervangen door
api.registerAgentToolResultMiddleware(...) met een expliciete runtimelijst
in contracts.agentToolResultMiddleware.Alias OpenClawSchemaType -> OpenClawConfig
Alias OpenClawSchemaType -> OpenClawConfig
OpenClawSchemaType is verwijderd. Gebruik de canonieke
naam OpenClawConfig.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 dooropenclaw/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:
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:
talk.realtime.* /
talk.transcription.* / talk.handoff.* (allemaal verwijderd):
Tijdlijn voor verwijdering
pnpm plugins:boundary-report uit om te zien welke
compatibiliteitsrecords het eerst verlopen voor de oppervlakken die jouw plugin gebruikt.
De waarschuwingen tijdelijk onderdrukken
Gerelateerd
- Aan de slag - bouw je eerste plugin
- SDK-overzicht - volledige referentie voor imports van subpaden
- Kanaalplugins - kanaalplugins bouwen
- Providerplugins - providerplugins bouwen
- Interne werking van plugins - diepgaande architectuurbeschrijving
- Pluginmanifest - referentie voor het manifestschema