DSH Plugins
返回列表
⚙️

dsh-projection-warmup

工作流 更新于 2026.08.16

在终端中运行以下命令:

dsh plugin install orangeofcarl0-sys/dsh-projection-warmup

将以下提示词粘贴到 DeepSeek Harness 对话框中:

在 DeepSeek Harness 中执行 dsh plugin install orangeofcarl0-sys/dsh-projection-warmup 即可安装,插件源码地址为 https://github.com/orangeofcarl0-sys/dsh-projection-warmup 。

插件介绍

DSH 0.1.0-rc.6 的 projection 冷折叠是同步的:当一个会话携带数十万条事件时,cellFor() 会在 Node 事件循环上逐事件 apply(),期间所有 30 秒超时的 unary RPC 批量失败,前端统一报出 signal timed out (internal)。实测一个 74 万事件的会话冷折叠阻塞超过 20 分钟、单核打满——这不是网络问题,是 CPU 同步计算把整个进程卡死了。

dsh-projection-warmup 把这段同步阻塞拆成可让出事件循环的分片重放。会话进入且事件数超过阈值时,插件在首次冷折叠之前提前启动预热:每 chunkSize 条事件调用 setImmediate 让出控制权,折叠完成后直写 registration 热缓存,后续 snapshot() 与 drive() 全部命中。同一个 74 万事件会话,冷折叠 20 分钟变为预热 200 毫秒。此外,fork 子会话预热完成后立即写回投影缓存行,避免下次打开历史时走 readFrom(0) 全量读取;磁盘冷会话的后台补行功能默认关闭,需要时经 API 打开,适合离线批量处理。

如果你日常维护的 DSH 实例上运行着十万条以上事件的长会话,或者团队里经常有人截图 signal timed out 来问为什么历史加载不了,这个插件基本是零配置解药。安装即用,live 会话分片预热与 fork 缓存回填默认开启,无需额外配置。对上游而言,冷会话 readFrom(0) 中 zstd 同步解码与深拷贝仍是硬伤,根治需要 dsh 核心将解码与 snapshotStoredEvents 改成分片让出——插件层已在能力边界内做到了能做的部分。

使用场景

  • 74 万事件会话冷折叠从 20 分钟降至 200 毫秒
  • fork 子会话再次打开历史时不再走 readFrom(0) 全量读取
  • 长会话历史加载不再批量触发 signal timed out
  • 离线批量为缺缓存行的冷会话补写投影缓存

适合人员

  • 维护十万条以上事件长会话的 DSH 运维工程师
  • 团队频繁遇到历史加载超时的前后端工程师
  • 需要离线批量处理冷会话缓存行的批量任务负责人