Skip to content

修复 ccusage 20 缓存 token 统计与总量显示#2

Open
Eldon27232 wants to merge 2 commits into
YUHAO-corn:mainfrom
Eldon27232:fix/cache-token-totals
Open

修复 ccusage 20 缓存 token 统计与总量显示#2
Eldon27232 wants to merge 2 commits into
YUHAO-corn:mainfrom
Eldon27232:fix/cache-token-totals

Conversation

@Eldon27232

@Eldon27232 Eldon27232 commented Jul 14, 2026

Copy link
Copy Markdown

概要

  • 原生支持 ccusage 20 的统一命令入口 ccusage codex,同时保留旧版 ccusage-codex 兼容路径。
  • 兼容 cacheReadTokens / cacheCreationTokens 新字段,并将“非缓存输入”和“缓存输入”分开统计。
  • 总 token 按“非缓存输入 + 缓存读取 + 缓存创建 + 输出”统计,并优先采用 ccusage 提供的 totalTokens
  • CC Switch 中包含缓存的输入值会先扣除缓存,再进入统一汇总和费用估算。
  • 十亿级 token 使用 B 显示,百万级继续使用 M
  • 更新卡片、构成占比、每日趋势、表格及中英文说明,使页面明确显示“非缓存输入”。
  • 更新 README、Agent/Skill 安装说明,移除已弃用的 @ccusage/codex 安装指引。

根因

@ccusage/codex 已迁移到统一的 ccusage 包。ccusage 20 将非缓存输入、缓存读取和缓存创建拆分为独立字段,但现有实现仍读取旧字段 cachedInputTokens,并把总量固定计算为 input + output,导致缓存输入显示为 0、总 token 严重偏低。初版修复又把缓存加回了 inputTokens;但 ccusage 20 的 inputTokens 本身就是非缓存输入,因此页面输入值仍然口径错误。

用户影响

  • “非缓存输入”直接对应 ccusage 20 的 inputTokens
  • 缓存输入单独显示,并按缓存价格计费。
  • 总 token 包含非缓存输入、缓存读取、缓存创建和输出,不再漏算缓存。
  • 缓存占比以总输入为分母;每日趋势、模型明细和总量卡片使用同一统计口径。
  • 旧版 ccusage-codex 与 CC Switch 数据会归一化到同一口径。

验证

  • python -m unittest discover -s tests -v:5 个测试通过
  • python -m compileall -q codex_usage_dashboard
  • python -m pip wheel . --no-deps:wheel 构建成功
  • git diff --check
  • 使用只读快照对真实本地 Codex session 与 ccusage 原始 JSON 逐字段对账:非缓存输入、缓存读取、缓存创建、输出、总量及总量公式全部完全一致
  • 在真实浏览器中验证滚动 7 天页面:日期完整,卡片、趋势图和表格均正确显示非缓存输入和缓存输入;无应用 JavaScript 错误

未提交或上传任何本地 session、生成的 HTML 报告或真实用量数据。

@Eldon27232 Eldon27232 marked this pull request as ready for review July 14, 2026 11:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant