大型代码库用什么模型:什么时候是上下文说了算
目录里有 14 个 id 支持 100 万 token,GPT 6 Astra Stable 更是 105 万。把 100 万窗口填满一次,Gemini 3 Flash 收 0.050 美元,Astra 收 2.00 美元——而且每次请求都收。
上下文一共分五档
20 万一档:Claude Sonnet 4.6、Sonnet 4.6 Stable、Haiku 4.5 Stable、Grok Composer 2.5 Fast。27.2 万一档:GPT 5.5、5.4、5.4 Mini。37.2 万一档:GPT 5.6 的 Sol、Terra、Luna。50 万一档:Grok 4.6 和 4.5。
最上面那档是 100 万,人很多:Claude Fable 5 Stable 和 Fable 5.1 Stable、Opus 5 及其 stable 通道、Opus 4.8 及其 stable 通道、Opus 4.6、Sonnet 5 及其 stable 通道,再加上全部五个 Gemini——3.8 Flash、3.7 Flash、3.6 Flash、3 Flash、3.1 Pro。只有一个 id 更高:GPT 6 Astra Stable,105 万。
输出上限的排序和上下文并不一致。100 万上下文的 Claude 和 GPT 5.6 系列最多输出 12.8 万 token;Gemini 全系是 65,536(3.1 Pro 是 65,535);Grok 4.6 / 4.5 是 65,536;20 万的 Claude 和较老的 GPT 是 64,000;Grok Composer 2.5 Fast 只有 32,768。既要读大仓库又要写大改动的任务,两头都会被卡。
大窗口是容量不是记忆力,而且填多少就付多少
窗口填多满,单价都不变。一次性塞进 100 万输入 token:Gemini 3 Flash 0.050 美元(官方 $0.50/M 的 0.1 倍)、Gemini 3.7 Flash 0.075 美元、Grok 4.6 0.20 美元、Claude Sonnet 5 0.30 美元、Claude Opus 5 0.50 美元、GPT 6 Astra Stable 2.00 美元($10/M 的 0.2 倍)。
关键在「每次请求」这四个字,这也是最容易被忽略的地方。一段对话二十轮、每轮都把同样那 100 万 token 重贴一遍,就是为两千万输入 token 付费:Claude Opus 5 上 10 美元,GPT 6 Astra Stable 上 40 美元——而在人看来,这只是「同一个仓库,问了二十个问题」。
能改变这条曲线的有两个杠杆。提示词缓存把确实重复的前缀(system prompt、对话反复引用的那几个文件)在后续轮次按缓存读取计费,而不是按新输入。检索更直接:把真正相关的 3 万 token 发过去,胜过把可能相关的 90 万发过去,在上面每一个 id 上都便宜 30 倍。
export TOKEN_SHARE_KEY="<your-pool-api-key>"
# Rough sizing: bytes / 4 is a usable first approximation for source code.
TOKENS=$(git ls-files '*.ts' '*.tsx' '*.go' '*.py' \
| xargs wc -c | awk 'END { print int($1 / 4) }')
echo "approx input tokens: $TOKENS"
# Consumer rates are quoted per MILLION tokens.
# claude-sonnet-5: 0.1x of $3/M official = $0.30/M consumer.
awk -v t="$TOKENS" 'BEGIN { printf "one request: $%.4f\n", t / 1000000 * 0.30 }'
# The authoritative count is the one the gateway reports back.
curl -sS https://token-share.app/v1/messages \
-H "x-api-key: $TOKEN_SHARE_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "content-type: application/json" \
-d '{
"model": "claude-sonnet-5",
"max_tokens": 1024,
"messages": [{"role": "user", "content": "Summarise the module layout."}]
}' | jq '.usage'价格和余量是两条线
窗口最大的不是单价最便宜的,单价最便宜的也不是窗口最小的。Gemini 3 Flash 是 100 万窗口配上目录里最低的消费者输入价 $0.050/M。GPT 6 Astra Stable 是最大的 105 万窗口配 $2.00/M——那是 Gemini 的 40 倍,来自 $10/M 官方价乘 0.2 倍率。
Grok 4.6 两条线都夹在中间:50 万窗口、$0.20/M。Claude Sonnet 5 是 100 万配 $0.30/M,Opus 5 同样窗口配 $0.50/M。所以「我要大窗口」只能把范围缩到 15 个 id,价格上什么也没决定。
表格答不了的问题是:在你的材料上,模型能不能用好窗口的远端。这个可以测——在一份真实的 50 万 token 负载里,把你要的事实放在 80% 深度的位置,然后提问,看它捞不捞得出来。一定要用自己的文件测,人造的大海捞针题说明不了模型怎么处理你的代码。
负载很大时的接口形态
100 万上下文的 Claude 和 GPT 6 Astra Stable 走 /v1/messages,用 x-api-key 加 anthropic-version: 2023-06-01。Gemini 和 Grok 走 /v1/chat/completions,用 Authorization: Bearer。GPT 5.6 系列和 5.x 那几个走 /v1/responses,同样是 bearer。
大请求恰恰是最该开 streaming 的场景:50 万 token 的 prompt 在吐出第一个 token 之前要处理一段时间,不开流式的客户端看上去会像卡死,其实只是在干活。
每个响应都会带 usage,把它记下来。网关记的那个数才是计费依据,拿它和自己的估算对一对,仓库级别的 prompt 就不会到月底才给你惊喜。