You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
环境
dsh web与桌面版共用同一个DSH_HOME=D:\Data\dsh)现象
某个会话在创建它的客户端里可见,但在另一个客户端的工作区列表中完全不存在;重启创建方之后,它也会从侧栏消失。会话文件、标题、投影缓存都完好,全程没有任何报错或警告。
实测(工作区
E:\wk-aidu):storages/workspace.json中该工作区只登记 4 个;其中 1 个blank=true会被列表过滤 → 列表只显示 3 条。session-d901ebef-…(标题「项目汇报评估2」):日志正常、投影缓存rows.title.val正常、sessionListMetadata.blank=false、identity.cwd="E:\wk-aidu",但它不在任何工作区的sessionIds里(8 个工作区全部查过)。根因
会话列表的数据源是工作区注册表
storages/workspace.json的workspace.sessionIds(dsh-workspace的sessionIdsgetter 还要求host.sessionPath(id) === record.path)。它有三个环节共同导致孤儿会话:1) 创建会话时,只有带
workspaceId才 attach@deepseek-ai/dsh-api-session-controller/lib/index.js:也就是说:调用方若只提供
cwd(例如“在新窗口继续 / fork 一个新会话”这类流程),新会话不会被登记进任何工作区。2) 孤儿会话永不自愈
@deepseek-ai/dsh-workspace/lib/index.js的Service.init():bootstrap()会把未归属的会话按header.cwd并入对应工作区,但它只在注册表首次初始化时运行一次。注册表一旦initialized: true,之后启动都只重建路径索引,孤儿永远是孤儿。3) 只在“别的客户端”暴露
创建方进程内该会话仍然活跃,因此照常出现在自己的侧栏;读取注册表的其他客户端则完全看不到。所以从用户视角看是“升级/重启后会话丢了”,很容易误判为数据损坏。
期望行为
cwd,应把解析出的工作区一并用于attachSession;至少“继续/fork”流程应当沿用源会话的 workspaceId。bootstrap()的收编逻辑建议在每次启动幂等执行一次(或提供显式的“收编孤儿 / 修复注册表”入口)。reportFilteredCandidates()只写logger.warn,UI 里看不到。临时绕过(供遇到同样问题的用户)
停掉客户端后备份
storages/workspace.json,把该 session id 前插到对应工作区记录的sessionIds(attachSession也是前插),然后重启客户端。注意:正在运行的客户端内存里持有旧副本,回写时会覆盖该修改,所以创建方与读取方都要重启。
我是用一个小脚本做的:遍历
storages/session_projcache/*.json,用identity.cwd匹配工作区路径,并且只处理sessionListMetadata.blank === false且rows.subagent.val.identity为空的会话(子代理会话同样不在工作区里,但不能并进去——我第一次干跑就误抓了 28 个子会话)。数据佐证
formatVersion与日志代际一致;workspace.json:8 个工作区、global.initialized=true、archivedSessionIds=[];wk-aidu.sessionIds4 → 5,列表 3 → 4。All reactions