Vscode Codex插件归档会话恢复:把auth.json改到TaoToken的排查路径

发布时间:2026/10/4 20:49:21
Vscode Codex插件归档会话恢复:把auth.json改到TaoToken的排查路径 1. Vscode Codex 插件归档会话恢复失败先看清 auth.json 与本地状态链路Vscode Codex 插件归档会话恢复失败是很多人在把 Codex 接到自建 API 网关之后最容易撞上的一类问题。它的典型表现是你在侧边栏点开历史记录归档会话要么根本不出现要么出现几秒后消失重启 Vscode 又回到「查无此会话」的状态。很多人第一反应是插件坏了于是卸载重装结果问题照旧。真正的原因往往不在插件本身而在两处一是auth.json里的接入配置没写对导致插件连不上模型、会话元数据写不进去二是 Codex 的本地存储把「归档」状态同时记在了.jsonl文件和 SQLite 数据库里只改一处重启后状态会被数据库覆盖回去。先把链路讲清楚。Vscode Codex 插件在本地大致维护三样东西认证与接入配置auth.json、会话正文sessions/YYYY/MM/DD/*.jsonl、会话索引与状态state_5.sqlite的threads表。归档会话恢复本质是让这三者重新对齐。如果你把 Codex 的 Base URL 指向了自建网关但auth.json里的字段名、Key、模型 ID 有一个不对插件在恢复会话时会尝试重新拉取会话元信息请求失败后就会把这条会话标记成不可用表现出来就是「恢复不了」。所以排查顺序应该是先确认auth.json能正常发起请求再处理.jsonl与 SQLite 的状态同步。反过来做你会一直在文件层面打转却不知道请求根本没通。这篇就按这个顺序把可复制的auth.json模板、逐项验证动作、以及归档恢复的完整步骤串起来适合正在用 Vscode Codex 插件、并且把模型接入切到自建网关的开发者。需要先明确一点Codex 的本地存储结构官方并没有完整公开文档下面涉及的路径和表结构是基于当前版本实测整理的后续版本可能变化。操作前务必备份~/.codex整个目录尤其是state_5.sqlite和auth.json。2. TaoToken 前置把 auth.json 的 Base URL 与 Key 配对在动归档会话之前得先保证 Codex 插件能正常连上模型。这一步的核心文件就是auth.json。它通常位于~/.codex/auth.jsonWindows 下是C:\Users\你的用户名\.codex\auth.json。这个文件决定了插件往哪个地址发请求、用什么 Key、默认用哪个模型。如果你用的是自建网关来统一管理模型调用那么auth.json里的 Base URL 就要指向网关地址而不是默认的官方地址。TaoToken 的 API 入口是https://taotoken.net/api注意这里不要加任何查询参数保持干净。Key 则在控制台的 API Keys 页面生成生成后复制那一串以sk-开头的字符串。模型 ID 要和你实际开通的模型保持一致比如claude-sonnet-4-5这类具体名称不要写笼统的别名。这里有个容易忽略的点Codex 插件读取auth.json的字段名在不同版本里略有差异常见的是OPENAI_API_KEY和OPENAI_BASE_URL这两个键。如果你只填了 Key 没填 Base URL插件会走默认地址请求自然失败如果 Base URL 末尾多了一个斜杠或者带了/v1之外的路径也可能 404。实测下来最稳的写法是 Base URL 只写到/api让插件自己拼接后续路径。另外如果你同时用 Claude Code 或 Cline 这类工具建议把接入信息集中管理避免每个工具各写一份、改的时候漏掉一个。TaoToken 的控制台里可以统一看到 Key 的使用情况方便排查是哪个工具在报错。生成 Key 之后先别急着配归档恢复先用最简请求验证一次连通性确认没问题再往下走。这一步花两分钟能省掉后面半小时的瞎猜。3. 可复制配置auth.json 字段模板与 settings 片段这一节给可直接复制的配置。先看auth.json的最小可用模板{ OPENAI_API_KEY: sk-你的TaoToken密钥, OPENAI_BASE_URL: https://taotoken.net/api, OPENAI_MODEL: claude-sonnet-4-5 }三个字段逐一说明。OPENAI_API_KEY填控制台生成的 Key注意不要带多余空格复制时容易在末尾粘上换行。OPENAI_BASE_URL固定写https://taotoken.net/api不要加 UTM 参数也不要加/v1插件会自己处理路径拼接。OPENAI_MODEL填你实际要用的模型 ID写错会导致请求返回模型不存在。如果你更习惯用 TOML 管理配置Codex 也支持~/.codex/config.toml可以这样写model claude-sonnet-4-5 model_provider taotoken [model_providers.taotoken] name TaoToken base_url https://taotoken.net/api env_key TAOTOKEN_API_KEY用 TOML 的话Key 通过环境变量TAOTOKEN_API_KEY注入避免明文写在文件里。设置环境变量的方式Linux/macOS 在~/.zshrc或~/.bashrc里加export TAOTOKEN_API_KEYsk-...Windows 在系统环境变量里新增同名变量。改完记得重开终端或重启 Vscode让环境变量生效。Vscode 侧如果用了 Codex 插件的设置项也可以在settings.json里补一段确保插件读取的是同一份配置{ codex.baseUrl: https://taotoken.net/api, codex.model: claude-sonnet-4-5 }注意settings.json里的字段名以你当前插件版本为准不同版本可能叫codex.apiBase之类。改完配置后完全退出 Vscode 再重开不要只关窗口否则插件进程可能还持有旧配置。这一步做完先别碰归档文件直接新建一个会话发一条消息确认能正常收到回复。能收到说明接入链路通了再进入归档恢复环节。4. 验证请求与归档恢复从 .jsonl 到 SQLite 的完整动作接入通了之后开始处理归档会话。完整恢复需要同时改两处.jsonl文件位置和 SQLite 里的archived状态。只做其中一步重启后会话仍会消失。第一步完全退出 Codex 和 Vscode确保没有进程在写数据库。然后备份cp ~/.codex/state_5.sqlite ~/.codex/state_5.sqlite.bak cp -r ~/.codex/archived_sessions ~/.codex/archived_sessions.bak第二步读取归档.jsonl第一行的session_meta拿到会话 ID 和创建日期head -n 1 ~/.codex/archived_sessions/你的会话.jsonl输出里会有id和created_at之类的字段。记下id并根据创建日期确定目标目录比如2025/03/14。第三步把文件移回对应日期目录mkdir -p ~/.codex/sessions/2025/03/14 mv ~/.codex/archived_sessions/你的会话.jsonl ~/.codex/sessions/2025/03/14/第四步更新数据库。用 sqlite3 打开state_5.sqlitesqlite3 ~/.codex/state_5.sqlite执行更新把归档状态清掉并把rollout_path指向移动后的完整路径UPDATE threads SET archived 0, archived_at NULL, rollout_path /Users/你的用户名/.codex/sessions/2025/03/14/你的会话.jsonl WHERE id 你的会话ID;路径要写绝对路径Windows 下用反斜杠或正斜杠都行但要和实际位置一致。批量恢复时对每个归档文件分别执行这条 UPDATErollout_path各不相同不能共用。第五步验证数据库里已无归档记录SELECT id, title, archived, rollout_path FROM threads WHERE archived 1;结果为空说明状态已同步。退出 sqlite3重启 Vscode打开 Codex 历史记录会话应该正常出现。如果还是不出现回到第 2 节确认auth.json的请求是否真的通了因为插件在恢复时会重新校验会话元信息请求失败同样会导致会话不可见。5. 本篇常见错排查401、local proxy failed 与 reading choices归档恢复过程中报错往往出现在两个阶段接入阶段和恢复阶段。下面按真实报错逐条对照。401 UnauthorizedKey 无效或没被读到。先确认auth.json里的OPENAI_API_KEY和你在控制台生成的一致注意有没有多余空格或换行。如果用的是环境变量方式确认变量名拼写正确并且重启过终端。还有一种情况是 Key 被删除或过期去控制台 API Keys 页面重新生成一个替换。local proxy failed插件尝试走本地代理但没起来。检查auth.json的 Base URL 是否写成了http://localhost:xxxx这类本地地址如果是改成https://taotoken.net/api。同时确认没有残留的代理环境变量比如HTTP_PROXY、HTTPS_PROXY这些会干扰请求走向。reading choices相关报错通常是响应结构不符合插件预期多半是 Base URL 路径拼错比如多写了/v1导致返回了非预期内容。把 Base URL 改回https://taotoken.net/api不要带额外路径。OAuth相关报错如果你之前用官方账号登录过auth.json里可能残留 OAuth 字段和 API Key 方式冲突。把auth.json里除OPENAI_API_KEY、OPENAI_BASE_URL、OPENAI_MODEL之外的认证字段清掉只保留 API Key 方式。会话恢复后重启又消失说明 SQLite 的archived没改成功或者rollout_path写错了。重新执行第 4 节的 UPDATE并用 SELECT 确认archived 0。注意不要在 Codex 运行中改数据库否则改动可能被覆盖。.jsonl内容被改动导致解析失败恢复时只移动文件不要编辑内容。如果误改了从备份里恢复原文件再重做。6. 语义一致 CTA把接入与恢复串成一条可复用路径整套流程走下来核心就两件事让auth.json的 Base URL、Key、模型 ID 三者配对正确让.jsonl位置和 SQLite 的archived状态同步更新。前者决定插件能不能正常请求后者决定会话重启后还在不在。两者缺一归档恢复都会失败。如果你还在配置接入阶段先去控制台生成 Key再对照第 3 节的模板改auth.json改完用一条最简消息验证连通性。接入文档里有各工具的字段说明遇到字段名对不上时可以查一下。验证模型是否正常响应可以直接在模型对话里发一条测试消息确认返回内容符合预期。如果你打算长期用 Codex 做编码和 Agent 任务建议把接入配置固定下来别每次换工具都重配一遍。Coding Plan 适合这种持续使用的场景Key 和模型统一管理省去反复排查字段的麻烦。归档恢复这类操作本质是本地状态维护和接入配置分开处理思路会清晰很多。