配置界面闪烁 - cc-switch
Quick fix
升级 cc-switch 修复表单异步加载导致的闪烁,并通过读取 SQLite 数据库解决 env 变量不随供应商更新的问题。
Symptom
Section titled “Symptom”配置界面闪烁在 cc-switch 中编辑当前生效的供应商时,表单会先使用数据库配置挂载,随后异步读取实时的 ~/.claude/settings.json 并进行替换。这种延迟替换会触发 form.reset,导致首屏绘制后 API Key 等字段重新初始化,从而产生界面闪烁。此外,由于通用配置功能的调整,为每个供应商单独配置的自定义环境变量(如 env.CC_SWITCH_RELAY_NAME)在切换供应商时不再自动更新。
升级 cc-switch 至包含 PR #4277 的版本。该更新使表单在实时配置就绪后仅挂载一次(加载期间显示 spinner),消除了异步替换带来的界面闪烁。
若需获取当前中转站名称等自定义环境变量,请放弃通过 settings.json 读取,改为编写 Bash 包装器脚本直接查询 cc-switch 的本地 SQLite 数据库。
$HOME/.cc-switch/cc-switch.db #!/usr/bin/env bashset -euo pipefailpayload="$(cat)"DB="$HOME/.cc-switch/cc-switch.db"label=""if [[ -f "$DB" ]]; thenlabel="$(sqlite3 \-cmd ".timeout 200" \-noheader -batch "$DB" \"SELECT nameFROM providersWHERE app_type='claude' AND is_current=1LIMIT 1;" 2>/dev/null)" || label=""fi[[ -z "$label" ]] && label="Unknown"ccline_out="$(printf '%s' "$payload" | ccline 2>/dev/null | head -n1)"printf '⚡%s | %s\n' "$label" "$ccline_out"
Affected Versions
Section titled “Affected Versions”ToolClaude Code
Version3.16.2 - 3.16.3
PlatformsmacOS
Source Issues
Section titled “Source Issues”本页汇总自 3 个真实 issue
- 为什么新版本找不到“编辑通用配置”的入口了?
- 作者对通用配置功能进行了回退。目前的逻辑是先手动编辑 Claude 的 settings.json 添加通用配置,切换供应商时不会覆盖这些非白名单字段。
- 界面闪烁会一直无限循环吗?
- 不会。这只是打开编辑对话框时的一次有界重新初始化,在手动修改过 settings.json 导致实时数据与数据库不一致时最为明显。
供应商 API Key 被覆盖:Codex 重启或切换后升级到 cc-switch v4.0.0 或更高版本;该版本重写了切换逻辑,避免供应商密钥互相覆盖并恢复官方登录态。Codex Desktop 项目列表消失或推理档位减少 - CC Switch 配置问题多数相关 issue 仍未解决;升级 CC Switch 或切换供应商后,Codex 的 model_provider 字段变化导致项目历史消失;升级至 v3.19.1+ 统一为 custom 可解决。若推理档位减少,需在 Codex 设置中手动启用完整档位。代理恢复时旧 Provider API Key 覆盖当前配置升级到 v4.0.0 或更新版本;重做后的本地路由不再通过旧备份恢复密钥。
这是一个非官方社区 wiki,与 cc-switch 作者及项目本身无隶属关系。内容整理自项目公开的 GitHub issues。本站不分发任何软件。