> https://router.one/zh/blog/claude-code-token-costs-explained 的 Markdown 镜像，供 AI 助手与爬虫使用。Router One 是 OpenAI 兼容的统一 LLM API 网关。
> 发布：2026-08-02 · 修订：2026-09-05 · 作者：Router One Team

# Claude Code 为什么烧这么多 token？成本拆解与硬上限

_拆解 Claude Code 的 token 去向：上下文重发、子代理与测试循环，再按威力排序省钱杠杆——模型分工、会话卫生，最后用 maxSpend 消费硬上限锁死最坏情况。_

第一次看到账单的震惊，几乎是每个 Claude Code 用户的成人礼。你让它在真实仓库里干一件真实的活——读文件、改代码、跑测试、修回归——事后打开用量一看，数字是同样一小时聊天窗口用法的好几倍。没有任何东西出错。这个数字就是 agentic 编程的真实成本。这篇文章先讲清楚钱到底烧在哪，再按威力从大到小过一遍真正有效的杠杆，最后落在那个让超支在结构上不可能发生的手段：给 key 本身装一个消费硬上限。

## token 到底烧在哪

agentic CLI 不是聊天窗口，账单主要由四个机制构成：

**读过的每个文件都进上下文。** Claude Code 为了看懂一个调用点打开一个 800 行的文件，这些行就变成了输入 token——而且会留在对话里，之后每一轮都跟着。在一个中等规模的仓库里认真探索一圈，第一行代码还没改，上下文里可能已经有几万个 token。

**长会话每一轮都重发全部累积上下文。** 底层 API 是无状态的：每一轮，客户端都要把到目前为止的整个对话——每次文件读取、每个 diff、每段测试日志——原样发一遍，再按输入价付一遍钱。单轮成本随会话长度增长，所以整个会话的总成本增长远超线性。第 40 轮在悄悄为第 1 到 39 轮再付一次钱。

**子代理成倍放大。** Claude Code 派出子代理去探索代码库或复查改动时，那是一个独立对话，有自己的上下文、自己的文件读取，费用叠加在主会话之上。

**重试和测试循环不断累加。** 跑测试、读失败输出、改代码、再跑——每一次迭代都往上下文里追加输出，再付一轮全量上下文的钱。一个顽固的失败测试，花掉的钱可能比它守护的功能还多。

这些都不是贬义上的浪费。重发的上下文让模型记得三次编辑之前它做过什么；文件读取让它改得对；测试循环是「写了代码」和「交付了代码」之间的差距。这是工具真正干活的成本。正确的应对不是和架构较劲，而是抓住你手里的三个变量：**哪个模型**干活、上下文**能长到多长**、这把 key **最多能花多少**。

## 杠杆一：模型分工——最大的单一乘数

上面每一个被重发的上下文 token，都按当前模型的输入价计费，所以模型选择会放大前面的一切。全程用最强的模型是最贵的配置，而多数会话根本用不上：

| 工作类型 | 模型 | 理由 |
| --- | --- | --- |
| 日常主力：功能、修 bug、重构 | Claude Sonnet 5 | 用旗舰价的零头搞定绝大多数编码工作 |
| 真正的硬骨头：架构设计、深度排障 | Claude Opus 4.8 | 推理深度成为瓶颈时，溢价才值得 |
| 机械式操作：改名、样板代码、注释清扫、日志分诊 | Claude Haiku 4.5 | 活是模式化的，最便宜的模型足够胜任 |

Claude Code 支持用 `/model` 命令在会话中途切换，所以实用的习惯是：默认 Claude Sonnet 5，撞墙时升到 Claude Opus 4.8，机械活降到 Claude Haiku 4.5。因为这个乘数作用在每轮重发的整个上下文上，混合用法的账单通常只有「全程 Opus」的一小部分。

Claude Code 走 Anthropic 协议，通过 Router One 接入的是 Claude 系列；各模型实时单价见[模型页](https://router.one/zh/models)，部分模型最低可到官方公示价的 1 折（最高省 90%），具体哪些模型见[低价 Claude API](https://router.one/zh/cheap-claude-api)。想在跑之前先估一笔账，[成本计算器](https://router.one/zh/llm-cost-calculator)可以直接算。如果你的会话还默认跑在 Claude Sonnet 4.6 上，切换之前可以先看 [Claude Sonnet 5 vs Claude Sonnet 4.6](https://router.one/zh/models/compare/claude-sonnet-5-vs-claude-sonnet-4-6)，两张规格表和单价都从实时目录渲染。

## 杠杆二：会话卫生——更短的上下文是最可靠的杠杆

既然每一轮都要为整个上下文重新付钱，上下文长度就是你直接掌控的第二个变量：

- **一个任务一个会话。** 换任务就 `/clear` 重开。早上修 bug 的会话，对下午的重构来说就是昂贵的压舱石。
- **把需求说窄。** 「修掉 `src/api/auth.ts` 里的空值检查」读一个文件；「找到并修复登录 bug」读二十个。
- **给路径，别贴全文。** 把一整个大文件或完整日志贴进提示词，它就永远留在上下文里了。给个路径让工具自己读相关部分，或者只贴失败的那 30 行。
- **让长会话善终。** 当会话累积的历史多到每一轮都很沉重时，把状态总结成一段笔记，重开一个干净的会话。重启的代价是重读一次文件；继续拖着的代价是每一轮都拖着全部历史。

关于缓存说一句：你可能读到过 prompt caching 会改变这笔账。无论上游的缓存机制怎样，我们不在这里承诺任何缓存计价——你永远可以在自己的请求 trace 数据里验证的杠杆，是更短的上下文。发出去的 token 更少，计费的 token 就更少，任何计价方案下都成立。

## 杠杆三：网关兜底——用上限代替祈祷

卫生习惯是一种实践；上限是一种保证。让 Claude Code 走 Router One，只需要两个环境变量：

```bash
export ANTHROPIC_BASE_URL=https://api.router.one
export ANTHROPIC_AUTH_TOKEN=your-router-one-key
```

在成本这件事上，你换来的是三个 key 级控制项和一本账：

- **maxSpend** —— key 上的消费硬上限。建一把 maxSpend 设成 $10 的 key 交给一个跑通宵的实验：最坏情况从此就是 $10 整，而不是「到早上它烧掉了多少算多少」。key 到顶即停，钱包在上限之外分毫不动。
- **rateLimit** —— 请求频率上限，把失控的重试循环从一场火灾降级成涓涓细流。
- **tokenLimitTpm** —— 每分钟 token 上限，正是针对本文所讲这种失控模式的直接刹车。陷在「读-改-测」旋涡里的 agent，物理上烧不过你画下的这条线。
- **每请求 trace** —— 每个请求都记录模型、token、成本、延迟和状态（Dashboard → Logs）。一个项目或一个实验一把 key，「周二那 $14 是谁烧的」这个问题就有一个可以直接读出来的答案，而不是靠猜。

同一本账上还有一行：如果你自己的代码通过 /v1/messages 调用 Claude 的服务端 web_search 或 code_execution 工具，这些轮次按该模型的标准 token 费率计量，出现在同一套 trace 里——见[通过 API 使用 Claude 联网搜索与代码执行](https://router.one/zh/blog/claude-web-search-code-execution-api)。

「一个实验一把带上限的 key」这个模式，和[按 key 归因成本](https://router.one/zh/blog/track-llm-api-costs-per-key)里描述的是同一套机制；账本具体记录什么，见[成本追踪页](https://router.one/zh/llm-cost-tracking)。

## 订阅焦虑，还是一个看得见的钱包

Claude Code 账单让人刺痛的，从来不是金额本身，而是它成形的过程你看不见。包月订阅用藏起计价器来回应这种焦虑；没有可观测性的按量 API 则让你害怕计价器。第三条路就是这篇文章一直在铺垫的：一个预充值的钱包，每把 key 都有硬上限，每笔扣费背后都有一条请求 trace。你充了一个确定的数，key 花不过你设的顶，账本告诉你钱去了哪个会话、哪个模型、哪个循环。这里的价值主张不是一个更便宜的黑盒——是根本没有黑盒。

如果你确实偏好可预期的月度支出，Router One 在钱包之外也有[订阅方案](https://router.one/zh/pricing)；订阅与 Claude Max 的逐项对照见 [Claude Max 替代方案](https://router.one/zh/claude-max-alternative)。从中国大陆接入——直连端点无需 VPN——完整配置见 [Claude Code 中国指南](https://router.one/zh/claude-code-china)。Claude Code 之外的省钱打法，见[降低 LLM API 成本](https://router.one/zh/blog/reduce-llm-api-costs)。

## 常见问题

**Claude Code 为什么消耗这么多 token？**
因为 agentic 编程在设计上就是上下文密集的：读过的每个文件都变成留在对话里的输入 token，每一轮都重发全部累积上下文，子代理跑的是独立计费的对话，测试-修复循环每迭代一次就再付一轮全量上下文的钱。这是工具真正干活的成本，不是故障——但它对模型分工、更短的会话和 key 级上限都有很好的响应。

**日常使用 Claude Code 最省钱的方式是什么？**
按难度分配模型：Claude Sonnet 5 做日常主力，只在推理深度成为瓶颈时用 Claude Opus 4.8，改名、样板代码这类机械活交给 Claude Haiku 4.5。因为模型输入价每轮都乘在整个重发的上下文上，这种混合用法的成本通常只有全程旗舰的一小部分。各模型实时单价见[模型页](https://router.one/zh/models)。

**怎么给 Claude Code 设一个花费硬上限？**
让它走一把带上限的网关 key。在 Router One 上创建 API key，把 maxSpend 设成你的上限，再通过 ANTHROPIC_BASE_URL 和 ANTHROPIC_AUTH_TOKEN 让 Claude Code 指向它；无论会话里发生什么，key 到顶即停。rateLimit 和 tokenLimitTpm 还能在过程中掐住失控循环，每请求 trace 则精确展示每一笔花在了哪。

**缩短会话真的能省钱吗？**
能，而且是模型选择之外最可靠的杠杆。API 每一轮都重发完整对话，长会话在反复为自己的历史付钱，总成本增长远超线性。每个任务重开会话、把请求限定到具体文件、给路径而不是粘贴大文件，都在直接缩小被反复计费的上下文。

**给 agent 设每分钟 token 上限安全吗？**
安全——tokenLimitTpm 是刹车，不是墙。正常节奏的会话不会碰到一个合理的每分钟上限，而失控的「读-改-测」旋涡会被压到你选定的速率，而不是自由燃烧。再叠加 maxSpend 作为绝对兜底，任何实验的最坏情况都被双重限定：速度和总额。

## 诚实的总结

Claude Code 每小时很贵，因为它干了这一小时的活：读、改、测、重试。你没法让这套架构变便宜，但它的三个输入都在你手里——日常工作交给 Claude Sonnet 5、有意识地升级模型，会话保持短小和聚焦，所有流量走一把 maxSpend 由你事先定好的 key。到 [router.one](https://router.one/zh) 给钱包充值，给 key 上好上限，然后去读账本，而不是害怕账单。

## 相关页面

- 本页规范地址：https://router.one/zh/blog/claude-code-token-costs-explained
- Claude Code 中国：https://router.one/zh/claude-code-china
- 全部博客文章：https://router.one/zh/blog
- 模型与每模型 token 价格：https://router.one/zh/models （markdown：https://router.one/zh/models.md ）
- 定价：https://router.one/zh/pricing
- API 文档（markdown）：https://router.one/zh/docs.md
- 公司事实（markdown）：https://router.one/zh/facts/company.md
