Claude Code 的 token 是什么?为什么一轮要 8 万
Claude token 约等于 3.5 个字符。了解 Claude Code 单轮为何计费 80,000 个 token,以及闲置 5 分钟后下一轮成本为何可能变为 5 倍。
Claude 中的 token 是什么?
Token 是 Claude 读取和生成文本时使用的单位:它可以是单词的一部分,大约相当于 3.5 个英文字符。这个数值来自 Anthropic 自己的术语表。计入空格和标点后,每个单词通常对应远不止 1 个 token,因此 1,000 个英文单词的普通文本通常超过 1,300 个 token。代码的每行 token 消耗更高:花括号、运算符、下划线和缩进会使每个字符拆分出比英文更多的 token。几百行的源文件通常就有几千个 token。Agent 决定读取一个 2,000 行的文件时,在写入任何新代码之前,token 消耗就可能已经达到五位数。
Tokenization 有两点容易造成误解。第一,它取决于模型。截至 July 2026,Opus 4.7 及更高版本、Sonnet 5 和 Fable 5 使用了更新的 tokenizer。对于相同文本,它生成的 token 大约比早期 Claude 模型多 30%(具体增幅取决于内容)。因此,即使每个 token 的价格没有随之上涨,按 token 计算的预算也会发生变化。第二,tiktoken 是博客文章通常使用的库,但它是 OpenAI 的 tokenizer。在普通文本中,它会使 Claude 的 token 数少算约 15–20%;对于代码,少算幅度更大。唯一可信的计数方式是 count_tokens endpoint,下面将介绍该方法。
一次编码会话为何会产生这样的费用
无论是 API 账单还是订阅限额,每笔 Claude 费用最终都取决于同一个计量项:输入 token 和输出 token。定价页面看起来很简单:每 100 万个输入 token 收取多少美元,每 100 万个输出 token 收取多少美元。但页面没有说明,在代理式编码会话中,输入端的消耗远高于直觉预期,因为每一轮都会重新发送完整对话。我从事按量计费基础设施销售已有 15 年,这是我见过的第一种计量项:大多数客户确实无法说清究竟是什么在消耗它。本节将说明如何读取这一计量项:代理式会话中的输入和输出分别包含什么,重复发送循环为何如此昂贵,提示缓存如何改变计算方式,以及哪些控制因素确实能够改变最终数值。
所有内容都是输入:计费系统实际统计的内容
人们通常以为自己是在为 Claude 编写的代码付费。在代理会话中,这只是很小的一项费用。输入 token 的单价更低,但数量要高得多,主要包括:
- 系统提示词。 Claude Code 自身的运行框架指令,以及您的
CLAUDE.md和记忆文件。它们会在会话开始时加载,并在之后的每个请求中继续存在。 - 工具定义。 代理可能调用的每个工具模式。您连接的每个 MCP 服务器都会增加这项固定开销。不过,Claude Code 现在默认延迟加载完整的 MCP 工具定义,因此在首次使用工具前,上下文中只保留工具名称。这会降低成本,但无法完全消除。
- 代理读取的每个文件。 对源文件执行
Read会将整个文件放入上下文,并一直保留在那里。 - 每个工具结果。 测试运行结果、grep 输出、终端输出、构建日志,全部都会作为输入 token 返回。失败的测试套件如果打印了 8,000 行,您就要为一本小书的内容付费。
- 到目前为止的完整对话,并在每轮请求中重新发送。 这一点值得单独说明。
没人计入价格的重发成本
Claude API 是无状态的。它不会在请求之间记住您的会话,实际上没有任何组件会记住。第 2 轮请求中,客户端会发送第 1 轮消息、第 1 轮响应以及您的新消息。第 50 轮请求中,客户端会重新发送第 1 到第 49 轮消息、读取过的所有文件、所有工具结果、所有差异,以及第 50 轮消息。模型每次都会重新读取完整的对话记录,这些重新读取的 token 都会按输入计费。
结果是:每轮成本大致会随会话长度线性增长,而整个会话的总成本大致呈平方增长。第 3 轮中只需支付半美分的消息,到第 60 轮可能会贵 20 倍,即使问题仍然只有一行,因为它携带了 60 轮消息的全部负载。这一事实可以解释大多数“为什么账单这么高”的工单。而且这并不是 Claude 特有的问题;所有给人以有状态体验的 LLM 产品,底层都是无状态 API 加上重发循环。
输出内容:你看到的结果,以及看不到的思考
输出 token 的费用很高。在当前产品线中,输出费率是输入费率的 5 倍(截至 July 2026,Opus 4.8 为 $5/$25,Sonnet 5 标价为 $3/$15,Haiku 4.5 为 $1/$5)。输出包括 Claude 生成的文本和代码,以及思考 token:模型在回答前执行的内部推理。这里有两点需要注意。思考按输出费率计费,并计入 max_tokens。如果 API 响应因 stop_reason: "max_tokens" 终止,且答案被截断,通常表示思考过程在生成答案前已经耗尽了预算。在当前模型中,推理摘要也可能不会显示。Opus 4.8、Sonnet 5 和 Fable 5 默认不显示推理摘要,但思考过程仍会执行并计费。不可见不等于免费。
Claude Code 默认启用扩展思考,因为这能显著改善多步骤任务的结果,默认预算在每次请求中可能达到数万个 token。对于简单任务,可以降低思考量:使用 /effort 或在 /model 中降低 effort level,也可以在 /config 中调整思考设置。这是切实有效的成本控制手段,不是凭感觉调整。
提示词缓存会改变计算方式
提示词缓存是重发循环不会让所有人破产的原因。API 可以缓存提示词、系统提示词、工具定义和对话历史中的稳定前缀,并在下一次请求中以很低的价格提供这些内容。截至 2026 年 7 月,倍率如下:缓存写入按基础输入价格的 1.25× 计费(1 小时版本为 2×),缓存读取按 0.1× 计费。写入需要支付溢价;读取可享受 90% 的折扣。只要读取一次,节省的费用就已经超过 5 分钟缓存写入的溢价。
Claude Code 会为您管理缓存。在运行正常的会话中,那次巨大的重发几乎全部通过缓存提供。但默认缓存的有效期是自上次使用起 5 分钟。如果您离开去喝咖啡,回来时间隔超过了有效期,再发送一条消息,缓存已经过期,之前累积的整个前缀就会按 1.25× 重新写入,而不是按 0.1× 读取。对于 150K token 的会话,一次冷启动轮次的成本可能超过十几次热启动轮次。需要牢记的反直觉结果是:先空闲再恢复的节奏可能比连续工作更贵,因为每次超过 TTL 的空闲间隔,都会把下一轮从低价读取变成高价重新写入。请分段集中工作;不要让一个巨大的会话每隔十分钟只接收一条消息。
如果您通过 自己的 VPS 上的应用调用 API,这些功能不会自动为您提供。最常见的自我造成的问题,是将时间戳或请求 ID 插入系统提示词,导致每次请求的前缀字节发生变化,并静默禁用缓存。判断依据是:在外观相同的调用中,usage.cache_read_input_tokens始终为 0。
公式及计算示例
不要相信“每个会话固定收费 $X”这类说法。会话成本可能相差两个数量级。真正适用的是以下公式:
turn cost = (uncached input x base input price)
+ (cache writes x 1.25 x base input price)
+ (cache reads x 0.10 x base input price)
+ (output incl. thinking x output price)
session cost = sum over all turns以下是 Claude Opus 4.8 的计算示例。截至 July 2026,该模型的输入价格为每百万个 token $5,输出价格为每百万个 token $25。某次会话中途的一轮请求包含 80,000 个累计上下文 token:其中 75,000 个从缓存读取,3,000 个新写入缓存,2,000 个未缓存的新输入 token,以及 1,500 个输出 token(包括思考 token)。
- 缓存读取:75,000 × $0.50/M = $0.0375
- 缓存写入:3,000 × $6.25/M = $0.019
- 未缓存输入:2,000 × $5/M = $0.010
- 输出:1,500 × $25/M = $0.0375
这一轮约为 $0.10;进行 50 轮类似请求,成本约为 $5。现在看缓存过期后的同一轮请求:完整的 80,000 个 token 都要按 $6.25/M 重新写入缓存。仅此项在计算输出前就需要 $0.50,约为缓存有效时整轮成本的 5 倍,但完成的是相同工作。这一差额用一个数字概括了缓存的全部影响。这四行计算也是比较不同供应商时唯一可靠的方法,因为标价完全忽略了缓存读取和思考成本;在 3 个真实任务上运行这些计算,就能看出 Claude 账单高于还是低于 OpenAI 账单。
如果您想了解计费单位本身,而不是单轮请求的成本,了解一百万个 token 相当于多少页面、文件和费用会将相同的计算提升一个层级。以下数据用于校准,而不是预测:截至 July 2026,Anthropic 公布的企业 Claude Code 部署数据表明,平均每位开发者每天活跃使用的成本约为 $13,每月约为 $150–250;90% 的用户每天的成本低于 $30。实际成本取决于模型选择、会话管理方式和代码库规模,这正是下面这些调节因素重要的原因。
查看自身用量
在 Claude Code 中,命令是 /usage(/cost 仍然可用,它是一个别名)。顶部的 Session 区块会显示当前会话的 token 统计信息和本地计算的费用估算;在订阅计划中,同一界面还会显示计划限额进度条,并将近期用量细分归因到 skills、子代理、插件和各个 MCP 服务器。对于 API 账户,Claude Console 中的用量页面才是权威的计费来源,CLI 中的数值只是估算值。/context 会绘制彩色网格,显示 哪些内容占用了上下文窗口,包括系统提示、工具、MCP 定义、文件和历史记录。这是发现过大的 CLAUDE.md 或消息过多的 MCP 服务器的最快方法;传入 all 可展开完整的逐项明细。
通过 API 时,每个响应都会准确说明发生了什么:
response = client.messages.create(model="claude-sonnet-5", max_tokens=2048,
messages=messages)
u = response.usage
total_prompt = u.input_tokens + u.cache_creation_input_tokens + u.cache_read_input_tokens
print(f"uncached={u.input_tokens} written={u.cache_creation_input_tokens} "
f"read={u.cache_read_input_tokens} output={u.output_tokens}")请注意,input_tokens 仅表示未缓存的剩余部分,真实的提示大小是 3 个输入字段之和。某个运行了 1 小时的代理显示 input_tokens: 4000,并不代表成本低;其余 200,000 个 token 是通过缓存提供的。若要在发送前进行估算,请使用 token 计数端点。该端点可免费调用,使用独立的速率限制,并根据您指定的模型所使用的 tokenizer 进行计数(结果应视为近似值;计费以实际请求为准):
count = client.messages.count_tokens(model="claude-sonnet-5",
messages=[{"role": "user", "content": big_file}])
print(count.input_tokens)鉴于上述原因,切勿 tiktoken。
订阅计划与按需付费
本指南中的操作在所有情况下都相同,只有结算方式不同。使用 API key 时,Anthropic 按发布的价格按 token 计费,采用按需付费模式;上文的每个数字都代表实际费用。计费开始得比大多数人预期更早,因为没有可依赖的免费层,只有注册时获得的一小笔额度,以及少数不收费的 endpoint。这就是新 API 账户在绑定银行卡前实际获得的内容。使用 Claude 订阅计划(Pro、Max、Team、Enterprise)时,Claude Code 的用量改为从计划包含的额度中扣除:截至 2026 年 7 月,该额度包括滚动的五小时会话窗口和每周窗口,并由不同模型以及 claude.ai 聊天共享;/usage美元数值仅供参考,不代表账单金额。用尽某个窗口后,您会看到 "You've hit your session limit" 或 "You've hit your weekly limit",并显示重置时间。使用 /model 切换模型也不会恢复访问权限,因为这些窗口由所有模型共享。这些窗口跟随账户,而不是跟随您使用的客户端。如果您还在确认哪些功能可在 Linux 上原生运行,以及每种界面由哪个计划覆盖,这一点尤其重要。您实际用尽的是哪一个窗口,会决定需要等待多久,以及此期间采取什么措施最合适。因此,您应了解任务进行到一半触达限制时有哪些选项。计划还可以选择启用用量额度,通过 /usage-credits 管理,以购买超出上限的用量。我不会在这里列出各计划的额度,因为它们是这一主题中变化最快的数字。请改为查看 claude.com/pricing 和您自己的 /usage 使用情况栏。订阅用户仍需关注 token 的使用机制;浪费的会话会以消耗美元同样的方式消耗您的窗口额度。有关订阅计划,请参阅哪个 Claude 计划适合您的使用场景。
真正有效的控制手段
- 限定代理读取的范围。 “修复
auth.py中的验证错误”只需读取一个文件;“改进这个代码库”则会读取40个文件。保持CLAUDE.md精简,因为它会加载到每个会话中。只保留必要内容,并将特定于工作流的说明移到按需加载的技能中。 - 清晰且简洁。 在不相关的任务之间使用
/clear;后续每条消息都会重新发送并再次计费过时的上下文。在一个较长的任务中,/compact Focus on the failing tests and the diff会压缩历史记录,避免进入二次增长曲线。 - 选择合适规模的模型。 Sonnet 可处理大多数编码任务。截至2026年7月,入门价格为每百万 token $2/$10(标价为 $3/$15;Opus 为 $5/$25),而 Haiku 的价格为 $1/$5,适合日志分类等机械性的子代理工作。Fable 5 处于另一端,价格为 $10/$50,是 Opus 两档价格的两倍。因此,在将其选用于常规工作前,最好了解哪些任务确实值得这个价格。
/model可在会话中途切换模型。 - 预先过滤冗长输出。 在 Claude 读取测试结果前,使用 hook 将测试运行结果过滤为仅包含失败项,可将20,000个 token 的工具结果缩减为300个 token;该步骤还会应用于后续对该轮内容的每次重新发送。
- 批处理非交互任务。 对于您自己的 API 流水线、分类、批量审查和夜间任务,Batches API 可在异步交付的条件下,以5折价格运行相同的模型。
- 注意缓存时钟。 连续工作一段时间。闲置的 运行于 VPS 的 tmux 中的 Claude Code 会话不会产生费用;只有执行一轮对话时才会消耗 token。但闲置期间会使预热缓存失效,下一轮需要重新发送内容并产生费用。
FAQ
编程会话在 Claude Code 中会使用多少 token?
没有固定数量。文件和历史记录累积后,单个会话中途的请求通常会包含数万个 prompt token;完整工作会话可能达到数百万 token,其中大多数通过缓存提供,价格约为基础费率的十分之一。作为参考,Anthropic 截至 2026 年 7 月公布的企业数据表明,平均每位开发者每个活跃日的费用约为 $13,90% 的用户费用低于 $30。在自己的会话中运行 /usage;实际监控 5 分钟比任何公开平均值都更有参考价值。
thinking token 在不可见时也会收费吗?
会。thinking token 按 output token 计费,使用较高的费率,并计入 max_tokens。当前模型即使不在界面中显示 reasoning summary,也会对这些 token 计费。如果响应在可见答案完成前以 stop_reason: "max_tokens" 截断,通常表示 thinking 已消耗预算。在 Claude Code 中,对于不需要深度推理的任务,可使用 /effort 降低 effort level。
为什么 Claude Code 的长会话每条消息费用更高?
因为 API 是无状态的:每次请求都会重新发送完整对话、读取过的每个文件、工具结果和此前的交流,并将其作为计费的 input。因此,第 50 次请求会携带第 1 到第 49 次请求的全部内容。Prompt caching 会以约为基础 input 价格十分之一的费率提供重复前缀,但前缀本身会持续增长;如果空闲时间超过 cache TTL,下一次请求就会将完整内容按全价重新发送。/compact 可缩短历史记录;/clear 可重置历史记录。
如何检查 Claude 的 token 使用量和费用?
在 Claude Code 中,/usage 会显示会话 token 统计信息、本地费用估算,以及订阅计划的限额进度条(/cost 是其别名);/context 会显示哪些内容正在占用上下文窗口。要获取权威的 API 账单数据,请使用 Claude Console 中的 usage 页面。在自己的代码中读取 response.usage;将 input_tokens、cache_creation_input_tokens 和 cache_read_input_tokens 相加即可得到真实的 prompt 大小。应使用 count_tokens endpoint 提前估算,绝不要使用 tiktoken。