farion1231/cc-switch

[Bug] Codex + DeepSeek 配置下 AppShots 功能不可用 — model catalog 继承了 GPT 模板的视觉能力标记

Open

#3,481 opened on Jun 1, 2026

View on GitHub
 (4 comments) (3 reactions) (0 assignees)Rust (71,012 stars) (4,558 forks)batch import
good first issuequestion

Description

Self Checks / 自检

  • I have read the FAQ section in README. / 我已阅读 README 中的常见问题。
  • I have searched for existing issues, including closed ones. / 我已搜索过已有的 Issue。

CC Switch Version / 版本号

3.16.0

Operating System / 操作系统

macOS

Related App / 涉及应用

Codex

Steps to Reproduce / 重现步骤

  1. 在 CC Switch 中为 Codex 配置一个第三方供应商,模型使用 DeepSeek(如 deepseek-chatdeepseek-reasoner),开启本地路由。
  2. 确保 CC Switch 已接管 Codex Live 配置,~/.codex/cc-switch-model-catalog.json 已生成。
  3. 在 Codex 桌面端中尝试使用 AppShots 功能(截图 / Computer Use)。
  4. 观察 AppShots 功能的行为。

Expected Behavior / 期望行为

AppShots 功能应当能正常截取屏幕并传给模型分析,或者如果 DeepSeek 不支持图片输入,Codex 应提示该模型不支持,明确禁用该功能。

Actual Behavior / 实际行为

AppShots 功能无法正常使用。发送截图请求后 API 报错或无响应,因为 DeepSeek 模型实际上不支持 image 输入模态(image input modality),但 Codex 认为它支持并尝试发送图片数据。

技术分析 / Technical Analysis

根因

CC Switch 在生成 Codex model catalog(cc-switch-model-catalog.json)时,通过 codex_catalog_model_entry() 函数从模板克隆模型条目。该模板来自以下来源之一:

  1. Codex 自身的 models_cache.json(GPT 系列模型条目)
  2. 内置的 Codex CLI 模板
  3. 静态回退模板 gpt5_5_template.json

模板(特别是 gpt5_5_template.json)包含以下视觉相关字段:

"supports_image_detail_original": true,
"input_modalities": ["text", "image"]

src-tauri/src/codex_config.rscodex_catalog_model_entry() 函数中,生成新条目时仅覆盖以下字段:

  • slug
  • display_name
  • description
  • context_window / max_context_window
  • priority
  • additional_speed_tiers
  • service_tiers
  • availability_nux
  • upgrade

模板中的 supports_image_detail_originalinput_modalities 等视觉能力标记 不会被清除或调整,因此 DeepSeek(及其他不支持图片输入的模型)生成出的 catalog 条目会错误地声明支持图片输入。

影响范围

此问题影响所有通过 CC Switch 接入 Codex 且不支持图片/视觉输入的第三方模型(不仅限于 DeepSeek)。Codex 的 AppShots 功能依赖模型支持图片输入,当 catalog 声明支持但实际模型不支持时,功能静默失败或返回 API 错误。

建议修复方向

  1. codex_catalog_model_entry()codex_model_catalog_from_specs() 中,针对已知不支持图片的模型(或提供一个通用选项),清除或设为 false 的字段:supports_image_detail_original、从 input_modalities 中移除 "image"
  2. 或者在 Codex 供应商表单中新增一个"支持图片输入"的开关,让用户可以自行声明模型是否支持。

Contributor guide