cdxs
cdxs 是一个面向 Codex 的账号、home、会话和账号状态同步管理工具。
它把多个 Codex OAuth / API Key 账号保存在本地,再按需写回 Codex 使用的 auth.json。同时,它可以管理多个独立 CODEX_HOME,避免手动搬运认证文件和会话状态。
简介
Codex 的认证和会话状态都来自 CODEX_HOME。cdxs 做的是在这个目录外面加一层可操作的管理能力:
- 账号管理:导入已有
auth.json,通过 OAuth 或 API Key 登录,切换当前账号,并在需要时刷新 OAuth token。 - 配额缓存:列出账号时自动刷新过期的 OAuth 配额缓存。
- Home 管理:创建命名的
CODEX_HOME,并绑定到指定账号。 - 命令运行:用指定账号或 home 运行
codex exec,只为该进程设置CODEX_HOME。 - 会话管理:查看会话、统计 token 和文件信息、移入可恢复垃圾箱、恢复会话、修复缺失的会话索引。
- 线程同步:在多个受管理 home 之间补齐缺失的会话线程。
- 状态同步:运行轻量 HTTP 服务,在多台机器之间推送或拉取账号状态。
管理 Codex 登录信息本地文件。
存储
Codex home 的解析顺序:
--codex-homeCODEX_HOME~/.codex
主要文件:
auth.json:Codex 认证文件,由账号切换或运行命令时写入。cdxs.toml:cdxs的本地状态,保存账号、home、同步配置和元数据。state_5.sqlite:Codex 会话数据库。session_index.jsonl:Codex 会话列表索引。sessions/:Codex rollout JSONL 文件。cdxs-trash/:会话垃圾箱,用于可恢复删除。
会话修复、隐藏、恢复和同步可能修改 Codex 会话状态;写入前会备份相关状态文件。
常用快捷命令
cdxs:列出账号,并自动刷新过期配额缓存。cdxs -f:强制刷新账号配额后再列出。cdxs show <账号>:显示单个账号详情,等价于cdxs account show <账号>。cdxs alias set <别名> <账号>:给任意 OAuth 或 API Key 账号设置别名。cdxs alias list:列出所有账号别名。cdxs alias remove <别名或账号>:删除指定账号的别名。cdxs switch:不带参数时自动选择可用配额最优的账号。cdxs switch <账号或别名>:切换到指定账号,OAuth 和 API Key 账号都可通过 alias 切换。cdxs switch A --model <model> --effort <effort> --name OpenAI:切换时更新该账号默认模型、思考程度;--name仅用于 API 模式的 provider name。cdxs exec <账号> -- --model gpt-5 "hello":用指定账号运行codex exec。cdxs exec <home> --home --temp -- --model gpt-5 "hello":基于指定受管 home 建立一次性临时CODEX_HOME后运行codex exec。cdxs login --api <key> --base-url <url> --alias A --model <model> --name OpenAI --switch:保存 API Key 账号并可选切换;base-url为空时使用 OpenAI 默认 API。cdxs login api --key <key> --base-url <url> --alias A --model <model> --name OpenAI --switch:同上,保留旧的子命令形式。cdxs remove <账号>:删除账号,等价于cdxs account remove <账号>。cdxs pull:从同步服务拉取账号状态,等价于cdxs sync pull。cdxs push:推送账号状态到同步服务,等价于cdxs sync push。
账号 alias 保存在账号记录里,因此会随 cdxs push 推送到同步服务,并随 cdxs pull 从同步服务拉取回来。
同步服务
内置同步服务只保存每个用户的账号状态,并提供登录、拉取、推送接口。它同步的是可迁移的 cdxs 账号状态,不同步整个 Codex home。
项目包含 Dockerfile 和 compose.yml。默认容器监听 8765,数据目录为 /data。
Description