codex-sessions 是一个 Codex 本地会话共享库 CLI。
它会把不同 Codex 账号、不同 provider、本地中转 SK 产生的本机会话收集到同一个本地 library,并在你切换 Codex 账号后,把当前账号缺失的历史会话补回当前 Codex 环境。
核心目标是:换号后,本机 Codex 的历史会话列表仍然连续;选择历史会话 resume 时,原始 rollout-*.jsonl 中的本地上下文记录仍然存在。
codex-sessions 会在你明确执行真实同步并确认后,写入 Codex home 中的会话相关数据:
sessions/**/rollout-*.jsonl
session_index.jsonl
state_*.sqlite 中的会话相关表:
- threads
- thread_dynamic_tools
- thread_spawn_edges
除此之外,它不会修改 Codex 工具本身,也不会修改这些内容:
config.toml
认证文件
token / API key / SK / cookie
provider 配置
plugins/
skills/
rules/
Codex CLI 安装文件
shell profile
shell alias
CODEX_HOME 环境变量
卸载时也不会修改 Codex home,不会删除已经同步进 Codex 的会话。
适合你,如果你:
- 经常切换多个 Codex 账号。
- 同时使用官方账号、自定义 provider、中转 SK 或代理 provider。
- 希望换号后仍能看到之前账号产生的本机会话。
- 希望保留 Codex resume 所需的本地历史上下文。
- 希望有一个本地、可预览、可回滚、可卸载的会话共享工具。
不适合你,如果你:
- 只使用一个 Codex 账号,且不依赖历史会话。
- 需要云端同步或跨设备自动同步。
- 需要迁移账号权限、额度、登录态或 provider 凭据。
运行环境:
- Node.js
>= 18 - 已经安装并使用过 Codex CLI,确保本机存在 Codex home 和本地会话数据库
node --versionSQLite 能力已经随 npm 包内置,不需要单独安装系统 sqlite3 命令。
包发布到 npm 后,普通用户推荐全局安装:
npm install -g codex-session-sync安装后使用:
codex-sessions --help
codex-sessions --version主命令是 codex-sessions。同时也提供完整别名:
codex-session-sync --help如果你是从 GitHub 拉取源码,或在 npm 发布前本地试用:
git clone <your-repo-url>
cd codex-session-manage
npm install -g .验证安装结果:
codex-sessions --version
codex-sessions doctor如果不想全局安装,也可以在项目目录内直接运行:
node ./bin/codex-sessions.js --help
node ./bin/codex-sessions.js sync --dry-run从 npm 更新:
npm install -g codex-session-sync@latest从源码更新:
git pull
npm install -g .只卸载 CLI 安装包:
npm uninstall -g codex-session-sync如果是从源码用 npm install -g . 安装的,也使用同一条卸载命令。
注意:卸载 npm 包只会移除 codex-sessions 命令本身,不会清理定时任务,也不会删除工具自己的 library。完整卸载流程见下方“卸载”章节。
首次使用建议先检查环境:
codex-sessions doctor预览同步会发生什么:
codex-sessions sync --dry-run确认无误后执行同步:
codex-sessions sync切换 Codex 账号后,再运行:
codex-sessions sync--dry-run 是零写入:不会创建目录、不会创建 checkpoint、不会写日志、不会复制文件、不会写 SQLite。
Codex 自己的数据目录。工具会自动发现,普通用户不需要手动配置。
codex-sessions 自己的数据目录,保存 library、checkpoints、logs 和配置。
本地共享会话库。不同账号产生的会话会被收集到 library,再从 library 补回当前 Codex。
写入 Codex home 前创建的安全检查点。如果同步结果不符合预期,可以用 rollback 恢复最近一次同步前的状态。
- push:当前 Codex -> shared library
- pull:shared library -> 当前 Codex
- sync:双向合并
| 命令 | 作用 |
|---|---|
codex-sessions doctor |
检查 Codex home、schema、library 状态 |
codex-sessions paths |
查看当前解析到的所有路径 |
codex-sessions sync --dry-run |
预览同步计划,不写入 |
codex-sessions sync |
双向同步当前 Codex 和 library |
codex-sessions sync --push-only |
只把当前 Codex 会话写入 library |
codex-sessions sync --pull-only |
只从 library 补回当前 Codex |
codex-sessions status |
查看当前 Codex 与 library 的差异 |
codex-sessions status --conflicts |
查看冲突 |
codex-sessions list |
查看 library 中的会话 |
codex-sessions list --source current |
查看当前 Codex 中的会话 |
codex-sessions show <id> |
查看某个会话的元信息 |
codex-sessions rollback |
回滚最近一次同步 |
codex-sessions uninstall |
卸载工具影响,不修改 Codex 数据 |
双向同步:
codex-sessions sync它会做两件事:
- 把当前 Codex 中 library 没有的会话写入 library。
- 把 library 中当前 Codex 缺失的会话补回当前 Codex。
如果会写入 Codex home,交互终端会展示摘要并要求确认。非交互环境必须显式传入 --yes:
codex-sessions sync --yes只收集当前账号会话:
codex-sessions sync --push-only只补回共享库会话:
codex-sessions sync --pull-only查看差异:
codex-sessions status查看 library 会话:
codex-sessions list默认显示最近 50 条,按更新时间倒序。显示全部:
codex-sessions list --all查看当前 Codex 会话:
codex-sessions list --source current查看某个会话:
codex-sessions show 019e8767show 默认只显示元信息,不打印完整对话内容,避免泄露敏感信息。
会话仍然对应原来的项目目录。工具会原样保留 threads.cwd,不会自动映射路径。
如果原项目目录不存在,历史记录仍能恢复,但 resume 后涉及文件读取、编辑、命令执行时可能失败。
provider 名称只作为普通字符串保存。工具不会判断 provider 是否有效,也不会复制 provider 凭据。当前机器缺少对应 provider 时,历史会话仍可恢复;继续发送新消息是否成功,取决于当前 Codex 配置。
如果同一个 session id 在当前 Codex 和 library 中都存在,但 rollout 文件内容不同,会被标记为 conflict。
codex-sessions 不会覆盖任何一边。
查看冲突:
codex-sessions status --conflicts每次真实写入 Codex home 前,工具都会创建 checkpoint。
回滚最近一次同步:
codex-sessions rollback查看 checkpoint:
codex-sessions checkpoints list恢复指定 checkpoint:
codex-sessions checkpoints restore latestcheckpoint 只保存会话相关数据,不保存认证文件、token、API key、SK 或 config.toml。
安装定时同步:
codex-sessions schedule install --preset normal内置 preset:
| preset | 频率 |
|---|---|
light |
每 6 小时 |
normal |
每 1 小时 |
active |
每 15 分钟 |
daily |
每天 02:00 |
自定义间隔:
codex-sessions schedule install --every 30m高级 cron:
codex-sessions schedule install --cron "*/10 * * * *"查看定时任务:
codex-sessions schedule status立即测试定时行为:
codex-sessions schedule run-now卸载定时任务:
codex-sessions schedule uninstall定时任务运行时更保守:如果检测到 Codex 正在运行、SQLite 被锁定或 schema 不兼容,将跳过写入 Codex home,只记录日志。
library 默认不会自动删除会话。
预览可清理内容:
codex-sessions library prune --dry-run --older-than 1y真实清理:
codex-sessions library prune --older-than 1y --yeslibrary prune 只清理工具自己的 library,不会清理 Codex home。
只移除定时任务和工具注册信息:
codex-sessions uninstall删除工具自己的数据:
codex-sessions uninstall --remove-tool-data --yes卸载 npm 包:
npm uninstall -g codex-session-sync注意:
- 卸载不会删除已经同步进 Codex 的会话。
- 卸载不会修改 Codex home。
- 卸载不会修改
state_*.sqlite、session_index.jsonl、config.toml或认证文件。
普通用户不需要手动配置路径。查看实际路径:
codex-sessions pathsCodex home 解析优先级:
--codex-homeCODEX_HOME- 用户目录下的
.codex
Tool home 解析优先级:
--tool-homeCODEX_SESSIONS_HOME- 平台应用数据目录
默认 tool home:
- macOS:
~/Library/Application Support/codex-sessions - Linux:
$XDG_DATA_HOME/codex-sessions或~/.local/share/codex-sessions - Windows:
%LOCALAPPDATA%\codex-sessions
codex-sessions 会读取和保存本地 Codex 会话内容。会话内容可能包含代码、业务信息、命令输出或其他敏感信息。
请不要把 tool home、library、checkpoints 提交到 GitHub。
工具不会同步:
- token
- API key
- SK
- cookie
- Codex 登录态
config.toml- provider 配置
在本地记录层面还在。工具会同步 rollout 文件和 threads 索引。Codex resume 时可以读取这些本地历史记录。
但下一轮模型实际使用多少历史,取决于 Codex 自身的上下文策略。
不会。
不会。uninstall 不修改 Codex home,不删除 Codex 会话,不修改配置和认证文件。
历史记录仍然能恢复。继续发新消息是否成功,取决于当前 Codex 配置中是否有可用 provider。
不会。library 默认长期保留。需要清理时,用户手动运行 library prune。
运行:
codex-sessions paths
codex-sessions doctor如果你使用了自定义 Codex home:
CODEX_HOME=/path/to/.codex codex-sessions doctor说明当前 Codex 本地数据库结构暂不支持真实写入。你仍可以运行:
codex-sessions sync --dry-run但不能执行真实同步,直到工具升级适配。
SQLite 能力随 npm 包安装。如果提示内置 SQLite 依赖加载失败,通常是 npm 包安装不完整、Node 版本过低或 npm registry 下载异常。
建议先确认 Node 版本:
node --version然后重新安装:
npm install -g codex-session-sync@latest不需要单独安装系统 sqlite3 命令。
为了避免 SQLite 写入冲突,请关闭 Codex 后再执行真实 sync。
查看:
codex-sessions status --conflicts工具不会覆盖任何一边。
运行测试:
npm test本项目不应提交真实 Codex 会话、SQLite 数据库、认证文件或 token。