处理 Codex / Codex Desktop 在切换 provider、使用 CCX、CCSwitch、Codex++、Cockpit Tools 后,因 model_provider 不一致导致会话不可见的问题。
Codex 显示会话时,会按当前 model_provider 过滤 session JSONL、session_index.jsonl 和 state_5.sqlite。如果这些文件里的 provider 不一致,历史会话就会“还在磁盘上,但看不见”。
这个 skill 先只读检测当前工具实际控制的 provider,再判断需不需要修复。它不默认用 custom,也不猜用户正在用哪个入口。
当出现下面任一情况时使用:
- 切换 provider 后,会话列表变少、为空,或旧会话消失
config.toml、session JSONL、session_index.jsonl、state_5.sqlite的model_provider不一致- 同时存在或曾经存在 CCX、CCSwitch / cc-switch、Codex++、Cockpit Tools
工具判定规则:
CCX:读取 CCX state 和当前config.toml,区分plugin/quickCCSwitch:读取~/.cc-switch/settings.json和 DB 里的 active Codex profile,再解析 profile TOML 的model_providerCodex++:读取~/.codex-session-delete/settings.json,以当前 config / provider-sync 目标为准Cockpit Tools:读取~/.antigravity_cockpit/codex_instances.json和目标 Codex home,必要时按实例判断- Windows:额外读取
%APPDATA%/%LOCALAPPDATA%的兼容路径
如果多个 controller 同时存在,脚本会进入 manual-review,先让用户确认当前入口,不自动写入。
python3 ~/.codex/skills/Codex-Session-sync/scripts/detect_provider_tool.py
python3 ~/.codex/skills/Codex-Session-sync/scripts/detect_provider_tool.py --json
python3 ~/.codex/skills/Codex-Session-sync/scripts/detect_provider_tool.py --verbose默认输出只做检测,不修改任何文件。检测到安全目标时,会提示进入修复确认流程;真正写入前仍需要用户确认。
- 只读检测,不碰
~/.codex、~/.cc-switch、CCX state、Codex++ state、Cockpit Tools state - 写入前先备份,修复后提醒用户重启 Codex 客户端
- 备份是回滚点,不是临时垃圾;不要自动删除
把整个目录放到:
~/.codex/skills/Codex-Session-sync安装、更新、重命名或从 GitHub 拉取新版本后,重启 Codex 客户端,让新的 skill 元数据和脚本路径生效。
python3 -m py_compile scripts/detect_provider_tool.py
python3 ~/.codex/skills/.system/skill-creator/scripts/quick_validate.py .
python3 scripts/detect_provider_tool.py运行测试产生的临时目录应在测试结束后删除。