跳转到内容

[CODEX-SYNC] deferred:尚未写到 child fork 时刻 - cc-switch

Quick fix

这是 cc-switch 3.18.0 的 Codex 同步缺陷:已完成父 rollout 早于子 fork 时间戳会被永久 deferred;暂无确认修复,先避免产生 fork 并等待补丁。

报错原文
[2026-07-23][18:19:52][WARN][cc_switch_lib::services::session_usage_codex] [CODEX-SYNC] deferred .codex\sessions\2026\05\07\rollout-2026-05-07T09-42-03-019e0019-608d-7372-8189-13b217862438.jsonl: 父 rollout .codex\sessions\2026\05\07\rollout-2026-05-07T09-39-08-019e0016-b5c7-7773-a2b2-0047870b1948.jsonl 尚未写到 child fork 时刻

在 3.18.0 的 Codex 用量同步里,父 rollout 签名解析会在 `max_timestamp < child_fork_cutoff` 时拒绝父文件;调用方随后 `mark_deferred(...)` 并直接返回,导致子 rollout 的 token 事件不导入、同步游标也不更新。若父会话早已结束、闲置很久后才被子会话 fork,就永远不可能“写到 child fork 时刻”,于是同一批文件每分钟反复 deferred,fork 后的真实计费用量也可能长期缺失;#5626 只修重复解析,刻意保留触发本问题的时间戳检查,所以本缺陷仍单独开放。 这个集群还混有几种“导入/同步后不可见”的变体,不要把它们的修复套到本 warning 上:Codex 历史按 `model_provider` 的 `openai`/`custom` 桶隔离,官方与第三方默认不共享;部分 skills 同步失败据称在 v3.16.0 改动后应解决、维护者要求升级到 v3.16.2+ 再验证;跨电脑“配置还在 C 盘”是本机 Tauri Store 指针不随同步目录迁移;Claude 历史变少常被解释为 `cleanupPeriodDays: 30` 或端点/账号过滤,而非 cc-switch 删除。

  1. 先核对是否真的是本问题:版本为 3.18.0,日志重复出现 `[CODEX-SYNC] deferred ... 父 rollout ... 尚未写到 child fork 时刻`,且同一文件每次同步都再次 deferred。

  2. 若确认命中,将其视为已知未修复缺陷处理;#5626 只减少重复解析,不会解除这个时间戳判断,不要期待升级含 #5626 的版本单独修好它。

  3. 在等待单独修复期间,尽量避免制造新的 fork;有用户实测 TUI 中双击 Esc 选择历史会话回退会自动产生 fork,并被标成永久 retryable、带来持续 IO 开销。

  4. 不要改动 `%USERPROFILE%\.codex\sessions` 来“催同步”;issues 只证明 deferred 会跳过子 rollout 导入和游标更新,没有给出可安全手改 session 文件的方案。

  5. 如果你的目标其实是官方/第三方共享会话,请区分处理:同名 provider 可共享,openai 官方与其他 provider 仍隔离;现有 unify 是单向 migrate/restore,双向镜像只是 #5851 的提案,不是已发布修复。

  6. 若是 skills 部分同步失败,升级到 v3.16.2 或更新后再复测;若仍存在,按维护者要求 reopen 原 issue 并补版本、配置与复现步骤。

ToolCodex
Version3.18.0(受影响;修复版本未在 issues 中给出)
PlatformsWindowsmacOS
openai 官方和自定义提供商能共享会话吗?
有用户发现只要提供商名字一样就能共享,例如都叫 custom;但 openai 官方和其他提供商仍隔离。#5851 说明当前 unify 是 `openai`→`custom` 的单向 migrate/restore,双向同步还只是提案。
切换为 default 有很多历史对话,切到另一个 provider 后对话都没有了,是会话被删了吗?
不是同一主线;#2603 被维护者归为 Codex 切换 provider 后会话不可见/不可复用问题,并合并到 #2248 跟踪。
历史会话重新打开后少了一些,cc-switch 会恢复或删除吗?
维护者排查称 cc-switch 从不写删 `~/.claude/projects` 转写;常见原因是 Claude Code 默认 `cleanupPeriodDays: 30` 清理或客户端按当前端点/账号过滤,可调大 `cleanupPeriodDays` 并用 `claude --resume` 核对盘上 .jsonl。
第二台电脑同步目录后打开,配置为什么还在 C 盘、像新装一样?
CC Switch 配置目录覆盖是本机级 Store 配置,不随同步目录同步;第二台要手动指向同一同步目录、保存并重启才会读该目录的数据库和 skills。评论建议可靠跨设备用 WebDAV,别直接同步运行中的 SQLite。
cc-switch 能不能只在一台机器配置,再通过局域网 IP 给别的机器用?
#2223 只提出了这个需求,issues 中没有给出支持或不支持的结论。

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