cdxs
cdxs 是一个 Codex 账号与 CODEX_HOME 切换工具。它可以保存多个 Codex OAuth 账号或 API Key 账号,把指定账号写入 Codex 的 auth.json,并提供配额查询、会话查看/回收/修复、多 CODEX_HOME 管理和简单的配置同步服务。
功能概览
- 保存和切换多个 Codex 账号。
- 支持从已有
auth.json导入 OAuth 或 API Key 认证信息。 - 支持通过 OpenAI OAuth 登录并保存 token。
- 支持直接添加 API Key 账号。
- 支持为不同项目创建独立的
CODEX_HOME,并绑定不同账号。 - 支持用指定账号或 home 启动外部命令,例如
codex。 - 支持查询 OAuth 账号的 Codex 使用配额。
- 支持查看 Codex 会话、统计 token、移入垃圾箱、恢复和修复可见性。
- 支持把本地
cdxs.toml推送到自建同步服务,或从同步服务拉取。
安装与构建
本项目是 Rust CLI。需要先安装 Rust 工具链。
cargo build --release
构建后的可执行文件位于:
target\release\cdxs.exe
开发时可直接运行:
cargo run -- --help
如果希望全局使用,可以把 target\release 加入 PATH,或者把 cdxs.exe 复制到已有的命令目录。
数据文件
默认读取当前 CODEX_HOME 环境变量;如果没有设置,则使用用户目录下的 .codex:
%USERPROFILE%\.codex
主要文件:
auth.json:Codex 原生认证文件,cdxs switch会写入这里。cdxs.toml:cdxs自己的配置文件,保存账号、home、同步信息。cdxs-backups\:写入auth.json、cdxs.toml、会话索引或状态库前的备份目录。cdxs-trash\:被cdxs session trash移入垃圾箱的会话。
多数命令支持通过 CODEX_HOME 控制配置位置;部分命令还提供 --codex-home 参数指定目标 Codex home。
快速开始
从当前 Codex 的 auth.json 导入账号:
cdxs import auth
导入后立即切换为当前账号:
cdxs import auth --switch
查看已保存账号:
cdxs list
切换账号:
cdxs switch <账号ID或邮箱前缀>
用指定账号启动 Codex:
cdxs run --account <账号ID或邮箱前缀> -- codex
账号管理
OAuth 登录:
cdxs login oauth
默认会监听 127.0.0.1:1455 等待浏览器回调。可指定端口:
cdxs login oauth --port 1456
如果不能自动接收回调,可以手动粘贴回调 URL:
cdxs login oauth --manual
添加 API Key 账号:
cdxs account add-api-key --key sk-...
使用自定义 API base URL:
cdxs account add-api-key --key sk-... --base-url https://example.com/v1
常用账号命令:
cdxs account list
cdxs account current
cdxs account show <账号ID或邮箱前缀>
cdxs account remove <账号ID或邮箱前缀>
cdxs refresh-token <账号ID或邮箱前缀>
支持 JSON 输出的命令:
cdxs list --json
cdxs account current --json
cdxs account show <账号> --json
说明:switch --apply-fingerprint 参数目前只会输出提示,实际不会应用设备指纹。
配额查询
查询当前账号或第一个账号的 Codex 配额:
cdxs quota
查询指定账号:
cdxs quota <账号ID或邮箱前缀>
查询所有账号:
cdxs quota --all
JSON 输出:
cdxs quota --all --json
注意:配额查询调用的是 ChatGPT/Codex OAuth 后端接口,只支持 OAuth 账号;API Key 账号不支持该配额查询。
多 CODEX_HOME 管理
创建一个独立 home:
cdxs home create work --path D:\codex-homes\work
创建时绑定账号,并把账号写入该 home 的 auth.json:
cdxs home create work --path D:\codex-homes\work --account <账号>
绑定已有 home 到账号:
cdxs home bind work <账号>
查看 home:
cdxs home list
cdxs home path work
用某个 home 启动命令:
cdxs run --home work -- codex
删除 home 记录:
cdxs home remove work
说明:home remove 只删除 cdxs.toml 里的 home 记录,不会删除实际目录;default home 不能删除。
会话管理
列出默认 home 的 Codex 会话:
cdxs session list
列出所有受管理 home 的会话:
cdxs session list --all-homes
查看某个会话的统计信息:
cdxs session stats <session_id>
移入 cdxs 垃圾箱,并从 Codex 会话索引和 SQLite 状态库中隐藏:
cdxs session trash <session_id>
查看垃圾箱:
cdxs session trash-list
恢复会话:
cdxs session restore <session_id>
检查会话可见性问题:
cdxs session visibility check
自动修复可见性问题:
cdxs session visibility repair
把缺失的会话线程复制到其他受管理 home:
cdxs session sync-threads --all-homes
预览同步动作,不实际写入:
cdxs session sync-threads --all-homes --dry-run
会话相关命令会读取 Codex 的 state_5.sqlite、session_index.jsonl 以及 sessions / archived_sessions 下的 rollout 文件。写入前会尽量在 cdxs-backups 中备份相关文件。
同步服务
cdxs 内置一个简单同步服务,用于在多台机器之间同步 cdxs.toml 中的账号、home 等便携状态。
在服务端添加用户:
cdxs server user add alice --password your-password
启动服务:
cdxs server run --bind 127.0.0.1:8765
客户端登录:
cdxs sync login --server http://127.0.0.1:8765 --user alice --password your-password
推送本地状态到服务端:
cdxs sync push
从服务端拉取状态到本地:
cdxs sync pull
查看同步配置:
cdxs sync status
说明:服务端会保存用户密码哈希和登录 session;客户端拉取/推送的状态会排除服务端用户和同步 token。同步会覆盖账号、home 和 meta 状态,使用前建议先备份当前 .codex\cdxs.toml。
常用命令速查
cdxs --help
cdxs list
cdxs import auth --switch
cdxs login oauth --switch
cdxs account add-api-key --key sk-... --switch
cdxs switch <账号>
cdxs run --account <账号> -- codex
cdxs quota --all
cdxs home list
cdxs session list --all-homes
cdxs session visibility check --all-homes
开发验证
当前代码没有单元测试,但可以运行:
cargo test
当前实际结果为 0 个测试通过,命令本身成功完成。