cc-switch
English README | 中文文档
一个强大的命令行工具,用于管理多个 Claude API 配置并通过环境变量在它们之间轻松切换。
如果您曾经在不同环境(开发、测试、生产,或者不同客户账户)中使用 Claude API,您一定深刻理解手动设置环境变量或管理不同配置的痛苦。cc-switch 通过提供集中化环境变量管理解决方案消除了这种痛苦:
- 存储多个 API 配置,使用易于记忆的别名
- 一键切换配置,通过环境变量安全启动 Claude
- 为不同项目或环境维护独立设置
- 环境变量隔离,每次执行使用独立的环境配置
🏗️ 核心架构
该工具采用清晰的模块化架构,有效分离关注点:
应用程序遵循简单而强大的设计模式,主入口点将任务委托给处理所有 CLI 操作的命令模块。ConfigStorage
管理配置的持久化,而 EnvironmentConfig
处理与环境变量的集成,通过为每个命令执行设置特定的环境变量来确保配置隔离。
🎯 核心功能
cc-switch 功能丰富,让 API 配置管理变得轻松:
功能 | 描述 | 优势 |
---|---|---|
多配置管理 | 使用自定义别名存储无限数量的 API 配置 | 保持所有环境井然有序 |
环境变量切换 | 使用 cc-switch use <别名> 通过环境变量启动 Claude |
安全隔离,不影响全局设置 |
交互式选择模式 | 带实时配置预览的可视化菜单 | 切换前浏览配置的完整详情 |
Shell 自动补全 | 内置对 fish、zsh、bash 等的补全支持 | 加速命令输入和自动补全 |
动态别名补全 | 为 use/remove 命令自动补全配置名称 | 减少错误和输入工作量 |
Shell 别名生成 | 生成兼容 eval 的别名以快速访问 | 通过便捷快捷方式简化工作流 |
安全存储 | 配置安全存储在 ~/.cc-switch/ 目录 |
您的 API 密钥保持独立和有序 |
跨平台支持 | 支持 Linux 和 macOS | 在所有主要开发环境中使用同一工具 |
环境变量隔离 | 每次执行使用独立环境变量 | 避免全局配置冲突 |
⚡ 3分钟快速开始
cc-switch 的美妙之处在于其简洁性。以下是快速启动和运行的步骤:
-
安装工具(约30秒):
-
添加第一个配置(约15秒):
-
切换到您的配置(约5秒):
这将使用您的配置启动 Claude CLI,而不是修改任何全局设置。
-
验证是否工作(约10秒):
重要变化: cc-switch use
命令现在通过环境变量启动 Claude,而不是修改全局配置文件。这确保了完全的配置隔离和安全性。
提示: 直接运行 cc-switch
(不带任何参数)会进入交互式主菜单模式,让您可以快速访问所有功能!
🔒 环境变量模式
cc-switch 现在使用环境变量模式,提供更好的安全性和隔离:
- ✅ 隔离性:每次执行使用独立的环境变量,不影响系统全局设置
- ✅ 安全性:API 密钥不会写入任何配置文件,只在命令执行时使用
- ✅ 简洁性:无需管理复杂的配置文件或担心配置冲突
- ✅ 便捷性:
cc-switch use <alias>
自动设置环境变量并启动 Claude
就是这样!您现在像专家一样管理 Claude API 配置了。
🐚 Shell 集成
cc-switch 提供强大的 shell 集成功能来简化您的工作流:
Shell 别名
生成便捷的别名以便更快访问:
# 为您的 shell 生成别名(fish、zsh、bash)
# 在当前会话中立即加载别名
可用别名:
cs='cc-switch'
- 快速访问 cc-switch 命令ccd='claude --dangerously-skip-permissions'
- 快速启动 Claude
使用别名的示例:
# 替代:cc-switch use my-config
# 交互式当前菜单
# 替代:claude --dangerously-skip-permissions
Shell 补全
为您的 shell 设置自动补全:
# Fish shell
# Zsh shell
# Bash shell
永久设置
对于永久别名设置,添加到您的 shell 配置:
Fish (~/.config/fish/config.fish):
Zsh (~/.zshrc):
Bash (~/.bashrc 或 ~/.bash_profile):
🌟 实际应用场景
cc-switch 在几个常见开发场景中表现出色:
多环境开发
# 设置不同环境
# 根据需要在环境间切换(每次都启动新的 Claude 实例)
客户项目管理
对于需要不同 API 凭据处理多个客户的开发者:
团队协作
团队成员可以共享配置别名,在团队特定设置间快速切换,无需手动编辑文件。
🔧 技术基础
cc-switch 使用现代 Rust 实践构建,并利用几个关键库:
- crossterm 用于跨平台终端操作和交互式 UI
- clap 用于强大的命令行参数解析和自动生成帮助
- clap_complete 用于 shell 补全脚本生成
- serde 用于可靠的 JSON 序列化/反序列化
- dirs 用于跨平台目录管理
- anyhow 用于全面的错误处理
- colored 用于终端输出格式化
该工具采用零配置理念设计 - 开箱即用具有合理默认值,专注于环境变量模式的简洁性和安全性。
🌐 平台支持
cc-switch 现在专注于主要的开发平台:
- ✅ Linux (x86_64, aarch64)
- ✅ macOS (Intel, Apple Silicon)
- ❌ Windows (已移除支持,专注于 Unix-like 系统)
🚀 安装
从 Crates.io(推荐)
从源代码
二进制文件将位于 target/release/cc-switch
。您可以将其复制到您的 PATH:
📖 使用方法
基本命令
添加配置
# 添加新的 Claude API 配置(位置参数)
# 使用标志添加(更明确)
# 指定模型添加(设置 ANTHROPIC_MODEL 环境变量)
# 为后台任务添加小型快速模型(设置 ANTHROPIC_SMALL_FAST_MODEL 环境变量)
# 同时添加两个模型(设置两个模型环境变量)
# 交互模式添加(安全)
# 强制覆写添加
列出所有配置
# 列出所有存储的配置
输出:
存储的配置:
my-config: token=sk-ant-xxx, url=https://api.anthropic.com
work-config: token=sk-ant-work-123, url=https://api.anthropic.com
切换配置
# 使用特定配置启动 Claude
# 使用默认设置启动 Claude(无自定义 API 配置)
注意: use
命令现在通过环境变量启动 Claude CLI,确保配置隔离和安全性。
当前配置交互菜单
# 显示环境变量模式信息和交互菜单
# 或直接运行(无参数时进入交互式主菜单)
current
命令提供交互菜单,包含:
- 显示环境变量模式的信息说明
- 选项 1:执行
claude --dangerously-skip-permissions
- 选项 2:切换配置(带实时预览并启动 Claude)
- 选项 3:退出
导航:
- 使用 ↑↓ 箭头键进行菜单导航(或数字键作为回退)
- 按 Enter 选择
- 按 Esc 退出
交互式选择模式
使用交互式选择以实时预览可视化浏览配置:
# 通过 current 命令的菜单选项访问
# 直接进入交互式主菜单
# 直接访问(如果您的版本支持)
在交互选择模式中:
- 使用 ↑↓ 箭头键浏览配置
- 查看所选配置的详细信息(令牌、URL、模型、小型快速模型)
- 按 Enter 选择并使用该配置启动 Claude
- 按 Esc 取消选择
- 包括"使用默认设置"选项以无自定义配置启动 Claude
- 如果终端不支持高级功能,智能回退到编号菜单
交互模式提供可视化方式浏览和选择配置,选择后使用指定配置的环境变量自动启动 Claude CLI。
移除配置
# 移除单个配置
# 一次移除多个配置
生成 Shell 别名
# 生成用于 eval 立即使用的别名
# 为不同 shell 生成别名
# 立即加载别名(推荐)
生成 Shell 补全
# 为您的 shell 生成补全脚本
🛠️ 开发和构建流程
项目包含支持 Linux 和 macOS 跨平台编译的全面构建流程:
- CI 管道:自动在 Ubuntu 和 macOS 上测试
- 跨架构支持:支持 x86_64 和 aarch64 架构
- 发布自动化:自动构建和发布多个目标平台的二进制文件
这确保 cc-switch 可以在所有支持的平台上分发并保持一致的行为。
🤝 贡献
我们欢迎贡献!详情请查看我们的贡献指南。
开发工作流
- Fork 仓库
- 创建功能分支 (
git checkout -b feature/amazing-feature
) - 进行更改
- 运行测试并确保代码质量 (
cargo test && cargo clippy
) - 提交更改 (
git commit -m 'Add amazing feature'
) - 推送到分支 (
git push origin feature/amazing-feature
) - 打开 Pull Request
📄 许可证
本项目采用 MIT 许可证 - 详情请查看 LICENSE 文件。
🙏 致谢
📞 支持
- 🐛 错误报告:GitHub Issues
- 💡 功能请求:GitHub Issues
- 📧 问题:GitHub Discussions
由 jingzhao 用 ❤️ 制作