ccman 2.1.3 → 2.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +201 -301
- package/README_en.md +294 -0
- package/dist/cli.js +213 -33
- package/dist/cli.js.map +1 -1
- package/dist/config/default-providers.d.ts +34 -0
- package/dist/config/default-providers.d.ts.map +1 -0
- package/dist/config/default-providers.js +96 -0
- package/dist/config/default-providers.js.map +1 -0
- package/dist/config/static-env.d.ts +1 -1
- package/dist/config/static-env.js +1 -1
- package/dist/core/ClaudeConfigManager.d.ts +1 -1
- package/dist/core/ClaudeConfigManager.d.ts.map +1 -1
- package/dist/core/ClaudeConfigManager.js +2 -4
- package/dist/core/ClaudeConfigManager.js.map +1 -1
- package/package.json +24 -3
- package/.editorconfig +0 -15
- package/.env.development +0 -3
- package/.env.production +0 -3
- package/.eslintrc.js +0 -28
- package/.github/workflows/release.yml +0 -99
- package/.prettierrc +0 -10
- package/CLAUDE.md +0 -279
- package/README_zh.md +0 -394
- package/dev-test.sh +0 -40
- package/docs/npm-publish-guide.md +0 -71
- package/docs/release-guide.md +0 -144
- package/docs/scripts-guide.md +0 -221
- package/docs/version-management.md +0 -64
- package/jest.config.js +0 -22
- package/release-temp/README.md +0 -394
- package/release-temp/package.json +0 -61
- package/scripts/build-env.js +0 -75
- package/scripts/modules/check-uncommitted.sh +0 -109
- package/scripts/modules/create-tag.sh +0 -279
- package/scripts/modules/monitor-release.sh +0 -296
- package/scripts/modules/version-bump.sh +0 -262
- package/scripts/publish-local.sh +0 -91
- package/scripts/quick-release.sh +0 -100
- package/scripts/release.sh +0 -430
- package/scripts/smart-release-v3.sh +0 -283
- package/scripts/smart-release.sh +0 -322
- package/src/cli.ts +0 -598
- package/src/commands/lang.ts +0 -105
- package/src/core/CCMConfigManager.ts +0 -259
- package/src/core/ClaudeConfigManager.ts +0 -141
- package/src/i18n/LanguageManager.ts +0 -169
- package/src/i18n/messages.ts +0 -233
- package/src/index.ts +0 -4
- package/src/providers/ProviderManager.ts +0 -412
- package/src/types/index.ts +0 -101
- package/src/utils/env-config.ts +0 -53
- package/src/utils/version.ts +0 -16
- package/tsconfig.json +0 -25
package/CLAUDE.md
DELETED
|
@@ -1,279 +0,0 @@
|
|
|
1
|
-
# CLAUDE.md
|
|
2
|
-
|
|
3
|
-
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
|
4
|
-
|
|
5
|
-
## Project Overview
|
|
6
|
-
|
|
7
|
-
CCM (Claude Code Manager) 是一个 TypeScript 命令行工具,用于管理 Claude Code API 配置。新架构直接修改 `~/.claude/settings.json` 文件实现配置切换,无需 shell 集成。
|
|
8
|
-
|
|
9
|
-
## 新架构设计 (v2.0.0)
|
|
10
|
-
|
|
11
|
-
### 核心理念
|
|
12
|
-
- **直接配置修改**: 直接修改 `~/.claude/settings.json` 实现配置切换
|
|
13
|
-
- **多供应商支持**: 在 `~/.ccman/providers/` 目录存储多个供应商配置
|
|
14
|
-
- **零 shell 依赖**: 无需修改 shell 配置文件,立即生效
|
|
15
|
-
- **安全备份**: 每次切换前自动备份当前配置
|
|
16
|
-
|
|
17
|
-
### 目录结构
|
|
18
|
-
```
|
|
19
|
-
~/.ccman/
|
|
20
|
-
├── config.json # CCM 主配置文件
|
|
21
|
-
├── providers/ # 供应商配置目录
|
|
22
|
-
│ ├── anthropic.json # Anthropic 官方配置
|
|
23
|
-
│ ├── packycode.json # Packycode 配置
|
|
24
|
-
│ └── custom.json # 其他自定义配置
|
|
25
|
-
└── backups/ # 配置备份目录(未来功能)
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
### 项目结构
|
|
29
|
-
```
|
|
30
|
-
src/
|
|
31
|
-
├── types/ # TypeScript 类型定义
|
|
32
|
-
├── core/ # 核心模块
|
|
33
|
-
│ ├── CCMConfigManager.ts # CCM 配置管理
|
|
34
|
-
│ └── ClaudeConfigManager.ts # Claude 配置管理
|
|
35
|
-
├── providers/ # 供应商管理
|
|
36
|
-
│ └── ProviderManager.ts # 供应商业务逻辑
|
|
37
|
-
├── cli.ts # CLI 入口点
|
|
38
|
-
└── index.ts # 模块导出
|
|
39
|
-
```
|
|
40
|
-
|
|
41
|
-
## 配置文件结构
|
|
42
|
-
|
|
43
|
-
### CCM 主配置 (~/.ccman/config.json)
|
|
44
|
-
```json
|
|
45
|
-
{
|
|
46
|
-
"currentProvider": "anthropic",
|
|
47
|
-
"claudeConfigPath": "~/.claude/settings.json",
|
|
48
|
-
"providers": {
|
|
49
|
-
"anthropic": {
|
|
50
|
-
"name": "Anthropic Official",
|
|
51
|
-
"configFile": "anthropic.json",
|
|
52
|
-
"lastUsed": "2025-01-15T10:30:00.000Z"
|
|
53
|
-
}
|
|
54
|
-
},
|
|
55
|
-
"metadata": {
|
|
56
|
-
"version": "2.0.0",
|
|
57
|
-
"createdAt": "2025-01-10T08:00:00.000Z",
|
|
58
|
-
"updatedAt": "2025-01-15T10:30:00.000Z"
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
### 供应商配置 (~/.ccman/providers/anthropic.json)
|
|
64
|
-
```json
|
|
65
|
-
{
|
|
66
|
-
"name": "Anthropic Official",
|
|
67
|
-
"description": "Official Anthropic API",
|
|
68
|
-
"config": {
|
|
69
|
-
"env": {
|
|
70
|
-
"ANTHROPIC_AUTH_TOKEN": "sk-xxx",
|
|
71
|
-
"ANTHROPIC_BASE_URL": "https://api.anthropic.com",
|
|
72
|
-
"CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": 1,
|
|
73
|
-
"CLAUDE_CODE_MAX_OUTPUT_TOKENS": 32000
|
|
74
|
-
},
|
|
75
|
-
"permissions": {
|
|
76
|
-
"allow": [],
|
|
77
|
-
"deny": []
|
|
78
|
-
},
|
|
79
|
-
"apiKeyHelper": "echo 'sk-xxx'"
|
|
80
|
-
},
|
|
81
|
-
"metadata": {
|
|
82
|
-
"createdAt": "2025-01-10T08:00:00.000Z",
|
|
83
|
-
"updatedAt": "2025-01-15T10:30:00.000Z",
|
|
84
|
-
"usageCount": 25
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
```
|
|
88
|
-
|
|
89
|
-
## 命令使用
|
|
90
|
-
|
|
91
|
-
### 开发命令
|
|
92
|
-
```bash
|
|
93
|
-
npm run build # 编译 TypeScript
|
|
94
|
-
npm run dev # 开发模式运行
|
|
95
|
-
npm start # 运行编译后的程序
|
|
96
|
-
npm run clean # 清理构建文件
|
|
97
|
-
npm run lint # 代码检查
|
|
98
|
-
```
|
|
99
|
-
|
|
100
|
-
### 基础使用(精简版)
|
|
101
|
-
```bash
|
|
102
|
-
# 核心命令(6个)
|
|
103
|
-
ccman # 交互式菜单(默认入口)
|
|
104
|
-
ccman ls # 智能列表显示(合并原status信息)
|
|
105
|
-
ccman ls --current # 显示当前供应商详情(替代原current)
|
|
106
|
-
ccman ls --brief # 简洁模式显示
|
|
107
|
-
ccman add <id> <name> <url> [key] # 添加供应商配置
|
|
108
|
-
ccman use <id> # 切换到指定供应商
|
|
109
|
-
ccman rm <id> # 删除供应商配置(别名:remove)
|
|
110
|
-
ccman clear # 清除所有配置(别名:reset)
|
|
111
|
-
```
|
|
112
|
-
|
|
113
|
-
### 命令详解
|
|
114
|
-
```bash
|
|
115
|
-
# 默认交互模式 - 最直观的入口
|
|
116
|
-
ccman # 进入菜单,包含所有操作(添加/切换/更新/删除/状态)
|
|
117
|
-
|
|
118
|
-
# 智能列表命令 - 整合了多种信息显示
|
|
119
|
-
ccman ls # 显示所有供应商 + 系统状态信息
|
|
120
|
-
ccman ls --current # 仅显示当前供应商的详细信息
|
|
121
|
-
ccman ls --brief # 简洁模式,仅显示供应商名称和ID
|
|
122
|
-
|
|
123
|
-
# 快速操作命令 - 适合脚本和熟练用户
|
|
124
|
-
ccman add <id> <name> <url> [key] -d "description" # 添加时指定描述
|
|
125
|
-
ccman use <id> # 快速切换
|
|
126
|
-
ccman rm <id> # 快速删除
|
|
127
|
-
ccman clear # 重置所有配置
|
|
128
|
-
```
|
|
129
|
-
|
|
130
|
-
## 核心类型定义
|
|
131
|
-
|
|
132
|
-
### ClaudeSettings
|
|
133
|
-
Claude settings.json 的标准结构
|
|
134
|
-
```typescript
|
|
135
|
-
interface ClaudeSettings {
|
|
136
|
-
env: {
|
|
137
|
-
ANTHROPIC_AUTH_TOKEN: string;
|
|
138
|
-
ANTHROPIC_BASE_URL: string;
|
|
139
|
-
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC?: number;
|
|
140
|
-
CLAUDE_CODE_MAX_OUTPUT_TOKENS?: number;
|
|
141
|
-
};
|
|
142
|
-
permissions: { allow: string[]; deny: string[]; };
|
|
143
|
-
apiKeyHelper: string;
|
|
144
|
-
}
|
|
145
|
-
```
|
|
146
|
-
|
|
147
|
-
### ProviderConfig
|
|
148
|
-
供应商配置结构
|
|
149
|
-
```typescript
|
|
150
|
-
interface ProviderConfig {
|
|
151
|
-
name: string;
|
|
152
|
-
description: string;
|
|
153
|
-
config: ClaudeSettings;
|
|
154
|
-
metadata: {
|
|
155
|
-
createdAt: string;
|
|
156
|
-
updatedAt: string;
|
|
157
|
-
usageCount: number;
|
|
158
|
-
};
|
|
159
|
-
}
|
|
160
|
-
```
|
|
161
|
-
|
|
162
|
-
## 关键特性
|
|
163
|
-
|
|
164
|
-
### 1. 直接配置修改
|
|
165
|
-
- 直接读写 `~/.claude/settings.json`
|
|
166
|
-
- **选择性覆盖**: 只修改CCM管理的key,保留用户其他配置
|
|
167
|
-
- 无需重启终端或 source 任何文件
|
|
168
|
-
- 配置切换立即生效
|
|
169
|
-
|
|
170
|
-
#### CCM管理的配置项
|
|
171
|
-
```json
|
|
172
|
-
{
|
|
173
|
-
"env": {
|
|
174
|
-
"ANTHROPIC_AUTH_TOKEN": "...", // ✅ CCM管理
|
|
175
|
-
"ANTHROPIC_BASE_URL": "...", // ✅ CCM管理
|
|
176
|
-
"CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": 1, // ✅ CCM管理
|
|
177
|
-
"CLAUDE_CODE_MAX_OUTPUT_TOKENS": 32000 // ✅ CCM管理
|
|
178
|
-
},
|
|
179
|
-
"permissions": {
|
|
180
|
-
"allow": [], // ✅ CCM管理
|
|
181
|
-
"deny": [] // ✅ CCM管理
|
|
182
|
-
},
|
|
183
|
-
"apiKeyHelper": "..." // ✅ CCM管理
|
|
184
|
-
}
|
|
185
|
-
```
|
|
186
|
-
|
|
187
|
-
#### 用户配置保护
|
|
188
|
-
- 保留所有其他用户自定义配置项
|
|
189
|
-
- 保留 `env` 中其他环境变量
|
|
190
|
-
- 保留 `permissions` 中其他权限设置
|
|
191
|
-
- 保留所有非CCM管理的顶级配置项
|
|
192
|
-
|
|
193
|
-
### 2. 自动备份机制
|
|
194
|
-
- 每次切换前自动备份当前配置
|
|
195
|
-
- 备份文件带时间戳,便于恢复
|
|
196
|
-
- 防止配置丢失和冲突
|
|
197
|
-
|
|
198
|
-
### 3. 交互式界面
|
|
199
|
-
- 使用 inquirer.js 提供友好的交互体验
|
|
200
|
-
- 彩色输出和进度反馈
|
|
201
|
-
- 确认提示防止误操作
|
|
202
|
-
|
|
203
|
-
### 4. 类型安全
|
|
204
|
-
- 完整的 TypeScript 类型定义
|
|
205
|
-
- 编译时错误检查
|
|
206
|
-
- 严格的接口约束
|
|
207
|
-
|
|
208
|
-
## 安全注意事项
|
|
209
|
-
|
|
210
|
-
### 🚨 开发时的重要限制
|
|
211
|
-
|
|
212
|
-
**绝对禁止修改以下文件(会导致系统不可用):**
|
|
213
|
-
- `~/.ccman/config.json` - 现有历史配置文件
|
|
214
|
-
- `~/.claude/settings.json` - Claude Code 配置文件
|
|
215
|
-
|
|
216
|
-
**开发时的安全做法:**
|
|
217
|
-
1. **使用测试目录**: 开发时使用 `~/.ccman-dev/` 或其他测试目录
|
|
218
|
-
2. **配置隔离**: 通过环境变量指定不同的配置路径
|
|
219
|
-
3. **备份验证**: 修改前确保备份机制正常工作
|
|
220
|
-
4. **分步测试**: 先测试读取,再测试写入功能
|
|
221
|
-
|
|
222
|
-
### 开发环境配置
|
|
223
|
-
```bash
|
|
224
|
-
# 设置开发环境配置路径
|
|
225
|
-
export CCM_CONFIG_DIR="~/.ccman-dev"
|
|
226
|
-
export CLAUDE_CONFIG_PATH="~/.claude/settings-dev.json"
|
|
227
|
-
|
|
228
|
-
# 或在代码中使用环境变量
|
|
229
|
-
const configDir = process.env.CCM_CONFIG_DIR || path.join(os.homedir(), '.ccman');
|
|
230
|
-
```
|
|
231
|
-
|
|
232
|
-
## 构建和部署
|
|
233
|
-
|
|
234
|
-
### TypeScript 编译
|
|
235
|
-
- 目标: ES2020, CommonJS 模块
|
|
236
|
-
- 输出: `dist/` 目录,包含源映射
|
|
237
|
-
- CLI 入口: `dist/cli.js` 带正确的 shebang
|
|
238
|
-
|
|
239
|
-
### 依赖管理
|
|
240
|
-
- 使用 pnpm 管理依赖
|
|
241
|
-
- 包含所有必要的类型声明
|
|
242
|
-
- 严格的版本控制
|
|
243
|
-
|
|
244
|
-
## 测试方法
|
|
245
|
-
|
|
246
|
-
### 功能测试
|
|
247
|
-
- CLI 命令交互测试
|
|
248
|
-
- 文件系统操作验证
|
|
249
|
-
- 配置切换流程测试
|
|
250
|
-
- 错误处理验证
|
|
251
|
-
|
|
252
|
-
### 安全测试
|
|
253
|
-
- 备份机制验证
|
|
254
|
-
- 权限检查
|
|
255
|
-
- 配置文件完整性
|
|
256
|
-
- 回滚功能测试
|
|
257
|
-
|
|
258
|
-
## 未来改进
|
|
259
|
-
|
|
260
|
-
### 计划功能
|
|
261
|
-
- 配置模板和预设
|
|
262
|
-
- 批量配置管理
|
|
263
|
-
- 网络连接测试
|
|
264
|
-
- 配置迁移工具
|
|
265
|
-
- 增强的错误诊断
|
|
266
|
-
|
|
267
|
-
### 架构优化
|
|
268
|
-
- 插件化供应商支持
|
|
269
|
-
- 配置验证和修复
|
|
270
|
-
- 更好的备份策略
|
|
271
|
-
- 性能优化
|
|
272
|
-
|
|
273
|
-
## 开发注意事项
|
|
274
|
-
|
|
275
|
-
- **测试优先**: 修改任何配置管理逻辑前先测试
|
|
276
|
-
- **备份验证**: 确保每次操作都有可靠的备份
|
|
277
|
-
- **用户体验**: 提供清晰的反馈和错误信息
|
|
278
|
-
- **向后兼容**: 考虑现有用户的配置迁移
|
|
279
|
-
- **安全第一**: 绝不能破坏用户的现有配置
|
package/README_zh.md
DELETED
|
@@ -1,394 +0,0 @@
|
|
|
1
|
-
# CCM - Claude Code Manager v2.0
|
|
2
|
-
|
|
3
|
-
基于 TypeScript 的命令行工具,通过**直接 settings.json 集成**和**智能语言支持**管理多个 Claude Code API 供应商配置。
|
|
4
|
-
|
|
5
|
-
> [English Documentation](./README.md) | **中文文档**
|
|
6
|
-
|
|
7
|
-
## ✨ v2.0 新特性
|
|
8
|
-
|
|
9
|
-
🌍 **智能语言支持** - 自动检测系统语言或引导首次运行设置
|
|
10
|
-
🔧 **直接 Claude 集成** - 直接修改 `~/.claude/settings.json`,无需 shell 变量
|
|
11
|
-
📁 **供应商管理** - 存储和切换多个 API 供应商配置
|
|
12
|
-
🎯 **交互式菜单系统** - 支持连续操作的导航选项
|
|
13
|
-
⚡ **零配置体验** - 开箱即用的智能默认设置
|
|
14
|
-
|
|
15
|
-
## 🚀 快速开始
|
|
16
|
-
|
|
17
|
-
### 安装
|
|
18
|
-
|
|
19
|
-
```bash
|
|
20
|
-
# 从 NPM 安装
|
|
21
|
-
npm install -g ccman
|
|
22
|
-
|
|
23
|
-
# 或者开发环境安装依赖
|
|
24
|
-
npm install && npm run build
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
### 首次运行体验
|
|
28
|
-
|
|
29
|
-
```bash
|
|
30
|
-
# 启动 CCM(首次运行)
|
|
31
|
-
ccman
|
|
32
|
-
|
|
33
|
-
🌍 Welcome to CCM! / 欢迎使用 CCM!
|
|
34
|
-
|
|
35
|
-
This is your first time running CCM.
|
|
36
|
-
这是您首次运行 CCM。
|
|
37
|
-
|
|
38
|
-
? Please choose your preferred language:
|
|
39
|
-
? 请选择您偏好的语言:
|
|
40
|
-
❯ 🇨🇳 中文 (Chinese)
|
|
41
|
-
🇺🇸 English
|
|
42
|
-
🌐 基于系统自动检测 (Auto-detect based on system)
|
|
43
|
-
|
|
44
|
-
✓ 语言已设置为中文
|
|
45
|
-
✓ 您可以稍后使用以下命令更改:ccman lang set <zh|en|auto>
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
### 基本用法
|
|
49
|
-
|
|
50
|
-
```bash
|
|
51
|
-
# 交互式主菜单(推荐)
|
|
52
|
-
ccman
|
|
53
|
-
|
|
54
|
-
# 列出所有供应商
|
|
55
|
-
ccman ls
|
|
56
|
-
|
|
57
|
-
# 直接添加供应商
|
|
58
|
-
ccman add <id> <name> <baseUrl> [apiKey]
|
|
59
|
-
|
|
60
|
-
# 切换供应商
|
|
61
|
-
ccman use <id>
|
|
62
|
-
|
|
63
|
-
# 删除供应商
|
|
64
|
-
ccman rm <id>
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
## 🌐 语言管理
|
|
68
|
-
|
|
69
|
-
### 语言命令
|
|
70
|
-
```bash
|
|
71
|
-
ccman lang # 显示当前语言设置
|
|
72
|
-
ccman lang set zh # 设置为中文
|
|
73
|
-
ccman lang set en # 设置为英文
|
|
74
|
-
ccman lang set auto # 基于系统自动检测
|
|
75
|
-
ccman lang reset # 重置为首次运行状态
|
|
76
|
-
```
|
|
77
|
-
|
|
78
|
-
### 支持的语言
|
|
79
|
-
- **中文 (zh)** - 完整中文界面
|
|
80
|
-
- **英文 (en)** - Full English interface
|
|
81
|
-
- **自动检测** - 基于系统 `LANG` 环境变量
|
|
82
|
-
|
|
83
|
-
### 语言检测逻辑
|
|
84
|
-
- 英文环境 (`en-*`) → 英文界面
|
|
85
|
-
- 其他环境(包括 `zh-*`、未设置等)→ 中文界面
|
|
86
|
-
- 随时可手动覆盖
|
|
87
|
-
|
|
88
|
-
## 📖 命令参考
|
|
89
|
-
|
|
90
|
-
### 核心供应商管理
|
|
91
|
-
```bash
|
|
92
|
-
ccman # 交互式菜单(默认)
|
|
93
|
-
ccman add <id> <name> <url> [key] # 添加新供应商
|
|
94
|
-
ccman use <id> # 切换到供应商
|
|
95
|
-
ccman ls # 列出所有供应商
|
|
96
|
-
ccman ls --current # 显示当前供应商详情
|
|
97
|
-
ccman ls --brief # 简洁供应商列表
|
|
98
|
-
ccman rm <id> # 删除供应商
|
|
99
|
-
ccman clear # 删除所有供应商(危险操作)
|
|
100
|
-
```
|
|
101
|
-
|
|
102
|
-
### 语言管理
|
|
103
|
-
```bash
|
|
104
|
-
ccman lang # 显示当前语言
|
|
105
|
-
ccman lang set <zh|en|auto> # 设置语言偏好
|
|
106
|
-
ccman lang reset # 重置为首次运行状态
|
|
107
|
-
```
|
|
108
|
-
|
|
109
|
-
## 🎯 交互式体验
|
|
110
|
-
|
|
111
|
-
### 主菜单导航
|
|
112
|
-
```bash
|
|
113
|
-
$ ccman
|
|
114
|
-
|
|
115
|
-
? 您想要执行什么操作?
|
|
116
|
-
❯ 切换供应商
|
|
117
|
-
添加新供应商
|
|
118
|
-
更新供应商
|
|
119
|
-
删除供应商
|
|
120
|
-
显示详细状态
|
|
121
|
-
退出
|
|
122
|
-
|
|
123
|
-
# 每次操作后:
|
|
124
|
-
? 是否要执行其他操作? (Y/n)
|
|
125
|
-
```
|
|
126
|
-
|
|
127
|
-
### 供应商添加流程
|
|
128
|
-
```bash
|
|
129
|
-
$ ccman add
|
|
130
|
-
|
|
131
|
-
? 供应商ID(唯一标识符): my-provider
|
|
132
|
-
? 供应商名称: 我的自定义API
|
|
133
|
-
? 描述: 我的自定义Claude API
|
|
134
|
-
? 基础URL: https://api.mycustom.com
|
|
135
|
-
? API密钥: ****************
|
|
136
|
-
|
|
137
|
-
✓ 供应商添加成功
|
|
138
|
-
? 将"我的自定义API"设为当前供应商? (Y/n)
|
|
139
|
-
✓ 供应商切换成功
|
|
140
|
-
Claude Code 配置已成功更新!
|
|
141
|
-
```
|
|
142
|
-
|
|
143
|
-
## 🔧 架构概览
|
|
144
|
-
|
|
145
|
-
### 直接 Claude 集成
|
|
146
|
-
CCM v2.0 直接修改您的 Claude Code 设置文件:
|
|
147
|
-
|
|
148
|
-
**修改前(CCM 管理)**:
|
|
149
|
-
```json
|
|
150
|
-
{
|
|
151
|
-
"env": {
|
|
152
|
-
"ANTHROPIC_AUTH_TOKEN": "old-token",
|
|
153
|
-
"ANTHROPIC_BASE_URL": "https://old-api.com"
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
```
|
|
157
|
-
|
|
158
|
-
**修改后(CCM 更新)**:
|
|
159
|
-
```json
|
|
160
|
-
{
|
|
161
|
-
"env": {
|
|
162
|
-
"ANTHROPIC_AUTH_TOKEN": "new-token",
|
|
163
|
-
"ANTHROPIC_BASE_URL": "https://new-api.com",
|
|
164
|
-
"CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": 1
|
|
165
|
-
},
|
|
166
|
-
"permissions": {
|
|
167
|
-
"allow": [],
|
|
168
|
-
"deny": []
|
|
169
|
-
},
|
|
170
|
-
"apiKeyHelper": "echo 'new-token'"
|
|
171
|
-
}
|
|
172
|
-
```
|
|
173
|
-
|
|
174
|
-
### 供应商存储结构
|
|
175
|
-
供应商存储在 `~/.ccman/providers/`:
|
|
176
|
-
|
|
177
|
-
```
|
|
178
|
-
~/.ccman/
|
|
179
|
-
├── config.json # CCM 主配置
|
|
180
|
-
├── providers/ # 单独的供应商配置
|
|
181
|
-
│ ├── anthropic.json
|
|
182
|
-
│ ├── my-provider.json
|
|
183
|
-
│ └── staging.json
|
|
184
|
-
```
|
|
185
|
-
|
|
186
|
-
### 配置合并
|
|
187
|
-
CCM 只更新 Claude 相关的键,保留您的现有设置:
|
|
188
|
-
- ✅ 保留:`mcpServers`、`model`、`customUserConfig` 等
|
|
189
|
-
- 🔄 更新:`env.ANTHROPIC_*`、`permissions`、`apiKeyHelper`
|
|
190
|
-
|
|
191
|
-
## 📊 供应商配置
|
|
192
|
-
|
|
193
|
-
### 供应商结构
|
|
194
|
-
```json
|
|
195
|
-
{
|
|
196
|
-
"name": "Anthropic Official",
|
|
197
|
-
"description": "Anthropic 官方 API 配置",
|
|
198
|
-
"config": {
|
|
199
|
-
"env": {
|
|
200
|
-
"ANTHROPIC_AUTH_TOKEN": "your-token",
|
|
201
|
-
"ANTHROPIC_BASE_URL": "https://api.anthropic.com",
|
|
202
|
-
"CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": 1
|
|
203
|
-
},
|
|
204
|
-
"permissions": { "allow": [], "deny": [] },
|
|
205
|
-
"apiKeyHelper": "echo 'your-token'"
|
|
206
|
-
},
|
|
207
|
-
"metadata": {
|
|
208
|
-
"createdAt": "2025-01-15T10:30:00.000Z",
|
|
209
|
-
"updatedAt": "2025-01-15T10:30:00.000Z",
|
|
210
|
-
"usageCount": 5
|
|
211
|
-
}
|
|
212
|
-
}
|
|
213
|
-
```
|
|
214
|
-
|
|
215
|
-
### 主配置
|
|
216
|
-
```json
|
|
217
|
-
{
|
|
218
|
-
"currentProvider": "anthropic",
|
|
219
|
-
"claudeConfigPath": "/Users/user/.claude/settings.json",
|
|
220
|
-
"providers": {
|
|
221
|
-
"anthropic": {
|
|
222
|
-
"name": "Anthropic Official",
|
|
223
|
-
"configFile": "anthropic.json",
|
|
224
|
-
"lastUsed": "2025-01-15T10:30:00.000Z"
|
|
225
|
-
}
|
|
226
|
-
},
|
|
227
|
-
"settings": {
|
|
228
|
-
"language": "zh",
|
|
229
|
-
"firstRun": false
|
|
230
|
-
},
|
|
231
|
-
"metadata": {
|
|
232
|
-
"version": "2.0.0",
|
|
233
|
-
"createdAt": "2025-01-15T10:00:00.000Z",
|
|
234
|
-
"updatedAt": "2025-01-15T10:30:00.000Z"
|
|
235
|
-
}
|
|
236
|
-
}
|
|
237
|
-
```
|
|
238
|
-
|
|
239
|
-
## 💡 使用示例
|
|
240
|
-
|
|
241
|
-
### 完整首次设置
|
|
242
|
-
```bash
|
|
243
|
-
# 首次运行 - 语言选择
|
|
244
|
-
ccman
|
|
245
|
-
# → 语言选择向导
|
|
246
|
-
# → 未找到供应商,引导创建
|
|
247
|
-
# → 自动更新 Claude 设置
|
|
248
|
-
|
|
249
|
-
# 添加其他供应商
|
|
250
|
-
ccman add staging "测试API" https://staging-api.com
|
|
251
|
-
ccman add dev "开发环境" https://dev-api.com
|
|
252
|
-
|
|
253
|
-
# 在供应商间切换
|
|
254
|
-
ccman use staging
|
|
255
|
-
ccman use dev
|
|
256
|
-
ccman use anthropic
|
|
257
|
-
```
|
|
258
|
-
|
|
259
|
-
### 多供应商工作流
|
|
260
|
-
```bash
|
|
261
|
-
# 列出所有供应商的详情
|
|
262
|
-
ccman ls
|
|
263
|
-
# * Anthropic Official (anthropic) - https://api.anthropic.com
|
|
264
|
-
# 测试API (staging) - https://staging-api.com
|
|
265
|
-
# 开发环境 (dev) - https://dev-api.com
|
|
266
|
-
|
|
267
|
-
# 切换到测试环境
|
|
268
|
-
ccman use staging
|
|
269
|
-
# ✓ 供应商切换成功
|
|
270
|
-
# ✓ Claude Code 配置已成功更新!
|
|
271
|
-
|
|
272
|
-
# 检查当前供应商
|
|
273
|
-
ccman ls --current
|
|
274
|
-
# 当前供应商: 测试API (staging)
|
|
275
|
-
# 基础URL: https://staging-api.com
|
|
276
|
-
# 使用次数: 3 次
|
|
277
|
-
# 最后更新: 2025-01-15 10:30:15
|
|
278
|
-
```
|
|
279
|
-
|
|
280
|
-
### 语言切换
|
|
281
|
-
```bash
|
|
282
|
-
# 检查当前语言
|
|
283
|
-
ccman lang
|
|
284
|
-
# 当前语言: 中文 (Chinese)
|
|
285
|
-
|
|
286
|
-
# 切换到英文
|
|
287
|
-
ccman lang set en
|
|
288
|
-
# ✓ 语言切换成功
|
|
289
|
-
# Current language: English
|
|
290
|
-
|
|
291
|
-
# 设置自动检测
|
|
292
|
-
ccman lang set auto
|
|
293
|
-
# ✓ 语言切换成功
|
|
294
|
-
# 当前语言: 自动检测 (Auto-detect)
|
|
295
|
-
# 自动检测结果: English
|
|
296
|
-
```
|
|
297
|
-
|
|
298
|
-
## 🛠️ 开发设置
|
|
299
|
-
|
|
300
|
-
### 开发环境
|
|
301
|
-
CCM 支持隔离的开发环境:
|
|
302
|
-
|
|
303
|
-
```bash
|
|
304
|
-
# 设置开发路径
|
|
305
|
-
export CCM_CONFIG_DIR=".ccman-dev"
|
|
306
|
-
export CLAUDE_CONFIG_PATH="$HOME/.claude/settings-dev.json"
|
|
307
|
-
|
|
308
|
-
# 使用开发模式
|
|
309
|
-
npm run dev
|
|
310
|
-
|
|
311
|
-
# 生产环境构建
|
|
312
|
-
npm run build
|
|
313
|
-
|
|
314
|
-
# 测试构建版本
|
|
315
|
-
npm start
|
|
316
|
-
```
|
|
317
|
-
|
|
318
|
-
### 开发命令
|
|
319
|
-
```bash
|
|
320
|
-
npm run dev # 使用 tsx 的开发模式
|
|
321
|
-
npm run build # TypeScript 编译
|
|
322
|
-
npm run start # 运行构建后的 CLI
|
|
323
|
-
npm run clean # 删除 dist/ 目录
|
|
324
|
-
npm run lint # ESLint TypeScript 文件检查
|
|
325
|
-
npm test # 运行测试(passWithNoTests)
|
|
326
|
-
```
|
|
327
|
-
|
|
328
|
-
## 🔍 故障排除
|
|
329
|
-
|
|
330
|
-
### 供应商问题
|
|
331
|
-
```bash
|
|
332
|
-
# 供应商不工作?
|
|
333
|
-
ccman ls --current # 检查当前供应商详情
|
|
334
|
-
ccman use <供应商id> # 重新应用供应商配置
|
|
335
|
-
|
|
336
|
-
# 设置未应用?
|
|
337
|
-
# 检查 ~/.claude/settings.json 的更新
|
|
338
|
-
cat ~/.claude/settings.json | grep ANTHROPIC
|
|
339
|
-
```
|
|
340
|
-
|
|
341
|
-
### 语言问题
|
|
342
|
-
```bash
|
|
343
|
-
# 语言未切换?
|
|
344
|
-
ccman lang # 检查当前设置
|
|
345
|
-
ccman lang set zh # 强制中文
|
|
346
|
-
ccman lang set en # 强制英文
|
|
347
|
-
|
|
348
|
-
# 首次运行问题?
|
|
349
|
-
ccman lang reset # 重置为首次运行状态
|
|
350
|
-
ccman # 重新启动进行语言选择
|
|
351
|
-
```
|
|
352
|
-
|
|
353
|
-
### 配置问题
|
|
354
|
-
```bash
|
|
355
|
-
# 配置损坏?
|
|
356
|
-
ccman clear # 删除所有(需确认)
|
|
357
|
-
ccman # 重新开始
|
|
358
|
-
|
|
359
|
-
# 开发环境隔离
|
|
360
|
-
export CCM_CONFIG_DIR=".ccman-dev" # 独立开发配置
|
|
361
|
-
```
|
|
362
|
-
|
|
363
|
-
## 📋 要求
|
|
364
|
-
|
|
365
|
-
- **Node.js** >= 16.0.0
|
|
366
|
-
- **Claude Code** 已安装且支持 settings.json
|
|
367
|
-
- **操作系统**: Linux, macOS, Windows (WSL)
|
|
368
|
-
|
|
369
|
-
## 📄 许可证
|
|
370
|
-
|
|
371
|
-
MIT 许可证 - 详见 LICENSE 文件。
|
|
372
|
-
|
|
373
|
-
---
|
|
374
|
-
|
|
375
|
-
## 🚀 从 v1.x 迁移
|
|
376
|
-
|
|
377
|
-
CCM v2.0 使用完全不同的架构:
|
|
378
|
-
|
|
379
|
-
### v1.x(Shell 集成)
|
|
380
|
-
- 修改 shell 配置文件
|
|
381
|
-
- 使用环境变量
|
|
382
|
-
- 复杂的 shell 集成
|
|
383
|
-
|
|
384
|
-
### v2.0(直接集成)
|
|
385
|
-
- 直接修改 `~/.claude/settings.json`
|
|
386
|
-
- 基于供应商的配置
|
|
387
|
-
- 语言支持
|
|
388
|
-
- 简化、更安全的方法
|
|
389
|
-
|
|
390
|
-
**迁移**:v1.x 和 v2.x 不兼容。如果升级,请使用 `ccman clear` 重新开始。
|
|
391
|
-
|
|
392
|
-
---
|
|
393
|
-
|
|
394
|
-
*CCM v2.0 - 智能、多语言、无缝的 Claude Code 供应商管理。*
|
package/dev-test.sh
DELETED
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
|
|
3
|
-
# CCM 开发测试脚本
|
|
4
|
-
# 设置开发环境变量,避免影响生产配置
|
|
5
|
-
|
|
6
|
-
echo "🔧 Setting up CCM development environment..."
|
|
7
|
-
|
|
8
|
-
# 设置开发环境变量
|
|
9
|
-
export CCM_CONFIG_DIR=".ccman-dev"
|
|
10
|
-
export CLAUDE_CONFIG_PATH="$HOME/.claude/settings-dev.json"
|
|
11
|
-
|
|
12
|
-
echo " CCM Config Directory: $HOME/$CCM_CONFIG_DIR"
|
|
13
|
-
echo " Claude Config Path: $CLAUDE_CONFIG_PATH"
|
|
14
|
-
echo
|
|
15
|
-
|
|
16
|
-
# 创建开发用的 Claude 配置文件(如果不存在)
|
|
17
|
-
if [ ! -f "$CLAUDE_CONFIG_PATH" ]; then
|
|
18
|
-
echo "📝 Creating development Claude settings file..."
|
|
19
|
-
mkdir -p "$(dirname "$CLAUDE_CONFIG_PATH")"
|
|
20
|
-
cat > "$CLAUDE_CONFIG_PATH" << 'EOF'
|
|
21
|
-
{
|
|
22
|
-
"env": {
|
|
23
|
-
"ANTHROPIC_AUTH_TOKEN": "",
|
|
24
|
-
"ANTHROPIC_BASE_URL": "https://api.anthropic.com"
|
|
25
|
-
},
|
|
26
|
-
"permissions": {
|
|
27
|
-
"allow": [],
|
|
28
|
-
"deny": []
|
|
29
|
-
},
|
|
30
|
-
"apiKeyHelper": "echo ''"
|
|
31
|
-
}
|
|
32
|
-
EOF
|
|
33
|
-
echo " Created: $CLAUDE_CONFIG_PATH"
|
|
34
|
-
echo
|
|
35
|
-
fi
|
|
36
|
-
|
|
37
|
-
# 执行 CCM 命令
|
|
38
|
-
echo "🚀 Running CCM command: $@"
|
|
39
|
-
echo
|
|
40
|
-
npm run dev -- "$@"
|