Skip to content

CodexSwitch 迁移计划

更新时间:2026-04-02 作用:把当前实现从“字段驱动 + 运行时覆盖优先”迁到“文件模板切换优先”


当前状态

当前项目已经有:

  • CLI
  • GUI 骨架
  • provider 预设
  • 平台路径展示
  • runtime_override
  • persistent_switch

但主模型仍然偏:

  • 配置字段
  • 运行时启动方案

还没有真正收成:

  • 文件模板 profile
  • 受控 patch
  • 以文件差异为中心的激活流程

目标状态

CodexSwitch 要迁到下面这个状态:

  1. 官网 / 中转 / 第三方都表现为 profile
  2. 每个 profile 都明确自己会管理哪些文件
  3. 每个目标文件都有写入策略
    • json_replace
    • toml_patch
  4. 激活预览围绕“文件差异”展开
  5. 回滚基于真实备份快照

Phase 1:落地 Codex 文件模板存储

先只做 Codex

新增能力:

  • ~/.codex-switch/profiles/<client>/<name>/
  • profile.json
  • config.managed.toml.tmpl
  • auth.json.tmpl

需要调整的模块:

  • src/lib/profiles.mjs
  • src/lib/paths.mjs

完成标准:

  • profile 不再只存在于 profiles.json
  • 至少可以读写文件模板目录

Phase 2:实现渲染与受控 patch

目标:

  • 支持把模板渲染成目标文件内容
  • 支持 auth.json 整文件替换
  • 支持 config.toml 受控 patch

config.toml 第一阶段建议只管理:

  • model_provider
  • model
  • review_model
  • model_reasoning_effort
  • [model_providers.*]

显式保留:

  • [projects.*]
  • [notice]
  • [notice.model_migrations]
  • [features]

需要新增或改造的模块:

  • src/lib/render-profile.mjs
  • src/lib/codex-config.mjs

完成标准:

  • 给定一个 Codex profile,可以得到稳定预览结果

Phase 3:让激活预览以文件差异为中心

目标:

  • 右侧不再以“字段状态”主导
  • 改成:
    • 会改哪些文件
    • 哪些文件整替换
    • 哪些文件 patch
    • 关键差异摘要

需要改动:

  • src-ui/src/App.svelte
  • src-tauri/src/main.rs

完成标准:

  • 用户一眼能看懂“激活这个 profile 会发生什么”

Phase 4:导入当前本机配置为 profile

目标:

  • 把当前 ~/.codex/config.toml
  • 把当前 ~/.codex/auth.json

导入成一套新的 profile 模板。

导入时需要区分:

  • 哪些字段属于工具管理范围
  • 哪些字段是本机状态,需要保留但不纳入模板

这一步会决定产品是否真的好用。

完成标准:

  • 用户可以从本机现有配置一键生成 profile

Phase 5:再考虑 Claude

不要太早把 Claude 做复杂。

先确认:

  • ~/.claude.json
  • ~/.claude/

里哪些文件适合:

  • full replace
  • managed patch

确认之后,再把 Claude 纳入与 Codex 一致的文件模板体系。


暂时不要做的事

在前面几个 phase 没稳定前,不要继续扩:

  • 更复杂的 provider 表单
  • 过多的运行时启动器花样
  • 太早的多客户端 GUI 华丽交互

这些都不是当前主阻塞。


当前最值得先做的开发顺序

  1. Codex 文件模板目录
  2. Codex 渲染与 patch
  3. 激活差异预览
  4. 导入当前配置
  5. 再处理 Claude