分册一 · 账本

账本与测量边界。

十一种 harness、一个明写的截止时刻,以及你在比较两个数字之前需要的全部规则。

截止 2026-09-12T02:40:59Z 已记录 7,404,583,808 去重 5,695,506,675

BG1SB  ·   ·  约 7 分钟阅读

这是《七十亿 token 的全程拆解》的查询分册。它单独存在,是为了让叙事不必把每个数字辩护两遍。这里的一切都是快照:普查取在 2026-09-12T02:40:59Z,每个 harness 带自己的测量窗口,「什么可以比、什么不可以比」的规则是写下来的,不是默认的。如果你只是来核对一个数字,先看表格,然后在引用之前读一遍「边界」。

同一截止时刻的十一种 harness

只列已记录用量。估算与未记录单列,永不并入合计。

harnesstokens(已记录)测量窗口会话说明
claude-code2,527,597,5342026-08-08 .. 2026-09-0848较早的历史已被保留策略删除;按 message.id 去重后为 818,520,401(6,600 个 API 响应)
pi1,926,003,1392026-07-22 .. 2026-09-1267包含执行本次普查的那个会话本身
kimi-code1,254,875,2542026-07-18 .. 2026-09-06245wire 文件口径;只取 usageScope == "turn"
codex547,796,6672026-05-27 .. 2026-08-30116已停用。第二个存储独立复核得 546,858,767(相差 0.17%)
mulerun537,961,6112026-05-20 .. 2026-09-06183
Hermes485,213,3482026-05-15 .. 2026-07-24292此前被发表为「未记录」——它的 token 在 sessions 表里
AgnesCode82,931,6752026-07-13 .. 2026-07-261,142完全不在早先那次普查里
cursor27,079,705不记录工作目录,无法归属到某个仓库
DeepSeek Harness10,931,0692026-08-162完全不在早先那次普查里;会话日志为压缩格式
opencode4,190,8906
Qoder2,916agent memory 计数器,不是会话账本
合计(已记录)7,404,583,808比已发表 census 的 7,007,437,567 多 397,146,241
合计(去重口径)5,695,506,675唯一可跨时点比较的口径
事实 · 双口径

claude-code 会为同一个 API 响应的每个分块各写一条 usage 记录,逐行求和会把它的消耗放大约 2.7 倍;按 message.id 去重才是真实的 API 消耗。其他 harness 没有这个问题——所以两个合计的差额恰好只等于 claude-code 这一项修正,不多不少。

事实 · 已记录与估算不合并

iFlow 记录了 185 个会话、37,202 轮对话,但每个用量字段都是零,所以它的体量只能按字符数估算——大约 247,000,000 个 token,且区间很宽。它不进任何合计。这是两种不同性质的数字,不能相加。

推断 · 三个 harness 为什么漏了

早先那次普查不是粗心,是规则太弱:它在查过一张表之后就把某个 harness 判定为「未记录」。Hermes 把消息正文放在一张表里(其 token 列全为零),把会话合计放在另一张表里。修正办法是程序性的:任何 harness 在被标为「未记录」之前,必须先把它存储里的每一张表都列出来查过。

账本为什么会移动

三种互相独立的机制,全部已复现。它们都不是噪声。

保留策略会删掉历史

2026-09-07T13:13:57Z,claude-code 执行了自己的日志清理。于是同一个 harness 比一周前计了 679,899,086 个 token——尽管中间这一周工作量很重。建立在滑动窗口上的总量不是累计资产,而是从「别人控制的窗口」里读出的一次读数。

观察者在样本之内

普查跑在它所测量的同一台机器上,而执行普查的这个会话正在往被读取的日志里写东西。相隔十二分钟,同一个脚本给出的 pi 合计相差 51,427,037——全部来自测量会话自己。任何重跑都会不一样;唯一的对策是声明截止时刻。

裸日期不是零点

git log --since=2026-09-05 会被解析成那一天的此刻git rev-parse --since=2026-09-05 得到 1788576106 = 2026-09-05 10:41:46 +0800。在 01:47 和 10:41 各跑一次,提交数会不一样。永远把时区写全:--since='2026-09-05T00:00:00+08:00'

论点 · 快照纪律

稳定的读数和不稳定的读数都是信息,但只有稳定的那个配叫「总量」。工作规则是:离开这一页的每个数值都带截止时刻与明写的测量窗口。凡是能做第二次测量的,就把第二次也报出来——codex 的数字在两条独立推导下逐位相同,而这种一致本身就是方法可靠的证据。

提交数与口径陷阱

提交数只有同一种统计规则之内才可比。

仓库HEAD 提交最新 tag阶段
MRRC181V5.7.0通用远控产品族
mrrc_ft710162v1.8.0垂直切片 + harness 成型
mrrc_modern281v1.14.2平台抽象
ft8253v1.1.0工作流轨 + 首日契约复用
sunsdr(含 SunsdrMobile)67 + 9v1.0SDR 轨 + iOS 客户端
website111表达与证据系统
事实 · 口径警告

上表是 HEAD 口径(git log --oneline | wc -l)。用 --all 统计同一批仓库会得到显著不同的数字——MRRC 会变成 328、website 仓会变成 213——因为未合并分支与旁支也被算了进去。两个数字都不算错,混用才是错。本系列所有提交数统一采用 HEAD 口径;而按 message 前缀粗分带来的方法误差约为 ±10%

这些数字能支撑什么、不能支撑什么

本系列每个数字都活在这些限制之内。它们是明写的,不是暗示的。

  1. token 不能归因到单次提交。所有「提交 × token」的对应都是「工作目录 × 时间窗口」级归集。
  2. 每个 harness 带自己的窗口。起止日期各不相同,因为各工具的保留策略不同;跨窗口比较不等于跨时间比较。
  3. 总量不是单调量。这一周某个 harness 在降、其他在升。下降就报下降。
  4. 观测者效应在这台机器上无法避免:普查包含执行普查的那个会话。截止时刻是唯一的缓解手段。
  5. 宣布「未记录」需要缺席证据。在把任何 harness 标为未记录之前,必须先列出并检查它存储里的每一张表。在更弱的规则下漏掉了三个。
  6. 留存偏差。claude-code 只保留一个窗口;iFlow、Hermes、Qoder 在此前查过的位置没有可用的会话 token。这里所有合计都是实际消耗的下界。
  7. 轮次不可跨工具比较。各工具对「一轮」的定义不同。只有 token 可以横向走;每提交、每轮的比例只能留在单个项目内。MRRC W25 的 27.6 轮/提交受归档口径变化影响,判定为存疑。
  8. 任务分类基于关键词(各模型样本数少于 65),属推断级,只看结构。会话按 token 占比最高的模型归一,混用会话会掩盖次要模型。
  9. 产品数字来自实跑测试,不是抄 changelog。三个产品仓库现在都用各自的虚拟环境(Python 3.13);用系统 Python 3.9 跑会在收集期因 X | None 注解失败。那是环境限制,不是产品缺陷。
推断

本册的普查日期是 2026-09-12。任何引用缺少这个日期、缺少截止时刻 2026-09-12T02:40:59Z、或缺少其 harness 窗口的数字,都已经被引到了它的支撑范围之外。

字段语义,以及怎么查我们

每个 harness 记录用量的方式都不同。求错字段,是得到「看起来合理的错误答案」最常见的方式。

harness求和的字段陷阱
claude-codeinput + output + cache_creation + cache_read四个桶互斥可加——但同一个响应的每个分块各记一条,相信总量之前必须按 message.id 去重
pitotalTokensinput 不含 cacheRead;用已记录的总量,不要自己加分量
kimi-codeinputOther + output + inputCacheRead + inputCacheCreation只取 usageScope == "turn";用 session 口径会重复计入
codex每会话最后一次累计的 total_token_usagecached_input_tokensinput_tokens 的子集——相加会把总量高估约三分之一
mulerun / opencode会话级 token 列同一形状的两个存储;共享的那个存储根本没有会话级 token 列
cursor每个 bubble 的 tokenCount值是累计快照——每个 key 取最后一次。子集工具共享同一批 key,独立贡献为零
Hermes会话的 input + output + cache_read + cache_write + reasoning消息表的 token 列全为零;合计在 sessions 表上
AgnesCodeusage ledger 的 total它自己的累计列精确一致,可作第二意见
DeepSeek Harness压缩会话日志里每步的 usageusage 块嵌在 step chunk 之下,不在记录顶层
事实 · 两处独立交叉校验

codex 从会话日志推导出的数字是 547,796,667;同一工具另一个存储报的是 546,858,767——来自第二个独立写入来源,相差 0.17%。AgnesCode 的账本合计为 82,931,675,它自己的每会话累计列求出来完全同值。两处这样的吻合不能证明整本账,但足以说明提取方法没有系统性故障。

论点 · 你能自己复核的部分

这里的一切都来自产生它的那台机器上的文件,所以任何能访问这些日志的人都能重现这次普查——前提是他先固定一个截止时刻。把字段语义写下来就是为了这件事:无法重新推导的数字是声明,能够重新推导的数字才是证据。回到叙事正文《七十亿 token 的全程拆解》,或继续看年鉴与实践手册。