orangeofcarl0-sys / dsh-fork-perf

已收录

DSH (DeepSeek Harness) fork performance plugin: zero-copy fork + fast initFor (344ms -> 19ms on large sessions)

master会话 查看源代码

安装

npx -y @deepseek-ai/dsh plugin --profile web add github:orangeofcarl0-sys/dsh-fork-perf

此安装命令根据 GitHub 仓库地址生成,是未经验证的安装起点。

README

维护者编写的文档快照。

在 GitHub 查看 ↗
提交版本 f422ea6同步于 2026年8月18日

dsh-fork-perf

Version dsh License: MIT

DSH(DeepSeek Harness)对话分支(fork)性能插件。

问题

dsh 0.1.0-rc.6 的 fork 路径对整个会话事件日志做多次全量深拷贝,大会话(>15MB) 一次 fork 产生数百毫秒同步阻塞,足以打断流式中的 LLM 响应(表现为 TRANSPORT/心跳 超时重试)、UI 卡顿甚至"卡死":

环节18.2MB/20k 事件实测
Session 构造器逐事件 snapshotJsonValue(纯 JS 深拷贝)~344ms
persistence initForstructuredClone(seed)~135ms
write-behind enqueue 逐事件 structuredClone(分摊)~134ms
合计(fork 瞬时)~480ms

方案

  1. 零拷贝 forkzeroCopyFork):fork 的 seed 事件本就是 deepFreeze 的不可变 纯 JSON 树。补丁改走 Session.prepare(..., { seedSource: 'persistence' })fromRestore 通道——原地冻结复用引用,跳过整树深拷贝。子会话 header (parentSession/seedLength/cwd)与官方 fork 逐字段一致,磁盘布局不变。
  2. fast init-forfastInitFor):PersistenceCoordinator.initFor 里那次 structuredClone(seed) 替换为冻结引用复用。带 rc.6 源码特征校验 (structuredClone(e) 标记),内部结构不匹配时自动跳过并告警。
  3. 监控与 API:fork 计时/路径统计;/dsh-fork-perf/api HTTP 路由。

实测同负载:fork 主体 344ms → 19ms(≈18×)initFor 135ms → ~0ms

安全性

  • 共享引用等价于深拷贝:事件在进入源会话时已通过完整 JSON 边界与 surface 验证并 深冻结,任何代码都无法修改。
  • 三层回退:(a) 调用时能力探测缺失方法 → 官方实现;(b) restore 通道运行时异常 → try/catch 回退官方实现;(c) 配置开关 zeroCopyFork: false → 永远官方路径。
  • dispose 完整还原所有补丁。

安装

# 从 GitHub 安装(推荐)
dsh plugin --profile web add github:orangeofcarl0-sys/dsh-fork-perf
# 或
dsh plugin --profile web add https://github.com/orangeofcarl0-sys/dsh-fork-perf

# 本地开发
dsh plugin --profile web add file:<本仓库路径>

注意:每次修改仓库代码后,需把 lib/cordis.patch.ymlpackage.json 同步到 <DSH_HOME>/profiles/web/node_modules/dsh-fork-perf/file: 安装 不会自动跟随源文件更新),或重新执行 dsh plugin add

重启 dsh web 生效。日志出现 [fork-perf] zero-copy fork installed 即成功。

API

POST http://127.0.0.1:3080/dsh-fork-perf/api/<method>

  • stats.get — fork 次数 / 零拷贝占比 / 回退次数 / 最近记录(事件数、耗时、路径)
  • stats.reset — 清零
  • config.get / config.set — 运行时开关(zeroCopyForkfastInitForslowForkWarnMskeepRecent),config.set 同时写 settings 持久化
curl -X POST http://127.0.0.1:3080/dsh-fork-perf/api/stats.get
curl -X POST http://127.0.0.1:3080/dsh-fork-perf/api/config.set \
  -d '{"zeroCopyFork": false}'

验证

  • smoke_test.mjs(14 断言):官方 fork 基线 / 零拷贝 fork 功能等价 (header、事件数、深冻结、boundary、open-turn 拒绝)/ dispose 还原 / 版本漂移回退 —— ALL PASS
  • test_fast_initfor.mjs(8 断言):initFor 补丁安装 / 源码特征漂移跳过 / 无 persistence 服务存活 —— ALL PASS
  • bench_fork2.mjs:18.2MB/20k 事件,fork 主体 343.8ms → 18.8ms

局限

  • enqueue 的逐事件 structuredClone(第三次拷贝)在插件层无法安全消除——它在 write-behind 闭包内部,且承担"persistence 独立于生产者"的所有权语义。根治需 上游改为按需快照。
  • 补丁绑定 rc.6 内部结构(_forkSeedinitFor 源码特征);大版本升级后特征 校验会自动跳过优化并保持官方行为,重新适配即可。

项目文件与信号

以下项目是目录快照中检测到的公开仓库信号。

测试已检测

仓库信息

开发语言
JavaScript
许可证
MIT
最新发布
v0.1.0
最后更新
2026年8月15日 15:48

谨慎安装

请检查源代码、权限、生命周期脚本、依赖与网络访问;不受信任的插件应先在隔离环境中测试。