用 token-share 跑 Claude Code
Claude Code 走的是 Anthropic Messages API,这个网关在 /v1/messages 上提供。改掉 base URL、把各档位变量钉死、按所选 id 设好 context 就行。
为什么不需要插件就能跑
Claude Code 说的就是 Anthropic Messages API。目录里每个 Claude id 都按同一套形状提供服务——POST /v1/messages,用 x-api-key 认证,带 anthropic-version: 2023-06-01——所以把 CLI 指过来只是改一个 base URL,不算做集成。
这对全部 12 个 Claude id 都成立,从官方 1/5 美元的 stable-claude-haiku-4-5,到 10/50 美元的 Fable 通道,都一样。不管指向哪个,CLI 用的线上协议都不变。
但有个前提:Claude Code 并不是只跑一个模型,它会按任务类型挑档位。不把各档位变量钉死,就会有一部分活儿悄悄跑到你没选的档位上。把所有档位变量都指向同一个 id,账单才会和你选的那个 id 对得上。
export TOKEN_SHARE_KEY="<your-pool-api-key>"
export ANTHROPIC_BASE_URL="https://token-share.app"
export ANTHROPIC_API_KEY="$TOKEN_SHARE_KEY"
# Pin every tier, or the CLI picks one per task class.
export ANTHROPIC_MODEL="claude-sonnet-5"
export ANTHROPIC_DEFAULT_OPUS_MODEL="claude-sonnet-5"
export ANTHROPIC_DEFAULT_SONNET_MODEL="claude-sonnet-5"
export ANTHROPIC_DEFAULT_HAIKU_MODEL="claude-sonnet-5"
export CLAUDE_CODE_SUBAGENT_MODEL="claude-sonnet-5"
# Match the context of the id above: 1000000 here, 200000 for a 200K id.
export CLAUDE_CODE_MAX_CONTEXT_TOKENS="1000000"
export CLAUDE_CODE_ATTRIBUTION_HEADER=0
claudecontext 要跟着所选 id 走
CLAUDE_CODE_MAX_CONTEXT_TOKENS 告诉 CLI 在触发压缩之前可以用多大空间。它必须和 id 对齐,不能超:这里 12 个 Claude id 有 9 个是 100 万 token,而 claude-sonnet-4-6、stable-claude-sonnet-4-6、stable-claude-haiku-4-5 按 20 万提供。
设得比 id 上限高,CLI 会拼出一个模型收不下的请求;设得远低于上限,它又会提前压缩——把大窗口本来要帮你省掉的那几轮摘要请求,又还回去了。
输出上限同理:100 万那批单次最多 12.8 万 token,20 万那批是 6.4 万。所以"一次生成一个超长文件"这种场景,会因为档位钉在哪个 id 上而表现不同。
该把档位钉在哪个 id 上
Claude 家族内部的单价能差一个数量级,而 Claude Code 在输入和输出两头都很能吃。池子通道上,claude-sonnet-5 是 0.30 / 1.50 美元每百万;claude-opus-5、claude-opus-4-8、claude-opus-4-6 是 0.50 / 2.50——两头都是 1.67 倍。
stable-* 是同一份权重走我们自己 key 的专用通道,不经过共享池,倍率 0.4 而不是 0.1。stable-claude-opus-5 折算下来是 2.00 / 10.00 美元每百万,是池子通道 Opus 的 4 倍,并且不参与池内 failover。
这里不存在一个对所有人都正确的 id,因为一次 Claude Code 会话的成本主要由用法决定——工作集多大、多久压缩一次、transcript 有多少是重复的。钉一个 id 干一天真活儿,回头看用量,再换一个钉上去对比。这一次实测比任何排名都有价值。
出问题先验端点,再查 CLI
出了状况,最快区分"网关问题"还是"CLI 问题"的办法,是用同一个 key、同一个 model id,对 /v1/messages 直接 curl 一次。curl 通了而 claude 不通,说明凭据和路由都没事,问题在 CLI 读到的环境里。
最常见的原因是变量没换干净:shell profile、某个配置文件、编辑器内置终端里残留的 ANTHROPIC_API_KEY 或 ANTHROPIC_BASE_URL,会不声不响地盖掉你刚敲的那行 export。
如果 curl 也失败,响应体会直说原因——是 key 被拒、model id 不认,还是请求本身不合法。那是另一类修法,跟 CLI 配置无关。