跳转到内容

配置界面闪烁 - cc-switch

Quick fix

升级 cc-switch 修复表单异步加载导致的闪烁,并通过读取 SQLite 数据库解决 env 变量不随供应商更新的问题。

报错原文
配置界面闪烁

在 cc-switch 中编辑当前生效的供应商时,表单会先使用数据库配置挂载,随后异步读取实时的 ~/.claude/settings.json 并进行替换。这种延迟替换会触发 form.reset,导致首屏绘制后 API Key 等字段重新初始化,从而产生界面闪烁。此外,由于通用配置功能的调整,为每个供应商单独配置的自定义环境变量(如 env.CC_SWITCH_RELAY_NAME)在切换供应商时不再自动更新。

  1. 升级 cc-switch 至包含 PR #4277 的版本。该更新使表单在实时配置就绪后仅挂载一次(加载期间显示 spinner),消除了异步替换带来的界面闪烁。

  2. 若需获取当前中转站名称等自定义环境变量,请放弃通过 settings.json 读取,改为编写 Bash 包装器脚本直接查询 cc-switch 的本地 SQLite 数据库。

    $HOME/.cc-switch/cc-switch.db
    #!/usr/bin/env bash
    set -euo pipefail
    payload="$(cat)"
    DB="$HOME/.cc-switch/cc-switch.db"
    label=""
    if [[ -f "$DB" ]]; then
    label="$(sqlite3 \
    -cmd ".timeout 200" \
    -noheader -batch "$DB" \
    "SELECT name
    FROM providers
    WHERE app_type='claude' AND is_current=1
    LIMIT 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"
ToolClaude Code
Version3.16.2 - 3.16.3
PlatformsmacOS
为什么新版本找不到“编辑通用配置”的入口了?
作者对通用配置功能进行了回退。目前的逻辑是先手动编辑 Claude 的 settings.json 添加通用配置,切换供应商时不会覆盖这些非白名单字段。
界面闪烁会一直无限循环吗?
不会。这只是打开编辑对话框时的一次有界重新初始化,在手动修改过 settings.json 导致实时数据与数据库不一致时最为明显。

这是一个非官方社区 wiki,与 cc-switch 作者及项目本身无隶属关系。内容整理自项目公开的 GitHub issues。本站不分发任何软件。