Plugins
Plugin SDK-migratie
OpenClaw is overgestapt van een brede laag voor achterwaartse compatibiliteit naar een moderne Plugin-architectuur 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 Plugin-systeem bood twee zeer open oppervlakken waarmee Plugins alles konden importeren wat ze nodig hadden vanuit één enkel toegangspunt:
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 Plugin-architectuur werd gebouwd.openclaw/plugin-sdk/infra-runtime- een brede barrel met runtime-helpers die systeemgebeurtenissen, Heartbeat-status, afleverwachtrijen, fetch/proxy-helpers, 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 load/write-helpers bevat.openclaw/extension-api- een bridge die Plugins directe toegang gaf tot host-side helpers zoals de ingesloten agent-runner.api.registerEmbeddedExtensionFactory(...)- een verwijderde, alleen voor Pi bedoelde gebundelde extension-hook die embedded-runner-gebeurtenissen zoalstool_resultkon 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 registratie-API voor embedded extension factories die alleen voor Pi was bedoeld, is verwijderd; gebruik in plaats daarvan tool-result-middleware.
OpenClaw verwijdert of herinterpreteert gedocumenteerd Plugin-gedrag niet in dezelfde wijziging die een vervanging introduceert. Breaking contractwijzigingen moeten eerst via een compatibiliteitsadapter, diagnostiek, documentatie en een deprecation-periode gaan. Dat geldt voor SDK-imports, manifestvelden, setup-API's, hooks en runtime-registratiegedrag.
Waarom dit is veranderd
De oude aanpak veroorzaakte problemen:
- Trage opstart - het importeren van één helper laadde tientallen niet-gerelateerde modules
- Circulaire afhankelijkheden - brede re-exports maakten het gemakkelijk om importcycli te creëren
- Onduidelijk API-oppervlak - geen manier om te zien welke exports stabiel waren versus intern
De moderne Plugin-SDK lost dit op: elk importpad (openclaw/plugin-sdk/\<subpath\>) is een kleine, zelfstandige module met een duidelijk doel en gedocumenteerd contract.
Legacy provider-convenience-seams voor gebundelde kanalen zijn ook verdwenen. Channel-branded helper-seams waren private mono-repo-snelkoppelingen, geen stabiele Plugin-contracten. Gebruik in plaats daarvan smalle generieke SDK-subpaths. Houd binnen de gebundelde Plugin-workspace provider-owned helpers in de eigen api.ts of runtime-api.ts van die Plugin.
Huidige voorbeelden van gebundelde providers:
- Anthropic houdt Claude-specifieke streamhelpers in zijn eigen
api.ts/contract-api.ts-seam - OpenAI houdt provider builders, default-model-helpers en realtime provider builders in zijn eigen
api.ts - OpenRouter houdt provider builder- en onboarding/config-helpers in zijn eigen
api.ts
Migratieplan voor Talk en realtime voice
Realtime voice-, telefonie-, meeting- en browser-Talk-code wordt verplaatst van surface-local turn-boekhouding naar een gedeelde Talk-sessiecontroller die wordt geëxporteerd door openclaw/plugin-sdk/realtime-voice. De nieuwe controller beheert de algemene Talk-eventenvelope, actieve turn-status, capture-status, output-audiostatus, recente eventgeschiedenis en afwijzing van verouderde turns. Provider-Plugins moeten vendor-specifieke realtime sessies blijven beheren; surface-Plugins moeten capture, playback, telefonie en meeting-eigenaardigheden blijven beheren.
Deze Talk-migratie is bewust breaking-clean:
- Houd de gedeelde controller/runtime-primitieven in
plugin-sdk/realtime-voice. - Zet gebundelde oppervlakken over op de gedeelde controller: browser relay, managed-room handoff, voice-call realtime, voice-call streaming STT, Google Meet realtime en native push-to-talk.
- Vervang oude Talk RPC-families door de uiteindelijke
talk.session.*- entalk.client.*-API. - Adverteer één live Talk-eventkanaal in Gateway
hello-ok.features.events:talk.event. - Verwijder het oude realtime HTTP-endpoint en elk request-time pad voor instruction override.
Nieuwe code mag createTalkEventSequencer(...) niet direct aanroepen, tenzij deze een low-level adapter of test fixture implementeert. Geef de voorkeur aan de gedeelde controller zodat turn-scoped events niet zonder turn id kunnen worden verzonden, verouderde turnEnd / turnCancel-aanroepen geen nieuwere actieve turn kunnen wissen, en output-audio lifecycle-events 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 });
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 de provider-onderhandeling en het mediatransport beheert terwijl de Gateway credentials, instructies en toolbeleid beheert. talk.session.* is het algemene door Gateway beheerde oppervlak voor gateway-relay realtime, gateway-relay transcriptie en managed-room native STT/TTS-sessies.
Legacy configs 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:
| Modus | Transport | Brain | Eigenaar | Opmerkingen |
|---|---|---|---|---|
realtime |
gateway-relay |
agent-consult |
Gateway | Full-duplex provider-audio gebridged via de Gateway; tool calls worden gerouteerd via de agent-consult-tool. |
transcription |
gateway-relay |
none |
Gateway | Alleen streaming STT; aanroepers sturen inputaudio en ontvangen transcriptevents. |
stt-tts |
managed-room |
agent-consult |
Native/client room | Push-to-talk- en walkie-talkie-achtige rooms waarin de client capture/playback beheert en de Gateway turn-status beheert. |
stt-tts |
managed-room |
direct-tools |
Native/client room | Admin-only room-modus voor vertrouwde first-party oppervlakken die Gateway-toolacties direct uitvoeren. |
Verwijderde methodemapping:
| Oud | Nieuw |
|---|---|
talk.realtime.session |
talk.client.create |
talk.realtime.toolCall |
talk.client.toolCall |
talk.realtime.relayAudio |
talk.session.appendAudio |
talk.realtime.relayCancel |
talk.session.cancelOutput of talk.session.cancelTurn |
talk.realtime.relayToolResult |
talk.session.submitToolResult |
talk.realtime.relayStop |
talk.session.close |
talk.transcription.session |
talk.session.create({ mode: "transcription" }) |
talk.transcription.relayAudio |
talk.session.appendAudio |
talk.transcription.relayCancel |
talk.session.cancelTurn |
talk.transcription.relayStop |
talk.session.close |
talk.handoff.create |
talk.session.create({ transport: "managed-room" }) |
talk.handoff.join |
talk.session.join |
talk.handoff.revoke |
talk.session.close |
Het uniforme control-vocabulaire is ook bewust smal:
| Methode | Van toepassing op | Contract |
|---|---|---|
talk.session.appendAudio |
realtime/gateway-relay, transcription/gateway-relay |
Voeg een base64 PCM-audiochunk toe aan de providersessie die eigendom is van dezelfde Gateway-verbinding. |
talk.session.startTurn |
stt-tts/managed-room |
Start een user turn in een managed-room. |
talk.session.endTurn |
stt-tts/managed-room |
Beëindig de actieve turn na stale-turn-validatie. |
talk.session.cancelTurn |
alle Gateway-owned sessies | Annuleer actief capture/provider/agent/TTS-werk voor een turn. |
talk.session.cancelOutput |
realtime/gateway-relay |
Stop assistant-audio-output zonder noodzakelijkerwijs de user turn te beëindigen. |
talk.session.submitToolResult |
realtime/gateway-relay |
Voltooi een provider tool call die door de relay is verzonden. |
talk.session.close |
alle uniforme sessies | Stop relay-sessies of trek managed-room-status in, en vergeet daarna de uniforme session id. |
Introduceer geen provider- of platformspecial cases in core om dit te laten werken. Core beheert Talk-sessiesemantiek. Provider-Plugins beheren vendor session setup. Voice-call en Google Meet beheren telefonie-/meetingadapters. Browser- en native apps beheren device capture/playback UX.
Compatibiliteitsbeleid
Voor externe Plugins volgt compatibiliteitswerk deze volgorde:
- voeg het nieuwe contract toe
- houd het oude gedrag aangesloten via een compatibiliteitsadapter
- geef een diagnostic of warning die het oude pad en de vervanging noemt
- dek beide paden af in tests
- documenteer de deprecation en het migratiepad
- verwijder pas na de aangekondigde migratieperiode, meestal in een major release
Onderhouders 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 tussen eigenaren, of ongebruikte gereserveerde SDK-
subpaden. Het rapport groepeert verouderde
compatibiliteitsrecords op verwijderdatum, telt lokale code-/docs-verwijzingen,
toont gereserveerde SDK-imports tussen eigenaren, en vat de private
memory-host SDK-bridge samen zodat compatibiliteitsopschoning expliciet blijft in plaats van
te vertrouwen op ad-hoczoekacties. Gereserveerde SDK-subpaden moeten bijgehouden eigenaargebruik hebben;
ongebruikte gereserveerde helper-exports moeten uit de openbare SDK worden verwijderd.
Als een manifestveld nog wordt geaccepteerd, kunnen Plugin-auteurs het blijven gebruiken totdat de documentatie en diagnostiek iets anders zeggen. Nieuwe code moet de gedocumenteerde vervanging verkiezen, maar bestaande Plugins mogen niet breken tijdens gewone minor- releases.
Migreren
Migrate runtime config load/write helpers
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 de ctx.getRuntimeConfig() van de toolcontext binnen
execute gebruiken, zodat een tool die vóór een configuratieschrijfactie is gemaakt nog steeds de vernieuwde
runtimeconfiguratie ziet.
Configuratieschrijfacties moeten via de transactionele helpers lopen en een beleid voor na het schrijven kiezen:
await api.runtime.config.mutateConfigFile({
afterWrite: { mode: "auto" },
mutate(draft) {
draft.plugins ??= {};
},
});
Gebruik afterWrite: { mode: "restart", reason: "..." } wanneer de aanroeper weet
dat de wijziging een schone Gateway-herstart vereist, en
afterWrite: { mode: "none", reason: "..." } alleen wanneer de aanroeper eigenaar is van de
vervolgactie en de herlaadplanner bewust wil onderdrukken.
Mutatieresultaten bevatten een getypte followUp-samenvatting voor tests en logging;
de Gateway blijft verantwoordelijk voor het toepassen of plannen van de herstart.
loadConfig en writeConfigFile blijven als verouderde compatibiliteits-
helpers voor externe Plugins bestaan tijdens het migratievenster en waarschuwen eenmaal met
de compatibiliteitscode runtime-config-load-write. Gebundelde Plugins en repo-
runtimecode worden beschermd door scanner-guardrails in
pnpm check:deprecated-internal-config-api en
pnpm check:no-runtime-action-load-config: nieuw productiegebruik door Plugins
faalt direct, directe configuratieschrijfacties falen, Gateway-servermethoden moeten de
request-runtimesnapshot gebruiken, runtimehelpers voor kanaalverzending/actie/client
moeten configuratie vanuit hun grens ontvangen, en langlevende runtimemodules hebben
nul toegestane omgevingsaanroepen naar loadConfig().
Nieuwe Plugincode moet ook vermijden om de brede
compatibiliteitsbarrel openclaw/plugin-sdk/config-runtime te importeren. Gebruik het smalle
SDK-subpad dat bij de taak past:
| Behoefte | Import |
|---|---|
Configuratietypen zoals OpenClawConfig |
openclaw/plugin-sdk/config-types |
| Asserties op al geladen configuratie en configuratie-opzoeking voor Plugin-entry | openclaw/plugin-sdk/plugin-config-runtime |
| Huidige runtimesnapshot-reads | openclaw/plugin-sdk/runtime-config-snapshot |
| Configuratieschrijfacties | openclaw/plugin-sdk/config-mutation |
| Helpers voor sessiestore | openclaw/plugin-sdk/session-store-runtime |
| Markdown-tabelconfiguratie | openclaw/plugin-sdk/markdown-table-runtime |
| Runtimehelpers voor groepsbeleid | openclaw/plugin-sdk/runtime-group-policy |
| Oplossing van geheime invoer | openclaw/plugin-sdk/secret-input-runtime |
| Model-/sessie-overschrijvingen | openclaw/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 moet er niet van afhankelijk zijn.
Migrate Pi tool-result extensions to middleware
Gebundelde Plugins moeten Pi-specifieke
api.registerEmbeddedExtensionFactory(...)-toolresultaathandlers 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 deze tooluitvoer met hoog vertrouwen kan herschrijven voordat het model die ziet.
Migrate approval-native handlers to capability facts
Goedkeuringsgeschikte kanaal-Plugins tonen native goedkeuringsgedrag nu via
approvalCapability.nativeRuntime plus het gedeelde runtime-contextregister.
Belangrijkste wijzigingen:
- Vervang
approvalCapability.handler.loadRuntime(...)doorapprovalCapability.nativeRuntime - Verplaats goedkeuringsspecifieke auth/levering van legacy
plugin.auth/plugin.approvals-bedrading naarapprovalCapability ChannelPlugin.approvalsis verwijderd uit het openbare channel-plugin- contract; verplaats delivery/native/render-velden naarapprovalCapabilityplugin.authblijft alleen voor kanaallogin-/logoutflows; goedkeuringsauth- hooks daar worden niet langer door core gelezen- Registreer kanaaleigen runtimeobjecten zoals clients, tokens of Bolt-
apps via
openclaw/plugin-sdk/channel-runtime-context - Verstuur geen Plugin-eigen omleidingsmeldingen vanuit native goedkeuringshandlers; core bezit nu meldingen voor elders gerouteerd op basis van werkelijke leveringsresultaten
- Wanneer
channelRuntimewordt doorgegeven aancreateChannelManager(...), lever dan een echtcreatePluginRuntime().channel-oppervlak. Gedeeltelijke stubs worden geweigerd.
Zie /plugins/sdk-channel-plugins voor de huidige indeling van goedkeuringsmogelijkheden.
Audit Windows wrapper fallback behavior
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 afhankelijk is van shellfallback, stel
allowShellFallback dan niet in en handel in plaats daarvan de gegooide fout af.
Find deprecated imports
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/
Replace with focused imports
Elke export uit het oude oppervlak verwijst naar een specifiek modern importpad:
// Before (deprecated backwards-compatibility layer)
import {
createChannelReplyPipeline,
createPluginRuntimeStore,
resolveControlCommandGate,
} from "openclaw/plugin-sdk/compat";
// After (modern focused imports)
import { createChannelReplyPipeline } from "openclaw/plugin-sdk/channel-reply-pipeline";
import { createPluginRuntimeStore } from "openclaw/plugin-sdk/runtime-store";
import { resolveControlCommandGate } from "openclaw/plugin-sdk/command-auth";
Gebruik voor host-side helpers de geïnjecteerde Pluginruntime in plaats van 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 bridge-helpers:
| Oude import | Modern equivalent |
|---|---|
resolveAgentDir |
api.runtime.agent.resolveAgentDir |
resolveAgentWorkspaceDir |
api.runtime.agent.resolveAgentWorkspaceDir |
resolveAgentIdentity |
api.runtime.agent.resolveAgentIdentity |
resolveThinkingDefault |
api.runtime.agent.resolveThinkingDefault |
resolveAgentTimeoutMs |
api.runtime.agent.resolveAgentTimeoutMs |
ensureAgentWorkspace |
api.runtime.agent.ensureAgentWorkspace |
| helpers voor sessiestore | api.runtime.agent.session.* |
Replace broad infra-runtime imports
openclaw/plugin-sdk/infra-runtime bestaat nog steeds voor externe
compatibiliteit, maar nieuwe code moet het gerichte helperoppervlak importeren dat deze
echt nodig heeft:
| Behoefte | Import |
|---|---|
| Helpers voor systeemgebeurteniswachtrijen | openclaw/plugin-sdk/system-event-runtime |
| Heartbeat-gebeurtenis- en zichtbaarheidshelpers | openclaw/plugin-sdk/heartbeat-runtime |
| Leegmaken van wachtrij voor uitstaande leveringen | openclaw/plugin-sdk/delivery-queue-runtime |
| Telemetrie voor kanaalactiviteit | openclaw/plugin-sdk/channel-activity-runtime |
| In-memory dedupe-caches | openclaw/plugin-sdk/dedupe-runtime |
| Veilige helpers voor lokale bestands-/mediapaden | openclaw/plugin-sdk/file-access-runtime |
| Dispatcher-bewuste fetch | openclaw/plugin-sdk/runtime-fetch |
| Proxy- en bewaakte fetch-helpers | openclaw/plugin-sdk/fetch-runtime |
| Typen voor SSRF-dispatcherbeleid | openclaw/plugin-sdk/ssrf-dispatcher |
| Typen voor goedkeuringsverzoek/-oplossing | openclaw/plugin-sdk/approval-runtime |
| Helpers voor goedkeuringsantwoordpayload en commando's | openclaw/plugin-sdk/approval-reply-runtime |
| Helpers voor foutopmaak | openclaw/plugin-sdk/error-runtime |
| Wachttijden voor transportgereedheid | openclaw/plugin-sdk/transport-ready-runtime |
| Helpers voor veilige tokens | openclaw/plugin-sdk/secure-random-runtime |
| Begrensde async taakconcurrency | openclaw/plugin-sdk/concurrency-runtime |
| Numerieke coercion | openclaw/plugin-sdk/number-runtime |
| Process-local async lock | openclaw/plugin-sdk/async-lock-runtime |
| Bestandslocks | openclaw/plugin-sdk/file-lock |
Gebundelde Plugins worden door scanners beschermd tegen infra-runtime, zodat repocode
niet kan terugvallen naar de brede barrel.
Migrate channel route helpers
Nieuwe kanaalroutecode moet openclaw/plugin-sdk/channel-route gebruiken.
De oudere namen voor route-key en comparable-target blijven tijdens het migratievenster als compatibiliteits-
aliassen bestaan, maar nieuwe Plugins moeten de routenamen gebruiken
die het gedrag direct beschrijven:
| Oude helper | Moderne helper |
|---|---|
channelRouteIdentityKey(...) |
channelRouteDedupeKey(...) |
channelRouteKey(...) |
channelRouteCompactKey(...) |
ComparableChannelTarget |
ChannelRouteParsedTarget |
resolveComparableTargetForChannel(...) |
resolveRouteTargetForChannel(...) |
resolveComparableTargetForLoadedChannel(...) |
resolveRouteTargetForLoadedChannel(...) |
comparableChannelTargetsMatch(...) |
channelRouteTargetsMatchExact(...) |
comparableChannelTargetsShareRoute(...) |
channelRouteTargetsShareConversation(...) |
De moderne routehelpers normaliseren { channel, to, accountId, threadId }
consequent voor native goedkeuringen, antwoordonderdrukking, inkomende
deduplicatie, Cron-levering en sessieroutering. Als je plugin aangepaste
doelgrammatica beheert, gebruik dan resolveChannelRouteTargetWithParser(...)
om die parser aan te passen aan hetzelfde routedoelcontract.
Bouwen en testen
pnpm build
pnpm test -- my-plugin/
Referentie voor importpaden
Tabel met veelvoorkomende importpaden
| Importpad | Doel | Belangrijkste exports |
|---|---|---|
plugin-sdk/plugin-entry |
Canonieke Plugin-entry-helper | definePluginEntry |
plugin-sdk/core |
Verouderde overkoepelende re-export voor kanaal-entrydefinities/-builders | defineChannelPluginEntry, createChatChannelPlugin |
plugin-sdk/config-schema |
Export van rootschema voor configuratie | OpenClawSchema |
plugin-sdk/provider-entry |
Entry-helper voor enkele provider | defineSingleProviderPluginEntry |
plugin-sdk/channel-core |
Gerichte kanaal-entrydefinities en builders | defineChannelPluginEntry, defineSetupPluginEntry, createChatChannelPlugin, createChannelPluginBase |
plugin-sdk/setup |
Gedeelde helpers voor de installatiewizard | Allowlist-prompts, builders voor installatiestatus |
plugin-sdk/setup-runtime |
Runtime-helpers voor tijdens installatie | Importveilige adapters voor installatiepatches, helpers voor opzoeknotities, promptResolvedAllowFrom, splitSetupEntries, gedelegeerde installatieproxy's |
plugin-sdk/setup-adapter-runtime |
Helpers voor installatieadapters | createEnvPatchedAccountSetupAdapter |
plugin-sdk/setup-tools |
Helpers voor installatietooling | formatCliCommand, detectBinary, extractArchive, resolveBrewExecutable, formatDocsLink, CONFIG_DIR |
plugin-sdk/account-core |
Helpers voor meerdere accounts | Helpers voor accountlijst/configuratie/actiegate |
plugin-sdk/account-id |
Helpers voor account-id | DEFAULT_ACCOUNT_ID, normalisatie van account-id |
plugin-sdk/account-resolution |
Helpers voor accountopzoeking | Helpers voor accountopzoeking en standaard-fallback |
plugin-sdk/account-helpers |
Smalle accounthelpers | Helpers voor accountlijst/accountactie |
plugin-sdk/channel-setup |
Adapters voor installatiewizard | createOptionalChannelSetupSurface, createOptionalChannelSetupAdapter, createOptionalChannelSetupWizard, plus DEFAULT_ACCOUNT_ID, createTopLevelChannelDmPolicy, setSetupChannelEnabled, splitSetupEntries |
plugin-sdk/channel-pairing |
Primitieven voor DM-koppeling | createChannelPairingController |
plugin-sdk/channel-reply-pipeline |
Bekabeling voor antwoordprefix, typen en bronlevering | createChannelReplyPipeline, resolveChannelSourceReplyDeliveryMode |
plugin-sdk/channel-config-helpers |
Fabrieken voor configuratieadapters en helpers voor DM-toegang | createHybridChannelConfigAdapter, resolveChannelDmAccess, resolveChannelDmAllowFrom, resolveChannelDmPolicy, normalizeChannelDmPolicy, normalizeLegacyDmAliases |
plugin-sdk/channel-config-schema |
Builders voor configuratieschema | Alleen gedeelde kanaalconfiguratie-schemaprimitieven en de generieke builder |
plugin-sdk/bundled-channel-config-schema |
Gebundelde configuratieschema's | Alleen door OpenClaw onderhouden gebundelde Plugins; nieuwe Plugins moeten Plugin-lokale schema's definiëren |
plugin-sdk/channel-config-schema-legacy |
Verouderde gebundelde configuratieschema's | Alleen compatibiliteitsalias; gebruik plugin-sdk/bundled-channel-config-schema voor onderhouden gebundelde Plugins |
plugin-sdk/telegram-command-config |
Helpers voor Telegram-opdrachtconfiguratie | Normalisatie van opdrachtnamen, inkorten van beschrijvingen, validatie van duplicaten/conflicten |
plugin-sdk/channel-policy |
Resolutie van groeps-/DM-beleid | resolveChannelGroupRequireMention |
plugin-sdk/channel-lifecycle |
Helpers voor accountstatus en lifecycle van conceptstream | createAccountStatusSink, helpers voor afronding van conceptvoorbeelden |
plugin-sdk/inbound-envelope |
Helpers voor inkomende enveloppen | Gedeelde route- en envelopbuilderhelpers |
plugin-sdk/inbound-reply-dispatch |
Helpers voor inkomende antwoorden | Gedeelde helpers voor registreren en dispatchen |
plugin-sdk/messaging-targets |
Parsen van berichtdoelen | Helpers voor parsen/matchen van doelen |
plugin-sdk/outbound-media |
Helpers voor uitgaande media | Gedeeld laden van uitgaande media |
plugin-sdk/outbound-send-deps |
Helpers voor afhankelijkheden van uitgaand verzenden | Lichtgewicht resolveOutboundSendDep-opzoeking zonder de volledige uitgaande runtime te importeren |
plugin-sdk/outbound-runtime |
Helpers voor uitgaande runtime | Helpers voor uitgaande levering, identiteit/verzenddelegatie, sessie, opmaak en payloadplanning |
plugin-sdk/thread-bindings-runtime |
Helpers voor thread-binding | Helpers voor lifecycle en adapters van thread-binding |
plugin-sdk/agent-media-payload |
Verouderde helpers voor media-payloads | Builder voor agentmedia-payload voor verouderde veldindelingen |
plugin-sdk/channel-runtime |
Verouderde compatibiliteitsshim | Alleen verouderde kanaalruntimehulpprogramma's |
plugin-sdk/channel-send-result |
Typen voor verzendresultaten | Typen voor antwoordresultaten |
plugin-sdk/runtime-store |
Persistente Plugin-opslag | createPluginRuntimeStore |
plugin-sdk/runtime |
Brede runtime-helpers | Helpers voor runtime/logging/back-up/Plugin-installatie |
plugin-sdk/runtime-env |
Smalle helpers voor runtime-omgeving | Logger/runtime-omgeving, timeout, retry en backoff-helpers |
plugin-sdk/plugin-runtime |
Gedeelde helpers voor Plugin-runtime | Helpers voor Plugin-opdrachten/hooks/http/interactief |
plugin-sdk/hook-runtime |
Helpers voor hook-pijplijn | Gedeelde helpers voor Webhook/interne hook-pijplijn |
plugin-sdk/lazy-runtime |
Helpers voor lazy runtime | createLazyRuntimeModule, createLazyRuntimeMethod, createLazyRuntimeMethodBinder, createLazyRuntimeNamedExport, createLazyRuntimeSurface |
plugin-sdk/process-runtime |
Proceshelpers | Gedeelde exec-helpers |
plugin-sdk/cli-runtime |
Helpers voor CLI-runtime | Opdrachtopmaak, wachttijden, versiehelpers |
plugin-sdk/gateway-runtime |
Gateway-helpers | Gateway-client, starthulp voor event-loop-ready en helpers voor kanaalstatuspatches |
plugin-sdk/config-runtime |
Verouderde shim voor configuratiecompatibiliteit | Geef de voorkeur aan config-types, plugin-config-runtime, runtime-config-snapshot en config-mutation |
plugin-sdk/telegram-command-config |
Helpers voor Telegram-opdrachten | Fallback-stabiele helpers voor validatie van Telegram-opdrachten wanneer het gebundelde Telegram-contractoppervlak niet beschikbaar is |
plugin-sdk/approval-runtime |
Helpers voor goedkeuringsprompt | Exec-/Plugin-goedkeuringspayload, helpers voor goedkeuringscapability/-profiel, native routing/runtime-helpers voor goedkeuring en gestructureerde opmaak van weergavepaden voor goedkeuring |
plugin-sdk/approval-auth-runtime |
Helpers voor goedkeuringsauthenticatie | Resolutie van goedkeurder, actieauthenticatie in dezelfde chat |
plugin-sdk/approval-client-runtime |
Helpers voor goedkeuringsclient | Native helpers voor exec-goedkeuringsprofiel/-filter |
plugin-sdk/approval-delivery-runtime |
Helpers voor goedkeuringslevering | Native adapters voor goedkeuringscapability/-levering |
plugin-sdk/approval-gateway-runtime |
Helpers voor goedkeurings-Gateway | Gedeelde helper voor Gateway-resolutie voor goedkeuring |
plugin-sdk/approval-handler-adapter-runtime |
Helpers voor goedkeuringsadapter | Lichtgewicht helpers voor het laden van native goedkeuringsadapters voor hot kanaal-entrypoints |
plugin-sdk/approval-handler-runtime |
Helpers voor goedkeuringshandler | Bredere runtime-helpers voor goedkeuringshandler; geef de voorkeur aan de smallere adapter-/Gateway-seams wanneer die genoeg zijn |
plugin-sdk/approval-native-runtime |
Helpers voor goedkeuringsdoel | Native helpers voor binding van goedkeuringsdoel/account |
plugin-sdk/approval-reply-runtime |
Helpers voor goedkeuringsantwoord | Helpers voor payload van exec-/Plugin-goedkeuringsantwoord |
plugin-sdk/channel-runtime-context |
Helpers voor kanaalruntimecontext | Generieke helpers voor registreren/ophalen/bewaken van kanaalruntimecontext |
plugin-sdk/security-runtime |
Beveiligingshelpers | Gedeelde helpers voor vertrouwen, DM-gating, root-begrensde bestanden/paden, externe content en geheimverzameling |
plugin-sdk/ssrf-policy |
Helpers voor SSRF-beleid | Helpers voor host-allowlist en privatenetwerkbeleid |
plugin-sdk/ssrf-runtime |
Helpers voor SSRF-runtime | Helpers voor vastgepinde dispatcher, bewaakte fetch en SSRF-beleid |
plugin-sdk/system-event-runtime |
Helpers voor systeemgebeurtenissen | enqueueSystemEvent, peekSystemEventEntries |
plugin-sdk/heartbeat-runtime |
Heartbeat-helpers | Helpers voor Heartbeat-gebeurtenissen en zichtbaarheid |
plugin-sdk/delivery-queue-runtime |
Helpers voor leveringswachtrij | drainPendingDeliveries |
plugin-sdk/channel-activity-runtime |
Helpers voor kanaalactiviteit | recordChannelActivity |
plugin-sdk/dedupe-runtime |
Helpers voor deduplicatie | In-memory deduplicatiecaches |
plugin-sdk/file-access-runtime |
Helpers voor bestandstoegang | Veilige helpers voor lokale bestands-/mediapaden |
plugin-sdk/transport-ready-runtime |
Helpers voor transportgereedheid | waitForTransportReady |
plugin-sdk/collection-runtime |
Helpers voor begrensde cache | pruneMapToMaxSize |
plugin-sdk/diagnostic-runtime |
Helpers voor diagnostische gating | isDiagnosticFlagEnabled, isDiagnosticsEnabled |
plugin-sdk/error-runtime |
Helpers voor foutopmaak | formatUncaughtError, isApprovalNotFoundError, helpers voor foutgrafen |
plugin-sdk/fetch-runtime |
Helpers voor omwikkelde fetch/proxy | resolveFetch, proxyhelpers, optiehelpers voor EnvHttpProxyAgent |
plugin-sdk/host-runtime |
Helpers voor hostnormalisatie | normalizeHostname, normalizeScpRemoteHost |
plugin-sdk/retry-runtime |
Retry-helpers | RetryConfig, retryAsync, policyrunners |
plugin-sdk/allow-from |
Allowlist-opmaak | formatAllowFromLowercase |
plugin-sdk/allowlist-resolution |
Mapping van allowlist-invoer | mapAllowlistResolutionInputs |
plugin-sdk/command-auth |
Opdracht-gating en helpers voor opdrachtoppervlak | resolveControlCommandGate, helpers voor afzenderautorisatie, helpers voor opdrachtregister inclusief opmaak van dynamische argumentmenu's |
plugin-sdk/command-status |
Renderers voor opdrachtstatus/help | buildCommandsMessage, buildCommandsMessagePaginated, buildHelpMessage |
plugin-sdk/secret-input |
Parsen van geheime invoer | Helpers voor geheime invoer |
plugin-sdk/webhook-ingress |
Helpers voor Webhook-verzoeken | Hulpprogramma's voor Webhook-doelen |
plugin-sdk/webhook-request-guards |
Helpers voor Webhook-bodyguards | Helpers voor lezen/limiteren van verzoekbody |
plugin-sdk/reply-runtime |
Gedeelde antwoordruntime | Inkomende dispatch, Heartbeat, antwoordplanner, chunking |
plugin-sdk/reply-dispatch-runtime |
Smalle helpers voor antwoorddispatch | Helpers voor afronden, providerdispatch en gesprekslabels |
plugin-sdk/reply-history |
Helpers voor antwoordgeschiedenis | buildHistoryContext, buildPendingHistoryContextFromMap, recordPendingHistoryEntry, clearHistoryEntriesIfEnabled |
plugin-sdk/reply-reference |
Planning van antwoordreferenties | createReplyReferencePlanner |
plugin-sdk/reply-chunking |
Helpers voor antwoordchunks | Helpers voor tekst-/markdownchunking |
plugin-sdk/session-store-runtime |
Helpers voor sessieopslag | Helpers voor opslagpad en bijgewerkt-op |
plugin-sdk/state-paths |
Helpers voor statuspaden | Helpers voor status- en OAuth-mappen |
plugin-sdk/routing |
Helpers voor routing/sessiesleutel | resolveAgentRoute, buildAgentSessionKey, resolveDefaultAgentBoundAccountId, helpers voor normalisatie van sessiesleutels |
plugin-sdk/status-helpers |
Helpers voor kanaalstatus | Builders voor samenvattingen van kanaal-/accountstatus, standaardwaarden voor runtime-status, helpers voor probleemmetadata |
plugin-sdk/target-resolver-runtime |
Helpers voor doelresolver | Gedeelde helpers voor doelresolver |
plugin-sdk/string-normalization-runtime |
Helpers voor tekenreeksnormalisatie | Helpers voor slug-/tekenreeksnormalisatie |
plugin-sdk/request-url |
Helpers voor verzoek-URL | Haal tekenreeks-URL's uit verzoekachtige invoer |
plugin-sdk/run-command |
Helpers voor getimede opdrachten | Runner voor getimede opdrachten met genormaliseerde stdout/stderr |
plugin-sdk/param-readers |
Paramlezers | Algemene paramlezers voor tooling/CLI |
plugin-sdk/tool-payload |
Tool-payloadextractie | Extraheer genormaliseerde payloads uit tool-resultaatobjecten |
plugin-sdk/tool-send |
Tool-sendextractie | Extraheer canonieke velden voor het verzenddoel uit tool-argumenten |
plugin-sdk/temp-path |
Helpers voor tijdelijke paden | Gedeelde padhelpers voor tijdelijke downloads |
plugin-sdk/logging-core |
Logginghelpers | Subsystemlogger en helpers voor redactie |
plugin-sdk/markdown-table-runtime |
Markdown-tabelhelpers | Helpers voor Markdown-tabelmodi |
plugin-sdk/reply-payload |
Berichtantwoordtypen | Typen voor antwoordpayloads |
plugin-sdk/provider-setup |
Samengestelde helpers voor lokale/zelfgehoste providerconfiguratie | Helpers voor detectie/configuratie van zelfgehoste providers |
plugin-sdk/self-hosted-provider-setup |
Gerichte OpenAI-compatibele helpers voor zelfgehoste providerconfiguratie | Dezelfde helpers voor detectie/configuratie van zelfgehoste providers |
plugin-sdk/provider-auth-runtime |
Helpers voor provider-runtimeauthenticatie | Runtimehelpers voor API-sleutelresolutie |
plugin-sdk/provider-auth-api-key |
Helpers voor provider-API-sleutelconfiguratie | Helpers voor onboarding/profielschrijven van API-sleutels |
plugin-sdk/provider-auth-result |
Helpers voor provider-authenticatieresultaten | Standaardbuilder voor OAuth-authenticatieresultaten |
plugin-sdk/provider-auth-login |
Helpers voor interactieve providerlogin | Gedeelde helpers voor interactieve login |
plugin-sdk/provider-selection-runtime |
Helpers voor providerselectie | Geconfigureerde-of-automatische providerselectie en samenvoegen van ruwe providerconfiguratie |
plugin-sdk/provider-env-vars |
Helpers voor provideromgevingsvariabelen | Helpers voor opzoeken van provider-authenticatieomgevingsvariabelen |
plugin-sdk/provider-model-shared |
Gedeelde helpers voor providermodel/replay | ProviderReplayFamily, buildProviderReplayFamilyHooks, normalizeModelCompat, gedeelde builders voor replaybeleid, helpers voor providerendpoints en helpers voor normalisatie van model-id's |
plugin-sdk/provider-catalog-shared |
Gedeelde helpers voor providercatalogus | findCatalogTemplate, buildSingleProviderApiKeyCatalog, buildManifestModelProviderConfig, supportsNativeStreamingUsageCompat, applyProviderNativeStreamingUsageCompat |
plugin-sdk/provider-onboard |
Patches voor provideronboarding | Helpers voor onboardingconfiguratie |
plugin-sdk/provider-http |
Provider-HTTP-helpers | Algemene helpers voor provider-HTTP/endpointmogelijkheden, inclusief multipart-formulierhelpers voor audiotranscriptie |
plugin-sdk/provider-web-fetch |
Helpers voor provider-web-fetch | Helpers voor registratie/cache van web-fetchproviders |
plugin-sdk/provider-web-search-config-contract |
Configuratiehelpers voor provider-web-search | Smalle configuratie-/credentialhelpers voor web-search voor providers die geen plugin-enable-bedrading nodig hebben |
plugin-sdk/provider-web-search-contract |
Contracthelpers voor provider-web-search | Smalle configuratie-/credentialcontracthelpers voor web-search, zoals createWebSearchProviderContractFields, enablePluginInConfig, resolveProviderWebSearchPluginConfig en gescopete credentialsetters/-getters |
plugin-sdk/provider-web-search |
Helpers voor provider-web-search | Helpers voor registratie/cache/runtime van web-searchproviders |
plugin-sdk/provider-tools |
Compatibiliteitshelpers voor providertools/schema's | ProviderToolCompatFamily, buildProviderToolCompatFamilyHooks, Gemini-schemaopschoning + diagnostiek, en xAI-compatibiliteitshelpers zoals resolveXaiModelCompatPatch / applyXaiModelCompat |
plugin-sdk/provider-usage |
Helpers voor providergebruik | fetchClaudeUsage, fetchGeminiUsage, fetchGithubCopilotUsage en andere helpers voor providergebruik |
plugin-sdk/provider-stream |
Helpers voor providerstream-wrappers | ProviderStreamFamily, buildProviderStreamFamilyHooks, composeProviderStreamWrappers, stream-wrappertypen en gedeelde wrapperhelpers voor Anthropic/Bedrock/DeepSeek V4/Google/Kilocode/Moonshot/OpenAI/OpenRouter/Z.A.I/MiniMax/Copilot |
plugin-sdk/provider-transport-runtime |
Helpers voor providertransport | Native providertransporthelpers zoals guarded fetch, transformaties van transportberichten en schrijfbare transporteventstreams |
plugin-sdk/keyed-async-queue |
Geordende async-wachtrij | KeyedAsyncQueue |
plugin-sdk/media-runtime |
Gedeelde mediahelpers | Helpers voor ophalen/transformeren/opslaan van media, door ffprobe ondersteunde detectie van videodimensies en mediapayloadbuilders |
plugin-sdk/media-generation-runtime |
Gedeelde helpers voor mediageneratie | Gedeelde failoverhelpers, kandidaatselectie en berichten voor ontbrekende modellen voor beeld-/video-/muziekgeneratie |
plugin-sdk/media-understanding |
Helpers voor mediabegrip | Providertypen voor mediabegrip plus providergerichte exports voor beeld-/audiohelpers |
plugin-sdk/text-runtime |
Gedeelde teksthelpers | Verwijderen van voor de assistant zichtbare tekst, helpers voor markdown-rendering/chunking/tabellen, redactietools, helpers voor directivetags, safe-text-hulpprogramma's en gerelateerde tekst-/logginghelpers |
plugin-sdk/text-chunking |
Tekstchunkinghelpers | Helper voor uitgaande tekstchunking |
plugin-sdk/speech |
Spraakhelpers | Spraakprovidertypen plus providergerichte helpers voor directives, registry en validatie, en een OpenAI-compatibele TTS-builder |
plugin-sdk/speech-core |
Gedeelde spraakkern | Spraakprovidertypen, registry, directives, normalisatie |
plugin-sdk/realtime-transcription |
Helpers voor realtime transcriptie | Providertypen, registryhelpers en gedeelde WebSocket-sessiehelper |
plugin-sdk/realtime-voice |
Helpers voor realtime stem | Providertypen, registry-/resolutiehelpers, bridgesessiehelpers, gedeelde agent-talk-back-wachtrijen, transcript-/eventgezondheid, echo-onderdrukking en snelle contextconsulthelpers |
plugin-sdk/image-generation |
Helpers voor beeldgeneratie | Beeldgeneratieprovidertypen plus helpers voor beeldassets/data-URL's en de OpenAI-compatibele beeldproviderbuilder |
plugin-sdk/image-generation-core |
Gedeelde kern voor beeldgeneratie | Typen voor beeldgeneratie, failover, auth en registryhelpers |
plugin-sdk/music-generation |
Helpers voor muziekgeneratie | Provider-/aanvraag-/resultaattypen voor muziekgeneratie |
plugin-sdk/music-generation-core |
Gedeelde kern voor muziekgeneratie | Typen voor muziekgeneratie, failoverhelpers, providerlookup en model-ref-parsing |
plugin-sdk/video-generation |
Helpers voor videogeneratie | Provider-/aanvraag-/resultaattypen voor videogeneratie |
plugin-sdk/video-generation-core |
Gedeelde kern voor videogeneratie | Typen voor videogeneratie, failoverhelpers, providerlookup en model-ref-parsing |
plugin-sdk/interactive-runtime |
Helpers voor interactieve antwoorden | Normalisatie/reductie van interactieve antwoordpayloads |
plugin-sdk/channel-config-primitives |
Primitieven voor kanaalconfiguratie | Smalle primitieven voor kanaalconfiguratieschema's |
plugin-sdk/channel-config-writes |
Helpers voor schrijven van kanaalconfiguratie | Autorisatiehelpers voor schrijven van kanaalconfiguratie |
plugin-sdk/channel-plugin-common |
Gedeelde kanaalprelude | Gedeelde prelude-exports voor kanaalplugins |
plugin-sdk/channel-status |
Helpers voor kanaalstatus | Gedeelde helpers voor kanaalstatussnapshots/-samenvattingen |
plugin-sdk/allowlist-config-edit |
Helpers voor allowlistconfiguratie | Helpers voor bewerken/lezen van allowlistconfiguratie |
plugin-sdk/group-access |
Helpers voor groepstoegang | Gedeelde beslissingshelpers voor groepstoegang |
plugin-sdk/direct-dm |
Helpers voor directe DM | Gedeelde auth-/guardhelpers voor directe DM |
plugin-sdk/extension-shared |
Gedeelde extensiehelpers | Primitieven voor passief-kanaal/status en ambient-proxyhelpers |
plugin-sdk/webhook-targets |
Webhook-doelhelpers | Webhook-doelregistry en helpers voor route-installatie |
plugin-sdk/webhook-path |
Webhook-padhelpers | Helpers voor Webhook-padnormalisatie |
plugin-sdk/web-media |
Gedeelde webmediahelpers | Helpers voor laden van externe/lokale media |
plugin-sdk/zod |
Zod-herexport | Geherexporteerde zod voor gebruikers van de plugin-SDK |
plugin-sdk/memory-core |
Gebundelde memory-core-helpers | Oppervlak voor memorymanager-/configuratie-/bestand-/CLI-helpers |
plugin-sdk/memory-core-engine-runtime |
Runtimefacade voor memory-engine | Runtimefacade voor memoryindex/-zoekfunctie |
plugin-sdk/memory-core-host-engine-foundation |
Memory-host foundation-engine | Exports voor memory-host foundation-engine |
plugin-sdk/memory-core-host-engine-embeddings |
Memory-host embedding-engine | Memory-embeddingcontracten, registrytoegang, lokale provider en algemene batch-/remotehelpers; concrete remoteproviders leven in hun eigen plugins |
plugin-sdk/memory-core-host-engine-qmd |
Memory-host QMD-engine | Exports voor memory-host QMD-engine |
plugin-sdk/memory-core-host-engine-storage |
Memory-host storage-engine | Exports voor memory-host storage-engine |
plugin-sdk/memory-core-host-multimodal |
Multimodale helpers voor memory-host | Multimodale helpers voor memory-host |
plugin-sdk/memory-core-host-query |
Queryhelpers voor memory-host | Queryhelpers voor memory-host |
plugin-sdk/memory-core-host-secret |
Geheimhelpers voor memory-host | Geheimhelpers voor memory-host |
plugin-sdk/memory-core-host-events |
Helpers voor eventjournal van memory-host | Helpers voor eventjournal van memory-host |
plugin-sdk/memory-core-host-status |
Statushelpers voor memory-host | Statushelpers voor memory-host |
plugin-sdk/memory-core-host-runtime-cli |
CLI-runtime voor memory-host | CLI-runtimehelpers voor memory-host |
plugin-sdk/memory-core-host-runtime-core |
Kernruntime voor memory-host | Kernruntimehelpers voor memory-host |
plugin-sdk/memory-core-host-runtime-files |
Bestands-/runtimehelpers voor memory-host | Bestands-/runtimehelpers voor memory-host |
plugin-sdk/memory-host-core |
Alias voor kernruntime van memory-host | Leverancieronafhankelijke alias voor kernruntimehelpers van memory-host |
plugin-sdk/memory-host-events |
Alias voor eventjournal van memory-host | Leverancieronafhankelijke alias voor helpers voor eventjournal van memory-host |
plugin-sdk/memory-host-files |
Alias voor bestanden/runtime van memory-host | Leverancieronafhankelijke alias voor bestands-/runtimehelpers van memory-host |
plugin-sdk/memory-host-markdown |
Beheerde markdownhelpers | Gedeelde managed-markdownhelpers voor memory-aangrenzende plugins |
plugin-sdk/memory-host-search |
Active memory-zoekfacade | Lazy runtimefacade voor active-memory-zoekmanager |
plugin-sdk/memory-host-status |
Alias voor status van memory-host | Leverancieronafhankelijke alias voor statushelpers van memory-host |
plugin-sdk/testing |
Testhulpprogramma's | Verouderde brede compatibiliteitsbarrel; geef de voorkeur aan gerichte test-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 |
Deze tabel is bewust de gemeenschappelijke migratiesubset, niet het volledige SDK-oppervlak. De volledige lijst met meer dan 200 entrypoints staat in
scripts/lib/plugin-sdk-entrypoints.json.
Gereserveerde helper-koppelvlakken voor gebundelde Plugins zijn uit de publieke SDK-exportmap verwijderd, behalve expliciet gedocumenteerde compatibiliteitsfacades zoals de verouderde plugin-sdk/discord-shim die behouden blijft voor het gepubliceerde
@openclaw/[email protected]-pakket. Eigenaarsspecifieke helpers staan binnen het eigenaar-Pluginpakket; gedeeld hostgedrag moet verlopen via generieke SDK-contracten 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 regel onder elk item koppelt de oude API aan de canonieke vervanging.
command-auth help-builders → command-status
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";
Mention-gatinghelpers → resolveInboundMentionDecision
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 aanroepen.
Downstream kanaal-Plugins (Slack, Discord, Matrix, MS Teams) zijn al overgestapt.
Channel runtime-shim en channel actions-helpers
openclaw/plugin-sdk/channel-runtime is een compatibiliteitsshim voor oudere
kanaal-Plugins. Importeer dit niet vanuit nieuwe code; gebruik
openclaw/plugin-sdk/channel-runtime-context voor het registreren van runtime-objecten.
channelActions*-helpers in openclaw/plugin-sdk/channel-actions zijn
deprecated naast ruwe "actions"-kanaalexports. Expose capabilities
in plaats daarvan via het semantische presentation-oppervlak - kanaal-Plugins
declareren wat ze renderen (kaarten, knoppen, selecties) in plaats van welke ruwe
actienamen ze accepteren.
Webzoekprovider tool()-helper → createTool() op de Plugin
Oud: tool()-factory uit openclaw/plugin-sdk/provider-web-search.
Nieuw: implementeer createTool(...) direct op de provider-Plugin.
OpenClaw heeft de SDK-helper niet meer nodig om de tool-wrapper te registreren.
Plaintext channel-envelopes → BodyForAgent
Oud: formatInboundEnvelope(...) (en
ChannelMessageForAgent.channelEnvelope) om een platte plaintext prompt-envelope
te bouwen uit inkomende kanaalberichten.
Nieuw: BodyForAgent plus gestructureerde gebruikerscontextblokken. Kanaal-Plugins
voegen routeringsmetadata (thread, topic, reply-to, reactions) toe als
getypte velden in plaats van ze aan elkaar te plakken in een promptstring. De
formatAgentEnvelope(...)-helper blijft ondersteund voor gesynthetiseerde
assistant-facing envelopes, maar inkomende plaintext envelopes verdwijnen
geleidelijk.
Betrokken gebieden: inbound_claim, message_received en elke aangepaste
kanaal-Plugin die channelEnvelope-tekst post-processed heeft.
Providerdiscovery-typen → providercatalogustypen
Vier discovery-typealiassen zijn nu dunne wrappers over de catalog-era typen:
| Oude alias | Nieuw type |
|---|---|
ProviderDiscoveryOrder |
ProviderCatalogOrder |
ProviderDiscoveryContext |
ProviderCatalogContext |
ProviderDiscoveryResult |
ProviderCatalogResult |
ProviderPluginDiscovery |
ProviderPluginCatalog |
Plus de legacy statische ProviderCapabilities-bag - provider-Plugins
moeten expliciete providerhooks gebruiken zoals buildReplayPolicy,
normalizeToolSchemas en wrapStreamFn in plaats van een statisch object.
Thinking-policyhooks → resolveThinkingProfile
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 verouderde opgeslagen waarden automatisch op basis van profielrang.
Implementeer één hook in plaats van drie. De legacy hooks blijven werken tijdens de deprecationperiode, maar worden niet samengevoegd met het profielresultaat.
Externe OAuth-providerfallback → contracts.externalAuthProviders
Oud: resolveExternalOAuthProfiles(...) implementeren zonder
de provider in het Pluginmanifest te declareren.
Nieuw: declareer contracts.externalAuthProviders in het Pluginmanifest
en implementeer resolveExternalAuthProfiles(...). Het oude "auth
fallback"-pad geeft tijdens runtime een waarschuwing en wordt verwijderd.
{
"contracts": {
"externalAuthProviders": ["anthropic", "openai"]
}
}
Provider env-var lookup → setup.providers[].envVars
Oud manifestveld: providerAuthEnvVars: { anthropic: ["ANTHROPIC_API_KEY"] }.
Nieuw: spiegel dezelfde env-var lookup naar setup.providers[].envVars
in het manifest. Dit consolideert setup/status-envmetadata op één
plek en voorkomt dat de Pluginruntime moet starten alleen om env-var
lookups te beantwoorden.
providerAuthEnvVars blijft ondersteund via een compatibiliteitsadapter
totdat de deprecationperiode sluit.
Memory Plugin-registratie → registerMemoryCapability
Oud: drie afzonderlijke aanroepen -
api.registerMemoryPromptSection(...),
api.registerMemoryFlushPlan(...),
api.registerMemoryRuntime(...).
Nieuw: één aanroep op de memory-state API -
registerMemoryCapability(pluginId, { promptBuilder, flushPlanResolver, runtime }).
Dezelfde slots, één registratieaanroep. Additieve memory-helpers
(registerMemoryPromptSupplement, registerMemoryCorpusSupplement,
registerMemoryEmbeddingProvider) worden niet beïnvloed.
Subagent session messages-typen hernoemd
Twee legacy typealiassen worden nog geëxporteerd vanuit src/plugins/runtime/types.ts:
| Oud | Nieuw |
|---|---|
SubagentReadSessionParams |
SubagentGetSessionMessagesParams |
SubagentReadSessionResult |
SubagentGetSessionMessagesResult |
De runtimemethode readSession is deprecated ten gunste van
getSessionMessages. Dezelfde signature; de oude methode roept door naar de
nieuwe.
runtime.tasks.flow → runtime.tasks.managedFlows
Oud: runtime.tasks.flow (enkelvoud) retourneerde een live task-flow accessor.
Nieuw: runtime.tasks.managedFlows behoudt de managed TaskFlow-mutatie
runtime voor Plugins die child tasks 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);
Ingebedde extension-factories → agent tool-result middleware
Behandeld in "Migreren → Pi tool-result extensions migreren naar
middleware" hierboven. Hier opgenomen voor volledigheid: het verwijderde Pi-only
api.registerEmbeddedExtensionFactory(...)-pad is vervangen door
api.registerAgentToolResultMiddleware(...) met een expliciete runtimelijst
in contracts.agentToolResultMiddleware.
OpenClawSchemaType-alias → OpenClawConfig
OpenClawSchemaType, opnieuw geëxporteerd vanuit 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";
Verwijderingstijdlijn
| Wanneer | Wat gebeurt er |
|---|---|
| Nu | Deprecated oppervlakken geven runtimewaarschuwingen |
| Volgende major release | Deprecated oppervlakken worden verwijderd; Plugins die ze nog gebruiken falen |
Alle core-Plugins zijn al gemigreerd. Externe Plugins moeten vóór de volgende major release migreren.
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
- Aan de slag - bouw je eerste Plugin
- SDK-overzicht - volledige importreferentie voor subpaden
- Kanaal-Plugins - kanaal-Plugins bouwen
- Provider-Plugins - provider-Plugins bouwen
- Plugin Internals - diepgaande architectuuruitleg
- Plugin Manifest - manifest-schemareferentie