hop-claude 3.1.0 → 3.2.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 +43 -0
- package/README.md +28 -7
- package/dist/cli.d.ts +8 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +40 -14
- package/dist/cli.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,48 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 3.2.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 1be23a9: 智能交互模式检测:改进参数透传体验
|
|
8
|
+
|
|
9
|
+
**新功能**:
|
|
10
|
+
|
|
11
|
+
1. **智能模式检测**:
|
|
12
|
+
|
|
13
|
+
- 有透传参数(如 -c, -r)→ 静默模式:直接使用当前配置启动 Claude
|
|
14
|
+
- 无透传参数 → 交互模式:显示配置管理界面
|
|
15
|
+
|
|
16
|
+
2. **改进的用户体验**:
|
|
17
|
+
|
|
18
|
+
- `npx hop-claude -c` 现在直接启动,无需手动选择配置
|
|
19
|
+
- `npx hop-claude -r "test"` 直接透传参数给 Claude
|
|
20
|
+
- 保持向后兼容:`npx hop-claude` 仍显示交互界面
|
|
21
|
+
|
|
22
|
+
3. **优化的错误提示**:
|
|
23
|
+
- 无配置时的友好错误信息
|
|
24
|
+
- 清晰的使用引导
|
|
25
|
+
|
|
26
|
+
**使用示例**:
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
# 静默模式(新)
|
|
30
|
+
npx hop-claude -c # 直接启动
|
|
31
|
+
npx hop-claude -r "解释代码" # 直接透传参数
|
|
32
|
+
|
|
33
|
+
# 交互模式(不变)
|
|
34
|
+
npx hop-claude # 显示配置界面
|
|
35
|
+
npx hop-claude -m # 进入管理模式
|
|
36
|
+
|
|
37
|
+
# 组合使用
|
|
38
|
+
npx hop-claude -s prod -c # 切换配置并启动
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
**向后兼容**:
|
|
42
|
+
|
|
43
|
+
- 所有现有命令行为保持不变
|
|
44
|
+
- 新增的智能检测不会破坏现有工作流
|
|
45
|
+
|
|
3
46
|
## 3.1.0
|
|
4
47
|
|
|
5
48
|
### 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
|
## 安全说明
|
|
@@ -543,11 +562,13 @@ hop-claude/
|
|
|
543
562
|
- ✅ 自动密码提示(密码加密模式)
|
|
544
563
|
- ✅ 支持空密码快速启动
|
|
545
564
|
- ✅ 导入/导出后不再自动启动 Claude
|
|
565
|
+
- ✅ **智能交互模式检测**:有透传参数时自动静默启动,无参数时显示配置界面
|
|
546
566
|
|
|
547
567
|
**改进**:
|
|
548
568
|
- ✅ 更友好的密码输入体验(先尝试空密码)
|
|
549
569
|
- ✅ 简化加密模式选择(只有两种模式)
|
|
550
570
|
- ✅ 更清晰的用户界面和错误提示
|
|
571
|
+
- ✅ 优化参数透传逻辑,更符合用户直觉
|
|
551
572
|
|
|
552
573
|
### v0.1.0(2025-01-03)
|
|
553
574
|
|
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,qBAiK9B;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAqDtD"}
|
package/dist/cli.js
CHANGED
|
@@ -91,6 +91,8 @@ export async function createCLI() {
|
|
|
91
91
|
displaySuccess('配置导入成功');
|
|
92
92
|
return;
|
|
93
93
|
}
|
|
94
|
+
// 获取透传参数(提前统一获取)
|
|
95
|
+
const claudeArgs = getClaudeArgs(process.argv);
|
|
94
96
|
// 强制进入配置模式
|
|
95
97
|
if (options.manage) {
|
|
96
98
|
const shouldContinue = await ui.manageConfiguration();
|
|
@@ -98,8 +100,26 @@ export async function createCLI() {
|
|
|
98
100
|
return; // 导入/导出等操作后直接退出
|
|
99
101
|
}
|
|
100
102
|
// 如果是其他操作(选择、创建、编辑),继续启动 Claude
|
|
103
|
+
const currentProfile = await configManager.getCurrentProfile();
|
|
104
|
+
if (currentProfile) {
|
|
105
|
+
await launchClaude(currentProfile, claudeArgs);
|
|
106
|
+
}
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
// 智能检测模式:
|
|
110
|
+
// - 有透传参数 → 静默模式:直接启动 Claude
|
|
111
|
+
// - 无透传参数 → 交互模式:显示配置管理界面
|
|
112
|
+
if (claudeArgs.length > 0) {
|
|
113
|
+
// 静默模式:直接使用当前配置启动
|
|
114
|
+
const currentProfile = await configManager.getCurrentProfile();
|
|
115
|
+
if (!currentProfile) {
|
|
116
|
+
displayError('未找到配置。请先运行 hop-claude 创建配置');
|
|
117
|
+
process.exit(1);
|
|
118
|
+
}
|
|
119
|
+
await launchClaude(currentProfile, claudeArgs);
|
|
120
|
+
return;
|
|
101
121
|
}
|
|
102
|
-
//
|
|
122
|
+
// 交互模式:显示当前配置 + 询问是否修改
|
|
103
123
|
const shouldContinue = await ui.showCurrentAndAsk();
|
|
104
124
|
if (!shouldContinue) {
|
|
105
125
|
// 用户选择退出
|
|
@@ -111,10 +131,8 @@ export async function createCLI() {
|
|
|
111
131
|
displayError('未选择配置');
|
|
112
132
|
process.exit(1);
|
|
113
133
|
}
|
|
114
|
-
//
|
|
115
|
-
|
|
116
|
-
// 启动 claude
|
|
117
|
-
await launchClaude(currentProfile, claudeArgs);
|
|
134
|
+
// 启动 claude(无透传参数)
|
|
135
|
+
await launchClaude(currentProfile, []);
|
|
118
136
|
}
|
|
119
137
|
catch (error) {
|
|
120
138
|
const err = error instanceof Error ? error : new Error(String(error));
|
|
@@ -133,8 +151,10 @@ export async function createCLI() {
|
|
|
133
151
|
* 获取需要透传给 claude 的参数
|
|
134
152
|
* 支持 -- 分隔符来明确区分 hop-claude 参数和 claude 参数
|
|
135
153
|
* 过滤掉 hop-claude 自己的参数
|
|
154
|
+
* @param argv 命令行参数数组
|
|
155
|
+
* @returns 需要透传的参数数组
|
|
136
156
|
*/
|
|
137
|
-
function getClaudeArgs(argv) {
|
|
157
|
+
export function getClaudeArgs(argv) {
|
|
138
158
|
const hopClaudeFlags = [
|
|
139
159
|
'-m', '--manage',
|
|
140
160
|
'-l', '--list',
|
|
@@ -154,19 +174,25 @@ function getClaudeArgs(argv) {
|
|
|
154
174
|
}
|
|
155
175
|
// 否则,过滤掉 hop-claude 的参数
|
|
156
176
|
const result = [];
|
|
157
|
-
let skip = false;
|
|
158
177
|
for (let i = 2; i < argv.length; i++) {
|
|
159
178
|
const arg = argv[i];
|
|
160
|
-
if (skip) {
|
|
161
|
-
skip = false;
|
|
162
|
-
continue;
|
|
163
|
-
}
|
|
164
179
|
// 跳过 hop-claude 的选项
|
|
165
180
|
if (hopClaudeFlags.includes(arg)) {
|
|
166
|
-
//
|
|
167
|
-
|
|
168
|
-
|
|
181
|
+
// 检查下一个参数是否存在且不是选项
|
|
182
|
+
const nextArg = argv[i + 1];
|
|
183
|
+
if (['-e', '--export', '-i', '--import'].includes(arg)) {
|
|
184
|
+
// 这些选项总是需要值,跳过下一个参数
|
|
185
|
+
if (nextArg) {
|
|
186
|
+
i++; // 跳过值
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
else if (['-s', '--switch'].includes(arg)) {
|
|
190
|
+
// -s 是可选值,只有当下一个参数存在且不是选项时才跳过
|
|
191
|
+
if (nextArg && !nextArg.startsWith('-')) {
|
|
192
|
+
i++; // 跳过值
|
|
193
|
+
}
|
|
169
194
|
}
|
|
195
|
+
// 其他选项(-m, -l, -v, -h, --migrate-encryption, --encryption-info)不需要值
|
|
170
196
|
continue;
|
|
171
197
|
}
|
|
172
198
|
// 其他所有参数都透传
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|