已开启
5.2.x 会话存储迁移后部分旧会话从 TUI 消失(无 .index,daemon 报 Corrupt) #1619
ruinedangel创建于 1 天前
1 天前 添加了label:bug
atomgit-bot
1 天前 评论:
1 天前 评论:
你好,谢谢反馈。我们已收到这条 Issue,会由维护者继续处理。代码相关结论需要读仓库核实后再说;若方便可补充版本号与最小复现。


1 天前 将 duxin 设为负责人
MiCoder
1 天前 评论:
1 天前 评论:
关联补充:#1620
我遇到的是同一次升级(5.2.0 → 5.2.1)的另一面,可能与你的漏迁同源,但表现不同——值得放在一起看:
- 你报的是迁移后没有生成
.index/.events的会话从 catalog 消失; - 我这边是已经正常生成了
.index/.events(format_version: 12)的会话,被 5.2.1 整体看不见。
在 /opt/openstack-Flamingo 项目下,~/.atomcode/sessions/1a323c4898c92e6a/ 实有 11 个会话,5.2.1 只列出 6 个——恰好是全部 legacy .meta 会话,5 个 v2 会话一个不剩(含 19 轮 / 723 条的一个)。
干净对照(--resume <id>,已避免测试顺序污染):
| 会话格式 | 5.2.0 | 5.2.1 |
|---|---|---|
v2(.index/.events) |
✅ 找到 | ❌ no session matches |
legacy(.meta) |
✅ 找到 | ✅ 找到 |
| 伪造 id(对照) | ❌ | ❌ |
即 5.2.1 能读 legacy、读不了 v2。这与二进制特征吻合:5.2.1 里 .events / format_version 字符串计数均为 0,5.2.0 为 3 / 1;且 5.2.1 缺 review 子命令——怀疑 5.2.1 是比 5.2.0 更旧的构建被当作"最新"下发。
规避(已在 #1620 中验证):auto_update = false + atomcode rollback 回 5.2.0,所有 v2 会话立即恢复;数据自始未丢,属纯可见性/兼容性问题。


现象
从 5.2.0 升级到 5.2.1 后,
/resume/ TUI 会话列表里过去的对话"基本都没了"。实际检查~/.atomcode/sessions/后发现:*.jsonl.migrated/*.snapshot.migrated/*.meta.migrated(本例共 41 个),其中包含完整对话(如 1.2MB / 583 条消息的 snapshot.migrated)。.index文件,于是从会话目录(catalog)彻底消失,TUI 里看不见、/resume也恢复不了。原始 jsonl 内容还在.migrated归档里,属于可恢复但用户无法自助恢复的状态。Corrupt跳过条目。环境
atomcode --version→atomcode 5.2.1 (unknown)),此前为 5.2.0~/.local/bin/atomcodesessions/<project_hash>/):.index(其中 1 个是升级后新建会话);26 消息会话9b268e36和 41 消息会话74e78a36全部停留在旧格式、无.index,catalog 中不可见89c2ed8c(583 消息)迁移成功;其余 5 个.index的message_count全为 0(对应 snapshot 均为 80 字节空壳,见下)cdb586fa迁移成功(71 消息);41926bdc/391eec34(分别 281 / 271 消息)无.index,catalog 中不可见;ba1e57a3的 meta 被删除,仅剩 lease/lock,daemon 反复报 Corrupt具体异常
9b268e36、74e78a36、41926bdc、391eec34等会话的旧文件已归档为.migrated(或仍为旧格式原样保留),但同目录下没有对应的.index/.events,新 catalog 扫描不到它们。对比:89c2ed8c的.indexmessage_count=583 与其snapshot.migrated完全一致,说明迁移器有能力正确转换,这几例属于漏处理。e2e9ca4f/55532440/b9f24427的.events仅 143~6KB,index message_count=0):(这些会话可能本就接近空会话,但迁移器对"读不到内容"的兜底行为是直接写空模板并归档原件。){"version":1,"messages":[],"cache_epoch":0,"turn_counter":0,"request_counter":0}~/.atomcode/logs/atomcode.log,升级后启动时): 9-29(5.2.0 时期)对d194def95a09f0c2项目下会话也出现过同 kind 的 Corrupt 跳过,且该项目目录随后整个不存在了。复现步骤
atomcode upgrade升级到 5.2.1(自动升级或就地替换均可,本例为 10-01 08:40 前后触发迁移,日志 startup stage 有pending_upgrade)。/resume或 TUI 会话列表:旧会话基本不可见。ls ~/.atomcode/sessions/<hash>/可见.migrated归档文件与缺失的.index。期望行为
.index/.events),漏迁时给出明确日志而不是静默跳过;.migrated归档的自助恢复/导出方式。附:迁移前后对照样本
如需完整目录清单我可以再贴(涉及隐私的部分已做脱敏)。