前言¶
DSH 的插件机制允许把不同能力挂到同一运行流程中。对模型流式输出来说,一个常见问题是相邻文本增量会形成较多小事件;长会话、多 agent 并发时,这些事件会进入会话日志、推送和前端处理链路。
dsh-pref-kit 是一个 DSH 性能插件,它在数据流源头把同一文本块内的相邻 text / reasoning 增量合并后再写入会话日志与推送,从而减少会话事件量,缓解长会话与多 agent 并发下的卡顿和资源占用。插件不改任何接口与协议。
这是什么¶
gameswu/dsh-pref-kit 由 gameswu 维护,许可证为 MIT,当前版本为 0.2.1,运行要求 node >= 20。
它面向 DSH 的 web profile,默认提供流式合并能力,并在 Settings → Plugins 中提供配置卡片。实验开关默认全部关闭。
核心功能¶
- 流式合并(默认开启):把同一文本块内的相邻
text/reasoning增量合并后,再写入会话日志与推送。 - 完全透传模式:
windowMs = 0时关闭合并,逐 token 透传,与未装插件的逐事件行为等价。 - 配置卡片:
Settings → Plugins提供dsh-pref-kit配置卡片,修改保存后即时生效、跨重启保留。 - 实验开关(默认全关):包括替换轨迹视图、聊天区渲染提示、运行时行管理。
- 运行时行管理:可按白名单禁用或启用官方插件行,Host 即时生效并持久化,客户端需刷新页面。
- 兼容边界:不改任何接口与协议。
安装与启用¶
安装前,先在本地拿到 dsh-pref-kit 源码目录。构建完成后,使用 file: 方式装入目标 profile。
cd dsh-pref-kit
npm run build
dsh plugin --profile web add "file:$(pwd)"
第一条命令进入插件源码目录,第二条命令构建插件,第三条命令把当前目录作为本地插件装入 web profile。
装入后需要重启 DSH 才会生效。启动日志出现下面内容,表示流式合并器已激活:
[dsh-pref-kit] llm/stream coalescer active
更新插件时,先重新构建,再移除旧插件并重新装入:
npm run build
dsh plugin --profile web remove dsh-pref-kit
dsh plugin --profile web add "file:$(pwd)"
卸载时使用:
dsh plugin --profile web remove dsh-pref-kit
典型用法¶
默认情况下,插件开启流式合并。合并窗口由 windowMs 控制,默认值为 30 ms。
windowMs = 30
windowMs = 0
windowMs = 30 表示按 30 ms 窗口合并相邻文本增量;windowMs = 0 表示关闭合并,逐 token 透传。窗口越大,事件削减越多,但首个字延迟约等于窗口。
实验项默认关闭,可通过 Settings → Plugins → dsh-pref-kit 卡片配置:
- 替换轨迹视图:用于接管官方轨迹入口,需先禁用官方
ui-trajectory行。 - 聊天区渲染提示:画面不变,让浏览器减少视口外内容的绘制。
- 运行时行管理:按白名单禁用或启用官方插件行,Host 即时生效并持久化,客户端需刷新页面。
离线基准显示,在 30 ms 合并窗口下,事件量下降 11–56%;其中短回复 −45.6%、长回复 −53.5%、6 并发 −55.6%、复杂长会话 −11%。
适用场景与注意¶
适合长会话、多 agent 并发、流式事件较多的 DSH 使用场景。若希望减少会话日志、推送和前端处理压力,可保留默认流式合并;若需要逐 token 延迟最低,可将 windowMs 设为 0 恢复逐事件透传。
使用实验项前,需要确认对应官方行是否已被禁用或启用。例如,替换轨迹视图需要先禁用官方 ui-trajectory 行;运行时行管理在 Host 即时生效并持久化,客户端刷新页面后才能看到最终状态。
插件以当前 DSH 进程权限运行。安装前应检查源码、MIT 许可证,以及它要修改的插件行和运行时行为,确认符合你的环境要求。
参考¶
dsh-pref-kit 的价值在于不改接口与协议的前提下,把流式输出的相邻文本增量合并,降低会话事件量,同时保留关闭合并与实验开关的控制。
目录页(来自插件线索):https://www.skillhub.cn/plugins/gameswu/dsh-pref-kit
GitHub:https://github.com/gameswu/dsh-pref-kit