关于Claude code调用第三方API会造成Token消耗增加、缓存命中率下降的改善

以下所有内容转载自微信视频号‘张司机在路上’博主的视频,有部份修改。 从2.1.36开始,A社很鸡贼的在Claude code里的API请求里塞了一行 x-anthropic-billing-header , 是当成system prompt的第一块发过去的. 里面有个叫 cch 的5位hex字段,...
关于Claude code调用第三方API会造成Token消耗增加、缓存命中率下降的改善
关于Claude code调用第三方API会造成Token消耗增加、缓存命中率下降的改善

以下所有内容转载自微信视频号‘张司机在路上’博主的视频,有部份修改。

从2.1.36开始,A社很鸡贼的在Claude code里的API请求里塞了一行x-anthropic-billing-header, 是当成system prompt的第一块发过去的. 里面有个叫cch的5位hex字段, 每次请求都不一样。

博主实测同一个session里连续三轮, cch依次是97bd6 → 24c2d → ead88, 前一轮辛苦建好的缓存, 下一轮直接对不上前缀hash。

A社自己的服务端知道怎么处理. 但所有第三方Anthropic兼容代理、Bedrock、本地vLLM是不知道的,就会把这段当成system prompt的一部分算缓存key。当前缀每次都变的情况下, 命中率就会大大下降。

在Claude code的GitHub issue里有很多人提了,但是A社就是装看不见

IMG7328

博主从Claude Code二进制里扒出了源代码, 找到了这个header的函数, 如图:

IMG7329

解决办法:在环境变量~/.claude/settings.json的env段添加一段:CLAUDE_CODE_ATTRIBUTION_HEADER=0, 重启即可。

注:这个视频是博主刚发的,但因为指明的cc版本比较旧了,所以我不太确定是不是过时的消息,不清楚现在其他厂商是否做了服务器适配。
如果在用第三方API转发Claude Code的朋友, 可以试试这个方法,反正就是加一行参数的事。

5 个帖子 - 4 位参与者

阅读完整话题

来源: LinuxDo 最新话题查看原文