ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Codex聊天记录迁移:把SQLite与JSONL备份改到TaoToken的完整配置

Codex聊天记录迁移:把SQLite与JSONL备份改到TaoToken的完整配置 1. Codex 聊天记录迁移到 TaoToken 的完整配置与验证Codex 的聊天记录迁移本质上不是复制一个文件夹那么简单。它由四层数据共同决定JSONL 负责聊天正文SQLite 负责任务索引全局状态负责项目归属config.toml 与 auth.json 负责 Provider 能否继续对话。很多人换 Provider 后遇到聊天能打开但发不出消息侧边栏显示无任务Model provider not found根因往往不是记录丢了而是这四层里有一层没对齐。这篇面向的场景很明确你已经在用 Codex本地有 SQLite 与 JSONL 备份现在想把 API Provider 统一迁移到 TaoToken 的 Key 通道同时保证历史聊天记录可读、可继续发送。适合谁适合那些换过账号、换过中转、担心记录丢失又不想从头重建项目上下文的开发者。我会把可复制的 settings 与 auth.json 片段、迁移前后目录对照、以及一次对话请求的验证步骤都写清楚你照着做即可。先说结论迁移的核心是记录不动、Provider 换新。JSONL 和 SQLite 里的历史内容尽量保留只把 Provider、Base URL、Model ID 三件套统一到 TaoToken然后重启 Codex 验证。下面按步骤拆开。2. 迁移前的前置准备TaoToken Key 与目录备份在动任何数据库之前先把两件事做完拿到 TaoToken 的 API Key以及完整备份当前.codex目录。顺序不能反因为 Codex 运行时会持续写入状态边跑边改数据库极易被覆盖。TaoToken 的定位是统一 Key 通道把模型调用收敛到一个入口这样你换环境、换账号时Provider 配置只需要改一处。官网入口在 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content API 基址是 https://taotoken.net/api 。注意 API 地址不带 UTM 参数配置里填的就是这个纯地址。先完全退出 Codex确认进程结束。然后备份# 关闭 Codex 后执行带日期备份 $ts Get-Date -Format yyyyMMdd-HHmmss $src $env:USERPROFILE\.codex $dst D:\Codex备份\codex-$ts Copy-Item -Path $src -Destination $dst -Recurse -Force Write-Host 备份完成: $dst备份要包含这几项缺一不可C:\Users\用户名\.codex\ ├─ sessions\ # JSONL 聊天正文 ├─ state_5.sqlite # threads 任务索引 ├─ sqlite\codex-dev.db # local_thread_catalog 侧边栏索引 ├─ .codex-global-state.json # 项目归属与排序 ├─ config.toml # Provider 配置 └─ auth.json # 认证信息迁移前后的目录对照可以这样理解sessions\和两个 SQLite 属于记录层迁移时尽量只增不改config.toml和auth.json属于通道层这次要改的就是它们。把这两层分开看思路就清晰了——记录层保持原样通道层换成 TaoToken。拿 Key 的路径登录后在控制台创建 API Key建议单独建一个用于 Codex 的 Key方便后续轮换和排查。控制台地址 https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content Key 管理页 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 。Key 只显示一次复制后先存到密码管理器。3. 可复制的 config.toml 与 auth.json 配置片段这一节是迁移的核心配置写错后面验证一定失败。Codex 的 Provider 配置在config.toml认证在auth.json两者必须同时指向 TaoToken否则会出现聊天能显示但打不开或能打开但发不出消息。先看config.toml。路径是C:\Users\用户名\.codex\config.toml。下面这段可以直接改用户名后使用关键是base_url指向 TaoToken 的 API 地址model填你实际要用的 Model ID# C:\Users\用户名\.codex\config.toml model gpt-5.5 model_provider taotoken [model_providers.taotoken] name TaoToken base_url https://taotoken.net/api env_key TAOTOKEN_API_KEY wire_api responses这里三个字段要盯紧base_url必须是https://taotoken.net/api不要多加斜杠或路径env_key是环境变量名实际 Key 通过环境变量注入避免明文写进配置文件wire_api按 Codex 当前版本支持的协议填若你的版本用 chat 协议就改成对应值。然后是auth.json。路径C:\Users\用户名\.codex\auth.json。它负责把 Key 交给 Codex{ OPENAI_API_KEY: sk-你的TaoTokenKey, TAOTOKEN_API_KEY: sk-你的TaoTokenKey }如果你更倾向用环境变量而不是写进 auth.json可以在系统环境变量里设置TAOTOKEN_API_KEY然后 auth.json 里对应字段留空或省略。两种方式选一种不要同时配两套互相冲突的值。三件套对照表迁移时逐项核对配置项位置迁移后取值Base URLconfig.toml 的 base_urlhttps://taotoken.net/apiAPI Keyauth.json / 环境变量TaoToken 控制台创建的 KeyModel IDconfig.toml 的 model如 gpt-5.5按实际可用填写注意旧聊天里可能记录了历史 Provider 名称比如某个中转名和旧模型名。如果只改 config.toml 而不处理 SQLite 里的 provider 字段打开旧聊天时仍可能报Model provider not found。处理方式见下一节。改完配置后先别急着开 Codex。用命令行做一次最小请求验证确认 Key 和 Base URL 通再进 GUI能省掉大量来回排查。4. 验证请求确认记录可读且 Provider 生效配置改完先做两层验证一层验证 TaoToken 通道本身通不通一层验证 Codex 里历史记录能不能打开并继续发送。很多人跳过第一层直接开 GUI结果报错分不清是 Key 问题还是记录问题。第一层用 curl 直接打 TaoToken 的 API确认 Key 有效curl https://taotoken.net/api/v1/models \ -H Authorization: Bearer sk-你的TaoTokenKey返回模型列表就说明 Key 和 Base URL 没问题。如果返回 401先查 Key 是否复制完整、是否被禁用如果连接失败查网络和地址拼写。第二层处理旧聊天的 Provider 兼容。旧 JSONL 和 SQLite 里可能写着旧 provider 名需要统一到taotoken。先查 SQLite 里的记录-- 查看 state_5.sqlite 中旧 provider 分布 SELECT provider, COUNT(*) FROM threads GROUP BY provider;如果看到旧 provider 名批量更新为当前配置里的名字UPDATE threads SET provider taotoken WHERE provider 旧Provider名;同样检查sqlite\codex-dev.db的local_thread_catalog表确认 provider 字段一致。JSONL 正文里的模型信息如果影响加载也要同步替换但建议先只改数据库重启后看效果避免一次改太多难以定位。改完数据库重新打开 Codex按这个顺序验证侧边栏项目是否正常显示展开后任务数量对不对。随机打开 2 到 3 条历史聊天确认内容完整。在一条历史聊天里发送测试消息确认能正常返回。检查是否还有 Provider、模型或权限报错。最关键的是第 3 步。只显示历史内容不代表迁移完成能继续发送才算 Provider 真正生效。如果发送时报401 Unauthorized或Missing scopes回到 auth.json 和 Key 权限检查如果报Model provider not found说明数据库里还有旧 provider 没清干净。验证通过后建议再备份一次当前状态作为迁移完成的基线下次换环境直接从这个基线出发。5. 常见报错排查401、local proxy failed 与 reading choices迁移过程中有几类报错高频出现逐个对照处理基本能覆盖九成问题。401 UnauthorizedKey 无效或没被正确读取。检查 auth.json 里的 Key 是否和 TaoToken 控制台一致环境变量是否生效。Windows 下环境变量改完要重开终端。如果 Key 刚创建确认没有复制到多余空格。local proxy failed通常是 Base URL 写错或本地网络拦截。确认base_url是https://taotoken.net/api没有多余路径。如果公司网络有代理策略按内部规范配置不要用非正规手段绕过。reading choices相关报错多出现在响应解析阶段常见原因是wire_api协议和实际返回格式不匹配。检查 config.toml 里wire_api的值是否与 Codex 版本匹配必要时切换协议再试。Model provider not found数据库里旧 provider 名没更新。按上一节的 SQL 批量更新threads和local_thread_catalog两张表。OAuth相关报错如果你之前用账号登录方式auth.json 里可能残留旧 token。清空旧字段只保留 TaoToken 的 Key 配置重启 Codex。侧边栏无任务不是记录丢了而是local_thread_catalog缺记录或项目映射缺失。检查.codex-global-state.json里的thread-project-assignments确认任务的工作目录和项目节点对得上。重启后恢复内容又消失几乎都是恢复时 Codex 还在运行程序把旧状态写回去了。正确做法是彻底退出 Codex改完数据库和全局状态再启动。提示排查时一次只改一个变量改完重启验证。同时改配置、数据库、全局状态出问题很难定位是哪一层。如果排障过程中需要对照接口文档接入文档在 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 里面有 Base URL、鉴权和请求格式的说明。6. 统一 Key 通道后的长期使用建议迁移完成后日常使用其实就稳定了。这里给几条实测下来比较省心的建议。第一Key 轮换留后路。TaoToken 控制台可以建多个 Key给 Codex 单独一个出问题只换这一个不影响其他工具。轮换时只改 auth.json 或环境变量config.toml 不用动。第二记录层和通道层分开备份。sessions\和两个 SQLite 属于记录定期备份config.toml和auth.json属于通道改动前单独存一份。这样下次换 Provider只动通道层记录层原封不动。第三模型名统一管理。旧聊天里可能散落多个历史模型名迁移时统一到当前可用的 Model ID避免打开旧聊天时反复报错。可以在 config.toml 里固定一个默认模型减少每次选择。第四验证脚本化。把第 4 节的 curl 验证写成一个脚本每次改配置后跑一遍几秒钟就能确认通道是否正常比开 GUI 试错快得多。如果你后续要做长期编码或 Agent 类任务可以考虑 Coding Plan把调用额度集中管理入口在 https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 。需要临时验证某个模型效果时用模型对话页快速试地址 https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 。最后回到迁移本身记录层保持原样通道层换成 TaoToken 三件套重启后打开一条历史聊天并成功发送消息迁移就算完成。整个过程最容易被忽略的是 SQLite 里的 provider 字段和 Codex 运行时的状态覆盖把这两点处理好基本不会翻车。
返回列表