cacheRead en cacheWrite wanneer de upstream-API die tellers rechtstreeks beschikbaar stelt.
Statusoppervlakken kunnen cachetellers ook herstellen uit het meest recente transcriptgebruiklogboek wanneer ze ontbreken in de live sessiesnapshot, zodat /status een cacheregel kan blijven tonen na gedeeltelijk verlies van sessiemetadata. Bestaande niet-nul live cachewaarden blijven voorrang houden op transcriptfallbackwaarden.
Waarom dit ertoe doet: lagere tokenkosten, snellere antwoorden en voorspelbaardere prestaties voor langlopende sessies. Zonder caching betalen herhaalde prompts bij elke beurt de volledige promptkosten, zelfs wanneer de meeste invoer niet is gewijzigd.
De secties hieronder behandelen elke cachegerelateerde knop die invloed heeft op prompt-hergebruik en tokenkosten.
Providerreferenties:
- Anthropic promptcaching: https://platform.claude.com/docs/en/build-with-claude/prompt-caching
- OpenAI promptcaching: https://developers.openai.com/api/docs/guides/prompt-caching
- OpenAI API-headers en aanvraag-ID’s: https://developers.openai.com/api/reference/overview
- Anthropic aanvraag-ID’s en fouten: https://platform.claude.com/docs/en/api/errors
Primaire knoppen
cacheRetention (globale standaard, model en per agent)
Stel cachebehoud in als globale standaard voor alle modellen:
agents.defaults.params(globale standaard — geldt voor alle modellen)agents.defaults.models["provider/model"].params(overschrijving per model)agents.list[].params(overeenkomende agent-id; overschrijft per sleutel)
contextPruning.mode: "cache-ttl"
Snoeit oude toolresultaatcontext na cache-TTL-vensters, zodat aanvragen na inactiviteit geen te grote geschiedenis opnieuw cachen.
Heartbeat warm houden
Heartbeat kan cachevensters warm houden en herhaalde cachewrites na perioden van inactiviteit verminderen.agents.list[].heartbeat.
Providergedrag
Anthropic (directe API)
cacheRetentionwordt ondersteund.- Met Anthropic API-sleutel-authprofielen stelt OpenClaw
cacheRetention: "short"in voor Anthropic-modelrefs wanneer dit niet is ingesteld. - Native Anthropic Messages-antwoorden stellen zowel
cache_read_input_tokensalscache_creation_input_tokensbeschikbaar, zodat OpenClaw zowelcacheReadalscacheWritekan tonen. - Voor native Anthropic-aanvragen wordt
cacheRetention: "short"toegewezen aan de standaard 5-minuten tijdelijke cache, encacheRetention: "long"upgrade alleen op directeapi.anthropic.com-hosts naar de TTL van 1 uur.
OpenAI (directe API)
- Promptcaching is automatisch op ondersteunde recente modellen. OpenClaw hoeft geen cachemarkeringen op blokniveau te injecteren.
- OpenClaw gebruikt
prompt_cache_keyom cacherouting over beurten heen stabiel te houden. Directe OpenAI-hosts gebruikenprompt_cache_retention: "24h"wanneercacheRetention: "long"is geselecteerd. - OpenAI-compatibele Completions-providers ontvangen
prompt_cache_keyalleen wanneer hun modelconfiguratie explicietcompat.supportsPromptCacheKey: trueinstelt. Doorsturen van lang behoud is een aparte mogelijkheid: explicietecacheRetention: "long"verzendtprompt_cache_retention: "24h"alleen wanneer die compat-entry ook lang cachebehoud ondersteunt. Providers zoals Mistral kunnen zich aanmelden voor cachesleutels terwijl zecompat.supportsLongCacheRetention: falseinstellen om het veld voor lang behoud te onderdrukken.cacheRetention: "none"onderdrukt beide velden. - OpenAI-antwoorden stellen gecachte prompttokens beschikbaar via
usage.prompt_tokens_details.cached_tokens(ofinput_tokens_details.cached_tokensop Responses API-events). OpenClaw wijst dat toe aancacheRead. - GPT-5.6 Responses-gebruik kan ook
input_tokens_details.cache_write_tokensbeschikbaar stellen. OpenClaw wijst dat toe aancacheWriteen prijst het tegen het cachewrite-tarief van het model; Responses die het veld weglaten houdencacheWriteop0. - OpenAI retourneert nuttige traceer- en rate-limit-headers zoals
x-request-id,openai-processing-msenx-ratelimit-*, maar cache-hitboekhouding moet uit de gebruikspayload komen, niet uit headers. - In de praktijk gedraagt OpenAI zich vaak als een initiële-voorvoegselcache in plaats van Anthropic-achtig bewegend volledig-geschiedenis-hergebruik. Stabiele tekstbeurten met lange voorvoegsels kunnen in huidige liveprobes dicht bij een plateau van
4864gecachte tokens uitkomen, terwijl toolzware of MCP-achtige transcripten vaak rond4608gecachte tokens plateauën, zelfs bij exacte herhalingen.
Anthropic Vertex
- Anthropic-modellen op Vertex AI (
anthropic-vertex/*) ondersteunencacheRetentionop dezelfde manier als direct Anthropic. cacheRetention: "long"wordt toegewezen aan de echte promptcache-TTL van 1 uur op Vertex AI-eindpunten.- Standaard cachebehoud voor
anthropic-vertexkomt overeen met directe Anthropic-standaarden. - Vertex-aanvragen worden gerouteerd via grensbewuste cachevorming, zodat cachehergebruik afgestemd blijft op wat providers daadwerkelijk ontvangen.
Amazon Bedrock
- Anthropic Claude-modelrefs (
amazon-bedrock/*anthropic.claude*) ondersteunen explicietecacheRetention-doorgifte. - Niet-Anthropic Bedrock-modellen worden tijdens runtime geforceerd naar
cacheRetention: "none".
OpenRouter-modellen
Vooropenrouter/anthropic/*-modelrefs injecteert OpenClaw Anthropic
cache_control op systeem-/ontwikkelaarspromptblokken om promptcachehergebruik
te verbeteren, alleen wanneer de aanvraag nog steeds op een geverifieerde
OpenRouter-route is gericht (openrouter op het standaardeindpunt, of elke
provider/basis-URL die naar openrouter.ai resolveert).
Voor openrouter/deepseek/*, openrouter/moonshot*/* en openrouter/zai/*
-modelrefs is contextPruning.mode: "cache-ttl" toegestaan omdat OpenRouter
promptcaching aan providerzijde automatisch afhandelt. OpenClaw injecteert geen
Anthropic cache_control-markeringen in die aanvragen.
DeepSeek-cacheopbouw is best-effort en kan een paar seconden duren. Een
onmiddellijke vervolgaanvraag kan nog steeds cached_tokens: 0 tonen; verifieer
met een herhaalde aanvraag met hetzelfde voorvoegsel na een korte vertraging en
gebruik usage.prompt_tokens_details.cached_tokens als cache-hit-signaal.
Als je het model naar een willekeurige OpenAI-compatibele proxy-URL laat wijzen,
stopt OpenClaw met het injecteren van die OpenRouter-specifieke Anthropic-cachemarkeringen.
Andere providers
Als de provider deze cachemodus niet ondersteunt, heeftcacheRetention geen effect.
Google Gemini directe API
- Direct Gemini-transport (
api: "google-generative-ai") rapporteert cachehits via upstreamcachedContentTokenCount; OpenClaw wijst dat toe aancacheRead. - Wanneer
cacheRetentionis ingesteld op een direct Gemini-model, maakt, hergebruikt en vernieuwt OpenClaw automatischcachedContents-resources voor systeemprompts op Google AI Studio-runs. Dit betekent dat je niet langer handmatig vooraf een cached-content-handle hoeft te maken. - Je kunt nog steeds een vooraf bestaande Gemini cached-content-handle doorgeven
als
params.cachedContent(of legacyparams.cached_content) op het geconfigureerde model. - Dit staat los van Anthropic/OpenAI promptvoorvoegselcaching. Voor Gemini
beheert OpenClaw een provider-native
cachedContents-resource in plaats van cachemarkeringen in de aanvraag te injecteren.
Gemini CLI-gebruik
- Gemini CLI
stream-json-uitvoer kan cachehits viastats.cachedtonen; OpenClaw wijst dat toe aancacheRead. Legacy--output-format json-overschrijvingen gebruiken dezelfde gebruiksnormalisatie. - Als de CLI een directe
stats.input-waarde weglaat, leidt OpenClaw invoertokens af uitstats.input_tokens - stats.cached. - Dit is alleen gebruiksnormalisatie. Het betekent niet dat OpenClaw Anthropic/OpenAI-achtige promptcachemarkeringen voor Gemini CLI maakt.
Cachegrens voor systeemprompts
OpenClaw splitst de systeemprompt in een stabiel voorvoegsel en een vluchtig achtervoegsel, gescheiden door een interne cachevoorvoegselgrens. Inhoud boven de grens (tooldefinities, Skills-metadata, workspacebestanden en andere relatief statische context) wordt geordend zodat die byte-identiek blijft over beurten heen. Inhoud onder de grens (bijvoorbeeldHEARTBEAT.md, runtime-tijdstempels en
andere metadata per beurt) mag veranderen zonder het gecachte voorvoegsel ongeldig
te maken.
Belangrijke ontwerpkeuzes:
- Stabiele workspace projectcontextbestanden worden vóór
HEARTBEAT.mdgeordend, zodat Heartbeat-wijzigingen het stabiele voorvoegsel niet breken. - De grens wordt toegepast op Anthropic-familie-, OpenAI-familie-, Google- en CLI-transportvorming, zodat alle ondersteunde providers profiteren van dezelfde voorvoegselstabiliteit.
- Codex Responses- en Anthropic Vertex-aanvragen worden gerouteerd via grensbewuste cachevorming, zodat cachehergebruik afgestemd blijft op wat providers daadwerkelijk ontvangen.
- Systeempromptvingerafdrukken worden genormaliseerd (witruimte, regeleinden, door hooks toegevoegde context, ordening van runtimecapaciteiten), zodat semantisch ongewijzigde prompts KV/cache delen over beurten heen.
cacheWrite-pieken ziet na een configuratie- of workspacewijziging,
controleer dan of de wijziging boven of onder de cachegrens terechtkomt. Vluchtige
inhoud onder de grens plaatsen (of stabiliseren) lost het probleem vaak op.
Cache-stabiliteitswaarborgen van OpenClaw
OpenClaw houdt ook verschillende cachegevoelige payloadvormen deterministisch voordat de aanvraag de provider bereikt:- Bundle MCP-toolcatalogi worden deterministisch gesorteerd vóór toolregistratie,
zodat wijzigingen in
listTools()-volgorde het toolsblok niet laten schommelen en promptcachevoorvoegsels breken. - Legacy-sessies met persistente afbeeldingsblokken houden de 3 meest recente voltooide beurten intact; oudere al verwerkte afbeeldingsblokken kunnen worden vervangen door een markering, zodat afbeeldingszware vervolgaanvragen niet steeds grote verouderde payloads opnieuw blijven verzenden.
Afstemmingspatronen
Gemengd verkeer (aanbevolen standaard)
Houd een langlevende baseline op je hoofdagent, schakel caching uit op bursty notificatieagents:Kosten-eerst-baseline
- Stel baseline
cacheRetention: "short"in. - Schakel
contextPruning.mode: "cache-ttl"in. - Houd Heartbeat alleen onder je TTL voor agents die profiteren van warme caches.
Cachediagnostiek
OpenClaw stelt speciale cachetrace-diagnostiek beschikbaar voor ingebedde agentruns. Voor normale gebruikersgerichte diagnostiek kunnen/status en andere gebruikssamenvattingen
de nieuwste transcriptgebruikentry gebruiken als fallbackbron voor cacheRead /
cacheWrite wanneer de live sessie-entry die tellers niet heeft.
Live regressietests
OpenClaw houdt één gecombineerde live cacheregressiegate bij voor herhaalde voorvoegsels, toolbeurten, afbeeldingsbeurten, MCP-achtige tooltranscripten en een Anthropic no-cache-controle.src/agents/live-cache-regression.live.test.tssrc/agents/live-cache-regression-baseline.ts
Anthropic-liveverwachtingen
- Verwacht expliciete warmup-schrijfbewerkingen via
cacheWrite. - Verwacht bijna volledig hergebruik van de geschiedenis bij herhaalde beurten, omdat Anthropic cache control het cachebreekpunt door het gesprek heen opschuift.
- Huidige live-assertions gebruiken nog steeds hoge drempels voor trefferpercentages voor stabiele, tool- en afbeeldingspaden.
OpenAI-liveverwachtingen
- Verwacht alleen
cacheRead.cacheWriteblijft0. - Behandel cachehergebruik bij herhaalde beurten als een providerspecifiek plateau, niet als hergebruik van de volledige geschiedenis op de bewegende Anthropic-manier.
- Huidige live-assertions gebruiken conservatieve ondergrenscontroles die zijn afgeleid van waargenomen live gedrag op
gpt-5.4-mini:- stabiel prefix:
cacheRead >= 4608, trefferpercentage>= 0.90 - tooltranscript:
cacheRead >= 4096, trefferpercentage>= 0.85 - afbeeldingstranscript:
cacheRead >= 3840, trefferpercentage>= 0.82 - MCP-achtig transcript:
cacheRead >= 4096, trefferpercentage>= 0.85
- stabiel prefix:
- stabiel prefix:
cacheRead=4864, trefferpercentage0.966 - tooltranscript:
cacheRead=4608, trefferpercentage0.896 - afbeeldingstranscript:
cacheRead=4864, trefferpercentage0.954 - MCP-achtig transcript:
cacheRead=4608, trefferpercentage0.891
88s.
Waarom de assertions verschillen:
- Anthropic stelt expliciete cachebreekpunten en bewegend hergebruik van gespreksgeschiedenis beschikbaar.
- OpenAI prompt caching blijft gevoelig voor exacte prefixes, maar het effectieve herbruikbare prefix in live Responses-verkeer kan eerder een plateau bereiken dan de volledige prompt.
- Daardoor veroorzaakt het vergelijken van Anthropic en OpenAI met één procentuele drempel voor alle providers valse regressies.
diagnostics.cacheTrace-configuratie
filePath:$OPENCLAW_STATE_DIR/logs/cache-trace.jsonlincludeMessages:trueincludePrompt:trueincludeSystem:true
Env-schakelaars (eenmalig debuggen)
OPENCLAW_CACHE_TRACE=1schakelt cachetracing in.OPENCLAW_CACHE_TRACE_FILE=/path/to/cache-trace.jsonloverschrijft het uitvoerpad.OPENCLAW_CACHE_TRACE_MESSAGES=0|1schakelt het vastleggen van de volledige berichtpayload om.OPENCLAW_CACHE_TRACE_PROMPT=0|1schakelt het vastleggen van prompttekst om.OPENCLAW_CACHE_TRACE_SYSTEM=0|1schakelt het vastleggen van de systeemprompt om.
Wat te inspecteren
- Cachetrace-events zijn JSONL en bevatten staged snapshots zoals
session:loaded,prompt:before,stream:contextensession:after. - De impact van cachetokens per beurt is zichtbaar in normale gebruiksoppervlakken via
cacheReadencacheWrite(bijvoorbeeld/usage tokens,/status, sessiegebruiksamenvattingen en aangepastemessages.usageTemplate-layouts). - Verwacht voor Anthropic zowel
cacheReadalscacheWritewanneer caching actief is. - Verwacht voor OpenAI
cacheReadbij cachetreffers. GPT-5.6 Responses kan ookcacheWriterapporteren terwijl promptsegmenten worden geschreven; andere Responses-payloads die de schrijfteller weglaten, houden die op0. - Als je requesttracing nodig hebt, log dan request-ID’s en rate-limit-headers apart van cachemetrieken. De huidige cachetrace-uitvoer van OpenClaw is gericht op prompt-/sessievorm en genormaliseerd tokengebruik in plaats van ruwe provider-responseheaders.
Snel problemen oplossen
- Hoge
cacheWriteop de meeste beurten: controleer op vluchtige systeempromptinvoer en verifieer dat model/provider je cache-instellingen ondersteunt. - Hoge
cacheWriteop Anthropic: betekent vaak dat het cachebreekpunt terechtkomt op inhoud die bij elk request verandert. - Lage OpenAI
cacheRead: verifieer dat het stabiele prefix vooraan staat, dat het herhaalde prefix minstens 1024 tokens is en dat dezelfdeprompt_cache_keywordt hergebruikt voor beurten die een cache zouden moeten delen. - Geen effect van
cacheRetention: bevestig dat de modelsleutel overeenkomt metagents.defaults.models["provider/model"]. - Bedrock Nova/Mistral-requests met cache-instellingen: verwachte runtimeforce naar
none.