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.jsonCodex 原生认证文件,cdxs switch 会写入这里。
  • cdxs.tomlcdxs 自己的配置文件,保存账号、home、同步信息。
  • cdxs-backups\:写入 auth.jsoncdxs.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.sqlitesession_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 个测试通过,命令本身成功完成。

S
Description
No description provided
Readme 628 KiB
0.1.9 Latest
2026-06-08 15:51:20 +08:00
Languages
Rust 94.9%
PowerShell 2.7%
Shell 2.2%
Dockerfile 0.2%