跳转到内容

Codex Session 历史成本没有重新计算,统计金额严重偏低

Quick fix

会话用量在导入时一次性算死导致成本偏低或重复计数:升级 cc-switch 到 v3.18.0+(首次启动自动重建 Codex 历史),并在设置中补全模型定价。

报错原文
修改模型定价后,已导入的 Codex Session 历史成本没有重新计算,导致统计金额严重偏低

cc-switch 会把 ~/.claude/projects 和 ~/.codex/sessions 下的会话 JSONL 增量导入本地数据库 proxy_request_logs,并在导入那一刻按当时的定价表算好 input_cost_usd、output_cost_usd、total_cost_usd 等字段直接写死。如果记录导入时该模型还没有定价,成本就被写成 0;之后即使补充或修改价格,旧版本也不会回溯重算历史记录,于是出现 token 数很大但总成本只有零点几美元的严重不匹配(该问题在 v3.15.0 修复)。

同一套导入逻辑还有几个同源变体,修复进度不同:Codex Desktop fork 任务时,复制的父会话历史被旧导入器误当作子会话用量,造成父子两行完全相同的重复计数(v3.18.0 修复,改用 forked_from_id / parent_thread_id 加 token 签名对齐来剥离回放历史);每个 token_count 事件都单独插入一行,导致日志行数约 33 倍膨胀、token 总量约 38 倍虚高(#3190,仍 open,PR #3189 提出按轮次聚合);增量同步使用 INSERT OR IGNORE,初步 message_start 快照先入库后,包含真实 cache_read 和 output 的终端事件被永久忽略,拉低缓存命中率和成本准确性(#6994,在 3.20.1 仍未修复)。

  1. 升级 cc-switch 到 v3.18.0 或更高版本:历史成本重算问题在 v3.15.0 修复,Codex Desktop fork 重复计数在 v3.18.0 修复;升级到 v3.18.0 后首次启动会自动备份数据库并重建 Codex 用量历史,空 fork 将正确导入 0 条用量。

  2. 打开「设置 → 使用统计 → 成本定价」,为统计中出现的所有模型补全价格(输入 / 输出 / 缓存读取 / 缓存写入)。默认配置可能还没有新模型(例如 gpt-5.5)的价格,需要手动添加,否则成本会显示为 0。

  3. 升级后回到「模型统计」页核对 token 数与总成本是否匹配。若 Codex 侧用量仍异常偏高(token_count 每事件一行的膨胀问题 #3190 尚未合入修复),可在用量页关闭 v3.20.1 新增的「自动扫描会话记录」开关,改为手动点「立即同步」,并关注 #3190 / PR #3189 的进展。

  4. 若 Claude Code 会话的缓存命中率和成本仍偏低(终端事件的 cache_read / output 未入库),该变体(#6994)在 3.20.1 及 main 分支仍未修复,暂无官方 workaround,请关注该 issue 更新。

Toolcc-switch
Version3.14.1 - 3.20.1 均报告过受影响;成本不重算在 v3.15.0 修复,fork 重复计数在 v3.18.0 修复,#3190 与 #6994 两个变体在 3.20.1 仍未修复
PlatformsmacOSWindows
为什么补充或修改模型定价后,历史记录的成本还是 0 或严重偏低?
旧版本在导入会话记录时就把成本一次性算好写入 proxy_request_logs,之后改价不会回溯重算,所以 token 数正常累计但总成本停在旧值或 0。该问题已在 v3.15.0 修复,请升级。
使用统计里费用计算显示为 0 是怎么回事?
通常是默认定价表里还没有你用的模型(例如 gpt-5.5)的最新价格,需要在「设置 → 使用统计 → 成本定价」中手动添加该模型的输入 / 输出 / 缓存价格;旧版本添加后历史记录仍不会自动重算,需升级到 v3.15.0+。
Codex Desktop fork 了一个任务但没发任何消息,为什么用量被重复计算了?
旧导入器把复制过来的父会话历史(以 thread_settings_applied 为边界)误当成子会话用量插入。v3.18.0 已修复,改用 forked_from_id / parent_thread_id 加 token 签名前缀对齐来剥离回放历史,空 fork 会正确导入 0 条用量。
升级到 v3.18.0 后历史用量数据会丢吗?
不会。升级到 v3.18.0 后首次启动时,应用会自动备份数据库,然后重建 Codex 用量历史,以此清除此前重复计入的 fork 用量。

这是一个非官方社区 wiki,与 cc-switch 作者及项目本身无隶属关系。内容整理自项目公开的 GitHub issues。本站不分发任何软件。