环境
| 项 |
值 |
| 系统 |
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)
未解决
TypeError: Cannot read properties of undefined (reading 'kind') 的来源未定位——session-error 不打印 stack。
我尝试驱动 releasedV4SessionFormatCodec.decodeRow 复现,但未能凑齐所需 context(报 reading 'emitRun')。
建议:lib/index.js:1076 直接解引用第三参数 context.emitRun,缺省时抛出的 TypeError 与格式错误无法区分。
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
环境
现象
升级后工作区
G:\新建文件夹\梦之所电玩桌游馆下的两个既有会话无法打开,反复报(同一会话成对出现):受影响会话:
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 自己的公开导出直接校验)
session-dff3e32e的失败点:未解决
TypeError: Cannot read properties of undefined (reading 'kind')的来源未定位——session-error不打印 stack。我尝试驱动
releasedV4SessionFormatCodec.decodeRow复现,但未能凑齐所需 context(报reading 'emitRun')。建议:
lib/index.js:1076直接解引用第三参数context.emitRun,缺省时抛出的 TypeError 与格式错误无法区分。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