# switch-claude **Repository Path**: zrainx/switch-claude ## Basic Information - **Project Name**: switch-claude - **Description**: 切换claude第三方模型的zsh脚本 - **Primary Language**: Shell - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-30 - **Last Updated**: 2026-03-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Claude 模型切换脚本 交互式命令行工具,用于快速切换 `~/.claude/settings.json` 中的 `ANTHROPIC_MODEL` 配置。 --- ## 功能特性 - **交互式选择** — 列出所有可用模型,输入编号即可切换 - **命令行参数** — 支持直接传编号或选项,适用于 OpenCode TUI - **当前状态显示** — 高亮显示当前正在使用的模型 - **自动配置更新** — 直接修改 JSON 配置文件,无需手动编辑 - **输入验证** — 防止无效选择导致配置损坏 - **帮助系统** — 内置 `-h/--help` 查看使用说明 - **列表查看** — 使用 `-l/--list` 快速查看所有模型 - **当前模型** — 使用 `-c/--current` 查看当前使用的模型 --- ## 文件结构 ``` ~/.claude/ ├── settings.json # 配置文件(会被脚本修改) ├── switch-model.zsh # 切换脚本 └── commands/ └── reload.md # 自定义 /reload 命令(可选) ``` --- ## ⚠️ 重要说明:Claude Code TUI 的限制 **脚本切换模型后,`/model` 命令可能显示旧模型**,这是 Claude Code 的设计限制: - Claude Code **启动时**读取 `settings.json` 并缓存到内存 - TUI **运行期间不会重新读取**配置文件 - 必须使用 **`/exit` 退出后重新进入**,或使用内置 `/model` 命令 **推荐做法:** 在 Claude Code TUI 中直接使用内置命令切换模型: ``` /model kimi-k2.5 /model qwen3.5-plus ``` --- ## 使用方法 ### 方式一:交互式选择(终端) ```bash ~/.claude/switch-model.zsh ``` 然后输入编号选择模型。 ### 方式二:命令行参数(Claude TUI) ⚠️ **注意:** 此方式会修改配置文件,但当前 TUI 会话不会立即生效,需要 `/exit` 后重新进入。 在 OpenCode 的 TUI 中,使用 `!` 执行 shell 命令时无法交互,可以直接传编号: ```bash !cm 5 # 切换到第 5 个模型 (kimi-k2.5),配置已更新 !cm 1 # 切换到第 1 个模型 (qwen3.5-plus),配置已更新 ``` 切换后建议执行 `/exit` 重新进入,使新模型生效。 ### 方式三:添加别名(推荐) 在 `~/.zshrc` 中添加: ```zsh alias cm="~/.claude/switch-model.zsh" ``` 然后重新加载配置或新开终端: ```bash source ~/.zshrc cm # 交互式选择 cm 3 # 直接切换到第 3 个模型 cm -l # 仅显示模型列表 cm -c # 显示当前模型 cm -h # 显示帮助信息 ``` ### 命令行选项 | 选项 | 说明 | |------|------| | `-h, --help` | 显示帮助信息 | | `-l, --list` | 列出所有可用模型 | | `-c, --current` | 显示当前使用的模型 | | `1-N` | 直接切换到对应编号的模型 | --- ## 交互示例 ``` 当前模型: qwen3.5-plus 可用模型: 1) qwen3.5-plus (当前) 2) qwen3-max-2026-01-23 3) qwen3-coder-next 4) glm-5 5) kimi-k2.5 6) MiniMax-M2.5 请选择模型编号 (1-6): 5 ✓ 已切换到模型: kimi-k2.5 ``` --- ## 最佳实践 ### 场景 1:在 Claude Code TUI 中切换模型(推荐) 直接使用内置命令,**立即生效**: ``` /model qwen3.5-plus /model kimi-k2.5 ``` ### 场景 2:为下次启动预设模型 使用脚本切换,下次启动 Claude Code 时自动使用新模型: ```bash # 在普通终端中执行 cm 5 # 切换到 kimi-k2.5 # 下次启动 claude 时使用新模型 ``` ### 场景 3:查看可用模型 ```bash cm -l # 列出所有模型及当前使用的模型 cm -c # 仅显示当前模型 ``` --- ## 配置说明 ### settings.json 格式 ```json { "env": { "ANTHROPIC_AUTH_TOKEN": "your-token", "ANTHROPIC_BASE_URL": "https://...", "ANTHROPIC_MODEL": "qwen3.5-plus" }, "availableModels": [ "qwen3.5-plus", "qwen3-max-2026-01-23", "qwen3-coder-next", "glm-5", "kimi-k2.5", "MiniMax-M2.5" ], ... } ``` ### 修改可用模型 编辑 `~/.claude/settings.json` 中的 `availableModels` 数组,添加或删除模型后,脚本会自动读取更新后的列表。 --- ## 技术实现 ### 核心逻辑 | 步骤 | 实现方式 | |------|----------| | 读取配置 | 直接读取 `~/.claude/settings.json` | | 解析模型列表 | 逐行扫描 JSON,提取 `availableModels` 数组 | | 获取当前模型 | `grep` + `sed` 提取 `ANTHROPIC_MODEL` 值 | | 用户交互 | `read` 命令接收编号输入 | | 更新配置 | `sed` 原地替换 JSON 中的模型值 | ### 关键代码片段 **提取当前模型:** ```zsh current_model=$(grep -o '"ANTHROPIC_MODEL": "[^"]*"' "$CONFIG_FILE" | sed 's/.*: "\(.*\)".*/\1/') ``` **更新配置:** ```zsh sed -i '' "s/\"ANTHROPIC_MODEL\": \"[^\"]*\"/\"ANTHROPIC_MODEL\": \"$selected_model\"/" "$CONFIG_FILE" ``` --- ## 注意事项 1. **备份配置** — 首次使用前建议备份 `settings.json` 2. **JSON 格式** — 确保配置文件格式正确,脚本不做完整 JSON 校验 3. **macOS/Linux** — 脚本使用 `sed -i ''` 语法,适用于 macOS;Linux 用户可能需要改为 `sed -i` 4. **权限** — 脚本需要读写 `~/.claude/settings.json` 的权限 --- ## 故障排查 | 问题 | 解决 | |------|------| | "配置文件不存在" | 确认 `~/.claude/settings.json` 存在 | | sed 报错 | Linux 用户将 `sed -i ''` 改为 `sed -i` | | 模型未生效 | 重启 Claude 或重新加载配置 | --- ## 扩展建议 - 添加 `--list` 参数仅显示模型列表 - 支持命令行直接指定模型:`switch-model.zsh kimi-k2.5` - 添加 `--restore` 恢复上次使用的模型 - 集成到 Claude 启动脚本中自动选择