修复「ChatGPT 无法加载 config.toml,因此此对话串无法继续 · Model provider xxx not found」
codex-provider-doctor-v1.0.0.zip
https://www.workbuddy.cn/space/d/T3PV7VwHRGicGSknxuHQjL?ext2=copy_link
一句话:你用 cc-switch(或类似工具)切过 AI 供应商之后,有些旧对话串打不开了 —— 这个包能把它们救回来。
它只做一件事:把 config.toml 里被切换工具删掉的那几段 provider 配置,原样补回来。
它不会:删你的配置、改你的聊天记录、联网、上传任何数据。
1先判断:你需要它吗
对着下表看一眼,第 3、4 条都打勾,基本可以确定就是这个问题。
| # | 症状 | 你的情况 |
|---|---|---|
| 1 | 报错里写着 Model provider 'xxx' not found |
☐ |
| 2 | 报错里写着 ChatGPT 无法加载 config.toml |
☐ |
| 3 | 新开的对话串能正常打开,只有老的打不开 | ☐ |
| 4 | 出问题前,你在 cc-switch 里切过供应商 | ☐ |
注意如果你所有对话串都打不开,那可能不是这个问题,先检查 config.toml 有没有语法错误。
包里有什么
codex-provider-doctor/
├── SKILL.md ← 给 AI 看的说明书(当 Skill 用时需要)
├── scripts/
│ └── codex_provider_doctor.py ← 真正干活的脚本
└── 使用说明.md ← 就是你正在看的这份
只有 codex_provider_doctor.py 这一个文件是必须的,其余是说明书。
准备工作:装 Python(约 3 分钟)
脚本需要 Python 3.11 或更高版本,不需要安装任何额外的包(不用 pip install)。
3.1 先检查你有没有
- 按 Win + R,输入
cmd回车,弹出黑色的命令窗口。 - 粘贴这行并回车:
python --version
| 你看到 | 说明 |
|---|---|
Python 3.12.1 这类 3.11 以上版本号 |
✅ 有了,跳到第 4 节 |
Python 3.10.x 或更低 |
⚠️ 太老,去 3.2 装新版 |
python 不是内部或外部命令 |
❌ 没装,去 3.2 |
3.2 装 Python
- 打开 python.org/downloads
- 点黄色大按钮 Download Python 3.x.x,双击下载好的安装包
- 安装界面最下面有个勾选框
Add python.exe to PATH—— 一定要勾上! - 点
Install Now,等进度条走完 - 关掉黑窗口,重新 Win+R →
cmd→ 再输一次python --version,这次应该能看到版本号
Add python.exe to PATH。勾错了就重新运行安装包,选 Modify 补勾上。4怎么解压、解压到哪里
分两种情况。不知道选哪个就选「用法 B」,更简单。
用法 A:当 Skill 用(推荐给 WorkBuddy / Codex 用户)
好处:下次再遇到同样报错,只要跟 AI 说一句「我的 Codex 又报 Model provider not found 了」,它就会自动帮你修。
| 系统 | 解压到哪个文件夹 |
|---|---|
| Windows | C:\Users\你的用户名\.workbuddy\skills\ |
| macOS / Linux | ~/.workbuddy/skills/ |
「你的用户名」换成你自己的,不确定就看 C:\Users\ 下面哪个是你的名字。
解压步骤(Win10/11 自带功能,不用装软件):
- 找到
codex-provider-doctor-v1.0.0.zip,右键 → 「全部解压缩…」(Win11 叫「提取全部…」) - 把窗口里「目标文件夹」那一栏整段删掉,粘贴:
C:\Users\你的用户名\.workbuddy\skills - 点「提取」。若提示文件夹不存在,点「是」让它创建
验证放对了没有:打开资源管理器,地址栏粘贴 C:\Users\你的用户名\.workbuddy\skills 回车,应看到一个 codex-provider-doctor 文件夹。双击进去,应该直接就能看到 SKILL.md 和 scripts 文件夹。
...\skills\codex-provider-doctor\codex-provider-doctor\SKILL.md —— 多套了一层同名文件夹。判断标准只有一条:
SKILL.md 必须直接躺在 codex-provider-doctor 里面,中间不能再隔一层。修正:把里面那个文件夹剪切出来放到
skills 下,删掉外面那层空文件夹。用法 B:当小工具用(只想修一次,推荐新手)
好处:不用管目录规范,解压到哪都行。推荐 D:\tools\,或者干脆放桌面。
- 右键压缩包 → 「全部解压缩…」
- 「目标文件夹」改成
D:\tools(没有就先去 D 盘手动建一个叫tools的文件夹) - 点「提取」
- 完成后进
D:\tools\codex-provider-doctor看一眼,里面应该有scripts文件夹
5照着做:修复教程
命令按 Windows 写。macOS / Linux 把 python 换成 python3、路径斜杠换成 /。
1先完全关掉 Codex
不是最小化,是真的退出。因为它退出时可能把 config.toml 重写一遍,会让我们的修改白做。
2在脚本所在文件夹打开终端
- 打开资源管理器,进到
codex-provider-doctor文件夹(能看到scripts文件夹的那一层) - 点一下地址栏(显示路径的那一条),内容全选删掉,输入
cmd,回车 - 弹出的黑窗口,路径应该正好是这个文件夹
这样打开的终端工作目录就在当前文件夹,后面命令就不用写一长串路径了。
3先「体检」(只读,绝对安全)
python scripts\codex_provider_doctor.py
这一步只读不写,不改任何文件,随便跑。你会看到类似:
CODEX_HOME : C:\Users\你的用户名\.codex
config.toml : C:\Users\你的用户名\.codex\config.toml
(最后修改 2026-10-12 11:09:07)
当前 model_provider = custom
config.toml 已定义 provider:['custom']
对话串引用的 provider(来源:state_5.sqlite):
- openai 1 条 [内置]
- custom 1 条 [已定义]
- cc-switch-official 1 条 [缺失!]
结论:以下 1 个 provider 被对话串引用,但 config.toml 未定义:
- cc-switch-official
4看懂输出
| 标签 | 含义 |
|---|---|
| 缺失! | 这就是元凶,待会儿要补的就是它 |
| 已定义 | 配置里有,正常 |
| 内置 | Codex 自带,不需要配置,忽略 |
如果输出的是「结论:没有缺失的 provider」,说明你没这个问题,不用继续了。
5修复(真正动文件的一步)
python scripts\codex_provider_doctor.py --apply
克隆模板:[model_providers.custom] -> ['cc-switch-official']
已备份:C:\Users\你的用户名\.codex\config.toml.bak-20261012-110912
已补写 1 个 provider:['cc-switch-official']
看到「已补写 N 个 provider」就成功了。写入前会自动把原配置备份成 config.toml.bak-时间戳,改坏了随时能还原。
6再体检一次,确认修好
python scripts\codex_provider_doctor.py
这次应该看到:结论:没有缺失的 provider,config.toml 与对话串记录一致。
7重新打开报错的对话串
先完全关闭 Codex,再重新打开(配置是启动时读的),然后点开那个之前打不开的对话串。应该能正常进了。
8(可选)确认备份还在
打开 C:\Users\你的用户名\.codex\,会看到 config.toml.bak-2026xxxxxxxxxx 文件,这就是每次修改前的原配置,留几天再删不迟。
6如果你选的是「当 Skill 用」
文件放好后不用跑任何命令,直接跟 AI 说人话就行:
- 「我的 Codex 报
Model provider cc-switch-official not found,帮我修一下」 - 「我用了 cc-switch 切换供应商,现在有些旧对话串打不开了」
- 「ChatGPT 提示无法加载 config.toml,对话串无法继续」
7不想跑脚本?手动改 3 分钟
- 用记事本打开
C:\Users\你的用户名\.codex\config.toml,先复制一份当备份 - 滚到文件最末尾,另起一行粘贴:
[model_providers.cc-switch-official]
name = "OpenAI"
base_url = "http://127.0.0.1:15721/v1"
wire_api = "responses"
requires_openai_auth = true
experimental_bearer_token = "PROXY_MANAGED"
- 把
cc-switch-official换成你报错信息里的那个名字(要一模一样,连字符也对上) - 保存,关掉 Codex 重新打开
base_url 等值只是示例,请照抄你自己文件里已有的 provider 段,别凭空发明;② 一定加在文件末尾,不要插到
model_provider = ... 这种没有方括号的行前面,否则整个配置会解析失败;③ 改完不放心就跑一次第 5 节的「体检」,它会告诉你有没有语法问题。
8常见问题
Q:python 不是内部或外部命令
Python 没装好或没加到 PATH。回第 3.2 节重装,记得勾 Add python.exe to PATH。也可以把命令里的 python 换成 py 试试。
Q:提示需要 Python 3.11+ 的 tomllib
你的 Python 太老。升级 Python,或在终端跑 pip install tomli。
Q:提示找不到 config.toml
配置不在默认位置。先自己打开一次 Codex。如果你改过位置,加参数指定:
python scripts\codex_provider_doctor.py --codex-home "你的实际路径"
Q:提示 config.toml 里没有任何 [model_providers.*] 表可以克隆
先去 cc-switch 里选中一个能用的供应商并点应用,让配置里至少有一个 provider,再跑脚本。
Q:修好了,对话串能打开了,但发消息报「模型不存在」
这是另一回事,不是脚本的锅,它也不负责这个。
原因:那个对话串当初用的是特定模型(比如 gpt-6-astra,只有 ChatGPT 官方后端才有),而你现在切到了别的供应商。
两种做法:在 cc-switch 里切回它原本用的供应商;或者在对话串里把模型换成当前供应商支持的模型。
Q:过了几天又报同样的错
正常,这是切换工具的通病 —— 它每次切换都把配置文件整个重写,会把我们补的段落又删掉。
再跑一次 --apply 就好。
想根治二选一:① 要动老对话串前,先在切换工具里切回它原本用的供应商;② 在 cc-switch 设置里打开「统一 Codex 会话历史」开关,让它切换时把对话串的供应商归属一起迁移。
Q:会不会把我配置改坏?
脚本设计上是只增不减:默认只读,加 --apply 才写;写前必定备份;只往文件末尾追加,不改不删任何已有内容;已存在的段落跳过(重复跑无副作用);写完立刻重新解析校验,校验不通过自动回滚。
Q:改坏了想还原?
去 C:\Users\你的用户名\.codex\,找到 config.toml.bak-最近的时间戳,复制一份改名成 config.toml 覆盖回去。
Q:需要联网或上传什么吗?
不需要,也不会。脚本全程只读本地 ~/.codex、只写本地配置文件,没有任何网络请求。
9它到底改了什么(给好奇的人)
Codex 每开一个新对话串,都会把当时正在用的供应商名字永久刻进两处:数据库 state_5.sqlite 和会话记录文件里,之后再也不跟着配置变。
而 cc-switch 这类工具换供应商时,是整份重写 config.toml,只保留当前这一家的配置,其他家的全删。
于是:老对话串还记着「我当时用的是 A 家」,可 config.toml 里 A 家的配置已经被删了 → Codex 一打开老对话串就懵了,直接报错不让进。
不是你的配置写错了,是两个工具各干各的、互相不兼容。
10怎么卸载
直接删掉 codex-provider-doctor 文件夹就行,不留任何残留。脚本产生的东西只有 ~/.codex/config.toml.bak-* 这些备份文件,确认没问题后可以自己删掉。