theo

开源一个中转站/模型切换小工具(和 CC Switch 共存)

  •  
  •   theo · 5 days ago · 463 views

    CC Switch 的问题

    用 Claude Code / Codex 的人大多知道 CC Switch ,它能管理 Skills 和 MCP 配置,但 Provider 切换这块有几个痛点:

    1. 全局控制:CC Switch 的 Provider 是全局生效的,切了就是切了,所有项目一起变。但实际场景是——项目 A 在用某个中转站跑长任务,项目 B 想临时换个便宜的通道试试,两边需求不一样。
    2. GUI 切换打断心流:每次切换要打开界面、点选、确认,对于一天要在多个项目间来回跳的人来说,这个操作频率太高了,每次都打断终端里的工作节奏。
    3. 不同项目不同阶段用不同通道:写代码用快的,review 用便宜的,跑大任务用稳定的——这种按场景灵活切换的需求,全局 GUI 切换根本应付不来。

    我之前的解法:一堆 shell 脚本

    最早的办法是在项目目录下放启动脚本,每个中转站一个:

    unset ANTHROPIC_AUTH_TOKEN
    unset ANTHROPIC_API_KEY
    unset ANTHROPIC_BASE_URL
    export ANTHROPIC_BASE_URL=https://relay.example.com
    export ANTHROPIC_API_KEY=sk-xxx
    export CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1
    claude "$@"
    

    十来个脚本散落各处。能用,但问题也很明显:

    • 中转站换 Key 、换 URL 的时候,得把所有项目里的脚本都改一遍
    • 换分组通道(比如从普通组切到高速组)也是同样的批量修改
    • Codex 的脚本还得单独处理 OPENAI_* 变量,模板不一样,更乱

    cl:集中配置 + 命令行灵活切换

    所以写了 cl 这个工具。核心思路很简单:

    • 所有中转站配置集中在一个 YAML 文件里,改一处全局生效
    • 在任意项目目录下,一条命令指定 profile 启动,不同终端窗口可以用不同 profile
    • 命令行上下键翻历史,cl relay-acl relay-b 随手切,不打断心流
    cl              # 用默认 profile 启动
    cl relay-a      # 指定 profile
    cl relay-a -r   # 透传参数给 claude
    cl codex-relay  # 启动 Codex
    

    配置文件

    ~/.cl/profiles.yaml,一个文件管所有:

    default: relay-a
    
    defaults:
      env:
        CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC: "1"
    
    profiles:
      relay-a:
        name: Relay A
        base_url: https://relay-a.example.com
        api_key: sk-xxx
        model: claude-opus-4-6
        env: {}
    
      relay-b:
        name: Relay B (Auth Token)
        base_url: https://relay-b.example.com
        auth_token: sk-xxx
        env:
          API_TIMEOUT_MS: "600000"
    
      relay-c:
        name: Relay C
        base_url: https://relay-c.example.com
        api_key: sk-xxx
        model: custom-model-name
        small_fast_model: custom-fast-model
        env: {}
    
      codex-relay:
        name: Codex via Relay
        cli: codex
        base_url: https://codex-relay.example.com
        api_key: sk-xxx
        model: gpt-5.5
        env:
          CODEX_CONFIG_DIR: ~/.codex-envs/relay
    

    中转站换 Key ?改这一个文件,所有项目立刻生效。换分组通道?改 base_url 一行,完事。

    和 CC Switch 的关系

    两者完全独立,各管各的:

    CC Switch cl
    Skills 管理
    MCP 服务器配置
    Provider 认证
    启动 CLI

    cl 只通过环境变量注入认证,不动 ~/.claude/settings.json。CC Switch 配置的 MCP 和 Skills 完全不受影响。

    我自己的用法是:

    • CC Switch 专门用来管理 MCP 和 Skills——它能在 Claude Code 和 Codex 之间共享 Skills ,而且可以很可视化地开关,非常方便。
    • 至于里面的 Provider 配置,我无论 Claude Code 还是 Codex 都始终设置成 default ,这样就不会污染配置信息。

    Provider 的事全交给 cl 在命令行解决。每次需要管理 Skills 和 MCP 了,才打开 CC Switch 配一下,配完退出,不需要常驻占据系统托盘。

    安装

    brew install unliu/tap/cl
    

    或者用 Go:

    go install github.com/unliu/cl-launcher@latest
    

    仓库

    github.com/unliu/cl-launcher

    Golang 编写,单二进制,零依赖。欢迎试用/反馈~

    theo
        1
    theo  
    OP
       5 days ago
    P.S. 我的习惯是把模型、余额/充值链接也写到 profile 名称里,这样随时 `cl list` 就可以随时调取。

    ![image-20260506235846093]( https://img.evf.cc/ipic/2026-05-06-155846.png)
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5526 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 49ms · UTC 09:28 · PVG 17:28 · LAX 02:28 · JFK 05:28
    ♥ Do have faith in what you're doing.