dsh-notify-me

notifytested: passnpmMIT

Notification reminders, message alerts and desktop notification for DSH — a desktop notifier that raises a system toast, a sound and a tab-title marker when the agent needs your input (approval, plan review, question) or a reply is finished in the background (task complete / completion alerts, notif

下载量 / Downloads
14,627
依赖体积 / node_modules
0.56 MB
测试时间 / Tested
2026-11-06

Install

dsh plugin --profile web add dsh-notify-me

Sandbox test results

StageResult
1 install✓
2 list✓
3 mount—
4 boot—

Four stages run in an isolated sandbox: install (network on) → list → mount → boot (last three with no network).

README

<div align="center">

<img src="https://raw.githubusercontent.com/chromoany/dsh-notify-me/main/docs/brand/icon-app-128.png" width="76" height="76" alt="dsh-notify-me">

dsh-notify-me

离开 DSH 页面,也能及时知道何时需要回来。

简体中文 | [English](README.en.md)

![npm version](https://www.npmjs.com/package/dsh-notify-me)

![npm downloads](https://www.npmjs.com/package/dsh-notify-me)

![npm total downloads](https://www.npmjs.com/package/dsh-notify-me)

![License: MIT](LICENSE)

![test](https://github.com/chromoany/dsh-notify-me/actions/workflows/test.yml)

![DSH Web and Desktop](#安装)

![Package size](https://www.npmjs.com/package/dsh-notify-me)

![DSH Compatibility](#兼容性)

![Awesome DSH Plugin](https://awesome-dsh-plugin.com)

</div>

[安装](#安装) · [效果预览](#效果预览) · [配置](#在-dsh-设置里改配置) · [兼容性](#兼容性) · [已知限制](#已知限制) · [更新日志](CHANGELOG.md)

DSH Web / Desktop 的通知插件,让你敢不开完整访问,也不必一直守着页面。

  • 需要你操作时:审批、方案确认、提问,用通知、提示音和标题标记提醒。
  • 后台回复完成时:及时回来查看结果,点击通知可回到对应对话;提醒时机可选「仅后台 / 仅当前对话静默 / 总是提醒」。
  • 人走开但窗口没走:窗口留在最前台、人却离开座位,超过 3 分钟没有输入也算离开,该提醒的照常提醒;收到的那条通知不会在你回来之前自己消失,一回到页面(点任务栏、Alt+Tab、点通知都算)就收起。
  • 离开电脑时:可选转发到 Discord、Bark、Gotify、飞书群机器人、Server酱、WxPusher 或自己的 Webhook。
  • 连页面都关掉时:可选让宿主进程兜底——页面不在时宿主继续把「需要你操作」「回复完成」推到你的网关;也可以只开同源中继,让页面够到要认证的网关。两项默认关,配置写在 profile 的 patch 层(见[高级设置](#高级设置)里的「页面关闭后:宿主侧兜底与同源中继」)。
页面或桌面应用需保持运行(后台 / 最小化可以);系统通知需要通知权限。审批按钮依赖 Service Worker,只有 Web 端有,桌面端的通知不带按钮,点通知回到对话里裁决。开启宿主侧兜底后,页面关闭仍能收到外部推送——本地通知与审批按钮仍要页面在。

效果预览

普通通知示例 · Windows / Edge · 不含审批按钮。 查看原图

<details>

<summary>展开设置界面预览</summary>

只截插件自己的面板(真实组件,与宿主同款深色主题),不带 DSH 左侧导航栏;每行说明在鼠标停在标题文字上时才出现,所以这里只看到标题。

</details>

安装

DSH Web

已安装 DSH CLI 的用户,在终端执行:

# 安装并自动挂载进 web profile
dsh plugin --profile web add dsh-notify-me

重启 dsh web,然后硬刷新页面(Windows / Linux 是 Ctrl+Shift+R,macOS 是 Cmd+Shift+R)。如果你使用其他 Web profile,请把命令中的 web 换成实际名称。

DSH Desktop

1. 在桌面应用打开 插件 → 添加插件。

2. 输入 npm 包名 dsh-notify-me,按应用提示完成安装,并确认插件已启用。

3. 完全退出并重新启动 DSH Desktop,使插件加载。

桌面端的 desktop profile 由 Electron 应用管理;不要把上面的 Web 命令改成 --profile desktop,CLI 会拒绝此操作。安装到 Web profile 也不会自动安装到桌面端。

首次验证

1. 在 DSH 页面上点击一次,按提示允许通知;若此前拒绝过,在浏览器站点设置中允许通知。操作系统也需要允许对应浏览器 / DSH Desktop 显示通知。

2. 打开 设置 → 通知提醒,确认出现该分区及底部插件版本号,保持「启用提醒」「提示音」开启。

3. 点击设置页的「测试『回复完成』」按钮:应出现一条测试通知,并按当前音效设置播放声音。这个本地测试不会转发到外部通知端点,也不受「窗口在前台时也提醒」开关限制。

Web 用户可再测审批按钮,通知上会带「同意 / 拒绝」。桌面端拿不到 Service Worker,这条测试只发一条普通通知;真实审批的提醒同理——只弹通知,点它回到对话里裁决。

控制台验证(可选) — 支持 DevTools 的环境也可执行:

window.__dshNotifyMe.test("done")        // 「完成」示例
window.__dshNotifyMe.test("attention")   // 「需要你」示例
window.__dshNotifyMe.test("approval")    // 桥可用时带「同意 / 拒绝」按钮;否则只发普通通知(桌面端即如此)
window.__dshNotifyMe.debug()             // 桥接看 bridge(active = 按钮可用)、抬窗通道 raiseChannel、最近一次尝试 raiseLast、平台拒发原文 lastToastReject、设置是否真存下来 configStored、宿主协调看 hostBridge

没有测试通知时,先检查:通知权限是否被拒绝(在页面上点一下 → 选「允许」;或地址栏锁 → 站点设置 → 通知 → 允许 → 刷新)、装完没重启 DSH、系统设置里浏览器通知被关。

为什么需要它

  • 不开完整访问(workspace-write + ask):保留事前审批,但错过请求会让 agent 等待。
  • 开完整访问(full access):减少审批打断,同时放弃事前拦截能力。

dsh-notify-me 把「监督」和「守在屏幕前」解耦:只在真的出现决策点(审批 / 方案确认 / 提问)或回复跑完时,才用系统通知把你叫回来——让你敢不开完整访问,不必靠放弃拦截能力来换效率。它不降低 full access 本身的权限风险(它不是沙箱),只是减少 ask 模式下因错过审批而产生的等待。

提醒时机

事件 · 默认行为

🔔 需要你操作 · 页面可见也提醒;当前对话只留标题标记

✅ 回复完成 · 页面隐藏 / 后台时提醒(可选「仅当前对话静默」或「总是提醒」)

需要你操作包括审批请求、方案待确认(plan review)和提问(ask_user_question)。带按钮的快捷裁决只在 Web 端可用,桌面端点通知回到对话里裁决(见[已知限制](#已知限制))。

回复完成也覆盖后台会话;完成但还没看时,标题带 ✅ 回复完成 · 标记,打开对应会话即撤。标题标记不受提醒策略限制。

通知正文的第一行是会话标题:当前正在看的会话和其他会话一样显示自己的标题,只有宿主还没给出标题的新会话才用「当前对话」占位符兜底。

后台子代理(subagent)子会话的等待与完成默认不提醒:DSH 把每个子代理子会话列成独立会话,但它们是所属主对话那一轮里的步骤,提醒只会是噪音。你当前打开的那个子代理会话不算在内,照常提醒。设置页「子代理会话不提醒」可关掉这个静音。

在 DSH 设置里改配置

打开 设置 → 通知提醒。页面按「提醒方式 → 什么时候提醒 → 试一试」三段排开,不常改的收进底部「高级设置」,点一下展开。每行只写标题,具体说明在鼠标停在标题文字上时弹出的小方框里(只有标题本身触发布局,整行空白处不会弹;触屏或键盘操作时留一份隐藏文本给读屏)。带 ▸ 的行点一下展开子项。

提醒方式

  • 启用提醒 总开关:关闭后不弹通知、不响提示音,也不改标签页标题;
  • 提示音 / 音量:开关直接切;音量滑块收在该行里,点一下标题(▸ 变成 ▾)展开。具体播什么由「高级设置 → 音效来源」决定;
  • 审批通知上直接裁决(默认开):审批带「同意 / 拒绝」,点一下即完成裁决,不用切回页面。Web 走带按钮的系统通知;桌面端 dsh-app:// 注册不了 Service Worker,通知上没有按钮,点通知回到对话里裁决。设置页「试一试」下面那行会如实说明当前环境能不能给按钮。

什么时候提醒

  • 窗口在前台时也提醒「需要你」(默认开):关掉后只有窗口转到后台才提醒;
  • 当前对话不弹通知(默认开):正看着的对话里的等待只留标签页标记,人离开后照常补发;
  • 「回复完成」什么时候提醒(默认「仅后台」):仅后台 / 仅当前对话静默 / 总是提醒,三选一;
  • 通知自动消失(默认「离开时保留」):离开时保留 / 总是关闭 / 从不关闭,三选一;三种设置只管「时间到点」那一次关闭,你回到页面时残留的通知一律收起;
  • 子代理会话不提醒(默认开):跳过后台子代理(subagent)会话,你正开着的那个照常提醒;
  • 点击通知回到对应对话(默认开):切到对应对话并把窗口带到前台,Windows 桌面走宿主路由原生抬窗、macOS / Linux 走 dsh://open 深链,多个标签页只调起一个。

<details>

<summary>展开各开关的边界条件</summary>

  • 后台的判定:切到别的应用、被别的窗口盖住、最小化都算;窗口一直留在前台但 3 分钟没有任何键鼠输入同样算,idleMinutes: 0 退回只看窗口。
  • 「当前对话不弹通知」何时补发:窗口转到后台或闲置超时后照常提醒;若你已处理掉就作废。
  • 「回复完成」三档:「仅后台」=不在看页面才提醒;「仅当前对话静默」=屏幕上那条静默、别的对话照常提醒,多开对话时有用;「总是提醒」=从不静默。老配置里的「窗口在前台时也提醒『回复完成』」开关自动迁移到这一项。
  • 「离开时保留」:你人在页面前时,普通通知几秒后自己收;人不在时收到的那条留在通知中心等你回来。回到页面(点任务栏、Alt+Tab、点通

…(truncated)

Rendered from the README published on npm. Formatted only, not edited.

Versions

Published on npm::49,最后更新 2026-10-28

Links

GitHub · Homepage · npm

Same category