跳转到内容

x-anthropic-billing-header 导致缓存失效 CC Switch

Quick fix

升级 CC Switch 至 v3.15.0+,修复 openai_responses 模式下动态 billing header 破坏前缀缓存的问题。

报错原文
cached input tokens were often stuck around 6.5k-9.2k even for ~95k-120k token requests

该聚类实际上混合了多个完全不同的 CC Switch 请求转换与代理缺陷。本页面主要解决已修复的核心问题(#2350):在 `openai_responses` 模式下,CC Switch 错误地将包含动态 `cch` 值的 `x-anthropic-billing-header` 注入到 `instructions` 字段开头。由于 OpenAI 的 prompt caching 是基于前缀匹配的,这个每次请求都会变化的 header 导致大段稳定的系统提示词无法命中缓存。

此外,该聚类还包含其他尚未修复的变体问题:Azure OpenAI 的 `max_tokens` 参数未转换为 `max_completion_tokens` 导致 400 错误(#3185);`supports_reasoning_effort()` 使用 `strip_prefix("gpt-")` 导致带自定义前缀的模型无法触发推理映射(#5343);Claude Desktop 路由未复用 Session ID 导致缓存率偏低(#5388);以及 Codex chat-completions 路由中 `<thinking>` 标签泄露到正文(#6116)。

  1. 将 CC Switch 升级至 v3.15.0 或更高版本。官方已在该版本中修复了 `openai_responses` 模式下将动态 `x-anthropic-billing-header` 错误注入 `instructions` 字段的问题,从而恢复 OpenAI 的前缀缓存命中率。

ToolClaude Code
Version3.14.1 (已在 3.15.0 修复)
PlatformsWindowsmacOS
会话刷新是走的配置文件环境变量的proxy还是软件里的出站proxy?
会话刷新(Quota refresh)使用的是 CC Switch 的 HTTP 客户端:如果设置了全局出站代理则使用它,否则使用系统代理。供应商的 `env` 代理设置不会被使用。
为什么带前缀的自定义模型名(如 b-gpt-5.6-sol)无法触发 reasoning effort 映射?
当前版本的 `supports_reasoning_effort()` 函数使用 `strip_prefix("gpt-")` 进行匹配,要求模型名必须以 `gpt-` 开头。带自定义前缀的模型无法被识别,该问题尚未修复。
Azure OpenAI gpt-5.4 返回 400 错误怎么解决?
这是因为 CC Switch 仍发送旧的 `max_tokens` 参数,而 Azure GPT-5.x 要求使用 `max_completion_tokens`。此参数转换问题尚未在 CC Switch 中修复,建议关注后续版本更新。

这是一个非官方社区 wiki,与 cc-switch 作者及项目本身无隶属关系。内容整理自项目公开的 GitHub issues。本站不分发任何软件。