ai-account-switch 1.7.0 → 1.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README_ZH.md DELETED
@@ -1,1192 +0,0 @@
1
- # AI Account Switch (ais)
2
-
3
- [English](README.md) | 简体中文
4
-
5
- 一个跨平台的命令行工具,用于管理和切换不同项目的 Claude/Codex/Droids 账户配置。
6
-
7
- ## 特性
8
-
9
- - **跨平台支持**:在 macOS、Linux 和 Windows 上无缝运行
10
- - **多账户管理**:存储和管理多个 AI 服务账户
11
- - **项目级配置**:每个项目可以使用不同的账户
12
- - **智能目录检测**:在项目的任何子目录中都能工作(类似 git)
13
- - **Claude Code 集成**:自动生成 `.claude/settings.local.json` 配置文件
14
- - **Web UI 管理界面**:
15
- - 🎨 现代化单页面应用,支持深色/浅色主题
16
- - 🌍 中英文双语支持,一键切换
17
- - ⚙️ 可视化管理账号:增删改查一目了然
18
- - 📤 导入/导出功能:批量管理账号配置
19
- - 🔍 实时搜索过滤账号
20
- - 💾 自定义环境变量配置
21
- - 🎯 主题自动跟随系统设置
22
- - **MCP Web UI 管理**:完整的 MCP (Model Context Protocol) 服务器管理
23
- - 🖥️ 直观的界面添加、编辑、删除 MCP 服务器
24
- - 🔌 支持 stdio、sse、http 三种服务器类型
25
- - 🧪 测试 MCP 服务器连接
26
- - ⚡ 一键启用/禁用项目级服务器
27
- - 🔍 搜索和筛选功能
28
- - 🌐 完整的中英文支持
29
- - **安全存储**:账户凭证仅存储在本地
30
- - **交互式命令行**:所有操作都有易用的交互式提示
31
- - **多种账户类型**:支持 Claude、Codex、CCR (Claude Code Router)、Droids 和其他 AI 服务
32
-
33
- ## 安装
34
-
35
- ### npm 安装(推荐)
36
-
37
- ```bash
38
- npm install -g ai-account-switch
39
- ```
40
-
41
- 安装后,`ais` 命令将在全局可用。
42
-
43
- **故障排除**:如果安装后提示"命令未找到":
44
-
45
- ```bash
46
- # 查看 npm 全局 bin 路径
47
- npm config get prefix
48
-
49
- # 添加到 PATH (Linux/macOS)
50
- export PATH="$PATH:$(npm config get prefix)/bin"
51
-
52
- # Windows 上,添加到系统 PATH:%APPDATA%\npm
53
- ```
54
-
55
- ### 从源码安装
56
-
57
- ```bash
58
- # 克隆仓库
59
- git clone https://github.com/yourusername/ai-agent-user-swith.git
60
- cd ai-agent-user-swith
61
-
62
- # 安装依赖
63
- npm install
64
-
65
- # 全局链接 CLI 工具
66
- npm link
67
- ```
68
-
69
- ## 使用方法
70
-
71
- ### 命令概览
72
-
73
- | 命令 | 别名 | 描述 |
74
- |------|------|------|
75
- | `ais add [name]` | - | 添加新的账户配置 |
76
- | `ais list` | `ls` | 列出所有可用账户 |
77
- | `ais use [name]` | - | 为当前项目设置账户 |
78
- | `ais info` | - | 显示当前项目的账户信息 |
79
- | `ais current` | - | 显示当前账户名称 |
80
- | `ais remove [name]` | `rm` | 删除账户 |
81
- | `ais model list` | `ls` | 列出当前账户的所有模型组 |
82
- | `ais model add [name]` | - | 添加新的模型组 |
83
- | `ais model use <name>` | - | 切换到不同的模型组 |
84
- | `ais model remove [name]` | `rm` | 删除模型组 |
85
- | `ais model show [name]` | - | 显示模型组配置 |
86
- | `ais mcp add [name]` | - | 添加新的 MCP 服务器 |
87
- | `ais mcp list` | `ls` | 列出所有 MCP 服务器 |
88
- | `ais mcp show [name]` | - | 显示 MCP 服务器详情 |
89
- | `ais mcp update [name]` | - | 更新 MCP 服务器配置 |
90
- | `ais mcp remove [name]` | `rm` | 删除 MCP 服务器 |
91
- | `ais mcp enable [name]` | - | 为当前项目启用 MCP 服务器 |
92
- | `ais mcp disable [name]` | - | 为当前项目禁用 MCP 服务器 |
93
- | `ais mcp enabled` | - | 显示已启用的 MCP 服务器 |
94
- | `ais mcp sync` | - | 同步 MCP 配置到 Claude Code |
95
- | `ais ui` | - | 启动 Web UI 管理界面 |
96
- | `ais paths` | - | 显示配置文件路径 |
97
- | `ais doctor` | - | 诊断 Claude Code 配置问题 |
98
- | `ais export <name>` | - | 导出账户为 JSON 格式 |
99
- | `ais help` | - | 显示帮助信息 |
100
- | `ais --version` | - | 显示版本号 |
101
-
102
- ### 快速开始
103
-
104
- #### 1. 添加账户
105
-
106
- 交互式添加第一个账户:
107
-
108
- ```bash
109
- ais add
110
- ```
111
-
112
- 或直接指定名称:
113
-
114
- ```bash
115
- ais add my-claude-account
116
- ```
117
-
118
- 系统将提示你输入:
119
- - 账户类型(Claude、Codex、CCR、Droids、其他)
120
- - API Key
121
- - API URL(可选)
122
- - Email(可选)
123
- - 描述(可选)
124
- - 自定义环境变量(可选)
125
- - 使用 `KEY=VALUE` 格式输入(例如:`CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1`)
126
- - 工具会在完成前显示所有已添加的变量
127
- - 直接按回车(不输入)即可完成添加
128
-
129
- #### 2. 列出所有账户
130
-
131
- 查看所有已配置的账户:
132
-
133
- ```bash
134
- ais list
135
- # 或
136
- ais ls
137
- ```
138
-
139
- 当前项目激活的账户将用绿色圆点标记。
140
-
141
- #### 3. 为当前项目切换账户
142
-
143
- 设置当前项目使用的账户:
144
-
145
- ```bash
146
- ais use my-claude-account
147
- ```
148
-
149
- 或交互式选择:
150
-
151
- ```bash
152
- ais use
153
- ```
154
-
155
- **注意**:此命令会自动生成 `.claude/settings.local.json` 文件用于 Claude Code CLI 集成。
156
- 如果检测到当前项目是 Git 仓库,还会自动将配置文件添加到 `.gitignore` 中,避免将敏感信息提交到版本控制。
157
- 你可以在项目的任何子目录中运行此命令 - 它会自动找到项目根目录。
158
-
159
- #### 4. 查看当前项目信息
160
-
161
- 查看当前项目激活的账户:
162
-
163
- ```bash
164
- ais info
165
- ```
166
-
167
- 或仅显示账户名称:
168
-
169
- ```bash
170
- ais current
171
- ```
172
-
173
- **注意**:这些命令可以在项目的任何子目录中使用,类似 git 命令的工作方式。
174
-
175
- #### 5. 使用 Web UI 管理界面
176
-
177
- 启动可视化管理界面:
178
-
179
- ```bash
180
- ais ui
181
- ```
182
-
183
- 这将在浏览器中打开 Web UI,服务器会自动使用一个随机的高位端口(49152-65535)。如果端口被占用,会自动尝试其他端口,提供以下功能:
184
-
185
- **界面特性:**
186
- - **账号管理**: 可视化的卡片界面,显示所有账号信息
187
- - **添加/编辑账号**: 友好的表单界面,支持所有配置项
188
- - **删除账号**: 一键删除,带确认提示
189
- - **搜索过滤**: 实时搜索账号名称、邮箱或类型
190
- - **批量操作**:
191
- - 导出所有账号为 JSON 文件
192
- - 从 JSON 文件导入账号(支持覆盖选项)
193
- - **主题切换**:
194
- - iOS 风格的 Switch 开关
195
- - 支持浅色和深色主题
196
- - 默认跟随系统主题设置
197
- - **多语言支持**:
198
- - 中文/英文一键切换
199
- - 界面默认使用中文
200
- - 语言设置自动保存
201
-
202
- **UI 使用提示:**
203
- - 所有修改实时同步到本地配置
204
- - 关闭浏览器窗口不影响数据
205
- - 按 `Ctrl+C` 停止 Web 服务器
206
- - 支持在任何浏览器中使用
207
-
208
- #### 6. 删除账户
209
-
210
- 删除不再需要的账户:
211
-
212
- ```bash
213
- ais remove old-account
214
- # 或
215
- ais rm
216
- ```
217
-
218
- ### 高级用法
219
-
220
- #### 显示配置路径
221
-
222
- 查看配置文件的存储位置:
223
-
224
- ```bash
225
- ais paths
226
- ```
227
-
228
- #### 诊断配置问题
229
-
230
- 如果 Claude Code 使用了错误的账户,运行诊断:
231
-
232
- ```bash
233
- ais doctor
234
- ```
235
-
236
- 此命令会检查:
237
- - 当前目录和项目根目录
238
- - AIS 项目配置
239
- - Claude Code 配置
240
- - 全局 Claude 配置
241
- - 提供解决建议
242
-
243
- #### 导出账户配置
244
-
245
- 以 JSON 格式导出账户配置:
246
-
247
- ```bash
248
- ais export my-claude-account
249
- ```
250
-
251
- ## 配置
252
-
253
- ### 全局配置
254
-
255
- 所有账户都存储在用户主目录的全局配置中:
256
-
257
- - **macOS/Linux**: `~/.ai-account-switch/config.json`
258
- - **Windows**: `%USERPROFILE%\.ai-account-switch\config.json`
259
-
260
- ### 项目配置
261
-
262
- 每个项目将其活动账户引用存储在:
263
-
264
- ```
265
- ./.ais-project-config
266
- ```
267
-
268
- 此文件在运行 `ais use` 时自动创建,应添加到 `.gitignore` 中。
269
-
270
- ### Claude Code 集成
271
-
272
- 运行 `ais use` 时,工具会自动创建 `.claude/settings.local.json`,结构如下:
273
-
274
- ```json
275
- {
276
- "env": {
277
- "ANTHROPIC_AUTH_TOKEN": "your-api-key",
278
- "ANTHROPIC_BASE_URL": "your-api-url",
279
- "CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "1"
280
- },
281
- "permissions": {
282
- "allow": [],
283
- "deny": [],
284
- "ask": []
285
- }
286
- }
287
- ```
288
-
289
- 这确保 Claude Code CLI 自动使用项目的正确账户。
290
-
291
- ### Codex 集成
292
-
293
- 当你添加 **Codex** 类型账户并运行 `ais use` 时,工具会自动在 `~/.codex/config.toml` 中创建 profile,并在项目目录中创建 `.codex-profile` 文件。
294
-
295
- #### 添加 Codex 账户
296
-
297
- 添加 Codex 账户时,你会看到有用的配置提示:
298
-
299
- ```bash
300
- ais add my-codex-account
301
-
302
- ? Select account type: Codex
303
-
304
- 📝 Codex Configuration Tips:
305
- • API URL should include the full path (e.g., https://api.example.com/v1)
306
- • AIS will automatically add /v1 if missing
307
- • Codex uses OpenAI-compatible API format
308
-
309
- ? Enter API Key: sk-xxx...
310
- ? Enter API URL (e.g., https://api.example.com or https://api.example.com/v1): https://zone.veloera.org
311
- ```
312
-
313
- **重要说明:**
314
- - AIS 会自动为 API URL 添加 `/v1` 路径(如果缺少)
315
- - 配置使用 `wire_api = "chat"`(OpenAI 兼容格式)
316
- - 这可以防止常见的 Cloudflare 400 错误
317
-
318
- #### 在项目中使用 Codex
319
-
320
- 使用 Codex 账户运行 `ais use` 后:
321
-
322
- ```bash
323
- cd ~/my-project
324
- ais use my-codex-account
325
-
326
- # 输出:
327
- # ✓ Switched to account 'my-codex-account' for current project.
328
- # ✓ Codex profile created: ais_my-project
329
- # Use: codex --profile ais_my-project [prompt]
330
- ```
331
-
332
- 工具会创建:
333
- 1. **全局 Profile**:`~/.codex/config.toml` 包含你的账户配置
334
- 2. **项目引用**:`.codex-profile` 包含 profile 名称
335
-
336
- #### 运行 Codex
337
-
338
- 使用生成的 profile 运行 Codex:
339
-
340
- ```bash
341
- # 在项目目录中
342
- codex --profile ais_my-project "your prompt here"
343
-
344
- # 或使用 .codex-profile 中的 profile 名称
345
- codex --profile $(cat .codex-profile) "your prompt"
346
- ```
347
-
348
- #### Codex 配置结构
349
-
350
- 在 `~/.codex/config.toml` 中生成的配置:
351
-
352
- ```toml
353
- # AIS Profile for project: /path/to/your/project
354
- [profiles.ais_my-project]
355
- model_provider = "ais_my-codex-account"
356
-
357
- [model_providers.ais_my-codex-account]
358
- name = "ais_my-codex-account"
359
- base_url = "https://zone.veloera.org/v1"
360
- wire_api = "chat"
361
- http_headers = { "Authorization" = "Bearer sk-xxx..." }
362
- ```
363
-
364
- #### 在不同项目间切换
365
-
366
- 每个项目可以使用不同的 Codex 账户:
367
-
368
- ```bash
369
- # 项目 A
370
- cd ~/project-a
371
- ais use codex-account-1
372
- codex --profile ais_project-a "implement feature X"
373
-
374
- # 项目 B
375
- cd ~/project-b
376
- ais use codex-account-2
377
- codex --profile ais_project-b "fix bug Y"
378
- ```
379
-
380
- #### Codex 故障排除
381
-
382
- **错误:"duplicate key" in TOML**
383
- - 这是因为 profile 没有正确清理
384
- - 解决方案:再次运行 `ais use <account>` 重新生成配置
385
-
386
- **错误:"400 Bad Request" from Cloudflare**
387
- - 这通常意味着 API URL 不正确
388
- - 解决方案:确保 API URL 包含 `/v1` 或让 AIS 自动添加
389
- - 运行 `ais use <account>` 使用正确的配置重新生成
390
-
391
- **检查 Codex 配置**
392
- ```bash
393
- # 查看你的 Codex profile
394
- cat .codex-profile
395
-
396
- # 检查配置
397
- grep -A 10 "$(cat .codex-profile)" ~/.codex/config.toml
398
-
399
- # 或使用 doctor 命令
400
- ais doctor
401
- ```
402
-
403
- ### CCR (Claude Code Router) 集成
404
-
405
- [Claude Code Router](https://github.com/musistudio/claude-code-router) 是一个强大的 Claude Code 路由层,允许你无缝使用多个 AI 提供商和模型。
406
-
407
- 当你添加 **CCR** 类型账户并运行 `ais use` 时,工具会自动:
408
- 1. 更新 `~/.claude-code-router/config.json` 中的 Provider 和 Router 配置
409
- 2. 生成指向本地 CCR Router 的 `.claude/settings.local.json`
410
- 3. 自动重启 CCR Router 以应用更改
411
-
412
- **前提条件:**
413
- - 安装 Claude Code Router:`npm install -g @musistudio/claude-code-router`
414
- - 启动 CCR Router:`ccr start`
415
-
416
- #### 添加 CCR 账户
417
-
418
- 添加 CCR 账户时,你会看到有用的配置提示:
419
-
420
- ```bash
421
- ais add my-ccr-account
422
-
423
- ? Select account type: CCR
424
-
425
- 📝 CCR Configuration Tips:
426
- • CCR configuration will be stored in ~/.claude-code-router/config.json
427
- • You need to provide Provider name and models
428
- • Router configuration will be automatically updated
429
-
430
- ? Enter API Key: sk-xxx...
431
- ? Enter API URL: http://localhost:3000/v1/chat/completions
432
- ? Enter Provider name: Local-new-api
433
- ? Enter default model: gemini-2.5-flash
434
- ? Enter background model: gemini-2.5-flash
435
- ? Enter think model: gemini-2.5-pro
436
- ```
437
-
438
- **重要说明:**
439
- - 默认 API URL 是 `http://localhost:3000/v1/chat/completions`
440
- - 你需要指定三个模型:default、background 和 think
441
- - 模型会在 Provider 配置中自动去重
442
-
443
- #### 在项目中使用 CCR
444
-
445
- 使用 CCR 账户运行 `ais use` 后:
446
-
447
- ```bash
448
- cd ~/my-project
449
- ais use my-ccr-account
450
-
451
- # 输出:
452
- # ✓ Switched to account 'my-ccr-account' for current project.
453
- # 🔄 Restarting CCR Router...
454
- # ✓ CCR Router restarted successfully
455
- # ✓ CCR configuration updated at: ~/.claude-code-router/config.json
456
- # ✓ Claude configuration generated at: .claude/settings.local.json
457
- #
458
- # 📖 Next Steps:
459
- # Start interactive session: claude
460
- # This will enter project-level interactive mode
461
- # Claude Code will use CCR Router to route requests
462
- ```
463
-
464
- 工具会:
465
- 1. **更新 CCR 配置**:在 `~/.claude-code-router/config.json` 中添加/更新 Provider
466
- 2. **更新 Router**:设置 default、background 和 think 模型
467
- 3. **生成 Claude 配置**:创建 `.claude/settings.local.json`,`ANTHROPIC_BASE_URL` 指向 CCR Router
468
- 4. **重启 CCR**:自动运行 `ccr restart` 以应用更改
469
-
470
- #### 使用 CCR 运行 Claude
471
-
472
- 启动 Claude 交互会话:
473
-
474
- ```bash
475
- # 在项目目录中
476
- claude
477
-
478
- # Claude Code 会自动使用 CCR Router
479
- # 请求会根据你的 CCR 配置进行路由
480
- ```
481
-
482
- #### CCR 配置结构
483
-
484
- 在 `~/.claude-code-router/config.json` 中生成的配置:
485
-
486
- ```json
487
- {
488
- "PORT": 3456,
489
- "Providers": [
490
- {
491
- "api_base_url": "http://localhost:3000/v1/chat/completions",
492
- "api_key": "sk-xxx...",
493
- "models": ["gemini-2.5-flash", "gemini-2.5-pro"],
494
- "name": "Local-new-api"
495
- }
496
- ],
497
- "Router": {
498
- "default": "Local-new-api,gemini-2.5-flash",
499
- "background": "Local-new-api,gemini-2.5-flash",
500
- "think": "Local-new-api,gemini-2.5-pro"
501
- }
502
- }
503
- ```
504
-
505
- 在 `.claude/settings.local.json` 中生成的配置:
506
-
507
- ```json
508
- {
509
- "env": {
510
- "ANTHROPIC_AUTH_TOKEN": "your-api-key",
511
- "ANTHROPIC_BASE_URL": "http://127.0.0.1:3456"
512
- }
513
- }
514
- ```
515
-
516
- #### 在不同项目间切换
517
-
518
- 每个项目可以使用不同的 CCR 配置:
519
-
520
- ```bash
521
- # 项目 A
522
- cd ~/project-a
523
- ais use ccr-account-1
524
- claude
525
-
526
- # 项目 B
527
- cd ~/project-b
528
- ais use ccr-account-2
529
- claude
530
- ```
531
-
532
- #### CCR 故障排除
533
-
534
- **检查 CCR 配置**
535
- ```bash
536
- # 查看你的 CCR 配置
537
- cat ~/.claude-code-router/config.json
538
-
539
- # 查看 Claude 配置
540
- cat .claude/settings.local.json
541
-
542
- # 或使用 doctor 命令
543
- ais doctor
544
- ```
545
-
546
- **CCR Router 未安装**
547
- - 从 npm 安装:`npm install -g @musistudio/claude-code-router`
548
- - 访问项目页面:https://github.com/musistudio/claude-code-router
549
-
550
- **CCR Router 未重启**
551
- - 确保 CCR CLI 已安装并在 PATH 中可用
552
- - 如果自动重启失败,手动运行 `ccr restart`
553
- - 检查 CCR Router 是否运行:`ccr status`
554
-
555
- **Claude 未使用 CCR Router**
556
- - 验证 `.claude/settings.local.json` 中的 `ANTHROPIC_BASE_URL` 指向正确的端口
557
- - 检查 CCR Router 是否在配置的端口上运行
558
- - 配置更改后重启 Claude Code
559
-
560
- ### Droids 集成
561
-
562
- 当你添加 **Droids** 类型账户并运行 `ais use` 时,工具会自动在项目目录中创建 `.droids/config.json` 配置文件。
563
-
564
- #### 添加 Droids 账户
565
-
566
- 添加 Droids 账户时,你会看到有用的配置提示:
567
-
568
- ```bash
569
- ais add my-droids-account
570
-
571
- ? Select account type: Droids
572
-
573
- 📝 Droids Configuration Tips:
574
- • Droids configuration will be stored in .droids/config.json
575
- • API URL is optional (defaults to Droids default endpoint)
576
- • You can configure custom models and settings
577
-
578
- ? Enter API Key: sk-xxx...
579
- ? Enter API URL (optional): https://api.example.com
580
- ? Do you want to specify a model? (Optional) Yes
581
- ? Enter model name: droids-model-v1
582
- ```
583
-
584
- #### 在项目中使用 Droids
585
-
586
- 使用 Droids 账户运行 `ais use` 后:
587
-
588
- ```bash
589
- cd ~/my-project
590
- ais use my-droids-account
591
-
592
- # 输出:
593
- # ✓ Switched to account 'my-droids-account' for current project.
594
- # ✓ Droids configuration generated at: .droids/config.json
595
- #
596
- # 📖 Next Steps:
597
- # Start interactive session: droid
598
- # This will enter project-level interactive mode
599
- # Droids will automatically use the configuration from .droids/config.json
600
- ```
601
-
602
- 工具会创建:
603
- - **项目配置**:`.droids/config.json` 包含你的账户设置
604
-
605
- #### 运行 Droids
606
-
607
- 启动 Droids 交互会话:
608
-
609
- ```bash
610
- # 在项目目录中
611
- droid
612
-
613
- # Droids 会自动从 .droids/config.json 加载配置
614
- ```
615
-
616
- #### Droids 配置结构
617
-
618
- 在 `.droids/config.json` 中生成的配置:
619
-
620
- ```json
621
- {
622
- "apiKey": "your-api-key",
623
- "baseUrl": "https://api.example.com",
624
- "model": "droids-model-v1",
625
- "customSettings": {
626
- "CUSTOM_VAR": "value"
627
- }
628
- }
629
- ```
630
-
631
- #### 在不同项目间切换
632
-
633
- 每个项目可以使用不同的 Droids 账户:
634
-
635
- ```bash
636
- # 项目 A
637
- cd ~/project-a
638
- ais use droids-account-1
639
- droid
640
-
641
- # 项目 B
642
- cd ~/project-b
643
- ais use droids-account-2
644
- droid
645
- ```
646
-
647
- #### Droids 故障排除
648
-
649
- **检查 Droids 配置**
650
- ```bash
651
- # 查看你的 Droids 配置
652
- cat .droids/config.json
653
-
654
- # 或使用 doctor 命令
655
- ais doctor
656
- ```
657
-
658
- **Droids CLI 未找到**
659
- - 确保 Droids CLI 已安装并在 PATH 中可用
660
- - 运行 `droid --version` 验证安装
661
-
662
- #### 自定义环境变量
663
-
664
- 在创建账户时可以添加自定义环境变量。在提示时,使用 `KEY=VALUE` 格式输入:
665
-
666
- **输入格式:**
667
- ```
668
- ? Environment variable (KEY=VALUE format): CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1
669
- ✓ Added: CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1
670
-
671
- 📋 Current environment variables:
672
- • CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1
673
-
674
- ? Add another environment variable? (y/N)
675
- ```
676
-
677
- **常见示例:**
678
- - `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1` - 禁用非必要网络流量
679
- - `HTTP_PROXY=http://proxy.example.com:8080` - 设置 HTTP 代理
680
- - `HTTPS_PROXY=https://proxy.example.com:8080` - 设置 HTTPS 代理
681
- - 其他你需要的环境变量
682
-
683
- **功能特性:**
684
- - 单行输入格式(`KEY=VALUE`)
685
- - 实时显示已添加的变量
686
- - 直接按回车即可完成
687
- - 变量会自动包含在 `.claude/settings.local.json` 文件中
688
-
689
- ## 使用示例
690
-
691
- ### 示例 1:设置多个账户
692
-
693
- ```bash
694
- # 添加个人 Claude 账户
695
- ais add personal-claude
696
-
697
- # 添加工作 Claude 账户
698
- ais add work-claude
699
-
700
- # 添加 Codex 账户
701
- ais add codex-dev
702
-
703
- # 添加 Droids 账户
704
- ais add droids-dev
705
-
706
- # 列出所有账户
707
- ais list
708
- ```
709
-
710
- ### 示例 2:为不同项目使用不同账户
711
-
712
- ```bash
713
- # 在个人项目中
714
- cd ~/my-personal-project
715
- ais use personal-claude
716
-
717
- # 在工作项目中
718
- cd ~/work/company-project
719
- ais use work-claude
720
-
721
- # 检查激活的账户
722
- ais info
723
- ```
724
-
725
- ### 示例 3:管理账户
726
-
727
- ```bash
728
- # 查看所有账户
729
- ais list
730
-
731
- # 检查当前账户
732
- ais current
733
-
734
- # 导出账户配置
735
- ais export personal-claude
736
-
737
- # 删除旧账户
738
- ais remove old-account
739
-
740
- # 查看配置位置
741
- ais paths
742
- ```
743
-
744
- ### 示例 4:诊断问题
745
-
746
- ```bash
747
- # 如果 Claude Code 使用了错误的账户
748
- cd ~/your-project
749
- ais doctor
750
-
751
- # 根据诊断建议操作
752
- # 然后重新设置账户
753
- ais use correct-account
754
- ```
755
-
756
- ## 安全注意事项
757
-
758
- - API 密钥仅存储在本地机器上
759
- - 全局配置文件包含敏感凭证
760
- - `ais use` 命令会自动将配置文件添加到 `.gitignore` (如果项目是 Git 仓库)
761
- - 始终验证 `.gitignore` 包含以下文件:
762
- - `.ais-project-config`
763
- - `.claude/settings.local.json`
764
- - 切勿将账户凭证提交到版本控制
765
- - 显示 API 密钥时会进行掩码处理(仅显示前 4 位和后 4 位字符)
766
-
767
- ## 平台兼容性
768
-
769
- | 平台 | 状态 | 备注 |
770
- |------|------|------|
771
- | macOS | ✅ 完全支持 | 已在 macOS 10.15+ 上测试 |
772
- | Linux | ✅ 完全支持 | 已在 Ubuntu 20.04+ 上测试 |
773
- | Windows | ✅ 完全支持 | 已在 Windows 10+ 上测试 |
774
-
775
- ## 系统要求
776
-
777
- - **Node.js**: >= 16.0.0
778
- - **npm**: >= 7.0.0
779
-
780
- **注意**: 此工具需要 Node.js 16 或更高版本(因为 commander@11.x 依赖要求)。你可以使用以下命令检查当前版本:
781
- ```bash
782
- node --version
783
- npm --version
784
- ```
785
-
786
- 如果需要升级 Node.js,请访问 [nodejs.org](https://nodejs.org/) 或使用版本管理器如 [nvm](https://github.com/nvm-sh/nvm)。
787
-
788
- ## 项目结构
789
-
790
- ```
791
- ai-agent-user-swith/
792
- ├── bin/
793
- │ └── ais.js # 可执行入口点
794
- ├── src/
795
- │ ├── index.js # 主 CLI 程序
796
- │ ├── commands.js # 命令实现
797
- │ └── config.js # 配置管理器
798
- ├── .github/
799
- │ └── workflows/
800
- │ └── release.yml # GitHub Actions 自动发布
801
- ├── package.json
802
- ├── .gitignore
803
- ├── .npmignore
804
- ├── README.md # 英文文档
805
- ├── README_ZH.md # 中文文档
806
- ├── NPM_PUBLISH.md # npm 发布指南
807
- └── RELEASE.md # 发布指南
808
- ```
809
-
810
- ## 故障排除
811
-
812
- ### 命令未找到:ais
813
-
814
- 如果安装后出现此错误,确保已链接包:
815
-
816
- ```bash
817
- npm link
818
- ```
819
-
820
- ### 权限被拒绝
821
-
822
- 在 Unix 系统上,确保 bin 文件可执行:
823
-
824
- ```bash
825
- chmod +x bin/ais.js
826
- ```
827
-
828
- ### 未找到账户
829
-
830
- 确保你已添加至少一个账户:
831
-
832
- ```bash
833
- ais add
834
- ```
835
-
836
- ### Claude Code 使用了错误的账户
837
-
838
- 如果 Claude Code 使用了非预期的账户:
839
-
840
- 1. 运行诊断:
841
- ```bash
842
- ais doctor
843
- ```
844
-
845
- 2. 检查全局 Claude 配置是否覆盖了项目配置:
846
- - 如果 `~/.claude/settings.json` 包含 `env.ANTHROPIC_AUTH_TOKEN`,可能会冲突
847
- - **解决方案**:从全局配置中删除 `env` 部分,或仅保留 `permissions`
848
-
849
- 3. 确保从项目目录或子目录启动 Claude Code
850
-
851
- 4. 重新生成项目配置:
852
- ```bash
853
- ais use <你的账户名>
854
- ```
855
-
856
- ### 在子目录中未找到项目配置
857
-
858
- 工具应该在任何子目录中工作。如果不行:
859
-
860
- ```bash
861
- # 确保你在已配置的项目中
862
- cd /path/to/your/project
863
- ais use <account>
864
-
865
- # 然后从子目录尝试
866
- cd src/
867
- ais current # 应该显示你的账户
868
- ```
869
-
870
- ### MCP (Model Context Protocol) 集成
871
-
872
- AIS 支持全局管理 MCP 服务器并按项目启用。MCP 服务器为 Claude Code 扩展额外的工具和功能。
873
-
874
- 你可以通过 **CLI 命令**和 **Web UI** 两种方式管理 MCP 服务器。
875
-
876
- #### Web UI 管理(推荐)
877
-
878
- 管理 MCP 服务器最简单的方式是通过 Web UI:
879
-
880
- ```bash
881
- ais ui
882
- ```
883
-
884
- 然后点击 **"MCP 服务器"** 标签页:
885
-
886
- **功能:**
887
- - ✅ **添加 MCP 服务器**:点击"+ 添加 MCP 服务器"添加新服务器
888
- - 选择服务器类型:stdio、sse 或 http
889
- - 填写配置(命令、URL、环境变量等)
890
- - 添加描述便于识别
891
- - ✅ **编辑服务器**:点击"编辑"修改现有服务器配置
892
- - ✅ **测试连接**:点击"测试连接"验证服务器可用性
893
- - ✅ **启用/禁用**:一键切换当前项目的服务器状态
894
- - ✅ **搜索和筛选**:快速按名称或类型查找服务器
895
- - ✅ **删除服务器**:删除不再需要的服务器
896
- - ✅ **同步配置**:点击"同步配置"同步到 Claude Code
897
-
898
- **优势:**
899
- - 直观的可视化界面
900
- - 实时验证
901
- - 无需记忆命令语法
902
- - 一目了然查看所有服务器
903
- - 状态指示器(已启用/未启用)
904
- - 支持中英文
905
-
906
- **示例工作流程:**
907
- 1. 启动 Web UI:`ais ui`
908
- 2. 点击"MCP 服务器"标签页
909
- 3. 点击"+ 添加 MCP 服务器"
910
- 4. 选择类型:"stdio"
911
- 5. 输入命令:"npx"
912
- 6. 输入参数:"@modelcontextprotocol/server-filesystem,/path"
913
- 7. 点击"保存"
914
- 8. 点击"测试连接"验证
915
- 9. 点击"启用"为当前项目启用
916
-
917
- #### CLI 管理
918
-
919
- 你也可以通过 CLI 命令管理 MCP 服务器:
920
-
921
- ##### 添加 MCP 服务器
922
-
923
- 交互式添加新的 MCP 服务器:
924
-
925
- ```bash
926
- ais mcp add filesystem
927
- ```
928
-
929
- 你将被提示配置:
930
- - **服务器类型**:stdio、sse 或 http
931
- - **命令和参数**(stdio 类型)
932
- - **URL**(sse/http 类型)
933
- - **环境变量**(可选)
934
- - **请求头**(sse/http 可选)
935
- - **描述**(可选)
936
-
937
- **示例:添加 stdio MCP 服务器**
938
- ```bash
939
- $ ais mcp add filesystem
940
- ? 选择 MCP 服务器类型: stdio
941
- ? 输入命令: npx
942
- ? 输入参数(逗号分隔): @modelcontextprotocol/server-filesystem,/Users/user/workspace
943
- ? 添加环境变量? 是
944
- ? 环境变量 (KEY=VALUE): ALLOWED_PATHS=/Users/user/workspace
945
- ? 添加另一个? 否
946
- ? 输入描述: 文件系统访问 MCP 服务器
947
- ✓ MCP 服务器 'filesystem' 添加成功!
948
- ```
949
-
950
- ##### 列出 MCP 服务器
951
-
952
- 查看所有配置的 MCP 服务器:
953
-
954
- ```bash
955
- ais mcp list
956
- ```
957
-
958
- 输出显示服务器名称、类型、启用状态和描述。
959
-
960
- ##### 为项目启用 MCP 服务器
961
-
962
- 为当前项目启用 MCP 服务器:
963
-
964
- ```bash
965
- cd ~/my-project
966
- ais mcp enable filesystem
967
- ```
968
-
969
- 这将:
970
- 1. 将服务器添加到项目的启用列表
971
- 2. 更新 `.claude/settings.local.json` 的 MCP 配置
972
- 3. 使 MCP 服务器在此项目中对 Claude Code 可用
973
-
974
- ##### 管理 MCP 服务器
975
-
976
- ```bash
977
- # 显示 MCP 服务器详情
978
- ais mcp show filesystem
979
-
980
- # 更新 MCP 服务器配置
981
- ais mcp update filesystem
982
-
983
- # 为当前项目禁用 MCP 服务器
984
- ais mcp disable filesystem
985
-
986
- # 显示当前项目已启用的 MCP 服务器
987
- ais mcp enabled
988
-
989
- # 同步 MCP 配置到 Claude Code
990
- ais mcp sync
991
-
992
- # 删除 MCP 服务器
993
- ais mcp remove filesystem
994
- ```
995
-
996
- ## 贡献
997
-
998
- 欢迎贡献!你可以:
999
- - 报告 bug
1000
- - 建议新功能
1001
- - 提交 pull request
1002
-
1003
- ## 许可证
1004
-
1005
- MIT License - 欢迎在你的项目中使用此工具!
1006
-
1007
- ## 更新日志
1008
-
1009
- ### v1.7.0
1010
- - **MCP Web UI 管理**:
1011
- - 通过 Web UI 完整管理 MCP 服务器
1012
- - 标签页导航系统(账号管理 / MCP 服务器)
1013
- - 直观界面添加、编辑、删除 MCP 服务器
1014
- - 测试 MCP 服务器连接
1015
- - 一键启用/禁用项目级服务器
1016
- - 搜索和筛选功能
1017
- - 实时验证和状态指示器
1018
- - 完整的中英文支持
1019
- - **MCP CLI 集成**:
1020
- - 使用 `ais mcp` 命令全局管理 MCP 服务器
1021
- - 项目级 MCP 服务器启用/禁用功能
1022
- - 支持 stdio、sse 和 http MCP 服务器类型
1023
- - 自动生成 Claude Code 的 MCP 配置
1024
- - 命令:`ais mcp add`、`ais mcp list`、`ais mcp show`、`ais mcp update`、`ais mcp remove`
1025
- - 项目命令:`ais mcp enable`、`ais mcp disable`、`ais mcp enabled`、`ais mcp sync`
1026
- - 交互式 MCP 服务器配置,带验证
1027
- - 支持 MCP 服务器的环境变量和请求头
1028
- - **Bug 修复**:
1029
- - 修复添加标签页后账号数据不显示的问题
1030
- - 修复 "switchTab is not defined" 错误
1031
- - 修复搜索结果提示信息不正确的问题
1032
- - **改进**:
1033
- - 更好的用户体验,提示信息更清晰
1034
- - 现代 JavaScript 实践(事件监听器)
1035
- - 改进代码质量和可维护性
1036
- - 32 个自动化测试全部通过
1037
-
1038
- ### v1.6.0
1039
- - **CCR (Claude Code Router) 集成**:
1040
- - 完整支持 Claude Code Router
1041
- - 自动生成 `~/.claude-code-router/config.json` 配置
1042
- - Provider 和 Router 配置管理
1043
- - 配置更改后自动重启 CCR Router
1044
- - Claude Code 与本地 CCR Router 端点集成
1045
- - 支持 default、background 和 think 模型路由
1046
- - **Web UI 增强**:
1047
- - 添加账户状态检查,带颜色指示器(绿色:可用,橙色:不稳定,红色:不可用)
1048
- - 状态结果会保存并在页面加载时显示
1049
- - 实时状态检查,带"状态检查"按钮
1050
- - 改进账户卡片布局,状态显示在右上角
1051
- - 状态检查期间增强视觉反馈
1052
- - **配置改进**:
1053
- - CCR 账户自动生成 CCR 和 Claude 两种配置
1054
- - 从 CCR 配置动态读取端口用于 Claude 集成
1055
- - 更好的错误处理和用户反馈
1056
-
1057
- ### v1.5.7
1058
- - **Droids 集成**:
1059
- - 完整支持 Droids AI 助手
1060
- - 自动生成 `.droids/config.json` 配置文件
1061
- - Droids 账户的简单模型配置
1062
- - 交互会话命令:`droid`
1063
- - 增强 `ais doctor` 命令,支持 Droids 配置检测
1064
- - **UI 增强**:
1065
- - 添加类型筛选下拉框,快速过滤账户
1066
- - 按类型为账户卡片着色(Claude: 蓝色,Codex: 紫色,Droids: 绿色,Other: 橙色)
1067
- - 账户卡片左侧边框颜色指示器
1068
- - 改进视觉层次和用户体验
1069
- - **模型配置改进**:
1070
- - 为不同账户类型分离模型配置
1071
- - Claude: 复杂的模型组,支持多个模型设置
1072
- - Codex/Droids: 简单的模型字段,配置更直观
1073
- - 所有模型设置移至可折叠的"高级配置"区域
1074
- - **更好的用户指引**:
1075
- - 增强 `ais use` 命令,提供清晰的下一步操作说明
1076
- - 为每个 AI 助手提供特定类型的使用示例
1077
- - 交互模式提示而非一次性命令示例
1078
-
1079
- ### v1.5.1
1080
- - **Codex 集成增强**:
1081
- - 完整支持 Codex CLI 的 profile 配置
1082
- - 自动为 Codex 账户生成 `~/.codex/config.toml` profiles
1083
- - 项目级 `.codex-profile` 文件方便引用 profile
1084
- - 智能 API URL 处理:自动添加 `/v1` 路径(如果缺少)
1085
- - 使用 OpenAI 兼容的 `wire_api = "chat"` 格式
1086
- - 通过正确配置防止 Cloudflare 400 错误
1087
- - **用户体验改进**:
1088
- - 添加 Codex 账户时显示配置提示
1089
- - 账户创建后显示使用说明
1090
- - 增强 `ais doctor` 命令,支持 Codex 配置检测
1091
- - 改进 TOML 文件中的重复 profile 清理
1092
- - **Bug 修复**:
1093
- - 修复 Codex 配置中的重复 profile key 错误
1094
- - 改进 profile 删除的正则表达式模式
1095
- - 分离 Claude 和 Codex 配置生成逻辑
1096
- - **文档更新**:
1097
- - README 中添加全面的 Codex 集成指南
1098
- - 常见 Codex 问题的故障排除部分
1099
- - 多项目 Codex 使用示例
1100
-
1101
- ### v1.5.0
1102
- - **模型组管理系统**:
1103
- - 重构模型配置为灵活的模型组(Model Groups)系统
1104
- - 每个账户可以拥有多个不同配置的模型组
1105
- - 快速切换模型组,自动更新 Claude 配置
1106
- - **新增 CLI 命令**:
1107
- - `ais model list/ls` - 列出当前账户的所有模型组
1108
- - `ais model add [name]` - 创建新的模型组
1109
- - `ais model use <name>` - 切换到不同的模型组
1110
- - `ais model remove/rm [name]` - 删除模型组
1111
- - `ais model show [name]` - 显示模型组配置详情
1112
- - **功能增强**:
1113
- - 增强账户创建流程,支持模型组配置
1114
- - Web UI 更新,支持可折叠的模型组管理界面
1115
- - 修复切换账户时模型配置不更新的问题
1116
- - 优化 CLI 输出颜色一致性
1117
- - DEFAULT_MODEL 自动填充其他未设置的模型配置
1118
- - **向后兼容**:
1119
- - 保持对旧 modelConfig 结构的支持
1120
- - 现有账户无需迁移即可继续使用
1121
-
1122
- ### v1.4.0
1123
- - **添加 Web UI 管理界面**:
1124
- - 现代化单页面应用,支持深色/浅色主题
1125
- - 中英文双语支持,默认中文
1126
- - 可视化账号管理:增删改查一目了然
1127
- - 导入/导出功能:批量管理账号配置
1128
- - 实时搜索过滤账号
1129
- - 自定义环境变量配置
1130
- - 主题自动跟随系统设置
1131
- - iOS 风格的主题切换开关
1132
- - **端口优化**:
1133
- - UI 服务器使用随机高位端口(49152-65535)
1134
- - 自动检测端口冲突并重试
1135
- - **界面改进**:
1136
- - 修复账号卡片按钮位置不一致问题
1137
- - 按钮始终固定在卡片底部
1138
- - **移除组织 ID 配置**:
1139
- - 简化账号配置流程
1140
- - 移除 CLI 和 UI 中的组织 ID 选项
1141
-
1142
- ### v1.3.0
1143
- - **改进自定义环境变量输入**:
1144
- - 支持单行 `KEY=VALUE` 格式输入(例如:`CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1`)
1145
- - 配置过程中实时显示已添加的变量
1146
- - 直接按回车即可完成变量添加
1147
- - 更清晰的错误提示和用户指引
1148
- - 增强文档,添加详细的示例和使用说明
1149
-
1150
- ### v1.2.0
1151
- - 添加账户自定义环境变量支持
1152
- - 添加 `ais doctor` 命令用于配置诊断
1153
- - 增强 `ais help` 显示所有新功能
1154
- - 更新安装文档(npm 作为推荐安装方式)
1155
- - 改进 PATH 配置说明
1156
- - 在 `ais list` 和 `ais info` 中显示自定义环境变量
1157
-
1158
- ### v1.1.0
1159
- - 添加智能目录检测(在任何子目录中工作)
1160
- - 自动生成 Claude Code `.claude/settings.local.json` 配置
1161
- - 在 `ais info` 命令中显示项目根目录
1162
- - 改进跨平台兼容性
1163
-
1164
- ### v1.0.0
1165
- - 初始版本
1166
- - 基本账户管理(添加、列出、删除)
1167
- - 项目级账户切换
1168
- - 跨平台支持
1169
- - 交互式 CLI 提示
1170
- - 账户导出功能
1171
-
1172
- ## 未来增强
1173
-
1174
- 未来版本的潜在功能:
1175
- - 账户验证
1176
- - 批量导入/导出
1177
- - 账户模板
1178
- - 环境变量导出
1179
- - 账户共享(加密)
1180
- - 云同步支持
1181
- - 账户使用统计
1182
-
1183
- ## 支持
1184
-
1185
- 如果遇到任何问题或有疑问:
1186
- 1. 查看故障排除部分
1187
- 2. 查看现有 issues
1188
- 3. 创建新 issue 并提供详细信息
1189
-
1190
- ---
1191
-
1192
- **祝你与 AI 助手编码愉快!** 🤖