dsh-session-load-tuner

DSH PLUGIN浏览器与联网

仓库 Richard2091/dsh-session-load-tuner

浏览器与联网 L4 · 沙盒安装通过 安全审查:低风险 可信度:银 可安装插件
安装这个插件

DSH 插件:会话加载调优——进会话先拉一屏、按批异步补齐、滚到顶前预取,传输可开 WebSocket 压缩(不改 dsh 源码)

一句话选型结论

按资料字段整理

dsh-session-load-tuner 是浏览器与联网类的 DSH 可安装插件,验证等级 L4 · 沙盒安装通过,安全审查为低风险,有可直接复制的安装命令。验证通过不等于安全:插件会读写文件、执行命令或联网,装前先到仓库确认它做了什么;涉及密钥或系统权限的,建议先在隔离环境试装。

分类浏览器与联网 收录类型可安装插件 验证等级L4 · 沙盒安装通过 安全审查低风险
验证等级 L4 L4 · 沙盒安装通过
GitHub 星标 0 复刻 0 · 未关闭 issue 0
最近更新 2026-10-25 创建于 2026-10-25
README 9.0 KB 正文体量,越大说明说明书写得越细

安装

可安装插件
在 DSH 里执行,装完用 dsh plugin list 确认已挂上;标了 L4 / L5 的命令已在沙盒里真实跑通
dsh plugin --profile web add github:Richard2091/dsh-session-load-tuner
  1. 1
    确认版本与运行环境

    仓库没有标注兼容版本与 Node.js 要求,先确认你的 DSH 版本能装,再继续。

  2. 2
    执行安装命令

    在 DSH 里执行上面的命令;多包仓库要注意区分具体子包名,别装错包。

  3. 3
    确认已挂载

    用 dsh plugin list 查看列表里是否出现这个插件,出现即挂载成功。

  4. 4
    试跑并检查权限

    加载后跑一个最小用例,确认它能正常工作;同时看它申请了哪些文件、命令或网络权限。

兼容 DSH 版本未标注版本不匹配时安装会报错
Node.js 要求未标注来自仓库 package.json 的 engines 字段
前置依赖无需要同时安装的同级依赖
npm 包名未发布到 npm可用 npm view 查看包信息

能做什么

浏览器与联网
字段来自项目仓库与公开索引,中文说明由本站标注

上游标签

deepseek-harnessdsh-pluginperformancepermessage-deflatewebsocket

验证等级与安全审查

L4 · 沙盒安装通过
自动化流程结论,不是人工审核
验证等级L4 · 沙盒安装通过安装命令在隔离沙盒内真实执行成功,无依赖错误
安全审查低风险静态分析结论,未标注不代表已通过审查
仓库健康度活跃按仓库活跃度与最近更新时间给出
可信度银综合仓库活跃度与验证结果

选择建议

装之前先看这几条
按条目字段给出的判断,不替你决定用不用

值得选的地方

  • 验证等级 L4:在沙盒里真实装过,依赖能装上,不是纸面声明。
  • 静态安全审查为低风险,没有发现明显可疑行为。
  • 有可直接复制的安装命令,不用自己翻文档找入口。

先想清楚的地方

  • 没有声明 Node.js 版本要求,版本不匹配可能装不上。
  • 验证通过不等于安全:插件会读写文件、执行命令或联网,装前先到仓库确认它做了什么。

更适合

  • 需要在浏览器与联网场景里给 DSH 补能力的人。
  • 想装完就能用、不想自己排依赖的人。
  • 能接受在本地装依赖、愿意自己确认权限的人。

不太适合

  • 只使用 DSH 官方内置能力、不接受第三方插件的人。

同类对比

6 个同类
同分类里挑最接近的几条,字段以各自详情页为准
插件验证等级安全审查星标兼容版本安装命令
dsh-session-load-tuner当前 L4 · 沙盒安装通过 低风险 0 未标注 有
dsh-our-free-model L3 · 安装规范通过 低风险 8,796 未标注 有
dsh-web L3 · 安装规范通过 低风险 8,549 未标注 无
BrowserSkill L4 · 沙盒安装通过 低风险 8,456 未标注 有
dsh-pocket L5 · 运行验证通过 低风险 1,656 0.2.0-rc.2 等 12 个 有
Browser4 L4 · 沙盒安装通过 中风险 1,152 未标注 有

仓库档案

浏览器与联网
字段来自项目仓库与公开索引,中文说明由本站标注
作者 / 维护方Richard2091仓库 dsh-session-load-tuner · 默认分支 main
分类浏览器与联网network
收录类型可安装插件声明了 dsh.bundle、可用 dsh plugin add 安装的条目
开发语言未标注仓库主语言
许可证MIT商用或二次分发前请确认条款原文
星标 / 复刻 / issue0 / 0 / 0收录时的数值,非实时
创建 / 更新2026-10-25 · 2026-10-25最后推送 2026-10-25
本站收录2026-10-30首次进入本站目录的时间

README 全文

9.0 KB
作者原文,中文版优先;只做安全转义,不改内容

dsh-session-load-tuner

把 DSH Web GUI 的会话加载调成适合慢链路的样子:进会话先只拉一屏最新的记录,其余按批次异步补齐,快滚到最上面之前提前预取;传输上能压就压。插件实现,不改 dsh 自身任何文件(升级不会覆盖)。

背景:服务端在美国、浏览器隔着 Cloudflare + Cloudflare Access,一次「载入历史…」要拉 0.2–1.8 MB 未压缩 JSON。服务端组装这页只要 30–650 ms,慢在路上——所以这个插件管两件事:何时加载、加载多少,以及怎么传。

现在能做什么(v0.5)

  1. 设置页:「设置 → 会话加载」里改六个参数——首屏条数、至少消息数、至少轮次、懒加载、压缩、压缩阈值,带「恢复默认」。写回的是 profile 里的配置,不用再手改 yml。页面里没有“启用”开关:停用插件本身就是总开关——在「设置 → 插件」里停用这一条,或在 cordis.patch.yml 里给该条加 disabled: true,浏览器半边就不再加载,行为完全回到 dsh 原生。
  2. 首屏条数与轮次对齐:dsh 客户端里 HISTORY_PAGE_OPTIONS 硬编码 maxMessages: 500 + turnWindow: { minMessages: 50, minTurns: 2 }(跳转页是 200 条)。插件把 session/follow 与往上滚的 session/page 请求都换成配置值:条数上限、至少消息数、至少轮次。
  3. 懒加载:滚到接近顶部(800px)时自动触发一次「加载更早」,不用手动点按钮;关掉后只在你点按钮时加载。
  4. WebSocket 压缩开关:网关的 WebSocketServer 是 { noServer: true } 建的,ws 默认不开 permessage-deflate,/api/remote.mux 上那份 JSON 原样发。插件在 WebSocketServer.prototype.handleUpgrade 上挂薄包装,按配置在每次 upgrade 前设置 this.options.perMessageDeflate——不动厂商文件、不打补丁。

范围与路线

边界:浏览器这一侧怎么把会话数据取回来、传多大。凡是符合这个边界的可以往里加,不属于的不加。

状态 项 实现位置 说明
已做 历史首屏窗口 浏览器 session/follow 的 maxMessages / turnWindow
已做 WebSocket 压缩 宿主 /api/remote.mux 的 permessage-deflate,按帧大小阈值
规划 进入会话的异步分批 浏览器 首屏只要一屏,后台用 session/page 按批补齐剩余;批次数量、每批条数可配
规划 懒加载预取 浏览器 滚动到距顶 N 条/像素时提前拉上一页;总开关、预取量可配
规划 翻页窗口 浏览器 session/page(原生 500/200 条)与跳转页(JUMP_PAGE_OPTIONS)也走同一套参数
规划 附件图片懒加载 浏览器 历史图片走 /api/session/attachment(实测单张约 390 KB),进视口才取
另立插件 轮询节流 — 后台请求调度(cost-meter 每 10 s、commandcode-goat 每 30 s 且一直 403),和“加载”不同层,不塞进这个包
不做 服务端性能 — 解压 journal、投影、渲染不归它管;机器内存/swap 问题也不在这里解决
不做 网络线路 — 直连源站、关掉 Cloudflare、换机器是部署决策,插件只能少传/晚传

规划项的实现方式和风险:

  • 异步分批与懒加载都靠浏览器半边完成——session/page 是普通 HTTP RPC,客户端插件可以自己发;首屏 follow 帧自带 cursor 和 hasMore,知道还剩多少。滚动位置需要监听聊天容器的 DOM(或找 data-chat-following-tail 之类的标记),这部分依赖 dsh 的界面结构,升级大版本时可能要跟一下。
  • 已做的两项(窗口改写、压缩)不依赖 DOM,升级 dsh 不受影响。
  • 参数会随功能增加而扩展(批次、预取、图片),都走同一份 schemastery Config,加字段即加配置项。

安装

sh install.sh                       # 备份 + 复制 + 软链 + 写 patch
systemctl restart dsh-web.service   # 你自己执行:重启会打断当前会话

安装脚本只动三处,都会先备份到 ~/.dsh-backup-<时间戳>/:

  1. ~/.dsh/profiles/web/plugins/dsh-session-load-tuner/(插件包)
  2. ~/.dsh/profiles/web/node_modules/dsh-session-load-tuner(软链)
  3. ~/.dsh/profiles/web/cordis.patch.yml(末尾追加带标记的 insert 条目)

注意:以后在 profile 里跑 pnpm install 会清掉第 2 步的软链(和 AGENTS.md 里记的软链坑同源),重跑一次 install.sh 即可;第 3 步是幂等的,不会重复写入。

参数

两个入口等价:设置 → 会话加载(推荐,即时写回),或手改 ~/.dsh/profiles/web/cordis.patch.yml 的 session-load-tuner 条目(改完要重启)。

总开关不在这里:用插件的启停(设置 → 插件 或该条目的 disabled: true)。

字段 默认 说明
maxMessages 120 首屏条数上限(20–500;原生 500)
minMessages 50 至少凑够多少条消息才允许在轮次开头截断(原生 50;1–500 且 ≤ maxMessages)
minTurns 2 至少跨过多少个轮次起点(原生 2;1–50)
lazyLoad true 滚到接近顶部时自动拉上一页(懒加载)
wsDeflate false WebSocket 压缩开关(permessage-deflate)
wsDeflateThreshold 1024 小于该字节数的帧不压缩

生效时机:

  • 在设置页里改:写回后立即保存;窗口参数在下次打开会话时生效(当前会话刷新页面亦可)。
  • maxMessages / minMessages / minTurns / lazyLoad:浏览器半边每次发帧/滚动前现读配置。
  • wsDeflate / wsDeflateThreshold:只影响新建立的 WebSocket 连接;改完重启 dsh-web.service 最干净。

数字的口径

服务端分页(paginate())里只有两类事件计入条数:

  • user/message(你输入的一条)
  • assistant/message(助手的一条消息,且必须是 append 到当前 surface 的)

工具调用、turn/step、进度、卡片等事件都不计数。而一个轮次(turn)里助手可能连发多条 assistant/message(比如调完工具再输出一段),所以:

  • “条”≠“轮”:一轮可能是 1 条,也可能是 5 条;官方默认 50 条 / 2 轮,就是“至少 50 条消息、至少跨 2 轮”。
  • 页面大小最终落在 [minMessages, maxMessages],且一般停在某个轮次开头;如果先撞上 maxMessages,就在那里截断(可能从轮次中间开始)。
  • minMessages 必须 ≤ maxMessages,否则服务端直接 400;插件在发请求前会再夹一次。

验证

# 客户端 bundle 是否被宿主注册并在服务(loopback 请求,不需要公网 Host)
curl -s -o /dev/null -w '%{http_code}\n' -H 'Host: 127.0.0.1:3080' \
http://127.0.0.1:3080/plugins/dsh-session-load-tuner/client.js    # 期望 200

浏览器 DevTools:

  • 窗口:Network → WS → 点开会话,发出的 open 帧里 maxMessages 应该是 120 而不是 500。
  • 压缩:同一次握手,响应头里应有 Sec-WebSocket-Extensions: permessage-deflate,之后帧体积明显变小。
    如果响应头里没有这个扩展,说明中间链路(本部署是 Cloudflare + Cloudflare Access)没有透传扩展协商——此时连接仍按未压缩工作,不会坏,只是没收益。

已知边界

  • 首屏(session/follow)和往上滚(session/page)都已按配置改写;懒加载靠观察滚动 + 点「加载更早」按钮实现,依赖聊天界面结构(按钮文案是「加载更早 / Load earlier」,距顶阈值 800px),dsh 大版本升级可能要跟一下。
  • 页面刚启动、设置文档还没返回时,第一帧按原生窗口处理(插件不猜配置),之后的会话打开都用配置值。
  • 不改 dsh 的 ws 包,也不 patch 网关源码:ws 服务端在 handleUpgrade 内部才做扩展协商,所以包装原型即可(见 lib/index.js 注释)。
  • 参数由 schemastery 严格校验:写成 maxMessages: 999 会让条目加载失败,取值范围见上表。

卸载 / 回滚

sh uninstall.sh
systemctl restart dsh-web.service

卸载删掉 patch 块、软链和插件目录,并把 patch 备份到 ~/.dsh-backup-<时间戳>/。彻底回滚也可以直接用备份里的 cordis.patch.yml 覆盖回去。

开发

# 测试依赖 profile 里的 @deepseek-ai/schemastery 和 dsh 安装目录里的 ws
ln -s ~/.dsh/profiles/web/node_modules node_modules   # 仅本地跑测试用,已 gitignore

node test/deflate.mjs       # 宿主半边:压缩协商在 开/关 之间来回切换
node test/client-hook.mjs   # 浏览器半边:帧/翻页改写、懒加载触发、钩子幂等
node test/settings-ui.mjs   # 设置页:注册、渲染、提交/夹紧/恢复默认/只读态

lib/index.js 是宿主半边(Config + ws 压缩钩子),lib/client.js 是浏览器半边(Module Loader 包,只做帧改写),test/ 里是两边的测试。

MIT License。

常见问题

6 问
答案由本站依据条目字段整理,不引用上游原文
dsh-session-load-tuner 怎么安装?

在 DSH 里执行 `dsh plugin --profile web add github:Richard2091/dsh-session-load-tuner` 即可。

dsh-session-load-tuner 的验证等级是什么意思?

L4 · 沙盒安装通过。安装命令在隔离沙盒内真实执行成功,无依赖错误

dsh-session-load-tuner 安全吗?

低风险。

dsh-session-load-tuner 装之前要先确认什么?

先看它会读写哪些文件、执行哪些命令、连接哪些网络地址;验证等级只说明装得上、跑得起来,不等于安全。涉及密钥或系统权限的,建议先在隔离环境试装。

dsh-session-load-tuner 用的是什么许可证?

上游标注为 MIT。商用或二次分发前请到仓库确认许可证原文。

这条记录的数据可靠吗?

本站按仓库名去重后合并整理,字段以作者仓库与 npm 元数据为准;安装命令、仓库地址与 README 保持原文,带 L4 / L5 标记的安装命令已在隔离沙盒里真实跑通。

浏览器与联网
按星标排序,可作替代方案

dsh-our-free-model

dsh-our-free-model

在 DeepSeek Harness 中装上这个 DSH plugin,无需登录、注册或填 API Key,即可直接调用 DeepSeek

L3 · 安装规范通过 8,796 星

dsh-web

dsh-web

侧边栏多列任务看板:卡片交给真实 DSH 智能体会话执行,支持 cron 定时(Host 侧到点执行,关浏览器也生效)。

L3 · 安装规范通过 8,549 星

BrowserSkill

BrowserSkill

BrowserSkill 的 DeepSeek Harness 浏览器自动化桥接插件,通过原生浏览器工具控制可见的 Chrome 和 Edg

L4 · 沙盒安装通过 8,456 星

dsh-pocket

dsh-pocket

DSH Pocket 让 DeepSeek Harness 装进口袋:电脑跑 dsh web,手机扫码即实时同步访问(局域网+公网),人在外

L5 · 运行验证通过 1,656 星

Browser4

Browser4

L4 · 沙盒安装通过 1,152 星

agentrq

agentrq

L4 · 沙盒安装通过 1,140 星

Richard2091 的其它插件

1 个

插件的元信息来自作者仓库;分类、验证等级与安全结论的中文说明为中文整理,最近核验 —。