switch-claude-cli
Advanced tools
+154
-15
@@ -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 +0,1 @@ | ||
| {"version":3,"file":"platform-utils.js","sourceRoot":"","sources":["../../src/utils/platform-utils.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"platform-utils.js","sourceRoot":"","sources":["../../src/utils/platform-utils.ts"],"names":[],"mappings":"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"} |
+1
-1
| { | ||
| "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", |
+194
-23
| # Switch Claude CLI | ||
| [](https://www.npmjs.com/package/switch-claude-cli) | ||
| [](https://github.com/yak33/switch-claude-cli/actions/workflows/test.yml) | ||
| []() | ||
| [](https://github.com/yak33/switch-claude-cli/blob/main/LICENSE) | ||
@@ -10,13 +12,30 @@ [](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) |
+215
-43
| # Switch Claude CLI (Japanese) | ||
| [](https://www.npmjs.com/package/switch-claude-cli) | ||
| [](https://github.com/yak33/switch-claude-cli/actions/workflows/test.yml) | ||
| []() | ||
| [](https://github.com/yak33/switch-claude-cli/blob/main/LICENSE) | ||
@@ -10,15 +12,32 @@ [](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) |
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
320520
6.14%0
-100%497
-2.93%