CodexSwitch 迁移计划
更新时间:2026-04-02 作用:把当前实现从“字段驱动 + 运行时覆盖优先”迁到“文件模板切换优先”
当前状态
当前项目已经有:
- CLI
- GUI 骨架
- provider 预设
- 平台路径展示
runtime_overridepersistent_switch
但主模型仍然偏:
- 配置字段
- 运行时启动方案
还没有真正收成:
- 文件模板 profile
- 受控 patch
- 以文件差异为中心的激活流程
目标状态
CodexSwitch 要迁到下面这个状态:
- 官网 / 中转 / 第三方都表现为 profile
- 每个 profile 都明确自己会管理哪些文件
- 每个目标文件都有写入策略
json_replacetoml_patch
- 激活预览围绕“文件差异”展开
- 回滚基于真实备份快照
Phase 1:落地 Codex 文件模板存储
先只做 Codex。
新增能力:
~/.codex-switch/profiles/<client>/<name>/profile.jsonconfig.managed.toml.tmplauth.json.tmpl
需要调整的模块:
src/lib/profiles.mjssrc/lib/paths.mjs
完成标准:
- profile 不再只存在于
profiles.json - 至少可以读写文件模板目录
Phase 2:实现渲染与受控 patch
目标:
- 支持把模板渲染成目标文件内容
- 支持
auth.json整文件替换 - 支持
config.toml受控 patch
config.toml 第一阶段建议只管理:
model_providermodelreview_modelmodel_reasoning_effort[model_providers.*]
显式保留:
[projects.*][notice][notice.model_migrations][features]
需要新增或改造的模块:
src/lib/render-profile.mjssrc/lib/codex-config.mjs
完成标准:
- 给定一个
Codexprofile,可以得到稳定预览结果
Phase 3:让激活预览以文件差异为中心
目标:
- 右侧不再以“字段状态”主导
- 改成:
- 会改哪些文件
- 哪些文件整替换
- 哪些文件 patch
- 关键差异摘要
需要改动:
src-ui/src/App.sveltesrc-tauri/src/main.rs
完成标准:
- 用户一眼能看懂“激活这个 profile 会发生什么”
Phase 4:导入当前本机配置为 profile
目标:
- 把当前
~/.codex/config.toml - 把当前
~/.codex/auth.json
导入成一套新的 profile 模板。
导入时需要区分:
- 哪些字段属于工具管理范围
- 哪些字段是本机状态,需要保留但不纳入模板
这一步会决定产品是否真的好用。
完成标准:
- 用户可以从本机现有配置一键生成 profile
Phase 5:再考虑 Claude
不要太早把 Claude 做复杂。
先确认:
~/.claude.json~/.claude/
里哪些文件适合:
full replacemanaged patch
确认之后,再把 Claude 纳入与 Codex 一致的文件模板体系。
暂时不要做的事
在前面几个 phase 没稳定前,不要继续扩:
- 更复杂的 provider 表单
- 过多的运行时启动器花样
- 太早的多客户端 GUI 华丽交互
这些都不是当前主阻塞。
当前最值得先做的开发顺序
Codex文件模板目录Codex渲染与 patch- 激活差异预览
- 导入当前配置
- 再处理
Claude