CodeSwitchR 个人定制 多供应商自动切彻底告别失败手动切换cc/cx/gemini

逛论坛看见zapll 佬的 CodeSwitch ,看到感觉不错很符合我的想法,于是决定定制化一下。初步看了一下,它是一个基于 Wails 3 写的,恰好可以练练手

2025-12-03 更新了大大小小的bug

更新内容(抄的cc switch)

新功能

  • Gemini CLI 代理支持 - 完整的 Gemini 代理托管功能
  • 应用自动更新 - 支持检测新版本并自动更新
  • 侧边栏导航改进 - 可收起侧边栏,新增 NEW 徽章
  • 新增功能页面:
    • :rocket: SpeedTest - API 端点延迟测试
    • :magnifying_glass_tilted_left: EnvCheck - 环境变量冲突检测
    • :memo: Prompts - 系统提示词管理(支持 Claude/Codex/Gemini)
  • DeepLink 支持 - 通过 URL scheme 导入配置
  • 黑名单功能 - Provider 黑名单管理与自动降级

定制化的内容:

  • 优先级分组调度 - Level 1-10 分级管理
  • 模型白名单 - 精准控制每个供应商支持的模型
  • 模型映射 - 自动转换模型名称适配不同供应商

修复时区导致拉黑时间异常问题

v0.3.2版本发布
增加以下功能:
1.开机自启动选项

2.自动更新功能(在彻底关闭软件后重启就会检查是否有更新)

3.在失败n次(n可以设置)后拉黑该供应商m分钟(m可选)


4.修复请求成功数统计问题


v0.2.0 → v0.2.1 更新内容
:sparkles: 核心功能详解

  1. 优先级分组调度(v0.2.0 新增)
    为每个供应商设置 Level 1-10 优先级分组,实现更灵活的降级策略:
    典型场景:
    成本优化策略
    ├─ Level 1: 物美价廉供应商
    └─ Level 2: 稳定兜底备份

  2. 模型白名单
    声明每个供应商支持哪些模型,避免降级时因模型不支持导致失败。
    支持规则:

  • 精确匹配: claude-sonnet-4 - 只匹配该模型

  • 通配符: claude-* - 匹配所有 Claude 模型

  • 供应商前缀: anthropic/claude-* - 匹配带前缀的模型

    使用场景:
    供应商 A 配置:
    ├─ 白名单: claude-sonnet-, claude-opus-
    └─ 结果: 只接受 Sonnet 和 Opus 系列请求
    供应商 B 配置:
    ├─ 白名单: gpt-4*, claude-*
    └─ 结果: 同时支持 GPT 和 Claude 模型
    当请求 claude-sonnet-4 时:

  • 供应商 A 支持 → 尝试转发

  • 供应商 B 支持 → 失败后降级到这里

  • 供应商 C 不在白名单 → 自动跳过

  1. 模型映射
    自动转换外部模型名到供应商内部模型名,适配不同 API 格式。
    映射规则:
  • 精确映射: claude-sonnet-4 → anthropic/claude-sonnet-4

  • 通配符映射: claude-* → anthropic/claude-*(自动展开)

  • 前缀替换: gpt-* → openai/gpt-*

    使用场景:
    场景 : 供应商要求带前缀
    客户端请求: claude-sonnet-4
    映射规则: claude-* → anthropic/claude-*
    实际发送: anthropic/claude-sonnet-4

    白名单 + 映射组合使用:
    供应商配置例:
    ├─ 模型白名单: claude-, gpt-4
    ├─ 模型映射:
    │ ├─ claude-* → anthropic/claude-*
    │ └─ gpt-4* → openai/gpt-4*
    └─ 工作流程:
    1. 检查请求模型是否在白名单 ✓
    2. 应用映射规则转换模型名
    3. 转发到供应商 API

  1. 智能降级流程

    结合优先级、白名单、映射的完整调度逻辑:
    用户请求: claude-sonnet-4
    :one: Level 1 供应商
    ├─ 白名单检查: claude-* ✓ 通过
    ├─ 模型映射: claude-sonnet-4 → anthropic/claude-sonnet-4
    ├─ API 调用: 失败 (429 限流)
    └─ 日志: Level 1 失败: xxx | 错误: Rate limit

    :two: Level 2 供应商
    ├─ 白名单检查: claude-, gpt- ✓ 通过
    ├─ 模型映射: claude-sonnet-4 → claude-sonnet-4 (无映射)
    ├─ API 调用: 成功 ✓
    └─ 日志: Level 2 成功: xxxx | 耗时: 1.2s
    返回结果给客户端

Bug 修复(v0.2.1)

  • 修复 Level 下拉菜单背景透明问题
  • 统一使用项目 CSS 变量规范

项目地址

本版本是fork出来已经提交了PR给zapll 佬审核了,如果佬觉得可以会合并 分享大家玩玩

211 个赞

太强了,大佬!

4 个赞

下载下来试试, 感谢佬分享作品

4 个赞

感谢佬分享

4 个赞

怎么在wsl用呢

3 个赞

有没有mac的佬先试下啊.好用踢一下

5 个赞

有点复杂的你可以试试
在 Windows 上运行 CodeSwitch,然后获取 Windows 主机 IP,然后在.claude/settings.json中配置
{
“apiConfiguration”: {
“baseURL”: " Windows 主机 IP:18100"
}
},
但是我不确定apiConfiguration这个参数还存不存在
你可以试试

4 个赞

太强了,坛除我佬。

5 个赞

大家可以更新到v0.3.2版本,是我认为较为完善且稳定(应该不会再迭代了,除非佬友有需求)的版本,晚点把PR提供给 zapll

2 个赞

改在我心趴

3 个赞

感谢佬友,好东西,已star

3 个赞

太强了。完美适配我们公益站囤囤党的成本结构 :smiling_face_with_three_hearts:

5 个赞

太打脸了,忘记考虑时区问题,导致拉黑时间远远久过拉黑时间,已经在Release v0.3.4 · Rogers-F/code-switch-R · GitHub 中修复

2 个赞

重大版本更新v1.1.11 新增多项功能

2 个赞

请求linux支持,想要在多台设备上共用一个配置文件,这样就不用在每台设备都配url和key了

7 个赞

太强了…感谢佬友分享!

2 个赞

已经支持了,但是我还没实机测试,我在虚拟机测试没啥问题,欢迎佬反馈问题

1 个赞

谢谢佬~

2 个赞

求捞给个完整的wsl用的教程,windows真要命

2 个赞

release还在构建,在修一点小bug,明天再下哈

2 个赞