Projects / cc-cli

CASE 02 / CLI

cc-cli

Claude Code 多 profile 启动器

角色
独立设计与实现
时间
2025–2026
状态
已发布
Node.jsCommanderYAMLExpressReactMUIJest

Context

在多模型、多 API 网关、多权限策略之间切换 Claude Code 时,手改 settings JSON 容易漏字段、难复用。需要可命名的 profile 与可预期的合并规则。

Role & Scope

独立开发并发布 npm 包 @zphhpzzph/cc-cli(bin: zcc),覆盖配置 CRUD、启动、写入 settings、本地 serve 代理与 Web UI。

Approach

  • Profile + base 合并链:全局 base → 本地 base → profile,字段可覆盖。
  • 启动与写入分离zcc <id> 生成 settings 并拉起;zcc use 只落盘。
  • 代理与可观测zcc serve 本地模型代理与请求日志;zcc web 降低 YAML 编辑成本。

Implementation

  • 入口 bin/cc.js:commander + 子命令 lazy-load(避免无用到的重依赖)。
  • src/config:loader / merger / validator / env-registry(大量 Claude Code 环境变量可检索)。
  • src/proxy:代理服务与 worker/日志。
  • src/web:Vite + React + MUI 配置界面,构建进包内 public。
  • 测试:Jest 覆盖 commands/config/proxy 等。

Outcome

  • 全局安装后 zcc add / zcc <profile> 可完成「加配置 → 启动」闭环。
  • npm 已发布(实现时核对 registry 当前版本号写入文案即可,如 2.6.x)。
  • 适合作为「开发者日常工具」作品,而不仅是课程作业。

Learnings

CLI 的产品完成度往往体现在 合并规则、错误提示、lazy-load 与测试,而不是子命令数量。