cacheRead और cacheWrite में सामान्यीकृत करता है। जब लाइव सत्र स्नैपशॉट में कैश काउंटर नहीं होते, तो उपयोग सारांश (/status और इसी तरह के अन्य) अंतिम ट्रांस्क्रिप्ट उपयोग प्रविष्टि का फ़ॉलबैक के रूप में उपयोग करते हैं; शून्य से अधिक लाइव मान को हमेशा फ़ॉलबैक पर प्राथमिकता मिलती है।
प्रदाता संदर्भ:
मुख्य नियंत्रण
cacheRetention
मान: "none" | "short" | "long"। इसे वैश्विक डिफ़ॉल्ट के रूप में, प्रत्येक मॉडल के लिए और प्रत्येक एजेंट के लिए कॉन्फ़िगर किया जा सकता है।
"standard" कोई उपनाम नहीं है; प्रदाता की डिफ़ॉल्ट कैश अवधि के लिए "short" का उपयोग करें। अमान्य मान चेतावनी के साथ अनदेखे कर दिए जाते हैं।
agents.defaults.params- सभी मॉडलों के लिए वैश्विक डिफ़ॉल्टagents.defaults.models["provider/model"].params- प्रति-मॉडल ओवरराइडagents.entries.*.params- एजेंट आईडी से मिलान किया गया प्रति-एजेंट ओवरराइड
src/agents/embedded-agent-runner/extra-params.ts (resolveExtraParams)।
contextPruning.mode: "cache-ttl"
कैश TTL अवधि बीतने के बाद पुराने टूल-परिणाम संदर्भ की छँटाई करता है, ताकि निष्क्रियता के बाद का अनुरोध अत्यधिक बड़े इतिहास को फिर से कैश न करे।
Heartbeat को सक्रिय रखना
Heartbeat कैश अवधियों को सक्रिय रख सकता है और निष्क्रिय अंतराल के बाद बार-बार होने वाले कैश लेखन को कम कर सकता है। इसे वैश्विक रूप से (agents.defaults.heartbeat) या प्रति एजेंट (agents.entries.*.heartbeat) कॉन्फ़िगर किया जा सकता है।
प्रदाता व्यवहार
Anthropic (प्रत्यक्ष API और Vertex AI)
cacheRetention,anthropicऔरanthropic-vertexप्रदाताओं के लिए समर्थित है, तथाamazon-bedrockऔर कस्टमanthropic-messages-संगत एंडपॉइंट पर Claude मॉडलों के लिए भी, जबcacheRetentionस्पष्ट रूप से सेट हो।- सेट न होने पर, OpenClaw प्रत्यक्ष Anthropic के लिए
cacheRetention: "short"आरंभिक मान के रूप में देता है (केवलanthropicऔरanthropic-vertexप्रदाता; अन्य Anthropic-परिवार रूट के लिए स्पष्ट मान आवश्यक है)। - मूल Anthropic Messages प्रतिक्रियाएँ
cache_read_input_tokensऔरcache_creation_input_tokensउपलब्ध कराती हैं, जिन्हेंcacheReadऔरcacheWriteमें मैप किया जाता है। cacheRetention: "short"डिफ़ॉल्ट 5-मिनट के अस्थायी कैश में मैप होता है। स्पष्ट रूप से सेट किए जाने परcacheRetention: "long", 1-घंटे के TTL (cache_control: { type: "ephemeral", ttl: "1h" }) का अनुरोध करता है। अंतर्निहित/पर्यावरण-चालित दीर्घ प्रतिधारण (OPENCLAW_CACHE_RETENTION=longबिना स्पष्टcacheRetentionके) केवलapi.anthropic.comया Vertex AI (aiplatform.googleapis.com/*-aiplatform.googleapis.com) होस्ट पर 1-घंटे के TTL में अपग्रेड होता है; अन्य होस्ट 5-मिनट का कैश बनाए रखते हैं।
packages/ai/src/transports/anthropic-payload-policy.ts (resolveAnthropicEphemeralCacheControl, isLongTtlEligibleEndpoint)।
OpenAI (प्रत्यक्ष API)
- समर्थित हालिया मॉडलों पर प्रॉम्प्ट कैशिंग स्वचालित है; OpenClaw ब्लॉक-स्तरीय कैश मार्कर प्रविष्ट नहीं करता।
- अलग-अलग टर्न में कैश रूटिंग स्थिर रखने के लिए OpenClaw
prompt_cache_keyभेजता है। प्रत्यक्षapi.openai.comहोस्ट को यह स्वचालित रूप से मिलता है। OpenAI-संगत प्रॉक्सी (oMLX, llama.cpp, कस्टम एंडपॉइंट) को ऑप्ट इन करने के लिए मॉडल कॉन्फ़िगरेशन मेंcompat.supportsPromptCacheKey: trueकी आवश्यकता होती है - प्रॉक्सी के लिए इसका कभी भी स्वचालित रूप से पता नहीं लगाया जाता। prompt_cache_retention: "24h"केवल तभी जोड़ा जाता है जबcacheRetention: "long"चुना गया हो और समाधान किया गया एंडपॉइंट कैश कुंजी और दीर्घ प्रतिधारण दोनों का समर्थन करता हो (compat.supportsLongCacheRetention, डिफ़ॉल्ट रूप से सत्य; Together AI और Cloudflare संगतता प्रोफ़ाइल इसे अक्षम करती हैं)।cacheRetention: "none"दोनों फ़ील्ड को रोकता है।- कैश हिट
usage.prompt_tokens_details.cached_tokens(Chat Completions) याinput_tokens_details.cached_tokens(Responses API) के माध्यम से दिखाई देते हैं, जिन्हेंcacheReadमें मैप किया जाता है। - Responses API पेलोड
input_tokens_details.cache_write_tokensभी उपलब्ध करा सकते हैं, जिसेcacheWriteमें मैप किया जाता है और मॉडल की कैश-लेखन दर पर मूल्यांकित किया जाता है; इस फ़ील्ड को छोड़ने वाले Responses पेलोड मेंcacheWrite,0पर रहता है। OpenAI का Chat Completions API किसीcache_write_tokensकाउंटर का दस्तावेज़ीकरण या उत्सर्जन नहीं करता, लेकिन अलग लेखन संख्या रिपोर्ट करने वाले OpenRouter-संगत और DeepSeek-शैली के प्रॉक्सी के लिए OpenClaw वहाँ भीprompt_tokens_details.cache_write_tokensपढ़ता है। - व्यवहार में, OpenAI, Anthropic के गतिशील पूर्ण-इतिहास पुनः उपयोग की तुलना में आरंभिक-उपसर्ग कैश जैसा अधिक व्यवहार करता है - नीचे OpenAI लाइव अपेक्षाएँ देखें।
Amazon Bedrock
- Anthropic Claude मॉडल संदर्भ (
amazon-bedrock/*anthropic.claude*, साथ ही AWS सिस्टम अनुमान प्रोफ़ाइल उपसर्गus./eu./global.anthropic.claude*) स्पष्टcacheRetentionपास-थ्रू का समर्थन करते हैं। - गैर-Anthropic Bedrock मॉडल (उदाहरण के लिए
amazon.nova-*) किसी भी कॉन्फ़िगर किए गएcacheRetentionमान की परवाह किए बिना, रनटाइम पर बिना कैश प्रतिधारण के समाधान होते हैं। - अपारदर्शी Bedrock अनुप्रयोग अनुमान प्रोफ़ाइल ARN (ऐसी प्रोफ़ाइल आईडी जिनमें
claudeनहीं है) भी बिना कैश प्रतिधारण के समाधान होते हैं, जब तक किcacheRetentionस्पष्ट रूप से सेट न हो, क्योंकि केवल ARN से मॉडल परिवार का अनुमान नहीं लगाया जा सकता।
OpenRouter
openrouter/anthropic/* मॉडल संदर्भों के लिए, OpenClaw सिस्टम/डेवलपर प्रॉम्प्ट ब्लॉक पर Anthropic cache_control मार्कर प्रविष्ट करता है, लेकिन केवल तब जब अनुरोध अब भी सत्यापित OpenRouter रूट को लक्षित करता है (अपने डिफ़ॉल्ट एंडपॉइंट पर openrouter, या कोई भी प्रदाता/आधार URL जो openrouter.ai में समाधान होता है)। मॉडल को किसी मनमाने OpenAI-संगत प्रॉक्सी URL पर पुनः इंगित करने से यह प्रविष्टि रुक जाती है।
contextPruning.mode: "cache-ttl", openrouter/anthropic/*, openrouter/deepseek/*, openrouter/moonshot/*, openrouter/moonshotai/*, और openrouter/zai/* मॉडल संदर्भों के लिए अनुमत है, क्योंकि ये रूट OpenClaw के प्रविष्ट किए गए मार्करों की आवश्यकता के बिना प्रदाता-पक्षीय प्रॉम्प्ट कैशिंग संभालते हैं।
स्रोत: extensions/openrouter/index.ts (OPENROUTER_CACHE_TTL_MODEL_PREFIXES)।
OpenRouter पर DeepSeek कैश निर्माण सर्वोत्तम-प्रयास पर आधारित है और इसमें कुछ सेकंड लग सकते हैं; तुरंत किया गया अगला अनुरोध अब भी cached_tokens: 0 दिखा सकता है। थोड़े विलंब के बाद समान उपसर्ग वाले दोहराए गए अनुरोध से सत्यापित करें और कैश-हिट संकेत के रूप में usage.prompt_tokens_details.cached_tokens का उपयोग करें।
Google Gemini (प्रत्यक्ष API)
- प्रत्यक्ष Gemini ट्रांसपोर्ट (
api: "google-generative-ai") अपस्ट्रीमcachedContentTokenCountके माध्यम से कैश हिट रिपोर्ट करता है, जिसेcacheReadमें मैप किया जाता है। - पात्र मॉडल परिवार:
gemini-2.5*औरgemini-3*(उस उपसर्ग मिलान से बाहर के Live/पूर्वावलोकन प्रकारों को छोड़कर, उदाहरण के लिएgemini-live-2.5-flash-preview)। - किसी पात्र मॉडल पर
cacheRetentionसेट होने पर, OpenClaw सिस्टम प्रॉम्प्ट के लिए स्वचालित रूप से एकcachedContentsसंसाधन बनाता, पुनः उपयोग करता और रीफ़्रेश करता है - किसी मैन्युअल कैश-सामग्री हैंडल की आवश्यकता नहीं। TTL,cacheRetention: "short"के लिए300sऔर"long"के लिए3600sहै। - आप अब भी पहले से मौजूद Gemini कैश-सामग्री हैंडल को
params.cachedContent(या पुरानेparams.cached_content) के रूप में पास कर सकते हैं; स्पष्ट हैंडल स्वचालित कैश-प्रबंधन पथ को पूरी तरह छोड़ देता है। - यह Anthropic/OpenAI प्रॉम्प्ट-उपसर्ग कैशिंग से अलग है: OpenClaw इनलाइन कैश मार्कर प्रविष्ट करने के बजाय Gemini के लिए प्रदाता-मूल
cachedContentsसंसाधन का प्रबंधन करता है।
src/agents/embedded-agent-runner/google-prompt-cache.ts।
CLI-हार्नेस प्रदाता (Claude Code, Gemini CLI)
JSONL उपयोग इवेंट (jsonlDialect: "claude-stream-json" या "gemini-stream-json") उत्सर्जित करने वाले CLI बैकएंड साझा उपयोग पार्सर से गुजरते हैं, जो कई फ़ील्ड-नाम प्रकारों को पहचानता है, जिनमें cacheRead में मैप किया गया साधारण cached काउंटर भी शामिल है। जब CLI के JSON पेलोड में प्रत्यक्ष इनपुट-टोकन फ़ील्ड नहीं होता, तो OpenClaw इसे input_tokens - cached के रूप में व्युत्पन्न करता है। यह केवल उपयोग सामान्यीकरण है - यह इन CLI-चालित मॉडलों के लिए Anthropic/OpenAI-शैली के प्रॉम्प्ट-कैश मार्कर नहीं बनाता।
स्रोत: src/agents/cli-output.ts (toCliUsage)।
अन्य प्रदाता
यदि कोई प्रदाता उपरोक्त कैश मोड में से किसी का समर्थन नहीं करता, तोcacheRetention का कोई प्रभाव नहीं होता।
सिस्टम-प्रॉम्प्ट कैश सीमा
OpenClaw सिस्टम प्रॉम्प्ट को एक आंतरिक कैश-उपसर्ग सीमा पर स्थिर उपसर्ग और परिवर्तनशील प्रत्यय में विभाजित करता है। सीमा के ऊपर की सामग्री (टूल परिभाषाएँ, Skills मेटाडेटा, कार्यस्थान फ़ाइलें) को टर्न के बीच बाइट-समान बनाए रखने के लिए क्रमबद्ध किया जाता है। सीमा के नीचे की सामग्री (उदाहरण के लिएHEARTBEAT.md, रनटाइम टाइमस्टैम्प, अन्य प्रति-टर्न मेटाडेटा) कैश किए गए उपसर्ग को अमान्य किए बिना बदल सकती है।
मुख्य डिज़ाइन विकल्प:
- स्थिर कार्यस्थान परियोजना-संदर्भ फ़ाइलों को
HEARTBEAT.mdसे पहले क्रमबद्ध किया जाता है, ताकि Heartbeat का बदलाव स्थिर उपसर्ग को अमान्य न करे। - यह सीमा Anthropic-परिवार, OpenAI-परिवार, Google और CLI ट्रांसपोर्ट संरचना में लागू होती है, जिससे सभी समर्थित प्रदाताओं को समान उपसर्ग स्थिरता का लाभ मिलता है।
- Codex Responses और Anthropic Vertex अनुरोधों को सीमा-जागरूक कैश संरचना से रूट किया जाता है, ताकि कैश पुनः उपयोग प्रदाताओं को वास्तव में मिलने वाली सामग्री के अनुरूप रहे।
- सिस्टम-प्रॉम्प्ट फ़िंगरप्रिंट सामान्यीकृत किए जाते हैं (रिक्त स्थान, पंक्ति अंत, हुक द्वारा जोड़ा गया संदर्भ, रनटाइम क्षमता क्रम), ताकि अर्थ की दृष्टि से अपरिवर्तित प्रॉम्प्ट अलग-अलग टर्न में समान कैश साझा करें।
cacheWrite उछाल दिखाई दें, तो जाँचें कि परिवर्तन कैश सीमा के ऊपर आता है या नीचे। परिवर्तनशील सामग्री को सीमा के नीचे ले जाने (या उसे स्थिर करने) से आम तौर पर समस्या हल हो जाती है।
OpenClaw कैश-स्थिरता सुरक्षा उपाय
- बंडल किए गए MCP टूल कैटलॉग को टूल पंजीकरण से पहले नियतात्मक रूप से क्रमबद्ध किया जाता है (पहले सर्वर नाम, फिर टूल नाम के आधार पर), ताकि
listTools()क्रम में परिवर्तन टूल ब्लॉक को बार-बार न बदलें और प्रॉम्प्ट-कैश उपसर्गों को अमान्य न करें। - स्थायी छवि ब्लॉक वाले पुराने सत्र 3 सबसे हालिया पूर्ण टर्न अक्षुण्ण रखते हैं (सभी पूर्ण टर्न गिने जाते हैं, केवल छवियों वाले नहीं)। पहले से संसाधित पुराने छवि ब्लॉक को टेक्स्ट मार्कर से बदल दिया जाता है, ताकि अधिक छवियों वाले अनुवर्ती अनुरोध बड़े पुराने पेलोड को बार-बार न भेजते रहें।
ट्यूनिंग पैटर्न
मिश्रित ट्रैफ़िक (अनुशंसित डिफ़ॉल्ट)
अपने मुख्य एजेंट पर दीर्घकालिक आधाररेखा बनाए रखें और अचानक अधिक सक्रिय होने वाले सूचक एजेंटों पर कैशिंग अक्षम करें:लागत-प्रथम आधाररेखा
- आधाररेखा
cacheRetention: "short"सेट करें। contextPruning.mode: "cache-ttl"सक्षम करें।- केवल उन एजेंटों के लिए Heartbeat को अपने TTL से कम रखें जिन्हें सक्रिय कैश से लाभ मिलता है।
लाइव रिग्रेशन परीक्षण
OpenClaw एक संयुक्त लाइव कैश रिग्रेशन गेट चलाता है, जिसमें दोहराए गए उपसर्ग, टूल टर्न, छवि टर्न, MCP-शैली के टूल ट्रांस्क्रिप्ट और Anthropic का बिना-कैश नियंत्रण शामिल हैं।src/agents/live-cache-regression.live.test.tssrc/agents/live-cache-regression-runner.tssrc/agents/live-cache-regression-baseline.ts
Anthropic की लाइव अपेक्षाएँ
cacheWriteके माध्यम से स्पष्ट वार्मअप राइट की अपेक्षा करें।- दोहराए गए टर्न में लगभग पूरे इतिहास के पुनः उपयोग की अपेक्षा करें, क्योंकि Anthropic का कैश नियंत्रण पूरी बातचीत में कैश ब्रेकपॉइंट को आगे बढ़ाता है।
- स्थिर, टूल, इमेज और MCP-शैली लेन की बेसलाइन न्यूनतम सीमाएँ कठोर रिग्रेशन गेट हैं।
OpenAI की लाइव अपेक्षाएँ
- केवल
cacheReadकी अपेक्षा करें; Chat Completions परcacheWrite,0बना रहता है। - दोहराए गए टर्न में कैश के पुनः उपयोग को प्रदाता-विशिष्ट स्थिर स्तर मानें, न कि Anthropic-शैली में आगे बढ़ते पूरे इतिहास का पुनः उपयोग।
- न्यूनतम सीमाएँ केवल निगरानी के लिए हैं (चूक चेतावनी के रूप में लॉग होती है, परीक्षण विफलता के रूप में नहीं), जो
gpt-5.4-miniपर देखे गए लाइव व्यवहार से प्राप्त हैं:
सबसे हाल में देखी गई बेसलाइन संख्याएँ (
live-cache-regression-baseline.ts से) इन मानों पर पहुँचीं: स्थिर प्रीफ़िक्स cacheRead=4864, हिट दर 0.966; टूल ट्रांसक्रिप्ट cacheRead=4608, हिट दर 0.896; इमेज ट्रांसक्रिप्ट cacheRead=4864, हिट दर 0.954; MCP-शैली ट्रांसक्रिप्ट cacheRead=4608, हिट दर 0.891।
अभिकथन अलग होने का कारण: Anthropic स्पष्ट कैश ब्रेकपॉइंट और आगे बढ़ते बातचीत-इतिहास का पुनः उपयोग उजागर करता है, जबकि लाइव ट्रैफ़िक में OpenAI का प्रभावी पुनः उपयोग योग्य प्रीफ़िक्स पूरे प्रॉम्प्ट से पहले ही स्थिर स्तर पर पहुँच सकता है। दोनों प्रदाताओं की तुलना एकल अंतर-प्रदाता प्रतिशत सीमा से करने पर गलत रिग्रेशन उत्पन्न होते हैं।
diagnostics.cacheTrace कॉन्फ़िगरेशन
परिवेश टॉगल (एकबारगी डीबगिंग)
क्या जाँचें
- कैश ट्रेस इवेंट JSONL होते हैं, जिनमें
session:loaded,prompt:before,stream:contextऔरsession:afterजैसे चरणबद्ध स्नैपशॉट होते हैं। - प्रति-टर्न कैश टोकन प्रभाव सामान्य उपयोग सतहों में दिखाई देता है:
cacheReadऔरcacheWrite,/usage tokens,/status, सत्र उपयोग सारांश और कस्टमmessages.usageTemplateलेआउट में दिखाई देते हैं। - Anthropic के लिए, कैशिंग सक्रिय होने पर
cacheReadऔरcacheWriteदोनों की अपेक्षा करें। - OpenAI के लिए, कैश हिट पर
cacheReadकी अपेक्षा करें;cacheWriteकेवल उन Responses API पेलोड में भरा जाता है जिनमें यह शामिल होता है (ऊपर OpenAI देखें)। - OpenAI,
x-request-id,openai-processing-msऔरx-ratelimit-*जैसे ट्रेसिंग और दर-सीमा हेडर भी लौटाता है; अनुरोध ट्रेसिंग के लिए उनका उपयोग करें, लेकिन कैश-हिट गणना फिर भी उपयोग पेलोड से आनी चाहिए, हेडर से नहीं।
त्वरित समस्या निवारण
- अधिकांश टर्न में उच्च
cacheWrite: परिवर्तनशील सिस्टम-प्रॉम्प्ट इनपुट की जाँच करें; सत्यापित करें कि मॉडल/प्रदाता आपकी कैश सेटिंग का समर्थन करता है। - Anthropic पर उच्च
cacheWrite: अक्सर इसका अर्थ होता है कि कैश ब्रेकपॉइंट ऐसी सामग्री पर पहुँच रहा है जो प्रत्येक अनुरोध में बदलती है। - कम OpenAI
cacheRead: सत्यापित करें कि स्थिर प्रीफ़िक्स आरंभ में है, दोहराया गया प्रीफ़िक्स कम से कम 1024 टोकन का है और समानprompt_cache_keyका उन टर्न के लिए पुनः उपयोग होता है जिन्हें कैश साझा करना चाहिए। cacheRetentionका कोई प्रभाव नहीं: पुष्टि करें कि मॉडल कुंजीagents.defaults.models["provider/model"]से मेल खाती है।- कैश सेटिंग वाले Bedrock Nova अनुरोध: अपेक्षित — रनटाइम पर इनके लिए कोई कैश प्रतिधारण नहीं होता।