Repository navigation
dsh-notify 0.5.0
dsh-notify 0.5.0
适配 DSH 0.2.0-rc.2 + 两项降噪优化。
如果你在用 0.4.0 且一切正常,这一版没有必须升级的理由——它不会修掉你遇到的任何故障,只是让通知更安静、更省资源。在 DSH 0.1.7 / 0.2.0 上都可用。
先说兼容性:这次没有 API 漂移
对当前打包版 DSH(0.2.0-rc.2,Electron 构建)逐项核对,插件用到的客户端接口全部健在:
| 接口 | 状态 |
|---|---|
ctx.uiSession.sessionStatus / adapter.current |
✅ |
ctx.configForms.get(entryId) |
✅ |
ctx.jobs.state + watchRows |
✅ |
settings.section 槽位 |
✅ |
ctx.on('session/event') / webServer.register |
✅ |
ctx.settingsScope |
✅ 仍然不存在(0.1.7 起就已移除) |
也确认了 dsh.client.platform 仍必须是 "web"——新版桌面端是 Electron 外壳,渲染的是同一套 Web 客户端。
优化一:子代理会话静音 🤖
DSH 会给每个子代理分配独立会话(客户端 SessionSummary.origin、服务端 session.header.origin 都是 'subagent'),而它们每一轮都会发 turn/end。
后果是:一次 fan-out 工作流(并行子代理、workflow 编排)能瞬间刷出几十条「新会话已创建」和「任务完成」,把真正属于你的任务通知淹掉。
本版在两侧都做了过滤:
- 服务端在
broadcast之前就拦掉子代理的turn/end(连流量都不产生) - 客户端的「新会话」与
turn-end两条路径各自独立过滤
审批 / 待回答类通知不过滤。 子代理同样可能请求授权,漏掉一次授权的代价远大于多一条通知。
优化二:任务订阅有界 📉
ctx.jobs 的任务名册是按会话订阅的(ctx.jobs.watchRows),每个订阅在服务端是一条常开的 job.list 流。
之前的实现给会话列表里的每个会话都开一条——本机上就是 45 条流,其中绝大多数永远不会再有任务。
现在只订阅「可能还有任务在跑」的会话:
- 当前会话
- 正在运行的会话(任务只可能在运行期被创建)
- 12 小时内活跃过的会话(兜住「轮次已结束但任务还在跑」)
- 名册里当前仍有任务的会话(任务比会话活动活得更久时继续盯着)
订阅会在会话列表变化、以及切换当前会话时重算。
回归测试扩充
tools/smoke-client.mjs 新增覆盖:
- 子代理会话不产生「新会话」通知
- 子代理的
turn/end不产生通知(普通会话的仍通知) - 48 小时未活动的会话不会被
watchRows - 切换当前会话时立即补上它的订阅
node tools/smoke-client.mjs安装
# 从 npm
dsh plugin --profile desktop add @having5548/dsh-notify
# 或从本页附件
dsh plugin --profile desktop add having5548-dsh-notify-0.5.0.tgz新版桌面端的 profile 名是
desktop(旧版 Web 是web)。可以先用dsh plugin --help确认。
安装后重启 DSH 生效。
环境
- DSH ≥ 0.1.7-rc.2(已在 0.1.7-rc.2 与 0.2.0-rc.2 上核对)
- Windows 10+ / macOS
完整改动
见 6ea8f7c。
Assets
having5548-dsh-notify-0.5.0.tgz— 插件安装包- SHA256:
141FFCDF47A98188AEB2177F7CE0C024B16401695B4707BED6C6B5B54A4CD20B