# Codex 实用技巧与工具

Codex App/CLI 使用技巧、Provider 切换、历史记录管理、工具推荐等实用指南

# Codex 切换 Provider 保留历史记录全方案（2026.06）

> 数据来源：LINUX DO 社区 20+ 帖子逐楼阅读，2026-06-08 整理。覆盖 Codex App/CLI 切换 Provider 后历史会话丢失的所有解决方案。

---

## 一、问题本质

Codex 按 **model\_provider** 维度隔离会话。切换 Provider 后，历史会话并没有消失，只是在当前 Provider 空间里**看不到索引/元数据**了。

涉及的本地文件：

- **~/.codex/config.toml** — Provider 配置
- **~/.codex/state\_5.sqlite** — 线程的 Provider 信息
- **~/.codex/sessions/\*\*/rollout-\*.jsonl** — 会话内容（首行有 Provider 元数据）
- **~/.codex/session\_index.jsonl** — 会话索引

> 来源：[2139733](https://linux.do/t/topic/2139733)「Codex + CC Switch 切换供应商后codex会话消失/401 的完整修法」

---

## 二、解决方案总览

<table id="bkmrk-方案"><thead><tr><th style="width:15%;">方案</th><th style="width:25%;">名称</th><th style="width:15%;">难度</th><th style="width:15%;">耗时</th><th style="width:30%;">适用场景</th></tr></thead><tbody><tr><td>方案1</td><td>统一 Provider 名称</td><td>⭐</td><td>10秒</td><td>预防为主，配置时统一命名</td></tr><tr><td>方案2</td><td>修改 SQLite 数据库</td><td>⭐⭐</td><td>1分钟</td><td>已切换，需要恢复历史</td></tr><tr><td>方案3</td><td>codex-provider-sync 工具</td><td>⭐</td><td>30秒</td><td>一键恢复，推荐新手</td></tr><tr><td>方案4</td><td>Codex-Threadripper 工具</td><td>⭐⭐</td><td>持续运行</td><td>经常切换 Provider 的用户</td></tr><tr><td>方案5</td><td>CLI 直接 resume</td><td>⭐</td><td>即时</td><td>只恢复单个会话</td></tr></tbody></table>

---

## 三、方案详解

#### 方案1：统一 Provider 名称（最简单）

**核心思路：**让所有中转站使用同一个 Provider 名称，这样 Codex 就不会隔离会话。

**操作步骤：**

1. 打开 CC Switch 或中转站配置
2. 把 Provider 名称改成和之前一样（比如都叫 `custom`）
3. 重启 Codex App

**config.toml 示例：**

```
model_provider = "custom"
[model_providers.custom]
name = "custom"
base_url = "http://your-proxy/v1"

```

**⚠️ 注意：**不能用 `openai`（小写）作为 Provider 名称，这是官方保留字，会报错。

> 来源：[2098635#1](https://linux.do/t/topic/2098635) @hwj1「分享一个10秒钟解决ccswitch切换中转站导致codex历史会话消失的问题」

#### 方案2：修改 SQLite 数据库

**操作步骤：**

1. 关闭 Codex App
2. 用数据库工具打开 `~/.codex/state_5.sqlite`
3. 修改 `threads` 表的 `model_provider` 字段，改成你当前的 Provider 名称
4. 重启 Codex App

**SQL 命令：**

```
UPDATE threads SET model_provider = 'custom';

```

**💡 提示：**如果想享受远程压缩功能，可以把所有会话的 Provider 都改成 `OpenAI`（大写）。但注意 `openai`（小写）是官方保留字，不能用于自定义 Provider。

> 来源：[1962900#1](https://linux.do/t/topic/1962900) @yongye「Codex App 切到 API Provider 后历史会话消失解决办法」

#### 方案3：codex-provider-sync 工具

**功能：**一键同步 rollout 元数据和 SQLite 里的 provider，让 CLI / App 都能看到同一批历史会话。

**安装 &amp; 使用：**

```
# 安装
npm install -g github:Dailin521/codex-provider-sync

# 查看当前状态
codex-provider status

# 同步 Provider
codex-provider sync

# 重启 Codex App

```

**支持：**Windows / macOS / Linux

> 来源：[2293227#1](https://linux.do/t/topic/2293227) @wanghengtong「Codex APP切换Provider后，历史对话全没了，恢复办法」

**GitHub：**[https://github.com/Dailin521/codex-provider-sync](https://github.com/Dailin521/codex-provider-sync)

#### 方案4：Codex-Threadripper 工具

**功能：**自动撕裂线程之间的隔阂，让所有 Provider 下的会话都能看到。支持后台服务持续运行。

**安装 &amp; 使用：**

```
# 安装 (macOS/Linux)
brew tap wangnov/tap
brew install codex-threadripper

# 查看状态
codex-threadripper status

# 启动后台服务（自动同步）
codex-threadripper start

```

**⚠️ 注意：**Codex 128 版本引入了新行为：恢复会话时自动切换到上一个会话使用的 Provider。工具可能需要更新以适配。

> 来源：[2120343#1](https://linux.do/t/topic/2120343) @wangnov「【开源】切 provider 避免丢会话：Codex-Threadripper」

**GitHub：**[https://github.com/Wangnov/codex-threadripper](https://github.com/Wangnov/codex-threadripper)

#### 方案5：CLI 直接 resume 会话

**适用场景：**如果只是临时需要访问某个历史会话，可以直接用 CLI 的 resume 命令。

**操作步骤：**

1. 在 CC Switch 的会话管理中找到目标会话的 ID
2. 直接运行命令

```
codex resume 019de7eb-623c-7d12-938b-c34026f8d6fd

```

> 来源：[2098635#1](https://linux.do/t/topic/2098635) @hwj1

---

## 四、最佳实践（预防措施）

#### 1. 统一 Provider 名称

在配置所有中转站时，统一使用同一个 Provider 名称（如 `custom`），这样切换时不会丢失会话。

#### 2. 使用 "OpenAI"（大写）作为 Provider 名称

```
model_provider = "OpenAI"
[model_providers.OpenAI]
name = "openai"
base_url = "http://127.0.0.1:8137/v1"

```

**注意：**这个方法对公益站有效，但官方账号登录后不会显示第三方会话。且 `openai`（小写）是保留字，不能用。

> 来源：[2120343#17](https://linux.do/t/topic/2120343) @Lu\_Hang

#### 3. 定期备份

切换 Provider 前，备份 `~/.codex/` 目录，尤其是 `state_5.sqlite` 和 `sessions/` 文件夹。

---

## 五、相关工具汇总

<table id="bkmrk-工具"><thead><tr><th style="width:25%;">工具名称</th><th style="width:35%;">功能</th><th style="width:20%;">GitHub</th><th style="width:20%;">来源</th></tr></thead><tbody><tr><td>codex-provider-sync</td><td>同步 rollout 元数据和 SQLite provider</td><td>[GitHub](https://github.com/Dailin521/codex-provider-sync)</td><td>[2293227](https://linux.do/t/topic/2293227)</td></tr><tr><td>Codex-Threadripper</td><td>自动撕裂线程隔阂，支持后台服务</td><td>[GitHub](https://github.com/Wangnov/codex-threadripper)</td><td>[2120343](https://linux.do/t/topic/2120343)</td></tr><tr><td>CodexPlusPlus</td><td>Codex App 增强工具，含迁移功能</td><td>[GitHub](https://github.com/BigPizzaV3/CodexPlusPlus)</td><td>[2293227](https://linux.do/t/topic/2293227)</td></tr><tr><td>CC Switch</td><td>跨平台桌面 All-in-One 助手</td><td>[GitHub](https://github.com/farion1231/cc-switch)</td><td>[2098635](https://linux.do/t/topic/2098635)</td></tr></tbody></table>

---

## 六、关键帖子索引

<table id="bkmrk-帖子"><thead><tr><th style="width:15%;">帖子</th><th style="width:50%;">标题</th><th style="width:15%;">日期</th><th style="width:20%;">方案类型</th></tr></thead><tbody><tr><td>[2293227](https://linux.do/t/topic/2293227)</td><td>Codex APP切换Provider后，历史对话全没了，恢复办法</td><td>2026-06-02</td><td>codex-provider-sync</td></tr><tr><td>[2139733](https://linux.do/t/topic/2139733)</td><td>Codex + CC Switch 切换供应商后codex会话消失/401 的完整修法</td><td>2026-05-09</td><td>完整修法</td></tr><tr><td>[2120343](https://linux.do/t/topic/2120343)</td><td>【开源】切 provider 避免丢会话：Codex-Threadripper</td><td>2026-05-06</td><td>Threadripper 工具</td></tr><tr><td>[2098635](https://linux.do/t/topic/2098635)</td><td>分享一个10秒钟解决ccswitch切换中转站导致codex历史会话消失的问题</td><td>2026-05-02</td><td>统一 Provider 名称</td></tr><tr><td>[1962900](https://linux.do/t/topic/1962900)</td><td>Codex App 切到 API Provider 后历史会话消失解决办法</td><td>2026-04-14</td><td>修改 SQLite</td></tr><tr><td>[1926891](https://linux.do/t/topic/1926891)</td><td>Codex从中转切换到官方如何恢复session</td><td>2026-04-08</td><td>恢复方法</td></tr><tr><td>[2265792](https://linux.do/t/topic/2265792)</td><td>codex 远程压缩 对话历史切供应商消失如何解决</td><td>2026-06-01</td><td>完全解惑</td></tr><tr><td>[2234221](https://linux.do/t/topic/2234221)</td><td>Codex app 官方/第三方 provider 切换指南</td><td>2026-05-24</td><td>切换指南</td></tr><tr><td>[1717518](https://linux.do/t/topic/1717518)</td><td>使用codex迁移自定义provider会话至openai team账号的提示词</td><td>2026-03-10</td><td>迁移提示词</td></tr></tbody></table>

# 如何与 Codex 协作？

---

## 1. 建立项目

创建独立的项目文件夹，放入已有代码、文档等材料；初始化 Git，并提交项目的初始版本。

推荐使用 VS Code 配合 Git。安装、初始化及基本操作可以直接询问 ChatGPT，无需一次掌握 Git 的全部高级功能。

---

## 2. 阅读并确认

先让 Codex 阅读项目中的相关材料，不要立即修改代码。

相关材料可以包括：

- 已有源代码和算例；
- 论文、理论资料和经典教材；
- 接口说明、输入文件及历史记录；
- 已有的操作手册或项目规范。

同时，与 Codex 确认关键约定，例如：

- 节点和自由度的编号顺序；
- 坐标系与正方向；
- 单位制、接口和数据格式；
- 哪些已有功能必须保持不变。

建议与 Codex 共同维护一份 Markdown 文档，持续记录讨论结论。Markdown 既便于 Codex 修改，也便于人工阅读；也可以使用 `.txt`、`.tex`、`.json` 等纯文本文件。

---

## 3. 根据任务规划方案

根据具体任务，与 Codex 讨论代码的新增、修改或升级方案，并持续记录在文档中，反复迭代确认。

规划阶段就应明确代码的验证方法，例如：

1. **解析解对比：**让 Codex 根据可靠资料整理解析解，并与数值结果进行比较。
2. **退化或回归对比：**例如将三维程序退化到二维条件，与已验证的二维程序比较计算结果。
3. **数值差分核对：**使用有限差分对解析灵敏度进行独立核对。
4. **其他验证方式等。**

---

## 4. 明确协作约束

正式执行前，应向 Codex 说明代码风格和修改边界，例如：

- 修改集中在指定文件；
- 只做完成任务所需的最小修改；
- 不随意重构无关模块；
- 不增加不必要的防御性代码；
- 不保留不需要的向后兼容；
- 不擅自增加依赖或改变接口；
- 发现约定不明确时先说明，不进行静默假设。

这些规则来自长期协作经验，可以保存在 `AGENTS.md`、个人操作手册或 Playbook 等文档中，供不同项目复用。

---

## 5. 修改并验证

让 Codex 按照已经确认的方案执行修改，并自行运行验证。

> 请严格按照已经确认的代码修改方案，在既定约束下完成修改，并在完成后执行全部验证。

---

## 6. 使用 Git 管理与审阅代码

Codex 完成修改后，不要只阅读它的总结，也不要仅因“测试通过”就直接接受，应使用 Git 查看实际代码差异。

重点审阅：

- 哪些文件被修改；
- 修改前后有哪些具体差异；
- 是否遵守既定协作约束；
- 是否出现无关重构；
- 是否增加了不必要的依赖或复杂度。

---

## 7. 决定是否接受更改

- 修改合理：提交 Git 版本；
- 存在局部问题：要求 Codex 根据差异继续修正；
- 修改方向错误：回滚到修改前的版本。

---

## 核心流程

```
创建项目并初始化 Git
→ 阅读代码与理论材料
→ 共同维护文档
→ 讨论并形成代码方案
→ 明确修改边界和编码习惯
→ Codex 修改并验证
→ 查看 Git 差异
→ 修正、提交或回滚
```