
Codex 桌面版一键切换 OpenAI / DeepSeek / Qwen:3 个图标与自动压缩配置
这篇记录 Windows 版 Codex 桌面软件接入 OpenAI、DeepSeek 和本地 Qwen,并通过桌面快捷方式切换默认模型的当前做法。
本文配置已于 2026 年 9 月更新。当前桌面有 3 个入口:
Codex - OpenAI 5.6 Sol
Codex - DeepSeek Flash
Codex - Qwen
切换脚本内部还支持 deepseek-pro,但当前没有为它创建桌面快捷方式。
核心结论:
- 多个图标共用同一份用户配置,不是多套独立 Codex 环境。
- 图标会先修改默认模型配置,再关闭并重新启动 Codex 桌面端。
- 已打开的旧任务通常保留原模型;切换后应新建任务。
- 自定义模型应明确设置上下文窗口和自动压缩阈值。
- 仅设置
model_context_window不够,还应设置model_auto_compact_token_limit。 - 在旧任务中切换模型时,Codex 仍可能主动压缩一次历史,这是模型切换兼容行为,不是阈值配置失效。
1. 配置和脚本位置
用户级配置:
C:\Users\Administrator\.codex\config.toml
模型切换脚本:
C:\Users\Administrator\.codex\skills\custom-model-switcher\scripts\switch-codex-model.ps1
桌面启动脚本:
C:\Users\Administrator\.codex\skills\custom-model-switcher\scripts\launch-codex-model.ps1
固定图标:
C:\Users\Administrator\.codex\skills\custom-model-switcher\assets\codex-clean.ico
自定义 provider 必须保存在用户级 config.toml。项目目录下的 .codex/config.toml 不适合覆盖 model_provider 或 model_providers。
2. 当前支持的四个目标
切换脚本接受以下目标:
[ValidateSet("qwen", "deepseek-flash", "deepseek-pro", "openai", "status", "verify")]
当前参数如下:
| 目标 | 模型 | Provider | 上下文窗口 | 自动压缩阈值 |
|---|---|---|---|---|
openai | gpt-5.6-sol | OpenAI 内置 | 由 Codex 模型目录提供 | 220000 |
deepseek-flash | deepseek-flash | deepseek | 1048576 | 900000 |
deepseek-pro | deepseek-v4-pro | deepseek | 1048576 | 900000 |
qwen | qwen3.8-uncensored | octohz_qwen38_uncensored | 131072 | 110000 |
四个目标都使用:
model_auto_compact_token_limit_scope = "body_after_prefix"
这样计算下一次自动压缩阈值时,只统计上次压缩前缀之后新增的正文,避免已经压缩过的前缀马上再次占满阈值。
3. OpenAI 配置
OpenAI 使用 Codex 内置 provider,不需要额外建立 [model_providers.openai]。
当前配置:
model = "gpt-5.6-sol"
model_auto_compact_token_limit = 220000
model_auto_compact_token_limit_scope = "body_after_prefix"
model_reasoning_effort = "medium"
OpenAI 模型的 model_context_window 交给 Codex 自带的模型目录管理。当前 gpt-5.6-sol 的有效窗口由 Codex 正确识别,因此脚本切回 OpenAI 时会删除手写的 model_context_window。
4. DeepSeek Provider
API key 应存放在 Windows 用户环境变量中,不要写进文章、脚本或 config.toml:
[Environment]::SetEnvironmentVariable("DEEPSEEK_API_KEY", "你的 key", "User")
Provider 配置:
[model_providers.deepseek]
name = "DeepSeek"
base_url = "https://api.deepseek.com"
env_key = "DEEPSEEK_API_KEY"
wire_api = "responses"
stream_idle_timeout_ms = 600000
DeepSeek Flash 的顶层选择配置:
model = "deepseek-flash"
model_provider = "deepseek"
model_context_window = 1048576
model_auto_compact_token_limit = 900000
model_auto_compact_token_limit_scope = "body_after_prefix"
model_supports_reasoning_summaries = false
DeepSeek Pro 只需把模型改为:
model = "deepseek-v4-pro"
5. 本地 Qwen Provider
本地 Qwen 服务地址:
http://192.168.38.218:8095/v1
Provider 配置:
[model_providers.octohz_qwen38_uncensored]
name = "OctoHz qwen3.8 uncensored"
base_url = "http://192.168.38.218:8095/v1"
wire_api = "responses"
stream_idle_timeout_ms = 600000
该服务当前依靠内网访问控制且不要求 API key,因此不要添加一个不存在的 env_key 占位符。
Qwen 顶层选择配置:
model = "qwen3.8-uncensored"
model_provider = "octohz_qwen38_uncensored"
model_context_window = 131072
model_auto_compact_token_limit = 110000
model_auto_compact_token_limit_scope = "body_after_prefix"
model_supports_reasoning_summaries = false
131072 是 128K 上下文。压缩阈值设置为 110000,为输出、工具调用和运行时指令留出余量。
6. 为什么之前一开始就压缩
只配置 model_context_window 时,Codex 仍可能采用模型目录中的默认自动压缩阈值。窗口即使显示为 258K,也可能在约 100K 时开始压缩。
需要同时配置:
model_auto_compact_token_limit = 220000
model_auto_compact_token_limit_scope = "body_after_prefix"
这两个字段分别控制触发 token 数和计算范围。OpenAI 官方配置参考:
https://developers.openai.com/docs/config-file/config-reference
需要注意两种压缩的区别:
- 达到 token 阈值后发生的自动压缩,可以用上述配置推迟。
- 同一个旧任务从一个模型切换到另一个模型时,Codex 可能主动压缩历史以兼容新模型;这种压缩不由 token 阈值决定。
因此切换模型后,最稳妥的做法是新建任务。
7. 桌面端显示 Custom
自定义 provider 在桌面端通常只显示:
Custom
这是正常现象。使用 DeepSeek 或 Qwen 时应保持 Custom,不要在同一个任务里再选择 OpenAI 模型,否则桌面端可能改写顶层 model,形成模型与 provider 不匹配的组合。
例如下面的配置就是错误的:
model = "gpt-5.6-terra"
model_provider = "deepseek"
8. 桌面快捷方式如何工作
三个快捷方式都运行 Windows PowerShell,并调用统一启动脚本:
powershell -NoProfile -ExecutionPolicy Bypass -File "C:\Users\Administrator\.codex\skills\custom-model-switcher\scripts\launch-codex-model.ps1" openai
powershell -NoProfile -ExecutionPolicy Bypass -File "C:\Users\Administrator\.codex\skills\custom-model-switcher\scripts\launch-codex-model.ps1" deepseek-flash
powershell -NoProfile -ExecutionPolicy Bypass -File "C:\Users\Administrator\.codex\skills\custom-model-switcher\scripts\launch-codex-model.ps1" qwen
启动脚本会:
- 调用
switch-codex-model.ps1修改用户配置并创建备份。 - 关闭正在运行的
ChatGPT.exe。 - 通过系统注册的 AppID 重新启动 Codex。
不要让快捷方式直接指向带版本号的 WindowsApps 目录。Codex 升级后目录名会变化,快捷方式可能失效或图标变白。
当前启动脚本通过系统注册信息寻找:
OpenAI.Codex_2p2nqsd0c76g0!App
9. 固定桌面图标
三个快捷方式的 IconLocation 都指向:
C:\Users\Administrator\.codex\skills\custom-model-switcher\assets\codex-clean.ico,0
这份图标位于稳定路径,不依赖 WindowsApps 的版本目录,因此应用升级后不会因为旧路径消失而变成白色图标。
10. 验证当前配置
查看默认配置:
powershell -ExecutionPolicy Bypass -File C:\Users\Administrator\.codex\skills\custom-model-switcher\scripts\switch-codex-model.ps1 status
发起一个新的 CLI 验证任务:
powershell -ExecutionPolicy Bypass -File C:\Users\Administrator\.codex\skills\custom-model-switcher\scripts\switch-codex-model.ps1 verify
验证时应关注启动信息中的 model: 和 provider:,不要依靠询问模型“你是谁”。
还可以检查配置能否被 Codex 正常加载:
codex doctor --json
报告中的 config.load 应为 ok。
11. 使用建议
- 日常 OpenAI:使用
Codex - OpenAI 5.6 Sol。 - 长上下文且希望降低成本:使用
Codex - DeepSeek Flash。 - 本地内网模型:使用
Codex - Qwen。 - 每次切换后新建任务,不要用旧任务判断切换是否成功。
- 同一时刻不要用多个桌面图标并行切换,因为它们修改的是同一份全局配置。
- 需要并行运行多个 provider 时,更适合使用独立 CLI profile 或不同的 Codex 配置目录。
当前实现把模型选择、上下文窗口和自动压缩阈值放在同一个切换脚本中维护。这样桌面快捷方式保持简单,未来模型或 Codex 版本变化时,只需更新一处脚本。
暂无评论
