Skip to content

提示缓存优化

Shuro 完整透传 Anthropic Prompt Cache 协议,命中后 token 价格降到 1/10(缓存读取倍率 0.1)。

缓存写入不免费

部分 Claude 型号的缓存写入倍率为 1.25——即写入缓存比普通输入贵 25%。缓存只有被后续请求命中才划算。

命中条件(任一不满足就 miss)

  1. 前缀字节级精确匹配 —— system prompt + tools + messages 从第一个字节开始必须完全一致
  2. TTL 内:默认 5 分钟(可选 1 小时变体成本翻倍)
  3. 同一模型
  4. 够大:Sonnet/Opus ≥ 1024 tokens,Haiku ≥ 2048 tokens
  5. 同一缓存断点cache_control 标记位置不变
  6. 同一路由集群 —— 部分中转平台的痛点(若上游为多账号号池,每个账号缓存独立;Shuro 的上游架构未公开,待验证)

实测命中率

待验证(TODO/VERIFY)

以下命中率数据基于旧平台实测(2026-06),尚未在 Shuro 复测,仅供参考。

场景官方中转(旧平台实测)
长编码会话(24h+,持续编辑)95-99%70-90%
中等会话(数小时)85-92%50-75%
短咨询(密集 15min)70-80%40-65%
间歇请求(>5min 间隔)<40%<30%

中转命中率通常低于官方直连;具体到 Shuro 的表现建议自行实测(见下文)。

测试你的命中率

Claude Code 交互模式里:

/usage

显示 cache_read / cache_write / input_tokens 三个字段。命中率:

hit_rate = cache_read / (cache_read + cache_creation + input)

字段含义

json
"usage": {
  "input_tokens": 6,                  // 新输入(没走缓存)
  "cache_creation_input_tokens": 1095, // 这次写入缓存
  "cache_read_input_tokens": 159903,   // 这次命中读取
  "output_tokens": 4712
}

中转商如果没透传这些字段,说明 cache 机制可能被破坏。检测方法:

bash
curl -sS -X POST 'https://shuro.vip/v1/messages' \
  -H 'content-type: application/json' \
  -H 'anthropic-version: 2023-06-01' \
  -H 'x-api-key: <key>' \
  -d '{...}' | jq '.usage'

返回的 usage 字段里应该有完整的 cache_* 系列。

最大化命中率的 5 个技巧

1. 保持系统提示稳定

不要每次请求改一个字符的 system prompt(比如不要加时间戳)。

2. 利用 cache_control 标记

如果你直接调 API:

json
{
  "model": "claude-opus-4-7",
  "system": [
    {
      "type": "text",
      "text": "<long system prompt>",
      "cache_control": {"type": "ephemeral"}
    }
  ],
  "messages": [...]
}

Claude Code 自动加这个标记,手写 SDK 时要主动加。

3. 用长 TTL(仅必要时)

json
"cache_control": {"type": "ephemeral", "ttl": "1h"}

成本翻倍但 TTL 延长到 1 小时。适合频繁 build 同一项目的场景。

4. 减少跨会话切换

频繁开新会话会触发 cache_creation 重新写。长会话内连续编码命中率最高

5. 用 /compact 而非 /clear

/compact 压缩历史保留 cache,/clear 完全清空触发 cache miss。

中转命中率低的常见原因

待验证(TODO/VERIFY)

以下内容是对中转行业常见「号池架构」的一般性分析,基于旧平台实测(2026-06)总结;Shuro 的实际上游架构与路由策略未公开,尚未复测,仅供参考。

不少中转平台使用号池架构(多个上游账号轮询/粘性路由):

你 → 网关 → [账号A] [账号B] [账号C] [账号D]
              ↑      ↑      ↑      ↑
            独立    独立    独立    独立
            cache  cache  cache  cache

每个账号是独立的 Anthropic Organization → 缓存命名空间隔离 → 同样的 prompt 不同账号互相看不见。

号池规模和路由策略决定命中率:

路由策略命中率上限
纯轮询,N=10 号池≤10%
粘性 session(按用户哈希)60-90%
Prefix hash 路由(高级)接近官方

你能做的优化

作为客户能影响命中率的部分有限,主要靠:

  1. 保持长会话 —— 让粘性路由继续命中同账号
  2. 不要短时间频繁切 Provider —— 每次切换会丢失上下文
  3. 国内非高峰时段使用 —— 号池压力小,路由更稳定
  4. 如果命中率长期 <30%,换中转商

跟官方对比

如果你买了 Anthropic Max 20x 订阅,单 org 缓存独占,命中率天然 90%+。中转适合:

  • 没 Max 订阅的轻度用户
  • Max 用完了的备用
  • 出差/海外网络无法直连官方时
  • 需要 GPT 等非 Claude 模型

不适合:

  • 重度长会话编码(缓存收益最大化的场景,官方更划算)

内容采用 CC BY-NC-ND 4.0 协议 · 禁止商业使用 / 禁止改编 / 禁止训练 AI 模型