← Back to home@huhui-tech

dsh-host-notify

Host-side macOS notifications for DeepSeek Harness: ask_user_question / approval / reply-finished via a vendored signed notifier app — immune to hidden-renderer notification loss. 宿主侧系统通知:提问/审批/回复完成,免疫渲染层隐藏丢通知。

Stars
1
Language
JavaScript
Created
Oct 7, 2026
Updated
Oct 7, 2026
GitHub repo

Introduction

dsh-host-notify

简体中文 | English

离开 DSH 页面也不错过任何动静。 当模型停下来需要你(提问 ask_user_question / 权限审批 / 方案待确认)、或一轮回复在后台跑完时,本插件用 macOS 系统通知 + 提示音提醒你——通知带鲸鱼图标、持续驻屏、点击直接把 DSH 抬回前台。

与浏览器半区通知插件的本质区别:本插件完全运行在宿主(host)进程,不经渲染进程、不经 Service Worker。Electron 隐藏/挂起窗口下浏览器通知会静默丢失(实测 9 发 2 中),宿主侧投递则不受页面状态影响——这是本插件存在的全部理由。

提醒时机

时机标题音色
提问(ask_user_question)🔔 需要你 · 提问Glass
权限审批 / 方案待确认(plan review)🔔 需要你 · 审批Glass
一轮回复完成(agent/status → idle)✅ 回复完成Ping

子代理(subagent)子会话的事件默认静音(它们是主对话那一轮的步骤);同一交互 60s 去重,同一 agent 完成事件 5s 去重。

安装

# npm(推荐)
dsh plugin --profile web add dsh-host-notify

# 或从 GitHub
dsh plugin --profile web add github:huhui-tech/dsh-host-notify

桌面 App(Electron)用户:在应用内插件管理器中输入 dsh-host-notify 安装,然后重启应用。

仅限 macOS("os": ["darwin"])——其他平台安装后插件静默不启用,不影响宿主。

首次使用(一次性设置,约 1 分钟)

插件的通知由一个随包自带的微型签名应用 DSH Notifier 发出:

  1. 第一条通知到达时,macOS 可能弹出授权框「"DSH Notifier"想给你发送通知」→ 点允许;
  2. 打开 系统设置 → 通知 → DSH Notifier(鲸鱼图标),建议把通知样式设为**「持续」**——横幅将驻留屏幕直到你手动关闭,绝不会一闪而过;
  3. 如需静音,把该页的声音关掉即可(或等待后续版本加设置项)。

万一 DSH Notifier 失效(极少见),插件自动降级为 osascript 投递(署名为「脚本编辑器」,可靠性相同,仅无图标与点击唤醒)。

工作原理

ask_user_question / approval / 回复完成(host waterfall/status 事件)
  → dsh-host-notify 监听(global 全会话、透传不断链、按键去重)
  → vendor/DSH Notifier.app(内嵌 terminal-notifier 二进制,独立签名)
  → macOS 通知中心(图标 + 声音 + 持续 + 点击 -activate 抬窗)

关键设计:

  • waterfall 监听严格透传:user-questions/request、approval/request 均为 waterfall 事件,监听器只产生副作用,必须 next() 原样交还——本插件绝不可能阻断提问/审批链;全部异常静默吞掉,通知是增益不是依赖。
  • 注入安全:投递命令与参数全部以数组形式传给 spawn,无任何 shell 拼接;标题/正文长度截断 80 字。
  • 会话标签:通知正文优先带官方 sessionTitle 服务的会话标题(你认得是哪条会话),缺失时回落模型名。
  • 去重:交互级 60s、完成级 5s,HMR/重载不重复打扰。

与同类插件的关系

  • chromoany/dsh-notify-me(MIT):产品灵感来源。它是浏览器半区实现,功能更丰富(设置页、可操作按钮、子代理细化);在 Electron 桌面端受渲染层限制时通知可能静默丢失——本插件是为了根治这一层而生的极简宿主侧方案。
  • bitterSmilezzz/dsh-notify(MIT):同样走宿主层系统通知(terminal-notifier/osascript),事件覆盖与呈现策略不同。

致谢

License

MIT(插件本体)· 内嵌组件许可证见 NOTICE。