@minniexcode/codex-switch 0.0.11 → 0.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.AI.md +110 -152
- package/README.CN.md +179 -215
- package/README.md +183 -217
- package/dist/app/add-provider.js +9 -3
- package/dist/app/edit-provider.js +17 -3
- package/dist/app/get-status.js +8 -3
- package/dist/app/list-providers.js +48 -1
- package/dist/app/run-doctor.js +4 -0
- package/dist/cli/output.js +153 -18
- package/dist/commands/handlers.js +10 -6
- package/dist/commands/help.js +9 -5
- package/dist/commands/registry.js +22 -14
- package/dist/domain/config.js +26 -1
- package/dist/domain/providers.js +16 -0
- package/dist/domain/runtime-state.js +30 -8
- package/dist/infra/config-repo.js +16 -206
- package/dist/interaction/interactive.js +16 -6
- package/dist/runtime/copilot-bridge.js +2 -1
- package/dist/storage/config-repo.js +0 -23
- package/docs/Design/codex-switch-v0.0.12-design.md +343 -0
- package/docs/Design/codex-switch-v0.1.0-design.md +152 -0
- package/docs/PRD/codex-switch-prd-v0.0.12.md +279 -0
- package/docs/PRD/codex-switch-prd-v0.1.0.md +217 -317
- package/docs/Tests/testing.md +31 -151
- package/docs/cli-usage.md +223 -524
- package/docs/codex-switch-command-design.md +649 -646
- package/docs/codex-switch-product-overview.md +86 -241
- package/docs/codex-switch-technical-architecture.md +1115 -1112
- package/package.json +51 -51
- package/dist/app/rollback-latest.js +0 -26
|
@@ -1,241 +1,86 @@
|
|
|
1
|
-
# codex-switch 产品文档
|
|
2
|
-
|
|
3
|
-
## 文档定位
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
-
|
|
46
|
-
-
|
|
47
|
-
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
`codex-switch` 当前明确采用 CLI-first 形态。
|
|
89
|
-
|
|
90
|
-
这意味着:
|
|
91
|
-
|
|
92
|
-
- 第一阶段只提供命令行接口
|
|
93
|
-
- 所有核心功能都能通过命令完成
|
|
94
|
-
- 重点优化稳定命令、明确输出和自动化兼容性
|
|
95
|
-
- 不依赖 GUI,不依赖后台常驻服务
|
|
96
|
-
|
|
97
|
-
这也是它和一些桌面切换器最大的区别:`codex-switch` 更强调自动化与可调用性,而不是可视化操作界面。
|
|
98
|
-
|
|
99
|
-
## 核心价值
|
|
100
|
-
|
|
101
|
-
### 1. 切换更简单
|
|
102
|
-
|
|
103
|
-
用户不需要手动打开配置文件查找和修改 `profile`,只需要执行一条命令。
|
|
104
|
-
|
|
105
|
-
### 2. 修改更安全
|
|
106
|
-
|
|
107
|
-
所有关键写操作都围绕“先备份、后修改、失败回滚”的原则设计,降低误操作风险。
|
|
108
|
-
|
|
109
|
-
### 3. 对 AI 更友好
|
|
110
|
-
|
|
111
|
-
命令名、参数和输出结构保持稳定,AI 可以把它当成标准工具调用,而不是临时脚本。
|
|
112
|
-
|
|
113
|
-
### 4. 产品边界更清晰
|
|
114
|
-
|
|
115
|
-
它不试图一开始就处理账号全生命周期、可视化界面、复杂路由和远程同步,而是聚焦“本地 provider/profile 管理和切换”这一件事。
|
|
116
|
-
|
|
117
|
-
## 核心能力
|
|
118
|
-
|
|
119
|
-
MVP 的能力范围主要包括:
|
|
120
|
-
|
|
121
|
-
- provider/profile 管理
|
|
122
|
-
- 查看、添加、删除本地 provider 记录
|
|
123
|
-
- 当前状态查看
|
|
124
|
-
- 查看当前生效 profile
|
|
125
|
-
- 查看本地配置整体状态
|
|
126
|
-
- provider 切换
|
|
127
|
-
- 切换到指定 provider
|
|
128
|
-
- 默认联动执行 `codex login --with-api-key`
|
|
129
|
-
- 配置安全
|
|
130
|
-
- 修改前自动备份
|
|
131
|
-
- 失败时自动回滚
|
|
132
|
-
- 配置迁移
|
|
133
|
-
- 导入和导出 `providers.json`
|
|
134
|
-
- 环境诊断
|
|
135
|
-
- 检查配置文件、provider 映射和 CLI 可用性
|
|
136
|
-
|
|
137
|
-
## 产品工作方式
|
|
138
|
-
|
|
139
|
-
`codex-switch` 的工作对象主要围绕 `~/.codex/` 目录:
|
|
140
|
-
|
|
141
|
-
```text
|
|
142
|
-
~/.codex/
|
|
143
|
-
config.toml
|
|
144
|
-
auth.json
|
|
145
|
-
providers.json
|
|
146
|
-
backups/
|
|
147
|
-
```
|
|
148
|
-
|
|
149
|
-
其中:
|
|
150
|
-
|
|
151
|
-
- `config.toml` 是主配置文件
|
|
152
|
-
- `providers.json` 是 `codex-switch` 自身维护的 provider 清单
|
|
153
|
-
- `auth.json` 是当前 active direct provider 的认证投影文件;切换 direct provider 时会刷新 `OPENAI_API_KEY`
|
|
154
|
-
- `backups/` 用于保存历史备份
|
|
155
|
-
|
|
156
|
-
产品不会要求用户先理解全部内部实现,只暴露统一的命令接口。
|
|
157
|
-
|
|
158
|
-
## 典型使用流程
|
|
159
|
-
|
|
160
|
-
### 场景 1:查看当前状态
|
|
161
|
-
|
|
162
|
-
用户可以先查看当前生效 profile,以及本地配置是否完整。
|
|
163
|
-
|
|
164
|
-
### 场景 2:列出所有 provider
|
|
165
|
-
|
|
166
|
-
用户可以查看当前有哪些可切换 provider,以及它们分别映射到哪个 profile。
|
|
167
|
-
|
|
168
|
-
### 场景 3:切换到目标 provider
|
|
169
|
-
|
|
170
|
-
用户执行切换命令后,工具会完成校验、备份、修改运行态配置,并在 direct provider 场景下同步 `auth.json`。
|
|
171
|
-
|
|
172
|
-
### 场景 4:出现异常时恢复
|
|
173
|
-
|
|
174
|
-
如果切换失败,工具会自动回滚;如果用户需要手动恢复,也可以通过回滚命令恢复最近一次状态。
|
|
175
|
-
|
|
176
|
-
### 场景 5:迁移到新机器
|
|
177
|
-
|
|
178
|
-
用户可以导出 `providers.json`,在另一台机器上导入,再进行本地校验和切换。
|
|
179
|
-
|
|
180
|
-
## 与其他方案的区别
|
|
181
|
-
|
|
182
|
-
相较于临时脚本,`codex-switch` 的区别在于:
|
|
183
|
-
|
|
184
|
-
- 有稳定命令集
|
|
185
|
-
- 有统一输出格式
|
|
186
|
-
- 有更清晰的产品边界
|
|
187
|
-
- 更适合长期维护
|
|
188
|
-
|
|
189
|
-
相较于 GUI 或重型账号工具,`codex-switch` 的区别在于:
|
|
190
|
-
|
|
191
|
-
- 更轻量
|
|
192
|
-
- 更适合自动化
|
|
193
|
-
- 更适合 AI 调用
|
|
194
|
-
- 聚焦本地 provider/profile,而不是扩展成完整账号平台
|
|
195
|
-
|
|
196
|
-
## 当前明确不做的内容
|
|
197
|
-
|
|
198
|
-
当前版本不做以下内容:
|
|
199
|
-
|
|
200
|
-
- GUI / Desktop App
|
|
201
|
-
- 常驻后台服务
|
|
202
|
-
- 代理转发层
|
|
203
|
-
- 复杂多账号体系
|
|
204
|
-
- 自动智能路由
|
|
205
|
-
- 远程同步
|
|
206
|
-
|
|
207
|
-
这些方向不是永远不做,而是不属于当前产品的首要问题。
|
|
208
|
-
|
|
209
|
-
## 为什么是 TypeScript / Node.js
|
|
210
|
-
|
|
211
|
-
`codex-switch` 当前优先选择 TypeScript / Node.js,不是因为这个产品需要高性能计算,而是因为这条路线更符合它的产品形态:
|
|
212
|
-
|
|
213
|
-
- npm 全局安装体验成熟
|
|
214
|
-
- CLI 生态完善
|
|
215
|
-
- 开发和迭代速度更快
|
|
216
|
-
- 更方便后续扩展交互、JSON 输出和 AI 集成
|
|
217
|
-
|
|
218
|
-
因此,当前阶段真正重要的不是“是否足够底层”,而是:
|
|
219
|
-
|
|
220
|
-
- 命令是否稳定
|
|
221
|
-
- 文件修改是否安全
|
|
222
|
-
- 输出是否易于解析
|
|
223
|
-
- 用户是否容易安装和使用
|
|
224
|
-
|
|
225
|
-
## 成功标准
|
|
226
|
-
|
|
227
|
-
如果 `codex-switch` 能做到以下几点,就说明这个产品方向成立:
|
|
228
|
-
|
|
229
|
-
- 用户可以轻松安装并使用统一 CLI
|
|
230
|
-
- 用户可以可靠地查看、切换和管理本地 provider
|
|
231
|
-
- 切换失败时不会破坏本地配置
|
|
232
|
-
- AI 可以稳定调用关键命令
|
|
233
|
-
- 用户不需要再依赖手工改配置或维护零散脚本
|
|
234
|
-
|
|
235
|
-
## 当前结论
|
|
236
|
-
|
|
237
|
-
`codex-switch` 的产品定位可以概括为:
|
|
238
|
-
|
|
239
|
-
> 一个轻量、可安装、默认安全、对 AI 友好的本地 Codex provider/profile 切换工具。
|
|
240
|
-
|
|
241
|
-
它不是从 GUI 起步,也不是从复杂账号系统起步,而是从最有价值、最容易落地、最适合自动化调用的 CLI 能力起步。
|
|
1
|
+
# codex-switch 产品文档
|
|
2
|
+
|
|
3
|
+
## 文档定位
|
|
4
|
+
|
|
5
|
+
这份文档介绍当前活跃产品事实源下的 `codex-switch` 产品定位。
|
|
6
|
+
|
|
7
|
+
当前 release contract 以这些文档为准:
|
|
8
|
+
|
|
9
|
+
- [`cli-usage.md`](./cli-usage.md)
|
|
10
|
+
- [`PRD/codex-switch-prd-v0.1.0.md`](./PRD/codex-switch-prd-v0.1.0.md)
|
|
11
|
+
- [`Design/codex-switch-v0.1.0-design.md`](./Design/codex-switch-v0.1.0-design.md)
|
|
12
|
+
|
|
13
|
+
## 产品概述
|
|
14
|
+
|
|
15
|
+
`codex-switch` 是一个本地 provider 管理 CLI,用于管理和切换目标 Codex runtime 的 provider/profile 配置,同时把工具自己的管理态保存在独立 tool home 下。
|
|
16
|
+
|
|
17
|
+
它不是旧 `setup` 小工具,也不是围绕单目录 `~/.codex` 组织全部状态的脚本集合。
|
|
18
|
+
|
|
19
|
+
## 产品工作方式
|
|
20
|
+
|
|
21
|
+
`codex-switch` 使用 dual-path model。
|
|
22
|
+
|
|
23
|
+
tool home:
|
|
24
|
+
|
|
25
|
+
```text
|
|
26
|
+
~/.config/codex-switch/
|
|
27
|
+
codex-switch.json
|
|
28
|
+
providers.json
|
|
29
|
+
backups/
|
|
30
|
+
runtime/
|
|
31
|
+
runtimes/
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
target Codex runtime:
|
|
35
|
+
|
|
36
|
+
```text
|
|
37
|
+
~/.codex/
|
|
38
|
+
config.toml
|
|
39
|
+
auth.json
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
说明:
|
|
43
|
+
|
|
44
|
+
- `providers.json` 不位于 `~/.codex`
|
|
45
|
+
- `backups/` 不位于 `~/.codex`
|
|
46
|
+
- tool home 承担管理态 SSOT
|
|
47
|
+
- target runtime 承担受管运行态投影
|
|
48
|
+
|
|
49
|
+
## 核心使用流程
|
|
50
|
+
|
|
51
|
+
Direct 主路径:
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
codexs init
|
|
55
|
+
codexs add <provider> --profile <name> --api-key <key>
|
|
56
|
+
codexs switch <provider>
|
|
57
|
+
codexs status
|
|
58
|
+
codexs doctor
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
Copilot 主路径:
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
codexs init
|
|
65
|
+
codexs login copilot
|
|
66
|
+
codexs add <provider> --copilot --profile <name>
|
|
67
|
+
codexs switch <provider>
|
|
68
|
+
codexs status
|
|
69
|
+
codexs doctor
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
Advanced adopt helper:
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
codexs init
|
|
76
|
+
codexs migrate
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
## 当前产品判断
|
|
80
|
+
|
|
81
|
+
`0.1.0` 的重点不是再加新命令,而是让用户在 README、help 和输出第一屏就能理解:
|
|
82
|
+
|
|
83
|
+
- fresh install 应先走什么
|
|
84
|
+
- Copilot 路径和 direct 路径有什么区别
|
|
85
|
+
- `migrate` 何时才该使用
|
|
86
|
+
- `status` / `doctor` 如何帮助定位下一步
|