SaladDay/cc-switch-cli

GitHub: SaladDay/cc-switch-cli

一款用 Rust 编写的跨平台命令行工具,统一管理 Claude Code、Codex 和 Gemini CLI 的提供商配置、MCP 服务器、技能扩展及系统提示词。

Stars: 822 | Forks: 47

# CC-Switch CLI [![Version](https://img.shields.io/badge/version-4.8.0-blue.svg)](https://github.com/saladday/cc-switch-cli/releases) [![Platform](https://img.shields.io/badge/platform-Windows%20%7C%20macOS%20%7C%20Linux-lightgrey.svg)](https://github.com/saladday/cc-switch-cli/releases) [![Built with Rust](https://img.shields.io/badge/built%20with-Rust-orange.svg)](https://www.rust-lang.org/) [![License](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE) **Claude Code、Codex 和 Gemini CLI 的命令行管理工具** 统一管理 Claude Code、Codex 和 Gemini CLI 的提供商配置、MCP 服务器、Skills 扩展和系统提示词。 [English](README.md) | [中文](README_ZH.md)
## 📖 关于 本项目是 [CC-Switch](https://github.com/farion1231/cc-switch) 的一个 **CLI 分支**。 🔄 WebDAV 同步功能与上游项目完全兼容。 **致谢:** 原始架构和核心功能来自 [farion1231/cc-switch](https://github.com/farion1231/cc-switch) ## 📸 截图

Home

Home

Switch Settings
Switch Settings
旧版 UI(不再积极维护)
Interactive Main Menu Provider Management
Legacy Main Menu Legacy Provider Management
## 🚀 快速开始 **交互模式(推荐)** ``` cc-switch ``` 🤩 按照屏幕菜单提示探索功能。 **命令行模式** ``` cc-switch provider list # List providers cc-switch provider switch # Switch provider cc-switch mcp sync # Sync MCP servers # 使用全局 `--app` 标志指定目标应用程序: cc-switch --app claude provider list # Manage Claude providers cc-switch --app codex mcp sync # Sync Codex MCP servers cc-switch --app gemini prompts list # List Gemini prompts # 支持的 app:`claude` (默认), `codex`, `gemini` ``` 查看“功能”部分以获取完整命令列表。 ## 📥 安装 ### 方法 1:快速安装(macOS / Linux) ``` curl -fsSL https://github.com/SaladDay/cc-switch-cli/releases/latest/download/install.sh | bash ``` 这会将 `cc-switch` 安装到 `~/.local/bin`。设置 `CC_SWITCH_INSTALL_DIR` 以更改目标目录。
手动安装 #### macOS ``` # 下载 Universal Binary (推荐,支持 Apple Silicon + Intel) curl -LO https://github.com/saladday/cc-switch-cli/releases/latest/download/cc-switch-cli-darwin-universal.tar.gz # 解压 tar -xzf cc-switch-cli-darwin-universal.tar.gz # 添加执行权限 chmod +x cc-switch # 移动到 PATH sudo mv cc-switch /usr/local/bin/ # 如果遇到“无法验证”警告 xattr -cr /usr/local/bin/cc-switch ``` #### Linux (x64) ``` # 下载 curl -LO https://github.com/saladday/cc-switch-cli/releases/latest/download/cc-switch-cli-linux-x64-musl.tar.gz # 解压 tar -xzf cc-switch-cli-linux-x64-musl.tar.gz # 添加执行权限 chmod +x cc-switch # 移动到 PATH sudo mv cc-switch /usr/local/bin/ ``` #### Linux (ARM64) ``` # 适用于 Raspberry Pi 或 ARM 服务器 curl -LO https://github.com/saladday/cc-switch-cli/releases/latest/download/cc-switch-cli-linux-arm64-musl.tar.gz tar -xzf cc-switch-cli-linux-arm64-musl.tar.gz chmod +x cc-switch sudo mv cc-switch /usr/local/bin/ ``` #### Windows ``` # 下载 zip 文件 # https://github.com/saladday/cc-switch-cli/releases/latest/download/cc-switch-cli-windows-x64.zip # 解压后,将 cc-switch.exe 移动到 PATH 目录,例如: move cc-switch.exe C:\Windows\System32\ # 或直接运行 .\cc-switch.exe ```
### 方法 2:从源码构建 **前置条件:** - Rust 1.85+ ([通过 rustup 安装](https://rustup.rs/)) **构建:** ``` git clone https://github.com/saladday/cc-switch-cli.git cd cc-switch-cli/src-tauri cargo build --release # Binary 位置:./target/release/cc-switch ``` **安装到系统:** ``` # macOS/Linux sudo cp target/release/cc-switch /usr/local/bin/ # Windows copy target\release\cc-switch.exe C:\Windows\System32\ ``` ## ✨ 功能 ### 🔌 Provider 管理 管理 **Claude Code**、**Codex** 和 **Gemini** 的 API 配置。 **功能:** 一键切换、多端点支持、API Key 管理、速度测试、提供商复制。 ``` cc-switch provider list # List all providers cc-switch provider current # Show current provider cc-switch provider switch # Switch provider cc-switch provider add # Add new provider cc-switch provider edit # Edit existing provider cc-switch provider duplicate # Duplicate a provider cc-switch provider delete # Delete provider cc-switch provider speedtest # Test API latency ``` ### 🛠️ MCP Server 管理 跨 Claude/Codex/Gemini 管理 Model Context Protocol 服务器。 **功能:** 统一管理、多应用支持、三种传输类型(stdio/http/sse)、自动同步、智能 TOML 解析器。 ``` cc-switch mcp list # List all MCP servers cc-switch mcp add # Add new MCP server (interactive) cc-switch mcp edit # Edit MCP server cc-switch mcp delete # Delete MCP server cc-switch mcp enable --app claude # Enable for specific app cc-switch mcp disable --app claude # Disable for specific app cc-switch mcp validate # Validate command in PATH cc-switch mcp sync # Sync to live files cc-switch mcp import --app claude # Import from live config ``` ### 💬 Prompts 管理 管理 AI 编程助手的系统提示词预设。 **跨应用支持:** Claude (`CLAUDE.md`)、Codex (`AGENTS.md`)、Gemini (`GEMINI.md`)。 ``` cc-switch prompts list # List prompt presets cc-switch prompts current # Show current active prompt cc-switch prompts activate # Activate prompt cc-switch prompts deactivate # Deactivate current active prompt cc-switch prompts create # Create new prompt preset cc-switch prompts edit # Edit prompt preset cc-switch prompts show # Display full content cc-switch prompts delete # Delete prompt ``` ### 🎯 Skills 管理 通过社区 Skills 管理和扩展 Claude Code/Codex/Gemini 的能力。 **功能:** 基于 SSOT 的 Skills 商店、多应用启用/禁用、同步到应用目录、非托管扫描/导入、Repo 发现。 ``` cc-switch skills list # List installed skills cc-switch skills discover # Discover available skills (alias: search) cc-switch skills install # Install a skill cc-switch skills uninstall # Uninstall a skill cc-switch skills enable # Enable for current app (--app) cc-switch skills disable # Disable for current app (--app) cc-switch skills info # Show skill information cc-switch skills sync # Sync enabled skills to app dirs cc-switch skills sync-method [m] # Show/set sync method (auto|symlink|copy) cc-switch skills scan-unmanaged # Scan unmanaged skills in app dirs cc-switch skills import-from-apps # Import unmanaged skills into SSOT cc-switch skills repos list # List skill repositories cc-switch skills repos add # Add repo (owner/name[@branch] or GitHub URL) cc-switch skills repos remove # Remove repo (owner/name or GitHub URL) ``` ### ⚙️ Configuration 管理 管理配置备份、导入和导出。 **功能:** 自定义备份命名、交互式备份选择、自动轮转(保留 10 个)、导入/导出。 ``` cc-switch config show # Display configuration cc-switch config path # Show config file paths cc-switch config validate # Validate config file # 通用代码片段(跨 Provider 的共享设置) cc-switch --app claude config common show cc-switch --app claude config common set --json '{"env":{"CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC":1},"includeCoAuthoredBy":false}' --apply cc-switch --app claude config common clear --apply # 备份 cc-switch config backup # Create backup (auto-named) cc-switch config backup --name my-backup # Create backup with custom name # 恢复 cc-switch config restore # Interactive: select from backup list cc-switch config restore --backup # Restore specific backup by ID cc-switch config restore --file # Restore from external file # 导入/导出 cc-switch config export # Export to external file cc-switch config import # Import from external file cc-switch config reset # Reset to default configuration ``` ### 🌐 多语言支持 交互模式支持英文和中文,语言设置会自动保存。 - 默认语言:英文 - 前往 `⚙️ Settings` 菜单切换语言 ### 🔧 实用工具 Shell 补全、环境管理及其他实用工具。 ``` # Shell 自动补全 cc-switch completions # Generate shell completions (bash/zsh/fish/powershell) # 环境管理 cc-switch env check # Check for environment conflicts cc-switch env list # List environment variables # 自更新 cc-switch update # Update to latest release cc-switch update --version v4.7.2 # Update to a specific version ``` ## 🏗️ 架构 ### 核心设计 - **SSOT**:所有配置位于 `~/.cc-switch/config.json`,实时配置是生成的产物 - **安全实时同步(默认)**:跳过写入尚未初始化的应用的实时文件(防止意外创建 `~/.claude`、`~/.codex`、`~/.gemini`) - **原子写入**:临时文件 + 重命名模式防止数据损坏 - **服务层复用**:100% 复用自原 GUI 版本 - **并发安全**:带有作用域守卫的 RwLock ### 配置文件 **CC-Switch 存储:** - `~/.cc-switch/config.json` - 主配置(SSOT) - `~/.cc-switch/settings.json` - 设置 - `~/.cc-switch/backups/` - 自动轮转(保留 10 个) **实时配置:** - Claude: `~/.claude/settings.json`, `~/.claude.json` (MCP), `~/.claude/CLAUDE.md` (prompts) - Codex: `~/.codex/auth.json`, `~/.codex/config.toml` (MCP), `~/.codex/AGENTS.md` (prompts) - Gemini: `~/.gemini/.env`, `~/.gemini/settings.json` (MCP), `~/.gemini/GEMINI.md` (prompts) ## ❓ FAQ(常见问题)
为什么切换提供商后我的配置没有生效?
首先,确保目标 CLI 至少已初始化一次(即其配置目录存在)。CC-Switch 可能会跳过未初始化应用的实时同步;你会看到一条警告。运行一次目标 CLI(例如 `claude --help`、`codex --help`、`gemini --help`),然后再次切换。 这通常是由**环境变量冲突**引起的。如果你在系统环境变量中设置了 API Key(如 `ANTHROPIC_API_KEY`、`OPENAI_API_KEY`),它们将覆盖 CC-Switch 的配置。 **解决方案:** 1. 检查冲突: cc-switch env check --app claude 2. 列出所有相关环境变量: cc-switch env list --app claude 3. 如果发现冲突,手动移除它们: - **macOS/Linux**:编辑你的 shell 配置文件(`~/.bashrc`、`~/.zshrc` 等) # 找到并删除包含环境变量的那一行 nano ~/.zshrc # 或使用你喜欢的文本编辑器:vim, code 等 - **Windows**:打开系统属性 → 环境变量并删除冲突的变量 4. 重启终端以使更改生效。
支持哪些应用?
CC-Switch 目前支持三种 AI 编程助手: - **Claude Code** (`--app claude`,默认) - **Codex** (`--app codex`) - **Gemini** (`--app gemini`) 使用全局 `--app` 标志指定要管理的应用: ``` cc-switch --app codex provider list ```
如何报告 Bug 或请求新功能?
请在我们的 [GitHub Issues](https://github.com/saladday/cc-switch-cli/issues) 页面提交 issue,并提供: - 问题或功能请求的详细描述 - 复现步骤(针对 Bug) - 你的系统信息(操作系统、版本) - 相关日志或错误信息
## 🛠️ 开发 ### 要求 - **Rust**: 1.85+ ([rustup](https://rustup.rs/)) - **Cargo**: 随 Rust 附带 ### 命令 ``` cd src-tauri cargo run # Development mode cargo run -- provider list # Run specific command cargo build --release # Build release cargo fmt # Format code cargo clippy # Lint code cargo test # Run tests ``` ### 代码结构 ``` src-tauri/src/ ├── cli/ │ ├── commands/ # CLI subcommands (provider, mcp, prompts, env, skills, ...) │ ├── tui/ # Interactive TUI mode (ratatui) │ ├── interactive/ # Legacy interactive mode │ └── ui/ # UI utilities (tables, colors) ├── services/ # Business logic (provider, mcp, prompt, webdav, ...) ├── database/ # SQLite storage, migrations, backup ├── main.rs # CLI entry point └── ... # App-specific configs, proxy, error handling ``` ## 🤝 贡献 欢迎贡献!此分支专注于 CLI 功能。 **在提交 PR 之前:** - ✅ 通过格式检查:`cargo fmt --check` - ✅ 通过 Linter:`cargo clippy` - ✅ 通过测试:`cargo test` - 💡 先开 Issue 进行讨论 ## 📜 许可证 - MIT © 原作者:Jason Young - CLI 分支维护者:saladday
标签:AI 编程助手, Claude Code, CLI 管理器, Codex, DNS解析, Gemini CLI, Homebrew安装, IPv6支持, LLM 工具链, MacOS, MCP 服务器, Python安全, Rust, Skills 扩展, WebDAV 同步, 可视化界面, 多模型管理, 威胁情报, 开发者工具, 开源项目, 提示词工程, 效率工具, 模型上下文协议, 策略决策点, 终端工具, 网络流量审计, 通知系统