昨晚擦着周末快要结束的边儿,心血来潮想着重新整一下Codex手机远程控制,
今天使用起来基本稳定了,想着写个记录帖儿,尽量写的简单一些,无需脑细胞可以直接上手操作。
目前 ChatGPT Remote ( Android ) + Codex Desktop ( Windows ) 和 Codex ( IOS ) + Codex Desktop ( MAC ) 都测试了,都可以基于 CC Switch 的路由功能在保留官方登录态的时候将请求路由到自己的API(我用的 Sub2api ), 需要注意的是目前我师兄是直接基于 Codex ( IOS ) 做的测试,而我是基于 ChatGPT APP Remote 功能 ( Android ), 目前前者支持手机端通过SSH连接其他设备,但是后者也就是我自己,目前只能扫码连接,怪异的是 我是Android 版 ChatGPT 1.2026.174 (25),而我师兄是1.2026.167,需要补充的是我之前下载 Android ChatGPT APP 时桌面会附带出来Android Codex,但是在我这半个月中多次反复卸载之后,Android Codex不会伴随 Android ChatGPT APP下载同时出现了,这是一个已知问题,或许如果我也使用Android Codex也是支持直接SSH添加远端设备的(如下图功能截图)。

进入正题,首先不管是 Android 还是 IOS ,都需要登陆一个GPT Free账号,然后不管是 Codex Desktop ( Windows ) 还是 Codex Desktop ( MAC ) 需要登陆同一账号,这没啥难度,需要注意的是,手机端配置好代理,确保codex请求在走代理流量,经常出现ssl错误,就更换节点。
然后电脑端下载安装 cc switch,





重启Codex
然后选用可用模型做测试

观察Sub2api之类的server端请求

确保请求被 CC Switch 正确路由到自己的API
接着继续手机端测试,我这里用的安卓测试的,目前只有扫码,无法SSH
但是苹果直接使用Codex APP是可以的




IOS Codex 如下:

连接上继续测试手机端发消息,电脑端同步即为完成,以昨天折腾为准,仅做个人记录供佬友参考,感谢CC Switch的作者!
其实我在两台Windows上基于CC Switch路由后,之前的session都不显示了,目前一个客户端让codex自己修复了,另一个还在折腾,暂时没办法抽象出来提示词,自己搞定后会同步记录一下!
你现在只执行“Codex 历史 session provider 统一修复”任务。
目标:
把 Codex 历史会话统一归到目标 provider,让 Codex Desktop 历史列表重新显示这些 session。
目标 provider:
custom
第一步:自动发现 Codex Home
不要假设路径是 C:\Users\Administrator.codex。
请按以下顺序寻找 Codex Home:
如果环境变量 CODEX_HOME 存在,优先使用它。
Windows 默认检查:%USERPROFILE%.codex
macOS/Linux 默认检查:~/.codex
如果以上都不存在,只做只读搜索,寻找同时包含 config.toml、sessions 目录、state_*.sqlite 的 .codex 目录。
找到后输出确认的 Codex Home 路径;找不到则停止并报告,不要乱改。
严格要求:
先只读分析,不要立即修改。
统计以下两处的 model_provider 分布:
<CODEX_HOME>/sessions 下所有 rollout-*.jsonl 文件的第一行 session_meta.payload.model_provider
<CODEX_HOME> 下所有 state_*.sqlite 中,包含 threads 表且有 model_provider 列的数据库
修改前必须备份:
备份将要修改的 rollout-*.jsonl 原文件
备份将要修改的 state_*.sqlite 以及同名 -wal、-shm 文件
备份目录放到 <CODEX_HOME>/restore-backups 下,使用带时间戳的新目录
只修改 rollout-*.jsonl 的第一行 session_meta.payload.model_provider,把非 custom 的旧值改为 custom。
不读取、不总结、不修改任何对话正文内容。
不删除任何 session 文件。
同步 SQLite 索引:
对每个包含 threads.model_provider 的 state_*.sqlite 执行:
update threads set model_provider = 'custom' where model_provider <> 'custom' or model_provider is null;
执行前必须先确认表结构和 provider 分布。
如果某个活跃 session 文件或 SQLite 数据库被锁定,不要强行破坏;优先使用安全的共享读取方式,无法安全修改就跳过并报告。
修改完成后再次验证:
rollout-*.jsonl 第一行 provider 分布
每个相关 state_*.sqlite 的 threads.model_provider 分布
session 文件总数
备份目录路径
最后提示我重启 Codex Desktop。
只做上述任务,不做其他操作。