Technical reference
Cache prompt
Cache prompt berarti penyedia model dapat menggunakan kembali prefiks prompt yang tidak berubah (biasanya instruksi system/developer dan konteks stabil lainnya) di berbagai giliran alih-alih memproses ulang semuanya setiap saat. OpenClaw menormalkan penggunaan penyedia menjadi cacheRead dan cacheWrite ketika API upstream mengekspos penghitung tersebut secara langsung.
Surface status juga dapat memulihkan penghitung cache dari log penggunaan transkrip terbaru
ketika snapshot sesi langsung tidak memilikinya, sehingga /status dapat tetap
menampilkan baris cache setelah kehilangan sebagian metadata sesi. Nilai cache langsung nonzero yang ada
tetap diprioritaskan dibanding nilai fallback transkrip.
Mengapa ini penting: biaya token lebih rendah, respons lebih cepat, dan performa yang lebih dapat diprediksi untuk sesi yang berjalan lama. Tanpa caching, prompt yang berulang membayar biaya prompt penuh pada setiap giliran meskipun sebagian besar input tidak berubah.
Bagian di bawah ini mencakup setiap knob terkait cache yang memengaruhi penggunaan ulang prompt dan biaya token.
Referensi penyedia:
- Prompt caching Anthropic: https://platform.claude.com/docs/en/build-with-claude/prompt-caching
- Prompt caching OpenAI: https://developers.openai.com/api/docs/guides/prompt-caching
- Header API dan ID permintaan OpenAI: https://developers.openai.com/api/reference/overview
- ID permintaan dan error Anthropic: https://platform.claude.com/docs/en/api/errors
Knob utama
cacheRetention (default global, model, dan per agen)
Atur retensi cache sebagai default global untuk semua model:
agents:
defaults:
params:
cacheRetention: "long" # none | short | long
Override per model:
agents:
defaults:
models:
"anthropic/claude-opus-4-6":
params:
cacheRetention: "short" # none | short | long
Override per agen:
agents:
list:
- id: "alerts"
params:
cacheRetention: "none"
Urutan merge konfigurasi:
agents.defaults.params(default global — berlaku untuk semua model)agents.defaults.models["provider/model"].params(override per model)agents.list[].params(id agen yang cocok; override berdasarkan key)
contextPruning.mode: "cache-ttl"
Memangkas konteks hasil tool lama setelah jendela TTL cache agar permintaan setelah idle tidak meng-cache ulang riwayat yang terlalu besar.
agents:
defaults:
contextPruning:
mode: "cache-ttl"
ttl: "1h"
Lihat Pemangkasan Sesi untuk perilaku lengkap.
Menjaga tetap hangat dengan Heartbeat
Heartbeat dapat menjaga jendela cache tetap hangat dan mengurangi penulisan cache berulang setelah jeda idle.
agents:
defaults:
heartbeat:
every: "55m"
Heartbeat per agen didukung di agents.list[].heartbeat.
Perilaku penyedia
Anthropic (API langsung)
cacheRetentiondidukung.- Dengan profil auth API key Anthropic, OpenClaw menginisialisasi
cacheRetention: "short"untuk referensi model Anthropic saat tidak diatur. - Respons Anthropic native Messages mengekspos
cache_read_input_tokensdancache_creation_input_tokens, sehingga OpenClaw dapat menampilkancacheReaddancacheWrite. - Untuk permintaan Anthropic native,
cacheRetention: "short"dipetakan ke cache ephemeral default 5 menit, dancacheRetention: "long"ditingkatkan ke TTL 1 jam hanya pada host langsungapi.anthropic.com.
OpenAI (API langsung)
- Prompt caching bersifat otomatis pada model terbaru yang didukung. OpenClaw tidak perlu menyisipkan penanda cache tingkat blok.
- OpenClaw menggunakan
prompt_cache_keyuntuk menjaga routing cache tetap stabil antar giliran dan menggunakanprompt_cache_retention: "24h"hanya ketikacacheRetention: "long"dipilih pada host OpenAI langsung. - Penyedia Completions yang kompatibel dengan OpenAI menerima
prompt_cache_keyhanya ketika konfigurasi modelnya secara eksplisit mengaturcompat.supportsPromptCacheKey: true;cacheRetention: "none"tetap menekannya. - Respons OpenAI mengekspos token prompt yang di-cache melalui
usage.prompt_tokens_details.cached_tokens(atauinput_tokens_details.cached_tokenspada event Responses API). OpenClaw memetakannya kecacheRead. - OpenAI tidak mengekspos penghitung token penulisan cache terpisah, jadi
cacheWritetetap0pada jalur OpenAI meskipun penyedia sedang memanaskan cache. - OpenAI mengembalikan header tracing dan rate-limit yang berguna seperti
x-request-id,openai-processing-ms, danx-ratelimit-*, tetapi perhitungan cache-hit sebaiknya berasal dari payload penggunaan, bukan dari header. - Dalam praktiknya, OpenAI sering berperilaku seperti cache prefiks awal alih-alih penggunaan ulang riwayat penuh bergerak ala Anthropic. Giliran teks prefiks panjang yang stabil dapat mencapai plateau sekitar
4864cached token dalam probe langsung saat ini, sementara transkrip yang berat tool atau bergaya MCP sering mencapai plateau sekitar4608cached token bahkan pada pengulangan yang persis sama.
Anthropic Vertex
- Model Anthropic di Vertex AI (
anthropic-vertex/*) mendukungcacheRetentiondengan cara yang sama seperti Anthropic langsung. cacheRetention: "long"dipetakan ke TTL prompt-cache 1 jam yang nyata pada endpoint Vertex AI.- Default retensi cache untuk
anthropic-vertexsama dengan default Anthropic langsung. - Permintaan Vertex dirutekan melalui pembentukan cache yang sadar batas sehingga penggunaan ulang cache tetap selaras dengan yang benar-benar diterima penyedia.
Amazon Bedrock
- Referensi model Anthropic Claude (
amazon-bedrock/*anthropic.claude*) mendukung pass-throughcacheRetentioneksplisit. - Model Bedrock non-Anthropic dipaksa menjadi
cacheRetention: "none"saat runtime.
Model OpenRouter
Untuk referensi model openrouter/anthropic/*, OpenClaw menyisipkan
cache_control Anthropic pada blok prompt system/developer untuk meningkatkan penggunaan ulang
prompt-cache hanya ketika permintaan masih menargetkan rute OpenRouter yang terverifikasi
(openrouter pada endpoint default-nya, atau penyedia/base URL apa pun yang mengarah
ke openrouter.ai).
Untuk referensi model openrouter/deepseek/*, openrouter/moonshot*/*, dan openrouter/zai/*,
contextPruning.mode: "cache-ttl" diperbolehkan karena OpenRouter
menangani prompt caching di sisi penyedia secara otomatis. OpenClaw tidak menyisipkan
penanda cache_control Anthropic ke dalam permintaan tersebut.
Pembentukan cache DeepSeek bersifat best-effort dan dapat memakan beberapa detik. Follow-up
langsung mungkin masih menampilkan cached_tokens: 0; verifikasi dengan permintaan ulang
prefiks yang sama setelah jeda singkat dan gunakan usage.prompt_tokens_details.cached_tokens
sebagai sinyal cache-hit.
Jika Anda mengarahkan ulang model ke URL proxy kompatibel OpenAI yang arbitrer, OpenClaw berhenti menyisipkan penanda cache Anthropic khusus OpenRouter tersebut.
Penyedia lain
Jika penyedia tidak mendukung mode cache ini, cacheRetention tidak berpengaruh.
API langsung Google Gemini
- Transport Gemini langsung (
api: "google-generative-ai") melaporkan cache hit melaluicachedContentTokenCountupstream; OpenClaw memetakannya kecacheRead. - Ketika
cacheRetentiondiatur pada model Gemini langsung, OpenClaw secara otomatis membuat, menggunakan kembali, dan menyegarkan resourcecachedContentsuntuk system prompt pada eksekusi Google AI Studio. Ini berarti Anda tidak lagi perlu membuat handle cached-content secara manual sebelumnya. - Anda tetap dapat meneruskan handle cached-content Gemini yang sudah ada
sebagai
params.cachedContent(atauparams.cached_contentlama) pada model yang dikonfigurasi. - Ini terpisah dari prompt-prefix caching Anthropic/OpenAI. Untuk Gemini,
OpenClaw mengelola resource
cachedContentsnative milik penyedia alih-alih menyisipkan penanda cache ke dalam permintaan.
Penggunaan JSON Gemini CLI
- Output JSON Gemini CLI juga dapat menampilkan cache hit melalui
stats.cached; OpenClaw memetakannya kecacheRead. - Jika CLI menghilangkan nilai
stats.inputlangsung, OpenClaw menurunkan token input daristats.input_tokens - stats.cached. - Ini hanya normalisasi penggunaan. Ini tidak berarti OpenClaw membuat penanda prompt-cache ala Anthropic/OpenAI untuk Gemini CLI.
Batas cache system prompt
OpenClaw membagi system prompt menjadi prefiks stabil dan sufiks volatil
yang dipisahkan oleh batas cache-prefix internal. Konten di atas
batas (definisi tool, metadata Skills, file workspace, dan konteks
yang relatif statis lainnya) diurutkan agar tetap identik byte demi byte di berbagai giliran.
Konten di bawah batas (misalnya HEARTBEAT.md, stempel waktu runtime, dan
metadata per giliran lainnya) dibiarkan berubah tanpa membatalkan prefiks
yang di-cache.
Pilihan desain utama:
- File konteks proyek workspace yang stabil diurutkan sebelum
HEARTBEAT.mdsehingga perubahan heartbeat tidak merusak prefiks stabil. - Batas diterapkan di seluruh pembentukan transport keluarga Anthropic, keluarga OpenAI, Google, dan CLI sehingga semua penyedia yang didukung mendapat manfaat dari stabilitas prefiks yang sama.
- Permintaan Codex Responses dan Anthropic Vertex dirutekan melalui pembentukan cache yang sadar batas sehingga penggunaan ulang cache tetap selaras dengan yang benar-benar diterima penyedia.
- Fingerprint system prompt dinormalisasi (whitespace, line ending, konteks yang ditambahkan hook, pengurutan kapabilitas runtime) sehingga prompt yang secara semantik tidak berubah berbagi KV/cache antar giliran.
Jika Anda melihat lonjakan cacheWrite yang tidak diharapkan setelah perubahan konfigurasi atau workspace,
periksa apakah perubahan tersebut berada di atas atau di bawah batas cache. Memindahkan
konten volatil ke bawah batas (atau menstabilkannya) sering menyelesaikan
masalah.
Pengaman stabilitas cache OpenClaw
OpenClaw juga menjaga beberapa bentuk payload yang sensitif terhadap cache tetap deterministik sebelum permintaan mencapai penyedia:
- Katalog tool MCP bundel diurutkan secara deterministik sebelum registrasi
tool, sehingga perubahan urutan
listTools()tidak mengubah blok tool dan merusak prefiks prompt-cache. - Sesi lama dengan blok gambar yang dipersistenkan mempertahankan 3 giliran selesai terbaru tetap utuh; blok gambar lama yang sudah diproses dapat diganti dengan penanda agar follow-up yang berat gambar tidak terus mengirim ulang payload basi yang besar.
Pola penyesuaian
Trafik campuran (default yang direkomendasikan)
Pertahankan baseline jangka panjang pada agen utama Anda, nonaktifkan caching pada agen notifikasi yang bursty:
agents:
defaults:
model:
primary: "anthropic/claude-opus-4-6"
models:
"anthropic/claude-opus-4-6":
params:
cacheRetention: "long"
list:
- id: "research"
default: true
heartbeat:
every: "55m"
- id: "alerts"
params:
cacheRetention: "none"
Baseline yang mengutamakan biaya
- Atur baseline
cacheRetention: "short". - Aktifkan
contextPruning.mode: "cache-ttl". - Pertahankan heartbeat di bawah TTL Anda hanya untuk agen yang mendapat manfaat dari cache hangat.
Diagnostik cache
OpenClaw mengekspos diagnostik cache-trace khusus untuk eksekusi agen tersemat.
Untuk diagnostik normal yang menghadap pengguna, /status dan ringkasan penggunaan lainnya dapat menggunakan
entri penggunaan transkrip terbaru sebagai sumber fallback untuk cacheRead /
cacheWrite ketika entri sesi langsung tidak memiliki penghitung tersebut.
Uji regresi langsung
OpenClaw mempertahankan satu gate regresi cache langsung gabungan untuk prefiks berulang, giliran tool, giliran gambar, transkrip tool bergaya MCP, dan kontrol tanpa cache Anthropic.
src/agents/live-cache-regression.live.test.tssrc/agents/live-cache-regression-baseline.ts
Jalankan gate langsung sempit dengan:
OPENCLAW_LIVE_TEST=1 OPENCLAW_LIVE_CACHE_TEST=1 pnpm test:live:cache
File baseline menyimpan angka langsung terbaru yang teramati beserta ambang regresi khusus penyedia yang digunakan oleh pengujian. Runner juga menggunakan ID sesi dan namespace prompt baru untuk setiap eksekusi agar status cache sebelumnya tidak mencemari sampel regresi saat ini.
Pengujian ini secara sengaja tidak menggunakan kriteria keberhasilan yang identik di semua penyedia.
Ekspektasi langsung Anthropic
- Harapkan penulisan warmup eksplisit melalui
cacheWrite. - Harapkan penggunaan ulang riwayat hampir penuh pada giliran berulang karena kontrol cache Anthropic memajukan breakpoint cache sepanjang percakapan.
- Asersi langsung saat ini masih menggunakan ambang hit-rate tinggi untuk jalur stabil, tool, dan gambar.
Ekspektasi langsung OpenAI
- Harapkan hanya
cacheRead.cacheWritetetap0. - Perlakukan penggunaan ulang cache pada giliran berulang sebagai plateau khusus penyedia, bukan sebagai penggunaan ulang riwayat penuh bergerak ala Anthropic.
- Asersi langsung saat ini menggunakan pemeriksaan ambang konservatif yang diturunkan dari perilaku langsung yang diamati pada
gpt-5.4-mini:- prefiks stabil:
cacheRead >= 4608, hit rate>= 0.90 - transkrip tool:
cacheRead >= 4096, hit rate>= 0.85 - transkrip gambar:
cacheRead >= 3840, hit rate>= 0.82 - transkrip bergaya MCP:
cacheRead >= 4096, hit rate>= 0.85
- prefiks stabil:
Verifikasi langsung gabungan terbaru pada 2026-04-04 menghasilkan:
- prefiks stabil:
cacheRead=4864, hit rate0.966 - transkrip tool:
cacheRead=4608, hit rate0.896 - transkrip gambar:
cacheRead=4864, hit rate0.954 - transkrip bergaya MCP:
cacheRead=4608, hit rate0.891
Waktu wall-clock lokal terbaru untuk gate gabungan adalah sekitar 88s.
Mengapa asersinya berbeda:
- Anthropic mengekspos breakpoint cache eksplisit dan penggunaan ulang riwayat percakapan yang bergerak.
- Prompt caching OpenAI tetap sensitif terhadap prefiks yang persis sama, tetapi prefiks efektif yang dapat digunakan ulang dalam trafik Responses langsung dapat mencapai plateau lebih awal daripada prompt penuh.
- Karena itu, membandingkan Anthropic dan OpenAI dengan satu ambang persentase lintas penyedia akan menciptakan regresi palsu.
Konfigurasi diagnostics.cacheTrace
diagnostics:
cacheTrace:
enabled: true
filePath: "~/.openclaw/logs/cache-trace.jsonl" # opsional
includeMessages: false # default true
includePrompt: false # default true
includeSystem: false # default true
Default:
filePath:$OPENCLAW_STATE_DIR/logs/cache-trace.jsonlincludeMessages:trueincludePrompt:trueincludeSystem:true
Toggle env (debugging sekali pakai)
OPENCLAW_CACHE_TRACE=1mengaktifkan cache tracing.OPENCLAW_CACHE_TRACE_FILE=/path/to/cache-trace.jsonlmenimpa jalur output.OPENCLAW_CACHE_TRACE_MESSAGES=0|1mengaktifkan/menonaktifkan perekaman payload pesan penuh.OPENCLAW_CACHE_TRACE_PROMPT=0|1mengaktifkan/menonaktifkan perekaman teks prompt.OPENCLAW_CACHE_TRACE_SYSTEM=0|1mengaktifkan/menonaktifkan perekaman system prompt.
Yang perlu diperiksa
- Event cache trace berbentuk JSONL dan mencakup snapshot bertahap seperti
session:loaded,prompt:before,stream:context, dansession:after. - Dampak token cache per giliran terlihat pada surface penggunaan normal melalui
cacheReaddancacheWrite(misalnya/usage fulldan ringkasan penggunaan sesi). - Untuk Anthropic, harapkan
cacheReaddancacheWriteketika caching aktif. - Untuk OpenAI, harapkan
cacheReadpada cache hit dancacheWritetetap0; OpenAI tidak menerbitkan field token cache-write terpisah. - Jika Anda memerlukan tracing permintaan, catat ID permintaan dan header rate-limit secara terpisah dari metrik cache. Output cache-trace OpenClaw saat ini berfokus pada bentuk prompt/sesi dan penggunaan token yang dinormalisasi, bukan header respons penyedia mentah.
Pemecahan masalah cepat
cacheWritetinggi pada sebagian besar giliran: periksa input system prompt yang volatil dan verifikasi model/penyedia mendukung pengaturan cache Anda.cacheWritetinggi pada Anthropic: sering berarti breakpoint cache berada pada konten yang berubah di setiap permintaan.cacheReadOpenAI rendah: verifikasi prefiks stabil berada di depan, prefiks berulang setidaknya 1024 token, danprompt_cache_keyyang sama digunakan ulang untuk giliran yang seharusnya berbagi cache.- Tidak ada efek dari
cacheRetention: pastikan key model cocok denganagents.defaults.models["provider/model"]. - Permintaan Bedrock Nova/Mistral dengan pengaturan cache: perilaku runtime yang dipaksa ke
noneadalah hal yang diharapkan.
Dokumentasi terkait: