手机远程连着 Codex 写代码,本来很顺手的一件事。结果你只是按网上的教程加了[model_providers.codex]配置,再回到手机侧边栏点进 Codex,发现之前的对话记录全不见了;明明上午刚讨论过的重构方案还在会话里,现在打开却是空白对话框。这不是你的数据丢了,而是 provider 的身份变了,Codex 把这个新配置当成了另一个会话源。TaoToken 作为统一 API 通道,正好可以帮你把这条路理清楚:在 https://taotoken.net/?utm_source=taotoken_aicg_blog_end 创建一把 Key,再把 config.toml 里的 provider 各项对齐,手机远程连接时记录就能续上。下文按「看清楚原因 → 拿 Key → 清理旧认证 → 改配置 → 手机连接 → 排障」的顺序,把每一步落到具体文件里。
1. 对话记录丢失,先别急着重装 Codex
1.1 记录是跟着 provider 身份走的
Codex 的历史对话并不是都塞在你手机里的,它存储在服务端,客户端只是通过一个「会话源」的标识把它们拉回来。这个标识就是 config.toml 里[model_providers.codex]这一整段配置的组合:provider 名字、base_url、wire_api、requires_openai_auth、experimental_bearer_token。只要这些字段的取值和之前注册会话时的一致,Codex 就能找到旧记录;任何一个字段变了,它都会认为这是一个从来没见过的 provider,于是给你开一个全新的会话。这就是「配置改完,记录消失」的最常见原因。
为了让你更直观地理解,可以把 provider 看作快递地址:同样的楼栋,但只要门牌号写错一位,快递员就不会把包裹投到你家。Codex 也一样,它会用这组字段拼出一个「地址」,然后拿着这个地址去服务端取历史对话。你改 base_url 或 name,等于把地址换了,旧包裹自然查不到。
1.2 手机上连接的其实是同一个 provider
手机端从侧边栏进入 Codex 时,它并不是独立存在的一个版本,而是通过局域网或配对通道连到电脑上的 Codex 进程。真正向服务端发起请求、拉取历史记录的,还是电脑端配置里的那个 provider。所以手机端能不能看到旧对话,取决于电脑端 config.toml 里的 provider 是否正确。很多人把注意力放在手机重装、清缓存,结果手机里什么都没有,问题其实在电脑端这一份 toml 文件里。
只要电脑端 provider 的各项认证信息没漂移,手机侧边栏连接后会直接沿用电脑端的会话历史。这意味着,对话记录能否续上,与手机端 App 的账号状态关系不大,决定性因素是电脑端这份配置的一致性。很多配置教程反复强调「provider 必须和原来保持一致」,原因就在这里。
2. 在 TaoToken 官网拿一把专属于你的 Key
2.1 注册并创建 API Key
这一步对应你在别的配置教程里看到的「登录账号」。区别在于,这里不需要用 ChatGPT 账号去解锁什么权限,而是在 TaoToken 上注册并创建一把 API Key。打开官网后,用邮箱注册并按提示验证,进入控制台左侧的 API Keys 页面,点击创建,系统会生成一串密钥。这把 Key 就是之后 config.toml 里experimental_bearer_token的值,也是 Codex 每次请求向 TaoToken 证明「你是谁」的凭证。
创建后 Key 只完整显示一次,记得先复制到本地临时文件里。如果关掉页面再回来,只能重新生成新 Key,旧的会立即失效。这个设计是为了防止 Key 泄露,也意味着你不需要在手机端重复输入它——手机连接电脑后,所有请求都走电脑端的这份配置。
2.2 Key 只需要填进 config,不要写进代码
有些开发者会顺手把 Key 写进项目根目录的环境变量文件,甚至提交到 Git 仓库,这是比较危险的做法。TaoToken 的 Key 是你的账户凭证,写入公开仓库后,别人可以直接拿去调用并按量扣费。正确做法是:只把 Key 填到 config.toml 的experimental_bearer_token字段,或者必要时设置为你 shell 里不对外暴露的环境变量。本文以配置文件为主,所以 Key 只出现在 config.toml 里。
3. 清理 auth.json,避免认证信息新旧打架
3.1 auth.json 为什么会干扰 provider
Codex 客户端在首次登录时会生成一个 auth.json 文件,里面存放的是登录过的账号凭证。如果你之前用 ChatGPT 账号登录过 Codex,auth.json 里已经有了一套 OpenAI 的 token。此时 config.toml 里又加了 TaoToken 的experimental_bearer_token,同一个客户端里就存在两套认证。不同版本的 Codex 对这种情况的处理并不一致,有些会优先读 auth.json,结果请求被发到 OpenAI 而不是 TaoToken,导致 401;还有些会在手机远程连接时反复要求重新登录,干扰对话记录的同步。
所以,把 provider 指向 TaoToken 之前,最好先把旧的登录态摘掉,不给客户端留二选一的机会。
3.2 安全又省事:备份后清空旧记录
auth.json 的位置在用户目录下的 .codex 文件夹里,例如 Linux 和 macOS 上是~/.codex/auth.json,Windows 可以在用户目录下搜索.codex文件夹。稳妥的做法是先关闭 Codex,把这个文件整体复制到别的目录备份,然后直接删除原文件。由于我们要用 TaoToken 的 Key,auth.json 里的 OpenAI 登录凭证已经不再需要,留着反而可能让客户端优先读它,导致请求打错地址。删除后重启 Codex,客户端会依靠 config.toml 里的认证配置继续工作,并自动生成一份干净的 auth.json。
注意:备份文件不要放在项目目录或任何会被 Git 追踪的地方,放到系统临时目录或你的私人文件夹里即可。
4. 把 config.toml 的 model_providers 对齐 TaoToken
4.1 完整配置示例
找到 Codex 的 config.toml(同样在 .codex 文件夹下),先备份,再打开编辑。确保文件里有下面这一段:
model = "YOUR_MODEL_ID" [model_providers.codex] name = "codex" base_url = "https://taotoken.net/api" wire_api = "responses" requires_openai_auth = true experimental_bearer_token = "YOUR_API_KEY"YOUR_MODEL_ID需要你打开 https://taotoken.net/?utm_source=taotoken_aicg_blog_end 的模型广场,复制一个当前可用的模型 ID 再填,不要凭记忆写。YOUR_API_KEY替换成第 2 章创建的那把 Key。保存后退出编辑器。
4.2 每个参数都别动错地方
base_url必须写成https://taotoken.net/api,末尾不要带/v1。TaoToken 的接口地址就是这样设计的,加上/v1会导致 404。wire_api保持"responses"不要动。这是 Codex 用来与服务端对话的协议方式,改成chat会让对话记录对不上,甚至直接报错。requires_openai_auth保持true。它告诉 Codex 使用 OpenAI 兼容的认证头来携带experimental_bearer_token。experimental_bearer_token填你的 TaoToken Key。这个字段名里带experimental,但实际是稳定可用的,只是 Codex 官方保留了改名的可能。model字段放在文件顶层,用于指定默认模型。手机远程连接时,Codex 会用这个模型 ID 去匹配服务端的真实模型,所以一定要以模型广场列表为准。
如果你之前已经有一个[model_providers.codex]段,不要直接覆盖整个文件,而是逐行比对新旧差异。重点看name、wire_api、requires_openai_auth这三个值是不是被顺手改掉了。很多人为了换成 TaoToken,把name改成了别的英文名,导致手机端认为这是一个全新 provider,历史记录自然不出现。
5. 手机侧边栏连接 Codex,验证对话记录续上
5.1 连接步骤
手机打开 ChatGPT 客户端,先用自己的 OpenAI 账号登录(这一步是为了拿到 Codex 入口,不影响后续的 API 请求地址),再从侧边栏点进 Codex。此时手机会扫描局域网内正在运行的 Codex 进程,并提示「发现一台电脑」。确认电脑端 Codex 保持运行状态,点击连接即可。连接时手机会和电脑端协商同一个 provider 身份,所以你在电脑上看到的会话列表会在手机端同步出现。
如果你在手机端没有看到 Codex 入口,先检查手机客户端版本是否过旧,或者把电脑端 Codex 退掉重新启动,再回到手机侧边栏刷新一次。配对成功后,手机端显示的会话历史应该和电脑端完全一致。
5.2 两种快速验证方式
第一种,在电脑端 Codex 里新开一个对话,输入一句话,比如「记住这个会话现在开始同步」,然后马上拿起手机,打开侧边栏 Codex 的同一个会话,应该能看到这句话。第二种,反过来在手机上发一条消息,回到电脑端刷新,同样能出现。只有双向都能看到,才说明 provider 身份真的对齐了。
如果手机端能看到对话框,却没有历史记录,多半是第 4 章里某个字段被改动了。回到 config.toml,把 provider 的name、wire_api、requires_openai_auth和改动前的值逐一对比,确认没有偏差。此时不要急着在手机端新建会话,那个新会话会被记录为另一个 provider 的历史,让问题更难排查。
6. 远程配好了仍报错?对照这几个原因排查
6.1 401:认证冲突或 Key 填错
401 是最常见的情况。第一反应先看 auth.json 是不是又回填了旧 token,如果你没有删干净,Codex 可能优先读它,导致带过去的认证与 TaoToken 不匹配。重新检查 auth.json 是否为空,config.toml 里的experimental_bearer_token是否复制完整(包括首尾是否多了空格)。如果都正常,回 TaoToken 控制台看这把 Key 是否被禁用,必要时重新创建一把再替换。
6.2 404 或连接超时:Base URL 多了 /v1
一旦base_url写成了https://taotoken.net/api/v1,请求就会打到不存在的路径上,出现 404 或连接超时。TaoToken 的接口地址是https://taotoken.net/api,没有/v1这一级。也不要把它和官网落地页混淆:官网 https://taotoken.net/?utm_source=taotoken_aicg_blog_end 用于创建 Key 和查看用量,填进客户端的地址永远是https://taotoken.net/api。
6.3 记录依旧不同步:provider 字段被改动
手机能连接,说明网络和认证都没问题,但历史记录还是看不见。最可能的原因就是[model_providers.codex]里的name、wire_api或requires_openai_auth与旧配置不一致。回顾一下你改动前用的 provider 是什么,逐项对齐。如果你是从其他 API 服务商迁到 TaoToken 的,旧 provider 的wire_api可能是chat,换成responses后记录不继承是正常的,只能接受新会话从零开始。
7. 跑通后回控制台对一下这次调用
配置保存后,先在 TaoToken 模型对话 里用同一把 Key 发一条测试消息,确认模型 ID 和 Base URL 没填错,再回到手机侧边栏测试一次远程同步。若要长期写代码,可以打开 Coding Plan 看套餐是否覆盖日常用量;还没创建 Key 的话,到 控制台 API Keys 创建一个。Claude Code 的环境变量写法可参考 接入文档,但本文场景只需要改 Codex 的 config.toml。