Repository navigation
[Bug]会话创建在播种(seed)阶段失败时会留下静默空壳,UI 表现为「点击新建无反应」 #9392
Replies: 1 comment
|
请先别再删了 —— 那些不是残骸,是健康会话。 我把你贴的代码、事件序列和那份缓存行都核了一遍:你取证的部分是对的,但结论反了。 1.
|
|
请先别再删了 —— 那些不是残骸,是健康会话。 我把你贴的代码、事件序列和那份缓存行都核了一遍:你取证的部分是对的,但结论反了。 1.
|
Uh oh!
There was an error while loading. Please reload this page.
概述
DSH 在会话初始化播种阶段失败时,会留下一个已落盘、已进入列表、却没有任何错误提示的半成品会话。用户侧看到的现象是「点击新建会话没有反应」。
这个 bug 有两个层面:
环境
@deepseek-ai/dshdsh-sessioncordis复现现象
在一次实例运行期间(未重启),连续创建会话时出现:
关键:同一时段、同一工作区也有成功创建(
b4883ca1,252 事件,正常)。所以这不是配置问题,而是创建时刻的瞬时状态失效。故障横跨 4 个工作区
D:\学习D:\VibeCoding\projectD:\VibeCoding\project\平板投屏D:\VibeCoding\project\FanR_Plugin根因:
session/end-seed从未写入对比两类会话的完整事件序列。
失败(空壳)——停在 seq=2:
{"type":"session","version":4,"id":"session-2c90bad0-...","cwd":"D:\\学习","isSeeded":false,"agentPreset":"ptc"} {"type":"permission/preset","seq":0,...} {"type":"sandbox/mode","seq":1,...} {"type":"approval/policy","seq":2,...}成功(对照)——seq=3 即播种标记:
{"type":"approval/policy","seq":2,...} {"type":"session/end-seed","seq":3,...} ← 空壳缺失的正是这一条 {"type":"agent/inbox/spliced","seq":4,...}写入逻辑位于
dsh-session/lib/index.js:空壳的
isSeeded为false,因此走else if分支。该分支未命中只有一种可能:seed === void 0。也就是说,
Session.create(id, seed, header, ...)调用时seed参数未被传入。会话对象、日志句柄、以及前三条基础事件都已建立并落盘,唯独播种这一步没有发生。一个有力的旁证
b4883ca1(学习工作区,04:59:46 创建,252 事件)虽然诞生于故障期,却是正常的——它的end-seed写于 05:00:24,即用户重启之后。说明:重启时内核把它作为活跃会话重新初始化,补上了当初缺失的播种标记。
而失败者之所以永久是空壳,仅仅因为重启时没有恢复它们。 这既证明了「重启即恢复」的因果关系,也说明故障的本质是创建瞬间的一次性失效,而非数据损坏。
触发条件(高度疑似)
本机系统日志显示:
紧接着在宿主日志中捕获到一条跨越整段睡眠的 RPC:
17366025 ms反推发起时刻为 23:55:55——恰好卡在睡眠前 7 秒。随后是ECONNRESET的连锁。故障窗口(04:48:58 起)正好落在系统唤醒(04:45:23)之后约 3.5 分钟内。
推测:进程从 Modern Standby 唤醒后,内部异步链与定时器处于不一致状态,会话创建路径正撞在这个窗口里。
期望行为
post-boot workspace reconcile只处理sessionIds与磁盘目录的差异,不检查播种完整性)。附:另一个独立(无关)的缺陷
排查过程中发现一个与本 bug 无关、但同样值得修的问题:
dsh-session-managerv0.4.11 的coldSnapshot调用签名不匹配。内核定义(
dsh-session-projection-cache/lib/index.js:285)为 3 参数:而插件只传了 1 个字符串(
dsh-session-manager/lib/index.js:1062):导致
SessionLogOffset(undefined)抛错:每次启动都会产生成百上千条(本机 10-08 单日 9580 条)。由于调用点包在
try/catch中,仅记录 warn、随后re-folded 0 rows,不影响功能,但持续污染日志。这属于插件侧未跟进内核 API 变更。备注
本次共清理 10 个空壳会话目录及其投影缓存条目(已备份)。如需任何原始日志、事件转储或完整时间线,我可以随时补充。
感谢维护者的时间。
All reactions