Mac 用户的 Claude Code 模型切换脚本来了 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
yinzhenyu
V2EX    分享创造

Mac 用户的 Claude Code 模型切换脚本来了

  •  
  •   yinzhenyu 12 天前 1881 次点击

    Homebrew Tools

    Claude Code 模型切换工具的 Homebrew 包集合。 项目地址

    主要工具

    Switch Claude

    一个强大的 Claude Code 模型切换脚本,支持在 GLM 、Kimi 、Minimax 等模型之间快速切换。

    安装

    # 添加 tap brew tap yinzhenyu-su/homebrew-tools # 安装 switch-claude brew install switch-claude 

    Switch Claude 使用指南

    基本用法

    # 显示帮助 switch-claude help # 显示当前配置 switch-claude current # 或 sc current # 切换到不同模型 switch-claude glm # 切换到 GLM 模型 (或 sc glm) switch-claude kimi # 切换到 Kimi 模型 (或 sc kimi) switch-claude minimax # 切换到 Minimax 模型 (或 sc minimax) 

    Token 管理

    首次使用需要设置 API tokens:

    # 推荐:使用 provider.json 存储 switch-claude set-token glm "your_glm_token" switch-claude set-token kimi "your_kimi_token" switch-claude set-token minimax "your_minimax_token" # 最安全:使用 Keychain 存储( macOS ) switch-claude set-keychain glm "your_glm_token" switch-claude set-keychain kimi "your_kimi_token" switch-claude set-keychain minimax "your_minimax_token" 

    脚本会按照下方“ Token 优先级”章节所述的顺序查找凭证,若所有来源都为空会提示你在终端中输入 token 。macOS 用户优先推荐 set-keychain,其它平台可使用 set-token 写入 provider.json,环境变量适合临时调试。

    Provider 配置管理

    新版本支持从 provider.json 配置文件读取模型配置,实现更灵活的管理:

    # 初始化默认 provider 配置 switch-claude init-provider-config # 列出所有可用的 provider switch-claude list-providers # 显示所有 provider 配置 switch-claude show-provider-config # 为特定 provider 设置 token switch-claude set-token glm "your_token" 

    首次执行 switch-claude list-providers 或任何依赖 provider 的命令时,脚本会自动初始化 ~/.config/switch-claude/provider.json 并写入三个内置配置。switch-claude init-provider-config 可在确认后重新生成该文件,而 show-provider-config 会对 token 做脱敏处理,方便安全排查。

    自定义 Provider

    支持添加自定义的模型提供商:

    # 添加自定义 provider switch-claude add-provider MyAPI '{ "ANTHROPIC_AUTH_TOKEN": "", "ANTHROPIC_BASE_URL": "https://api.custom.com/anthropic", "ANTHROPIC_MODEL": "custom-model" }' # 删除自定义 provider switch-claude remove-provider MyAPI # 切换到自定义 provider switch-claude MyAPI --launch 

    自定义 Provider 要求

    • Provider 名称只能包含英文字母和数字
    • 必须包含 ANTHROPIC_BASE_URL 字段
    • 至少需要配置一个模型字段(ANTHROPIC_MODELANTHROPIC_DEFAULT_*_MODEL
    • 不能覆盖内置的 provider ( glm 、kimi 、minimax )

    跨平台功能

    # 查看系统信息 switch-claude --system-info # 动态帮助信息(根据操作系统显示不同内容) switch-claude help 

    高级用法

    # 切换并启动 Claude Code switch-claude glm --launch # 切换并发送消息 switch-claude kimi --launch "你好,帮我写个 Python 脚本" # 清空所有配置 switch-claude clear 

    --launch 会在切换成功后调用 claude CLI ;跟在 --launch 之后的任何文本都会作为一次性提示词转发给 Claude 。

    配置清理

    switch-claude clear 会在交互确认后清空 ~/.claude/settings.json 中的环境变量、删除整个 ~/.config/switch-claude/ 目录,并在 macOS 上移除以 switch-claude-<provider> 命名的 Keychain 条目;如果系统不支持 Keychain ,会给出相应提示。安装了 gum 时将显示确认弹窗,否则使用终端输入 yes 确认。

    别名命令

    claude-switch glm # 等同于 switch-claude glm sc kimi # 等同于 switch-claude kimi 

    功能特性

    • 跨平台适配: 自动识别 macOS/Linux ,并输出对应的帮助与命令可用性提示。
    • 系统洞察: switch-claude help--system-info 动态展示依赖状态、Keychain/secret-tool 支持情况。
    • 多源 Token 管理: 按 Keychain → 环境变量 → provider.json → 终端输入 的顺序查找,并对 current 输出的 token 自动脱敏。
    • 默认与自定义 Provider: 首次运行自动生成默认配置,支持校验 JSON 、批量添加/删除和安全确认。
    • 配置备份机制: 切换前自动备份为 ~/.config/switch-claude/settings.json.backup.*,方便手动回滚。
    • Claude CLI 集成: --launch 支持直接唤起 claude 命令并可附带一次性 prompt 。
    • 交互式清理: clear 命令在确认后清空配置目录并清理 macOS Keychain 。
    • 丰富别名: Homebrew 安装同时提供 switch-claudeclaude-switchsc 三个入口。
    • 可选美化交互: 检测到 gum 时自动启用更友好的确认/提示界面。

    支持的模型

    • GLM: 智谱 AI 的 GLM 系列模型( glm-4.5-air, glm-4.6 )
    • Kimi: 月之暗面的 Kimi 模型( kimi-k2-turbo-preview )
    • Minimax: MiniMax 的模型( MiniMax-M2 )

    Token 优先级

    脚本按以下优先级读取 token:

    1. macOS Keychain (最安全,推荐)
    2. 环境变量 ($GLM_TOKEN, $KIMI_TOKEN, $MINIMAX_TOKEN)
    3. Provider 配置文件 (~/.config/switch-claude/provider.json)
    4. 提示用户输入 (如果以上都未设置)

    当需要交互式输入 token 时,脚本会先询问是否保存到 Keychain (仅 macOS )或 provider.json,若拒绝则仅在本次切换中使用该 token 。

    配置文件位置

    • Claude Code 配置: ~/.claude/settings.json
    • Provider 配置: ~/.config/switch-claude/provider.json
    • 配置备份: ~/.config/switch-claude/settings.json.backup.YYYYMMDD_HHMMSS
    • Keychain (macOS): switch-claude-<provider> 名称的钥匙串条目
    • Token 配置 (旧版兼容): ~/.config/switch-claude/tokens.json(现版本不会自动生成,仅保留向后兼容)

    依赖要求

    • jq - 必需,Homebrew Formula 会自动安装;手动运行脚本前请确保 jq 可用。
    • Claude Code CLI - 需预先安装并确保 claude 命令在 PATH 中,否则 --launch 无法工作。
    • gum - 可选,提供更友好的交互提示;缺失时脚本会自动降级为 shell 提示。

    测试

    运行测试套件

    # 运行所有测试 bash tests/run-all-tests.sh # 运行快速测试(适用于 macOS/Linux ) bash tests/quick-test.sh # 运行错误处理测试 bash tests/test-errors.sh # 运行集成测试 bash tests/test-integration.sh 

    运行 tests/run-all-tests.sh 时会先显示测试菜单,可通过 printf '1\n' | bash tests/run-all-tests.sh 在 CI 场景中直接选择“运行所有测试”。

    测试内容概览

    • quick-test.sh: 覆盖帮助信息、默认配置生成、provider 管理、Keychain 操作与模型切换等基础行为。
    • test-errors.sh: 构造非法 JSON 、无效参数、缺失依赖等异常场景,验证错误提示是否准确。
    • test-integration.sh: 以七个端到端场景模拟真实使用流程(首次初始化、自定义 provider 、Token 优先级、批量操作等)。
    • test-report.html: run-all-tests.sh 结束后生成的可视化报告,包含统计概览和时间戳。

    测试亮点

    • 自动检测操作系统并在不支持的功能上回退或跳过。
    • 对 token 、配置文件和 Keychain 的读写进行了大量断言,覆盖 50+ 关键检查点。
    • 所有脚本在测试结束时清理环境,避免污染用户配置。
    • 支持在 macOS 上完整验证 Keychain 流程,在其它平台输出替代建议。

    开发

    本地开发

    # 克隆仓库 git clone https://github.com/yinzhenyu-su/homebrew-tools.git cd homebrew-tools # 运行脚本 ./scripts/switch-claude.sh help # 运行完整测试套件 bash tests/run-all-tests.sh  

    贡献指南

    1. Fork 这个仓库
    2. 创建功能分支 (git checkout -b feature/amazing-feature)
    3. 提交更改 (git commit -m 'Add amazing feature')
    4. 推送到分支 (git push origin feature/amazing-feature)
    5. 开启 Pull Request

    测试要求

    提交 PR 前请确保:

    • 运行完整测试套件:bash tests/run-all-tests.sh
    • 确认 quick/errors/integration 三个脚本全部通过
    • 跨平台兼容性( macOS/Linux )
    • 更新相关文档

    卸载

    brew uninstall switch-claude brew untap yinzhenyu-su/homebrew-tools 

    许可证

    MIT License

    相关链接

    版本历史

    v2.0.1 (2025-11-14)

    亮点:

    • 新增平台感知帮助与 --system-info,按系统展示命令可用性。
    • provider.json 支持自动初始化与严格 JSON 校验,自定义 provider 流程更稳健。
    • Token 查找顺序统一为 Keychain → 环境变量 → provider.json → 交互式输入,并在 current 中脱敏显示。
    • clear 命令加入交互确认并扩展至清理 Keychain/配置目录。
    • 扩展测试套件覆盖首次使用、自定义 provider 、批量操作与异常场景。

    v1.0.3 (2025-11-09)

    重大更新:

    • 跨平台功能检测模块
    • 动态帮助信息生成
    • 命令可用性检查
    • HTML 测试报告生成
    • 完整测试套件( 45 个测试)

    功能增强:

    • Provider 配置管理
    • 自定义 Provider 支持
    • Token 优先级验证
    • 配置备份功能
    • 智能错误处理

    测试优化:

    • 7 个完整集成测试场景
    • 跨平台自动适配
    • 智能跳过不支持功能
    • 测试结果实时汇总

    文档完善:

    • 完整的测试套件文档
    6 条回复    2025-11-14 23:13:26 +08:00
    shunia
        1
    shunia  
       12 天前
    不用点进去项目就能看到完整的 README 好评!

    不过讲真的还是需要 ccr ui 这种模式,手动改配置文件真的很让人难受。
    livc
        2
    livc  
       12 天前
    正好最近在想一个问题,在 CC 框架下是否是 Claude 自己的模型效果最好?还是值得切换其他模型来测试下
    Wcowin
        3
    Wcowin  
       12 天前
    先 star 再看
    yinzhenyu
        4
    yinzhenyu  
    OP
       12 天前 via Android
    @Wcowin 感谢 star
    yinzhenyu
        5
    yinzhenyu  
    OP
       12 天前 via Android
    @shunia 实际上这个配置完了以后是不会经常改动的,如果需要使用同一家厂商的不同模型只需要在 provider 中新增一项就好,我的日常使用就是如果哪家新出了一个模型就增加一项配置试试看效果,体验一阵如果不太行就切回去,更注重的还是切换模型是否方便
    yinzhenyu
        6
    yinzhenyu  
    OP
       12 天前 via Android
    @livc 我的 Claude 因为梯子掉了,漏出马脚被封了,根据我目前使用的效果来看国内最适合且便宜量大的模型是 MiniMax M2
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3275 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 20ms UTC 00:40 PVG 08:40 LAX 16:40 JFK 19:40
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86