Skip to content

Token 用量

大多数智能体都会记下自己花了多少,而每一个又都把这个数字记在它自己的会话记录里、用它自己的格式、放在它自己的目录下。Token 用量就是把它们汇总到一起的那个地方:跨越每个文件夹、每个智能体,在你选定的任意时间窗口内,你的智能体究竟消耗了什么。

它回答的是那些在单次对话里回答不了的问题。哪个项目最费钱。换的那个新模型是不是真的更便宜。你的上下文有多少是从缓存里拿的、而不是按原价重算的。以及在一个普通的星期里,你到底是什么时候在写代码。

从哪里进去

状态栏里的会话计数——底边上那句"N conversations"——就是入口。点它,Codeg 就会打开这份报告。没有别的东西需要配置。

全新安装时,页面会显示还没有可统计的数据,并提供统计我的会话:Codeg 得先把你的智能体会话记录读一遍,才有东西可加。此后它会随着你的使用自己保持更新。

页面顶部的会话数是特意与状态栏那个数字对齐的——把时间范围调到全部时间,两个数字就会一致,而不是留给你去猜哪一个在骗人。

它统计的是什么

Codeg 不做任何估算。它读的是每个智能体自己写下来的用量——每回合的输入、输出、缓存写入与缓存读取——直接取自那个智能体自己的会话记录,并按回合存成一行,这样画一张图就不必再把几个 GB 的历史重新解析一遍。

这个同步是增量的:只有当一次对话的记录自上次以来发生过变动时才会重新解析,其中也包括导入的会话在智能体自己的 CLI 里长大之后重新进入视野的那一刻。一次解析为空,绝不会抹掉已经记录下来的用量。

有几条推论值得知道:

  • 这些数字是智能体的数字。 Codeg 做的是加法,不是计量——所以你在这里看到的就是你的服务商看到的,前提是智能体如实上报了。
  • 什么都不记录的智能体,贡献不了任何 token。 Cursor 在任何地方都不写 token 计数,因此它的会话不会为总量、各类拆分或「消耗最高的会话」增加任何东西——给出一个信誓旦旦的零,比什么都不给更糟。但它们仍然算作会话,因为顶部那个会话数跟随的是你的工作区列表、而不是 token 表,这也正是它能与状态栏保持一致的原因。所以如果 Cursor 确实是你常用的一员,看那些「每次会话平均」时请记得:分母里包含了一些根本无法贡献数据的会话。
  • 它不是账单。 整个页面上没有任何价格。token 就是 token;它值多少钱取决于你的套餐,而 Codeg 不去猜。
  • 维度是实时读的。 文件夹、智能体和删除状态都是从对话本身关联出来的,所以移动一个文件夹或删除一个会话,不用重新同步就会反映到报告里。
  • Hermes 是按会话而不是按回合上报的。 它每条消息的记录里没有输入/输出的拆分,所以只统计逐回合用量会把这些对话报成零——一个信誓旦旦的错数字。因此它的会话总量会作为单独一条写入,落在该会话最后一个回合的时刻上。对总量和各类拆分都是对的,只在时间轴上偏粗。

收窄视图

报告上方是一行工具栏:

控件提供什么
时间范围7 / 30 / 90 天为分段按钮,本月本年全部时间自定义收在更多
分组方式——在你自己选之前,每个范围预设都会建议一个天然的粒度
文件夹 · 智能体 · 模型可搜索的筛选器,默认全选;重置筛选一次清空
刷新(附上次同步时间)、全量重建分享

自定义会打开一个双月日历,锚点定在一个月前,这样第二个面板就不会全是未来日期、整片灰掉。点进一段已经选完的区间会重新开始选,而不是去拖你并不想动的那一端。

范围和分组都是按你所在时区的自然日算的,从头到尾——一天是你那边的一天,不是数据库那边的。

怎么读这份报告

顶部大数是该范围内的总 token,旁边有两样东西:与上一个等长周期相比的变化,以及一个缓存命中环。这个环最值得学会读——它说的是你的智能体所用的上下文里有多少是从缓存拿的、而不是重新算的,并且会明说:把这些按原价重发一遍相当于多少。

下面是四块数据,每块都带一个平均值作为副标题:

数据块下面那行是
会话数每次会话平均 token
对话轮次每次会话平均轮次
活跃天数你最长的连续天数
生成时长每个活跃日的平均值

然后是各个面板:

  • 用量趋势——每个时间桶一根堆叠柱,把缓存读取新算 token 分开;每根柱的悬浮提示上带着轮次数和会话数。旁边还有该范围内最忙的那个时间桶,以及你一天中的高峰时段。
  • Token 都花在哪——同样的总量拆成四份:输入(你发出去的)、输出(模型写出来的)、缓存写入,以及缓存读取(你没有按原价付的那部分上下文)。
  • 你的编码作息——一张按你本地时间的「星期 × 小时」热力图,通常也是大家最爱截图的那一块。它会点名你的工作最密集的那个钟点。
  • 用量分布——同一个范围按文件夹按智能体按模型分组排名。点某一行就用它筛选整份报告——这也是你从「Claude 占了我大部分开销」走到「而且几乎全在这一个仓库里」只需两次点击的方式。
  • 消耗最高的会话——花得最多的那些具体对话,带上它们的文件夹、智能体和总量。

范围大到会被标注

如果你要的是一个病态的范围——十年连续高强度使用——报告会直说:"所选范围过大,这里的数字只覆盖其中最近的一段。" 数据是从新往旧读的,所以留下的正是这份仪表盘主要关心的近期历史。

分享出去

分享会把你眼前这个视图渲染成一张海报卡片——我的 AI 编程战绩——包含时间范围、总量、你的高频模型与项目,以及一个由数据本身选出的称号夜猫子早起鸟周末战士缓存大师马拉松选手多面手心无旁骛深潜者稳健建造者

卡片会跟随你当前的主题,而不是自己钉死一套配色,所以从浅灰主题导出的卡片不会突然变成紫色。保存图片写出一张 PNG,复制图片把它放到剪贴板。

这张卡片是你眼前那个范围和那组筛选的快照——所以如果你想晒的是某一个项目而不是全部,先筛选,再分享。

刷新与重建

菜单里的两项,区别很重要:

  • 刷新——增量的那一次。它只重读记录发生过变动的那些对话,过程中显示进度计数,结束时报告统计了多少。这一项本来就会自己跑,你很少需要按它。
  • 全量重建——不论看起来是否过期,都把每一份会话记录从头重新解析。这是留给「在 Codeg 之外长大的会话」的逃生舱——你继续在智能体自己的 CLI 里干活,而 Codeg 没有理由再去看它一眼。它不会先清空:每次对话的数据行是各自在一个事务里替换的,因此仪表盘不会出现短暂的空窗;而某份此刻恰好读不到的会话记录,会保留它已有的数字,而不是被抹掉再标记成已统计。

同一时刻只会有一次同步在跑。第二次不会排在第一次后面,而是直接告诉你已经有一次在跑了——把同样的文件解析两遍没有任何好处。

你的历史在升级时被重建过一次

存下来的数据行带着「用哪一版口径算出来的」这个标记。当某个版本改变了 token 的计算方式——比如 0.23.3 修正了 Claude 的同一次 API 调用被重复计数、Codex 的工具调用轮次被漏掉、Claude 子智能体的消耗未被计入——下一次同步就会整体重建,而不是去相信那些只反映会话记录是否变动过的标记。否则这份仪表盘就会无限期地混着旧的错数字和新的对数字。

须知

  • 每个回合按它自己的时间戳归档。 一次跨过午夜的会话会逐回合分到两天里,而不是整体算在你开始的那一天。(Hermes 是例外,因为它那条会话级的记录只有一个时刻可落。)
  • 全部在本地。 这些数据就放在 Codeg 自己的数据库里、和你的对话在一起,全部由你磁盘上已有的文件算出。为了生成这个页面,没有任何东西被发到外面去。→ 隐私与安全
  • 状态栏是唯一的入口。 侧边栏里没有它的条目——你本来就在看的那个计数,就是那个按钮。
  • 一个任务就是一次会话的花费。 每一条跑起来的待办都是一次完整的智能体会话,有自己的会话记录,所以同时跑四条,在这里就是四次会话的量。
  • 上下文占用是另一个数字。 输入框旁边那个圆环追踪的是当前这次对话此刻用掉了多少上下文窗口;本页说的是所有工作的累计花费。→ 工作区

后续步骤

  • 工作区——本页所从属的那条状态栏,以及每次对话自己的上下文圆环。
  • 对话聚合——你在智能体自己 CLI 里跑过的会话,最初是怎么进到这里来的。
  • 认证与模型——按模型那份拆分里点到的那些模型。
  • 隐私与安全——哪些东西留在你自己的机器上,包括这份仪表盘。

基于 Apache-2.0 许可证发布。