Prompt caching 允许模型 provider 在多轮对话中复用未变化的提示词前缀,避免每次都重新处理。OpenClaw 将 provider 的用量归一化为 cacheRead 和 cacheWrite。

核心价值:降低 token 费用、加快响应速度、提升长会话性能。

主要配置项

cacheRetention

agents:
  defaults:
    params:
      cacheRetention: "long"  # none | short | long

配置合并顺序:agents.defaults.params → agents.defaults.models["provider/model"].params → agents.list[].params

contextPruning.mode: "cache-ttl"

在缓存 TTL 过期后裁剪旧工具结果,避免空闲后重新缓存超大历史:

agents:
  defaults:
    contextPruning:
      mode: "cache-ttl"
      ttl: "1h"

Heartbeat 保温

agents:
  defaults:
    heartbeat:
      every: "55m"  # 低于 TTL 以保持缓存热态

各 Provider 行为

ProvidercacheRetention 支持说明
Anthropic 直连支持short=5分钟,long=1小时
OpenAI 直连自动(无需标记)仅 cacheRead,无 cacheWrite
Anthropic Vertex支持同直连
Amazon Bedrock仅 Anthropic Claude 模型非 Anthropic 模型强制 none
Google Gemini自动管理 cachedContents与 Anthropic/OpenAI 机制不同

系统提示词缓存边界

OpenClaw 将系统提示词分为稳定前缀(工具定义、技能元数据、工作区文件)和易变后缀(HEARTBEAT.md、运行时时间戳),确保稳定部分不因每轮变化而失效。

缓存诊断

diagnostics:
  cacheTrace:
    enabled: true
    filePath: "~/.openclaw/logs/cache-trace.jsonl"

环境变量快速开启:OPENCLAW_CACHE_TRACE=1

常见问题排查

  • 高 cacheWrite:检查系统提示词中是否有每次变化的内容
  • 低 OpenAI cacheRead:确认稳定前缀在最前面,且重复前缀至少 1024 tokens
  • cacheRetention 无效:确认 model key 与 agents.defaults.models["provider/model"] 匹配

相关页面