🚀 Socket Launch Week Day 5:Introducing Repository Access Permissions and Custom Roles.Learn more
Sign In

switch-claude-cli

Package Overview
Dependencies
Maintainers
1
Versions
17
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

switch-claude-cli - npm Package Compare versions

Comparing version
1.3.4-beta.1
to
1.4.0
+154
-15
CHANGELOG.md

@@ -7,2 +7,130 @@ # 更新日志

## [1.4.0] - 2025-09-24
### 🎉 **重大更新:TypeScript 重构完成**
这是一个里程碑版本!我们完全重构了整个项目,从 JavaScript 迁移到 TypeScript,采用了现代化的模块化架构。
### 🚀 **新增功能**
#### ✨ **TypeScript 重构**
- **完全类型安全**:所有代码使用 TypeScript 编写,提供完整的类型检查
- **模块化架构**:重新设计的代码结构,更易维护和扩展
- **ESM 模块系统**:使用现代 ES 模块,更好的 tree-shaking 支持
- **严格类型检查**:启用严格模式,确保代码质量
#### 📊 **使用统计功能**
- **命令使用统计**:记录每个命令的使用频率和时间
- **Provider 性能统计**:跟踪每个 API 提供商的成功率和响应时间
- **24小时使用分布**:可视化显示使用时间分布
- **错误统计分析**:记录和分析各种错误类型
- **统计数据导出**:支持导出统计数据到 JSON 文件
- **统计数据重置**:支持清空所有统计数据
#### 🧪 **完整测试覆盖**
- **单元测试**:19个测试用例,覆盖核心功能
- **测试框架**:使用 Vitest 作为测试运行器
- **测试覆盖率**:达到 95%+ 的代码覆盖率
- **CI/CD 集成**:GitHub Actions 自动运行测试
### 🏗️ **架构改进**
#### 📁 **模块化设计**
- **核心模块**:
- `api-tester.ts` - API 可用性检测
- `cache-manager.ts` - 缓存管理
- `config-manager.ts` - 配置文件管理
- `stats-manager.ts` - 使用统计管理
- **UI 模块**:
- `cli-interface.ts` - 命令行交互界面
- `output-formatter.ts` - 输出格式化
- `progress-indicator.ts` - 进度显示
- **工具模块**:
- `file-utils.ts` - 文件操作工具
- `platform-utils.ts` - 跨平台兼容
- `validation.ts` - 数据验证
#### 🎯 **命令系统重构**
- **基础命令类**:统一的命令接口和错误处理
- **命令执行器**:集中的命令分发和执行逻辑
- **CLI 解析器**:改进的参数解析和验证
### 🐛 **修复和改进**
#### 🔧 **错误处理优化**
- **统一错误处理**:标准化的错误消息和处理流程
- **用户友好提示**:更清晰的错误信息和解决建议
- **异常恢复**:更好的异常处理和程序稳定性
#### 🎨 **用户体验提升**
- **显示优化**:修复多处文本换行和格式问题
- **交互改进**:更流畅的用户交互体验
- **性能优化**:更快的启动速度和响应时间
#### 📦 **构建系统**
- **TypeScript 编译**:使用 tsc 进行类型检查和编译
- **代码质量工具**:ESLint + Prettier 确保代码规范
- **自动化脚本**:完善的 npm scripts 支持开发和发布
### 🔄 **兼容性保证**
#### ✅ **向后兼容**
- **配置文件**:完全兼容现有的 `providers.json` 配置
- **命令行参数**:所有原有命令和参数保持不变
- **缓存文件**:兼容现有的缓存数据格式
- **用户体验**:保持原有的使用方式和界面风格
#### 🔄 **无缝升级**
- **自动迁移**:首次运行时自动处理配置迁移
- **数据保留**:保留所有用户配置和缓存数据
- **功能增强**:在保持兼容的基础上增加新功能
### 📈 **性能提升**
#### ⚡ **运行时性能**
- **更快启动**:优化模块加载和初始化流程
- **内存优化**:更高效的内存使用和垃圾回收
- **并发处理**:改进的异步处理和错误恢复
#### 🛠️ **开发体验**
- **类型提示**:完整的 IDE 类型提示和自动补全
- **调试支持**:更好的调试信息和错误堆栈
- **代码导航**:清晰的模块结构便于代码导航
### 🎯 **新增命令**
#### 📊 **统计相关命令**
- `switch-claude --stats` - 显示使用统计信息
- `switch-claude --export-stats [文件路径]` - 导出统计数据
- `switch-claude --reset-stats` - 重置所有统计数据
### 🔧 **技术细节**
#### 📦 **依赖更新**
- **TypeScript 5.9+**:使用最新的 TypeScript 特性
- **Node.js 18+**:要求 Node.js 18 或更高版本
- **ESM 模块**:完全使用 ES 模块系统
- **现代工具链**:Vitest、ESLint 9、Prettier 3
#### 🏗️ **构建配置**
- **tsconfig.json**:严格的 TypeScript 配置
- **eslint.config.js**:现代 ESLint 平面配置
- **package.json**:更新的脚本和依赖管理
### 🚨 **重要说明**
#### ⚠️ **最低要求**
- **Node.js 版本**:需要 Node.js 18.0.0 或更高版本
- **npm 版本**:建议使用 npm 8+ 或 yarn 1.22+
#### 🔄 **迁移指南**
1. **自动升级**:直接运行 `npm update -g switch-claude-cli` 即可
2. **配置保留**:所有现有配置和缓存自动保留
3. **功能验证**:升级后建议运行 `switch-claude --version` 验证
#### 🆘 **问题反馈**
如果在升级过程中遇到任何问题,请在 [GitHub Issues](https://github.com/yak33/switch-claude-cli/issues) 提交反馈。
---
## [1.3.3] - 2025-09-23

@@ -198,25 +326,36 @@

### 🚀 计划中的功能
- 📈 **增强统计**:响应时间趋势图表
- 🔔 **通知系统**:服务状态变化提醒
- 🎨 **主题支持**:自定义显示样式和颜色
- 📈 **增强统计**:响应时间趋势图表和可视化
- 🔔 **通知系统**:服务状态变化提醒和告警
- 🎨 **主题支持**:自定义显示样式和颜色主题
- 🌍 **国际化**:多语言支持(英文、日文等)
- 🔌 **插件系统**:支持自定义扩展和钩子
- 📱 **移动端支持**:适配移动终端显示
- 🔌 **插件系统**:支持自定义扩展和钩子函数
- 📱 **移动端支持**:适配移动终端显示和操作
- 🔄 **配置同步**:跨设备配置同步功能
- 🤖 **AI 助手**:智能推荐最佳 Provider 选择
### 🎯 改进计划
- **更智能的检测**:支持更多API端点和协议
- **配置文件热重载**:实时监听配置变化
- **更丰富的健康检查**:延迟、吞吐量等指标
- **GUI 界面支持**:基于Web的管理界面
- **更智能的检测**:支持更多API端点和协议类型
- **配置文件热重载**:实时监听配置变化并自动重载
- **更丰富的健康检查**:延迟、吞吐量、可用率等指标
- **GUI 界面支持**:基于Web的管理界面和仪表板
- **Docker 支持**:容器化部署和使用
- **API 监控面板**:实时状态监控
- **API 监控面板**:实时状态监控和历史数据分析
- **自动故障转移**:智能切换到备用服务
- **负载均衡**:多个 Provider 之间的智能负载分配
### 🔧 技术债务
- 重构进度显示为独立模块
- 添加更多单元测试覆盖边缘情况
- 优化大量provider时的性能
- 改进错误日志和调试信息
### 🔧 技术改进
- **性能优化**:优化大量 provider 时的检测性能
- **错误处理**:更详细的错误日志和调试信息
- **代码质量**:持续改进代码覆盖率和测试质量
- **文档完善**:API 文档和开发者指南
- **安全增强**:API Key 加密存储和安全传输
### ✅ **已完成(v1.4.0)**
- ✅ **TypeScript 重构**:完全迁移到 TypeScript
- ✅ **模块化架构**:重新设计的代码结构
- ✅ **使用统计功能**:完整的统计和分析功能
- ✅ **测试覆盖**:95%+ 的单元测试覆盖率
- ✅ **进度显示优化**:独立的进度显示模块
- ✅ **错误处理改进**:统一的错误处理机制
---

@@ -223,0 +362,0 @@

+1
-1

@@ -1,1 +0,1 @@

{"version":3,"file":"platform-utils.js","sourceRoot":"","sources":["../../src/utils/platform-utils.ts"],"names":[],"mappings":"AAAA,qDAAqD;AAErD;;;GAGG;AACH,MAAM,OAAO,aAAa;IACxB;;OAEG;IACH,MAAM,CAAC,WAAW;QAChB,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QAClC,QAAQ,QAAQ,EAAE,CAAC;YACjB,KAAK,OAAO;gBACV,OAAO,SAAS,CAAC;YACnB,KAAK,QAAQ;gBACX,OAAO,OAAO,CAAC;YACjB,KAAK,OAAO;gBACV,OAAO,OAAO,CAAC;YACjB;gBACE,OAAO,SAAS,CAAC;QACrB,CAAC;IACH,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,oBAAoB,CAAC,UAAkB;QAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAEpC,QAAQ,QAAQ,EAAE,CAAC;YACjB,KAAK,SAAS;gBACZ,OAAO,YAAY,UAAU,GAAG,CAAC;YACnC,KAAK,OAAO;gBACV,OAAO,SAAS,UAAU,GAAG,CAAC;YAChC,KAAK,OAAO;gBACV,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,MAAM,KAAK,UAAU,GAAG,CAAC;YAC3D;gBACE,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,IAAI,KAAK,UAAU,GAAG,CAAC;QAC3D,CAAC;IACH,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,iBAAiB;QAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACpC,MAAM,QAAQ,GACZ,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,EAAE,mBAAmB,CAAC,CAAC;QAEpF,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;YAC3B,IAAI,CAAC;gBACH,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;gBACnD,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,EAAE;oBAC3B,QAAQ,EAAE,MAAM;oBAChB,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC;oBACnC,OAAO,EAAE,IAAI;iBACd,CAAC,CAAC;gBAEH,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;gBACjC,IAAI,UAAU,IAAI,UAAU,KAAK,EAAE,EAAE,CAAC;oBACpC,OAAO,UAAU,CAAC;gBACpB,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,YAAY;YACd,CAAC;QACH,CAAC;QAED,WAAW;QACX,MAAM,WAAW,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAChD,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;QAE1C,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;YAC/B,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBACrB,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QAED,SAAS;QACT,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;QAC3C,IAAI,UAAU,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YACzC,OAAO,UAAU,CAAC;QACpB,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACK,MAAM,CAAC,oBAAoB;QACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAEpC,QAAQ,QAAQ,EAAE,CAAC;YACjB,KAAK,SAAS;gBACZ,OAAO;oBACL,uCAAuC;oBACvC,6CAA6C;oBAC7C,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,sCAAsC;oBAChE,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,qCAAqC;oBAC/D,YAAY;iBACb,CAAC;YACJ,KAAK,OAAO;gBACV,OAAO;oBACL,gDAAgD;oBAChD,uBAAuB;oBACvB,0BAA0B;oBAC1B,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,oBAAoB;oBACvC,iBAAiB;iBAClB,CAAC;YACJ,KAAK,OAAO;gBACV,OAAO;oBACL,uBAAuB;oBACvB,iBAAiB;oBACjB,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,oBAAoB;oBACvC,kBAAkB;oBAClB,wBAAwB;iBACzB,CAAC;YACJ;gBACE,OAAO,CAAC,uBAAuB,EAAE,iBAAiB,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,aAAa;QAClB,OAAO,CAAC,CAAC,CACP,OAAO,CAAC,MAAM,CAAC,KAAK;YACpB,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS;gBACpB,OAAO,CAAC,GAAG,CAAC,IAAI,KAAK,WAAW;gBAChC,OAAO,CAAC,GAAG,CAAC,IAAI,KAAK,gBAAgB;gBACrC,OAAO,CAAC,GAAG,CAAC,IAAI,KAAK,iBAAiB,CAAC,CAC1C,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,gBAAgB;QACrB,OAAO,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;IACtC,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,KAAK;QACV,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,yBAAyB,CAAC,SAAiB;QAChD,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACpC,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC;QAE/D,IAAI,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/B,MAAM,YAAY,GAAG,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACtD,OAAO,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,gBAAgB,YAAY,EAAE,CAAC,CAAC,CAAC,IAAI,YAAY,EAAE,CAAC;QACtF,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,aAAa;QAMlB,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;QACnC,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;QACpC,IAAI,SAA6B,CAAC;QAE9B,IAAI,CAAC;YACP,4BAA4B;YAC5B,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC;YACjC,SAAS,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;QAC3B,CAAC;QAAC,MAAM,CAAC;YACP,YAAY;QACd,CAAC;QAED,OAAO;YACL,QAAQ;YACR,IAAI;YACJ,WAAW;YACX,SAAS;SACV,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,YAAY,CACvB,OAAe,EACf,OAAiB,EAAE,EACnB,UAA8C,EAAE;QAEhD,IAAI,CAAC;YACH,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;YAEhD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;gBAC7B,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE;oBACjC,GAAG,EAAE,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE;oBACjC,KAAK,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC;oBAClC,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,KAAK,SAAS;iBACxC,CAAC,CAAC;gBAEH,IAAI,MAAM,GAAG,EAAE,CAAC;gBAChB,IAAI,KAAK,GAAG,EAAE,CAAC;gBAEf,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;oBAChC,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAC5B,CAAC,CAAC,CAAC;gBAEH,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;oBAChC,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAC3B,CAAC,CAAC,CAAC;gBAEH,OAAO;gBACP,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,KAAK,CAAC;gBACzC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;oBAC5B,KAAK,CAAC,IAAI,EAAE,CAAC;oBACb,OAAO,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;gBAC/C,CAAC,EAAE,OAAO,CAAC,CAAC;gBAEZ,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;oBACzB,YAAY,CAAC,KAAK,CAAC,CAAC;oBACpB,OAAO,CAAC;wBACN,OAAO,EAAE,IAAI,KAAK,CAAC;wBACnB,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE;wBACrB,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,SAAS;qBACjC,CAAC,CAAC;gBACL,CAAC,CAAC,CAAC;gBAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;oBACxB,YAAY,CAAC,KAAK,CAAC,CAAC;oBACpB,OAAO,CAAC;wBACN,OAAO,EAAE,KAAK;wBACd,KAAK,EAAE,GAAG,CAAC,OAAO;qBACnB,CAAC,CAAC;gBACL,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM;aACvD,CAAC;QACJ,CAAC;IACH,CAAC;CACF"}
{"version":3,"file":"platform-utils.js","sourceRoot":"","sources":["../../src/utils/platform-utils.ts"],"names":[],"mappings":"AAAA,qDAAqD;AAErD;;;GAGG;AACH,MAAM,OAAO,aAAa;IACxB;;OAEG;IACH,MAAM,CAAC,WAAW;QAChB,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QAClC,QAAQ,QAAQ,EAAE,CAAC;YACjB,KAAK,OAAO;gBACV,OAAO,SAAS,CAAC;YACnB,KAAK,QAAQ;gBACX,OAAO,OAAO,CAAC;YACjB,KAAK,OAAO;gBACV,OAAO,OAAO,CAAC;YACjB;gBACE,OAAO,SAAS,CAAC;QACrB,CAAC;IACH,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,oBAAoB,CAAC,UAAkB;QAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAEpC,QAAQ,QAAQ,EAAE,CAAC;YACjB,KAAK,SAAS;gBACZ,OAAO,YAAY,UAAU,GAAG,CAAC;YACnC,KAAK,OAAO;gBACV,OAAO,SAAS,UAAU,GAAG,CAAC;YAChC,KAAK,OAAO;gBACV,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,MAAM,KAAK,UAAU,GAAG,CAAC;YAC3D;gBACE,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,IAAI,KAAK,UAAU,GAAG,CAAC;QAC3D,CAAC;IACH,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,iBAAiB;QAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACpC,MAAM,QAAQ,GACZ,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,EAAE,mBAAmB,CAAC,CAAC;QAEpF,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;YAC3B,IAAI,CAAC;gBACH,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;gBACnD,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,EAAE;oBAC3B,QAAQ,EAAE,MAAM;oBAChB,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC;oBACnC,OAAO,EAAE,IAAI;iBACd,CAAC,CAAC;gBAEH,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;gBACjC,IAAI,UAAU,IAAI,UAAU,KAAK,EAAE,EAAE,CAAC;oBACpC,OAAO,UAAU,CAAC;gBACpB,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,YAAY;YACd,CAAC;QACH,CAAC;QAED,WAAW;QACX,MAAM,WAAW,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAChD,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;QAE1C,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;YAC/B,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBACrB,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QAED,SAAS;QACT,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;QAC3C,IAAI,UAAU,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YACzC,OAAO,UAAU,CAAC;QACpB,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACK,MAAM,CAAC,oBAAoB;QACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAEpC,QAAQ,QAAQ,EAAE,CAAC;YACjB,KAAK,SAAS;gBACZ,OAAO;oBACL,uCAAuC;oBACvC,6CAA6C;oBAC7C,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,sCAAsC;oBAChE,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,qCAAqC;oBAC/D,YAAY;iBACb,CAAC;YACJ,KAAK,OAAO;gBACV,OAAO;oBACL,gDAAgD;oBAChD,uBAAuB;oBACvB,0BAA0B;oBAC1B,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,oBAAoB;oBACvC,iBAAiB;iBAClB,CAAC;YACJ,KAAK,OAAO;gBACV,OAAO;oBACL,uBAAuB;oBACvB,iBAAiB;oBACjB,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,oBAAoB;oBACvC,kBAAkB;oBAClB,wBAAwB;iBACzB,CAAC;YACJ;gBACE,OAAO,CAAC,uBAAuB,EAAE,iBAAiB,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,aAAa;QAClB,OAAO,CAAC,CAAC,CACP,OAAO,CAAC,MAAM,CAAC,KAAK;YACpB,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS;gBACpB,OAAO,CAAC,GAAG,CAAC,IAAI,KAAK,WAAW;gBAChC,OAAO,CAAC,GAAG,CAAC,IAAI,KAAK,gBAAgB;gBACrC,OAAO,CAAC,GAAG,CAAC,IAAI,KAAK,iBAAiB,CAAC,CAC1C,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,gBAAgB;QACrB,OAAO,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;IACtC,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,KAAK;QACV,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,yBAAyB,CAAC,SAAiB;QAChD,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACpC,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC;QAE/D,IAAI,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/B,MAAM,YAAY,GAAG,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACtD,OAAO,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,gBAAgB,YAAY,EAAE,CAAC,CAAC,CAAC,IAAI,YAAY,EAAE,CAAC;QACtF,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,aAAa;QAMlB,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;QACnC,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;QACpC,IAAI,SAA6B,CAAC;QAElC,IAAI,CAAC;YACH,4BAA4B;YAC5B,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC;YACjC,SAAS,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;QAC3B,CAAC;QAAC,MAAM,CAAC;YACP,YAAY;QACd,CAAC;QAED,OAAO;YACL,QAAQ;YACR,IAAI;YACJ,WAAW;YACX,SAAS;SACV,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,YAAY,CACvB,OAAe,EACf,OAAiB,EAAE,EACnB,UAA8C,EAAE;QAEhD,IAAI,CAAC;YACH,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;YAEhD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;gBAC7B,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE;oBACjC,GAAG,EAAE,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE;oBACjC,KAAK,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC;oBAClC,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,KAAK,SAAS;iBACxC,CAAC,CAAC;gBAEH,IAAI,MAAM,GAAG,EAAE,CAAC;gBAChB,IAAI,KAAK,GAAG,EAAE,CAAC;gBAEf,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;oBAChC,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAC5B,CAAC,CAAC,CAAC;gBAEH,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;oBAChC,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAC3B,CAAC,CAAC,CAAC;gBAEH,OAAO;gBACP,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,KAAK,CAAC;gBACzC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;oBAC5B,KAAK,CAAC,IAAI,EAAE,CAAC;oBACb,OAAO,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;gBAC/C,CAAC,EAAE,OAAO,CAAC,CAAC;gBAEZ,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;oBACzB,YAAY,CAAC,KAAK,CAAC,CAAC;oBACpB,OAAO,CAAC;wBACN,OAAO,EAAE,IAAI,KAAK,CAAC;wBACnB,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE;wBACrB,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,SAAS;qBACjC,CAAC,CAAC;gBACL,CAAC,CAAC,CAAC;gBAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;oBACxB,YAAY,CAAC,KAAK,CAAC,CAAC;oBACpB,OAAO,CAAC;wBACN,OAAO,EAAE,KAAK;wBACd,KAAK,EAAE,GAAG,CAAC,OAAO;qBACnB,CAAC,CAAC;gBACL,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM;aACvD,CAAC;QACJ,CAAC;IACH,CAAC;CACF"}
{
"name": "switch-claude-cli",
"version": "1.3.4-beta.1",
"version": "1.4.0",
"description": "Smart Claude API provider switcher with availability detection and caching",

@@ -5,0 +5,0 @@ "main": "dist/index.js",

# Switch Claude CLI
[![npm version](https://badge.fury.io/js/switch-claude-cli.svg)](https://www.npmjs.com/package/switch-claude-cli)
[![Tests](https://github.com/yak33/switch-claude-cli/actions/workflows/test.yml/badge.svg)](https://github.com/yak33/switch-claude-cli/actions/workflows/test.yml)
[![Coverage](https://img.shields.io/badge/coverage-95.62%25-brightgreen)]()
[![GitHub license](https://img.shields.io/github/license/yak33/switch-claude-cli)](https://github.com/yak33/switch-claude-cli/blob/main/LICENSE)

@@ -10,13 +12,30 @@ [![GitHub issues](https://img.shields.io/github/issues/yak33/switch-claude-cli)](https://github.com/yak33/switch-claude-cli/issues)

👉 For the original motivation behind this project, see this WeChat article (Chinese): [我受够了复制粘贴 Claude Code API ,于是写了个工具,3秒自动切换](https://mp.weixin.qq.com/s/5A5eFc-l6GHBu_qxuLdtIQ)
## 📋 Documentation and Updates
- 📄 **[Changelog](CHANGELOG.md)** - View all version update records
## ✨ Features
- 🚀 **Smart Detection**: Automatically checks API availability with support for multi-endpoint testing and a retry mechanism.
- ⚡ **Caching**: Caches detection results for 5 minutes to avoid redundant checks.
- 🎯 **Flexible Selection**: Supports automatic selection of a default provider or interactive manual selection.
- 🔧 **Configuration Management**: Full CRUD (Create, Read, Update, Delete) functionality for managing providers.
- 📊 **Verbose Logging**: Optional verbose mode to display detailed response times and error messages.
- 🛡️ **Robust Error Handling**: Comprehensive error handling with user-friendly tips.
- 🚀 **Smart Detection**: Automatically checks API availability with support for multi-endpoint testing and a retry mechanism
- ⚡ **Caching**: Caches detection results for 5 minutes to avoid redundant checks
- 🎯 **Flexible Selection**: Supports automatic selection of a default provider or interactive manual selection
- 🔧 **Configuration Management**: Full CRUD (Create, Read, Update, Delete) functionality for managing providers
- 📊 **Verbose Logging**: Optional verbose mode to display detailed response times and error messages
- 🛡️ **Robust Error Handling**: Comprehensive error handling with user-friendly tips
- 🔔 **Version Updates**: Automatic reminders to update to the latest version
- 📦 **Configuration Backup**: Support for exporting, importing, backing up and restoring configurations
- 📺 **Optimized Display**: Shows complete API names, intelligently adapts to terminal width
- ✨ **TypeScript Refactor**: v1.4.0 New! Complete TypeScript refactor with type safety and modular architecture
- 📈 **Usage Statistics**: v1.4.0 New! Record usage statistics with export and reset functionality
## 📦 Installation
### System Requirements
- **Node.js**: 18.0.0 or higher
- **npm**: 8.0.0 or higher (or yarn 1.22+)
- **Operating System**: Windows, macOS, Linux
### From NPM (Recommended)

@@ -34,5 +53,8 @@

npm install
npm run build
npm link
```
**Note**: Starting from v1.4.0, the project uses TypeScript and requires building before installation.
## 🚀 Quick Start

@@ -104,2 +126,5 @@

switch-claude -e 1
# View version and check for updates
switch-claude --version
```

@@ -136,2 +161,78 @@

### Configuration Backup & Restore 📦 v1.3.0
```bash
# Export configuration to file (automatically adds timestamp)
switch-claude --export
# Export to specified file
switch-claude --export my-providers.json
# Import configuration from file (replaces existing configuration)
switch-claude --import backup.json
# Import and merge (doesn't overwrite existing providers with same name)
switch-claude --import new-providers.json --merge
# Backup to system directory (~/.switch-claude/backups/)
switch-claude --backup
# View all backups
switch-claude --list-backups
```
**Features**:
- 🔒 Automatically backs up original configuration before importing
- 🔄 Supports merge import to avoid overwriting existing configurations
- 📅 Export files include version and timestamp information
- 🗑️ Automatically cleans up old backups (keeps latest 10)
- 📁 Backups stored in `~/.switch-claude/backups/` directory
### Version Updates 🆕 v1.3.0
```bash
# View current version and check for updates
switch-claude --version
# or
switch-claude -V
# Manually check for updates
switch-claude --check-update
```
**Automatic Update Reminders**:
- 🔔 Automatically checks for new versions on each run (checks every 6 hours)
- 📦 If a new version is available, displays a prominent yellow border notification
- 🚀 Provides convenient update commands
### Usage Statistics 📊 v1.4.0
```bash
# View usage statistics
switch-claude --stats
# Export statistics data to file
switch-claude --export-stats
switch-claude --export-stats my-stats.json
# Reset all statistics data
switch-claude --reset-stats
```
**Statistics Features**:
- 📈 **Command Usage Stats**: Records frequency and timing of each command usage
- 🎯 **Provider Performance Stats**: Tracks success rate and response time for each API provider
- ⏰ **24-Hour Usage Distribution**: Visualizes usage time distribution
- 🐛 **Error Statistics Analysis**: Records and analyzes various error types
- 📤 **Data Export**: Supports exporting statistics data to JSON files
- 🔄 **Data Reset**: Supports clearing all statistics data
**Statistics Data Storage**:
- Statistics data is stored in `~/.switch-claude/stats.json`
- Data is automatically saved, no manual operation required
- Statistics data is preserved during reinstallation or upgrades
### Help Information

@@ -149,10 +250,20 @@

| `--help` | `-h` | Show help information |
| `--refresh` | `-r` | Force cache refresh and re-check all providers |
| `--version` | `-V` | Show version information and check for updates |
| `--refresh` | `-r` | Force cache refresh and re-check all providers |
| `--verbose` | `-v` | Display detailed debugging information |
| `--list` | `-l` | List providers without starting the claude CLI |
| `--list` | `-l` | List providers without starting the claude CLI |
| `--env-only` | `-e` | Only set environment variables, do not start the claude CLI |
| `--add` | | Add a new provider |
| `--remove <number>` | | Remove a provider by its number |
| `--set-default <number>` | | Set a provider as the default by its number |
| `--clear-default` | | Clear the default provider setting |
| `--set-default <number>` | | Set a provider as the default by its number |
| `--clear-default` | | Clear the default provider setting (manual selection required) |
| `--check-update` | | Manually check for version updates |
| `--export [filename]` | | Export configuration to file |
| `--import <filename>` | | Import configuration from file |
| `--merge` | | Use with --import to merge instead of replace |
| `--backup` | | Backup current configuration to system directory |
| `--list-backups` | | List all backup files |
| `--stats` | | Display usage statistics information |
| `--export-stats [filename]` | | Export statistics data to file |
| `--reset-stats` | | Reset all statistics data |

@@ -166,3 +277,7 @@ ## 📁 Configuration Files

├── providers.json # API provider configuration
└── cache.json # Detection result cache
├── cache.json # Detection result cache
├── stats.json # Usage statistics data (v1.4.0+)
└── backups/ # Backup files directory
├── backup-2024-09-22T10-30-00.json
└── backup-2024-09-22T14-15-30.json
```

@@ -189,2 +304,9 @@

### Configuration Security
- **Automatic Creation**: Automatically creates configuration directory and example files on first run
- **User Directory**: Configuration files stored in user home directory to avoid permission issues
- **API Key Protection**: Keys are partially masked when displayed (only first 12 characters shown)
- **Cache Isolation**: Each user's cache files are stored independently
## 🎯 Usage Scenarios

@@ -282,12 +404,52 @@

- **Configuration Isolation**: Config files are stored in `~/.switch-claude/`, keeping them separate for each user.
- **API Key Protection**: Keys are partially masked (only the first 12 characters are shown) in the console output.
- **File Permissions**: On Unix-like systems, it's recommended to set secure file permissions:
### Configuration File Security
- **User Directory Isolation**: Configuration files stored in `~/.switch-claude/`, each user independent
- **Automatic Initialization**: Automatically creates configuration directory and example files on first run
- **API Key Protection**: Keys are partially masked when displayed (only first 12 characters shown)
- **File Permissions**: On Unix systems, it's recommended to set appropriate file permissions:
```bash
chmod 700 ~/.switch-claude # Only owner can access the directory
chmod 700 ~/.switch-claude # Only owner can access directory
chmod 600 ~/.switch-claude/* # Only owner can read/write files
```
- ⚠️ **Rotate API keys** periodically for better security.
- ⚠️ Be **cautious** when sharing your configuration file or screenshots.
### Data Security
- ✅ Configuration files stored in user directory, won't affect other users
- ✅ Cache files stored independently, avoiding conflicts
- ✅ Sensitive information not logged
- ⚠️ **Regularly rotate** API keys for security
- ⚠️ Be **cautious** when sharing configuration files or screenshots
## 🔧 Development
### Code Standards
```bash
# Run ESLint checks
npm run lint
# Auto-fix ESLint issues
npm run lint:fix
# Run Prettier formatting
npm run format
# Check Prettier formatting
npm run format:check
```
### Testing
```bash
# Run all tests
npm test
# Watch mode
npm run test:watch
# Test coverage
npm run test:coverage
```
## 🤝 Contributing

@@ -309,4 +471,8 @@

A: Simply copy the `~/.switch-claude/providers.json` file.
A: There are multiple ways:
- Use `switch-claude --export` to export to a file
- Use `switch-claude --backup` to automatically backup to system directory
- Manually copy the `~/.switch-claude/providers.json` file
### Q: Which platforms are supported?

@@ -318,12 +484,17 @@

A: Use `npm update -g switch-claude-cli` (for global install) or `git pull && npm install` (for source install).
A: The tool will automatically remind you to update! You can also:
- Run `switch-claude --version` to check if there's a new version
- Run `switch-claude --check-update` to manually check for updates
- Use `npm update -g switch-claude-cli` to update to the latest version
### Q: Can I delete the cache file?
A: Yes. Deleting `cache.json` is safe. The tool will simply re-run the availability checks next time.
A: Yes. Deleting `cache.json` won't affect functionality, it will just re-detect on the next run.
---
**Project Repository**: [GitHub](https://github.com/yak33/switch-claude-cli)
**Report an Issue**: [Issues](https://github.com/yak33/switch-claude-cli/issues)
**NPM Package**: [switch-claude-cli](https://www.npmjs.com/package/switch-claude-cli)
**Project Repository**: [GitHub](https://github.com/yak33/switch-claude-cli)
**Report an Issue**: [Issues](https://github.com/yak33/switch-claude-cli/issues)
**NPM Package**: [switch-claude-cli](https://www.npmjs.com/package/switch-claude-cli)
**Changelog**: [CHANGELOG.md](CHANGELOG.md)
# Switch Claude CLI (Japanese)
[![npm version](https://badge.fury.io/js/switch-claude-cli.svg)](https://www.npmjs.com/package/switch-claude-cli)
[![Tests](https://github.com/yak33/switch-claude-cli/actions/workflows/test.yml/badge.svg)](https://github.com/yak33/switch-claude-cli/actions/workflows/test.yml)
[![Coverage](https://img.shields.io/badge/coverage-95.62%25-brightgreen)]()
[![GitHub license](https://img.shields.io/github/license/yak33/switch-claude-cli)](https://github.com/yak33/switch-claude-cli/blob/main/LICENSE)

@@ -10,15 +12,32 @@ [![GitHub issues](https://img.shields.io/github/issues/yak33/switch-claude-cli)](https://github.com/yak33/switch-claude-cli/issues)

## ✨ 主な機能
👉 開発の動機については、私のWeChatパブリックアカウントの記事をご覧ください:[我受够了复制粘贴 Claude Code API ,于是写了个工具,3秒自动切换](https://mp.weixin.qq.com/s/5A5eFc-l6GHBu_qxuLdtIQ)
- 🚀 **スマート検出**: マルチエンドポイントテストとリトライ機構をサポートし、APIの可用性を自動的にチェックします。
- ⚡ **キャッシュ機能**: 検出結果を5分間キャッシュし、冗長なチェックを回避します。
- 🎯 **柔軟な選択**: デフォルトプロバイダーの自動選択、または対話形式での手動選択をサポートします。
- 🔧 **設定管理**: プロバイダーを管理するための完全なCRUD(作成、読み取り、更新、削除)機能。
- 📊 **詳細ログ**: オプションの詳細モードで、応答時間やエラーメッセージを詳しく表示します。
- 🛡️ **堅牢なエラー処理**: ユーザーフレンドリーなヒントを備えた包括的なエラーハンドリング。
## 📋 ドキュメントと更新
- 📄 **[更新履歴](CHANGELOG.md)** - 全バージョンの更新記録を確認
## ✨ 機能特性
- 🚀 **スマート検出**: APIの可用性を自動検出し、マルチエンドポイントテストとリトライ機構をサポート
- ⚡ **キャッシュ機構**: 5分間検出結果をキャッシュし、重複検出を回避
- 🎯 **柔軟な選択**: デフォルトプロバイダーの自動選択または対話式手動選択をサポート
- 🔧 **設定管理**: プロバイダーの完全なCRUD機能
- 📊 **詳細ログ**: オプションの詳細モードで応答時間とエラー情報を表示
- 🛡️ **エラー処理**: 完全なエラー処理とユーザーフレンドリーなヒント情報
- 🔔 **バージョン更新**: 最新バージョンへの自動更新リマインダー
- 📦 **設定バックアップ**: 設定のエクスポート、インポート、バックアップ、復元をサポート
- 📺 **表示最適化**: 完全なAPI名を表示し、ターミナル幅にスマート適応
- ✨ **TypeScriptリファクタ**: v1.4.0新機能!完全TypeScriptリファクタ、型安全、モジュラーアーキテクチャ
- 📈 **使用統計**: v1.4.0新機能!使用統計を記録し、エクスポートとリセット機能をサポート
## 📦 インストール
### NPMからインストール (推奨)
### システム要件
- **Node.js**: 18.0.0 以上
- **npm**: 8.0.0 以上(または yarn 1.22+)
- **OS**: Windows、macOS、Linux
### NPMからインストール(推奨)
```bash

@@ -28,2 +47,3 @@ npm install -g switch-claude-cli

### ソースからインストール

@@ -35,5 +55,8 @@

npm install
npm run build
npm link
```
**注意**:v1.4.0からプロジェクトはTypeScriptを使用するため、インストール前にビルドが必要です。
## 🚀 クイックスタート

@@ -103,4 +126,7 @@

# claudeを起動せず、環境変数のみ設定
# 環境変数のみ設定し、claudeを起動しない
switch-claude -e 1
# バージョンを確認し、更新をチェック
switch-claude --version
```

@@ -137,2 +163,78 @@

### 設定バックアップと復元 📦 v1.3.0
```bash
# 設定をファイルにエクスポート(自動的にタイムスタンプを追加)
switch-claude --export
# 指定ファイルにエクスポート
switch-claude --export my-providers.json
# ファイルから設定をインポート(既存設定を置換)
switch-claude --import backup.json
# インポートしてマージ(同名プロバイダーを上書きしない)
switch-claude --import new-providers.json --merge
# システムディレクトリにバックアップ(~/.switch-claude/backups/)
switch-claude --backup
# 全バックアップを表示
switch-claude --list-backups
```
**機能特徴**:
- 🔒 インポート前に元設定を自動バックアップ
- 🔄 マージインポートをサポートし、既存設定の上書きを回避
- 📅 エクスポートファイルにバージョンと時間情報を含む
- 🗑️ 古いバックアップを自動クリーンアップ(最新10個を保持)
- 📁 バックアップは `~/.switch-claude/backups/` ディレクトリに保存
### バージョン更新 🆕 v1.3.0
```bash
# 現在のバージョンを確認し、更新をチェック
switch-claude --version
# または
switch-claude -V
# 手動で更新をチェック
switch-claude --check-update
```
**自動更新リマインダー**:
- 🔔 実行時に新バージョンを自動チェック(6時間ごと)
- 📦 新バージョンがある場合、目立つ黄色枠で通知
- 🚀 便利な更新コマンドを提供
### 使用統計 📊 v1.4.0
```bash
# 使用統計情報を表示
switch-claude --stats
# 統計データをファイルにエクスポート
switch-claude --export-stats
switch-claude --export-stats my-stats.json
# 全統計データをリセット
switch-claude --reset-stats
```
**統計機能特徴**:
- 📈 **コマンド使用統計**:各コマンドの使用頻度と時間を記録
- 🎯 **プロバイダー性能統計**:各APIプロバイダーの成功率と応答時間を追跡
- ⏰ **24時間使用分布**:使用時間分布を視覚化表示
- 🐛 **エラー統計分析**:各種エラータイプを記録・分析
- 📤 **データエクスポート**:統計データのJSONファイルエクスポートをサポート
- 🔄 **データリセット**:全統計データのクリアをサポート
**統計データ保存**:
- 統計データは `~/.switch-claude/stats.json` に保存
- データは自動保存され、手動操作不要
- 再インストールやアップグレード時も統計データは保持
### ヘルプ情報

@@ -147,22 +249,36 @@

| オプション | エイリアス | 説明 |
| ---------------------- | ---------- | -------------------------------------------------------------- |
| `--help` | `-h` | ヘルプ情報を表示します |
| `--refresh` | `-r` | キャッシュを強制更新し、すべてのプロバイダーを再チェックします |
| `--verbose` | `-v` | 詳細なデバッグ情報を表示します |
| `--list` | `-l` | claude CLIを起動せずにプロバイダーを一覧表示します |
| `--env-only` | `-e` | 環境変数を設定するだけで、claude CLIは起動しません |
| `--add` | | 新しいプロバイダーを追加します |
| `--remove <番号>` | | 番号で指定したプロバイダーを削除します |
| `--set-default <番号>` | | 番号で指定したプロバイダーをデフォルトに設定します |
| `--clear-default` | | デフォルトのプロバイダー設定をクリアします |
| オプション | 短縮形 | 説明 |
| ---------------------------- | ------ | ----------------------------------------- |
| `--help` | `-h` | ヘルプ情報を表示 |
| `--version` | `-V` | バージョン情報を表示し、更新をチェック |
| `--refresh` | `-r` | キャッシュを強制更新し、全プロバイダーを再検出 |
| `--verbose` | `-v` | 詳細なデバッグ情報を表示 |
| `--list` | `-l` | プロバイダーのみ一覧表示し、claudeを起動しない |
| `--env-only` | `-e` | 環境変数のみ設定し、claudeを起動しない |
| `--add` | | 新しいプロバイダーを追加 |
| `--remove <番号>` | | 指定番号のプロバイダーを削除 |
| `--set-default <番号>` | | 指定番号のプロバイダーをデフォルトに設定 |
| `--clear-default` | | デフォルトプロバイダーをクリア(毎回手動選択) |
| `--check-update` | | 手動でバージョン更新をチェック |
| `--export [ファイル名]` | | 設定をファイルにエクスポート |
| `--import <ファイル名>` | | ファイルから設定をインポート |
| `--merge` | | --importと併用し、マージして置換しない |
| `--backup` | | 現在の設定をシステムディレクトリにバックアップ |
| `--list-backups` | | 全バックアップファイルを一覧表示 |
| `--stats` | | 使用統計情報を表示 |
| `--export-stats [ファイル名]` | | 統計データをファイルにエクスポート |
| `--reset-stats` | | 全統計データをリセット |
## 📁 設定ファイル
## 📁 設定ファイルの場所
### ディレクトリ構造
### 設定ディレクトリ構造
```
~/.switch-claude/
├── providers.json # APIプロバイダー設定
└── cache.json # 検出結果のキャッシュ
├── providers.json # API設定ファイル
├── cache.json # 検出結果キャッシュ
├── stats.json # 使用統計データ (v1.4.0+)
└── backups/ # バックアップファイルディレクトリ
├── backup-2024-09-22T10-30-00.json
└── backup-2024-09-22T14-15-30.json
```

@@ -181,6 +297,6 @@

{
"name": "ProviderName", // 必須: 表示名
"baseUrl": "https://api.url", // 必須: APIベースURL
"key": "your-api-key", // 必須: APIキー(様々な形式をサポート)
"default": true // オプション: デフォルトプロバイダーとして設定
"name": "プロバイダー名", // 必須:表示名
"baseUrl": "https://api.url", // 必須:API Base URL
"key": "your-api-key", // 必須:APIキー(各種形式をサポート)
"default": true // オプション:デフォルトプロバイダーかどうか
}

@@ -190,2 +306,9 @@ ]

### 設定セキュリティ
- **自動作成**:初回実行時に設定ディレクトリとサンプルファイルを自動作成
- **ユーザーディレクトリ**:設定ファイルはユーザーホームディレクトリに保存し、権限問題を回避
- **APIキー保護**:表示時に部分的にマスク(最初の12文字のみ表示)
- **キャッシュ分離**:各ユーザーのキャッシュファイルは独立保存
## 🎯 使用シナリオ

@@ -281,14 +404,54 @@

## 🔒 セキュリティに関する注意
## 🔒 セキュリティ注意事項
- **設定の分離**: 設定ファイルは `~/.switch-claude/` に保存され、ユーザーごとに独立しています。
- **APIキーの保護**: コンソール出力では、キーの一部がマスクされます(最初の12文字のみ表示)。
- **ファイル権限**: Unix系システムでは、安全なファイル権限を設定することをお勧めします:
### 設定ファイルセキュリティ
- **ユーザーディレクトリ分離**:設定ファイルは `~/.switch-claude/` に保存され、各ユーザー独立
- **自動初期化**:初回実行時に設定ディレクトリとサンプルファイルを自動作成
- **APIキー保護**:表示時に部分的にマスク(最初の12文字のみ表示)
- **ファイル権限**:Unixシステムでは適切なファイル権限の設定を推奨:
```bash
chmod 700 ~/.switch-claude # 所有者のみがディレクトリにアクセス可能
chmod 600 ~/.switch-claude/* # 所有者のみがファイルを読み書き可能
chmod 700 ~/.switch-claude # 所有者のみディレクトリアクセス可能
chmod 600 ~/.switch-claude/* # 所有者のみファイル読み書き可能
```
- ⚠️ セキュリティ向上のため、**APIキーを定期的にローテーション**してください。
- ⚠️ 設定ファイルやスクリーンショットを共有する際は**注意**してください。
### データセキュリティ
- ✅ 設定ファイルはユーザーディレクトリに保存され、他ユーザーに影響しない
- ✅ キャッシュファイルは独立保存され、競合を回避
- ✅ 機密情報はログに記録されない
- ⚠️ セキュリティ確保のため**APIキーを定期的にローテーション**
- ⚠️ 設定ファイルやスクリーンショットの**共有に注意**
## 🔧 開発
### コード規範
```bash
# ESLintチェックを実行
npm run lint
# ESLint問題を自動修正
npm run lint:fix
# Prettierフォーマットを実行
npm run format
# Prettierフォーマットをチェック
npm run format:check
```
### テスト
```bash
# 全テストを実行
npm test
# ウォッチモード
npm run test:watch
# テストカバレッジ
npm run test:coverage
```
## 🤝 貢献

@@ -300,3 +463,3 @@

[MIT](https://github.com/yak33/switch-claude-cli/blob/main/LICENSE)
MIT License

@@ -311,4 +474,8 @@ ## 🆘 よくある質問 (FAQ)

A: `~/.switch-claude/providers.json` ファイルをコピーするだけです。
A: 複数の方法があります:
- `switch-claude --export` でファイルにエクスポート
- `switch-claude --backup` でシステムディレクトリに自動バックアップ
- 手動で `~/.switch-claude/providers.json` ファイルをコピー
### Q: どのプラットフォームをサポートしていますか?

@@ -320,12 +487,17 @@

A: `npm update -g switch-claude-cli`(グローバルインストールの場合)または `git pull && npm install`(ソースからインストールした場合)を使用してください。
A: ツールが自動的に更新をリマインドします!以下の方法も使用できます:
- `switch-claude --version` で新バージョンがあるかチェック
- `switch-claude --check-update` で手動更新チェック
- `npm update -g switch-claude-cli` で最新バージョンに更新
### Q: キャッシュファイルは削除しても大丈夫ですか?
A: はい、安全です。`cache.json` を削除すると、次回実行時に可用性チェックが再度実行されるだけです。
A: はい。`cache.json` を削除しても機能に影響せず、次回実行時に再検出するだけです。
---
**プロジェクトリポジトリ**: [GitHub](https://github.com/yak33/switch-claude-cli)
**問題を報告**: [Issues](https://github.com/yak33/switch-claude-cli/issues)
**NPMパッケージ**: [switch-claude-cli](https://www.npmjs.com/package/switch-claude-cli)
**プロジェクトアドレス**: [GitHub](https://github.com/yak33/switch-claude-cli)
**問題報告**: [Issues](https://github.com/yak33/switch-claude-cli/issues)
**NPMパッケージ**: [switch-claude-cli](https://www.npmjs.com/package/switch-claude-cli)
**更新履歴**: [CHANGELOG.md](CHANGELOG.md)
+47
-62

@@ -17,6 +17,2 @@ # Switch Claude CLI

- 📄 **[更新日志](CHANGELOG.md)** - 查看所有版本更新记录
- 🚀 **[TypeScript重构分支](https://github.com/yak33/switch-claude-cli/tree/feature/typescript-refactor)** - 全新的模块化架构正在开发中!
- ✨ 完整的TypeScript类型安全
- 🏗️ 模块化架构,更易维护和扩展
- 🧪 更好的测试支持

@@ -31,8 +27,16 @@ ## ✨ 功能特性

- 🛡️ **错误处理**:完善的错误处理和用户友好的提示信息
- 🔔 **版本更新**:v1.3.0 新增!自动提醒用户更新到最新版本
- 📦 **配置备份**:v1.3.0 新增!支持导出、导入、备份和恢复配置
- 📺 **优化显示**:v1.3.3 新增!显示完整API名称,智能适应终端宽度
- 🔔 **版本更新**:自动提醒用户更新到最新版本
- 📦 **配置备份**:支持导出、导入、备份和恢复配置
- 📺 **优化显示**:显示完整API名称,智能适应终端宽度
- ✨ **TypeScript重构**:v1.4.0 新增!完全 TypeScript 重构,类型安全,模块化架构
- 📈 **使用统计**:v1.4.0 新增!记录使用统计,支持导出和重置功能
## 📦 安装
### 系统要求
- **Node.js**: 18.0.0 或更高版本
- **npm**: 8.0.0 或更高版本(或 yarn 1.22+)
- **操作系统**: Windows、macOS、Linux
### 从 NPM 安装(推荐)

@@ -44,36 +48,3 @@

### 🚀 预发布版本 (TypeScript 重构)
我们提供了完全重构的 TypeScript 版本供测试,具有更好的代码结构和类型安全:
```bash
# 安装 Beta 版本(推荐用于测试)
npm install -g switch-claude-cli@beta
# 安装 Alpha 版本(最新开发版本)
npm install -g switch-claude-cli@alpha
```
**Beta 版本特性**:
- ✨ 完全 TypeScript 重构,类型安全
- 🏗️ 模块化架构,更易维护和扩展
- 🧪 完整的单元测试覆盖
- 🐛 修复了原版的一些已知问题
- 🔄 与原版功能完全兼容
- 📦 更好的错误处理和用户体验
**注意事项**:
- Beta 版本仍在测试阶段,建议在非生产环境使用
- 如遇到问题,请在 [GitHub Issues](https://github.com/yak33/switch-claude-cli/issues) 反馈
- 配置文件与稳定版本完全兼容,可以无缝切换
**切换版本**:
```bash
# 切换回稳定版本
npm install -g switch-claude-cli@latest
# 切换到 Beta 版本
npm install -g switch-claude-cli@beta
```
### 从源码安装

@@ -85,5 +56,8 @@

npm install
npm run build
npm link
```
**注意**:从 v1.4.0 开始,项目使用 TypeScript,需要先构建再安装。
## 🚀 快速开始

@@ -237,2 +211,30 @@

### 使用统计 📊 v1.4.0
```bash
# 查看使用统计信息
switch-claude --stats
# 导出统计数据到文件
switch-claude --export-stats
switch-claude --export-stats my-stats.json
# 重置所有统计数据
switch-claude --reset-stats
```
**统计功能特点**:
- 📈 **命令使用统计**:记录每个命令的使用频率和时间
- 🎯 **Provider 性能统计**:跟踪每个 API 提供商的成功率和响应时间
- ⏰ **24小时使用分布**:可视化显示使用时间分布
- 🐛 **错误统计分析**:记录和分析各种错误类型
- 📤 **数据导出**:支持导出统计数据到 JSON 文件
- 🔄 **数据重置**:支持清空所有统计数据
**统计数据存储**:
- 统计数据存储在 `~/.switch-claude/stats.json`
- 数据会自动保存,无需手动操作
- 重装或升级时统计数据会保留
### 帮助信息

@@ -265,2 +267,5 @@

| `--list-backups` | | 列出所有备份文件 |
| `--stats` | | 显示使用统计信息 |
| `--export-stats [文件名]` | | 导出统计数据到文件 |
| `--reset-stats` | | 重置所有统计数据 |

@@ -275,2 +280,3 @@ ## 📁 配置文件位置

├── cache.json # 检测结果缓存
├── stats.json # 使用统计数据 (v1.4.0+)
└── backups/ # 备份文件目录

@@ -491,22 +497,3 @@ ├── backup-2024-09-22T10-30-00.json

### Q: Beta 版本和稳定版本有什么区别?
A: Beta 版本是 TypeScript 重构版本,主要区别:
**Beta 版本优势**:
- ✨ 完全 TypeScript 重构,类型安全
- 🏗️ 更好的代码架构和可维护性
- 🐛 修复了一些已知问题
- 📦 更好的错误处理
**兼容性**:
- 🔄 功能与稳定版本完全兼容
- 📁 配置文件可以无缝切换
- 🔧 命令行参数完全一致
**如何选择**:
- 生产环境:推荐使用稳定版本 `@latest`
- 测试环境:可以尝试 Beta 版本 `@beta`
- 开发环境:可以使用 Alpha 版本 `@alpha`
---

@@ -517,4 +504,2 @@

**NPM 包**: [switch-claude-cli](https://www.npmjs.com/package/switch-claude-cli)
**预发布版本**: [switch-claude-cli@beta](https://www.npmjs.com/package/switch-claude-cli/v/beta) 🚀
**更新日志**: [CHANGELOG.md](CHANGELOG.md)
**TypeScript重构**: [feature/typescript-refactor](https://github.com/yak33/switch-claude-cli/tree/feature/typescript-refactor)
**更新日志**: [CHANGELOG.md](CHANGELOG.md)