Files
dsh-purge/lib/redteam
叫我小杨同学 a99fba5e86 fix(hang+leak): 7 文件修 assemble throw / crash listener / Map FIFO
卡死路径三连 (UI 发不出 / 任务到一半停):
1. index.js:system-prompt/assemble handler 的 await next() 加 try/catch。
   下游 waterfall 任一环节 throw 就把整条 assemble 弄死,原地卡住发不出去。
2. identity.js:installAssembleGuard wrapped 的 await orig(...) 加 try/catch。
   宿主原生 assemble throw 后 sections.map 会崩,症状就是"任务到一半苏醒"
   "连保存都救不了"的拒答 - 吞掉返回空装配兜底。
3. desktop.js:scheduleAsarSwapRestart 的 PowerShell spawn 加 'error' listener。
   没 handler 时 Node 当 uncaughtException 直接把宿主崩掉(2026-10-09 crash
   log at ChildProcess.<anonymous> main.js:3725 根因)。

启动卡顿 / ReDoS:
4. desktop.js:PROCESS_EXE_SCRIPT execFileSync timeout 15s → 6s。
   Win32_Process 枚举 1-3s 够用, 15s 把启动期 UI 卡 15s 太狠。
5. net-scope.js:ATTACK 正则加 100KB input cap。零宽环视 + 超长输入
   (贴代码/日志)会 ReDoS 把事件循环卡死。

内存积累(cordis 无 session/removed 事件可挂, FIFO 兜底):
6. continue-retry.js:createTracker bySession 加 CAP=200 / EVICT=50。
7. refusal-recover.js:bySession 加 CAP=200 / EVICT=50。
8. redteam/role-section.js:roleBySession 模块级 Map 加 CAP=400 / EVICT=100。

全局 handle 清理:
9. index.js:installHungPromptGlobal 返回 fn, effect cleanup 带 identity
   校验 delete __dshPurgeHungPrompt, 避免热重载时旧 cleanup 挖掉新实例。

版本号保持 1.1.67, 不发新版。
2026-10-09 14:06:07 +08:00
..