Cache prompt
Cache prompt berarti provider model dapat menggunakan kembali prefiks prompt yang tidak berubah (biasanya instruksi system/developer dan konteks stabil lainnya) antar giliran alih-alih memproses ulang semuanya setiap kali. OpenClaw menormalkan penggunaan provider menjadicacheRead dan cacheWrite saat API upstream secara langsung mengekspos penghitung tersebut.
Permukaan status juga dapat memulihkan penghitung cache dari log penggunaan
transkrip terbaru ketika snapshot sesi live tidak memilikinya, sehingga /status dapat tetap
menampilkan baris cache setelah sebagian metadata sesi hilang. Nilai cache live yang sudah bukan nol tetap diutamakan daripada 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.
Halaman ini membahas semua kontrol terkait cache yang memengaruhi penggunaan ulang prompt dan biaya token.
Referensi provider:
- Cache prompt Anthropic: https://platform.claude.com/docs/en/build-with-claude/prompt-caching
- Cache prompt 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
Kontrol utama
cacheRetention (default global, model, dan per agen)
Setel retensi cache sebagai default global untuk semua model:
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 per key)
contextPruning.mode: "cache-ttl"
Memangkas konteks hasil tool lama setelah jendela TTL cache agar permintaan setelah idle tidak melakukan cache ulang pada riwayat yang terlalu besar.
Heartbeat keep-warm
Heartbeat dapat menjaga jendela cache tetap hangat dan mengurangi penulisan cache berulang setelah jeda idle.agents.list[].heartbeat.
Perilaku provider
Anthropic (API langsung)
cacheRetentiondidukung.- Dengan profil autentikasi API key Anthropic, OpenClaw mengisi
cacheRetention: "short"untuk referensi model Anthropic saat tidak disetel. - Respons Messages Anthropic native 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"menaikkan ke TTL 1 jam hanya pada hostapi.anthropic.comlangsung.
OpenAI (API langsung)
- Cache prompt 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 saatcacheRetention: "long"dipilih pada host OpenAI langsung. - 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 cache-write terpisah, jadi
cacheWritetetap0pada jalur OpenAI meskipun provider sedang menghangatkan cache. - OpenAI mengembalikan header tracing dan rate-limit yang berguna seperti
x-request-id,openai-processing-ms, danx-ratelimit-*, tetapi akuntansi 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 yang bergerak seperti Anthropic. Giliran dengan teks prefiks panjang yang stabil dapat mencapai plateau sekitar
4864cached token dalam probe live saat ini, sementara transkrip berat tool atau bergaya MCP sering plateau di sekitar4608cached token bahkan pada pengulangan yang sama persis.
Anthropic Vertex
- Model Anthropic di Vertex AI (
anthropic-vertex/*) mendukungcacheRetentiondengan cara yang sama seperti Anthropic langsung. cacheRetention: "long"dipetakan ke TTL cache prompt 1 jam yang sebenarnya pada endpoint Vertex AI.- Retensi cache default untuk
anthropic-vertexsama dengan default Anthropic langsung. - Permintaan Vertex dirutekan melalui pembentukan cache yang sadar batas agar penggunaan ulang cache tetap selaras dengan yang benar-benar diterima provider.
Amazon Bedrock
- Referensi model Anthropic Claude (
amazon-bedrock/*anthropic.claude*) mendukung pass-throughcacheRetentioneksplisit. - Model Bedrock non-Anthropic dipaksa menjadi
cacheRetention: "none"saat runtime.
Model Anthropic OpenRouter
Untuk referensi modelopenrouter/anthropic/*, OpenClaw menyisipkan
cache_control Anthropic pada blok prompt system/developer untuk meningkatkan penggunaan ulang cache prompt hanya ketika permintaan masih menargetkan rute OpenRouter yang terverifikasi
(openrouter pada endpoint default-nya, atau provider/base URL apa pun yang meresolusikan
ke openrouter.ai).
Jika Anda mengarahkan ulang model ke URL proxy kompatibel OpenAI yang sembarang, OpenClaw
berhenti menyisipkan penanda cache Anthropic khusus OpenRouter tersebut.
Provider lain
Jika provider tidak mendukung mode cache ini,cacheRetention tidak berpengaruh.
Google Gemini direct API
- Transport Gemini langsung (
api: "google-generative-ai") melaporkan cache hit melaluicachedContentTokenCountupstream; OpenClaw memetakannya kecacheRead. - Saat
cacheRetentiondisetel pada model Gemini langsung, OpenClaw secara otomatis membuat, menggunakan kembali, dan menyegarkan resourcecachedContentsuntuk prompt system 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 melalui
params.cachedContent(atau legacyparams.cached_content) pada model yang dikonfigurasi. - Ini terpisah dari caching prefiks prompt Anthropic/OpenAI. Untuk Gemini,
OpenClaw mengelola resource
cachedContentsnative milik provider 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 cache prompt bergaya Anthropic/OpenAI untuk Gemini CLI.
Batas cache system prompt
OpenClaw membagi system prompt menjadi prefiks stabil dan sufiks volatil yang dipisahkan oleh batas prefiks cache internal. Konten di atas batas (definisi tool, metadata Skills, file workspace, dan konteks lain yang relatif statis) diurutkan agar tetap identik byte demi byte antar giliran. Konten di bawah batas (misalnyaHEARTBEAT.md, timestamp runtime, dan
metadata per giliran lainnya) boleh berubah tanpa membuat prefiks yang di-cache
menjadi tidak valid.
Pilihan desain utama:
- File konteks proyek workspace yang stabil diurutkan sebelum
HEARTBEAT.mdagar perubahan heartbeat tidak merusak prefiks stabil. - Batas ini diterapkan di seluruh pembentukan cache keluarga Anthropic, keluarga OpenAI, Google, dan transport CLI sehingga semua provider yang didukung mendapatkan manfaat dari stabilitas prefiks yang sama.
- Permintaan Codex Responses dan Anthropic Vertex dirutekan melalui pembentukan cache yang sadar batas agar penggunaan ulang cache tetap selaras dengan yang benar-benar diterima provider.
- Sidik jari system prompt dinormalisasi (whitespace, line ending, konteks yang ditambahkan hook, urutan kemampuan runtime) sehingga prompt yang secara semantik tidak berubah berbagi KV/cache antar giliran.
cacheWrite yang tidak terduga setelah perubahan config 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.
Pelindung stabilitas cache OpenClaw
OpenClaw juga menjaga beberapa bentuk payload yang sensitif terhadap cache tetap deterministik sebelum permintaan mencapai provider:- Katalog tool MCP bundle diurutkan secara deterministik sebelum registrasi tool,
sehingga perubahan urutan
listTools()tidak mengubah blok tool dan merusak prefiks cache prompt. - Sesi legacy dengan blok gambar yang dipersistenkan mempertahankan 3 giliran selesai terbaru tetap utuh; blok gambar lama yang sudah diproses dapat diganti dengan penanda sehingga tindak lanjut yang berat gambar tidak terus mengirim ulang payload lama yang besar dan usang.
Pola penyetelan
Traffic campuran (default yang direkomendasikan)
Pertahankan baseline yang tahan lama pada agen utama Anda, nonaktifkan caching pada agen notifier yang bursty:Baseline yang mengutamakan biaya
- Setel baseline
cacheRetention: "short". - Aktifkan
contextPruning.mode: "cache-ttl". - Jaga heartbeat tetap di bawah TTL Anda hanya untuk agen yang mendapat manfaat dari cache hangat.
Diagnostik cache
OpenClaw mengekspos diagnostik cache-trace khusus untuk eksekusi agen tertanam. Untuk diagnostik normal yang berhadapan dengan pengguna,/status dan ringkasan penggunaan lainnya dapat menggunakan
entri penggunaan transkrip terbaru sebagai sumber fallback untuk cacheRead /
cacheWrite ketika entri sesi live tidak memiliki penghitung tersebut.
Live regression test
OpenClaw mempertahankan satu gate regresi cache live gabungan untuk prefiks berulang, giliran tool, giliran gambar, transkrip tool bergaya MCP, dan kontrol Anthropic tanpa cache.src/agents/live-cache-regression.live.test.tssrc/agents/live-cache-regression-baseline.ts
Ekspektasi live Anthropic
- Harapkan warmup write eksplisit melalui
cacheWrite. - Harapkan penggunaan ulang hampir seluruh riwayat pada giliran berulang karena kontrol cache Anthropic menggeser breakpoint cache sepanjang percakapan.
- Assertion live saat ini masih menggunakan ambang hit-rate tinggi untuk jalur stabil, tool, dan gambar.
Ekspektasi live OpenAI
- Harapkan hanya
cacheRead.cacheWritetetap0. - Perlakukan penggunaan ulang cache pada giliran berulang sebagai plateau khusus provider, bukan sebagai penggunaan ulang riwayat bergerak bergaya Anthropic.
- Assertion live saat ini menggunakan pemeriksaan ambang konservatif yang diturunkan dari perilaku live 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:
- 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
88s.
Mengapa assertion berbeda:
- Anthropic mengekspos breakpoint cache eksplisit dan penggunaan ulang riwayat percakapan yang bergerak.
- Cache prompt OpenAI masih sensitif terhadap prefiks yang persis sama, tetapi prefiks yang dapat digunakan ulang secara efektif dalam traffic Responses live dapat plateau lebih awal daripada prompt penuh.
- Karena itu, membandingkan Anthropic dan OpenAI dengan satu ambang persentase lintas provider akan menciptakan regresi palsu.
Konfigurasi diagnostics.cacheTrace
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.jsonlmengganti path output.OPENCLAW_CACHE_TRACE_MESSAGES=0|1mengaktifkan/nonaktifkan perekaman payload pesan penuh.OPENCLAW_CACHE_TRACE_PROMPT=0|1mengaktifkan/nonaktifkan perekaman teks prompt.OPENCLAW_CACHE_TRACE_SYSTEM=0|1mengaktifkan/nonaktifkan 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 permukaan penggunaan normal melalui
cacheReaddancacheWrite(misalnya/usage fulldan ringkasan penggunaan sesi). - Untuk Anthropic, harapkan
cacheReaddancacheWritesaat caching aktif. - Untuk OpenAI, harapkan
cacheReadpada cache hit dancacheWritetetap0; OpenAI tidak memublikasikan field token cache-write terpisah. - Jika Anda memerlukan request tracing, 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 pada header respons provider mentah.
Pemecahan masalah cepat
cacheWritetinggi pada sebagian besar giliran: periksa input system prompt yang volatil dan verifikasi bahwa model/provider mendukung setelan cache Anda.cacheWritetinggi pada Anthropic: sering berarti breakpoint cache berada pada konten yang berubah di setiap permintaan.cacheReadOpenAI rendah: verifikasi bahwa prefiks stabil berada di bagian depan, prefiks yang diulang setidaknya 1024 token, danprompt_cache_keyyang sama digunakan kembali untuk giliran yang seharusnya berbagi cache.- Tidak ada efek dari
cacheRetention: konfirmasi key model cocok denganagents.defaults.models["provider/model"]. - Permintaan Bedrock Nova/Mistral dengan setelan cache: pemaksaan runtime ke
nonememang diharapkan.