Codex 桌面版一键切换 OpenAI / DeepSeek / Qwen:3 个图标与自动压缩配置

Codex 桌面版一键切换 OpenAI / DeepSeek / Qwen:3 个图标与自动压缩配置


Windows 版 Codex 通过桌面图标切换 OpenAI、DeepSeek、本地 Qwen,并为不同上下文窗口设置独立自动压缩阈值。

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上下文窗口自动压缩阈值
openaigpt-5.6-solOpenAI 内置由 Codex 模型目录提供220000
deepseek-flashdeepseek-flashdeepseek1048576900000
deepseek-prodeepseek-v4-prodeepseek1048576900000
qwenqwen3.8-uncensoredoctohz_qwen38_uncensored131072110000

四个目标都使用:

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

需要注意两种压缩的区别:

  1. 达到 token 阈值后发生的自动压缩,可以用上述配置推迟。
  2. 同一个旧任务从一个模型切换到另一个模型时,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

启动脚本会:

  1. 调用 switch-codex-model.ps1 修改用户配置并创建备份。
  2. 关闭正在运行的 ChatGPT.exe。
  3. 通过系统注册的 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 版本变化时,只需更新一处脚本。

13500举报0子龙•1个月前
点击获取 ^_^

暂无评论