hop-claude 1.0.0
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/CHANGELOG.md +316 -0
- package/README.md +574 -0
- package/SECURITY.md +280 -0
- package/bin/cli.js +6 -0
- package/dist/cli.d.ts +6 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +147 -0
- package/dist/cli.js.map +1 -0
- package/dist/config/config-manager.d.ts +88 -0
- package/dist/config/config-manager.d.ts.map +1 -0
- package/dist/config/config-manager.js +334 -0
- package/dist/config/config-manager.js.map +1 -0
- package/dist/config/encryption-v2.d.ts +51 -0
- package/dist/config/encryption-v2.d.ts.map +1 -0
- package/dist/config/encryption-v2.js +93 -0
- package/dist/config/encryption-v2.js.map +1 -0
- package/dist/config/encryption.d.ts +36 -0
- package/dist/config/encryption.d.ts.map +1 -0
- package/dist/config/encryption.js +72 -0
- package/dist/config/encryption.js.map +1 -0
- package/dist/config/keychain.d.ts +56 -0
- package/dist/config/keychain.d.ts.map +1 -0
- package/dist/config/keychain.js +112 -0
- package/dist/config/keychain.js.map +1 -0
- package/dist/config/storage.d.ts +32 -0
- package/dist/config/storage.d.ts.map +1 -0
- package/dist/config/storage.js +87 -0
- package/dist/config/storage.js.map +1 -0
- package/dist/config/validator.d.ts +9 -0
- package/dist/config/validator.d.ts.map +1 -0
- package/dist/config/validator.js +53 -0
- package/dist/config/validator.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -0
- package/dist/types/index.d.ts +38 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -0
- package/dist/ui/display.d.ts +25 -0
- package/dist/ui/display.d.ts.map +1 -0
- package/dist/ui/display.js +39 -0
- package/dist/ui/display.js.map +1 -0
- package/dist/ui/prompts.d.ts +52 -0
- package/dist/ui/prompts.d.ts.map +1 -0
- package/dist/ui/prompts.js +339 -0
- package/dist/ui/prompts.js.map +1 -0
- package/dist/utils/backup.d.ts +14 -0
- package/dist/utils/backup.d.ts.map +1 -0
- package/dist/utils/backup.js +27 -0
- package/dist/utils/backup.js.map +1 -0
- package/dist/utils/claude-launcher.d.ts +8 -0
- package/dist/utils/claude-launcher.d.ts.map +1 -0
- package/dist/utils/claude-launcher.js +68 -0
- package/dist/utils/claude-launcher.js.map +1 -0
- package/dist/utils/migration.d.ts +18 -0
- package/dist/utils/migration.d.ts.map +1 -0
- package/dist/utils/migration.js +176 -0
- package/dist/utils/migration.js.map +1 -0
- package/dist/utils/platform.d.ts +19 -0
- package/dist/utils/platform.d.ts.map +1 -0
- package/dist/utils/platform.js +91 -0
- package/dist/utils/platform.js.map +1 -0
- package/package.json +54 -0
package/README.md
ADDED
|
@@ -0,0 +1,574 @@
|
|
|
1
|
+
# hop-claude
|
|
2
|
+
|
|
3
|
+
Claude Code 配置管理工具 - 轻松管理多个 Claude Code 中转站配置
|
|
4
|
+
|
|
5
|
+
## ⚠️ 重要更新 v0.1.0
|
|
6
|
+
|
|
7
|
+
**安全更新和新功能**(2025-01-03):
|
|
8
|
+
|
|
9
|
+
🔒 **关键安全修复**:
|
|
10
|
+
- 修复命令注入漏洞(CRITICAL)
|
|
11
|
+
- 新增文件锁防止并发写入损坏
|
|
12
|
+
- 改进 Windows 二进制检测
|
|
13
|
+
|
|
14
|
+
🆕 **新增加密模式**:
|
|
15
|
+
- **Keychain 模式**(推荐):使用 OS keychain 存储,最高安全性
|
|
16
|
+
- **Passphrase 模式**:支持跨机器迁移的密码加密
|
|
17
|
+
- **迁移工具**:从 v0.0.x Legacy 模式轻松迁移
|
|
18
|
+
|
|
19
|
+
📖 **建议操作**:
|
|
20
|
+
```bash
|
|
21
|
+
# 查看当前加密模式
|
|
22
|
+
hop-claude --encryption-info
|
|
23
|
+
|
|
24
|
+
# 如果使用 Legacy 模式,建议迁移
|
|
25
|
+
hop-claude --migrate-encryption
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
详情查看 [SECURITY.md](./SECURITY.md)
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## 特性
|
|
33
|
+
|
|
34
|
+
- 🔐 **多模式加密存储** - 支持 Keychain(OS 管理)、Passphrase(可移植)、Legacy(兼容)三种加密模式
|
|
35
|
+
- 🔒 **OS Keychain 集成** - macOS Keychain、Windows Credential Manager、Linux libsecret 硬件级安全
|
|
36
|
+
- 🔄 **多配置管理** - 支持多个配置 profile,按 domain 区分
|
|
37
|
+
- 🎯 **交互式界面** - 友好的命令行交互体验
|
|
38
|
+
- ⚡ **快速切换** - 一键切换不同的配置环境
|
|
39
|
+
- 🌍 **跨平台支持** - macOS、Linux、Windows 全平台支持
|
|
40
|
+
- 📦 **配置备份/恢复** - 轻松导出和导入配置
|
|
41
|
+
- ✅ **API Key 验证** - 可选的 API Key 有效性验证
|
|
42
|
+
- 🚀 **自动启动 Claude** - 应用配置后自动启动 Claude CLI
|
|
43
|
+
- 🛡️ **安全防护** - 防命令注入、并发写保护、权限控制
|
|
44
|
+
- 🔄 **加密模式迁移** - 轻松在不同加密模式间迁移
|
|
45
|
+
|
|
46
|
+
## 安装
|
|
47
|
+
|
|
48
|
+
### 使用 npx(无需安装)
|
|
49
|
+
|
|
50
|
+
如果你不想全局安装,可以直接使用 npx 运行:
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
npx hop-claude
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
这种方式会临时下载并执行 hop-claude,无需永久安装。适合临时使用或测试。
|
|
57
|
+
|
|
58
|
+
所有命令都支持 npx 方式:
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
# 查看帮助
|
|
62
|
+
npx hop-claude --help
|
|
63
|
+
|
|
64
|
+
# 列出所有配置
|
|
65
|
+
npx hop-claude --list
|
|
66
|
+
|
|
67
|
+
# 配置管理
|
|
68
|
+
npx hop-claude --config
|
|
69
|
+
|
|
70
|
+
# 快速切换并启动
|
|
71
|
+
npx hop-claude -s production
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
**注意**:首次运行时 npx 会下载包,后续运行会使用缓存,速度更快。
|
|
75
|
+
|
|
76
|
+
### 使用 npm(全局安装)
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
npm install -g hop-claude
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### 使用 bun(全局安装)
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
bun add -g hop-claude
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### 从源码安装
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
git clone https://github.com/0bipinnata0/hop-claude.git
|
|
92
|
+
cd hop-claude
|
|
93
|
+
bun install
|
|
94
|
+
bun run build
|
|
95
|
+
bun link
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
## 快速开始
|
|
99
|
+
|
|
100
|
+
### 首次使用
|
|
101
|
+
|
|
102
|
+
运行 `hop-claude` 会进入交互式配置界面:
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
hop-claude
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
按照提示创建你的第一个配置:
|
|
109
|
+
|
|
110
|
+
1. 输入 Domain/Profile 名称(如:production, dev)
|
|
111
|
+
2. 输入 API Key
|
|
112
|
+
3. 输入 Base URL(可选,用于中转站)
|
|
113
|
+
4. 输入 Proxy(可选)
|
|
114
|
+
5. 选择是否禁用非必要流量
|
|
115
|
+
|
|
116
|
+
### 使用现有配置启动 Claude
|
|
117
|
+
|
|
118
|
+
配置完成后,再次运行 `hop-claude` 将直接启动 Claude:
|
|
119
|
+
|
|
120
|
+
```bash
|
|
121
|
+
hop-claude
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
### 透传参数给 Claude
|
|
125
|
+
|
|
126
|
+
所有 hop-claude 未识别的参数都会透传给 Claude CLI:
|
|
127
|
+
|
|
128
|
+
```bash
|
|
129
|
+
# 使用当前配置启动 Claude 并透传参数
|
|
130
|
+
hop-claude -r "Explain this code"
|
|
131
|
+
|
|
132
|
+
# 快速切换配置并启动
|
|
133
|
+
hop-claude -s production -r "Deploy to production"
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
## 命令参考
|
|
137
|
+
|
|
138
|
+
### 基本命令
|
|
139
|
+
|
|
140
|
+
```bash
|
|
141
|
+
hop-claude # 显示当前配置并启动 Claude
|
|
142
|
+
hop-claude --help # 显示帮助信息
|
|
143
|
+
hop-claude --version # 显示版本号
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
### 配置管理
|
|
147
|
+
|
|
148
|
+
```bash
|
|
149
|
+
hop-claude --config # 进入配置管理界面
|
|
150
|
+
hop-claude --list # 列出所有配置
|
|
151
|
+
hop-claude -s <profile> # 快速切换到指定配置
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
### 配置导入/导出
|
|
155
|
+
|
|
156
|
+
```bash
|
|
157
|
+
hop-claude -e backup.json # 导出配置到文件
|
|
158
|
+
hop-claude -i backup.json # 从文件导入配置
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
### 加密模式管理
|
|
162
|
+
|
|
163
|
+
```bash
|
|
164
|
+
hop-claude --encryption-info # 查看当前加密模式信息
|
|
165
|
+
hop-claude --migrate-encryption # 迁移到不同的加密模式
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
**加密模式说明**:
|
|
169
|
+
|
|
170
|
+
- **Keychain 模式**(推荐)⭐:使用 OS 管理的 keychain 存储 API Key,最高安全性
|
|
171
|
+
- macOS: Keychain Access
|
|
172
|
+
- Windows: Credential Manager
|
|
173
|
+
- Linux: libsecret
|
|
174
|
+
|
|
175
|
+
- **Passphrase 模式**:使用用户密码加密,支持跨机器迁移
|
|
176
|
+
- AES-256-GCM 加密
|
|
177
|
+
- PBKDF2 密钥派生(100,000 次迭代)
|
|
178
|
+
- 需要记住密码
|
|
179
|
+
|
|
180
|
+
- **Legacy 模式**(已弃用):基于机器信息的加密,向后兼容 v0.0.x
|
|
181
|
+
- 不推荐新用户使用
|
|
182
|
+
- 建议迁移到 Keychain 或 Passphrase 模式
|
|
183
|
+
|
|
184
|
+
## 配置项说明
|
|
185
|
+
|
|
186
|
+
每个配置 profile 包含以下信息:
|
|
187
|
+
|
|
188
|
+
| 配置项 | 说明 | 必填 |
|
|
189
|
+
|--------|------|------|
|
|
190
|
+
| Domain | 配置名称/标识 | ✅ |
|
|
191
|
+
| API Key | Anthropic API 密钥 | ✅ |
|
|
192
|
+
| Base URL | 自定义 API 地址(中转站) | ❌ |
|
|
193
|
+
| Proxy | HTTP/HTTPS 代理 | ❌ |
|
|
194
|
+
| Disable Nonessential Traffic | 是否禁用非必要流量 | ❌ |
|
|
195
|
+
|
|
196
|
+
## 使用场景
|
|
197
|
+
|
|
198
|
+
### 场景 1:管理多个中转站
|
|
199
|
+
|
|
200
|
+
```bash
|
|
201
|
+
# 创建生产环境配置
|
|
202
|
+
hop-claude --config
|
|
203
|
+
> Create new configuration
|
|
204
|
+
> Domain: production
|
|
205
|
+
> API Key: sk-ant-***
|
|
206
|
+
> Base URL: https://api.example.com
|
|
207
|
+
|
|
208
|
+
# 创建开发环境配置
|
|
209
|
+
hop-claude --config
|
|
210
|
+
> Create new configuration
|
|
211
|
+
> Domain: development
|
|
212
|
+
> API Key: sk-ant-***
|
|
213
|
+
> Base URL: https://dev-api.example.com
|
|
214
|
+
|
|
215
|
+
# 快速切换
|
|
216
|
+
hop-claude -s production # 切换到生产环境
|
|
217
|
+
hop-claude -s development # 切换到开发环境
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
### 场景 2:备份和恢复配置
|
|
221
|
+
|
|
222
|
+
```bash
|
|
223
|
+
# 导出配置(用于备份或迁移)
|
|
224
|
+
hop-claude -e my-backup.json
|
|
225
|
+
|
|
226
|
+
# 在另一台机器上恢复配置
|
|
227
|
+
hop-claude -i my-backup.json
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
### 场景 3:验证 API Key
|
|
231
|
+
|
|
232
|
+
创建配置时,可以选择验证 API Key 是否有效:
|
|
233
|
+
|
|
234
|
+
```bash
|
|
235
|
+
hop-claude --config
|
|
236
|
+
> Create new configuration
|
|
237
|
+
> ...
|
|
238
|
+
> Validate API Key? Yes
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
## 安全说明
|
|
242
|
+
|
|
243
|
+
hop-claude 提供多层安全保护,确保您的 API Key 安全。详细安全策略请查看 [SECURITY.md](./SECURITY.md)。
|
|
244
|
+
|
|
245
|
+
### 加密模式
|
|
246
|
+
|
|
247
|
+
hop-claude 支持三种加密模式,安全性从高到低:
|
|
248
|
+
|
|
249
|
+
#### 1. Keychain 模式(推荐)⭐
|
|
250
|
+
|
|
251
|
+
**安全级别:HIGH**
|
|
252
|
+
|
|
253
|
+
- API Key 存储在 OS 管理的 keychain
|
|
254
|
+
- 密钥永不写入磁盘明文
|
|
255
|
+
- 使用硬件支持的加密(可用时)
|
|
256
|
+
- 无需记住密码
|
|
257
|
+
- **限制**:不可跨机器迁移
|
|
258
|
+
|
|
259
|
+
#### 2. Passphrase 模式
|
|
260
|
+
|
|
261
|
+
**安全级别:MEDIUM to HIGH**(取决于密码强度)
|
|
262
|
+
|
|
263
|
+
- 使用 AES-256-GCM 加密
|
|
264
|
+
- PBKDF2 密钥派生(100,000 次迭代)
|
|
265
|
+
- 完全可移植跨机器
|
|
266
|
+
- **限制**:需要记住密码,密码强度很重要
|
|
267
|
+
|
|
268
|
+
#### 3. Legacy 模式(已弃用)
|
|
269
|
+
|
|
270
|
+
**安全级别:LOW**
|
|
271
|
+
|
|
272
|
+
- 基于机器信息(hostname + username)的加密
|
|
273
|
+
- 仅提供混淆,非真正安全
|
|
274
|
+
- 向后兼容 v0.0.x
|
|
275
|
+
- **限制**:已弃用,建议迁移
|
|
276
|
+
|
|
277
|
+
### 安全防护
|
|
278
|
+
|
|
279
|
+
✅ **防止意外泄露**
|
|
280
|
+
- API Key 不会出现在 git commits
|
|
281
|
+
- 终端显示时部分隐藏(如:`sk-ant-***xyz`)
|
|
282
|
+
- 进程列表中不可见
|
|
283
|
+
|
|
284
|
+
✅ **文件系统保护**
|
|
285
|
+
- 配置目录权限:0700(Unix)或限制 ACL(Windows)
|
|
286
|
+
- 配置文件权限:0600(Unix)
|
|
287
|
+
- 加密存储防止随意浏览
|
|
288
|
+
|
|
289
|
+
✅ **防命令注入**
|
|
290
|
+
- 已修复 v0.0.x 中的命令注入漏洞
|
|
291
|
+
- 安全的子进程调用(无 shell 解释)
|
|
292
|
+
|
|
293
|
+
✅ **并发写保护**
|
|
294
|
+
- 文件锁防止数据损坏
|
|
295
|
+
- 支持多终端会话同时运行
|
|
296
|
+
|
|
297
|
+
### 不防护的场景
|
|
298
|
+
|
|
299
|
+
❌ **Root/Admin 访问**:本地 root 用户可访问任何文件
|
|
300
|
+
❌ **内存检查**:API Key 使用时存在于内存
|
|
301
|
+
❌ **物理访问**:未锁定的机器易受攻击
|
|
302
|
+
❌ **恶意软件**:受感染的机器上所有数据都有风险
|
|
303
|
+
|
|
304
|
+
### 最佳实践
|
|
305
|
+
|
|
306
|
+
**Keychain 模式用户**:
|
|
307
|
+
1. ✅ 启用全盘加密(FileVault、BitLocker、LUKS)
|
|
308
|
+
2. ✅ 使用强机器登录密码
|
|
309
|
+
3. ✅ 离开时锁屏(建议自动锁定)
|
|
310
|
+
|
|
311
|
+
**Passphrase 模式用户**:
|
|
312
|
+
1. ✅ 使用强密码(≥12 字符,混合大小写、符号)
|
|
313
|
+
2. ✅ 考虑使用密码管理器
|
|
314
|
+
3. ✅ 不要将加密配置提交到公开仓库
|
|
315
|
+
|
|
316
|
+
**所有用户**:
|
|
317
|
+
1. ✅ 运行 `hop-claude --encryption-info` 验证当前模式
|
|
318
|
+
2. ✅ 从 Legacy 模式迁移:`hop-claude --migrate-encryption`
|
|
319
|
+
3. ✅ 定期轮换 API Key(建议每 90 天)
|
|
320
|
+
|
|
321
|
+
### 迁移指南
|
|
322
|
+
|
|
323
|
+
从 v0.0.x 迁移到 v0.1.0+:
|
|
324
|
+
|
|
325
|
+
```bash
|
|
326
|
+
# 1. 备份配置
|
|
327
|
+
hop-claude -e backup-before-migration.json
|
|
328
|
+
|
|
329
|
+
# 2. 运行迁移
|
|
330
|
+
hop-claude --migrate-encryption
|
|
331
|
+
|
|
332
|
+
# 3. 选择 Keychain(最安全)或 Passphrase(可移植)
|
|
333
|
+
|
|
334
|
+
# 4. 验证迁移
|
|
335
|
+
hop-claude --encryption-info
|
|
336
|
+
```
|
|
337
|
+
|
|
338
|
+
### 测试覆盖
|
|
339
|
+
|
|
340
|
+
- ✅ 31 个安全和功能测试
|
|
341
|
+
- ✅ 防命令注入测试
|
|
342
|
+
- ✅ 加密算法测试
|
|
343
|
+
- ✅ 并发访问测试
|
|
344
|
+
- ✅ 跨加密模式迁移测试
|
|
345
|
+
|
|
346
|
+
### 文件权限
|
|
347
|
+
|
|
348
|
+
- **配置目录**:
|
|
349
|
+
- Unix: `~/.hop-claude-config/` (权限: 0700)
|
|
350
|
+
- Windows: `%APPDATA%/hop-claude-config/`
|
|
351
|
+
- **配置文件**:`config.json` (权限: 0600,仅所有者可读写)
|
|
352
|
+
|
|
353
|
+
### 敏感信息保护
|
|
354
|
+
|
|
355
|
+
- API Key 在终端显示时部分隐藏(如:`sk-ant-***xyz`)
|
|
356
|
+
- 输入 API Key 时使用密码模式(不显示)
|
|
357
|
+
- 配置文件中的 API Key 已加密存储
|
|
358
|
+
|
|
359
|
+
## 配置文件位置
|
|
360
|
+
|
|
361
|
+
- **macOS/Linux**: `~/.hop-claude-config/config.json`
|
|
362
|
+
- **Windows**: `%APPDATA%/hop-claude-config/config.json`
|
|
363
|
+
|
|
364
|
+
## 故障排除
|
|
365
|
+
|
|
366
|
+
### Claude CLI 未找到
|
|
367
|
+
|
|
368
|
+
如果出现 "Failed to launch claude" 错误:
|
|
369
|
+
|
|
370
|
+
1. 确保已安装 Claude CLI:
|
|
371
|
+
```bash
|
|
372
|
+
# 检查是否已安装
|
|
373
|
+
claude --version
|
|
374
|
+
```
|
|
375
|
+
|
|
376
|
+
2. 如未安装,访问:https://github.com/anthropics/claude-code
|
|
377
|
+
|
|
378
|
+
3. Windows 用户:确保 Claude CLI 在 PATH 中(支持 claude.cmd、claude.exe)
|
|
379
|
+
|
|
380
|
+
### 配置文件损坏
|
|
381
|
+
|
|
382
|
+
如果配置文件损坏,可以手动删除并重新创建:
|
|
383
|
+
|
|
384
|
+
```bash
|
|
385
|
+
# macOS/Linux
|
|
386
|
+
rm -rf ~/.hop-claude-config
|
|
387
|
+
|
|
388
|
+
# Windows
|
|
389
|
+
rmdir /s %APPDATA%\hop-claude-config
|
|
390
|
+
```
|
|
391
|
+
|
|
392
|
+
### API Key 验证失败
|
|
393
|
+
|
|
394
|
+
如果验证失败但 API Key 确实有效:
|
|
395
|
+
|
|
396
|
+
1. 检查网络连接
|
|
397
|
+
2. 检查 Base URL 是否正确
|
|
398
|
+
3. 如使用代理,确保代理设置正确
|
|
399
|
+
4. 选择 "Continue anyway" 跳过验证
|
|
400
|
+
|
|
401
|
+
### 加密模式问题
|
|
402
|
+
|
|
403
|
+
**忘记 Passphrase 密码**:
|
|
404
|
+
- 无法恢复,需要重新配置 API Key
|
|
405
|
+
- 如有备份文件,可以尝试导入
|
|
406
|
+
|
|
407
|
+
**Keychain 不可用**:
|
|
408
|
+
```bash
|
|
409
|
+
# 检查 keychain 状态
|
|
410
|
+
hop-claude --encryption-info
|
|
411
|
+
|
|
412
|
+
# 如不可用,迁移到 Passphrase 模式
|
|
413
|
+
hop-claude --migrate-encryption
|
|
414
|
+
```
|
|
415
|
+
|
|
416
|
+
**从 v0.0.x 迁移**:
|
|
417
|
+
```bash
|
|
418
|
+
# 查看当前模式(如果是 Legacy 模式,建议迁移)
|
|
419
|
+
hop-claude --encryption-info
|
|
420
|
+
|
|
421
|
+
# 执行迁移(会自动备份)
|
|
422
|
+
hop-claude --migrate-encryption
|
|
423
|
+
```
|
|
424
|
+
|
|
425
|
+
**迁移失败恢复**:
|
|
426
|
+
```bash
|
|
427
|
+
# 手动恢复备份
|
|
428
|
+
# macOS/Linux:
|
|
429
|
+
cp ~/.hop-claude-config/config.json.backup-TIMESTAMP ~/.hop-claude-config/config.json
|
|
430
|
+
|
|
431
|
+
# Windows:
|
|
432
|
+
copy %APPDATA%\hop-claude-config\config.json.backup-TIMESTAMP %APPDATA%\hop-claude-config\config.json
|
|
433
|
+
|
|
434
|
+
# 或使用导入命令
|
|
435
|
+
hop-claude -i backup-before-migration.json
|
|
436
|
+
```
|
|
437
|
+
|
|
438
|
+
## 开发
|
|
439
|
+
|
|
440
|
+
### 环境要求
|
|
441
|
+
|
|
442
|
+
- Node.js 18+
|
|
443
|
+
- Bun 或 npm
|
|
444
|
+
|
|
445
|
+
### 本地开发
|
|
446
|
+
|
|
447
|
+
```bash
|
|
448
|
+
# 克隆仓库
|
|
449
|
+
git clone https://github.com/0bipinnata0/hop-claude.git
|
|
450
|
+
cd hop-claude
|
|
451
|
+
|
|
452
|
+
# 安装依赖
|
|
453
|
+
bun install
|
|
454
|
+
|
|
455
|
+
# 开发模式运行
|
|
456
|
+
bun run dev
|
|
457
|
+
|
|
458
|
+
# 编译
|
|
459
|
+
bun run build
|
|
460
|
+
|
|
461
|
+
# 运行测试
|
|
462
|
+
bun test
|
|
463
|
+
|
|
464
|
+
# 本地链接(用于测试)
|
|
465
|
+
bun link
|
|
466
|
+
```
|
|
467
|
+
|
|
468
|
+
### 测试
|
|
469
|
+
|
|
470
|
+
项目包含全面的测试套件(31 个测试):
|
|
471
|
+
|
|
472
|
+
```bash
|
|
473
|
+
# 运行所有测试
|
|
474
|
+
bun test
|
|
475
|
+
|
|
476
|
+
# 运行特定测试文件
|
|
477
|
+
bun test test/security.test.ts
|
|
478
|
+
bun test test/concurrent.test.ts
|
|
479
|
+
bun test test/migration.test.ts
|
|
480
|
+
|
|
481
|
+
# 查看测试覆盖
|
|
482
|
+
bun test --coverage
|
|
483
|
+
```
|
|
484
|
+
|
|
485
|
+
测试覆盖:
|
|
486
|
+
- ✅ 安全性测试(防命令注入、加密算法、文件权限)
|
|
487
|
+
- ✅ 并发访问测试(文件锁、竞争条件)
|
|
488
|
+
- ✅ 加密迁移测试(Legacy ↔ Keychain ↔ Passphrase)
|
|
489
|
+
- ✅ 边缘情况测试(特殊字符、空配置、错误密码)
|
|
490
|
+
|
|
491
|
+
### 项目结构
|
|
492
|
+
|
|
493
|
+
```
|
|
494
|
+
hop-claude/
|
|
495
|
+
├── src/
|
|
496
|
+
│ ├── cli.ts # CLI 命令定义
|
|
497
|
+
│ ├── index.ts # 主入口
|
|
498
|
+
│ ├── config/
|
|
499
|
+
│ │ ├── config-manager.ts # 配置管理核心(多模式加密支持)
|
|
500
|
+
│ │ ├── encryption.ts # Legacy 加密/解密
|
|
501
|
+
│ │ ├── encryption-v2.ts # Passphrase 加密/解密
|
|
502
|
+
│ │ ├── keychain.ts # OS Keychain 集成
|
|
503
|
+
│ │ ├── storage.ts # 文件存储(含文件锁)
|
|
504
|
+
│ │ └── validator.ts # API Key 验证
|
|
505
|
+
│ ├── ui/
|
|
506
|
+
│ │ ├── prompts.ts # 交互式界面
|
|
507
|
+
│ │ └── display.ts # 显示工具
|
|
508
|
+
│ ├── utils/
|
|
509
|
+
│ │ ├── claude-launcher.ts # Claude 启动器(安全子进程调用)
|
|
510
|
+
│ │ ├── backup.ts # 备份/恢复
|
|
511
|
+
│ │ ├── migration.ts # 加密模式迁移工具
|
|
512
|
+
│ │ └── platform.ts # 跨平台支持
|
|
513
|
+
│ └── types/
|
|
514
|
+
│ └── index.ts # TypeScript 类型
|
|
515
|
+
├── test/
|
|
516
|
+
│ ├── security.test.ts # 安全性测试
|
|
517
|
+
│ ├── concurrent.test.ts # 并发访问测试
|
|
518
|
+
│ └── migration.test.ts # 加密迁移测试
|
|
519
|
+
├── bin/
|
|
520
|
+
│ └── cli.js # CLI 可执行入口
|
|
521
|
+
└── dist/ # 编译输出
|
|
522
|
+
```
|
|
523
|
+
|
|
524
|
+
## 版本历史
|
|
525
|
+
|
|
526
|
+
### v0.1.0(2025-01-03)
|
|
527
|
+
|
|
528
|
+
**安全更新**:
|
|
529
|
+
- ✅ 修复命令注入漏洞(CRITICAL)- 移除 shell:true,安全子进程调用
|
|
530
|
+
- ✅ 改进错误处理和类型安全(error: any → error: unknown)
|
|
531
|
+
- ✅ 新增文件锁防止并发写入数据损坏
|
|
532
|
+
- ✅ 改进 Windows 二进制检测(支持 claude.cmd、claude.exe)
|
|
533
|
+
- ✅ 增强 Windows ACL 错误处理
|
|
534
|
+
|
|
535
|
+
**新功能**:
|
|
536
|
+
- ✅ Keychain 加密模式(macOS Keychain、Windows Credential Manager、Linux libsecret)
|
|
537
|
+
- ✅ Passphrase 加密模式(AES-256-GCM + PBKDF2)
|
|
538
|
+
- ✅ 加密模式迁移工具(`--migrate-encryption`)
|
|
539
|
+
- ✅ 加密信息查看(`--encryption-info`)
|
|
540
|
+
- ✅ 会话密码缓存(Passphrase 模式便利功能)
|
|
541
|
+
|
|
542
|
+
**测试**:
|
|
543
|
+
- ✅ 31 个测试覆盖安全、并发、迁移场景
|
|
544
|
+
- ✅ 99 个断言确保代码质量
|
|
545
|
+
|
|
546
|
+
**文档**:
|
|
547
|
+
- ✅ 完整 SECURITY.md 文档
|
|
548
|
+
- ✅ 更新 README 包含所有新特性
|
|
549
|
+
- ✅ 迁移指南和最佳实践
|
|
550
|
+
|
|
551
|
+
### v0.0.x
|
|
552
|
+
|
|
553
|
+
- 初始版本
|
|
554
|
+
- 基本配置管理功能
|
|
555
|
+
- Legacy 加密模式(已弃用)
|
|
556
|
+
|
|
557
|
+
## 许可证
|
|
558
|
+
|
|
559
|
+
MIT License
|
|
560
|
+
|
|
561
|
+
## 贡献
|
|
562
|
+
|
|
563
|
+
欢迎提交 Issue 和 Pull Request!
|
|
564
|
+
|
|
565
|
+
## 相关链接
|
|
566
|
+
|
|
567
|
+
- [Claude Code](https://github.com/anthropics/claude-code) - 官方 Claude CLI
|
|
568
|
+
- [Anthropic API](https://docs.anthropic.com/) - API 文档
|
|
569
|
+
- [SECURITY.md](./SECURITY.md) - 完整安全策略文档
|
|
570
|
+
- [Issues](https://github.com/0bipinnata0/hop-claude/issues) - 报告问题或建议
|
|
571
|
+
|
|
572
|
+
## 安全披露
|
|
573
|
+
|
|
574
|
+
如发现安全漏洞,请查看 [SECURITY.md](./SECURITY.md) 了解报告流程。
|