本系列基于 Claude Code 2.1.x、模型 claude-sonnet-4-6 写成,具体单价和参数以 Anthropic 官网为准。省钱的原理和策略不受模型版本影响。
要搞清楚钱花在哪,先搞清楚 token 是什么。
Token 是什么
Token 是 AI 模型处理文本的最小单位。
你发的每个字、每行代码,进入模型前都会被切成 token;模型输出也是一个个 token 生成的。计费按 token 数算。
切割工具叫 Tokenizer,按「子词」切分,不是按字符,也不是按单词。
为什么按子词?
三种方案的问题:
- 按字符切(a / b / c):序列太长,单字母没语义,模型处理步骤暴增
- 按单词切(hello / world):词表爆炸,变形词、专有名词、代码标识符根本列不完
- 按子词切(un / believ / able):词表可控(约 5 万条),常见词完整,罕见词拆成有意义片段
核心逻辑:高频完整保留,低频拆成片段。
英文:1 token ≈ 4 个字符
"hello" → 1 token
"unbelievable" → 3 tokens(un / believ / able)
中文:1 个汉字 ≈ 1.5~2 个 token
"你好世界" → 4~6 tokens
中文为什么比英文贵
每个汉字在 Unicode 里占 3 个字节(UTF-8)。Tokenizer 训练时中文语料比英文少,大多数汉字没被合并成独立 token,只能以 UTF-8 字节序列存在词表里,一个汉字就可能被拆成 2~3 个 token。
| 情况 | token 数 | 举例 |
|---|---|---|
| 高频汉字 | 1 | 的、是、你、好、我 |
| 普通汉字 | 2~3 | 绝大多数汉字 |
高频汉字(直接进词表):
"的" → 1 token "你" → 1 token
普通汉字(按字节拆):
"码" → 2 tokens "馥" → 3 tokens(生僻字)
平均下来,一个汉字 ≈ 1.52 个 token。**中文需要的 token 数是英文的 1.31.5 倍**。这就是为什么写 Skill、CLAUDE.md 推荐用英文。
怎么计费
| 类型 | 说明 | 相对价格 |
|---|---|---|
| 输入 token | 你发的消息 + 文件 + 历史对话 | 1倍 |
| 输出 token | Claude 的回复 | 5倍 |
| 缓存写入 | 首次写入缓存的内容 | 1.25倍 |
| 缓存命中 | 后续命中缓存的内容 | 0.1倍 |
输出是输入的 5 倍贵——让 Claude 直接改代码、少废话,既省时间也省钱。
缓存命中只收 1/10——system prompt、历史对话反复命中缓存,实际费用远低于标价。
claude-sonnet-4-6:输入 百万,输出15 / 百万,缓存写入 百万,缓存命中0.30 / 百万。以 Anthropic 官网当前定价为准。
实际场景估算
一条指令:"修改 processOrder,增加参数校验" → 约 25~30 tokens
一个 200 行 Java 文件 → 约 1500~2500 tokens
10 轮对话 + 读了 3 个文件 → 累计 50K~100K tokens
空行和注释也消耗 token。
常用Token 计算工具
| 工具 | 说明 |
|---|---|
| lunary.ai/anthropic-t… | 专为 Claude 设计,粘贴即可 |
| tiktokenizer.vercel.app/ | 多模型支持,可视化切分边界 |
Claude 使用自研 tokenizer,精确计数用 Anthropic 官方工具。
本人公众号「向好慢慢行」,欢迎大家关注。