Als de upstreamservice een normale HTTP-model-API aanbiedt, schrijf dan in plaats daarvan een
providerplugin. Als de upstream-
runtime volledige agentsessies, toolgebeurtenissen, compaction of de status van achtergrondtaken
beheert, gebruik dan een agentharnas.
Wat de plugin beheert
Een CLI-backendplugin heeft drie contracten:
Het manifest bevat detectiemetadata: het voert de CLI niet uit en registreert geen
runtimegedrag. Het runtimegedrag begint wanneer het pluginentrypoint
api.registerCliBackend(...) aanroept.
Minimale backendplugin
1
Pakketmetadata maken
package.json
./src/index.ts is, voeg dan openclaw.runtimeExtensions toe dat verwijst naar de
gebouwde JavaScript-tegenhanger. Zie Entrypoints.2
Backendeigenaarschap declareren
openclaw.plugin.json
cliBackends is de lijst met runtime-eigenaarschap; hiermee kan OpenClaw de
plugin automatisch laden wanneer de modelselectie of agentRuntime.id acme-cli vermeldt.setup.cliBackends is het descriptorgerichte instellingsoppervlak. Voeg dit toe wanneer
modeldetectie, onboarding of status de backend moet herkennen
zonder de pluginruntime te laden. Gebruik requiresRuntime: false alleen wanneer
die statische descriptors voldoende zijn voor de instelling.3
De backend registreren
index.ts
cliBackends. De geregistreerde
adapter is gezaghebbende plugincode; de OpenClaw-configuratie selecteert de backend,
maar herschrijft het opdrachtcontract ervan niet.Configuratiestructuur
CliBackendConfig beschrijft hoe OpenClaw de CLI moet starten en parseren. Het
uitgewerkte voorbeeld hierboven gebruikt bewust dezelfde opdracht-, hervattings-, JSONL-,
modelalias-, sessie-, afbeeldings- en watchdogvelden als de gebundelde
google-gemini-cli-adapter:
Geef de voorkeur aan de kleinste statische configuratie die bij de CLI past. Voeg alleen
plugincallbacks toe voor gedrag dat echt bij de backend hoort.
Geavanceerde backendhooks
CliBackendPlugin kan ook het volgende definiëren:
Houd deze hooks in beheer van de provider. Voeg geen CLI-specifieke vertakkingen toe aan de kern wanneer
een backendhook het gedrag kan uitdrukken.
prepareExecution(ctx) ontvangt ctx.contextTokenBudget, de effectieve tokenlimiet
die voor de uitvoering is geselecteerd. Backends die native Compaction beheren, kunnen dat
budget koppelen aan hun CLI-specifieke startcontract.
runtimeArtifact is eigendom van de plugin. Het wordt
alleen geraadpleegd wanneer een live inferentiebeurt geverifieerde setupbevoegdheid aanmaakt of opnieuw valideert;
normale CLI-uitvoeringen vereisen dit niet. Een backend zonder deze declaratie kan
geen geverifieerde CLI-setupbevoegdheid aanmaken. Een declaratie van bundled-package-tree benoemt
de exacte eigenaar van package.json en vereist dat het pakket-entrypoint de
opdracht is. OpenClaw hasht de begrensde, volledige geïnstalleerde pakketstructuur, inclusief
geneste afhankelijkheden, en sluit bij fouten af voor omleidende symbolische koppelingen,
startprogramma’s buiten het gedeclareerde pakket, declaraties van vereiste externe
afhankelijkheden, te grote structuren en onbekende scripts. Declareer dit alleen wanneer die
structuur de volledige inferentie-implementatie bevat; optionele toolintegraties
maken een externe implementatiegraaf niet veilig.
Als dezelfde backend ook een zelfstandig native uitvoerbaar bestand levert, vermeld dan de
canonieke basisnamen ervan in nativeExecutableNames. Andere native opdrachten blijven
niet-geverifieerd.
ctx.executionMode is "agent" voor normale beurten en "side-question" voor
tijdelijke /btw-aanroepen. Gebruik dit wanneer de CLI andere eenmalige vlaggen nodig heeft,
zoals het uitschakelen van native tools, sessiepersistentie of hervattingsgedrag voor
BTW. Als een backend normaal nativeToolMode: "always-on" heeft, maar de argv voor
nevenvragen die tools betrouwbaar uitschakelt, stel dan ook
sideQuestionToolMode: "disabled" in; anders sluit OpenClaw bij fouten af wanneer BTW
een CLI-uitvoering zonder tools vereist.
Stel nativeToolMode: "selectable" alleen in wanneer de backend elke
backend-native tool voor een afzonderlijke uitvoering kan uitschakelen. Beperkte uitvoeringen ontvangen een canoniek
contract: ctx.toolAvailability.native is de exacte backend-native lijst en
ctx.toolAvailability.openClaw is de exacte lijst met OpenClaw-toolnamen. De
host beperkt onafhankelijk de gegenereerde MCP-configuratie en toekenning tot die
OpenClaw-lijst; plugins mogen deze niet in de kern vertalen of transportvoorvoegsels toevoegen.
Declareer hoe de backend dat contract afdwingt:
toolAvailabilityEnforcement: "execution-args"vereistresolveExecutionArgs. De hook moet conflicterende toolvlaggen vervangen, aanpassingsmogelijkheden uitschakelen die buiten de geselecteerde tools kunnen worden uitgevoerd, en afdwingende argv retourneren voor zowel nieuwe als hervatte uitvoeringen.toolAvailabilityEnforcement: "prepare-execution"vereistprepareExecution. De hook moet een exact beleid per uitvoering klaarzetten entoolAvailabilityEnforced: trueretourneren; ontbrekende bevestiging leidt tot afsluiten bij fouten en OpenClaw ruimt de klaargezette resources vóór het starten op.
toolsAllow worden door
OpenClaw genormaliseerd en per groep uitgebreid voordat dit contract wordt opgebouwd. Native tools worden uitgeschakeld en een
backend zonder een volledig gedeclareerd handhavingspad faalt vóór uitvoering.
Plugins die zijn gebouwd tegen v2026.7.2-beta.1 tot en met v2026.7.2-beta.3 kunnen nog steeds
de verouderde projectie van transportnamen ctx.toolAvailability.mcp lezen en
mogen toolAvailabilityEnforcement weglaten wanneer een selecteerbare backend
resolveExecutionArgs implementeert. OpenClaw herkent dat uitgebrachte bètapad aan de
vereiste openclaw.build.openclawVersion-metadata van het pluginpakket en
behoudt het gedurende de 2026.8.x-reeks. Nieuwe en bijgewerkte plugins moeten canonieke
ctx.toolAvailability.openClaw-namen gebruiken en
toolAvailabilityEnforcement: "execution-args" expliciet declareren; het
bètacompatibiliteitspad wordt na die periode verwijderd.
ownsNativeCompaction: afzien van OpenClaw Compaction
Als je backend een agent uitvoert die zijn eigen transcript comprimeert, stel dan
ownsNativeCompaction: true in, zodat de beveiligende samenvatter van OpenClaw nooit
op de sessies ervan wordt uitgevoerd: de CLI-Compaction-levenscyclus doet niets en de
beurt gaat verder. claude-cli declareert dit omdat Claude Code intern comprimeert
zonder harness-endpoint. Native harness-sessies zoals Codex
blijven in plaats daarvan naar hun harness-Compaction-endpoint routeren.
Declareer dit alleen wanneer aan alle volgende voorwaarden wordt voldaan, anders kan een uitgestelde
sessie die het budget overschrijdt boven het budget blijven of verouderd raken (OpenClaw
herstelt deze niet langer):
- de backend comprimeert of begrenst zijn eigen transcript betrouwbaar wanneer het venster bijna vol is;
- de backend bewaart een hervatbare sessie, zodat de gecomprimeerde toestand tussen beurten behouden blijft
(bijvoorbeeld
--resume/--session-id); - het is geen native harness-Compaction-sessie: overeenkomende
agentHarnessId-sessies worden in plaats daarvan naar het harness-endpoint gerouteerd.
MCP-toolbridge
CLI-backends ontvangen standaard geen OpenClaw-tools. Als de CLI een MCP-configuratie kan verwerken, meld je dan expliciet aan:
Schakel de bridge alleen in wanneer de CLI deze daadwerkelijk kan verwerken. Als de CLI
een eigen ingebouwde toollaag heeft die niet kan worden uitgeschakeld, stel dan
nativeToolMode: "always-on" in, zodat OpenClaw bij fouten kan afsluiten wanneer een aanroeper geen native
tools vereist. Als elke native tool per uitvoering kan worden uitgeschakeld, gebruik dan "selectable" met het
bovenstaande resolveExecutionArgs-contract.
De backend selecteren
Gebruikers selecteren een zelfstandige backend via het modelrefvoorvoegsel ervan. Een backend die een canoniekemodelProvider declareert, kan in plaats daarvan worden geselecteerd via de
agentRuntime.id van dat providermodel. De adaptermechanica blijft in de plugin:
PATH van de Gateway-service bevindt; implementaties die een
ander pad of andere argv nodig hebben, moeten de pluginregistratie wijzigen of omwikkelen.
Verificatie
Voeg voor gebundelde plugins een gerichte test toe rond de builder en setupregistratie en voer daarna de gerichte testbaan van de plugin uit:Controlelijst
package.json heeft openclaw.extensions en gebouwde runtime-entrypoints voor gepubliceerde pakkettenopenclaw.plugin.json declareert cliBackends en doelbewuste activation.onStartupsetup.cliBackends is aanwezig wanneer setup/modeldetectie de backend koud moet kunnen zienapi.registerCliBackend(...) gebruikt dezelfde backend-id als het manifestHet backendmodelvoorvoegsel of de modelgebonden
agentRuntime.id selecteert de registratieInstellingen voor sessie, systeemprompt, afbeelding en uitvoerparser komen overeen met het echte CLI-contract
Gerichte tests en ten minste één live CLI-rooktest tonen het backendpad aan
Gerelateerd
- CLI-backends - runtimeselectie en gedrag
- Plugins bouwen - basisprincipes van pakketten en manifesten
- Overzicht van de Plugin-SDK - API-referentie voor registratie
- Pluginmanifest -
cliBackendsen setupbeschrijvingen - Agent-harness - volledige externe agentruntimes