Skip to content

成本估算(cc cost)

版本: Claude-Code cost 平价 | 状态: ✅ 生产可用 | 纯报表视图(不采集新数据)| 价格可配置覆盖

cc cost 基于已记录的 token 用量,叠加 LLM 价格表估算美元花费。它读取与 cc session usage 相同的 JSONL token_usage 事件,不采集任何新数据——是纯粹的报表视图。本地模型(free providers)计 0 成本,未知模型标 unpriced 且不计入总额;价格可经 config.llm.pricing 覆盖,无需改源码。

概述

跑了一堆 agent 会话后,你想知道「这些 token 大概花了多少钱」。cc cost 把每个会话/全局记录的输入输出 token 乘以对应模型的公开 list 价格(USD / 1M tokens),给出按模型分组的成本估算。它复用 cc session usage 的 token 聚合,只是在其上叠加价格表——因此运行 cc cost 不会产生任何新的数据采集,纯读取历史用量。

核心特性

  • 💰 美元成本估算:按模型 list 价格(USD / 1M tokens)估算输入/输出 token 花费
  • 📊 按模型分组:每个 provider/model 一行,显示 token 数与成本
  • 🌍 全局或单会话cc cost 全局汇总,cc cost <id> 单会话
  • 🆓 本地模型计 0:免费 provider(本地模型)标 free (local),不计费
  • ⚠️ 未知模型透明:无价格的模型标 unpriced排除出总额,明确提示补价格
  • 🛠️ 价格可覆盖config.llm.pricing 覆盖/新增模型费率,无需改源码
  • 🔬 小额高精度:便宜模型的亚分成本显示到 6 位小数
  • 📤 JSON 输出--json 输出机器可读结构
  • 🔁 零新增采集:复用 token_usage 事件,纯报表,不收集新数据

系统架构

cc cost [id] [--json] [--limit <n>]


┌────────────────────────────────────────────────────────────┐
│ session-usage.js   sessionUsage(id) / allSessionsUsage()    │  读 JSONL token_usage 事件聚合
│        │                                                     │
│        ▼                                                     │
│ llm-pricing.js     mergePricing(config.llm.pricing)         │  PRICE_TABLE + 用户覆盖
│                    priceRollup(aggregate, {table})           │  → cost.totalCost / byModel[] / unpriced[]
│                      ├─ FREE_PROVIDERS → free (本地计 0)      │
│                      ├─ lookupRate 命中 → matched 计费        │
│                      └─ 未命中 → unpriced(排除出总额)        │
└────────────────────────────────────────────────────────────┘

命令参考

bash
cc cost                    # 全局汇总(所有会话)
cc cost <sessionId>        # 指定会话
cc cost --json             # 机器可读 JSON
cc cost --limit <n>        # 全局汇总最多纳入 n 个会话(默认 1000)

输出示例:

text
Cost — global
  total: $0.1234 USD  (1,234,567 tokens, 89 calls)
  anthropic  claude-opus-4-8           $0.0980  in=12000 out=3400
  ollama     qwen2.5:7b           free (local)  in=80000 out=21000
  volcengine doubao-seed-1-6        unpriced     in=4000 out=900
  note: 1 model(s) have no rate — tokens excluded from total. Add rates via config: llm.pricing.
  prices are estimates of public list rates (USD/1M tokens).

配置参考

价格覆盖写在 config.llm.pricing(USD / 1M tokens),mergePricing 会把它叠加到内置 PRICE_TABLE 之上:

json
{
  "llm": {
    "pricing": {
      "anthropic/claude-opus-4-8": { "input": 15, "output": 75 },
      "volcengine/doubao-seed-1-6": { "input": 0.5, "output": 1.5 }
    }
  }
}
概念说明
FREE_PROVIDERS本地/免费 provider(如 ollama),计 0 成本,标 free (local)
PRICE_TABLE内置公开 list 价格表(USD / 1M tokens)
config.llm.pricing用户覆盖/新增费率(键为 provider/model
unpriced无费率的模型,token 不计入总额,提示补价格

价格为公开 list 价格的估算,仅供参考,不等同于实际账单。

性能指标

  • 零采集:复用既有 token_usage JSONL 事件,无新增 I/O 采集。
  • 纯本地聚合:读取本地会话用量 + 价格表相乘,无网络请求。
  • 全局可限量--limit 控制全局汇总纳入的会话数(默认 1000),避免超大历史拖慢。

测试覆盖率

bash
cd packages/cli
npx vitest run __tests__/unit/llm-pricing.test.js

覆盖 mergePricing(覆盖叠加)、lookupRate(命中/未命中)、estimateCostpriceRollup(free / matched / unpriced 分类与总额排除)。cc cost 命令在其上做展示层封装。

安全考虑

  • 只读报表cc cost 仅读取已有用量事件,不修改、不外发、不采集新数据。
  • 本地数据:用量与价格均为本地数据,估算过程不联网。
  • 不暴露内容:仅统计 token 数与成本,不读取/展示对话内容。

故障排查

现象可能原因处理
(no token_usage events recorded)该会话/全局没有记录用量事件先用 cc agent/cc chat 产生带用量记录的会话
某模型显示 unpriced内置价格表无该模型费率config.llm.pricingprovider/model 费率
本地模型显示 free (local)该 provider 在 FREE_PROVIDERS预期:本地模型不计费
总额比预期低unpriced 模型被排除出总额note 行提示,补齐费率后重算
成本显示很多位小数亚分成本(便宜模型)高精度展示预期:< $0.01 显示 6 位小数

关键文件

文件说明
packages/cli/src/commands/cost.jscc cost 命令(展示层)
packages/cli/src/lib/llm-pricing.jsPRICE_TABLE / FREE_PROVIDERS / mergePricing / lookupRate / estimateCost / priceRollup
packages/cli/src/lib/session-usage.jssessionUsage / allSessionsUsage(token 聚合)
packages/cli/__tests__/unit/llm-pricing.test.js价格表与 rollup 单元测试

使用示例

bash
# 1) 看全局花了多少
cc cost
#    Cost — global
#      total: $0.1234 USD  (1,234,567 tokens, 89 calls)

# 2) 看某个会话
cc cost 7f8e9d0a1b2c3d4e

# 3) 机器可读
cc cost --json

# 4) 补一个未知模型的价格(config.llm.pricing),再看成本
#    "llm": { "pricing": { "volcengine/doubao-seed-1-6": { "input": 0.5, "output": 1.5 } } }
cc cost

相关文档

基于 MIT 许可发布