@pikecode/api-key-manager 1.0.45 → 1.1.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/README.md CHANGED
@@ -1,641 +1,89 @@
1
1
  # API Key Manager (akm)
2
2
 
3
- 一个强大的 CLI 工具,用于管理和快速切换 **Claude Code** 和 **Codex CLI** 的 API 配置。
3
+ 一个 CLI 工具,用于管理和快速切换 **Claude Code** 和 **Codex CLI** 的 API 配置。
4
4
 
5
5
  [![npm version](https://img.shields.io/npm/v/@pikecode/api-key-manager.svg)](https://www.npmjs.com/package/@pikecode/api-key-manager)
6
6
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
7
7
 
8
- ## 功能特性
8
+ ## 功能特性
9
9
 
10
- - 🎯 **双 IDE 支持** - 同时管理 Claude Code 和 Codex CLI 配置
11
- - 🔄 **快速切换** - 一键切换不同的 API 提供商
12
- - ⚡ **快速启动** - 使用 `-q` 快速启动,跳过参数选择
13
- - 🧠 **智能记忆** - 自动记住上次使用的启动参数
14
- - 🏷️ **别名系统** - 为供应商设置简短别名,快速访问
15
- - **配置验证** - 一键验证 Token 有效性和 API 可用性
16
- - 🔐 **安全存储** - 本地文件存储(Unix 自动设置为 0600 权限)
17
- - 🎨 **多认证模式** - 支持 OAuth、API Key、Auth Token
18
- - 🚀 **启动参数** - 为每个供应商配置专属启动参数
19
- - 💾 **备份恢复** - 配置导出、导入、备份功能
20
- - 🏷️ **智能过滤** - 按 IDE 类型过滤供应商列表
21
- - **参数校验** - 自动检测互斥参数冲突
22
- - 🌍 **跨平台** - macOS / Linux / Windows
10
+ - 🎯 **双 IDE 支持** 同时管理 Claude Code 和 Codex CLI 配置
11
+ - 🔄 **快速切换** 一键切换不同的 API 供应商
12
+ - ⚡ **快速启动** `-q` 跳过参数选择,秒级启动
13
+ - 🧠 **智能记忆** 自动记住上次使用的启动参数
14
+ - 🏷️ **别名系统** 为供应商设置简短别名
15
+ - 🔌 **MCP 管理** 管理 Claude Code 的 MCP 服务器配置
16
+ - 🧹 **配置清理** 清理 Claude Code 配置文件中的冗余数据
17
+ - 📋 **克隆配置** 快速克隆现有供应商配置
18
+ - **配置验证** 验证 Token 有效性和 API 可用性
19
+ - 🔐 **安全存储** 本地文件存储,Unix 自动设置 0600 权限
20
+ - 💾 **备份恢复** 配置导出、导入、备份功能
21
+ - 🌍 **跨平台** macOS / Linux / Windows
23
22
 
24
- ## 📦 安装
23
+ ## 安装
25
24
 
26
25
  ```bash
27
26
  npm install -g @pikecode/api-key-manager
28
27
  ```
29
28
 
30
- ## 🚀 快速开始
29
+ ## 快速开始
31
30
 
32
31
  ```bash
33
- # 添加第一个配置(带别名)
32
+ # 添加供应商配置
34
33
  akm add
35
- # 输入名称: my-provider
36
- # 输入别名: prod (可选)
37
34
 
38
- # 切换供应商(交互式)
35
+ # 交互式切换供应商并启动
39
36
  akm
40
37
 
41
38
  # 快速启动(使用上次参数)
42
- akm prod -q
43
-
44
- # 验证配置
45
- akm validate prod
39
+ akm my-provider -q
46
40
 
47
41
  # 查看所有配置
48
42
  akm list
49
43
 
50
- # 查看当前激活的配置
51
- akm current
52
- ```
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
44
  # 查看当前配置
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` |
45
+ akm current
46
+ ```
608
47
 
609
- **最佳实践:**
610
- - 供应商名称用于管理和识别
611
- - 别名用于日常快速访问
612
- - 例如:`company-production-claude` → 别名 `prod`
48
+ ## 命令参考
613
49
 
614
- ---
50
+ ### 核心命令
615
51
 
616
- ## 📖 完整命令参考
52
+ | 命令 | 说明 |
53
+ |------|------|
54
+ | `akm` / `akm switch` | 交互式选择和切换供应商 |
55
+ | `akm add` | 添加新的供应商配置 |
56
+ | `akm remove [provider]` | 删除供应商配置 |
57
+ | `akm list` | 列出所有供应商 |
58
+ | `akm current` | 显示当前激活的配置 |
59
+ | `akm edit [provider]` | 编辑供应商配置 |
617
60
 
618
- ### 基础命令
61
+ ### 运维命令
619
62
 
620
- #### `akm` / `akm switch`
621
- 交互式选择和切换供应商
63
+ | 命令 | 说明 |
64
+ |------|------|
65
+ | `akm export [file]` | 导出配置到文件 |
66
+ | `akm import <file>` | 从文件导入配置 |
67
+ | `akm backup` | 备份和恢复配置 |
68
+ | `akm validate [provider]` | 验证供应商配置有效性 |
69
+ | `akm clone [source]` | 克隆现有供应商配置 |
622
70
 
623
- ```bash
624
- # 显示所有供应商
625
- akm
71
+ ### 工具命令
626
72
 
627
- # 直接切换到指定供应商
628
- akm my-provider
73
+ | 命令 | 说明 |
74
+ |------|------|
75
+ | `akm stats [provider]` | 显示供应商使用统计 |
76
+ | `akm health [provider]` | 检查配置健康状态 |
77
+ | `akm batch <operation>` | 批量操作供应商 |
78
+ | `akm benchmark` | 供应商性能测试和对比 |
79
+ | `akm claude <subcommand>` | Claude Code 配置管理 (clean/analyze) |
80
+ | `akm mcp <subcommand>` | MCP 服务器管理 (list/add/edit/remove) |
629
81
 
630
- # 仅显示 Codex CLI 供应商
631
- akm switch --codex
82
+ ---
632
83
 
633
- # 仅显示 Claude Code 供应商
634
- akm switch --claude
635
- ```
84
+ ## 详细使用指南
636
85
 
637
- #### `akm add`
638
- 添加新的 API 供应商配置
86
+ ### 添加供应商
639
87
 
640
88
  ```bash
641
89
  # 交互式添加(会询问 IDE 类型)
@@ -648,434 +96,298 @@ akm add --claude
648
96
  akm add --codex
649
97
  ```
650
98
 
651
- **添加过程中可配置:**
652
- - IDE 类型(Claude Code / Codex CLI)
653
- - 供应商名称和显示名称
654
- - 认证模式(仅 Claude Code)
655
- - API 密钥 / OAuth Token
656
- - 基础 URL
657
- - 启动参数
658
- - 模型配置
99
+ 添加流程分两步:
659
100
 
660
- #### `akm list`
661
- 列出所有已保存的配置
101
+ **步骤 1 — 填写供应商信息:**
102
+ - 选择 IDE 类型(Claude Code / Codex CLI)
103
+ - 输入供应商名称
104
+ - 选择认证模式(Claude Code 有两种)
105
+ - 输入 API 基础 URL 和 Token
662
106
 
663
- ```bash
664
- # 列出所有供应商
665
- akm list
107
+ **步骤 2 — 可选配置:**
108
+ - 启动参数
109
+ - 模型配置
666
110
 
667
- # 仅列出 Codex CLI 供应商
668
- akm list --codex
111
+ ### 认证模式
669
112
 
670
- # 仅列出 Claude Code 供应商
671
- akm list --claude
113
+ Claude Code 支持两种认证模式:
672
114
 
673
- # 显示完整 Token(默认脱敏,慎用)
674
- akm list --show-token
675
- ```
115
+ | 模式 | 环境变量 | 适用场景 |
116
+ |------|---------|---------|
117
+ | API Key | `ANTHROPIC_API_KEY` + `ANTHROPIC_BASE_URL` | 大多数第三方代理 |
118
+ | Auth Token | `ANTHROPIC_AUTH_TOKEN` + `ANTHROPIC_BASE_URL` | 部分服务商 |
676
119
 
677
- **显示内容:**
678
- - ✅ 当前激活的供应商
679
- - 🟢/🟡/🔴 API 可用性状态
680
- - [Codex]/[Claude] IDE 类型标签
681
- - 认证模式、环境变量、启动参数(Token 默认脱敏,可用 `--show-token` 显示完整)
682
- - 创建时间、最后使用时间
120
+ Codex CLI 使用 `OPENAI_API_KEY` + `OPENAI_BASE_URL`。
683
121
 
684
- #### `akm current`
685
- 显示当前激活的配置
122
+ ### 切换供应商
686
123
 
687
124
  ```bash
688
- akm current
689
-
690
- # 显示完整 Token(默认脱敏,慎用)
691
- akm current --show-token
692
- ```
125
+ # 交互式选择
126
+ akm
693
127
 
694
- **显示内容:**
695
- - 供应商名称和显示名称
696
- - IDE 类型
697
- - 认证模式
698
- - 环境变量设置
699
- - 启动参数
700
- - 模型配置
128
+ # 直接切换到指定供应商
129
+ akm my-provider
701
130
 
702
- #### `akm edit`
703
- 编辑供应商配置
131
+ # 通过别名切换
132
+ akm prod
704
133
 
705
- ```bash
706
- # 交互式选择要编辑的供应商
707
- akm edit
134
+ # 仅显示 Claude Code 供应商
135
+ akm switch --claude
708
136
 
709
- # 直接编辑指定供应商
710
- akm edit my-provider
137
+ # 仅显示 Codex CLI 供应商
138
+ akm switch --codex
711
139
  ```
712
140
 
713
- **可编辑项:**
714
- - 显示名称
715
- - 认证令牌
716
- - 基础 URL
717
- - 启动参数
718
- - 模型配置
719
-
720
- #### `akm remove`
721
- 删除供应商配置
141
+ ### 快速启动
722
142
 
723
143
  ```bash
724
- # 交互式选择要删除的供应商
725
- akm remove
144
+ # 使用上次的启动参数
145
+ akm my-provider -q
726
146
 
727
- # 直接删除指定供应商
728
- akm remove my-provider
147
+ # 以空参数启动
148
+ akm my-provider --no-args
729
149
  ```
730
150
 
731
- #### `akm validate`
732
- 验证供应商配置的有效性
733
-
734
- ```bash
735
- # 验证单个供应商
736
- akm validate my-provider
151
+ 参数优先级:`--no-args` > `--quick`
737
152
 
738
- # 通过别名验证
739
- akm validate prod
153
+ ### 查看配置
740
154
 
741
- # 验证所有供应商
742
- akm validate
155
+ ```bash
156
+ # 列出所有供应商(默认不检测状态,秒出)
157
+ akm list
743
158
 
744
- # 仅验证 Claude Code 供应商
745
- akm validate --claude
159
+ # 列出并检测在线状态
160
+ akm list --status
746
161
 
747
- # 仅验证 Codex CLI 供应商
748
- akm validate --codex
749
- ```
162
+ # IDE 类型过滤
163
+ akm list --claude
164
+ akm list --codex
750
165
 
751
- **验证内容:**
752
- - Token 有效性(通过 API 调用测试)
753
- - ⚡ API 响应时间
754
- - 🔍 配置完整性检查
755
- - 💡 错误诊断和修复建议
166
+ # 显示完整 Token
167
+ akm list --show-token
756
168
 
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
169
+ # 查看当前激活的配置
170
+ akm current
171
+ akm current --show-token
773
172
  ```
774
173
 
775
- ### 快速启动功能
776
-
777
- akm 提供了两种快速启动模式,可以跳过参数选择,直接启动:
174
+ ### 克隆供应商
778
175
 
779
- #### `-q, --quick` 快速启动
780
-
781
- 使用上次的启动参数(如果没有则使用默认参数)快速启动:
176
+ 快速基于现有配置创建新供应商:
782
177
 
783
178
  ```bash
784
- # 使用上次的参数启动
785
- akm my-provider -q
179
+ # 交互式选择源供应商
180
+ akm clone
786
181
 
787
- # 通过别名快速启动
788
- akm prod -q
789
-
790
- # 也适用于 switch 命令
791
- akm switch my-provider -q
182
+ # 直接指定源供应商
183
+ akm clone my-provider
792
184
  ```
793
185
 
794
- **工作原理:**
795
- 1. 首次启动时会记录你选择的参数
796
- 2. 下次使用 `-q` 时自动使用上次的参数
797
- 3. 如果没有历史记录,使用默认配置的参数
186
+ 克隆时可以修改名称、认证模式、Token、基础 URL 等。
798
187
 
799
- #### `--no-args` 空参数启动
188
+ ### MCP 服务器管理
800
189
 
801
- 不使用任何启动参数,直接启动:
190
+ 管理 `~/.claude.json` 中的 MCP 服务器配置:
802
191
 
803
192
  ```bash
804
- # 以空参数启动
805
- akm my-provider --no-args
806
-
807
- # 通过别名以空参数启动
808
- akm prod --no-args
809
- ```
810
-
811
- **参数优先级:** `--no-args` > `--quick`
193
+ # 列出已配置的 MCP 服务器
194
+ akm mcp list
812
195
 
813
- ### 别名系统
196
+ # 添加 MCP 服务器(支持预设模板和手动配置)
197
+ akm mcp add
814
198
 
815
- 为供应商设置简短的别名,方便快速访问:
199
+ # 编辑 MCP 服务器
200
+ akm mcp edit
816
201
 
817
- #### 添加时设置别名
818
-
819
- ```bash
820
- akm add
821
- # 输入供应商名称: my-production-api
822
- # 输入显示名称: Production API
823
- # 输入别名: prod ← 设置别名
202
+ # 删除 MCP 服务器
203
+ akm mcp remove
824
204
  ```
825
205
 
826
- #### 编辑别名
206
+ 内置预设模板:Playwright、filesystem、memory、fetch。
827
207
 
828
- ```bash
829
- akm edit my-production-api
830
- # 可以修改或删除别名
831
- ```
208
+ ### Claude Code 配置清理
832
209
 
833
- #### 使用别名
210
+ 清理 `~/.claude.json` 中的冗余数据(如过期的项目记录):
834
211
 
835
212
  ```bash
836
- # 通过别名快速切换
837
- akm prod
213
+ # 清理配置
214
+ akm claude clean
838
215
 
839
- # 通过别名快速启动
840
- akm prod -q
841
-
842
- # 通过别名验证
843
- akm validate prod
844
-
845
- # 通过别名编辑
846
- akm edit prod
216
+ # 分析配置(仅查看,不修改)
217
+ akm claude analyze
847
218
  ```
848
219
 
849
- **别名特性:**
850
- - 🔤 不区分大小写(`prod` 和 `PROD` 相同)
851
- - ✏️ 可随时修改或删除
852
- - 📋 在列表中会高亮显示
853
- - 🎯 支持所有命令
220
+ ### 备份与迁移
854
221
 
855
- **示例:**
856
222
  ```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
- ```
223
+ # 创建备份
224
+ akm backup
864
225
 
865
- ### 智能记忆功能
226
+ # 列出备份
227
+ akm backup --list
866
228
 
867
- akm 会自动记住你每次使用的启动参数,下次启动时优先显示:
229
+ # 恢复备份
230
+ akm backup --restore <file>
868
231
 
869
- **第一次启动:**
870
- ```bash
871
- akm my-provider
232
+ # 导出配置(可分享)
233
+ akm export my-config.json
872
234
 
873
- ? 选择启动参数:
874
- --continue
875
- ◯ --search
876
- ◯ --full-auto
235
+ # 导出脱敏版本(配置模板)
236
+ akm export template.json --mask
877
237
 
878
- # 选择 --continue 和 --search
238
+ # 导入配置
239
+ akm import my-config.json
240
+ akm import my-config.json --overwrite
879
241
  ```
880
242
 
881
- **第二次启动(自动记忆):**
882
- ```bash
883
- akm my-provider
884
-
885
- 💡 正在使用上次的启动参数
886
-
887
- ? 选择启动参数:
888
- ◉ --continue ← 自动选中
889
- ◉ --search ← 自动选中
890
- ◯ --full-auto
891
- ```
243
+ ### 配置验证
892
244
 
893
- **与快速启动结合:**
894
245
  ```bash
895
- # 首次启动,选择参数
896
- akm my-provider
897
- # 选择: --continue, --search
246
+ # 验证单个供应商
247
+ akm validate my-provider
898
248
 
899
- # 后续快速启动(自动使用上次参数)
900
- akm my-provider -q
901
- # 💡 使用上次的启动参数: --continue --search
249
+ # 验证所有供应商
250
+ akm validate
251
+
252
+ # 按 IDE 类型过滤
253
+ akm validate --claude
254
+ akm validate --codex
902
255
  ```
903
256
 
904
- ### 备份与迁移
257
+ 验证内容:Token 有效性、API 响应时间、配置完整性。
905
258
 
906
- #### `akm export`
907
- 导出配置到文件
259
+ ---
908
260
 
909
- ```bash
910
- # 导出到默认文件 (akm-config-{timestamp}.json)
911
- akm export
261
+ ## 配置示例
912
262
 
913
- # 导出到指定文件
914
- akm export my-backup.json
263
+ ### Claude Code — API Key 模式
915
264
 
916
- # 导出时脱敏 Token(适合分享配置模板)
917
- akm export template.json --mask
265
+ ```yaml
266
+ 供应商名称: my-claude
267
+ 认证模式: api_key
268
+ Token (ANTHROPIC_API_KEY): sk-ant-api03-xxxxxxxx
269
+ 基础URL (ANTHROPIC_BASE_URL): https://api.anthropic.com
918
270
  ```
919
271
 
920
- **导出格式:**
921
- ```json
922
- {
923
- "version": "1.0",
924
- "exportedAt": "2025-12-15T05:30:00.000Z",
925
- "providers": {
926
- "my-provider": {
927
- "name": "my-provider",
928
- "displayName": "My Provider",
929
- "ideName": "claude",
930
- "authMode": "api_key",
931
- "authToken": "sk-ant-***",
932
- "baseUrl": "https://api.anthropic.com"
933
- }
934
- },
935
- "currentProvider": "my-provider"
936
- }
937
- ```
272
+ ### Claude Code — Auth Token 模式
938
273
 
939
- #### `akm import`
940
- 从文件导入配置
274
+ ```yaml
275
+ 供应商名称: third-party
276
+ 认证模式: auth_token
277
+ Token (ANTHROPIC_AUTH_TOKEN): your-auth-token
278
+ 基础URL (ANTHROPIC_BASE_URL): https://your-provider.com/v1
279
+ ```
941
280
 
942
- ```bash
943
- # 导入配置(跳过已存在的供应商)
944
- akm import my-backup.json
281
+ ### Codex CLI
945
282
 
946
- # 导入并覆盖已存在的供应商
947
- akm import my-backup.json --overwrite
283
+ ```yaml
284
+ 供应商名称: my-codex
285
+ API Key (OPENAI_API_KEY): sk-xxxxxxxx
286
+ 基础URL (OPENAI_BASE_URL): https://api.openai.com
948
287
  ```
949
288
 
950
- **注意:** 如果导入的配置使用了 `--mask` 脱敏,需要手动编辑 Token。
951
-
952
- #### `akm backup`
953
- 备份和恢复配置
289
+ ### 多账号配置
954
290
 
955
291
  ```bash
956
- # 创建备份(默认保存到 ~/.akm-backups/)
957
- akm backup
958
-
959
- # 指定备份目录
960
- akm backup --dir /path/to/backups
961
-
962
- # 列出所有备份
963
- akm backup --list
292
+ # 工作账号
293
+ akm add --claude # 名称: work
964
294
 
965
- # 从备份恢复
966
- akm backup --restore akm-backup-2025-12-15T05-30-00.json
295
+ # 个人账号
296
+ akm add --claude # 名称: personal
967
297
 
968
- # 从指定目录的备份恢复
969
- akm backup --restore backup.json --dir /path/to/backups
298
+ # 快速切换
299
+ akm work -q
300
+ akm personal -q
970
301
  ```
971
302
 
972
- **自动清理:** 默认保留最近 10 个备份,自动删除旧备份。
973
-
974
- ## 🎨 IDE 支持
975
-
976
- ### Claude Code (Anthropic 官方)
977
-
978
- **认证模式:**
979
- - **oauth_token** - OAuth 令牌模式(官方推荐)
980
- - **api_key** - 通用 API 密钥模式
981
- - **auth_token** - 认证令牌模式
982
-
983
- **切换原理:**
303
+ ---
984
304
 
985
- 切换 Claude Code 供应商时,akm 通过**环境变量注入**方式工作:
305
+ ## 交互式界面
986
306
 
987
- 1. **检测设置冲突** → 检查 `~/.claude/settings.json` 中是否有冲突的环境变量
988
- 2. **构建环境变量** → 根据认证模式构建相应的环境变量
989
- 3. **启动子进程** → 使用 `spawn('claude', args, { env })` 启动 Claude Code
307
+ ### 主界面
990
308
 
991
309
  ```
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
- └─────────────┴────────────────────────────┘
310
+ ? 请选择要切换的供应商 (总计 3 个):
311
+ 🟢 [Claude] my-claude (My Claude Account) --- 上次使用 - 可用
312
+ 🟢 [Claude] work (Work Account) - 可用
313
+ 🟢 [Codex] my-codex (Codex Account) - 可用
314
+ ──────────────
315
+ 添加新供应商
316
+ 📋 供应商管理 (编辑/删除)
317
+ 📁 打开配置文件
318
+ ❌ 退出
1000
319
  ```
1001
320
 
1002
- > 💡 Claude Code 使用环境变量注入,不修改配置文件,切换只在当前会话生效。
321
+ ### 状态图标
1003
322
 
1004
- **环境变量:**
1005
- - `CLAUDE_CODE_OAUTH_TOKEN` - OAuth 模式
1006
- - `ANTHROPIC_API_KEY` - API Key 模式
1007
- - `ANTHROPIC_AUTH_TOKEN` - Auth Token 模式
1008
- - `ANTHROPIC_BASE_URL` - 自定义 API 端点
1009
- - `ANTHROPIC_MODEL` - 主模型
1010
- - `ANTHROPIC_SMALL_FAST_MODEL` - 快速模型
323
+ | 图标 | 含义 |
324
+ |-----|------|
325
+ | 🟢 | API 可用 |
326
+ | 🟡 | 有限可用/响应慢 |
327
+ | 🔴 | API 不可用 |
328
+ | | 正在检测 |
329
+ | | 未知状态 |
1011
330
 
1012
- **启动参数:**
1013
- - `--continue` - 继续上次对话
1014
- - `--dangerously-skip-permissions` - 跳过权限检查(沙盒环境)
331
+ ### 快捷键
1015
332
 
1016
- **配置示例:**
1017
- ```bash
1018
- akm add --claude
1019
- # 选择认证模式 -> 输入 Token -> 配置启动参数
1020
- ```
333
+ | 按键 | 功能 |
334
+ |------|------|
335
+ | ↑/↓ | 上下导航 |
336
+ | Space | 切换选中(多选) |
337
+ | A | 全选 |
338
+ | I | 反选 |
339
+ | Enter | 确认 |
340
+ | ESC | 返回上级 / 取消 |
341
+ | Ctrl+C | 退出程序 |
1021
342
 
1022
- ### Codex CLI (OpenAI)
343
+ ---
1023
344
 
1024
- **认证模式:**
1025
- - 使用 `OPENAI_API_KEY` 和 `OPENAI_BASE_URL` 环境变量
345
+ ## 架构设计
346
+
347
+ ```
348
+ ┌──────────────────────────────────────────────────────┐
349
+ │ akm (CLI 入口) │
350
+ ├──────────────────────────────────────────────────────┤
351
+ │ CommandRegistry 命令注册中心,懒加载命令模块 │
352
+ │ ├── 核心: add, switch, remove, list, current, edit │
353
+ │ ├── 运维: export, import, backup, validate, clone │
354
+ │ └── 工具: stats, health, batch, benchmark, │
355
+ │ claude-clean, mcp │
356
+ ├──────────────────────────────────────────────────────┤
357
+ │ ConfigManager 配置管理 (~/.akm-config.json) │
358
+ │ ├── 懒加载 & 缓存 │
359
+ │ ├── 版本迁移 │
360
+ │ └── 文件权限管理 (0600) │
361
+ ├──────────────────────────────────────────────────────┤
362
+ │ IDE 启动器 │
363
+ │ ├── env-launcher.js Claude Code(环境变量注入) │
364
+ │ └── codex-launcher.js Codex CLI(配置文件+环境变量) │
365
+ └──────────────────────────────────────────────────────┘
366
+ ```
1026
367
 
1027
368
  **切换原理:**
1028
369
 
1029
- 切换 Codex 供应商时,akm 会自动:
370
+ - **Claude Code** — 通过环境变量注入启动子进程,不修改配置文件,切换只在当前会话生效
371
+ - **Codex CLI** — 写入 `~/.codex/auth.json` 和 `config.toml`,切换后直接运行 `codex` 也能使用新配置
1030
372
 
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`
373
+ **环境变量映射:**
1035
374
 
1036
375
  ```
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
- ```
376
+ Claude Code:
377
+ api_key → ANTHROPIC_API_KEY + ANTHROPIC_BASE_URL
378
+ auth_token ANTHROPIC_AUTH_TOKEN + ANTHROPIC_BASE_URL
379
+ (可选) → ANTHROPIC_MODEL, ANTHROPIC_SMALL_FAST_MODEL
1045
380
 
1046
- > 💡 切换后直接运行 `codex` 命令也能使用新配置,无需通过 akm 启动。
1047
-
1048
- **启动参数:**
1049
- - `resume` - 继续上次对话(子命令)
1050
- - `--full-auto` - 全自动模式(自动批准 + 工作区沙盒)⚠️ 与 `--dangerously-bypass-approvals-and-sandbox` 互斥
1051
- - `--dangerously-bypass-approvals-and-sandbox` - 跳过所有安全检查 ⚠️ 与 `--full-auto` 互斥
1052
- - `--search` - 启用网页搜索
1053
-
1054
- **配置导入:**
1055
- ```bash
1056
- akm add --codex
1057
- # 选择 "从 ~/.codex 导入现有配置" 自动读取现有配置
1058
- # 或选择 "手动输入配置" 手动设置
381
+ Codex CLI:
382
+ → OPENAI_API_KEY + OPENAI_BASE_URL
1059
383
  ```
1060
384
 
1061
- **配置示例:**
1062
- ```bash
1063
- # 方式1:从现有 Codex 配置导入
1064
- akm add --codex
1065
- # -> 选择 "从 ~/.codex 导入现有配置"
1066
- # -> 自动读取 ~/.codex/auth.json 和 config.toml
1067
-
1068
- # 方式2:手动配置
1069
- akm add --codex
1070
- # -> 选择 "手动输入配置"
1071
- # -> 输入 API Key 和 Base URL
1072
- ```
385
+ ---
1073
386
 
1074
- ## ⚙️ 配置文件
387
+ ## 配置文件
1075
388
 
1076
- **位置:** `~/.akm-config.json`
389
+ 位置:`~/.akm-config.json`
1077
390
 
1078
- **完整示例:**
1079
391
  ```json
1080
392
  {
1081
393
  "version": "2.0.0",
@@ -1083,12 +395,11 @@ akm add --codex
1083
395
  "providers": {
1084
396
  "my-claude": {
1085
397
  "name": "my-claude",
1086
- "displayName": "Claude Code Official",
398
+ "displayName": "My Claude",
1087
399
  "ideName": "claude",
1088
- "authMode": "oauth_token",
1089
- "authToken": "sk-ant-oat01-xxx",
1090
- "baseUrl": null,
1091
- "tokenType": null,
400
+ "authMode": "api_key",
401
+ "authToken": "sk-ant-api03-xxx",
402
+ "baseUrl": "https://api.anthropic.com",
1092
403
  "launchArgs": ["--continue"],
1093
404
  "models": {
1094
405
  "primary": "claude-sonnet-4",
@@ -1096,280 +407,62 @@ akm add --codex
1096
407
  },
1097
408
  "createdAt": "2025-12-15T05:00:00.000Z",
1098
409
  "lastUsed": "2025-12-15T05:30:00.000Z"
1099
- },
1100
- "my-codex": {
1101
- "name": "my-codex",
1102
- "displayName": "Codex CLI",
1103
- "ideName": "codex",
1104
- "authMode": "openai_api_key",
1105
- "authToken": "sk-xxx",
1106
- "baseUrl": "https://api.openai.com",
1107
- "tokenType": null,
1108
- "launchArgs": ["resume", "--full-auto"],
1109
- "createdAt": "2025-12-15T05:00:00.000Z",
1110
- "lastUsed": "2025-12-15T05:25:00.000Z"
1111
410
  }
1112
411
  }
1113
412
  }
1114
413
  ```
1115
414
 
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
-
1150
- ## 🎯 使用场景
1151
-
1152
- ### 场景 1: 同时使用多个 API Key
1153
-
1154
- ```bash
1155
- # 添加工作账号
1156
- akm add --claude
1157
- # 名称: work
1158
- # 显示名称: Work Account
1159
- # Token: sk-ant-work-xxx
1160
-
1161
- # 添加个人账号
1162
- akm add --claude
1163
- # 名称: personal
1164
- # 显示名称: Personal Account
1165
- # Token: sk-ant-personal-xxx
1166
-
1167
- # 快速切换
1168
- akm # 选择 work 或 personal
1169
- ```
1170
-
1171
- ### 场景 2: Claude Code 和 Codex CLI 混合使用
1172
-
1173
- ```bash
1174
- # 添加 Claude Code 配置
1175
- akm add --claude
1176
-
1177
- # 添加 Codex CLI 配置
1178
- akm add --codex
1179
-
1180
- # 查看所有配置(带 IDE 标签)
1181
- akm list
1182
-
1183
- # 仅切换 Codex 供应商
1184
- akm switch --codex
1185
-
1186
- # 仅切换 Claude 供应商
1187
- akm switch --claude
1188
- ```
1189
-
1190
- ### 场景 3: 团队配置分享
415
+ ---
1191
416
 
1192
- ```bash
1193
- # 导出配置模板(脱敏)
1194
- akm export team-template.json --mask
417
+ ## 常见问题
1195
418
 
1196
- # 团队成员导入后编辑 Token
1197
- akm import team-template.json
1198
- akm edit my-provider # 设置自己的 Token
1199
- ```
419
+ ### 切换 Codex 后提示 "Token data is not available"
1200
420
 
1201
- ### 场景 4: 配置迁移
421
+ `~/.codex/auth.json` 格式不正确。重新切换即可:
1202
422
 
1203
423
  ```bash
1204
- # 旧机器:导出配置
1205
- akm export my-config.json
1206
-
1207
- # 新机器:导入配置
1208
- akm import my-config.json
424
+ akm my-codex
1209
425
  ```
1210
426
 
1211
- ### 场景 5: 定期备份
427
+ akm 会自动设置 `preferred_auth_method = "apikey"` 并写入正确格式的 `auth.json`。
1212
428
 
1213
- ```bash
1214
- # 创建备份
1215
- akm backup
429
+ ### Claude Code 切换后环境变量不生效
1216
430
 
1217
- # 查看备份列表
1218
- akm backup --list
431
+ `~/.claude/settings.json` 中可能存在冲突的环境变量。切换时 akm 会自动检测并提示处理。
1219
432
 
1220
- # 恢复到某个备份
1221
- akm backup --restore akm-backup-2025-12-15T05-30-00.json
1222
- ```
433
+ ### 找不到 claude/codex 命令
1223
434
 
1224
- ### 场景 6: 高效工作流(使用新功能)
435
+ 需要先安装对应的 CLI 工具:
1225
436
 
1226
437
  ```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
- # 📊 批量验证所有供应商
438
+ # Claude Code
439
+ npm install -g @anthropic-ai/claude-code
1245
440
 
1246
- # 5. 每日工作流
1247
- akm work -q # 工作时使用工作账号
1248
- akm personal -q # 下班后切换个人账号
1249
- akm dev -q # 开发时使用测试账号
441
+ # Codex CLI
442
+ npm install -g @openai/codex
1250
443
  ```
1251
444
 
1252
- **效率提升:**
1253
- - ⚡ 启动时间:从 10 秒 → 2 秒(80% 提升)
1254
- - 🎯 操作步骤:从 3 步 → 1 步
1255
- - 💡 无需记忆:自动记住所有参数
445
+ ### 配置文件权限问题
1256
446
 
1257
- ### 场景 7: 团队协作最佳实践
447
+ akm 会自动设置权限为 `0600`。手动修复:
1258
448
 
1259
449
  ```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 # 快速启动,无需记忆命令
450
+ chmod 600 ~/.akm-config.json
1278
451
  ```
1279
452
 
1280
- ## ⚠️ 参数互斥说明
1281
-
1282
- 某些参数不能同时使用,akm 会自动检测并提示:
1283
-
1284
- **Codex CLI:**
1285
- - `--full-auto` ⚔️ `--dangerously-bypass-approvals-and-sandbox`
1286
-
1287
- 如果同时选择互斥参数,会显示警告并要求重新选择。
1288
-
1289
- ## ⌨️ 快捷键
1290
-
1291
- - **↑/↓** - 上下导航
1292
- - **Space** - 切换选中(多选)
1293
- - **Enter** - 确认
1294
- - **ESC** - 返回上级菜单 / 取消操作
1295
- - **Ctrl+C** - 退出程序
453
+ ---
1296
454
 
1297
- ## 🔧 系统要求
455
+ ## 系统要求
1298
456
 
1299
457
  - Node.js >= 14.0.0
1300
458
  - macOS / Linux / Windows
1301
459
 
1302
- ## 📝 更新日志
1303
-
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
1343
- - ✨ 新增参数互斥校验
1344
- - ✨ 新增 `export` / `import` / `backup` 命令
1345
- - 🧪 测试覆盖率提升 46%
1346
-
1347
- ### v1.0.26
1348
- - ✨ Codex 添加 `resume` 子命令支持
1349
-
1350
- ### v1.0.25
1351
- - 🐛 修复 Codex 启动参数
1352
-
1353
- ### v1.0.23
1354
- - ✨ list 和 switch 命令显示 IDE 类型标签
1355
-
1356
- ### v1.0.22
1357
- - ✨ 完整的 Codex CLI 支持优化
1358
-
1359
- ## 🤝 贡献
1360
-
1361
- 欢迎提交 Issue 和 Pull Request!
1362
-
1363
- ## 📄 许可证
460
+ ## 许可证
1364
461
 
1365
462
  MIT License
1366
463
 
1367
- ## 🔗 链接
1368
-
1369
- - **GitHub**: https://github.com/pikecode/api-key-manager
1370
- - **NPM**: https://www.npmjs.com/package/@pikecode/api-key-manager
1371
- - **Issues**: https://github.com/pikecode/api-key-manager/issues
1372
-
1373
- ---
464
+ ## 链接
1374
465
 
1375
- Made with ❤️ by [pikecode](https://github.com/pikecode)
466
+ - [NPM](https://www.npmjs.com/package/@pikecode/api-key-manager)
467
+ - [GitHub](https://github.com/pikecode/api-key-manager)
468
+ - [Issues](https://github.com/pikecode/api-key-manager/issues)