@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 +921 -2
- package/bin/akm.js +120 -3
- package/package.json +12 -5
- package/src/CommandRegistry.js +25 -0
- package/src/commands/BaseCommand.js +67 -0
- package/src/commands/add.js +133 -153
- package/src/commands/backup.js +14 -1
- package/src/commands/batch.js +314 -0
- package/src/commands/benchmark.js +344 -0
- package/src/commands/current.js +30 -14
- package/src/commands/edit.js +66 -46
- package/src/commands/health.js +222 -0
- package/src/commands/list.js +30 -11
- package/src/commands/remove.js +22 -3
- package/src/commands/stats.js +282 -0
- package/src/commands/switch/launch-args-helper.js +84 -0
- package/src/commands/switch/status-helper.js +124 -0
- package/src/commands/switch.js +226 -164
- package/src/commands/validate.js +310 -0
- package/src/config.js +243 -2
- package/src/constants/index.js +246 -0
- package/src/index.js +10 -3
- package/src/utils/codex-files.js +66 -14
- package/src/utils/codex-launcher.js +3 -0
- package/src/utils/config-opener.js +15 -0
- package/src/utils/env-utils.js +1 -1
- package/src/utils/error-handler.js +26 -26
- package/src/utils/health-checker.js +350 -0
- package/src/utils/inquirer-setup.js +11 -0
- package/src/utils/provider-status-checker.js +29 -10
- package/src/utils/ui-helper.js +87 -85
- package/src/utils/update-checker.js +25 -7
- package/src/utils/validator.js +12 -12
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.
|
|
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%
|