第 6 期:令牌(Tokens)详解
💡 进群学习加 wx: agentupdate
(申请发送: agentupdate)
(申请发送: agentupdate)
本期核心:Token 是 Claude Code 的货币单位。理解三类 Token 的差别,是省钱的第一步。
6.1 什么是 Token
Token 是 Claude 处理文本的基本单位:
| 语言 | 1 Token ≈ | 示例 |
|---|---|---|
| 英文 | 4 个字符 / 0.75 个单词 | "hello" ≈ 1 token |
| 中文 | 1-2 个汉字 | "你好" ≈ 2 tokens |
| 代码 | 不规则 | const x = 1; ≈ 5-7 tokens |
Claude Code 每次对话涉及三类 Token:
| Token 类型 | 方向 | Opus 单价 | Sonnet 单价 |
|---|---|---|---|
| 输入 Token | 发给 Claude | $3/MTok | $0.80/MTok |
| 输出 Token | Claude 回复 | $15/MTok | $4/MTok |
| 缓存 Token | 缓存命中部分 | $0.30/MTok | $0.08/MTok |
输出 Token 比输入 Token 贵 5 倍。省输出 Token 比省输入更重要。
6.2 输入 Token 是"累积"的
每次你发一条消息,前面所有轮次的内容都要带上。第 5 轮时,前 4 轮的所有内容(对话 + 工具结果)全部在输入里:
| 组成部分 | 每轮大小 | 累积效果 |
|---|---|---|
| System prompt | ~3K | 固定不变 |
| CLAUDE.md | ~2K-8K | 固定不变 |
| 历史对话 | 逐轮累积 | 第 1 轮 500t,第 5 轮可能 30Kt |
| 工具结果 | 逐次累积 | Read 一个 300 行文件 ≈ +5Kt |
6.3 tool_result 才是上下文暴涨的元凶
assistant 文字回复: "让我读取这些文件..." ~50 tokens
assistant 工具调用: Read("package.json") ~30 tokens
tool_result (小文件): package.json (38行) ~500 tokens
tool_result (大文件): src/index.ts (329行) ~4,000 tokens
tool_result (bash): npm test (200行输出) ~3,000 tokens
结论:AI 文字回复和工具调用指令很小。tool_result(工具执行结果)才是上下文暴涨的元凶。
6.4 实战:"读取项目"的 Token 变化
═══ 第 1 轮:用户发送 "读取项目" ═══
总输入: 8,530t (固定部分 + "读取项目")
缓存命中: 0t (首轮无缓存)
总输出: 650t (6 个 Read 指令)
═══ 第 2 轮:工具结果返回 + Claude 总结 ═══
总输入: 49,180t (+40K 文件内容)
缓存命中: 9,180t (固定部分被缓存,省 ~90%)
总输出: 200t ("项目已读取完毕...")
HUD 显示:
Context ██████░░░░ 60% (120K/200K)
Input: 49K │ Output: 1K │ Cache: 9K hit
6.5 排错循环的 Token 雪球
Round 1: Input: 12K → Context: 20%
Round 2: Input: 25K → Context: 35%
Round 3: Input: 50K → Context: 55% ← npm install 错误输出很长
Round 4: Input: 80K → Context: 72%
Round 5: Input: 120K → Context: 90% ← 上下文条变红色!
Round 6: 自动压缩触发 → 缓存命中率骤降
6.6 省 Token 的实用技巧
省输入 Token:
| 技巧 | 效果 |
|---|---|
用 Grep 替代 Read 全文件 |
省 80-95% |
Read 指定行号范围 |
省 50-90% |
| 精简 CLAUDE.md | 每轮省 1K-5K |
定期 /clear |
防止历史累积 |
省输出 Token:
| 技巧 | 效果 |
|---|---|
| 用 caveman 模式 | 省 40-60% 输出 |
| "只改代码,不解释" | 直接省掉解释部分 |
| 明确指令:"修复第 42 行的 bug" | 比模糊提问少 5-10 倍输出 |
6.7 HUD 中查看 Token
Expanded 布局(默认):
上下文 ███░░░░░░░ 33% (67k/200k) (输入: 318, 缓存: 66k)
tokens 1.3M (in: 218k, out: 5k, cache: 1.0M)
| HUD 显示 | 含义 |
|---|---|
输入: 318 |
本次 API 调用的 input tokens(非累计) |
缓存: 66k |
缓存命中的 tokens |
| Session tokens 行 | 会话累计所有轮次的 input/output/cache |
注意:identity 行的输入/缓存是单次请求的值,不是整个会话累计。
下期预告:第 7 期讲解用量限制——Pro/Max/Team 的 5 小时和 7 天窗口在 HUD 中怎么看。