hop-claude 3.1.0 → 3.2.1
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 +66 -0
- package/README.md +56 -7
- package/dist/cli.d.ts +8 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +42 -15
- package/dist/cli.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,71 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 3.2.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 修复 Commander.js 参数解析错误
|
|
8
|
+
|
|
9
|
+
**修正**:
|
|
10
|
+
|
|
11
|
+
- 修复 `hop-claude -c` 报错 "error: too many arguments. Expected 0 arguments but got 1."
|
|
12
|
+
- 添加 `.arguments('[args...]')` 到 Commander 配置以支持额外参数
|
|
13
|
+
- 更新 action 回调签名以匹配新的参数结构
|
|
14
|
+
|
|
15
|
+
**根本原因**:
|
|
16
|
+
|
|
17
|
+
- Commander.js 虽然配置了 `.allowUnknownOption(true)` 允许未知选项
|
|
18
|
+
- 但缺少 `.arguments('[args...]')` 来接受 positional arguments
|
|
19
|
+
- 导致 Commander 在解析阶段就拒绝透传参数,代码逻辑无法运行
|
|
20
|
+
|
|
21
|
+
**影响**:
|
|
22
|
+
|
|
23
|
+
- 修复前:所有参数透传命令(如 `hop-claude -c`, `hop-claude -r "test"`)都会失败
|
|
24
|
+
- 修复后:参数正常透传给 Claude CLI,智能检测模式正常工作
|
|
25
|
+
|
|
26
|
+
## 3.2.0
|
|
27
|
+
|
|
28
|
+
### Minor Changes
|
|
29
|
+
|
|
30
|
+
- 1be23a9: 智能交互模式检测:改进参数透传体验
|
|
31
|
+
|
|
32
|
+
**新功能**:
|
|
33
|
+
|
|
34
|
+
1. **智能模式检测**:
|
|
35
|
+
|
|
36
|
+
- 有透传参数(如 -c, -r)→ 静默模式:直接使用当前配置启动 Claude
|
|
37
|
+
- 无透传参数 → 交互模式:显示配置管理界面
|
|
38
|
+
|
|
39
|
+
2. **改进的用户体验**:
|
|
40
|
+
|
|
41
|
+
- `npx hop-claude -c` 现在直接启动,无需手动选择配置
|
|
42
|
+
- `npx hop-claude -r "test"` 直接透传参数给 Claude
|
|
43
|
+
- 保持向后兼容:`npx hop-claude` 仍显示交互界面
|
|
44
|
+
|
|
45
|
+
3. **优化的错误提示**:
|
|
46
|
+
- 无配置时的友好错误信息
|
|
47
|
+
- 清晰的使用引导
|
|
48
|
+
|
|
49
|
+
**使用示例**:
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
# 静默模式(新)
|
|
53
|
+
npx hop-claude -c # 直接启动
|
|
54
|
+
npx hop-claude -r "解释代码" # 直接透传参数
|
|
55
|
+
|
|
56
|
+
# 交互模式(不变)
|
|
57
|
+
npx hop-claude # 显示配置界面
|
|
58
|
+
npx hop-claude -m # 进入管理模式
|
|
59
|
+
|
|
60
|
+
# 组合使用
|
|
61
|
+
npx hop-claude -s prod -c # 切换配置并启动
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
**向后兼容**:
|
|
65
|
+
|
|
66
|
+
- 所有现有命令行为保持不变
|
|
67
|
+
- 新增的智能检测不会破坏现有工作流
|
|
68
|
+
|
|
3
69
|
## 3.1.0
|
|
4
70
|
|
|
5
71
|
### Minor Changes
|
package/README.md
CHANGED
|
@@ -21,6 +21,7 @@ Claude Code 配置管理工具 - 轻松管理多个 Claude Code 中转站配置
|
|
|
21
21
|
- 自动密码提示,更友好的交互体验
|
|
22
22
|
- 导入/导出操作后不再自动启动 Claude
|
|
23
23
|
- `-s` 不提供配置名时显示交互式选择列表
|
|
24
|
+
- **智能交互模式**:有透传参数时自动静默启动,无参数时显示配置界面
|
|
24
25
|
|
|
25
26
|
📖 **建议操作**:
|
|
26
27
|
```bash
|
|
@@ -29,6 +30,9 @@ hop-claude --encryption-info
|
|
|
29
30
|
|
|
30
31
|
# 首次使用会自动引导配置
|
|
31
32
|
hop-claude
|
|
33
|
+
|
|
34
|
+
# 快速启动(静默模式)
|
|
35
|
+
hop-claude -c
|
|
32
36
|
```
|
|
33
37
|
|
|
34
38
|
详情查看 [SECURITY.md](./SECURITY.md)
|
|
@@ -48,6 +52,7 @@ hop-claude
|
|
|
48
52
|
- 🚀 **自动启动 Claude** - 应用配置后自动启动 Claude CLI
|
|
49
53
|
- 🛡️ **安全防护** - 防命令注入、并发写保护、权限控制
|
|
50
54
|
- 🔄 **参数透传** - 支持 `-c` 和 `--` 分隔符透传参数给 Claude
|
|
55
|
+
- 🧠 **智能交互模式** - 自动检测透传参数,静默或交互式启动
|
|
51
56
|
|
|
52
57
|
## 安装
|
|
53
58
|
|
|
@@ -134,16 +139,18 @@ hop-claude
|
|
|
134
139
|
|
|
135
140
|
### 透传参数给 Claude
|
|
136
141
|
|
|
137
|
-
|
|
142
|
+
**智能检测模式**:hop-claude 会自动检测是否有透传参数:
|
|
143
|
+
- 有透传参数 → 静默启动:直接使用当前配置启动 Claude,无交互
|
|
144
|
+
- 无透传参数 → 交互模式:显示配置管理界面
|
|
138
145
|
|
|
139
146
|
#### 方式 1:直接透传(推荐)
|
|
140
147
|
|
|
141
148
|
```bash
|
|
142
149
|
# -c 现在可以直接透传给 Claude(继续上次对话)
|
|
143
|
-
hop-claude -c
|
|
150
|
+
hop-claude -c # 静默启动,不显示配置界面
|
|
144
151
|
|
|
145
152
|
# 透传其他参数
|
|
146
|
-
hop-claude -r "Explain this code"
|
|
153
|
+
hop-claude -r "Explain this code" # 静默启动,传入 -r 参数
|
|
147
154
|
```
|
|
148
155
|
|
|
149
156
|
#### 方式 2:使用 -- 分隔符(更明确)
|
|
@@ -156,6 +163,15 @@ hop-claude -- -c
|
|
|
156
163
|
hop-claude -s production -- -c --verbose
|
|
157
164
|
```
|
|
158
165
|
|
|
166
|
+
#### 交互模式
|
|
167
|
+
|
|
168
|
+
如果不提供任何透传参数,会显示配置管理界面:
|
|
169
|
+
|
|
170
|
+
```bash
|
|
171
|
+
hop-claude # 显示当前配置,询问是否修改
|
|
172
|
+
hop-claude -m # 进入配置管理模式
|
|
173
|
+
```
|
|
174
|
+
|
|
159
175
|
## 命令参考
|
|
160
176
|
|
|
161
177
|
### 基本命令
|
|
@@ -257,18 +273,21 @@ hop-claude -e my-backup.json
|
|
|
257
273
|
hop-claude -i my-backup.json
|
|
258
274
|
```
|
|
259
275
|
|
|
260
|
-
### 场景 3
|
|
276
|
+
### 场景 3:继续上次对话(静默模式)
|
|
261
277
|
|
|
262
278
|
```bash
|
|
263
|
-
# 方式 1:直接透传 -c
|
|
264
|
-
hop-claude -c
|
|
279
|
+
# 方式 1:直接透传 -c(推荐)
|
|
280
|
+
hop-claude -c # 静默启动,直接继续对话,无交互
|
|
265
281
|
|
|
266
282
|
# 方式 2:使用 -- 分隔符(更明确)
|
|
267
283
|
hop-claude -- -c
|
|
268
284
|
|
|
269
285
|
# 切换配置后继续对话
|
|
270
|
-
hop-claude -s production -c
|
|
286
|
+
hop-claude -s production -c # 切换后静默启动
|
|
271
287
|
hop-claude -s production -- -c
|
|
288
|
+
|
|
289
|
+
# 传入其他参数
|
|
290
|
+
hop-claude -r "解释这段代码" # 静默启动,传入 -r 参数
|
|
272
291
|
```
|
|
273
292
|
|
|
274
293
|
## 安全说明
|
|
@@ -530,6 +549,35 @@ hop-claude/
|
|
|
530
549
|
|
|
531
550
|
## 版本历史
|
|
532
551
|
|
|
552
|
+
详细的版本历史请参阅 [CHANGELOG.md](./CHANGELOG.md)。
|
|
553
|
+
|
|
554
|
+
### v3.2.1(2025-01-03)
|
|
555
|
+
|
|
556
|
+
**Bug 修复**:
|
|
557
|
+
- ✅ 修复 Commander.js 参数解析错误("error: too many arguments")
|
|
558
|
+
- 添加 `.arguments('[args...]')` 支持参数透传
|
|
559
|
+
- 所有透传命令(`-c`, `-r` 等)现在正常工作
|
|
560
|
+
|
|
561
|
+
### v3.2.0(2025-01-03)
|
|
562
|
+
|
|
563
|
+
**新功能**:
|
|
564
|
+
- ✅ **智能交互模式检测**:有透传参数时自动静默启动,无参数时显示配置界面
|
|
565
|
+
- `hop-claude -c` 直接启动,无需手动选择配置
|
|
566
|
+
- `hop-claude -r "test"` 直接透传参数给 Claude
|
|
567
|
+
- 保持向后兼容:`hop-claude` 仍显示交互界面
|
|
568
|
+
|
|
569
|
+
### v3.1.0(2025-01-03)
|
|
570
|
+
|
|
571
|
+
**改进**:
|
|
572
|
+
- ✅ 优化配置流程:连接方式优先,同屏展开体验
|
|
573
|
+
- ✅ 配置名称自动生成默认值("官方"或"自定义中转")
|
|
574
|
+
|
|
575
|
+
### v3.0.0(2025-01-03)
|
|
576
|
+
|
|
577
|
+
**破坏性变更**:
|
|
578
|
+
- ✅ 字段重命名:`domain` → `name`(配置名称)
|
|
579
|
+
- ✅ 文案优化:移除"域名"概念,改为"配置名称"
|
|
580
|
+
|
|
533
581
|
### v2.0.0(2025-01-03)
|
|
534
582
|
|
|
535
583
|
**破坏性变更**:
|
|
@@ -548,6 +596,7 @@ hop-claude/
|
|
|
548
596
|
- ✅ 更友好的密码输入体验(先尝试空密码)
|
|
549
597
|
- ✅ 简化加密模式选择(只有两种模式)
|
|
550
598
|
- ✅ 更清晰的用户界面和错误提示
|
|
599
|
+
- ✅ 优化参数透传逻辑,更符合用户直觉
|
|
551
600
|
|
|
552
601
|
### v0.1.0(2025-01-03)
|
|
553
602
|
|
package/dist/cli.d.ts
CHANGED
|
@@ -3,4 +3,12 @@ import { Command } from 'commander';
|
|
|
3
3
|
* 创建 CLI 程序
|
|
4
4
|
*/
|
|
5
5
|
export declare function createCLI(): Promise<Command>;
|
|
6
|
+
/**
|
|
7
|
+
* 获取需要透传给 claude 的参数
|
|
8
|
+
* 支持 -- 分隔符来明确区分 hop-claude 参数和 claude 参数
|
|
9
|
+
* 过滤掉 hop-claude 自己的参数
|
|
10
|
+
* @param argv 命令行参数数组
|
|
11
|
+
* @returns 需要透传的参数数组
|
|
12
|
+
*/
|
|
13
|
+
export declare function getClaudeArgs(argv: string[]): string[];
|
|
6
14
|
//# sourceMappingURL=cli.d.ts.map
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASpC;;GAEG;AACH,wBAAsB,SAAS,
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASpC;;GAEG;AACH,wBAAsB,SAAS,qBAkK9B;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAqDtD"}
|
package/dist/cli.js
CHANGED
|
@@ -25,7 +25,8 @@ export async function createCLI() {
|
|
|
25
25
|
.option('--migrate-encryption', '迁移到不同的加密模式')
|
|
26
26
|
.option('--encryption-info', '显示当前加密模式信息')
|
|
27
27
|
.allowUnknownOption(true) // 允许未知选项(用于透传给 claude)
|
|
28
|
-
.
|
|
28
|
+
.arguments('[args...]') // 允许额外的参数(用于透传给 claude)
|
|
29
|
+
.action(async (_, options) => {
|
|
29
30
|
try {
|
|
30
31
|
// 加密模式迁移
|
|
31
32
|
if (options.migrateEncryption) {
|
|
@@ -91,6 +92,8 @@ export async function createCLI() {
|
|
|
91
92
|
displaySuccess('配置导入成功');
|
|
92
93
|
return;
|
|
93
94
|
}
|
|
95
|
+
// 获取透传参数(提前统一获取)
|
|
96
|
+
const claudeArgs = getClaudeArgs(process.argv);
|
|
94
97
|
// 强制进入配置模式
|
|
95
98
|
if (options.manage) {
|
|
96
99
|
const shouldContinue = await ui.manageConfiguration();
|
|
@@ -98,8 +101,26 @@ export async function createCLI() {
|
|
|
98
101
|
return; // 导入/导出等操作后直接退出
|
|
99
102
|
}
|
|
100
103
|
// 如果是其他操作(选择、创建、编辑),继续启动 Claude
|
|
104
|
+
const currentProfile = await configManager.getCurrentProfile();
|
|
105
|
+
if (currentProfile) {
|
|
106
|
+
await launchClaude(currentProfile, claudeArgs);
|
|
107
|
+
}
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
// 智能检测模式:
|
|
111
|
+
// - 有透传参数 → 静默模式:直接启动 Claude
|
|
112
|
+
// - 无透传参数 → 交互模式:显示配置管理界面
|
|
113
|
+
if (claudeArgs.length > 0) {
|
|
114
|
+
// 静默模式:直接使用当前配置启动
|
|
115
|
+
const currentProfile = await configManager.getCurrentProfile();
|
|
116
|
+
if (!currentProfile) {
|
|
117
|
+
displayError('未找到配置。请先运行 hop-claude 创建配置');
|
|
118
|
+
process.exit(1);
|
|
119
|
+
}
|
|
120
|
+
await launchClaude(currentProfile, claudeArgs);
|
|
121
|
+
return;
|
|
101
122
|
}
|
|
102
|
-
//
|
|
123
|
+
// 交互模式:显示当前配置 + 询问是否修改
|
|
103
124
|
const shouldContinue = await ui.showCurrentAndAsk();
|
|
104
125
|
if (!shouldContinue) {
|
|
105
126
|
// 用户选择退出
|
|
@@ -111,10 +132,8 @@ export async function createCLI() {
|
|
|
111
132
|
displayError('未选择配置');
|
|
112
133
|
process.exit(1);
|
|
113
134
|
}
|
|
114
|
-
//
|
|
115
|
-
|
|
116
|
-
// 启动 claude
|
|
117
|
-
await launchClaude(currentProfile, claudeArgs);
|
|
135
|
+
// 启动 claude(无透传参数)
|
|
136
|
+
await launchClaude(currentProfile, []);
|
|
118
137
|
}
|
|
119
138
|
catch (error) {
|
|
120
139
|
const err = error instanceof Error ? error : new Error(String(error));
|
|
@@ -133,8 +152,10 @@ export async function createCLI() {
|
|
|
133
152
|
* 获取需要透传给 claude 的参数
|
|
134
153
|
* 支持 -- 分隔符来明确区分 hop-claude 参数和 claude 参数
|
|
135
154
|
* 过滤掉 hop-claude 自己的参数
|
|
155
|
+
* @param argv 命令行参数数组
|
|
156
|
+
* @returns 需要透传的参数数组
|
|
136
157
|
*/
|
|
137
|
-
function getClaudeArgs(argv) {
|
|
158
|
+
export function getClaudeArgs(argv) {
|
|
138
159
|
const hopClaudeFlags = [
|
|
139
160
|
'-m', '--manage',
|
|
140
161
|
'-l', '--list',
|
|
@@ -154,19 +175,25 @@ function getClaudeArgs(argv) {
|
|
|
154
175
|
}
|
|
155
176
|
// 否则,过滤掉 hop-claude 的参数
|
|
156
177
|
const result = [];
|
|
157
|
-
let skip = false;
|
|
158
178
|
for (let i = 2; i < argv.length; i++) {
|
|
159
179
|
const arg = argv[i];
|
|
160
|
-
if (skip) {
|
|
161
|
-
skip = false;
|
|
162
|
-
continue;
|
|
163
|
-
}
|
|
164
180
|
// 跳过 hop-claude 的选项
|
|
165
181
|
if (hopClaudeFlags.includes(arg)) {
|
|
166
|
-
//
|
|
167
|
-
|
|
168
|
-
|
|
182
|
+
// 检查下一个参数是否存在且不是选项
|
|
183
|
+
const nextArg = argv[i + 1];
|
|
184
|
+
if (['-e', '--export', '-i', '--import'].includes(arg)) {
|
|
185
|
+
// 这些选项总是需要值,跳过下一个参数
|
|
186
|
+
if (nextArg) {
|
|
187
|
+
i++; // 跳过值
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
else if (['-s', '--switch'].includes(arg)) {
|
|
191
|
+
// -s 是可选值,只有当下一个参数存在且不是选项时才跳过
|
|
192
|
+
if (nextArg && !nextArg.startsWith('-')) {
|
|
193
|
+
i++; // 跳过值
|
|
194
|
+
}
|
|
169
195
|
}
|
|
196
|
+
// 其他选项(-m, -l, -v, -h, --migrate-encryption, --encryption-info)不需要值
|
|
170
197
|
continue;
|
|
171
198
|
}
|
|
172
199
|
// 其他所有参数都透传
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,GAAG,MAAM,iBAAiB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAExD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS;IAC7B,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAC9B,MAAM,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC;IAC1C,MAAM,EAAE,GAAG,IAAI,aAAa,CAAC,aAAa,CAAC,CAAC;IAE5C,OAAO;SACJ,IAAI,CAAC,YAAY,CAAC;SAClB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;SACpB,WAAW,CAAC,uBAAuB,CAAC;SACpC,MAAM,CAAC,cAAc,EAAE,UAAU,CAAC;SAClC,MAAM,CAAC,YAAY,EAAE,QAAQ,CAAC;SAC9B,MAAM,CAAC,wBAAwB,EAAE,uBAAuB,CAAC;SACzD,MAAM,CAAC,qBAAqB,EAAE,SAAS,CAAC;SACxC,MAAM,CAAC,qBAAqB,EAAE,SAAS,CAAC;SACxC,MAAM,CAAC,sBAAsB,EAAE,YAAY,CAAC;SAC5C,MAAM,CAAC,mBAAmB,EAAE,YAAY,CAAC;SACzC,kBAAkB,CAAC,IAAI,CAAC,CAAC,uBAAuB;SAChD,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|