Verboo Code:用 /cost 查看会话成本与时长
返回博客
文章verboo codetutorialdev toolsprodutividade

Verboo Code:用 /cost 查看会话成本与时长

Mafra2026年11月5日阅读约 5 分钟

一次长任务刚跑完,你说不清它是贵还是慢:是模型的问题,还是你花了 40 分钟读输出才回复。命令 /cost 用一个文本块回答这两个问题,不需要仪表盘,也不需要额外集成。

它从早期继承版本里就存在,但很少有人打开:多数人以为那行美元数字就是套餐账单,看完就关掉。它不是。弄懂数字从哪里来,这条输出才有用。

/cost 命令会显示什么?

它打印五个部分:总成本、API 时长、实际经过时长、代码行数变化,以及按模型拆分的用量。这是当前会话的摘要,不是整月的统计。

输出行它测量什么
Total cost按 token 在本地估算的美元成本。
Total duration (API)模型调用时间之和,包含成功调用和重试。
Total duration (wall)从进程启动或切换会话开始的真实时钟时间,包含你阅读输出等待的时间。
Total code changes本次会话中智能体编辑增加与删除的行数。
Usage by model每个模型的输入、输出、缓存读取、缓存写入 token,以及各自成本。

会话还没有任何调用时,最后一行显示 Usage: 0 input, 0 output。这是整个文本块唯一的空状态。

怎么运行 /cost?

在交互会话中单独输入命令,然后回车:

/cost

它也能在无界面模式运行,因为该命令声明支持非交互执行。适合测量你在 CI 里跑的脚本:

verboo -p "/cost"
Verboo Code 中 /cost 的阅读流程:测量会话、区分 API 时长与实际经过时长、找出各模型开销,并在关心套餐额度时改用 /usage
同一个命令给出三种读法。第四个问题关于套餐额度,属于另一个命令。

Total cost 的数字从哪里来?

这个数字在你的机器上算出,用会话 token 乘以编译进二进制的价格表。生成这一行时不会发生任何计费请求。

计算公式,单位为美元每百万 token:

cost = 输入 / 1M * 输入单价
     + 输出 / 1M * 输出单价
     + 缓存读取 / 1M * 缓存读取单价
     + 缓存写入 / 1M * 缓存写入单价
     + 联网搜索次数 * 0.01

0.15.41 版本二进制价格表里各档位的价格:

价格表中的档位输入输出缓存读取缓存写入
Haiku 3.50.8040.081
Haiku 4.5150.101.25
Sonnet 4.x3150.303.75
Opus 4.5 至 4.75250.506.25
Opus 4 与 4.115751.5018.75
Opus 4.6 快速模式30150337.50

数值单位为美元每百万 token,与 src/utils/modelCost.ts 中一致。如果你的供应商收费不同,Total cost 仍然是二进制的算法,不是供应商的账单。

两个实际后果:

  • 缓存改变数量级。在 Sonnet 上,缓存读取 0.30,干净的输入 3.00,相差十倍。复用上下文的会话,实际开销远低于 token 总量给人的印象。
  • 价格表里没有的模型会让读数失真。模型没有登记价格时,二进制退回默认模型的价格,并附加 (costs may be inaccurate due to usage of unknown models) 提示。看到这个提示,就把数字当作数量级估计。

超过半美元时显示两位小数,低于半美元时显示四位小数。看到 $0.0312 不代表按分计费,只代表会话很短。

为什么 API 时长比实际经过时长短?

因为实际经过时长统计的是整个时钟,包含智能体停下等你回复的时间。API 时长只统计模型调用内部的时间。

这个差值是这个命令最便宜的诊断。实际经过 2 小时、API 只有 9 分钟,说明瓶颈是你的阅读,不是推理。实际经过 40 分钟、API 有 35 分钟,说明相反:智能体几乎全程在工作,下一步该看模型选择和上下文大小。

怎么看 Usage by model 那一行?

它按模型拆分消耗,回答会话里哪一部分更重。缓存读取、缓存写入和联网搜索只在大于零时出现,所以行很短说明这次会话基本没有复用。

典型读法:如果 80% 的成本压在最贵的模型上,而任务只是改文件名,解决办法不是写更好的提示词,而是用 /model 在机械环节切到便宜模型,只在难的部分切回来。按模型的表格给出的是差距的大小,而不只是感觉。

/cost 和 /usage 有什么区别?

/cost 测量这次会话消耗了什么。/usage 显示套餐额度和重置时间。两者回答不同问题,不能互相替代。

问题命令回答什么
这次会话消耗了多少?/cost成本、时长、行数和各模型 token。
我的套餐还剩多少?/usage额度上限与重置窗口。
上下文在哪里占得最多?/context按类别拆分的上下文分布。

如果问题是额度为什么掉得快,先用 /usage 看消耗,再用 /context 找出占窗口的东西。/cost 用在之后,用来横向比较会话。

怎么看每次请求的成本,而不只是总数?

摘要会聚合整个会话。要按请求看,二进制会读取一个界面上不显示的环境变量,把每次调用写成一行 JSON 输出到 stderr。

VERBOO_LOG_TOKEN_USAGE=verbose verboo -p "你的提示词" 2> usage.jsonl

每行包含模型、输入与输出 token、缓存、缓存命中率和这次调用的 cost_usd。拿到这个文件后,用一行 jq 就能按模型求和:

jq -s 'group_by(.model) | map({model: .[0].model, usd: (map(.cost_usd) | add)})' usage.jsonl

这是调试用的开关,不是稳定接口:如果哪天变量改名,用 grep 在 src/cost-tracker.ts 里搜 VERBOO_LOG_TOKEN_USAGE 就能找到。

30 秒读完一次会话的清单

  1. 运行 /cost。
  2. 对比 API 时长与实际经过时长。差值大,说明等待主要来自人。
  3. 看 Usage by model,找出成本集中的模型。
  4. 出现未知模型提示时,把数值当作估算。
  5. 如果问题关于额度,改用 /usage。

测量会话,是为了决定下一次尝试把力气花在哪里。当套餐不按 token 计费时,/cost 的数字就不再是账单,而是工作量与模型选择的信号。

想在更强的模型上做同样的测量,又不用数 token?/cost 在 Verboo Code 里一直可用,会话之间的比较就变成时间和质量的问题。

喜欢这篇文章吗?
把知识分享给你的朋友。
// 继续阅读

相关文章