用户订阅了多家 Claude Code 兼容的 coding plan 供应商(例如官方 Anthropic、各类第三方中转/代理服务),每家都通过不同的环境变量(如 ANTHROPIC_API_KEY、ANTHROPIC_BASE_URL、ANTHROPIC_AUTH_TOKEN、ANTHROPIC_MODEL 等)接入 Claude Code。在不同供应商之间切换时,用户需要手动 unset 旧变量、export 新变量、再启动 claude,容易漏设或残留,体验繁琐且易错。需要一个 CLI 工具让"选一个 provider → 跑起来 claude"变成一条命令。
cc-switch(二进制名),负责 provider 切换与 Claude Code 启动。claude 可执行文件路径(默认从 PATH 中查找)。add / list / edit / remove / use)。env:VAR_NAME 语法引用启动时父进程环境中的变量(避免把 API key 明文写进配置),启动时才解析;引用的变量不存在则拒绝启动。cc-switch add <name> --from-template <tpl> 带出 env key 骨架;cc-switch templates list/show 可查阅。use <provider>(或交互式选择)子命令执行核心流程:
claude 可执行文件(前台运行、继承 stdio、转发信号);claude 退出后,从当前进程环境中再次 unset 这些键(相当于兜底清理)。~/.config/cc-switch/config.yaml,可通过 CC_SWITCH_CONFIG 覆盖)。provider-config: 管理 provider 列表的本地持久化配置(增删改查、默认 provider、claude 路径设置、配置文件定位与初始化)。provider-launch: 执行"清理 → 注入 → 启动 claude → 再清理"的运行时流程,包含信号转发与退出码透传。cli: 基于子命令的命令行接口,将上述能力暴露给终端用户,包括交互式选择与非交互式调用两种模式。cmd/cc-switch/(入口)、internal/config/(配置读写)、internal/provider/(provider 模型与并集计算)、internal/runner/(claude 启动与信号处理)、internal/cli/(子命令装配)。github.com/spf13/cobra(子命令)、gopkg.in/yaml.v3(配置序列化);交互选择可选 github.com/AlecAivazis/survey/v2 或自实现简易 TUI。~/.config/cc-switch/config.yaml,用户在多机之间可同步。cc-switch 子进程的环境中操作变量。