codex-history-synclisted
Install: claude install-skill black-yt/skills
# Codex History Sync
## 适用场景
- 把一个 `CODEX_HOME` 下的 `.codex` 历史记录同步给另一个用户、另一台机器、另一个 Windows/WSL 目录或备份目录。
- 只迁移会话记录、`history.jsonl`、`sessions/` 和 thread title/name 元数据,不迁移登录态和长期配置。
- 需要按项目关键词筛选历史记录时,用 `--filter` 做路径/文本内容正则过滤。
- 需要只同步会话标题、名称或 SQLite/JSON/JSONL 中的 title metadata 时,用 `--rename-only`。
## 核心边界
- 这是单向同步:`--source` 是可信来源,`--dest` 是接收方。
- 默认不会删除目标目录中的文件。
- 默认不会覆盖目标中已有但内容不同的文件;只有加 `--force` 才会覆盖。
- 默认排除 `auth.json`、`config.toml`、`credentials.json`、`settings.json`、`.env`,以及 `bin/`、`cache/`、`logs/`、`node_modules/`、`tmp/`。
- 不要默认使用 `--include-sensitive`。只有用户明确要求迁移配置/凭据类文件,并理解风险时才考虑。
- 同步前先运行 `--dry-run --verbose`,确认复制、覆盖、跳过和 title 更新范围。
## 脚本
使用 bundled script:
```bash
python3 codex-history-sync/scripts/sync_codex_history.py --help
```
脚本能力:
- 复制源 `.codex` 中选定目录和根文件,默认同步 `sessions/` 和 `history.jsonl`。
- 保留相对路径和文件时间戳。
- 对已有不同文件默认跳过,避免覆盖目标用户已有历史。
- 支持 `--force` 覆盖目标不同文件。
- 支持 `--filter '[REGEX]'`,只同步相对路径或文本内容匹配的记录。
- 支持 `--all-folders` 或 `--folders sessions [OTHER_FOLDER]` 控制顶层目录。
- 支持 `--root-files history.jsonl [OTHER_FILE]` 控制根文件。
- 支持从 JSON、JSONL 和 SQLite 文件中收集源 thread title/name,并更新目标中的同 ID title/name。
## 推荐流程
1. 确认源和目标目录。
```bash
SOURCE_CODEX_HOME="[SOURCE_CODEX_HOME]"
DEST_CODEX_HOME="[DEST_CODEX_HOME]"
```
`SOURCE_CODEX_HOME` 和 `DEST_CODEX_HOME` 应该是包含 `.codex` 的目录,或者直接用 `.codex` 目录作为参数。保持两个参数表达一致即可。
2. 先 dry-run。
```bash
python3 codex-history-sync/scripts/sync_codex_history.py \
--source "[SOURCE_CODEX_HOME]/.codex" \
--dest "[DEST_CODEX_HOME]/.cod