# ccc **Repository Path**: cennac/ccc ## Basic Information - **Project Name**: ccc - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-07-12 - **Last Updated**: 2026-07-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ccc — cennac console 一个 macOS 控制台,使用 Tauri 2 + Vue 3 构建桌面界面,Rust 负责系统操作: - **proxy 穿透隧道**(多通道,启停 / 状态 / 流量统计 / 日志) - **Docker 栈**(ccsite 等 `docker compose` 项目 + 所有容器的重启 / 日志 / 停止) - **模型切换**(改写 `~/.claude/settings.json` 的 provider/model,或一键拉起 ccswitch 桌面 App) - **磁盘占用**(挂载点 / Docker 数据 / watch 目录) - **AI 额度**(多服务额度表格、编辑器、定时刷新、置顶悬浮窗) 桌面端、TUI 和 CLI 共用同一套 Rust 底层逻辑: - **图形窗口**:Tauri 2 + Vue 3,提供总览、表格管理、设置和悬浮窗。 - **终端全屏 TUI**:`ccc tui` —— 键盘操作,适合 SSH / 纯终端。 - **子命令**:`ccc proxy status` / `ccc model use ...` 等,供脚本调用。 完整的旧 egui 桌面版本保留在 `egui` 分支。 ## 安装 运行环境:macOS、Node.js、Rust stable。Docker 管理功能需要启动 Docker Desktop; proxy 功能需要配置可用的 Python 和 `tunnel.py`。 ```sh npm install npm run tauri:dev ``` 首次启动会生成 `~/.config/ccc/config.toml`。建议先运行一次 `ccc --no-gui`,检查自动探测结果并按实际路径调整配置。 ## 用法 ### 图形窗口 ```sh npm run tauri:dev ``` 侧栏包含总览、Proxy、Docker、模型、磁盘、AI 额度和设置。关闭主窗口时会隐藏而不是退出。 AI 额度服务可以在界面中导入、编辑和刷新,并可打开独立置顶悬浮窗。 ### 终端全屏 TUI ```sh ccc tui # 终端界面 ``` Tab 切换:`1` 总览 / `2` Proxy / `3` Docker / `4` 模型 / `5` 磁盘。`?` 帮助,`r` 刷新,`q` 退出。 各 Tab 操作: - **Proxy**:`j/k` 选择通道,`s` 启动,`x` 停止(确认),`R` 重启,`l` 看日志。 - **Docker**:`j/k` 选容器,`R` 重启,`L` 日志,`x` 停止(确认),`u` up,`d` down(确认)。 - **模型**:`j/k` 选 profile,`Enter` 应用,`a` 打开 ccswitch 桌面 App。 - **磁盘**:`r` 重算 watch 目录占用。 ### 子命令(脚本 / 快速查看) ```sh ccc status # 一屏总览(等同 --no-gui) ccc proxy status # 各通道状态(含流量统计) ccc proxy start|stop|restart [name] ccc proxy logs [name] [--tail 40] ccc model list # 列出 profile,标记当前 ccc model use # 切到某 profile(自动备份) ccc model show # 当前 settings.json 模型快照 ccc model app # 打开 ccswitch 桌面 App ccc docker ps [project] # 容器列表(别名:site) ccc site ps ccc site up|down ccc site restart [service] ccc site logs [service] [--tail 60] ccc docker df # docker system df ccc disk # 磁盘 / Docker 数据 / watch 目录 ccc config # 打开配置文件 ``` ## 配置 首次运行会探测现状(运行中的隧道进程、`~/.claude/settings.json`、ccsite 路径、常见挂载点),自动生成 `~/.config/ccc/config.toml`,按需修改后重启 `ccc` 生效。 关键片段: ```toml [proxy] python = "python3" script = "/Users/cennac/proxy/tunnel.py" log_dir = "/Users/cennac/proxy" [[proxy.channel]] name = "server-9000" mode = "server" # server | client listen = "0.0.0.0:9000" target = "36.141.76.190:8081" tls = true cert = "..." key = "..." log = "tunnel.log" # 可选:显式指定日志文件 [[model.profile]] name = "bigmodel" model = "opus" # 写入 settings.json 顶层 "model" [model.profile.env] # 这些 key 合并覆盖进 settings.json["env"] ANTHROPIC_BASE_URL = "https://open.bigmodel.cn/api/anthropic" ANTHROPIC_MODEL = "glm-5.1" # ANTHROPIC_AUTH_TOKEN 不写在这里 → 切换时保留现有值 [docker] projects = [ { name = "ccsite", path = "/Volumes/MacData/Codes/ccsite/deploy" } ] [disk] mounts = [ "/", "/Volumes/MacData" ] docker_data = "/Volumes/MacData/DockerData" watch_dirs = [ "/Volumes/MacData/DockerData", "/Volumes/MacData/Codes" ] ``` ## 说明与安全 - **模型切换**:`ccc model use` / TUI 里应用 profile 前,会把当前 `~/.claude/settings.json` 备份到 `~/.claude/backups/settings.json.<时间戳>.json`。`ANTHROPIC_AUTH_TOKEN` 默认不覆盖(profile 里不写就保留现有)。切换后需**重启 Claude Code** 生效。 - **proxy 停止**:只杀匹配该通道(按 `--listen` / `--target` 或 `--server` 签名)的进程,不会误伤其它 `tunnel.py`。 - **破坏性操作**:TUI 里停止通道 / 停止容器都需二次确认(`Enter` 确认 / `Esc` 取消)。 - **磁盘百分比(macOS APFS)**:APFS 下多个卷共享一个容器,本工具用 `sysinfo` 报的是**整个物理容器**的真实占用与剩余,所以 `/` 的百分比通常比 `df /`(只看 sealed 系统卷)高——这是对的,监控看的是磁盘真实空闲。 ## 开发 ```sh npm run build cargo check --manifest-path src-tauri/Cargo.toml npm run tauri:dev # CLI / TUI cargo test cargo run -- status cargo run -- tui ``` ## 结构 ``` web/ # Vue 3 + TypeScript 前端 ├── src/App.vue # 主控制台 ├── src/QuotaPage.vue # AI 额度管理 └── src/QuotaFab.vue # 额度悬浮窗 src-tauri/ # Tauri 2 桌面后端 ├── src/main.rs # commands / 多窗口 └── tauri.conf.json src/ # CLI / TUI 与共享 Rust 模块 ├── main.rs / cli.rs # clap 入口与子命令 ├── config.rs # 配置读写 + 首次探测 ├── proc.rs # 命令/进程封装(spawn detached、pgrep、kill) ├── fmt.rs # 字节/百分比/进度条/严重度 ├── autostart.rs # 开机启动(LaunchAgent plist) ├── modules/ │ ├── proxy.rs # 多通道隧道:状态/启停/日志/流量统计 │ ├── docker.rs # ps / compose 操作 / system df │ ├── model.rs # settings.json 合并改写 + 备份 │ └── disk.rs # sysinfo 挂载点 / du └── tui/ ├── mod.rs # 终端初始化 + 主循环 ├── event.rs # crossterm 轮询 ├── view.rs # 各 Tab + 弹窗渲染 └── app.rs # 状态与交互逻辑 ```