主题
token 是什么
token 是模型读文字的最小单位:分词器(tokenizer)按固定词汇表把文字切成的子词片段,缓存与上下文都按 token 计量。
理解 token(地基)
token 是模型读文字的最小单位、也是缓存和上下文的计量单位。完整的可交互演示(真实 token 切分色块、空格归属、中文更费、改一字断前缀)就在本站的 缓存交互图解 第 02 节。
去真实体验
| 想验证什么 | 这样做 |
|---|---|
| 看你当前上下文被各类内容吃了多少 token | 在 Claude Code 里输入 /context |
| 看某段文字精确 token 数 | 官方接口 POST /v1/messages/count_tokens |
| 看本会话累计 token / 花费 | /cost |
对你的实际意义
- 你 CLAUDE.md/AGENTS.md 越长越占启动 token;官方建议单个 CLAUDE.md < 200 行。
- Opus 4.7/4.8 换了新分词器,同样中文可能多花最多 35% token(但单价从 $15 降到 $5,整体更便宜)。
- 缓存逐 token 比前缀:改
Tenant-Id: 000000里一个数字,对应 token 变了 → 前缀从那断、之后全重算。
官方文档要点
以下为按官方文档整理的系统性参考。
是什么
模型不是一个字符一个字符地读文字,而是先用 tokenizer(分词器)按一套固定词汇表把文字切成一块块的 token,再把每个 token 换成数字编号——模型眼里是一串数字,不是字符串。token 不是字符、也不完全是单词,而是介于两者之间的子词片段。理解 token 是理解前缀缓存与上下文占用的地基:缓存逐个 token 比对前缀,上下文窗口按 token 计量。
怎么工作
- 常见词通常是 1 个 token,生僻词/长词会被拆成多块(如 unbelievable → un|bel|iev|able)。
- 空格通常并进它后面的 token(如 ' love' 带前导空格),所以多删一个空格都可能换一个 token。
- 中文一个汉字通常要 1 个甚至更多 token,整体比英文更费 token。
- 同样的字在不同位置、不同上下文里可能切法不同(BPE 会把常见组合合并成一个 token)。
- 改 1 个字符会让对应的 token 变成另一个不同的 token——这正是前缀缓存『遇到第一个不一样的 token 就从那断』的字面含义。
怎么配置 / 用法
估算经验值(官方):
- 英文 ≈ 4 个字符 = 1 token(≈ 0.75 个单词)
- 中文一个汉字常 ≈ 1 个甚至更多 token
- Opus 4.7 / 4.8 换了新分词器,同样文字可能多花最多 35% token
看精确 token 数:
- 官方计数接口
POST /v1/messages/count_tokens - Claude Code 内
/context看上下文实时占用;每次模型返回的usage字段(input_tokens/cache_read_input_tokens/cache_creation_input_tokens)就是服务端按真实分词算好的 token 数。
什么时候用
- 理解前缀缓存为什么『改一个字符就从那断』时——落到 token 级才说得清。
- 估算上下文占用 / 成本时,用经验值粗算,用 /context 或 usage 字段看精确值。
限制 / 坑
- 精确切分依赖 Anthropic 不公开的分词器(尤其 Opus 4.7+ 的新版),本地无法 100% 复现边界,只能用经验值估算。
- 经验值(4 字符/token 等)只是估算,真实值随语言和内容类型变化。
硬事实速查(5 条)
- 英文 ≈ 4 字符 / 1 token ≈ 0.75 词;中文每字 ≥ 1 token。
- Opus 4.7 / 4.8 新分词器:同样文字可能多花最多 35% token。
- 精确计数:
POST /v1/messages/count_tokens。 - Claude Code 内查占用:
/context;查单轮 token:响应的usage字段。 - 缓存按 token 序列逐个比对前缀;上下文窗口按 token 计量。
官方出处:https://platform.claude.com/docs/en/docs/about-claude/pricing