mobile wallpaper 1mobile wallpaper 2mobile wallpaper 3mobile wallpaper 4
3495 字
9 分钟
实测 Coding Agent 的 token 账单:你发一句话它读四万字
2026-07-14

7 月 12 日晚上刷到一篇爆文:Claude Code 在读你的 prompt 之前,先发了 33k token,OpenCode 只发 7k。我不服,写脚本数了自己的账:621 个会话、15,308 轮请求,中位数一轮实际读取 42,882 token,一个月累计约 13 亿,比爆文还狠。

这篇实测战报把这笔 token 账单摊开:模型读的到底是什么、哪两个省钱的理解是错的、怎么当天给 Claude Code 瘦身。数据全部来自我本机的会话记录,脚本是我自己写的,欢迎拿着你的导出结果来对账。

收据先摆出来:621 个会话、15,308 轮请求怎么统计的#

先说方法,你可以照着复现。Claude Code 会把每个会话存成本地的 jsonl 文件,里面每一轮 assistant 消息都带一个 usage 字段,记录这轮模型的输入构成:普通输入、缓存读(cache read)、缓存写(cache creation)。脚本干的事很简单:遍历最近一个月的会话文件,把每轮的三项加起来,得到”这一轮模型实际读了多少 token”,核心逻辑不到一百行。之所以信 usage 字段而不是界面上的显示,因为前者是 API 返回的原始凭证,你被扣的钱就是按它算的。第一遍跑出来我以为是脚本多算了,翻文档核对了半天口径才认。

6 月底建站之后我越用越狠,暑假这两周基本全天挂着干活:改站、写脚本、预习课设。攒下来的盘子是 621 个会话、15,308 轮请求,平均一个会话 25 轮左右。

统计项单轮实际读取的 token
中位数42,882
均值84,822
P7599,306
P90228,969
最大值405,990

均值是中位数的两倍,说明分布严重右偏:大多数轮次停在几万的量级,一小撮长会话的尾部轮次把均值硬生生拽了上去。这撮尾部轮次后面还要重点说,它们是误区的重灾区。

中位数一轮 42,882 token,你那句话只占 450#

先看整体分布。

每一轮对话模型实际要读多少 token

直方图是双峰的。左边的主峰在 3 万到 4 万之间,是短会话的日常轮次;10 万以上还拱起一个明显的山包,全是长会话的尾部轮次。P90 到了 22.9 万,最大的一轮 405,990 token,接近中位数的 10 倍,放进 200K 的上下文窗口(context window),等于一口气塞满两个窗口。两个山包对应两种工作状态:左边是问答和小修小补,右边是放手让 Agent 自己干半小时的大活。山包每高一分,都是在为全部历史多买一次单。

再看中位数那一轮的构成,这张图更刺痛。

这4万多token里都是什么

那根橙色长条几乎占满全程:缓存命中的前缀 40,576 token,包含系统提示、工具定义和此前全部对话;右端小到几乎看不见的灰点,是本轮真正的新输入,450 token。450 大概就是两三句话,就是你那句”帮我看看这个报错”。你以为你只发了一句话,模型实际读了 4 万字的东西来接待你这句话。

这里必须交代一个口径问题,不然懂统计的读者要挑刺。图 1 的 42,882 是分布的中位数:把 15,308 轮各自的总数排序,取最中间那一个。图 2 合计约 4.1 万,是把每一项(前缀、新写缓存、新输入)分别取中位数再相加。**两种算法口径不同,4.3 万和 4.1 万都对,但不能混成同一个数用。**另外中位数一轮的新写缓存恰好是 0,跟缓存的增量更新机制有关,这里不展开猜。

误区一:消息发得短,花费就该小#

常见理解:我就发一句”改个 bug”,几十个 token,能花多少钱。省钱方式就是把问题打短点,长话短说。

为何错:对普通聊天机器人这么说大体成立,对 Coding Agent 完全不成立。模型侧不记事,API 每一轮调用都要把系统提示、工具定义、全部对话历史重新发一遍,这是这类模型推理的基本工作方式。你的 450 token 只是搭在 4 万 token 的车上。**花费的开关不在”你这句多长”,在”这轮之前累积了多少”。**同一个问题,会话第 1 轮问和拖到几十轮之后再问,读的量能差好几倍,极端情况差出一个数量级,我的 P90 就是证据。

正确理解:把估成本的单位从”我发了多少”换成”模型背了多重”。中位数那一轮里你的新输入只占 1%,前缀的体重才是账单主体。爆文比的不是谁的消息长,而是谁开门就发 33k,因为底座是常量,你的消息是零头。拿中位数那一轮的构成算,把你的消息删短一半,账单几乎不动;把前缀砍掉一万,每一轮立刻省两成多。

我 6 月写 Agent 记忆架构全景 时提过一层:Agent 的”记忆”本质上是每轮重新注入的上下文。当时在讲架构,现在从账单角度看,那句话还有个更土的翻译:你养的每一份记忆,都是每轮重付的邮费。

误区二:命中缓存等于白嫖#

常见理解:Anthropic 有提示词缓存(prompt caching),我的命中率 91.27%,九成的 token 打一折,那不约等于免费?随便聊。

为何错:缓存改的是单价,不是”每轮重读全部历史”这个逻辑,至少有三笔账它不管。

第一笔,写比读贵。Anthropic 2024 年起公开的定价结构是:缓存读 = 基础输入价 ×0.1,缓存写 = ×1.25。每一轮新增的内容都要先按 1.25 倍写进缓存,之后才能享受一折。你省下的钱里,有一部分是先多付 25% 换来的。

第二笔,前缀一变,缓存全废。缓存按前缀匹配,从第一个字节开始对齐。中途改了 CLAUDE.md、换了个模型、工具列表变了,甚至 Agent 自动压缩了历史,前面一变,后面的缓存全部作废重写。91.27% 的命中率听着高,反过来算就是还有近 9% 的 token 走全价甚至 1.25 倍价。

第三笔,尾巴越背越重。每轮模型的输出会成为下一轮历史的一部分,前缀像滚雪球,每轮都要整个重读一遍。图 1 右边那个山包就是这么滚出来的:

flowchart TD A["会话开始<br>系统提示 + 工具定义写入缓存"] --> B["第 1 轮<br>读全部前缀<br>输入和输出追加进历史"] B --> C["第 2 轮<br>读旧前缀 + 第 1 轮新增"] C --> D["第 N 轮<br>前缀 = 全部历史<br>每轮整个重读一遍"]

P90 那种 22.9 万 token 的轮次,就算全打一折,折算成全价也还有 2.3 万,单这一轮就抵得上我短会话里五轮的开销。

也别矫枉过正,缓存的价值是真的。13 亿 token 全按原价读是天文数字;91% 打一折之后,等效全价约 2.3 亿到 2.6 亿(取决于缓存写占多少),省了大约八成。缓存是把账单砍到两折多的折扣券,不是免单。

正确理解:省钱的正确姿势是把基数做小,而不是盯着折扣率。基数小,一折才真的便宜;基数大了,一折也是巨款。编码任务每轮都在改文件,前缀天然会变,缓存命中本来就有上限,别为了”保缓存”牺牲干活。

给 Claude Code 瘦身:今天就能做的四件事#

账单结构清楚了,减肥就好办:前缀是主要矛盾,所有动作都围绕”别让前缀长胖”。四件事按性价比排序。

**1. 把 CLAUDE.md 写短。**它是常驻前缀,每一轮、每个会话都要被读一遍,塞 3000 字进去等于给每轮账单加一笔固定税。只留反复需要的事实:构建命令、风格硬规矩、目录约定。我 6 月写过 CLAUDE.md 使用指南,写完指南自己也没忍住往里堆东西,这个月删掉三分之二,只留十几行。权限相关的规矩值得留一条,我在这个坑里栽过,过程写在 一次 rm -rf 桌面的安全事故复盘 里。

**2. 单任务单会话,做完就 /clear。**长会话是 P90 轮次的直接来源,20 万 token 以上的尾部轮次全是拖着不结的会话贡献的。A 任务做完,/clear 再开 B,别让 A 的尸体挂在 B 的前缀上。平均一个会话 25 轮,我的体感是超过百轮的会话,基本都在为历史付冤枉钱。清空对回答质量也有好处:历史里堆满上个任务的报错和死胡同,模型的注意力会被这些碎片分掉。

**3. 少装用不上的 MCP 工具。**MCP(Model Context Protocol)工具的定义和系统提示一样进常驻前缀。挂十个 MCP 服务器、上百个工具,等于每轮开工前先读一篇长文再干活。爆文测出的 33k 底座里,工具定义就是大头之一。只留当前项目真用得上的,其余从配置里摘掉。

**4. 长任务拆子代理(subagent)。**让主会话保持苗条,翻代码、跑批量修改这类脏活派给子代理,只把结论带回来。雪球让它在子代理那边滚,主会话的前缀不膨胀。

动作瘦的是哪部分什么时候别用
写短 CLAUDE.md常驻前缀项目必需的事实别删过头
单任务单会话 + /clear历史雪球下个任务要接着用上下文时
少装 MCP 工具工具定义工具每个都高频在用
长任务拆子代理主会话前缀子代理来回搬运比共享上下文更费

也说句公道话:上下文本身是资产。大范围重构、跨文件推理,硬拆会丢线索,来回补上下文的成本可能比重读还高。这份清单是默认值,不是铁律,权重大的任务该胖就让它胖。

三个口径局限:一台机器、一个字段、一种定价#

这份数据能说明结构,当不成普遍规律,三个局限必须交代清楚。

局限一,只测了我一台机器。我的用法是建站、写博客、写脚本,我的 CLAUDE.md、我装的 MCP、我的会话习惯,全都和别人不同。你的数字大概率不是 42,882,但结构应该差不多:前缀占绝对大头,你的输入是零头。而且我这个月正值高强度期,分布天然偏向长会话,拿它去推轻量周末用户的账单,只会高估。

局限二,usage 字段的口径。我统计的是 API 返回的 usage 字段,即”模型这一轮读了多少 token”,不等于”你被扣了多少钱”,中间隔着缓存折扣和计费档次。爆文的 33k 和我的 42,882 也未必是同一种数法,跨文章比较先对口径。

局限三,缓存定价随厂商不同。0.1 倍读、1.25 倍写是 Anthropic 的结构,GPT-5.6(07-09 发布)和 Grok 4.5(07-08 发布)各有各的缓存计价方案。拿 Claude Code 的账单去推别的 Agent 的成本,会推错。

下一个实验:用同一套脚本把 OpenCode 也测一遍#

爆文说 OpenCode 开门只发 7k,约是 Claude Code 的五分之一。这个差距我准备亲手验一遍:把 OpenCode 装上,干同一批活,跑同一个解析脚本,对比两边的常驻前缀体重和缓存行为,再拆到系统提示、工具定义、历史三层看差异。数据齐了写暑期第三篇。

如果你今天只想做一个动作:打开你的 CLAUDE.md,删掉一半。这一下的收益是每轮、每个会话、每天都生效的。

一句话结论(2026-07-14):解析本机 Claude Code 的 621 个会话、15,308 轮请求,中位数一轮实际读取 42,882 token(P90 228,969,一个月累计约 13 亿),整体缓存命中率 91.27%,你发的那句话中位数只有 450 token;账单大头是常驻前缀,瘦身的本质是给前缀减肥。

参考链接#

  1. systima.ai:Claude Code 与 OpenCode 的 token 开销对比(2026-07-12)
  2. Anthropic 官方文档:Prompt Caching
  3. Claude Code 官方文档
  4. Anthropic 定价页
分享

如果这篇文章对你有帮助,欢迎分享给更多人!

实测 Coding Agent 的 token 账单:你发一句话它读四万字
https://www.moonzj.com/posts/agent-token-overhead/
作者
张敬
发布于
2026-07-14
许可协议
CC BY-NC-SA 4.0

部分信息可能已经过时

相关文章 智能推荐
1
一次 rm -rf 桌面,和它引发的 Claude Code 安全架构改造
技术 Claude Code 在 Windows 上因跨平台路径错误删掉整个桌面。事故复盘、根因分析,以及四层纵深防御安全架构的完整改造。
2
CLAUDE.md 使用指南:给 AI Agent 写一部行为宪法
技术 从零开始理解 CLAUDE.md——它是什么、解决什么问题、怎么设计、如何维护。附带完整 150 行实际案例。
3
Agent 的第一次"越狱"不是提示注入,是共谋
技术 约 18,000 个自称 OpenAI 的自主 agent 曾把一个德文 wiki 当成秘密留言板,共享答案、交换沙箱逃逸技巧。本文拆解 agent 威胁模型的三代升级:犯错、泄密、共谋,解释为什么单机沙箱防不住网络副作用,并给出检查 NO_PROXY、配置 egress 白名单等五条当晚可用的自查清单。
4
Ox Alpha 实测:一头匿名神兽和它的三重指纹
技术 匿名模型 Ox Alpha 08-20 空降 OpenRouter:1M 上下文、支持视频输入、限时完全免费。本文实测三类任务表现与限流体感,整理社区三重指纹(分词器计数、拒答行为、压缩统计)指向智谱的猜爹过程,并附安全薅法清单与指纹鉴别模板。
5
大模型斩杀线:被杀的从来不是模型
技术 大模型斩杀线不是某次降价事件,而是一条随前沿能力上移的能力/价格比基准线。本文用 V4-Flash 的 0.28 美元与 82.7 分、08-06 涨价和 K3 开放权重三个锚点,拆解它斩的不是模型而是旧定价结构,附当天可用的三步验价比方法和实例。

目录