dshbase

插件目录 / Developer / dsh-projection-warmup

dsh-projection-warmup

已验证 · 实测可装 orangeofcarl0-sys

✓ 持续维护 基于 1 个官方 DSH 包

查看 GitHub ↗ ← 返回插件目录

0Stars
0Forks
0未关闭 issue
—语言
2026-08-15最近推送
跨平台平台

功能简介

DSH projection warmup plugin: chunked live-session warmup + fork cache backfill to eliminate 'signal timed out' event-loop stalls

✅
我们的评价
可用 — 实测通过,早期项目

DSH projection warmup plugin: chunked live-session warmup + fork cache backfill to eliminate 'signal timed out' event-loop stalls 实测能干净安装、正常启动。早期项目,但功能可用。

「已验证」表示我们的自动化 CI 在干净 profile 里实际执行了 dsh plugin add 并启动成功——仅此而已。功能描述与版本兼容性均为作者声明。这不是安全审计,也不代表对第三方代码的背书。

README

dsh-projection-warmup

DSH(DeepSeek Harness)projection 分片预热插件。

问题

dsh 0.1.0-rc.6 的 projection 冷折叠是同步的:SessionProjectionRegistry.cellFor()
在 cell 冷时对整个 session.events 逐事件 apply(),大会话(数十万事件)是分钟级
纯 CPU 计算,期间 Node 事件循环冻结,所有 30s 超时的 unary RPC(历史加载、UI 操作)
批量超时,前端表现为「signal timed out (internal)」。实测 74 万事件会话冷折叠阻塞
20+ 分钟(100% 单核)。

方案

  1. live 会话分片预热(v0.1,默认开):会话进入(created/resume)且事件数超过
    阈值时,抢在首次同步冷折叠前,分片重放 cells——每 chunkSize 个事件
    setImmediate 让出事件循环,折叠完成后直写 registration.cells(WeakMap),
    此后 snapshot()/drive() 全部命中热 cell。可用时从投影缓存行取基线跳过已折叠
    前缀。实测 74 万事件会话:冷折叠 20 分钟 → 预热 200ms。

  2. fork 子会话缓存回填(v0.2,默认开,零成本):fork 子会话
    (header.parentSession 存在)预热完成后立即 cache.write(child) 建立投影缓存
    行——否则它被放弃时永远没有缓存行,下次打开历史 coldSnapshot 走
    readFrom(0) 全量读(分钟级阻塞)。

  3. 磁盘冷会话后台补行(v0.2,默认关):扫描缺缓存行的大日志,流式
    parse + fold 后 putSoft 写行。默认关闭的原因:readRaw 内部的 zstd 全量解码
    是同步的、插件层不可分片,对大文件仍会冻结事件循环数秒~数十秒;且启动期补行
    与 dsh 自身的启动投影折叠叠加会推高内存峰值(有 OOM 风险)。需要时经
    config.set 打开。

安装

dsh plugin --profile web add github:orangeofcarl0-sys/dsh-projection-warmup

API

POST http://127.0.0.1:3080/dsh-projection-warmup/api/<method>:

  • stats.get / stats.reset — 预热/补行计数与明细
  • config.get / config.set — 运行时开关

局限与上游建议

  • 冷会话 coldSnapshot 的全量 readFrom(0)(含 zstd 解码 + 逐事件
    snapshotStoredEvents 深拷贝)无法在插件层安全分片——readRaw 的同步解码是硬伤。
    根治需上游把 readFromCore/loadStored 的解码与 snapshotStoredEvents 改成分片
    让出事件循环。
  • 超大会话(70 万+ 事件)加载本身有内存 OOM 风险,与插件无关。

验证

  • tests/smoke_test.mjs(11 断言):分片预热与同步折叠一致、checkpoint 基线、
    并发 drive 让位、dispose 中止、小会话跳过
  • tests/test_backfill.mjs(8 断言):fork 回填、非 fork 不回填、磁盘冷会话补行

安装

🧩 让 Agent 自动装(推荐)

装一次目录插件,之后本站所有插件都能让 DeepSeek Harness 自动找、自动装:

dsh plugin add dshbase-catalog

然后对 agent 说「帮我装 dsh-projection-warmup」,它会在目录里找到并自动安装。文档:dshbase-catalog · 已验证场景包。

该插件是 GitHub 源码(未发 npm)——直接从仓库装:

Web profile:

dsh plugin --profile web add github:orangeofcarl0-sys/dsh-projection-warmup

Headless(CLI)profile:

dsh plugin --profile headless add github:orangeofcarl0-sys/dsh-projection-warmup

实测报告

验证通过:从 GitHub 源码完成 L1 安装 + L2 加载 + L3 运行(dsh 0.1.0-rc.6)。

安全:尚未扫描——我们的每日静态扫描将很快覆盖它。

分享徽章

Developer 里更多

浏览全部 7819 个插件 →