Files
cdxs/README.md
2026-06-08 15:49:00 +08:00

66 lines
3.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 的解析顺序:
1. `--codex-home`
2. `CODEX_HOME`
3. `~/.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`