Codex 子代理 Token 统计遗漏与偏低 - CC Switch Fix
Quick fix
升级至最新代码后,解析器将改用 payload.id 生成唯一请求 ID 替代 session_id,彻底解决 INSERT OR IGNORE 导致的静默丢弃问题,使子代理用量准确入库。
Symptom
Section titled “Symptom”CC Switch 能发现并解析子代理 JSONL 文件,但大部分子代理使用量没有成功写入数据库。因此,统计页面主要显示父线程的使用量,导致 Codex Token 和费用统计偏低。新版 Codex 的子代理日志在 session_meta 事件中同时包含 payload.id(当前线程唯一标识)与 payload.session_id(所属父线程 ID)。现有同步逻辑错误地优先使用 session_id 拼接请求 ID(格式为 codex_session:{session_id}:{event_index})。由于每个 JSONL 文件的 event_index 均从 1 开始,同一父线程下的主线程与所有子代理会生成完全相同的请求 ID。
数据库插入操作使用了 INSERT OR IGNORE,遇到重复 ID 时会静默丢弃后续记录。更严重的是,同步游标仍会正常前移,导致这些被丢弃的历史记录无法通过重新同步恢复。此外,部分启动事件会重放父线程累计的 total_token_usage,若未正确过滤基线快照,还会造成重复统计。
将 cc-switch 更新至已合并修复的 main 分支或后续正式版本,以启用基于 payload.id 的唯一 ID 生成逻辑。
Affected Versions
Section titled “Affected Versions”ToolCodex
Version3.16.5
PlatformsWindows
Source Issues
Section titled “Source Issues”本页汇总自 2 个真实 issue
- 咋解决的?
- 该问题属于底层解析逻辑缺陷,已通过更新 cc-switch 代码修复。请将工具更新至包含该修复的版本即可恢复正常统计。
- 为什么升级后之前的统计缺口不会自动补全?
- 因为同步游标在发生 ID 冲突时已经前移,系统认为那些记录已处理过。必须手动触发针对旧 JSONL 文件的定向重建同步才能找回丢失的数据。
settings.json 被代理接管覆盖导致插件配置丢失 - Claude Code将 hooks、statusLine 等自定义字段放入「通用配置」面板,或升级至 v3.12.2+ 以修复旧版备份恢复逻辑。Codex 供应商 API Key 重启或切换后互相覆盖开启 CC Switch 本地代理接管模式,或在 config.toml 使用 experimental_bearer_token 绕过 auth.json 同步缺陷。通用配置勾选会不生效,还会被之前的配置覆盖 Codex CC Switch升级到 CC Switch v3.17.0 及以上可修复 Codex 通用配置合并失效;若仍被旧快照覆盖,先切到其他供应商再切回以触发自愈。
这是一个非官方社区 wiki,与 cc-switch 作者及项目本身无隶属关系。内容整理自项目公开的 GitHub issues。本站不分发任何软件。