CLAUDE_CODE_ATTRIBUTION_HEADER 导致缓存失效 - CC Switch Fix
Quick fix
设置环境变量 CLAUDE_CODE_ATTRIBUTION_HEADER=0 以禁用动态请求头,恢复 KV 缓存命中。
Symptom
Section titled “Symptom”缓存固定为13824自 Claude Code v2.1.36 起,每次 API 请求都会包含带有动态值(如 cc_version、cc_entrypoint 等)的 `x-anthropic-billing-header`。这些变化的头部值破坏了 KV 缓存的前缀匹配机制,导致每次请求都强制进行完整的提示词处理,从而引发严重的延迟增加和成本上升,并表现为缓存数量无法更新或固定不变。
此外,许多第三方代理(如 LiteLLM、claude-code-router 等)无法识别此标头,可能会返回 ValidationException。通过设置环境变量 `CLAUDE_CODE_ATTRIBUTION_HEADER=0` 可以禁用该标头,从而恢复正常的缓存行为。注意:较旧版本的 Claude Code(如 v2.1.148)可能存在兼容性问题,建议更新至最新版本(如 v2.1.215+)。
在系统环境变量中添加或修改 CLAUDE_CODE_ATTRIBUTION_HEADER 为 0
Windows 用户可通过系统属性 -> 高级 -> 环境变量 设置 # Linux/macOS 用户可在 ~/.bashrc, ~/.zshrc 或 /etc/environment 中添加:export CLAUDE_CODE_ATTRIBUTION_HEADER=0
Affected Versions
Section titled “Affected Versions”ToolClaude Code
Version未知
PlatformsWindowsmacOSLinux
Source Issues
Section titled “Source Issues”- 为什么设置后缓存还是有问题?
- 请确认您使用的 Claude Code 版本是否过旧(如 v2.1.148)。有反馈指出老版本可能存在可变前缀兼容问题,建议更新至 v2.1.215 或更高版本。
- 这个设置会影响使用 Anthropic 官方 API 吗?
- 不会。该设置仅禁用用于计费和追踪的动态标头,不影响核心功能。如果您直接使用 Anthropic 官方 API,通常不需要此设置;但在使用第三方代理或本地推理时非常有用。
- 如何在 CC Switch 中快速切换此设置?
- 目前 CC Switch 尚未提供内置开关(Issue #2025 正在请求此功能)。您需要手动在操作系统的环境变量中进行设置。
ANTHROPIC_AUTH_TOKEN and ANTHROPIC_API_KEY执行 `claude daemon stop --any` 停止残留 Claude 后台进程,然后确保 `~/.claude/settings.json` 的 `env` 中只保留一种认证变量。ANTHROPIC_AUTH_TOKEN 和 ANTHROPIC_API_KEY打开 `~/.claude/settings.json`,删除重复的 auth 环境变量,只保留当前供应商需要的 `ANTHROPIC_AUTH_TOKEN` 或 `ANTHROPIC_API_KEY`,保存后重启 Claude Code。Auth conflict退出 Claude 官方登录、清理冲突的 ANTHROPIC_* 环境变量,并将 ~/.claude.json 的 hasCompletedOnboarding 设为 true 后重启终端。
这是一个非官方社区 wiki,与 cc-switch 作者及项目本身无隶属关系。内容整理自项目公开的 GitHub issues。本站不分发任何软件。