Claude Desktop 模式下代理接管 Claude 开关无法勾选 - CC Switch
Quick fix
在 claude-desktop 模式下,设置页的“应用接管”区域硬编码显示的是 Claude Code (claude) 开关,而非 Claude Desktop (claude-desktop) 开关,导致点击无反应或报错。
Symptom
Section titled “Symptom”尝试勾选 claude → ❌ 勾不上 / 无反应或报错该问题源于 cc-switch v3.16.0 前端与后端的 AppType 映射不一致。后端将 'claude' (Claude Code CLI) 和 'claude-desktop' (Claude Desktop 桌面版) 视为两个独立的 AppType。然而,前端 ProxyPanel.tsx 中的「应用接管」区域硬编码了三个开关:`["claude", "codex", "gemini"]`。
当用户在 `claude-desktop` 模式下配置供应商并启动代理时,当前上下文是 `claude-desktop`。但用户点击「claude」接管开关时,前端向后端发送的参数是 `set_takeover_for_app("claude", true)`。后端尝试查找 app_type="claude" 的提供商配置,但由于用户仅配置了 `claude-desktop` 模式的提供商,后端找不到对应的 `claude` 配置,从而导致操作失败(勾不上或报错)。相比之下,codex 和 gemini 有独立的 AppType,互不干扰,因此可以正常勾选。
临时绕过:直接修改 SQLite 数据库以启用接管。打开 cc-switch 使用的 SQLite 数据库文件,找到 proxy_config 表,将 app_type='claude' 且对应你当前代理配置的 enabled 字段手动设置为 1。
# 需定位到 cc-switch 存储数据的 SQLite 数据库文件根本修复:等待官方更新。开发者已确认此 bug,建议在 ProxyPanel.tsx 中根据当前 activeApp 动态渲染接管开关列表(例如在 claude-desktop 模式下显示 claude-desktop 开关),并在后端为 AppType::ClaudeDesktop 补充相应的接管逻辑。
Affected Versions
Section titled “Affected Versions”Source Issues
Section titled “Source Issues”本页汇总自 2 个真实 issue
- 为什么 codex 和 gemini 的接管开关能勾选,只有 claude 不行?
- 因为 codex 和 gemini 在代码中是独立的 AppType,而 claude 开关实际上指向的是 Claude Code (CLI) 的配置。当你使用 Claude Desktop 模式时,系统里没有配置 Claude Code 的提供商,所以点击 claude 开关会因找不到配置而失败。
- 我如何知道我的供应商是 claude 还是 claude-desktop 模式?
- 在添加供应商时,如果你选择的是桌面版集成(如 DeepSeek V4 for Claude Desktop),其 app_type 会被标记为 "claude-desktop"。这与命令行版的 "claude" 是不同的标识符。
- 修改数据库后子代理就能正常工作了吗?
- 是的。Issue #3370 的用户反馈,手动将 proxy_config 表中对应配置的 enabled 设为 1 后,restore_proxy_state_on_startup 能正确恢复接管状态,子代理即可通过代理路由模型。
这是一个非官方社区 wiki,与 cc-switch 作者及项目本身无隶属关系。内容整理自项目公开的 GitHub issues。本站不分发任何软件。