api.runtime-object dat tijdens registratie in elke plugin wordt geinjecteerd. Gebruik deze helpers in plaats van host-internals rechtstreeks te importeren.
Channel plugins
Stapsgewijze handleiding die deze helpers in context gebruikt voor kanaalplugins.
Provider plugins
Stapsgewijze handleiding die deze helpers in context gebruikt voor providerplugins.
Configuratie laden en schrijven
Geef de voorkeur aan configuratie die al is doorgegeven aan het actieve aanroeppad, bijvoorbeeldapi.config tijdens registratie of een cfg-argument bij kanaal-/providercallbacks. Zo blijft er een processnapshot door het werk stromen in plaats van configuratie opnieuw te parsen op prestatiekritieke paden.
Gebruik api.runtime.config.current() alleen wanneer een langlevende handler de huidige processnapshot nodig heeft en er geen configuratie aan die functie is doorgegeven. De geretourneerde waarde is alleen-lezen; kloon deze of gebruik een mutatiehelper voordat je bewerkingen uitvoert.
Toolfactories ontvangen ctx.runtimeConfig plus ctx.getRuntimeConfig(). Gebruik de getter binnen de execute-callback van een langlevende tool wanneer configuratie kan wijzigen nadat de tooldefinitie is gemaakt.
Sla wijzigingen op met api.runtime.config.mutateConfigFile(...) of api.runtime.config.replaceConfigFile(...). Elke schrijfactie moet een expliciet afterWrite-beleid kiezen:
afterWrite: { mode: "auto" }laat de herlaadplanner van de Gateway beslissen.afterWrite: { mode: "restart", reason: "..." }forceert een schone herstart wanneer de schrijver weet dat hot reload onveilig is.afterWrite: { mode: "none", reason: "..." }onderdrukt automatisch herladen/herstarten alleen wanneer de aanroeper eigenaar is van de opvolging.
afterWrite plus een getypte followUp-samenvatting, zodat aanroepers kunnen loggen of testen of ze een herstart hebben aangevraagd. De Gateway blijft eigenaar van wanneer die herstart daadwerkelijk plaatsvindt.
api.runtime.config.loadConfig() en api.runtime.config.writeConfigFile(...) zijn verouderde compatibiliteitshelpers onder runtime-config-load-write. Ze waarschuwen eenmalig tijdens runtime en blijven beschikbaar voor oude externe plugins tijdens het migratievenster. Gebundelde plugins mogen ze niet gebruiken; de configuratiegrensbewakers falen als plugincode ze aanroept of die helpers importeert vanuit subpaden van de plugin-SDK.
Gebruik voor rechtstreekse SDK-imports de gerichte configuratiesubpaden in plaats van de brede
openclaw/plugin-sdk/config-runtime-compatibiliteitsbarrel: config-contracts voor
typen, plugin-config-runtime voor assertions op al geladen configuratie en lookup van
plugin-entry’s, runtime-config-snapshot voor huidige processnapshots, en
config-mutation voor schrijfacties. Tests voor gebundelde plugins moeten deze gerichte
subpaden rechtstreeks mocken in plaats van de brede compatibiliteitsbarrel te mocken.
Interne OpenClaw-runtimecode heeft dezelfde richting: laad configuratie eenmalig bij de CLI-, Gateway- of procesgrens, en geef die waarde daarna door. Geslaagde mutatieschrijfacties verversen de procesruntimesnapshot en verhogen de interne revisie; langlevende caches moeten de runtime-eigen cachesleutel gebruiken in plaats van configuratie lokaal te serialiseren. Langlevende runtimemodules hebben een nultolerantiescanner voor omgevingsaanroepen naar loadConfig(); gebruik een doorgegeven cfg, een request-context.getRuntimeConfig(), of getRuntimeConfig() aan een expliciete procesgrens.
Provider- en kanaaluitvoeringspaden moeten de actieve runtimeconfiguratiesnapshot gebruiken, niet een bestandssnapshot die is geretourneerd voor configuratieteruglezing of bewerking. Bestandssnapshots behouden bronwaarden zoals SecretRef-markeringen voor UI en schrijfacties; providercallbacks hebben de opgeloste runtimeweergave nodig. Wanneer een helper kan worden aangeroepen met de actieve bronsnapshot of de actieve runtimesnapshot, routeer dan via selectApplicableRuntimeConfig() voordat credentials worden gelezen.
Herbruikbare runtimehulpprogramma’s
Gebruik inkomendebotLoopProtection-feiten voor door bots geschreven inkomende berichten. Core past de gedeelde in-memory sliding-window-bewaker toe voor sessieregistratie en dispatch, zonder het beleid aan een kanaal te koppelen. De bewaker volgt (scopeId, conversationId, participant pair)-sleutels, telt beide richtingen van een paar samen, past een cooldown toe zodra het vensterbudget is overschreden, en ruimt opportunistisch inactieve items op.
Kanaalplugins die dit gedrag aan operators blootstellen, moeten bij voorkeur de gedeelde channels.defaults.botLoopProtection-vorm gebruiken voor basisbudgetten, en daarbovenop kanaal-/providerspecifieke overrides leggen. De gedeelde configuratie gebruikt seconden omdat deze gebruikersgericht is:
enabled-semantiek op:
openclaw/plugin-sdk/pair-loop-guard-runtime alleen rechtstreeks voor aangepaste
tweepartij-eventloops die niet via de gedeelde inkomende-antwoordrunner lopen.
Runtime-namespaces
api.runtime.agent
api.runtime.agent
Agentidentiteit, mappen en sessiebeheer.Geef de voorkeur aan
runEmbeddedAgent(...) is de neutrale helper om een normale OpenClaw-agentbeurt vanuit plugincode te starten. Deze gebruikt dezelfde provider-/modelresolutie en agent-harnessselectie als door kanalen getriggerde antwoorden.runEmbeddedPiAgent(...) blijft bestaan als verouderde compatibiliteitsalias voor bestaande plugins. Nieuwe code moet runEmbeddedAgent(...) gebruiken.resolveThinkingPolicy(...) retourneert de door de provider/het model ondersteunde denkniveaus en een optionele standaardwaarde. Providerplugins zijn eigenaar van het modelspecifieke profiel via hun thinking-hooks, dus toolplugins moeten deze runtimehelper aanroepen in plaats van providerlijsten te importeren of te dupliceren.normalizeThinkingLevel(...) converteert gebruikerstekst zoals on, x-high of extra high naar het canonieke opgeslagen niveau voordat dit wordt gecontroleerd tegen het opgeloste beleid.Sessiestorehelpers staan onder api.runtime.agent.session:getSessionEntry(...), listSessionEntries(...), patchSessionEntry(...) of upsertSessionEntry(...) voor sessieworkflows. Deze helpers adresseren sessies op basis van agent-/sessie-identiteit, zodat plugins niet afhankelijk zijn van de oude opslagvorm sessions.json. Gebruik preserveActivity: true voor patches die alleen metadata wijzigen en geen sessieactiviteit mogen verversen, en replaceEntry: true alleen wanneer de callback een volledig item retourneert en verwijderde velden verwijderd moeten blijven.Gebruik runWithWorkAdmission(...) wanneer een plugin werk start op een opgeslagen sessie. De callback wijst gearchiveerde of gelijktijdig vervangen sessies af, houdt archiveer-/reset-/verwijdermutaties gecoordineerd tot voltooiing, en ontvangt een AbortSignal dat moet worden doorgestuurd naar de agentrun.Importeer voor transcriptlees- en schrijfacties openclaw/plugin-sdk/session-transcript-runtime en gebruik resolveSessionTranscriptIdentity(...), resolveSessionTranscriptTarget(...), readSessionTranscriptEvents(...), appendSessionTranscriptMessageByIdentity(...), publishSessionTranscriptUpdateByIdentity(...) of withSessionTranscriptWriteLock(...) met { agentId, sessionKey, sessionId }. Met deze API’s kunnen plugins een transcript identificeren, de events ervan lezen, berichten toevoegen, updates publiceren en gerelateerde bewerkingen uitvoeren onder dezelfde transcriptschrijflock. Het doorgeven van sessionFile, het gebruik van resolveSessionTranscriptLegacyFileTarget(...), of het importeren van low-level appendSessionTranscriptMessage(...) / emitSessionTranscriptUpdate(...) uit openclaw/plugin-sdk/agent-harness-runtime is verouderd; die paden bestaan alleen voor legacycode die al een actief transcriptartefact ontvangt.loadSessionStore(...), saveSessionStore(...), updateSessionStore(...), resolveSessionFilePath(...) en resolveAndPersistSessionFile(...) zijn verouderde compatibiliteitshelpers voor plugins die nog bewust afhankelijk zijn van de legacyvorm voor de volledige store of het transcriptbestand. Nieuwe plugincode mag die helpers niet gebruiken, en bestaande aanroepers moeten migreren naar entryhelpers en transcriptidentiteitshelpers.api.runtime.agent.defaults
api.runtime.agent.defaults
Standaardmodel- en providerconstanten:
api.runtime.llm
api.runtime.llm
Voer een host-eigen tekstaanvulling uit zonder provider-internals te importeren of
OpenClaw-model-/auth-/basis-URL-voorbereiding te dupliceren.De helper gebruikt hetzelfde eenvoudige-aanvullingsvoorbereidingspad als de
ingebouwde runtime van OpenClaw en de host-eigen runtimeconfiguratiesnapshot. Contextengines
ontvangen een sessiegebonden
llm.complete-capability, zodat modelaanroepen de
agent van de actieve sessie gebruiken en niet stilzwijgend terugvallen op de standaardagent. Het
resultaat bevat provider-/model-/agenttoeschrijving plus genormaliseerd token-,
cache- en geschat kostengebruik wanneer beschikbaar.api.runtime.subagent
api.runtime.subagent
Start en beheer subagent-runs op de achtergrond.
deleteSession(...) kan sessies verwijderen die door dezelfde plugin zijn aangemaakt via api.runtime.subagent.run(...). Het verwijderen van willekeurige gebruikers- of operatorsessies vereist nog steeds een Gateway-verzoek met admin-scope.api.runtime.nodes
api.runtime.nodes
Vermeld verbonden nodes en roep een opdracht op de node-host aan vanuit plugincode die door Gateway is geladen of vanuit Plugin CLI-opdrachten. Gebruik dit wanneer een plugin lokaal werk op een gekoppeld apparaat beheert, bijvoorbeeld een browser- of audiobridge op een andere Mac.Binnen de Gateway draait deze runtime in-process. In Plugin CLI-opdrachten roept deze de geconfigureerde Gateway via RPC aan, zodat opdrachten zoals
openclaw googlemeet recover-tab gekoppelde nodes vanuit de terminal kunnen inspecteren. Node-opdrachten verlopen nog steeds via normale Gateway-nodekoppeling, allowlists voor opdrachten, pluginbeleid voor node-aanroepen en lokale opdrachtafhandeling op de node.Plugins die gevaarlijke node-hostopdrachten aanbieden, moeten een beleid voor node-aanroepen registreren met api.registerNodeInvokePolicy(...). Het beleid draait in de Gateway na controles van de allowlist voor opdrachten en voordat de opdracht naar de node wordt doorgestuurd, zodat directe node.invoke-aanroepen en plugintools op hoger niveau hetzelfde handhavingspad delen.api.runtime.tasks.managedFlows
api.runtime.tasks.managedFlows
Bind een Task Flow-runtime aan een bestaande OpenClaw-sessiesleutel of vertrouwde toolcontext, en maak en beheer vervolgens Task Flows zonder bij elke aanroep een eigenaar door te geven.Task Flow houdt duurzame workflowstatus met meerdere stappen bij. Het is geen scheduler:
gebruik Cron of Gebruik
api.session.workflow.scheduleSessionTurn(...) voor toekomstige
wake-ups, en gebruik daarna managedFlows vanuit de geplande beurt wanneer dat werk
flowstatus, child-taken, waits of annulering nodig heeft.bindSession({ sessionKey, requesterOrigin }) wanneer je al een vertrouwde OpenClaw-sessiesleutel uit je eigen bindingslaag hebt. Bind niet vanuit ruwe gebruikersinvoer.api.runtime.tts
api.runtime.tts
Tekst-naar-spraak-synthese.Gebruikt de kernconfiguratie
messages.tts en providerselectie. Retourneert PCM-audiobuffer + samplefrequentie.api.runtime.mediaUnderstanding
api.runtime.mediaUnderstanding
Analyse van afbeeldingen, audio en video.Retourneert
{ text: undefined } wanneer er geen uitvoer wordt geproduceerd (bijvoorbeeld overgeslagen invoer).api.runtime.stt.transcribeAudioFile(...) blijft beschikbaar als compatibiliteitsalias voor api.runtime.mediaUnderstanding.transcribeAudioFile(...).api.runtime.imageGeneration
api.runtime.imageGeneration
Afbeeldingen genereren.
api.runtime.webSearch
api.runtime.webSearch
Webzoekopdracht.
api.runtime.media
api.runtime.media
Low-level mediahulpprogramma’s.
api.runtime.config
api.runtime.config
Huidige runtime-configsnapshot en transactionele configschrijfacties. Geef de voorkeur aan
config die al aan het actieve aanroeppad is doorgegeven; gebruik
current() alleen wanneer de handler de processnapshot direct nodig heeft.mutateConfigFile(...) en replaceConfigFile(...) retourneren een followUp-
waarde, bijvoorbeeld { mode: "restart", requiresRestart: true, reason },
die de intentie van de schrijver vastlegt zonder restartcontrole weg te nemen bij de
gateway.api.runtime.system
api.runtime.system
Hulpprogramma’s op systeemniveau.
runCommandWithTimeout(...) retourneert vastgelegde stdout en stderr, optionele
afkappingsaantallen, code, signal, killed, termination en
noOutputTimedOut. Resultaten voor timeout en geen-output-timeout rapporteren code: 124
wanneer het childproces geen niet-nul afsluitcode levert. Signaalafsluitingen
zonder timeout kunnen nog steeds code: null retourneren, dus gebruik termination en
noOutputTimedOut om timeoutredenen te onderscheiden.api.runtime.events
api.runtime.events
Eventabonnementen.
api.runtime.logging
api.runtime.logging
Logging.
api.runtime.modelAuth
api.runtime.modelAuth
Authenticatieresolutie voor modellen en providers.
api.runtime.state
api.runtime.state
Oplossing van de statusmap en SQLite-ondersteunde opslag met sleutels.Opslagplaatsen met sleutels overleven herstarts en zijn geïsoleerd door de runtime-gebonden Plugin-id. Gebruik
registerIfAbsent(...) voor atomaire deduplicatieclaims: dit retourneert true wanneer de sleutel ontbrak of verlopen was en is geregistreerd, of false wanneer er al een actieve waarde bestaat zonder de waarde, aanmaaktijd of TTL te overschrijven. Limieten: maxEntries per namespace, 6.000 actieve rijen per Plugin, JSON-waarden kleiner dan 64 KB en optionele TTL-vervaldatum. Wanneer een schrijfactie de rijlimiet van de Plugin zou overschrijden, kan de runtime de oudste actieve rijen verwijderen uit de namespace waarnaar wordt geschreven; naastliggende namespaces worden niet voor die schrijfactie verwijderd, en de schrijfactie mislukt alsnog als de namespace niet genoeg rijen kan vrijmaken.api.runtime.tools
api.runtime.tools
Fabrieken voor geheugentools en CLI.
api.runtime.channel
api.runtime.channel
Kanaalspecifieke runtime-helpers (beschikbaar wanneer een kanaalplugin is geladen).Gebruik Beschikbare vermeldingshelpers:
api.runtime.channel.media is het voorkeursoppervlak voor downloads en opslag van kanaalmedia:saveRemoteMedia(...) wanneer een externe URL OpenClaw-media moet worden. Gebruik saveResponseMedia(...) wanneer de plugin al een Response heeft opgehaald met plugin-eigen auth-, redirect- of allowlist-afhandeling. Gebruik readRemoteMediaBuffer(...) alleen wanneer de plugin ruwe bytes nodig heeft voor inspectie, transformaties, decryptie of opnieuw uploaden. fetchRemoteMedia(...) blijft een verouderde compatibiliteitsalias voor readRemoteMediaBuffer(...).api.runtime.channel.mentions is het gedeelde oppervlak voor beleid voor inkomende vermeldingen voor gebundelde kanaalplugins die runtime-injectie gebruiken:buildMentionRegexesmatchesMentionPatternsmatchesMentionWithExplicitimplicitMentionKindWhenresolveInboundMentionDecision
api.runtime.channel.mentions stelt bewust niet de oudere compatibiliteitshelpers resolveMentionGating* beschikbaar. Geef de voorkeur aan het genormaliseerde pad { facts, policy }.Runtime-referenties opslaan
GebruikcreatePluginRuntimeStore om de runtime-referentie op te slaan voor gebruik buiten de callback register:
Geef de voorkeur aan
pluginId voor de identiteit van de runtime-store. De lager-niveau vorm key is bedoeld voor ongebruikelijke gevallen waarin één plugin bewust meer dan één runtime-slot nodig heeft.Andere top-level api-velden
Naast api.runtime biedt het API-object ook:
Plugin-id.
Weergavenaam van de Plugin.
Huidige configuratiesnapshot (actieve in-memory runtimesnapshot wanneer beschikbaar).
Pluginspecifieke configuratie uit
plugins.entries.<id>.config.Scoped logger (
debug, info, warn, error).Huidige laadmodus;
"setup-runtime" is het lichte opstart-/setupvenster vóór de volledige entry.Los een pad op ten opzichte van de pluginroot.
Gerelateerd
- Plugin-internals — capaciteitsmodel en registry
- SDK-entrypoints — opties voor
definePluginEntry - SDK-overzicht — subpadreferentie