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