把 Claude Haiku 4.5 和 Claude Sonnet 5 放在同一张账单上看,很多长任务的开销其实不是被“主模型”吃掉的,而是被大量格式化、摘要、单文件改写、批量注释这类低难度子任务吃掉的。这篇内容从 CCSub 的按量计费视角出发,给出一个可以直接落地的分工方案:哪些工作交给 Haiku 4.5,哪些必须留给 Sonnet 5,以及怎样在客户端里切换模型而不动已有的 API Key。
先看清两档模型的成本结构
在 CCSub 的 Claude 分组里,Haiku 4.5 与 Sonnet 5 的价格档位并不相同。以站内公布的销售价(美元计价,单位按每百万 token 折算后的展示口径)为例,Sonnet 5 的输入为 33.6、输出为 168、缓存读 3.36、缓存写 42;而 Haiku 档位整体更低一档,输入与输出都更有优势。真正影响账单的不是单次单价,而是长任务里“调用次数 × 输出长度”的组合。
关键判断:输出 token 的单价比输入高出一个数量级,所以降本的第一优先级是压缩输出长度,第二优先级才是换更便宜的模型。把长输出任务下放给 Haiku 4.5,效果通常比只优化输入更明显。
如果你对具体分组和充值方式还不熟,可以先看 注册与充值 页面确认计价口径,再回来做任务分配。
Haiku 4.5 该承担哪些子任务
Haiku 4.5 的优势是响应快、单价低,短板是在长上下文推理、跨文件重构和复杂指令遵循上不如 Sonnet 5。因此把它定位成“子任务执行器”而不是“主对话模型”是最稳的用法。
可以放心下放给 Haiku 4.5 的任务
- 格式化与规范化:把 JSON、YAML、日志行整理成统一结构,输出短且规则明确。
- 摘要与压缩:对单个文件、单个函数或一段报错做 3 到 5 行摘要,为大模型准备上下文。
- 单文件改写:在一个已知文件内做小范围重命名、补类型标注、改写注释。
- 批量注释与文档字符串:为几十个函数生成 docstring,任务高度重复,输出长度可控。
- 命名建议与文案微调:变量名、提交信息、提示词润色等低风险写作。
建议留给 Sonnet 5 的任务
- 跨多个文件的架构级重构与依赖调整。
- 需要读懂整份需求文档再输出的方案设计。
- 调试链路较长的疑难问题,尤其是要在多个假设之间做取舍时。
- 对格式和指令遵循要求严格的结构化输出(例如一次性生成可执行配置)。
一个简单的经验规则:如果子任务的正确性可以用“看一眼就知道对不对”来判断,就交给 Haiku 4.5;如果需要跨上下文推理才能判断,就留给 Sonnet 5。
确认可用模型:先查 GET /v1/models
在写配置之前,先确认当前账号下 Haiku 4.5 与 Sonnet 5 都可见。CCSub 的模型列表通过 OpenAI 兼容接口暴露:
curl https://ccsub.xyz/v1/models \
-H "Authorization: Bearer sk-你的CCSub密钥"返回结果中会出现 claude-haiku-4-5、claude-haiku-4-5-20251001、claude-sonnet-5 等标识。请以接口实际返回为准,不要凭记忆写模型名,模型标识写错是最常见的 4xx 来源之一。
在 Claude Code 中分工两个模型
Claude Code 走 Anthropic 原生协议,客户端会自动向 /v1/messages 发起请求。你只需要把基地址指向 CCSub:
export ANTHROPIC_BASE_URL=https://ccsub.xyz/api
export ANTHROPIC_AUTH_TOKEN=sk-你的CCSub密钥然后按任务切换模型:主对话与重构会话选 Sonnet 5,批量注释、摘要这类会话切到 Haiku 4.5。切换模型不需要重新生成 Key,同一个密钥对两档模型都有效,账单会分别按各自档位计价。
建议的工作流是:先用 Sonnet 5 把任务拆成清单,再把清单里每一条低难度子任务放进单独的 Haiku 4.5 会话执行,最后回到 Sonnet 5 做整合与校验。这样既保住了质量,又把最大的一块输出成本压了下去。
OpenCode 与 OpenAI 兼容调用的写法
如果子任务是在脚本里批量跑,用 OpenAI 兼容端点更省事。基地址与对话端点分别是:
export OPENAI_BASE_URL=https://ccsub.xyz/v1
# 对话请求发往 https://ccsub.xyz/v1/chat/completions一个典型的子任务请求体:
curl https://ccsub.xyz/v1/chat/completions \
-H "Authorization: Bearer sk-你的CCSub密钥" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-haiku-4-5",
"messages": [
{"role": "user", "content": "为下面这个函数生成三行以内的中文 docstring,只输出 docstring 本身。"}
],
"max_tokens": 200
}'把 model 换成 claude-sonnet-5 就是同一套代码走高端模型,脚本结构不用改。在 OpenCode 里同理,把模型标识切到 Haiku 4.5 执行批量子任务即可。
Codex 原生接入的注意事项
Codex 走的是原生 Responses 协议,客户端会自动请求 /responses,配置里需要显式声明接口类型:
base_url = "https://ccsub.xyz/openai"
wire_api = "responses"对应的完整端点是 https://ccsub.xyz/openai/responses。如果你在 Codex 里同时用到 Claude 系列模型,请确认模型标识来自 /v1/models 的返回,而不是从其他平台抄来的名字。
常见错误排查
- connect_error 频繁出现:先检查本地网络与代理设置,确认
ANTHROPIC_BASE_URL与OPENAI_BASE_URL是否被改写成了错误地址。这类报错多数来自客户端侧而非服务端。 - upstream_unavailable:通常是模型标识不被当前分组支持,或请求参数超出该模型范围。用
/v1/models核对标识后重试。 - 401 / 403:密钥拼写错误或已失效,重新复制
sk-开头的完整密钥。 - 输出被截断:批量注释场景记得设置
max_tokens,否则长文件会被截断,反而增加重试成本。
更多按症状排查的方法见 故障排查 与 API 参数与推理能力。
成本与充值提醒
把子任务下放到 Haiku 4.5 之后,账单结构会明显变化:调用次数可能上升,但单次输出成本下降。建议先按小额度充值跑一轮真实任务,观察“调用次数上升”和“单次成本下降”哪一边占优,再决定长期分工比例。CCSub 按量计费,没有隐藏的阶梯折扣,看到的价格就是计价依据,所以用 Token 明细做复盘比凭感觉估算更可靠。
如果你还想了解单次调用大致能跑多少内容,可以参考 常见问题 里的计费说明。
下一步行动
- 打开 CCSub 创建或复用已有 API 密钥。
- 用
GET /v1/models确认claude-haiku-4-5与claude-sonnet-5均可用。 - 按本文的清单,把至少两个低难度子任务迁到 Haiku 4.5。
- 跑一轮完整任务后对比 Token 明细,再调整分工比例。