Skip to content

[Bug] 0.10.0.0 / harness 0.1.7-rc.2: two existing sessions fail to open — v4 relationship validation rejects the migrated log #642

Description

@xie1973

环境

项 值
系统 Windows x64
DSH Desktop 0.10.0.0 (FileVersion 0.10.0; upgraded from 0.9.2)
Harness 0.1.7-rc.2 (from 0.1.5-rc.2)
会话格式 v3 -> v4 (introduced by this upgrade)

现象

升级后工作区 G:\新建文件夹\梦之所电玩桌游馆 下的两个既有会话无法打开,反复报(同一会话成对出现):

[harness-log] session-error session-b8f7819d-8d85-4a7b-9cfb-bcf6052cd5c0: Cannot read properties of undefined (reading 'kind')
[harness-log] warn session-projection-cache: ... turn/end write for "session-b8f7819d-..." failed (cache stays stale):
              SessionFormatError: format v4 message requires a producer-owned source kind

受影响会话:

  • session-dff3e32e-f35e-40fe-abc3-f678d9265033(v3 16 976 063 B / v4 9 445 901 B, 10 032 行),自 2026-09-29T14:01:32Z 起
  • session-b8f7819d-8d85-4a7b-9cfb-bcf6052cd5c0(v3 2 151 130 B / v4 1 233 968 B, 1 464 行),自 2026-09-30T03:41:25Z 起

v4 日志不是半成品:帧结构完整、逐帧可解压、零不可解析行。

已确证的校验结果(用 0.1.7-rc.2 自己的公开导出直接校验)

import { assertV4RowAdmission, assertReleasedV4Relationships } from '@deepseek-ai/dsh-session-format-v3-to-v4'
import { KNOWN_SESSION_EVENT_TYPES } from '@deepseek-ai/dsh-session/lib/types/known-event-types.js'
会话 逐行 assertV4RowAdmission assertReleasedV4Relationships
session-dff3e32e 0 失败 (10031 行) 失败
session-b8f7819d 0 失败 (1463 行) 通过

session-dff3e32e 的失败点:

SessionFormatError: replacement sourceEventSeqs omit a shadowed surface node
    at Relationships.foldSurface (dsh-session-format-v3-to-v4/lib/index.js:611:60)
    at Relationships.accept (…/lib/index.js:744:8)
    at assertV4LifecycleRelationships (…/lib/index.js:860:45)
    at assertReleasedV4Relationships (…/lib/index.js:1041:2)

未解决

  1. TypeError: Cannot read properties of undefined (reading 'kind') 的来源未定位——session-error 不打印 stack。
    我尝试驱动 releasedV4SessionFormatCodec.decodeRow 复现,但未能凑齐所需 context(报 reading 'emitRun')。
    建议:lib/index.js:1076 直接解引用第三参数 context.emitRun,缺省时抛出的 TypeError 与格式错误无法区分。
  2. session-b8f7819d 通过了全部离线校验却在运行期失败,说明还有一条我未覆盖的读取/校验路径。

一条已排除的假设

dsh-web-search-deepseek/lib/index.js:108-128 把 Anthropic Messages API 请求体原样写入会话,
其中 body.messages[0] 是无 source 的裸消息(会话 A 中 49 条)。但实测两个校验函数都不拒绝它
(assertV4SourceRowAdmission 跳过无 source 的消息,mapEventMessages 不遍历 data.body.messages)。
故它不是本次原因,但"请求体与消息同形存储"的形状值得一并审视。

数据未丢失

v3 原日志与投影缓存均完好(session_projcache 中对应 json 为 1 054 332 B / 271 632 B)。

日志位置

%APPDATA%\dsh-desktop\logs\harness.log 第 1728-1731、2196-2283、2463-2587、4045-4063 行。
Attached: harness-log-session-error-extract.txt
— the raw session-error / projection-cache failure lines from %APPDATA%\dsh-desktop\logs\harness.log
(lines 1728-1731, 2196-2283, 2463-2587, 4045-4063). The log carries no conversation content. I can also provide a redacted session.v4.jsonl.zstd
for session-dff3e32e-… if you need the exact artifact — I'd rather not publish the raw file because the session contains private business and personal content.

harness-log-session-error-extract.txt

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions