dsh-notify

DSH PLUGIN通知与集成

仓库 DoggyHU/dsh-notify

通知与集成 L5 · 运行验证通过 安全审查:低风险 可信度:金 可安装插件
安装这个插件

任务提示音:DSH 需要确认或一轮结束时播放 Windows 提示音,音效可在设置页挑选并试听

一句话选型结论

按资料字段整理

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

分类通知与集成 收录类型可安装插件 验证等级L5 · 运行验证通过 安全审查低风险
验证等级 L5 L5 · 运行验证通过
GitHub 星标 0 复刻 未标注 · 未关闭 issue 未标注
最近更新 2026-10-21 创建于 未标注
README 7.3 KB 正文体量,越大说明说明书写得越细

安装

可安装插件
在 DSH 里执行,装完用 dsh plugin list 确认已挂上;标了 L4 / L5 的命令已在沙盒里真实跑通
dsh plugin --profile web add github:DoggyHU/dsh-notify#v1.1.0
  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 查看包信息

能做什么

通知与集成
字段来自项目仓库与公开索引,中文说明由本站标注

适用场景

通知

验证等级与安全审查

L5 · 运行验证通过
自动化流程结论,不是人工审核
验证等级L5 · 运行验证通过在 dsh 沙盒中完成安装与运行冒烟——装得上、跑得起来
安全审查低风险静态分析结论,未标注不代表已通过审查
仓库健康度活跃按仓库活跃度与最近更新时间给出
可信度金综合仓库活跃度与验证结果

选择建议

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

值得选的地方

  • 验证等级 L5:安装和运行都在沙盒里跑通过,装完能直接用的概率高。
  • 静态安全审查为低风险,没有发现明显可疑行为。
  • 有可直接复制的安装命令,不用自己翻文档找入口。

先想清楚的地方

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

更适合

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

不太适合

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

同类对比

6 个同类
同分类里挑最接近的几条,字段以各自详情页为准
插件验证等级安全审查星标兼容版本安装命令
dsh-notify当前 L5 · 运行验证通过 低风险 0 未标注 有
treg L3 · 安装规范通过 低风险 4,976 未标注 无
dsh-purge 未做沙盒验证 未标注 3,412 未标注 有
dsh-im L5 · 运行验证通过 低风险 1,837 0.1.7-rc.2 等 10 个 有
dsh-dafeiyu L5 · 运行验证通过 低风险 425 0.1.7-rc.2 等 10 个 有
dsh-trading L3 · 安装规范通过 低风险 235 未标注 无

仓库档案

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

README 全文

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

dsh-notify — 任务提示音

DSH 需要你、或者一轮活干完的时候,用 Windows 自己的声音提醒你一声。
声音由 DSH 的本机进程播放,所以页面在后台、你切到了别的窗口、甚至标签被静音,都还听得见。
音效在设置 → 任务提示音里挑,点一下就能试听。

它什么时候响

时机 事件 声音
有东西等你点确认(工具授权、权限提升…) approval/request 「需要你确认时」选的那个
智能体问了你一个问题 / 等你审计划 user-questions/request 同上
主会话一轮跑完 agent/status 由 running 变 idle 「任务完成时」选的那个

不会响的情况:

  • 子代理、Agent Teams 成员的会话结束(设置页里可以打开,默认关);
  • 会话只是被创建、或本来就没在跑时收到 idle —— 只有「先 running 再 idle」才算一轮结束;
  • 两声之间小于「最小间隔」(默认 1200 毫秒);
  • 刚响过「需要确认」后的「静默窗口」内(默认 5000 毫秒),那是同一次卡住,不是两次事件;
  • 总开关关掉时。

设置页

设置 → 任务提示音(在「模型」和「插件」之间)。

  • 两块音效,各有一份 Windows 自带音效列表(实时读 C:\Windows\Media\*.wav,你机器上现在 63 个)。
    点名字=选中并试听,点 ▶=只试听。
  • 「自定义 wav」一行:填绝对路径(比如 D:\Sounds\ping.wav),▶ 试听,使用 选中。
    文件不存在会直接告诉你是哪个路径找不到。
  • 进阶:子代理是否也响、最小间隔、静默窗口。

配置存在 C:\Users\Acer\.dsh\storages\dsh-notify.json,可以直接手改,插件会在 0.5 秒内读到新值。

那两声到底是谁在放

一次性的隐藏 powershell.exe,脚本用 -EncodedCommand(Base64 UTF-16LE)传:
路径里有空格、引号、中文都不会被 shell 重新解释,windowsHide 保证不闪黑窗。
找不到 .wav 时退回 [System.Media.SystemSounds],跟随你的 Windows 声音方案。

实测:事件发生到出声约 0.7 秒(PowerShell 启动开销)。

一个副作用值得知道:音量合成器里这一项显示为 "Windows PowerShell",不是 DSH。
如果你哪天单独静音了某个应用,注意别把它也静了。

装 / 卸 / 改

  • 安装:plugin_manager 的 install_bundle,target 指向本目录(首次)或包名 dsh-notify(已装过时)。
  • 停用:设置 → 插件 里关掉这一行,或 remove_bundle。

改完必须「完全退出进程」,不是关窗口、也不是刷新页面

这一条值得单独写,因为它白白吃掉了三轮调试:

你做的动作 浏览器半边 Host 半边
按 F5 / 重开窗口 ✅ 会更新 ❌ 还是旧的
插件里「禁用 → 启用」 ✅ ❌ 还是旧的(Loader 复用启动时 import 的那一代模块,实测确认)
完全退出 DSH 进程后重开 ✅ ✅

所以改完 index.js(或任何 Host 代码)之后,请托盘图标右键 → 退出,确认没有残留进程再打开:

Get-Process 'DeepSeek Harness' -ErrorAction SilentlyContinue

验证方法:看 storages\dsh-notify.log 有没有多出新的一行,比对比进程启动时间和源文件修改时间。
install_bundle 对已安装包的改动会明确回 restart-required —— 那就是"必须要真重启"的意思。

自检(不需要 DSH)

node _diag\notify-host-test.mjs      # Host 半边:事件判定 / 节流 / 配置读写 / 试听接口(34 项)
node _diag\notify-client-test.mjs    # 浏览器半边:注册 / 三个渲染分支(23 项)
node _diag\notify-sound-test.mjs     # 直接听某个音效,例如 chimes.wav

Host 测试用临时 DSH_HOME 和一个静音 wav,所以不会动你的真配置、也不会出声。

踩过的坑:一个"注册不上但没人告诉你"的通道

第一版设置页能显示,但一读配置就报 transport failure for /notify/get: HTTP 405。
我最初把通道注册写成了这样:

ctx.inject(['connection'], (c) => c.connection.rpc.handle('/notify', handler))   // ✗

第一次尝试的修法是补上 webServer 注入 —— 没用,而且暴露了真正的原因。
幸好当时加了一行诊断日志,它把异常原文写了下来:

channel /notify registration failed: Error: cannot get property "webServer" without inject
at Fiber. (…dsh-client-connection/lib/index.js:656:35)
at Object.handle (…/lib/index.js:576:39)

rpc.handle() 里是 owner.effect(() => owner.webServer.register(route), …),而 owner 来自
get rpc() { const owner = this.ctx; … } —— this.ctx 是这个 service 自己的上下文(connection 插件那个),
不是"读它的插件"。那个插件的 inject 列表是 ['credentials'],没有 webServer,所以这行必然抛错。
换句话说:在这个版本里 rpc.handle() 对插件是不可用的(DSH 自己也从不调用它,只用不碰 webServer 的
rpc.intercept('/api', …);而 /api 的拦截器已被 typertGateway 独占,registerInterceptor 明确禁止重复注册)。

失败之所以无声,是因为 Cordis 只丢掉抛错的子 fiber,插件行仍然是 active,页面那一侧只看到一个 405。

最终用的是插件真能用的那个扩展点 —— connection.fetch.register(),它只往 Connection 的精确路由表里加一条,
全程不碰 owner 的任何 service:

ctx.inject(['connection'], (c) => c.connection.fetch.register({
path: '/api/notify.config',          // 必须在 /api 下
methods: ['POST'],
requestBody: 'buffered',
fetch: async (request) => Response.json(await handleEndpoint(…)),
}))

路径必须落在 /api 下:Connection 自己为 /api 注册了 prefix 路由,那里做 Host/Origin 校验和
浏览器 Cookie 认证,然后把请求交给 createSharedFetchHandler('/api') —— 先查精确路由表,再查拦截器。
所以页面里一句普通的同源 fetch('/api/notify.config') 就自带认证,和整个 UI 走的是同一条路
(认证是签名 Cookie,isAuthenticated() 读 cookie 头,客户端默认就是 globalThis.fetch,不额外加头)。

教训:这类失败不留任何痕迹,所以 Host 半边每次启动都会往
C:\Users\Acer\.dsh\storages\dsh-notify.log 写一行"注册成功/失败 + 堆栈",设置页遇到 404/405 也会直接点名这个文件。
回归测试里有三项盯着它:路由路径必须在 /api 下、声明必须是 POST+buffered、源码里不得出现 rpc.handle(。

实现要点

  • approval/request 与 user-questions/request 是 waterfall 事件:本插件只观察,next() 在 try/catch
    之外调用且只调用一次 —— 提示音坏掉、甚至事件载荷一读就抛错,也不会让授权流程卡住(测试里专门有这一项)。
  • 设置页数据走 connection.fetch.register() 的 /api/notify.config,浏览器半边用同源 fetch
    (不再需要 connection 客户端 service,所以 inject 只有 slots 和 locale)。
  • 浏览器半边只用 --dsw-alias-* 主题令牌,不 import 任何 DSH 客户端包,不碰 app root,不往 document.body 追加东西。

常见问题

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

在 DSH 里执行 `dsh plugin --profile web add github:DoggyHU/dsh-notify#v1.1.0` 即可。

dsh-notify 的验证等级是什么意思?

L5 · 运行验证通过。在 dsh 沙盒中完成安装与运行冒烟——装得上、跑得起来

dsh-notify 安全吗?

低风险。

dsh-notify 装之前要先确认什么?

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

dsh-notify 用的是什么许可证?

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

同名或近似条目

8 条
不同作者的仓库分开列,请确认你要装的是哪一个
通知与集成
按星标排序,可作替代方案

treg

treg

Treg 是面向 Agent 工具的 OpenRouter,聚合 60 个提供商的 2896 个端点,按调用计费,统一令牌访问,无需注册各供

L3 · 安装规范通过 4,976 星

dsh-purge

dsh-purge

dsh-purge Community · DeepSeek Harness 社区维护版:宿主兼容、状态诊断、提示词管理、更新与本机备份回滚

未标注验证等级 3,412 星

dsh-im

dsh-im

将IM机器人接入DeepSeek Harness,支持飞书、微信、钉钉等九种渠道,通过扫码或凭据配置,统一管理多机器人连接。

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

dsh-dafeiyu

dsh-dafeiyu

DSH 大肥鱼是一款由 DeepSeek Harness 真实工作状态驱动的桌面伴侣插件,以始终置顶的透明窗口实时展示 Agent 的思考、

L5 · 运行验证通过 425 星

dsh-trading

dsh-trading

L3 · 安装规范通过 235 星

DoggyHU 的其它插件

6 个

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