Кешування промптів
Кешування промптів означає, що провайдер моделі може повторно використовувати незмінні префікси промпта (зазвичай системні/розробницькі інструкції та інший стабільний контекст) між ходами замість повторної обробки щоразу. OpenClaw нормалізує використання провайдера доcacheRead і cacheWrite, коли в API вищого рівня ці лічильники доступні безпосередньо.
Поверхні статусу також можуть відновлювати лічильники кешу з найновішого журналу використання транскрипту, коли в живому знімку сесії їх немає, тож /status може й надалі показувати рядок кешу після часткової втрати метаданих сесії. Наявні ненульові значення живого кешу все одно мають пріоритет над резервними значеннями з транскрипту.
Чому це важливо: нижча вартість токенів, швидші відповіді та більш передбачувана продуктивність для довготривалих сесій. Без кешування повторні промпти оплачують повну вартість промпта на кожному ході, навіть якщо більшість вхідних даних не змінилася.
На цій сторінці описано всі параметри, пов’язані з кешем, які впливають на повторне використання промпта та вартість токенів.
Посилання на провайдерів:
- Кешування промптів Anthropic: https://platform.claude.com/docs/en/build-with-claude/prompt-caching
- Кешування промптів OpenAI: https://developers.openai.com/api/docs/guides/prompt-caching
- Заголовки API OpenAI та ID запитів: https://developers.openai.com/api/reference/overview
- ID запитів і помилки Anthropic: https://platform.claude.com/docs/en/api/errors
Основні параметри
cacheRetention (глобальне значення за замовчуванням, модель і для кожного агента)
Установіть тривалість збереження кешу як глобальне значення за замовчуванням для всіх моделей:
agents.defaults.params(глобальне значення за замовчуванням — застосовується до всіх моделей)agents.defaults.models["provider/model"].params(перевизначення для окремої моделі)agents.list[].params(відповідний id агента; перевизначення за ключем)
contextPruning.mode: "cache-ttl"
Обрізає старий контекст результатів інструментів після вікон TTL кешу, щоб запити після простою не кешували заново надто велику історію.
Підігрів через heartbeat
Heartbeat може підтримувати вікна кешу теплими та зменшувати повторні записи в кеш після періодів бездіяльності.agents.list[].heartbeat.
Поведінка провайдерів
Anthropic (прямий API)
cacheRetentionпідтримується.- Для профілів автентифікації Anthropic API-key OpenClaw встановлює
cacheRetention: "short"для посилань на моделі Anthropic, якщо значення не задано. - Відповіді Anthropic Messages нативно містять і
cache_read_input_tokens, іcache_creation_input_tokens, тож OpenClaw може показувати іcacheRead, іcacheWrite. - Для нативних запитів Anthropic
cacheRetention: "short"відповідає стандартному 5-хвилинному ефемерному кешу, аcacheRetention: "long"підвищує TTL до 1 години лише на прямих хостахapi.anthropic.com.
OpenAI (прямий API)
- Кешування промптів є автоматичним на підтримуваних сучасних моделях. OpenClaw не потрібно додавати маркери кешу на рівні блоків.
- OpenClaw використовує
prompt_cache_key, щоб маршрутизація кешу залишалася стабільною між ходами, і використовуєprompt_cache_retention: "24h"лише колиcacheRetention: "long"вибрано на прямих хостах OpenAI. - Відповіді OpenAI показують кешовані токени промпта через
usage.prompt_tokens_details.cached_tokens(абоinput_tokens_details.cached_tokensу подіях Responses API). OpenClaw відображає це вcacheRead. - OpenAI не надає окремий лічильник токенів запису в кеш, тому
cacheWriteзалишається0на шляхах OpenAI, навіть коли провайдер прогріває кеш. - OpenAI повертає корисні заголовки трасування та обмеження швидкості, такі як
x-request-id,openai-processing-msіx-ratelimit-*, але облік попадань у кеш слід брати з payload використання, а не із заголовків. - На практиці OpenAI часто поводиться як кеш початкового префікса, а не як повторне використання всієї рухомої історії в стилі Anthropic. Ходи зі стабільним довгим префіксом можуть виходити на плато близько
4864кешованих токенів у поточних живих пробах, тоді як транскрипти з інтенсивним використанням інструментів або в стилі MCP часто виходять на плато близько4608кешованих токенів навіть за точного повторення.
Anthropic Vertex
- Моделі Anthropic на Vertex AI (
anthropic-vertex/*) підтримуютьcacheRetentionтак само, як і прямий Anthropic. cacheRetention: "long"відповідає реальному TTL кешу промптів 1 година на кінцевих точках Vertex AI.- Значення збереження кешу за замовчуванням для
anthropic-vertexзбігається зі значенням для прямого Anthropic. - Запити Vertex маршрутизуються через формування кешу з урахуванням меж, щоб повторне використання кешу залишалося узгодженим із тим, що фактично отримують провайдери.
Amazon Bedrock
- Посилання на моделі Anthropic Claude (
amazon-bedrock/*anthropic.claude*) підтримують явну передачуcacheRetention. - Для моделей Bedrock, які не належать до Anthropic, під час виконання примусово встановлюється
cacheRetention: "none".
Моделі Anthropic через OpenRouter
Для посилань на моделіopenrouter/anthropic/* OpenClaw додає Anthropic
cache_control до блоків системного/розробницького промпта, щоб покращити повторне використання кешу промптів лише тоді, коли запит і далі спрямовується на перевірений маршрут OpenRouter
(openrouter на його стандартній кінцевій точці або будь-який provider/base URL, що вказує
на openrouter.ai).
Якщо ви перенаправите модель на довільний проксі-URL, сумісний з OpenAI, OpenClaw
перестане додавати ці специфічні для OpenRouter Anthropic-маркери кешу.
Інші провайдери
Якщо провайдер не підтримує цей режим кешу,cacheRetention не матиме ефекту.
Прямий API Google Gemini
- Прямий транспорт Gemini (
api: "google-generative-ai") повідомляє про попадання в кеш черезcachedContentTokenCountв API вищого рівня; OpenClaw відображає це вcacheRead. - Коли
cacheRetentionзадано для прямої моделі Gemini, OpenClaw автоматично створює, повторно використовує та оновлює ресурсиcachedContentsдля системних промптів у запусках Google AI Studio. Це означає, що вам більше не потрібно вручну попередньо створювати handle кешованого вмісту. - Ви все ще можете передати наявний handle кешованого вмісту Gemini через
params.cachedContent(або застарілийparams.cached_content) у налаштованій моделі. - Це окремо від кешування префіксів промптів Anthropic/OpenAI. Для Gemini
OpenClaw керує нативним для провайдера ресурсом
cachedContents, а не додає маркери кешу до запиту.
Використання JSON Gemini CLI
- JSON-вивід Gemini CLI також може показувати попадання в кеш через
stats.cached; OpenClaw відображає це вcacheRead. - Якщо CLI не містить прямого значення
stats.input, OpenClaw обчислює вхідні токени якstats.input_tokens - stats.cached. - Це лише нормалізація використання. Це не означає, що OpenClaw створює маркери кешу промптів у стилі Anthropic/OpenAI для Gemini CLI.
Межа кешу системного промпта
OpenClaw розділяє системний промпт на стабільний префікс і мінливий суфікс, розділені внутрішньою межею префікса кешу. Вміст над межею (визначення інструментів, метадані Skills, файли робочого простору та інший відносно статичний контекст) упорядковується так, щоб залишатися побайтно однаковим між ходами. Вміст під межею (наприклад,HEARTBEAT.md, часові позначки середовища виконання та
інші метадані кожного ходу) може змінюватися без інвалідизації кешованого
префікса.
Ключові проєктні рішення:
- Стабільні файли контексту проєкту робочого простору впорядковуються перед
HEARTBEAT.md, щоб зміни heartbeat не ламали стабільний префікс. - Межа застосовується в формуванні кешу для сімейства Anthropic, сімейства OpenAI, Google і CLI-транспорту, щоб усі підтримувані провайдери отримували вигоду від однакової стабільності префікса.
- Запити Codex Responses і Anthropic Vertex маршрутизуються через формування кешу з урахуванням меж, щоб повторне використання кешу залишалося узгодженим із тим, що провайдери фактично отримують.
- Відбитки системного промпта нормалізуються (пробіли, завершення рядків, контекст, доданий хуками, порядок можливостей середовища виконання), щоб семантично незмінні промпти спільно використовували KV/кеш між ходами.
cacheWrite після зміни конфігурації чи робочого простору,
перевірте, чи ця зміна потрапляє вище чи нижче межі кешу. Переміщення
мінливого вмісту нижче межі (або його стабілізація) часто вирішує
проблему.
Захист стабільності кешу в OpenClaw
OpenClaw також підтримує детермінованість кількох чутливих до кешу форм payload перед тим, як запит потрапить до провайдера:- Каталоги інструментів bundle MCP сортуються детерміновано перед
реєстрацією інструментів, щоб зміни порядку
listTools()не спричиняли змін у блоці інструментів і не ламали префікси кешу промптів. - У застарілих сесіях зі збереженими блоками зображень 3 найновіші завершені ходи зберігаються без змін; старіші вже оброблені блоки зображень можуть бути замінені маркером, щоб подальші запити з великою кількістю зображень не продовжували повторно надсилати великі застарілі payload.
Шаблони налаштування
Змішаний трафік (рекомендоване значення за замовчуванням)
Зберігайте довгоживучу базову конфігурацію на основному агенті та вимикайте кешування на сплескових агентах-нотифікаторах:Базове налаштування з пріоритетом вартості
- Встановіть базове
cacheRetention: "short". - Увімкніть
contextPruning.mode: "cache-ttl". - Тримайте heartbeat нижче за ваш TTL лише для агентів, яким корисний теплий кеш.
Діагностика кешу
OpenClaw надає окрему діагностику cache-trace для вбудованих запусків агентів. Для звичайної діагностики, орієнтованої на користувача,/status та інші зведення використання можуть використовувати
останній запис використання транскрипту як резервне джерело для cacheRead /
cacheWrite, коли в живому записі сесії цих лічильників немає.
Живі регресійні тести
OpenClaw підтримує один комбінований живий регресійний gate кешу для повторюваних префіксів, ходів з інструментами, ходів із зображеннями, транскриптів інструментів у стилі MCP та контрольного сценарію Anthropic без кешу.src/agents/live-cache-regression.live.test.tssrc/agents/live-cache-regression-baseline.ts
Живі очікування Anthropic
- Очікуються явні записи прогріву через
cacheWrite. - Очікується майже повне повторне використання історії на повторних ходах, оскільки керування кешем Anthropic просуває точку перелому кешу протягом розмови.
- Поточні живі перевірки й надалі використовують високі пороги коефіцієнта попадань для стабільних шляхів, шляхів з інструментами та шляхів із зображеннями.
Живі очікування OpenAI
- Очікується лише
cacheRead.cacheWriteзалишається0. - Повторне використання кешу на повторних ходах слід розглядати як специфічне для провайдера плато, а не як рухоме повторне використання всієї історії в стилі Anthropic.
- Поточні живі перевірки використовують консервативні перевірки нижніх меж, похідні від спостережуваної живої поведінки на
gpt-5.4-mini:- стабільний префікс:
cacheRead >= 4608, коефіцієнт попадань>= 0.90 - транскрипт інструментів:
cacheRead >= 4096, коефіцієнт попадань>= 0.85 - транскрипт зображень:
cacheRead >= 3840, коефіцієнт попадань>= 0.82 - транскрипт у стилі MCP:
cacheRead >= 4096, коефіцієнт попадань>= 0.85
- стабільний префікс:
- стабільний префікс:
cacheRead=4864, коефіцієнт попадань0.966 - транскрипт інструментів:
cacheRead=4608, коефіцієнт попадань0.896 - транскрипт зображень:
cacheRead=4864, коефіцієнт попадань0.954 - транскрипт у стилі MCP:
cacheRead=4608, коефіцієнт попадань0.891
88s.
Чому перевірки відрізняються:
- Anthropic надає явні точки перелому кешу та рухоме повторне використання історії розмови.
- Кешування промптів OpenAI все ще чутливе до точного префікса, але ефективний придатний для повторного використання префікс у живому трафіку Responses може виходити на плато раніше, ніж весь промпт.
- Через це порівняння Anthropic і OpenAI за єдиним міжпровайдерним відсотковим порогом створює хибні регресії.
Конфігурація diagnostics.cacheTrace
filePath:$OPENCLAW_STATE_DIR/logs/cache-trace.jsonlincludeMessages:trueincludePrompt:trueincludeSystem:true
Перемикачі env (разове налагодження)
OPENCLAW_CACHE_TRACE=1вмикає трасування кешу.OPENCLAW_CACHE_TRACE_FILE=/path/to/cache-trace.jsonlперевизначає шлях виводу.OPENCLAW_CACHE_TRACE_MESSAGES=0|1перемикає захоплення повного payload повідомлень.OPENCLAW_CACHE_TRACE_PROMPT=0|1перемикає захоплення тексту промпта.OPENCLAW_CACHE_TRACE_SYSTEM=0|1перемикає захоплення системного промпта.
Що перевіряти
- Події трасування кешу мають формат JSONL і включають поетапні знімки, такі як
session:loaded,prompt:before,stream:contextіsession:after. - Вплив токенів кешу на кожному ході видно в звичайних поверхнях використання через
cacheReadіcacheWrite(наприклад,/usage fullі зведення використання сесії). - Для Anthropic очікуються і
cacheRead, іcacheWrite, коли кешування активне. - Для OpenAI очікуйте
cacheReadпри попаданнях у кеш, аcacheWriteмає залишатися0; OpenAI не публікує окремого поля токенів запису в кеш. - Якщо вам потрібне трасування запитів, журналюйте ID запитів і заголовки обмеження швидкості окремо від метрик кешу. Поточний вивід cache-trace в OpenClaw зосереджений на формі промпта/сесії та нормалізованому використанні токенів, а не на сирих заголовках відповіді провайдера.
Швидке усунення проблем
- Високий
cacheWriteна більшості ходів: перевірте мінливі вхідні дані системного промпта та переконайтеся, що модель/провайдер підтримує ваші налаштування кешу. - Високий
cacheWriteв Anthropic: часто означає, що точка перелому кешу припадає на вміст, який змінюється в кожному запиті. - Низький
cacheReadв OpenAI: переконайтеся, що стабільний префікс розташований на початку, повторюваний префікс містить щонайменше 1024 токени, і той самийprompt_cache_keyповторно використовується для ходів, які мають спільно використовувати кеш. - Немає ефекту від
cacheRetention: переконайтеся, що ключ моделі збігається зagents.defaults.models["provider/model"]. - Запити Bedrock Nova/Mistral з налаштуваннями кешу: очікуване примусове встановлення
noneпід час виконання.