Replies: 1 comment
|
你的两份根因分析我都在当前 master(0.1.5-alpha.1 / 5dda764)上逐条复核了,结论是两条都成立,且位置比 0.1.2-rc.1 略有迁移。补充精确位置与判读: 根因 1:
|
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
环境
~/.dsh/sessions现象
历史会话列表中部分会话显示"历史加载失败",日志:
会话文件本身完好(报错也说明源产物未被修改),只是读不出来。
根因
两个相互独立的原因,都是新增的 released-format 迁移比必要更严格。
1.
permission/preset的origin成员35778ec2ff),给 payload 增加origin: 'default' | 'selection' | 'inferred';2026-08-21 被整体 revert(7ce85283b5)。dispositions.ts冻结的 v0 inventory 对permission/preset只允许preset,assertReleasedV0Keys遇到未知成员直接抛错。2.
subagent/descriptor版本 2774ee34b9a)到 2026-08-24(PR 由插件重复安装引起的桌面端崩溃 #2663,f76a225a7d将SUBAGENT_DESCRIPTOR_VERSION升到 3)之间的当前版本。assertReleasedEventPayload对 v0 源中version !== 3的描述符直接抛SessionFormatUnsupportedMigrationError。parseSubagentDescriptor对未识别版本是宽容的(返回undefined而非报错),且 v2 的 payload 结构上是 v3 的子集(one-shot 的label由必填变可选;continuable 新增可选agentReasoningEffort),只需提升版本号即可无损迁移。复现
session.jsonl.zstd中的特征记录:影响范围
本地 312 个 v0 会话中:139 个含
origin、255 个含 descriptor v2(105 个两者兼有)。完全未修复时仅 23 个可加载;只修
origin后 57 个;两处都修后 312 个全部可加载。建议修法(无损,已验证)
dispositions.ts:'permission/preset': disposition(['preset'], ['origin'])payload-validation.ts: 校验origin ∈ {default, selection, inferred}migration.ts: 在 v0→v1 边上把 descriptor v2 提升为 v3两处都不丢弃任何事件数据,符合"冻结格式不静默丢数据"的既有原则。
临时绕过
本地打上述补丁并重新构建即可(已验证 312/312 会话恢复)。
All reactions