Vibe Switcher
November 12, 2025 · View on GitHub
Claude Code 和 Codex API 中转商切换工具 - 在命令行中快速切换不同的 API 中转服务。
功能特性
- 🚀 支持 Claude Code 和 Codex 两种服务的中转商切换
- 🔧 Claude Code: 自动修改
.zshrc和.bashrc配置文件 - 📝 Codex: 自动修改
.codex/config.toml和.codex/auth.json - 💾 支持多个中转商配置管理
- 🔒 自动备份配置文件
- 📋 内置主流中转商配置
- 🎯 两级命令结构,操作清晰直观
安装
方法 1: 使用 pip 安装(推荐)
pip install -e .
方法 2: 使用安装脚本
./install.sh
方法 3: 直接运行
python3 claude_switcher/cli.py <command>
命令结构
Vibe Switcher 使用两级命令结构:
vibe-switcher <服务类型> <操作> [参数]
- 服务类型:
claude(Claude Code) 或codex(Codex) - 操作:
list,switch,add,remove/delete,current
Rust 交互式界面(实验性)
在 python CLI 之外,仓库新增了基于 Rust + ratatui 的交互式终端工具,能够同时展示 Claude Code 与 Codex 的全部中转商,并提供键盘导航体验。该工具直接读取 ~/.config/claude-switcher/config.json,因此始终与 vibe-switcher 保持一致。
功能亮点
- 📊 左右分栏实时列出 Claude/Codex 中转商,包含 URL、凭证配置状态及关键元数据
- 🎯 Tab / Shift+Tab / h / l 快速切换服务面板,↑/↓ 选择目标中转商
- 🔁 面板切换时自动聚焦当前激活的中转商,降低误操作风险
- ⚡ Enter 调用
vibe-switcher <service> switch <provider>,成功后自动刷新配置 - 🔄
r可手动重新扫描配置文件,便于多人协作或外部脚本修改 - 🧩 采用模块化状态管理,后续可扩展余额、延迟、健康度等指标展示
启动方式
cd vibe_switcher_tui
cargo run
运行前请确保本机已安装 Rust toolchain,并且已经通过 Python 版本的
vibe-switcher初始化过配置文件。
键位速查
| 快捷键 | 作用 |
|---|---|
Tab / Shift+Tab / h / l | 在 Claude/Codex 面板之间切换焦点 |
↑ / ↓ / j / k | 在当前面板中移动高亮项(循环模式,支持 Vim 手势) |
Enter | 调用 vibe-switcher 执行切换 |
r | 重新读取配置文件 |
q / Esc | 退出界面 |
架构速览
src/main.rs: 入口与事件循环,基于crossterm捕获键盘事件AppState: 负责状态管理(列表、选中项、状态栏等)ProviderDisplay: 对config.json内容做展示层映射ratatui渲染:分区布局 +List+Paragraph实现图形化界面
欢迎在此基础上继续扩展,例如:
- 接入中转商余额查询 API,在 detail 区域显示余额、额度或限速等信息
- 通过异步任务周期性刷新健康度/时延指标
- 支持批量切换(一次性同步 Claude 与 Codex)
- 导入更多配置源(如远程 JSON、团队共享库)
快速开始
Claude Code 操作
1. 查看所有 Claude Code 中转商
vibe-switcher claude list
2. 配置 Claude Code 中转商 Token
默认提供 4 个中转商,但需要配置各自的 Token:
# 配置 fox 中转商
vibe-switcher claude add fox sk-your-token-here https://code.newcli.com/claude
# 配置 duck 中转商
vibe-switcher claude add duck sk-your-token-here https://jp.instcopilot-api.com
# 配置 88code 中转商
vibe-switcher claude add 88code sk-your-token-here https://www.88code.org/api
# 配置 packy 中转商
vibe-switcher claude add packy sk-your-token-here https://api.packycode.com
3. 切换 Claude Code 中转商
vibe-switcher claude switch fox
切换后会自动修改你的 shell 配置文件(.zshrc 或 .bashrc),并提示你执行 source 命令使配置生效。
4. 查看当前 Claude Code 配置
vibe-switcher claude current
Codex 操作
1. 查看所有 Codex 中转商
vibe-switcher codex list
2. 配置 Codex 中转商 API Key
# 配置 duck 中转商(带 network access)
vibe-switcher codex add duck sk-your-api-key https://jp.duckcoding.com/v1 --network-access enabled
# 配置 fox 中转商
vibe-switcher codex add fox sk-your-api-key https://code.newcli.com/codex/v1
3. 切换 Codex 中转商
vibe-switcher codex switch duck
切换后会自动修改 ~/.codex/config.toml 和 ~/.codex/auth.json 文件。
4. 查看当前 Codex 配置
vibe-switcher codex current
命令详解
Claude Code 命令
vibe-switcher claude list
列出所有已配置的 Claude Code 中转商,包括 URL 和 Token 信息(已脱敏显示)。
vibe-switcher claude switch <provider>
切换到指定的 Claude Code 中转商,自动更新 shell 配置文件中的环境变量:
ANTHROPIC_AUTH_TOKENANTHROPIC_BASE_URL
示例:
vibe-switcher claude switch duck
source ~/.zshrc # 使配置生效
vibe-switcher claude add <name> <token> <url>
添加新的 Claude Code 中转商或更新现有中转商的配置。
示例:
vibe-switcher claude add myapi sk-abc123 https://my-api.com
vibe-switcher claude remove <name>
从配置中删除指定的 Claude Code 中转商。
示例:
vibe-switcher claude remove myapi
vibe-switcher claude current
显示当前激活的 Claude Code 中转商信息,以及 shell 配置文件中的实际值。
Codex 命令
vibe-switcher codex list
列出所有已配置的 Codex 中转商,包括 URL、API Key 和 Network Access 信息。
vibe-switcher codex switch <provider>
切换到指定的 Codex 中转商,自动更新:
~/.codex/config.toml~/.codex/auth.json
示例:
vibe-switcher codex switch fox
vibe-switcher codex add <name> <api_key> <url> [--network-access <value>]
添加新的 Codex 中转商或更新现有中转商的配置。
参数:
name: 中转商名称api_key: API Keyurl: API Base URL--network-access: (可选) 网络访问设置,如enabled
示例:
vibe-switcher codex add duck sk-abc123 https://jp.duckcoding.com/v1 --network-access enabled
vibe-switcher codex remove <name>
从配置中删除指定的 Codex 中转商。
示例:
vibe-switcher codex remove duck
vibe-switcher codex current
显示当前激活的 Codex 中转商信息,以及 Codex 配置文件中的实际值。
特定服务商适配
为避免不同中转商的配置差异导致手动修改,这里内置了针对常见服务商的适配逻辑:
- duck: 自动写入
requires_openai_auth = true与disable_response_storage = true,并在auth.json中仅保留OPENAI_API_KEY。 - yescode: 自动补充
env_key = "YESCODE_API_KEY"、为当前命令执行目录添加trust_level = "trusted"的项目配置,同时在auth.json中写入OPENAI_API_KEY与YESCODE_API_KEY两个字段。若需要为多个项目授权,可在~/.config/claude-switcher/config.json的codex_providers.yescode.projects中添加更多路径。
配置文件
Claude Code 配置
配置文件位置: ~/.config/claude-switcher/config.json
配置文件结构:
{
"providers": {
"fox": {
"token": "sk-xxx",
"base_url": "https://code.newcli.com/claude"
},
"duck": {
"token": "sk-yyy",
"base_url": "https://jp.instcopilot-api.com"
}
},
"current": "duck",
"env_vars": {
"token": "ANTHROPIC_AUTH_TOKEN",
"base_url": "ANTHROPIC_BASE_URL"
}
}
Codex 配置
配置文件位置: ~/.config/claude-switcher/config.json
Codex 部分结构:
{
"codex_providers": {
"fox": {
"api_key": "sk-xxx",
"base_url": "https://code.newcli.com/codex/v1",
"network_access": ""
},
"duck": {
"api_key": "sk-yyy",
"base_url": "https://jp.duckcoding.com/v1",
"network_access": "enabled"
}
},
"current_codex": "duck"
}
Codex 运行时配置:
~/.codex/config.toml- Codex 主配置文件(TOML 格式)~/.codex/auth.json- Codex 认证文件(JSON 格式)
备份机制
Claude Code 备份
每次修改 shell 配置文件前,工具会自动创建备份:
~/.zshrc.claude_switcher_backup_20241002_153045
Codex 备份
每次修改 Codex 配置前,工具会自动创建备份:
~/.codex/config.toml.claude_switcher_backup_20241002_153045
~/.codex/auth.json.claude_switcher_backup_20241002_153045
备份文件名包含时间戳,便于恢复。
内置中转商
Claude Code 中转商
| 名称 | URL |
|---|---|
| fox | https://code.newcli.com/claude |
| duck | https://jp.instcopilot-api.com |
| 88code | https://www.88code.org/api |
| packy | https://api.packycode.com |
Codex 中转商
| 名称 | URL | Network Access |
|---|---|---|
| fox | https://code.newcli.com/codex/v1 | - |
| duck | https://jp.duckcoding.com/v1 | enabled |
使用场景
场景 1: 首次配置 Claude Code
# 1. 安装工具
pip install -e .
# 2. 配置你的 Token
vibe-switcher claude add duck sk-your-token-here https://jp.instcopilot-api.com
# 3. 切换到该中转商
vibe-switcher claude switch duck
# 4. 使配置生效
source ~/.zshrc # 或 source ~/.bashrc
场景 2: 切换 Claude Code 中转商
# 查看可用的中转商
vibe-switcher claude list
# 切换到另一个中转商
vibe-switcher claude switch fox
# 使配置生效
source ~/.zshrc
场景 3: 配置和切换 Codex
# 配置 Codex 中转商
vibe-switcher codex add duck sk-your-api-key https://jp.duckcoding.com/v1 --network-access enabled
# 切换 Codex 中转商
vibe-switcher codex switch duck
# 查看当前配置
vibe-switcher codex current
场景 4: 同时管理两种服务
# 切换 Claude Code 到 fox
vibe-switcher claude switch fox
source ~/.zshrc
# 切换 Codex 到 duck
vibe-switcher codex switch duck
# 查看两者的当前配置
vibe-switcher claude current
vibe-switcher codex current
支持的 Shell
Claude Code
- ✅ Zsh (
.zshrc) - ✅ Bash (
.bashrc)
工具会自动检测你当前使用的 shell 配置文件。
Codex
- ✅ 所有 Shell(通过修改
~/.codex/配置文件)
注意事项
Claude Code
- Token 安全: 配置文件权限自动设置为 600(仅所有者可读写)
- 备份恢复: 如需恢复配置,可从备份文件中复制内容
- 配置生效: 修改后需要执行
source ~/.zshrc或重启终端 - 多终端: 已打开的终端需要重新 source 配置文件
Codex
- 配置文件: 自动管理 TOML 和 JSON 格式的配置
- 备份恢复: 两个配置文件都会自动备份
- Network Access: 可选配置,部分中转商需要设置为
enabled
开发
项目结构
vibe-switcher/
├── claude_switcher/
│ ├── __init__.py # 包初始化
│ ├── cli.py # CLI 入口(两级命令结构)
│ ├── config.py # 配置管理(Claude Code + Codex)
│ ├── shell.py # Shell 配置文件处理(zsh/bash)
│ └── codex.py # Codex 配置文件处理(TOML/JSON)
├── pyproject.toml # 项目配置
├── install.sh # 安装脚本
├── README.md # 说明文档
└── IMPLEMENTATION_PLAN.md # 实现计划
本地开发
# 以可编辑模式安装
pip install -e .
# 查看帮助
vibe-switcher --help
vibe-switcher claude --help
vibe-switcher codex --help
技术栈
- Python 3.7+
- argparse - 命令行参数解析(两级子命令)
- json - JSON 配置管理
- pathlib - 文件路径操作
- shutil - 文件备份
常见问题
Q: 如何查看当前使用的是哪个中转商?
vibe-switcher claude current # Claude Code
vibe-switcher codex current # Codex
Q: 切换后配置不生效怎么办?
Claude Code: 执行 source ~/.zshrc 或 source ~/.bashrc
Codex: 配置立即生效,无需额外操作
Q: 如何恢复到之前的配置?
查看备份文件(文件名包含时间戳),从备份文件中复制内容恢复。
Q: 可以同时使用不同的 Claude Code 和 Codex 中转商吗?
可以。两种服务的配置是独立的,互不影响。
Q: 如何添加自定义中转商?
# Claude Code
vibe-switcher claude add myservice sk-token-123 https://my-api.com
# Codex
vibe-switcher codex add myservice sk-key-456 https://my-codex-api.com
License
MIT
贡献
欢迎提交 Issue 和 Pull Request!