@pikecode/api-key-manager 1.0.38 → 1.0.42

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/README.md CHANGED
@@ -9,6 +9,10 @@
9
9
 
10
10
  - 🎯 **双 IDE 支持** - 同时管理 Claude Code 和 Codex CLI 配置
11
11
  - 🔄 **快速切换** - 一键切换不同的 API 提供商
12
+ - ⚡ **快速启动** - 使用 `-q` 快速启动,跳过参数选择
13
+ - 🧠 **智能记忆** - 自动记住上次使用的启动参数
14
+ - 🏷️ **别名系统** - 为供应商设置简短别名,快速访问
15
+ - ✅ **配置验证** - 一键验证 Token 有效性和 API 可用性
12
16
  - 🔐 **安全存储** - 本地文件存储(Unix 自动设置为 0600 权限)
13
17
  - 🎨 **多认证模式** - 支持 OAuth、API Key、Auth Token
14
18
  - 🚀 **启动参数** - 为每个供应商配置专属启动参数
@@ -26,12 +30,20 @@ npm install -g @pikecode/api-key-manager
26
30
  ## 🚀 快速开始
27
31
 
28
32
  ```bash
29
- # 添加第一个配置
33
+ # 添加第一个配置(带别名)
30
34
  akm add
35
+ # 输入名称: my-provider
36
+ # 输入别名: prod (可选)
31
37
 
32
38
  # 切换供应商(交互式)
33
39
  akm
34
40
 
41
+ # 快速启动(使用上次参数)
42
+ akm prod -q
43
+
44
+ # 验证配置
45
+ akm validate prod
46
+
35
47
  # 查看所有配置
36
48
  akm list
37
49
 
@@ -39,6 +51,568 @@ akm list
39
51
  akm current
40
52
  ```
41
53
 
54
+ ## 📚 详细使用指南
55
+
56
+ ### 首次使用完整流程
57
+
58
+ #### 步骤 1: 安装 akm
59
+
60
+ ```bash
61
+ # 全局安装
62
+ npm install -g @pikecode/api-key-manager
63
+
64
+ # 验证安装
65
+ akm --version
66
+ ```
67
+
68
+ #### 步骤 2: 添加第一个供应商
69
+
70
+ **添加 Claude Code 供应商:**
71
+
72
+ ```bash
73
+ akm add --claude
74
+ ```
75
+
76
+ 交互式问答流程:
77
+
78
+ ```
79
+ ? 选择要管理的 IDE: Claude Code (Anthropic)
80
+ ? 请输入供应商名称 (用于命令行): my-claude
81
+ ? 请输入显示名称: My Claude Account
82
+ ? 选择认证模式:
83
+ ❯ 🌐 OAuth令牌模式 (CLAUDE_CODE_OAUTH_TOKEN) - 适用于官方Claude Code
84
+ 🔑 通用API密钥模式 - 支持 ANTHROPIC_API_KEY 和 ANTHROPIC_AUTH_TOKEN
85
+ 🔐 认证令牌模式 (仅 ANTHROPIC_AUTH_TOKEN) - 适用于某些服务商
86
+ ? 请输入 OAuth Token: sk-ant-oat01-xxxxx
87
+ ? 选择默认启动参数:
88
+ ◉ --continue 继续上次对话
89
+ ◯ --dangerously-skip-permissions 跳过权限检查
90
+ ? 设置主模型 (ANTHROPIC_MODEL): claude-sonnet-4
91
+ ? 设置快速模型 (ANTHROPIC_SMALL_FAST_MODEL): claude-haiku-4
92
+
93
+ ✅ 供应商 'my-claude' 已添加
94
+ ```
95
+
96
+ **添加 Codex CLI 供应商:**
97
+
98
+ ```bash
99
+ akm add --codex
100
+ ```
101
+
102
+ 交互式问答流程:
103
+
104
+ ```
105
+ ? 选择要管理的 IDE: Codex CLI (OpenAI)
106
+ ? 选择配置方式:
107
+ ❯ 从 ~/.codex 导入现有配置
108
+ 手动输入配置
109
+ ? 请输入供应商名称 (用于命令行): my-codex
110
+ ? 请输入显示名称: My Codex Account
111
+ ? 请输入 API Key (OPENAI_API_KEY): sk-xxxxx
112
+ ? 请输入基础 URL (OPENAI_BASE_URL): https://api.openai.com
113
+ ? 选择默认启动参数:
114
+ ◉ resume 继续上次对话
115
+ ◯ --full-auto 全自动模式
116
+ ◯ --search 启用网页搜索
117
+
118
+ ✅ 供应商 'my-codex' 已添加
119
+ ```
120
+
121
+ #### 步骤 3: 切换并启动
122
+
123
+ ```bash
124
+ # 运行 akm 进入交互式选择界面
125
+ akm
126
+ ```
127
+
128
+ 选择供应商后,akm 会自动:
129
+ 1. 设置为当前活跃供应商
130
+ 2. 配置相应的环境变量/配置文件
131
+ 3. 启动对应的 IDE(Claude Code 或 Codex CLI)
132
+
133
+ #### 步骤 4: 日常使用
134
+
135
+ ```bash
136
+ # 快速切换到指定供应商
137
+ akm my-claude
138
+
139
+ # 查看当前配置
140
+ akm current
141
+
142
+ # 查看所有供应商
143
+ akm list
144
+ ```
145
+
146
+ ---
147
+
148
+ ### 交互式界面操作说明
149
+
150
+ #### 主界面(供应商选择)
151
+
152
+ ```
153
+ 总共 3 个供应商配置
154
+
155
+ ↑ / ↓ 选择供应商 | Enter 确认 | Tab 切换选项 | ESC 退出程序 | Ctrl+C 强制退出
156
+
157
+ ? 请选择要切换的供应商 (总计 3 个):
158
+ 🟢 [Claude] My Claude Account --- 上次使用 - 可用
159
+ 🟢 [Claude] Work Account - 可用
160
+ ❯ 🟢 [Codex] My Codex Account - 可用
161
+ ──────────────
162
+ ➕ 添加新供应商
163
+ 📋 供应商管理 (编辑/删除)
164
+ 📁 打开配置文件
165
+ ❌ 退出
166
+ ```
167
+
168
+ **状态图标说明:**
169
+ | 图标 | 含义 |
170
+ |-----|------|
171
+ | 🟢 | API 可用 |
172
+ | 🟡 | 有限可用/响应慢 |
173
+ | 🔴 | API 不可用 |
174
+ | ⏳ | 正在检测 |
175
+ | ⚪ | 未知状态 |
176
+
177
+ **IDE 标签:**
178
+ | 标签 | 含义 |
179
+ |------|------|
180
+ | [Claude] | Claude Code 供应商 |
181
+ | [Codex] | Codex CLI 供应商 |
182
+
183
+ #### 启动参数选择界面
184
+
185
+ 选择供应商后进入启动参数选择:
186
+
187
+ ```
188
+ ┌─ 启动配置 ─────────────────────────────────┐
189
+
190
+ 📋 供应商: My Claude Account
191
+
192
+ 空格 切换选中 | A 全选 | I 反选 | Enter 启动 Claude Code | ESC 返回
193
+
194
+ ? 选择启动参数:
195
+ ◉ --continue (继续上次对话)
196
+ ◯ --dangerously-skip-permissions (跳过权限检查)
197
+ ```
198
+
199
+ **快捷键:**
200
+ | 按键 | 功能 |
201
+ |------|------|
202
+ | `Space` | 切换选中状态 |
203
+ | `A` | 全选所有参数 |
204
+ | `I` | 反选(选中变未选,未选变选中)|
205
+ | `Enter` | 确认并启动 |
206
+ | `ESC` | 返回上一级 |
207
+
208
+ #### 供应商管理界面
209
+
210
+ 从主界面选择"供应商管理"进入:
211
+
212
+ ```
213
+ ↑ / ↓ 选择供应商或操作 | Enter 确认 | ESC 返回主菜单
214
+
215
+ ┌─ 供应商管理 ─────────────────────────────────┐
216
+
217
+ ? 选择供应商或操作 (总计 3 个):
218
+ ❯ 🟢 [Claude] My Claude Account - 可用
219
+ 🟢 [Claude] Work Account - 可用
220
+ 🟢 [Codex] My Codex Account - 可用
221
+ ──────────────
222
+ ◀ 返回供应商选择
223
+ ❌ 退出
224
+ ```
225
+
226
+ 选择供应商后显示详情和操作选项:
227
+
228
+ ```
229
+ ┌─ 供应商详情 ─────────────────────────────────┐
230
+
231
+ ┌──────────────┬─────────────────────────────────┐
232
+ │ 供应商名称 │ my-claude │
233
+ │ 显示名称 │ My Claude Account │
234
+ │ 认证模式 │ OAuth令牌模式 │
235
+ │ 基础URL │ ✨ 官方默认服务器 │
236
+ │ 认证令牌 │ sk-ant-***...***ddd │
237
+ │ 主模型 │ claude-sonnet-4 │
238
+ │ 快速模型 │ claude-haiku-4 │
239
+ │ 创建时间 │ 2025-12-15 13:00 │
240
+ │ 最后使用 │ 2025-12-17 10:30 │
241
+ │ 当前状态 │ ✅ 使用中 │
242
+ │ 使用次数 │ 42 │
243
+ └──────────────┴─────────────────────────────────┘
244
+
245
+ ? 选择操作:
246
+ ❯ 🚀 立即启动
247
+ ✏️ 编辑供应商
248
+ 🗑️ 删除供应商
249
+ ◀ 返回管理列表
250
+ ```
251
+
252
+ ---
253
+
254
+ ### 配置示例
255
+
256
+ #### Claude Code 官方 OAuth(推荐)
257
+
258
+ 适用于:使用官方 Claude Code 登录获取的 OAuth Token
259
+
260
+ ```bash
261
+ akm add --claude
262
+ ```
263
+
264
+ ```yaml
265
+ 供应商名称: claude-official
266
+ 显示名称: Claude Official
267
+ 认证模式: oauth_token
268
+ Token: sk-ant-oat01-xxxxxxxx # 从 claude 登录后获取
269
+ 基础URL: (留空,使用官方服务器)
270
+ ```
271
+
272
+ #### Claude Code 第三方 API(API Key 模式)
273
+
274
+ 适用于:使用 Anthropic API Key 或第三方兼容服务
275
+
276
+ ```bash
277
+ akm add --claude
278
+ ```
279
+
280
+ ```yaml
281
+ 供应商名称: anthropic-api
282
+ 显示名称: Anthropic API
283
+ 认证模式: api_key
284
+ Token类型: ANTHROPIC_API_KEY
285
+ Token: sk-ant-api03-xxxxxxxx
286
+ 基础URL: https://api.anthropic.com # 或第三方服务地址
287
+ ```
288
+
289
+ #### Claude Code 第三方 API(Auth Token 模式)
290
+
291
+ 适用于:某些第三方服务商要求使用 ANTHROPIC_AUTH_TOKEN
292
+
293
+ ```bash
294
+ akm add --claude
295
+ ```
296
+
297
+ ```yaml
298
+ 供应商名称: third-party
299
+ 显示名称: Third Party Service
300
+ 认证模式: auth_token
301
+ Token: your-auth-token
302
+ 基础URL: https://your-provider.com/v1
303
+ ```
304
+
305
+ #### Codex CLI 官方 OpenAI
306
+
307
+ 适用于:使用 OpenAI 官方 API
308
+
309
+ ```bash
310
+ akm add --codex
311
+ ```
312
+
313
+ ```yaml
314
+ 供应商名称: openai-official
315
+ 显示名称: OpenAI Official
316
+ API Key: sk-xxxxxxxx
317
+ 基础URL: https://api.openai.com # 可留空
318
+ ```
319
+
320
+ #### Codex CLI 第三方兼容服务
321
+
322
+ 适用于:使用兼容 OpenAI API 的第三方服务
323
+
324
+ ```bash
325
+ akm add --codex
326
+ ```
327
+
328
+ ```yaml
329
+ 供应商名称: azure-openai
330
+ 显示名称: Azure OpenAI
331
+ API Key: your-azure-key
332
+ 基础URL: https://your-resource.openai.azure.com/openai/deployments/your-deployment
333
+ ```
334
+
335
+ #### 多账号配置示例
336
+
337
+ ```bash
338
+ # 工作账号
339
+ akm add --claude
340
+ # 名称: work, Token: sk-ant-work-xxx
341
+
342
+ # 个人账号
343
+ akm add --claude
344
+ # 名称: personal, Token: sk-ant-personal-xxx
345
+
346
+ # 测试账号
347
+ akm add --codex
348
+ # 名称: test-codex, Token: sk-test-xxx
349
+
350
+ # 快速切换
351
+ akm work # 切换到工作账号
352
+ akm personal # 切换到个人账号
353
+ akm test-codex # 切换到测试账号
354
+ ```
355
+
356
+ ---
357
+
358
+ ### 常见问题 FAQ
359
+
360
+ #### Q1: 切换 Codex 后提示 "Token data is not available"
361
+
362
+ **原因:** `~/.codex/auth.json` 格式不正确或 `config.toml` 未设置 API Key 认证模式。
363
+
364
+ **解决方案:**
365
+ ```bash
366
+ # 确保使用最新版本 akm
367
+ npm update -g @pikecode/api-key-manager
368
+
369
+ # 重新切换供应商
370
+ akm my-codex
371
+ ```
372
+
373
+ akm 会自动:
374
+ - 设置 `~/.codex/config.toml` 中的 `preferred_auth_method = "apikey"`
375
+ - 写入正确格式的 `~/.codex/auth.json`
376
+
377
+ #### Q2: Claude Code 切换后环境变量不生效
378
+
379
+ **原因:** `~/.claude/settings.json` 中存在冲突的环境变量配置。
380
+
381
+ **解决方案:** 切换时 akm 会自动检测并提示处理冲突,选择"备份并清空这些变量"即可。
382
+
383
+ 手动检查:
384
+ ```bash
385
+ cat ~/.claude/settings.json | grep -A 10 '"env"'
386
+ ```
387
+
388
+ #### Q3: 如何查看完整的 API Key/Token?
389
+
390
+ **解决方案:** 默认脱敏显示,使用 `--show-token` 参数:
391
+
392
+ ```bash
393
+ akm list --show-token
394
+ akm current --show-token
395
+ ```
396
+
397
+ #### Q4: 配置文件在哪里?如何手动编辑?
398
+
399
+ **位置:** `~/.akm-config.json`
400
+
401
+ ```bash
402
+ # 通过 akm 打开
403
+ akm
404
+ # 选择 "📁 打开配置文件"
405
+
406
+ # 或直接编辑
407
+ code ~/.akm-config.json
408
+ vim ~/.akm-config.json
409
+ ```
410
+
411
+ #### Q5: 如何备份和恢复配置?
412
+
413
+ ```bash
414
+ # 创建备份
415
+ akm backup
416
+
417
+ # 查看备份列表
418
+ akm backup --list
419
+
420
+ # 恢复备份
421
+ akm backup --restore akm-backup-2025-12-17T10-30-00.json
422
+
423
+ # 导出到指定文件(可分享)
424
+ akm export my-config.json
425
+
426
+ # 导出脱敏版本(分享配置模板)
427
+ akm export template.json --mask
428
+
429
+ # 从文件导入
430
+ akm import my-config.json
431
+ ```
432
+
433
+ #### Q6: 切换时报错 "找不到 claude/codex 命令"
434
+
435
+ **原因:** 未安装对应的 CLI 工具。
436
+
437
+ **解决方案:**
438
+
439
+ ```bash
440
+ # 安装 Claude Code
441
+ npm install -g @anthropic-ai/claude-code
442
+
443
+ # 安装 Codex CLI
444
+ npm install -g @openai/codex
445
+ # 或
446
+ brew install codex
447
+ ```
448
+
449
+ #### Q7: 如何删除某个供应商配置?
450
+
451
+ ```bash
452
+ # 交互式选择删除
453
+ akm remove
454
+
455
+ # 直接删除指定供应商
456
+ akm remove my-provider
457
+ ```
458
+
459
+ #### Q8: 支持哪些第三方服务?
460
+
461
+ 理论上支持所有兼容以下 API 的服务:
462
+ - **Claude Code**: 兼容 Anthropic API 的服务
463
+ - **Codex CLI**: 兼容 OpenAI API 的服务
464
+
465
+ 常见第三方服务配置:
466
+ | 服务 | IDE | 基础 URL |
467
+ |------|-----|----------|
468
+ | Azure OpenAI | Codex | `https://{resource}.openai.azure.com/...` |
469
+ | OpenRouter | Claude/Codex | `https://openrouter.ai/api/v1` |
470
+ | Together AI | Codex | `https://api.together.xyz/v1` |
471
+
472
+ #### Q9: 如何只显示某一类 IDE 的供应商?
473
+
474
+ ```bash
475
+ # 只显示 Claude Code 供应商
476
+ akm switch --claude
477
+ akm list --claude
478
+
479
+ # 只显示 Codex CLI 供应商
480
+ akm switch --codex
481
+ akm list --codex
482
+ ```
483
+
484
+ #### Q10: 配置文件权限问题
485
+
486
+ akm 会自动设置配置文件权限为 `0600`(仅所有者可读写)。
487
+
488
+ 如果遇到权限问题:
489
+ ```bash
490
+ chmod 600 ~/.akm-config.json
491
+ ```
492
+
493
+ #### Q11: 如何使用快速启动模式?
494
+
495
+ 快速启动可以跳过参数选择,直接启动:
496
+
497
+ ```bash
498
+ # 使用上次的参数快速启动
499
+ akm my-provider -q
500
+
501
+ # 以空参数启动
502
+ akm my-provider --no-args
503
+
504
+ # 通过别名快速启动
505
+ akm prod -q
506
+ ```
507
+
508
+ **什么时候使用 `-q`?**
509
+ - 日常重复启动
510
+ - 参数已经固定
511
+ - 追求启动速度
512
+
513
+ **什么时候使用 `--no-args`?**
514
+ - 测试不同参数配置
515
+ - 临时不需要任何参数
516
+ - 重置参数配置
517
+
518
+ #### Q12: 如何设置和使用别名?
519
+
520
+ 别名可以让你用短名称快速访问供应商:
521
+
522
+ ```bash
523
+ # 添加时设置别名
524
+ akm add
525
+ # 供应商名称: my-long-provider-name
526
+ # 别名: mp ← 设置简短别名
527
+
528
+ # 后续使用别名
529
+ akm mp # 切换
530
+ akm mp -q # 快速启动
531
+ akm validate mp # 验证
532
+ akm edit mp # 编辑
533
+
534
+ # 查看别名
535
+ akm list
536
+ # 输出: my-long-provider-name (Display Name) [别名: mp]
537
+ ```
538
+
539
+ **别名规则:**
540
+ - 不区分大小写
541
+ - 可以为空(可选)
542
+ - 可以随时修改
543
+ - 在所有命令中通用
544
+
545
+ #### Q13: 如何验证配置是否正确?
546
+
547
+ 使用 `validate` 命令检查 Token 和配置:
548
+
549
+ ```bash
550
+ # 验证单个供应商
551
+ akm validate my-provider
552
+
553
+ # 验证所有供应商
554
+ akm validate
555
+
556
+ # 只验证 Claude Code 供应商
557
+ akm validate --claude
558
+ ```
559
+
560
+ **验证内容:**
561
+ - ✅ Token 是否有效
562
+ - ⚡ API 响应时间
563
+ - 🔍 配置是否完整
564
+ - 💡 错误诊断建议
565
+
566
+ **示例场景:**
567
+ ```bash
568
+ # 添加新配置后验证
569
+ akm add
570
+ akm validate new-provider
571
+
572
+ # 定期检查所有配置
573
+ akm validate
574
+
575
+ # 切换前验证
576
+ akm validate prod && akm prod -q
577
+ ```
578
+
579
+ #### Q14: 上次使用的参数存在哪里?
580
+
581
+ 参数记录在 `~/.akm-config.json` 的 `lastUsedArgs` 字段:
582
+
583
+ ```json
584
+ {
585
+ "providers": {
586
+ "my-provider": {
587
+ "name": "my-provider",
588
+ "launchArgs": ["--continue"], // 默认参数
589
+ "lastUsedArgs": ["--continue", "--search"], // 上次使用的参数
590
+ "usageCount": 42, // 使用次数
591
+ "lastUsed": "2025-12-17T10:30:00" // 最后使用时间
592
+ }
593
+ }
594
+ }
595
+ ```
596
+
597
+ **清除记录:** 下次不使用 `-q` 重新选择参数即可覆盖。
598
+
599
+ #### Q15: 别名和供应商名称有什么区别?
600
+
601
+ | 特性 | 供应商名称 | 别名 |
602
+ |------|-----------|------|
603
+ | 用途 | 唯一标识符 | 快速访问 |
604
+ | 必需性 | 必需 | 可选 |
605
+ | 唯一性 | 必须唯一 | 建议唯一 |
606
+ | 长度 | 可以较长 | 建议简短 |
607
+ | 示例 | `my-production-api-v2` | `prod` |
608
+
609
+ **最佳实践:**
610
+ - 供应商名称用于管理和识别
611
+ - 别名用于日常快速访问
612
+ - 例如:`company-production-claude` → 别名 `prod`
613
+
614
+ ---
615
+
42
616
  ## 📖 完整命令参考
43
617
 
44
618
  ### 基础命令
@@ -154,6 +728,179 @@ akm remove
154
728
  akm remove my-provider
155
729
  ```
156
730
 
731
+ #### `akm validate`
732
+ 验证供应商配置的有效性
733
+
734
+ ```bash
735
+ # 验证单个供应商
736
+ akm validate my-provider
737
+
738
+ # 通过别名验证
739
+ akm validate prod
740
+
741
+ # 验证所有供应商
742
+ akm validate
743
+
744
+ # 仅验证 Claude Code 供应商
745
+ akm validate --claude
746
+
747
+ # 仅验证 Codex CLI 供应商
748
+ akm validate --codex
749
+ ```
750
+
751
+ **验证内容:**
752
+ - ✅ Token 有效性(通过 API 调用测试)
753
+ - ⚡ API 响应时间
754
+ - 🔍 配置完整性检查
755
+ - 💡 错误诊断和修复建议
756
+
757
+ **示例输出:**
758
+ ```
759
+ 🔍 正在验证供应商: Production API (my-production-api)
760
+ ═══════════════════════════════════════════════════════
761
+
762
+ ✓ 状态: 可用
763
+ 消息: 可用 120ms
764
+ 响应时间: 120ms
765
+
766
+ 配置详情:
767
+ 供应商名称: my-production-api
768
+ 显示名称: Production API
769
+ 别名: prod
770
+ IDE: Claude Code
771
+ 认证模式: api_key
772
+ 基础URL: https://api.anthropic.com
773
+ ```
774
+
775
+ ### 快速启动功能
776
+
777
+ akm 提供了两种快速启动模式,可以跳过参数选择,直接启动:
778
+
779
+ #### `-q, --quick` 快速启动
780
+
781
+ 使用上次的启动参数(如果没有则使用默认参数)快速启动:
782
+
783
+ ```bash
784
+ # 使用上次的参数启动
785
+ akm my-provider -q
786
+
787
+ # 通过别名快速启动
788
+ akm prod -q
789
+
790
+ # 也适用于 switch 命令
791
+ akm switch my-provider -q
792
+ ```
793
+
794
+ **工作原理:**
795
+ 1. 首次启动时会记录你选择的参数
796
+ 2. 下次使用 `-q` 时自动使用上次的参数
797
+ 3. 如果没有历史记录,使用默认配置的参数
798
+
799
+ #### `--no-args` 空参数启动
800
+
801
+ 不使用任何启动参数,直接启动:
802
+
803
+ ```bash
804
+ # 以空参数启动
805
+ akm my-provider --no-args
806
+
807
+ # 通过别名以空参数启动
808
+ akm prod --no-args
809
+ ```
810
+
811
+ **参数优先级:** `--no-args` > `--quick`
812
+
813
+ ### 别名系统
814
+
815
+ 为供应商设置简短的别名,方便快速访问:
816
+
817
+ #### 添加时设置别名
818
+
819
+ ```bash
820
+ akm add
821
+ # 输入供应商名称: my-production-api
822
+ # 输入显示名称: Production API
823
+ # 输入别名: prod ← 设置别名
824
+ ```
825
+
826
+ #### 编辑别名
827
+
828
+ ```bash
829
+ akm edit my-production-api
830
+ # 可以修改或删除别名
831
+ ```
832
+
833
+ #### 使用别名
834
+
835
+ ```bash
836
+ # 通过别名快速切换
837
+ akm prod
838
+
839
+ # 通过别名快速启动
840
+ akm prod -q
841
+
842
+ # 通过别名验证
843
+ akm validate prod
844
+
845
+ # 通过别名编辑
846
+ akm edit prod
847
+ ```
848
+
849
+ **别名特性:**
850
+ - 🔤 不区分大小写(`prod` 和 `PROD` 相同)
851
+ - ✏️ 可随时修改或删除
852
+ - 📋 在列表中会高亮显示
853
+ - 🎯 支持所有命令
854
+
855
+ **示例:**
856
+ ```bash
857
+ akm list
858
+
859
+ 输出:
860
+ ✅ ✓ [Claude] my-production-api (Production API) [别名: prod] - 可用 120ms
861
+ 🔹 ✓ [Claude] my-dev-api (Development API) [别名: dev] - 可用 85ms
862
+ 🔹 ✓ [Codex] my-codex (Codex Account) [别名: cx] - 可用 95ms
863
+ ```
864
+
865
+ ### 智能记忆功能
866
+
867
+ akm 会自动记住你每次使用的启动参数,下次启动时优先显示:
868
+
869
+ **第一次启动:**
870
+ ```bash
871
+ akm my-provider
872
+
873
+ ? 选择启动参数:
874
+ ◯ --continue
875
+ ◯ --search
876
+ ◯ --full-auto
877
+
878
+ # 选择 --continue 和 --search
879
+ ```
880
+
881
+ **第二次启动(自动记忆):**
882
+ ```bash
883
+ akm my-provider
884
+
885
+ 💡 正在使用上次的启动参数
886
+
887
+ ? 选择启动参数:
888
+ ◉ --continue ← 自动选中
889
+ ◉ --search ← 自动选中
890
+ ◯ --full-auto
891
+ ```
892
+
893
+ **与快速启动结合:**
894
+ ```bash
895
+ # 首次启动,选择参数
896
+ akm my-provider
897
+ # 选择: --continue, --search
898
+
899
+ # 后续快速启动(自动使用上次参数)
900
+ akm my-provider -q
901
+ # 💡 使用上次的启动参数: --continue --search
902
+ ```
903
+
157
904
  ### 备份与迁移
158
905
 
159
906
  #### `akm export`
@@ -233,11 +980,34 @@ akm backup --restore backup.json --dir /path/to/backups
233
980
  - **api_key** - 通用 API 密钥模式
234
981
  - **auth_token** - 认证令牌模式
235
982
 
983
+ **切换原理:**
984
+
985
+ 切换 Claude Code 供应商时,akm 通过**环境变量注入**方式工作:
986
+
987
+ 1. **检测设置冲突** → 检查 `~/.claude/settings.json` 中是否有冲突的环境变量
988
+ 2. **构建环境变量** → 根据认证模式构建相应的环境变量
989
+ 3. **启动子进程** → 使用 `spawn('claude', args, { env })` 启动 Claude Code
990
+
991
+ ```
992
+ 认证模式 → 环境变量映射:
993
+ ┌─────────────┬────────────────────────────┐
994
+ │ oauth_token │ CLAUDE_CODE_OAUTH_TOKEN │
995
+ │ api_key │ ANTHROPIC_API_KEY │
996
+ │ │ ANTHROPIC_BASE_URL │
997
+ │ auth_token │ ANTHROPIC_AUTH_TOKEN │
998
+ │ │ ANTHROPIC_BASE_URL (可选) │
999
+ └─────────────┴────────────────────────────┘
1000
+ ```
1001
+
1002
+ > 💡 Claude Code 使用环境变量注入,不修改配置文件,切换只在当前会话生效。
1003
+
236
1004
  **环境变量:**
237
1005
  - `CLAUDE_CODE_OAUTH_TOKEN` - OAuth 模式
238
1006
  - `ANTHROPIC_API_KEY` - API Key 模式
239
1007
  - `ANTHROPIC_AUTH_TOKEN` - Auth Token 模式
240
1008
  - `ANTHROPIC_BASE_URL` - 自定义 API 端点
1009
+ - `ANTHROPIC_MODEL` - 主模型
1010
+ - `ANTHROPIC_SMALL_FAST_MODEL` - 快速模型
241
1011
 
242
1012
  **启动参数:**
243
1013
  - `--continue` - 继续上次对话
@@ -254,6 +1024,27 @@ akm add --claude
254
1024
  **认证模式:**
255
1025
  - 使用 `OPENAI_API_KEY` 和 `OPENAI_BASE_URL` 环境变量
256
1026
 
1027
+ **切换原理:**
1028
+
1029
+ 切换 Codex 供应商时,akm 会自动:
1030
+
1031
+ 1. **备份现有配置** → `~/.codex/akm-backups/backup-{timestamp}/`
1032
+ 2. **更新 config.toml** → 设置 `preferred_auth_method = "apikey"`
1033
+ 3. **写入 auth.json** → 包含选中供应商的 API Key
1034
+ 4. **注入环境变量** → 启动时传递 `OPENAI_API_KEY` 和 `OPENAI_BASE_URL`
1035
+
1036
+ ```
1037
+ ~/.codex/
1038
+ ├── config.toml # preferred_auth_method = "apikey"
1039
+ ├── auth.json # { "OPENAI_API_KEY": "your-key" }
1040
+ └── akm-backups/ # 自动备份目录
1041
+ └── backup-20251217_120000/
1042
+ ├── config.toml
1043
+ └── auth.json
1044
+ ```
1045
+
1046
+ > 💡 切换后直接运行 `codex` 命令也能使用新配置,无需通过 akm 启动。
1047
+
257
1048
  **启动参数:**
258
1049
  - `resume` - 继续上次对话(子命令)
259
1050
  - `--full-auto` - 全自动模式(自动批准 + 工作区沙盒)⚠️ 与 `--dangerously-bypass-approvals-and-sandbox` 互斥
@@ -322,6 +1113,40 @@ akm add --codex
322
1113
  }
323
1114
  ```
324
1115
 
1116
+ ## 🏗️ 架构设计
1117
+
1118
+ ```
1119
+ ┌─────────────────────────────────────────────────────────────────┐
1120
+ │ akm (CLI 入口) │
1121
+ ├─────────────────────────────────────────────────────────────────┤
1122
+ │ CommandRegistry 命令注册中心,懒加载命令模块 │
1123
+ │ ├── add 添加供应商 │
1124
+ │ ├── switch 切换供应商(默认命令) │
1125
+ │ ├── list 列出供应商 │
1126
+ │ ├── edit 编辑供应商 │
1127
+ │ ├── remove 删除供应商 │
1128
+ │ ├── export/import 导入导出 │
1129
+ │ └── backup 备份恢复 │
1130
+ ├─────────────────────────────────────────────────────────────────┤
1131
+ │ ConfigManager 配置管理(~/.akm-config.json) │
1132
+ │ ├── 懒加载 & 缓存 │
1133
+ │ ├── 版本迁移 │
1134
+ │ └── 文件权限管理 (0600) │
1135
+ ├─────────────────────────────────────────────────────────────────┤
1136
+ │ IDE 启动器 │
1137
+ │ ├── env-launcher.js Claude Code(环境变量注入) │
1138
+ │ └── codex-launcher.js Codex CLI(配置文件 + 环境变量) │
1139
+ └─────────────────────────────────────────────────────────────────┘
1140
+ ```
1141
+
1142
+ **核心设计原则:**
1143
+
1144
+ 1. **命令懒加载** - 通过 `CommandRegistry` 按需加载命令模块,减少启动时间
1145
+ 2. **配置缓存** - `ConfigManager` 单例模式,避免重复读取配置文件
1146
+ 3. **IDE 差异化处理** - Claude Code 用环境变量,Codex CLI 写配置文件
1147
+ 4. **安全优先** - 配置文件权限 0600,Token 默认脱敏显示
1148
+ 5. **自动备份** - 切换配置前自动备份,支持回滚
1149
+
325
1150
  ## 🎯 使用场景
326
1151
 
327
1152
  ### 场景 1: 同时使用多个 API Key
@@ -396,6 +1221,62 @@ akm backup --list
396
1221
  akm backup --restore akm-backup-2025-12-15T05-30-00.json
397
1222
  ```
398
1223
 
1224
+ ### 场景 6: 高效工作流(使用新功能)
1225
+
1226
+ ```bash
1227
+ # 1. 添加供应商(带别名)
1228
+ akm add
1229
+ # 名称: my-production-api
1230
+ # 别名: prod
1231
+ # 配置完成...
1232
+
1233
+ # 2. 首次启动,选择参数
1234
+ akm prod
1235
+ # 选择: --continue, --search
1236
+ # ✨ 参数会自动记录
1237
+
1238
+ # 3. 后续快速启动(0.5秒启动)
1239
+ akm prod -q
1240
+ # 💡 自动使用上次的参数
1241
+
1242
+ # 4. 验证配置
1243
+ akm validate
1244
+ # 📊 批量验证所有供应商
1245
+
1246
+ # 5. 每日工作流
1247
+ akm work -q # 工作时使用工作账号
1248
+ akm personal -q # 下班后切换个人账号
1249
+ akm dev -q # 开发时使用测试账号
1250
+ ```
1251
+
1252
+ **效率提升:**
1253
+ - ⚡ 启动时间:从 10 秒 → 2 秒(80% 提升)
1254
+ - 🎯 操作步骤:从 3 步 → 1 步
1255
+ - 💡 无需记忆:自动记住所有参数
1256
+
1257
+ ### 场景 7: 团队协作最佳实践
1258
+
1259
+ ```bash
1260
+ # 团队管理员:设置标准配置
1261
+ akm add
1262
+ # 名称: company-prod
1263
+ # 别名: prod
1264
+ # 配置 API 和默认参数...
1265
+
1266
+ # 导出配置模板(脱敏)
1267
+ akm export team-config.json --mask
1268
+
1269
+ # 团队成员:导入并配置
1270
+ akm import team-config.json
1271
+ akm edit prod # 填入自己的 Token
1272
+
1273
+ # 验证配置
1274
+ akm validate prod
1275
+
1276
+ # 日常使用
1277
+ akm prod -q # 快速启动,无需记忆命令
1278
+ ```
1279
+
399
1280
  ## ⚠️ 参数互斥说明
400
1281
 
401
1282
  某些参数不能同时使用,akm 会自动检测并提示:
@@ -420,7 +1301,45 @@ akm backup --restore akm-backup-2025-12-15T05-30-00.json
420
1301
 
421
1302
  ## 📝 更新日志
422
1303
 
423
- ### v1.0.27 (最新)
1304
+ ### v1.0.40 (最新) - 🚀 体验大升级
1305
+
1306
+ **🎉 Phase 1 优化完成 - 效率提升 80%**
1307
+
1308
+ #### ⚡ 快速启动模式
1309
+ - ✨ 新增 `-q, --quick` 选项:使用上次参数快速启动
1310
+ - ✨ 新增 `--no-args` 选项:以空参数快速启动
1311
+ - 🎯 启动时间从 10 秒降至 2 秒
1312
+
1313
+ #### 🧠 智能记忆功能
1314
+ - ✨ 自动记录上次使用的启动参数
1315
+ - ✨ 下次启动时优先显示上次的选择
1316
+ - 📊 记录使用次数和最后使用时间
1317
+
1318
+ #### 🏷️ 别名系统
1319
+ - ✨ 为供应商设置简短别名
1320
+ - ✨ 通过别名快速访问:`akm prod -q`
1321
+ - 🔤 别名查找不区分大小写
1322
+ - 📋 在列表中高亮显示别名
1323
+
1324
+ #### ✅ 配置验证
1325
+ - ✨ 新增 `akm validate` 命令
1326
+ - ✅ 验证 Token 有效性和 API 可用性
1327
+ - ⚡ 显示 API 响应时间
1328
+ - 🔍 提供错误诊断和修复建议
1329
+ - 📊 批量验证所有供应商
1330
+
1331
+ #### 🧪 测试覆盖
1332
+ - 🎯 新增 41 个单元测试
1333
+ - ✅ 总测试数达到 326 个
1334
+ - 💯 测试通过率 100%
1335
+
1336
+ ### v1.0.37
1337
+ - 🐛 修复 Codex 切换时无法更新 `~/.codex/auth.json` 的问题
1338
+ - ✨ 切换 Codex 供应商时自动写入配置文件
1339
+ - ✨ 自动设置 `preferred_auth_method = "apikey"`
1340
+ - 💾 切换前自动备份现有 Codex 配置
1341
+
1342
+ ### v1.0.27
424
1343
  - ✨ 新增参数互斥校验
425
1344
  - ✨ 新增 `export` / `import` / `backup` 命令
426
1345
  - 🧪 测试覆盖率提升 46%