7.4 KiB
7.4 KiB
name, description, group, triggers, owner, memory_palace_path, memory_palace_slot, version, updated
| name | description | group | triggers | owner | memory_palace_path | memory_palace_slot | version | updated |
|---|---|---|---|---|---|---|---|---|
| Codex对话状态修复 | 修复 Codex Desktop 侧栏项目、置顶、session_index、state_5.sqlite、空 rollout 与历史对话可见性。触发词:Codex侧栏修复、Codex对话恢复、Codex项目分类、rollout缺失、state_5.sqlite、session_index、thread-store internal error。 | 金 | Codex侧栏修复、Codex对话恢复、Codex项目分类、Codex旧对话、Codex置顶、rollout缺失、rollout为空、empty rollout、thread-store internal error、session_index、state_5.sqlite、codex-global-state、repair-backups | 金仓 | 卡若记忆宫殿/金殿/金仓厢/Codex对话状态修复 | Codex 本地对话、项目侧栏和状态库修复入口 | 2.0 | 2026-07-19 |
Codex对话状态修复
金仓 · Codex Desktop 本地状态修复入口。只处理 Codex,不优化 Cursor。用于侧栏项目错乱、旧对话缺失、置顶不显示、
thread-store internal error、空rollout-*.jsonl、session_index.jsonl/state_5.sqlite/.codex-global-state.json不一致等问题。
一句话
先备份,再查 session_index.jsonl、state_5.sqlite、.codex-global-state.json、process_manager/chat_processes.json 与 rollout-*.jsonl,按“恢复并分类”修复 Codex Desktop 侧栏可用性;历史正文真缺失时只建可读 placeholder,不冒充原始内容。
触发场景
| 现象 | 判断 |
|---|---|
| 左侧项目下对话丢失、误归类、全部挂到某项目 | 走本 Skill |
| 置顶对话消失或勾选状态不对 | 走本 Skill |
打开线程报 thread-store internal error |
优先查空 rollout |
missing rollout references、rollout is empty |
走补 placeholder / 修索引 |
| 用户说“都恢复并分类,不是隐藏” | 目标是侧栏可用,不是清理坏引用 |
红线
- 不删除原始
rollout-*.jsonl、session_index.jsonl、state_5.sqlite、.codex-global-state.json。 - 不执行
git reset --hard、不清 Time Machine、不删快照。 - 不把 placeholder 说成“恢复原始聊天内容”;只能说“可打开占位”。
- 不把 Cursor 的
state.vscdb、.cursor/rules当成修复对象;本 Skill 只管 Codex。
Phase 0:备份
在第一次改任何 Codex 状态文件前,创建时间戳备份目录:
ts="$(date +%Y%m%d-%H%M%S)"
backup="/Users/karuo/.codex/repair-backups/${ts}-codex-state-repair"
mkdir -p "$backup"
cp /Users/karuo/.codex/session_index.jsonl "$backup/" 2>/dev/null || true
cp /Users/karuo/.codex/state_5.sqlite "$backup/" 2>/dev/null || true
cp /Users/karuo/.codex/.codex-global-state.json "$backup/" 2>/dev/null || true
cp /Users/karuo/.codex/process_manager/chat_processes.json "$backup/" 2>/dev/null || true
Phase 1:定位真实状态
- 统计
session_index.jsonl记录数、重复 thread、缺失 rollout、空 rollout。 - 查
state_5.sqlite里线程、项目、置顶状态与session_index.jsonl是否一致。 - 查
.codex-global-state.json是否仍保留旧项目挂载。 - 查
process_manager/chat_processes.json是否引用已不存在或空 rollout。 - 写一份报告到备份目录,例如
codex-state-repair-report.json。
Phase 2:修复策略
| 问题 | 动作 |
|---|---|
| 缺失 rollout 引用 | 若能从索引或记忆找到摘要,生成 readable placeholder;否则标记不可恢复 |
空 rollout-*.jsonl |
写入最小有效 JSONL 占位,避免 Desktop 读线程报错 |
| 项目误分类 | 按标题、cwd、首条用户消息、记忆摘要重新分桶 |
| 置顶丢失 | 同步修 state_5.sqlite 与 global state 的 pinned/top 字段 |
| 修完仍不显示 | 把重启 Codex Desktop / reload state 作为验收步骤 |
Phase 3:项目分类建议
优先保留用户真实业务桶:
- 卡若AI / Codex管理
- Soul / SOUL创业派对
- 私域银行 / 存客宝 / 工作手机
- 厦门房产
- 域名注册
- MBTI
- 玩值电竞
- 服务器管理 / NAS
- 个人项目
分类证据优先级:
- 当前
cwd - 会话标题
- 首条用户消息
- rollout 摘要
- memory / repair report 中的旧分类记录
Phase 4:验收
必须至少验证:
missing rollout references = 0- 空 rollout 已处理或已列入不可恢复清单
- 误挂大项目的对话数量回落到合理范围
- 关键项目侧栏能打开
- 修复报告写入
/Users/karuo/.codex/repair-backups/ - 若 Desktop 仍缓存旧状态,明确提示重启 Codex Desktop 再验
Phase 5:公司 NAS Mongo 全链路备份与跨 Codex 恢复
使用:
python3 scripts/codex_mongo_backup_restore.py backup
python3 scripts/codex_mongo_backup_restore.py backup --recent-seconds 600 --no-snapshot
python3 scripts/codex_mongo_backup_restore.py stats
python3 scripts/codex_mongo_backup_restore.py restore --output /tmp/codex-restore
python3 scripts/codex_mongo_backup_restore.py restore --project-root "/绝对路径/项目" --output /tmp/codex-restore
公司 Mongo 中按以下层级保存:
| Collection | 内容 |
|---|---|
codex_threads |
thread ID、标题、cwd、项目/工作树、归档状态、模型、Git、rollout 路径 |
codex_thread_events |
完整 JSONL 事件链、顺序号、时间戳、事件类型、原始记录 |
codex_event_chunks |
超过 Mongo 单文档限制的截图/附件事件 gzip 分块 |
codex_chat_messages |
按项目和对话检索的用户/助手正文 |
codex_projects |
项目根、项目名、活跃/归档对话数量 |
codex_state_snapshots / codex_backup_chunks |
Codex 状态文件可恢复快照 |
codex_backup_runs |
每次备份统计与结果 |
持续同步由 ~/Library/LaunchAgents/com.karuo.codex-mongo-sync.plist 每 5 分钟执行;
它只扫描最近 10 分钟有变化的线程。首次接入或换机前再执行一次无参数 backup 全量收口。
恢复采用两阶段:先导出到独立目录并核对 manifest.json,再备份目标 Codex 的
state_5.sqlite / global state 后应用;不直接覆盖正在运行的 Codex 状态库。
常用证据入口
| 文件/目录 | 用途 |
|---|---|
/Users/karuo/.codex/session_index.jsonl |
线程索引 |
/Users/karuo/.codex/state_5.sqlite |
Desktop 状态库 |
/Users/karuo/.codex/.codex-global-state.json |
全局侧栏/项目状态 |
/Users/karuo/.codex/process_manager/chat_processes.json |
进程/线程引用 |
/Users/karuo/.codex/sessions/ |
rollout 真源 |
/Users/karuo/.codex/repair-backups/ |
备份与修复报告 |
复用过的历史证据
- 2026-07-04:从隐藏缺失 rollout 改为“恢复并分类旧对话”。
- 2026-07-04:空 rollout 引发
thread-store internal error。 - 2026-07-05:把误挂在“厦门房产”的约 70 个对话重新拆回 Soul、私域银行、工作手机、域名注册、MBTI、玩值电竞、服务器管理、个人项目等桶。
输出格式
交付时用卡若复盘:
- 🎯 目标&结果:修复范围、达成率
- 📌 过程:备份、扫描、修复、验收
- 💡 反思:哪里是不可恢复或需重启
- 📝 总结:修复报告路径
- ▶ 下一步执行:是否需要重启 Desktop、是否需补 Mongo/记忆
变更记录
| 日期 | 说明 |
|---|---|
| 2026-07-05 | 初版:从近30天 Codex Desktop 侧栏/rollout 修复高复发流程沉淀 |
| 2026-07-19 | v2:增加公司 NAS Mongo 全事件链备份、项目/工作树状态、超大事件分块与跨实例恢复包 |