Repository navigation
[Bug]+小优化点请求:插件热重载后所有历史会话从侧边栏消失,无任何提示+优化 Windows 托盘缺重启入口 #10095
alexzeng666
started this conversation in
General
Replies: 0 comments
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 Desktop 0.2.1-rc.2(nightly / win-x64,Electron 44.7.0),Windows 10/11 x64
一、Bug:插件热重载后,所有非内存会话从侧边栏消失(数据完好、静默失败)
摘要
在插件页关闭任意插件再重新打开(触发 profile 热重载)后,侧边栏只剩当前处于内存中的会话;所有对话已结束、不在内存里的会话全部从列表消失,搜索框按标题搜、按内容搜都返回空。重启应用后全部恢复。磁盘数据全程完好,无任何报错或日志。
复现步骤
最小复现路径:跑一个会话 → 结束它 → 关开任意插件 → 看侧边栏。约三分钟。
实际结果
期望结果
会话列表不应受插件热重载影响。若持久化服务确实不可用,应当报错或给出明确提示,而不是静默返回空语料。
根因分析
@deepseek-ai/dsh-session-query 的 SessionCorpus(lib/index.js:78-85):
listSessions()(lib/index.js:95-98):
热重载使 sessionPersistence 被 dispose,_persistence 变为 undefined 且未被重新注入。listSessions 于是把「持久化服务丢失」当作「无持久化部署」的正常降级,返回空语料,最终只剩 this._ctx.sessions.list() 提供的 live 会话。
问题本质:undefined 同时承载了两种语义——「从未注入」(无持久化部署,正常降级)与「曾注入后被 dispose」(异常状态)。后者被静默当作正常处理。
修复建议
数据影响
无数据损失。实测消失会话的文件:
即:磁盘上一切正常,仅列表索引层缺失。通过 @会话标题 引用仍能读出全部事件内容。
附带问题:排障困难
%APPDATA%@deepseek-ai\dsh-desktop\logs 在整个过程中为空。该故障全程无任何日志输出,只能靠逆向 asar 内的代码定位。建议此类降级路径至少写一条 warn。
二、功能请求:托盘右键菜单增加「重启 DeepSeek Harness」
现状
托盘的上下文菜单是写死的两项(lib/main.js 的 DesktopTray.relabel()):
DesktopTray 的 options 只接收 open 与 quit,没有 restart 动作。
而「重启应用」菜单项已经存在:
但它挂在 applicationItems() 中,而 Windows 的应用菜单被替换成了 devToolsItems:
devToolsItems 仅包含两个 visible: false 的 toggleDevTools(F12 加速键)。因此该重启项在 Windows 上永远不会被渲染——macOS 有,Windows 没有。
期望
托盘右键菜单增加一项「重启 DeepSeek Harness」,点击后走 app.relaunch() + 退出流程。
理由
实现参考
All reactions