Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit d2473d7

Browse files
committed
Initial commit: CC-Switch CLI
- 纯命令行版 cc-switch,无 GUI 依赖 - 支持 Claude Code、Codex、Gemini CLI、OpenCode - 交互式菜单模式(新手友好) - 完整的供应商管理:list/status/use/add/remove - 模型配置支持:--model, --small-model - 导入导出功能 - 兼容原 cc-switch 数据库
0 parents  commit d2473d7

27 files changed

Lines changed: 4361 additions & 0 deletions

.gitignore

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
# 构建产物
2+
/target/
3+
**/target/
4+
*.db
5+
*.db-journal
6+
7+
# 依赖
8+
Cargo.lock
9+
10+
# IDE
11+
.idea/
12+
.vscode/
13+
*.swp
14+
*.swo
15+
*~
16+
17+
# 系统文件
18+
.DS_Store
19+
Thumbs.db
20+
21+
# 日志
22+
*.log
23+
24+
# 原始项目(仅供参考)
25+
/original/

Cargo.toml

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
[workspace]
2+
resolver = "2"
3+
members = [
4+
"ccswitch-core",
5+
"ccswitch-cli",
6+
]
7+
8+
[workspace.package]
9+
version = "0.1.0"
10+
edition = "2021"
11+
license = "MIT"
12+
repository = "https://github.com/farion1231/cc-switch"
13+
rust-version = "1.70.0"
14+
15+
[profile.release]
16+
codegen-units = 1
17+
lto = "thin"
18+
opt-level = "s"
19+
panic = "unwind"
20+
strip = "symbols"

README.md

Lines changed: 164 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,164 @@
1+
# CC-Switch CLI
2+
3+
纯命令行版本的 CC-Switch,用于在 Linux 服务器(无图形界面)上管理 Claude Code、Codex、Gemini CLI 等 AI 编程工具的供应商配置。
4+
5+
## 特性
6+
7+
- 🖥️ **纯 CLI** - 无 GUI 依赖,可在 SSH 会话中使用
8+
- 🔄 **供应商切换** - 快速切换不同的 API 供应商配置
9+
- 📋 **多应用支持** - Claude Code、Codex CLI、Gemini CLI、OpenCode
10+
- 📦 **单一可执行文件** - 编译后仅需一个二进制文件
11+
- 🔧 **可扩展** - 代码结构清晰,便于后续增加 TUI 支持
12+
13+
## 安装
14+
15+
### 从源码编译
16+
17+
```bash
18+
# 克隆仓库
19+
git clone <repo-url>
20+
cd cc-switch-cli
21+
22+
# 编译 release 版本
23+
cargo build --release
24+
25+
# 安装到系统路径
26+
sudo cp target/release/cc-switch /usr/local/bin/
27+
```
28+
29+
### 编译要求
30+
31+
- Rust 1.70.0+
32+
- Linux / macOS / Windows
33+
34+
## 使用方法
35+
36+
### 基本命令
37+
38+
```bash
39+
# 显示帮助
40+
cc-switch --help
41+
42+
# 列出所有供应商
43+
cc-switch list
44+
45+
# 列出 Claude 供应商
46+
cc-switch list --app claude
47+
48+
# 显示当前状态
49+
cc-switch status
50+
51+
# 切换供应商
52+
cc-switch use my-provider --app claude
53+
54+
# 显示配置路径
55+
cc-switch config path
56+
```
57+
58+
### 供应商管理
59+
60+
```bash
61+
# 添加 Claude 供应商
62+
cc-switch add my-provider --app claude --api-key "sk-xxx" --base-url "https://api.example.com"
63+
64+
# 从文件导入
65+
cc-switch add my-provider --app claude --from-file config.json
66+
67+
# 删除供应商
68+
cc-switch remove my-provider --app claude
69+
70+
# 强制删除(跳过确认)
71+
cc-switch remove my-provider --app claude -y
72+
```
73+
74+
### 输出格式
75+
76+
```bash
77+
# 表格格式(默认)
78+
cc-switch list
79+
80+
# JSON 格式
81+
cc-switch list -o json
82+
83+
# YAML 格式
84+
cc-switch list -o yaml
85+
86+
# 禁用彩色输出
87+
cc-switch list --no-color
88+
```
89+
90+
## 配置文件位置
91+
92+
### Linux 服务器推荐
93+
94+
| 路径 | 说明 |
95+
|------|------|
96+
| `~/.cc-switch/` | CC-Switch 配置目录 |
97+
| `~/.cc-switch/cc-switch.db` | SQLite 数据库 |
98+
| `~/.cc-switch/settings.json` | 本地设置 |
99+
| `~/.claude/` | Claude Code 配置 |
100+
| `~/.codex/` | Codex CLI 配置 |
101+
| `~/.gemini/` | Gemini CLI 配置 |
102+
103+
### 环境变量
104+
105+
可通过环境变量自定义路径:
106+
107+
```bash
108+
export CCSWITCH_CONFIG_DIR="$HOME/.config/cc-switch"
109+
export CCSWITCH_CLAUDE_CONFIG_DIR="$HOME/.config/claude"
110+
```
111+
112+
支持 XDG Base Directory 规范:
113+
114+
```bash
115+
export XDG_CONFIG_HOME="$HOME/.config"
116+
# cc-switch 将使用 ~/.config/cc-switch/
117+
```
118+
119+
## 项目结构
120+
121+
```
122+
cc-switch-cli/
123+
├── Cargo.toml # 工作区配置
124+
├── ccswitch-core/ # 核心库 (lib crate)
125+
│ ├── src/
126+
│ │ ├── lib.rs # 公共 API
127+
│ │ ├── app_config.rs # 应用类型定义
128+
│ │ ├── config.rs # 配置文件处理
129+
│ │ ├── database/ # SQLite 数据持久化
130+
│ │ ├── error.rs # 错误类型
131+
│ │ ├── provider.rs # 供应商数据结构
132+
│ │ ├── services/ # 业务逻辑层
133+
│ │ ├── settings.rs # 本地设置
134+
│ │ └── store.rs # 应用状态
135+
│ └── Cargo.toml
136+
└── ccswitch-cli/ # CLI 工具 (bin crate)
137+
├── src/
138+
│ ├── main.rs # 入口
139+
│ ├── cli.rs # clap 参数定义
140+
│ ├── commands/ # 命令实现
141+
│ └── output.rs # 输出格式化
142+
└── Cargo.toml
143+
```
144+
145+
## 与原项目的关系
146+
147+
本项目基于 [cc-switch](https://github.com/farion1231/cc-switch) 进行二次开发:
148+
149+
- 复用原项目的核心业务逻辑(供应商管理、配置同步等)
150+
- 移除 Tauri/GUI 依赖
151+
- 重构为纯 Rust CLI 工具
152+
- 保持数据库格式兼容
153+
154+
## 后续计划
155+
156+
- [ ] TUI 支持 (使用 ratatui)
157+
- [ ] 订阅同步功能
158+
- [ ] 配置导入导出
159+
- [ ] MCP 服务器管理
160+
- [ ] 批量操作支持
161+
162+
## 许可证
163+
164+
MIT License - 与原项目保持一致

0 commit comments

Comments
 (0)