A➗ ,真出生啊,cc里面用gpt模型经常缓存不生效的原因简单分析

德州仪器 2026-08-05 14:57 1

版本号:2.1.222 (Claude Code)


简单来说,a 的协议缓存格式与国模和gpt不一样,前者通过cache_control控制缓存断点,后者通过自动前置缓存(简单来说前面的内容不变,后面继续对话前面的内容就算缓存,不需要协议字段去控制),前面的内容变了,那就缓存失效了。(此处指completions 协议, reponse不了解)

例如:


  {
"system": [
{"type":"text", "text":"系统提示1",
"cache_control":{"type":"ephemeral"}}, // ← 缓存控制A
{"type":"text", "text":"系统提示2"}

],
"tools": [
{"name":"Bash", "description":"...", ...},
{"name":"Read", "description":"...",
"cache_control":{"type":"ephemeral"}} // ← 缓存控制b
],
"messages": [
{"role":"user", "content":[{"type":"text","text":"历史消息...",
"cache_control":{"type":"ephemeral"}}]}
]
}

后端解析 cache_control → 把当前位置之前的 token 存进缓存


这个设计我不觉得是坏事,可以理解,为了claudecode的动态注入,这样还能提升缓存命中率。

但是, Anthropic 的 messages[].content 字段,同一段文本可以用两种 JSON 表示:


  写法 A(字符串):
"content": "The following deferred tools are now available..."

写法 B(数组):
"content": [{"type": "text", "text": "The following deferred tools are
now available..."}]

我chovy你发请求给我发好的啊,你一会这样一会那样的这不是找事吗,这样变来变去的gpt根本没法缓存。


国模一般做了适配,不影响缓存,但你gpt 可鸟都不鸟你,直接缓存失效,这也是为什么经常claudecode用gpt模型出现 有缓存-没缓存-有缓存-没缓存的情况,有些中转站会做适配,能解决这个问题,但是,a ,柠檬熟了

最新回复 (6)
  • leic-山水 08-05 15:00
    1

    gpt高缓存必须reponse,不然codex缓存都低下的可怜

  • 挽风 08-05 15:01
    2

    CPA能兼容吗

  • 德州仪器 楼主 08-05 15:01
    3

    @leic-山水 #1 reponse协议我还没研究,不过据说也有些 专为自家模型设计的感觉

  • F1 08-05 15:02
    4

    一般来说都是各家给自己优化得最好吧,Codex也是配GPT是最好用的。

  • KEVI 08-05 15:03
    5

    已老实 codex ^-^

  • leic-山水 08-05 15:33
    6

    @德州仪器 #3 发布于2026/8/5 15:01:47

    @leic-山水 #1 reponse协议我还没研究,不过据说也有些 专为自家模型设计的感觉


    去研究研究吧,除了claude,各家已有全面转向reponse的趋势

* 帖子来源NodeSeek
返回