Repository navigation
Replies: 3 comments
Update: it still reproduces after a clean reinstall of the same official buildTo rule out a damaged local installation (this machine had an unexpected power loss earlier), I downloaded the official
After repairing the installation with that verified package and restarting the app:
So the behaviour is not environment-specific damage — it is reproducible with a pristine install of the same build. Data is unaffected (all sessions still pass DSH's own load path), and the Trajectory tab keeps working throughout. 中文补充为排除"本机安装文件损坏"(这台机器此前意外断电),我从官方更新源下载了原版 |
Correction: this is very likely a data-corruption problem in specific session logs, not a client defectAfter reproducing the issue in an isolated instance (a copy of the user data + the official Sessions that render fine: untouched, never-repaired sessions — including large ones (3000+ events) — switching between sessions repeatedly keeps rendering correctly. Sessions that render empty: only sessions whose stored logs had previously been repaired/rewritten by an external script (each of them carries backup copies of the pre-repair file). In the desktop client those sessions show a silent empty pane; in the web client the same sessions surface an explicit error: So the reader is rejecting specific rows in those logs ( Also ruled out in this round:
I will follow up with the exact offending row(s) once identified. Please treat the earlier "client defect" framing as superseded — apologies for the premature conclusion. 中文更正在隔离实例(用户数据的副本 + 官方
也就是说:读取器拒绝了这些日志里的特定行(疑似残留旧版行),客户端只是把该失败渲染成了空面板。这些会话虽然能通过 v4 的行准入/关系/ 同时排除:客户端全局缺陷(同版本其它会话反复切换正常)、"被污染"(多次切换后原本正常的会话仍正常)、切换路径(干净实例+干净数据副本下,空白只跟会话身份相关)。 此前"客户端缺陷"的定性作废,抱歉造成误判。定位到具体行后我会补充。 |
Final conclusion: it was corrupted session data, not a client defect — please disregard this reportRoot cause found and fixed. The client is fine. What was wrong. In the affected sessions, a prior third-party "repair" script had rebuilt the logs from archived transcripts and, in doing so, omitted two event types that the client needs in order to render a turn:
Why it looked like a client bug. The sessions passed every row-level validator, the host served the events correctly (I captured the The fix and its verification. Adding
Apologies for the noise — this report should be closed. The only genuine client-side observation that still seems worth a look, if you are interested, is that a turn whose 中文结论(请忽略本报告)根因是会话数据损坏,与客户端无关。 先前某个第三方"修复"脚本从归档重建日志时,漏掉了客户端渲染所需的两种事件:
补齐这两类事件后:69/74 个会话修复;抽查 5 个中 4 个从 0 节点恢复到 92/260 个节点并正常显示全文;四道官方校验仍全部通过(行准入 74/74、关系 74/74、事件接纳 73/74、完整装载 73/74,仅剩 1 个无关的自引用问题在清理)。 本报告可关闭,抱歉造成打扰。 唯一建议: |
Uh oh!
There was an error while loading. Please reload this page.
Summary
On the Windows desktop client
@deepseek-ai/dsh-desktop/0.2.0-rc.2, the first session rendered after a (re)load is fine, but every session switch afterwards leaves the Conversation pane completely empty (transcript node count = 0) and the state never self-heals — it poisons all subsequent sessions until the whole renderer is restarted. The Trajectory (轨迹) tab keeps working for the same session.I originally suspected my own data (I had repaired/rebuilt some session logs), so I validated everything before reporting: all 74 sessions pass DSH's own four validators, and the behaviour reproduces with a vanilla plugin set. It is a client-side defect in the session-switch path, and it is worth fixing because a user who happens to hit it cannot read any conversation at all.
Environment
@deepseek-ai/dsh-desktop/0.2.0-rc.2(built 2026-09-29), Electron 44 / Chrome 152, Windows x64nightly(feed reports0.2.0-rc.2as latest, so this is the current nightly)--remote-debugging-port=9222)Reproduction
Measured state (CDP)
[data-chat-flow]children[data-slot="conversation.chat.node"]In the broken state the client's own session store still reports
openState: "open",openError: null,blank: false,hasMore: true— i.e. the client believes the session is fine while the transcript node list is empty.Ruled out (each with evidence)
assertV4RowAdmission,assertReleasedV4Relationships,adoptSessionEventandSession.fromRestore.[data-chat-flow]measures 696×9015 withdisplay:flex,visibility:visible,opacity:1; resizing the window does not restore content in the broken state.session/followresponse was captured:{"type":"snapshot","cursor":2515,"records":[ …275 events… ],"projections":["asOfSeq","values"]}.window.onerror/unhandledrejectionreporter plus CDPLog.entryAddedcapture recorded zero real errors (only unrelated 404s for third-party assets).Where it looks broken
Comparing the boot path and the switch path on the wire:
session/followstream, no cancellation, snapshot served once → renders fine.session/follow(assistantStream: true,maxMessages: 500,turnWindow: {minMessages:50, minTurns:2}) is opened, the old stream is cancelled, and the host then replays the entire assistant stream — for a large session that is ~1,700–3,570assistant-streamitems plus a 2–3 MB snapshot.After this combination the transcript ends up with zero nodes and stays that way. So the suspect area is the client's session-switch handling: opening the new follow stream, cancelling the previous one, and applying the snapshot + the large
assistant-streamreplay.Impact
Any user who switches sessions in a workspace with large sessions loses the ability to read any conversation in the app until they restart it; the only workarounds are the 轨迹 (Trajectory) tab or exported/archived transcripts.
中文摘要
桌面端
0.2.0-rc.2:启动后第一个会话能正常显示,但只要切换一次会话,「对话」面板就永久空白(转录节点数为 0),且不会自愈、会连带之后打开的所有会话,只有重启应用才恢复;同一会话的「轨迹」始终正常。已排除会话数据(74/74 通过官方四道校验)、第三方插件、布局高度、宿主未发数据、JS 报错等因素。抓包对比显示:启动路径正常,切换路径会新开session/follow、取消旧流并回放整段assistant-stream(大会话约 1700–3570 帧),此后转录即一直为空。怀疑是客户端在会话切换时对「新开流 + 取消旧流 + 大体量流回放」的处理缺陷。All reactions