Compatibiliteitsregister
Plugin-compatibiliteitscontracten worden bijgehouden in het kernregister opsrc/plugins/compat/registry.ts. Elke record bevat:
- een stabiele compatibiliteitscode
- status:
active,deprecated,removal-pendingofremoved - eigenaar:
sdk,config,setup,channel,provider,plugin-execution,agent-runtimeofcore - introductie- en afschrijvingsdatums indien van toepassing
- een exacte verwijderingsdatum zodra de verantwoordelijke maintainer deze goedkeurt; als
removeAfterontbreekt, komt een afgeschreven oppervlak niet in aanmerking voor verwijdering - richtlijnen voor vervanging
- documentatie, diagnostiek en tests die het oude en nieuwe gedrag dekken
src/commands/doctor/shared/deprecation-compat.ts. Die records omvatten oude
configuratievormen, indelingen van installatiegrootboeken en reparatieshims die mogelijk
beschikbaar moeten blijven nadat het runtimecompatibiliteitspad is verwijderd.
Releasecontroles moeten beide registers controleren. Verwijder een Doctor-
migratie niet alleen omdat de overeenkomende runtime- of configuratiecompatibiliteitsrecord
is verlopen; controleer eerst of er geen ondersteund upgradepad is dat de
reparatie nog nodig heeft. Valideer ook elke vervangingsannotatie opnieuw tijdens de releaseplanning,
omdat het eigenaarschap van plugins en de configuratieomvang kunnen veranderen wanneer providers
en kanalen uit de kern worden verplaatst.
Afschrijvingsbeleid
OpenClaw mag een gedocumenteerd Plugin-contract niet verwijderen in dezelfde release waarin de vervanging ervan wordt geïntroduceerd. Migratievolgorde:- Voeg het nieuwe contract toe.
- Houd het oude gedrag aangesloten via een benoemde compatibiliteitsadapter.
- Geef diagnostiek of waarschuwingen wanneer Pluginauteurs actie kunnen ondernemen.
- Documenteer de vervanging en het tijdschema.
- Test zowel het oude als het nieuwe pad.
- Wacht gedurende het aangekondigde migratievenster.
- Verwijder alleen met expliciete goedkeuring voor een brekende release.
active markeren.
Huidige compatibiliteitsgebieden
Bij de controle van juli 2026 zijn de verlopen aliassen voor de hoofd-SDK, het manifest, de provider, de runtime, registervlaggen en de webconfiguratie in eigendom van plugins verwijderd. Doctor-migraties blijven afzonderlijk bijgehouden, zodat ondersteunde upgradepaden oude configuraties nog steeds kunnen repareren. De resterende gedateerde compatibiliteitsgebieden zijn:- de SDK-subpadvensters van augustus en september die in de migratiehandleiding worden vermeld
api.on("deactivate", ...)- enapi.on("subagent_spawning", ...)-hookaliassen- geheugenspecifieke registratie van embeddings en de sessieopslagbrug van beta.5
- de hieronder beschreven aliassen voor inkomende WhatsApp-callbacks
- expliciete parsering van kanaaldoelen en
openclaw/plugin-sdk/messaging-targets - ingebedde Pi-agentaliassen
- de uitgebrachte SDK-aliassen van de agentharnas, waarvan de verwijdering wacht op een nieuwe extern gedocumenteerde migratiebeslissing
Platte aliassen voor inkomende WhatsApp-callbacks
WhatsApp-runtimecallbacks leverenWebInboundMessage: de canonieke
geneste contexten event, payload, quote, group en platform, plus
afgeschreven platte aliassen voor de uitgebrachte callbackvelden. Nieuwe callbackcode
moet de geneste contexten lezen. Code die schone geneste callbackberichten
samenstelt, kan WebInboundCallbackMessage gebruiken; compatibiliteitslisteners die
nog steeds oude platte test- of Plugin-berichten invoegen, moeten
LegacyFlatWebInboundMessage of WebInboundMessageInput gebruiken.
De platte aliassen blijven beschikbaar tot 2026-08-30; dat venster geldt
alleen voor toegang via platte aliassen, niet voor de geneste vorm, die het canonieke
runtimecontract is. De TypeScript-annotatie @deprecated van elke platte alias
noemt de exacte geneste vervanging. Veelvoorkomende voorbeelden:
id,timestampenisBatchedworden verplaatst onderevent.body,mediaPath,mediaType,mediaFileName,mediaUrl,locationenuntrustedStructuredContextworden verplaatst onderpayload.to,chatId, afzender-/zelfvelden,sendComposing,reply(...)ensendMedia(...)worden verplaatst onderplatform.replyTo*-velden worden verplaatst onderquote; velden voor groepsonderwerp/-deelnemer/-vermelding worden verplaatst ondergroup.
payload.untrustedStructuredContext wordt uit inkomende providerpayloads
geëxtraheerd. Plugins moeten label, source en type inspecteren voordat
ze de payload ervan als gezaghebbend beschouwen.
Toelatingsvelden voor inkomende WhatsApp-berichten
Geaccepteerde WhatsApp-callbackberichten bevattenadmission, een openbaar veilige
envelop voor de toegangscontrolebeslissing waarmee het bericht werd toegelaten. Nieuwe
callbackcode moet toelatingsfeiten uit msg.admission lezen in plaats van
uit de oudere toelatingsvelden op het hoogste niveau.
De velden op het hoogste niveau blijven beschikbaar tot 2026-08-30. De
TypeScript-annotatie @deprecated van elk veld noemt de vervanging:
fromenconversationIdworden verplaatst naaradmission.conversation.id.accountIdwordt verplaatst naaradmission.accountId.accessControlPassedis een afgeleide compatibiliteitsweergave vanadmission.ingress.decision === "allow"; bij berichten die aladmissionbevatten, herschrijft het schrijven van de verouderde booleaanse waarde de ingress- graaf niet.chatTypewordt verplaatst naaradmission.conversation.kind.
Pakket voor de Plugin-inspector
De Plugin-inspector moet buiten de kernrepository van OpenClaw bestaan als een afzonderlijk pakket/repository dat wordt ondersteund door de geversioneerde compatibiliteits- en manifestcontracten. De CLI voor de eerste dag moet zijn:--json voor stabiele
machineleesbare uitvoer in CI-annotaties. De kern van OpenClaw moet
contracten en fixtures beschikbaar stellen die de inspector kan gebruiken, maar mag het
inspector-binaire bestand niet publiceren vanuit het hoofdpakket openclaw.
Acceptatietraject voor maintainers
Gebruik door Crabbox ondersteunde Blacksmith Testbox voor het acceptatietraject van installeerbare pakketten wanneer de externe inspector wordt gevalideerd met OpenClaw-Plugin- pakketten. Voer dit uit vanuit een schone OpenClaw-checkout nadat het pakket is gebouwd:Releaseopmerkingen
Releaseopmerkingen moeten aankomende Plugin-afschrijvingen met streefdatums en links naar migratiedocumentatie bevatten voordat een compatibiliteitspad naarremoval-pending of removed wordt verplaatst.