dsh-desktop-notify:在系统通知里完成 DSH 审批与提醒

前言

用 DeepSeek Harness(DSH)跑智能体时,权限确认、提问和任务结束往往发生在浏览器标签页里。窗口被别的应用挡住,或你只是暂时切走,很容易漏掉「允许一次」或回答提问。DSH 自带应用内审批面板能兜底,但你得先切回窗口。

下面介绍社区插件 dsh-desktop-notify(仓库 HonestShine/dsh-desktop-notify)。它把审批、提问、完成与错误提醒接到操作系统原生通知里;在 Windows 上还能在通知条上直接点「拒绝 / 允许一次」。插件归类为客户端方向,维护者为 HonestShine;在 SkillHub 目录页可查简介与链接(skillhub.cn 条目)。目录站为社区聚合,与 DeepSeek / 幻方无官方从属关系。DSH 本身提倡「一切皆插件」,本插件即其一例。

这是什么

dsh-desktop-notify 是 DSH 的桌面原生通知插件(npm 包名 @honorshine/dsh-desktop-notify,当前资料中版本 0.1.1,MIT 许可)。一句话定位:在系统通知中处理权限审批按钮,并为任务完成、提问与会话错误提供可配置的提醒与铃声。

Host 侧注册 Cordis 服务 ctx.desktopNotify,其他插件也可调用 show() 弹出带按钮的通知;Client 侧在 设置 → 通知提醒 提供配置页(铃铛图标)。

核心功能

跨平台实现

平台 通知显示 内联按钮
Windows WinRT toast(PowerShell) 支持,dshnotify: 协议 + VBS 回传
macOS terminal-notifier 支持
Linux notify-send 需 libnotify 0.7.10+ 且守护进程支持 actions

权限审批

  • 权限类通知附带「拒绝」「允许一次」,点击结果回到 Host 的 approval/request waterfall。
  • 默认仅窗口不在前台时由插件接管;窗口在前台、用户切回或通知超时后,退回 DSH 原生审批面板。
  • 交互提示音与通知铃声分开配置,窗口在前台也会响(便于你在应用内面板旁听到待处理事项)。

其他提醒

提问(含 ask_user_question)、根会话任务完成(running → idle)、根会话 agent/error 均可单独开关,并可限制为「仅后台」提醒。通知正文优先用会话标题,否则用工作目录名。

铃声与离开判定

  • 通知铃声:system / bundled / custom / none,设置页可试听。
  • 交互提示音:默认内置 alert.wav,模式为 bundled / custom / none。
  • 前台无键鼠输入超过设定秒数视为离开(默认 180 秒,0 关闭),用于配合「仅后台」逻辑。

Windows 特有

自动读取安装包注册的 DeepSeek Harness.lnk 的 AppUserModelID,让 toast 显示应用名与图标;设置页可修复 dshnotify: 协议并打开系统通知设置。

DSH 版本

资料记载已在 0.2.0-rc.2 / 0.2.1-rc.5 / 0.2.2-rc.1 上审计适配;0.2.2+ 使用原生 settings.section.icon,更早版本用 DOM 补丁显示铃铛。若组合未注入 configForms,通知与审批仍可用,只是没有设置页。

安装与启用

安装前请自行查阅仓库源码与 MIT 许可证。插件在 当前 DSH 进程权限下运行(Windows 上会写当前用户注册表、调用 wscript.exe 等),安装前确认你可接受其行为。

任选一种方式安装;装完后重启 dsh web(桌面端则完全退出后重开),浏览器 F5 刷新,在 设置 → 通知提醒 中配置。

从 GitHub 安装(一条命令)

适用于无需本地解压目录的场景:

dsh plugin --profile web add github:HonestShine/dsh-desktop-notify

固定版本示例(资料原文):

dsh plugin --profile web add github:HonestShine/dsh-desktop-notify#v0.1.1

需要 Node.js ^22.22.2 || ^24.15.0 || >=26.0.0(写在 package.json 的 engines 中)。

从 npm 安装

dsh plugin --profile web add @honorshine/dsh-desktop-notify

或:

dsh plugin --profile web add @honorshine/dsh-desktop-notify@0.1.1

本地目录或 Release 包

完整目录(含 package.json、cordis.patch.yml、lib/、assets/)可先卸载同名插件,再用绝对路径安装,例如:

dsh plugin --profile web remove dsh-desktop-notify
dsh plugin --profile web add link:D:\Plugins\dsh-desktop-notify

macOS/Linux 在 link: 安装前若目录无 node_modules,需在插件目录执行 pnpm install。Release 中的 .tgz 也可用 file: 路径安装。

说明:上述命令的 profile 为 web。桌面 Electron 的 desktop profile 由应用内置插件管理,CLI 会拒绝 --profile desktop。

卸载:

dsh plugin --profile web remove dsh-desktop-notify

典型用法

在系统通知里批权限

  1. 把 DSH 窗口切到后台或最小化。
  2. 触发需要审批的工具操作。
  3. 在系统通知中点击「拒绝」或「允许一次」。
  4. 若切回 DSH 前台,通知会关闭,改由应用内审批面板处理。

窗口在前台时不弹审批通知,但交互提示音仍会按配置播放。

在设置页调行为

在 设置 → 通知提醒 中切换各类提醒与铃声;高级项含 Windows AppUserModelID、macOS 定制 terminal-notifier 路径等。

配置文件写在 profile 的 cordis.patch.yml,entry id 为 desktop-notify。常用字段如下(完整表见仓库中文文档):

字段 默认值 说明
enabled true 插件总开关
approval.enabled true 接管权限确认通知
approval.onlyWhenHidden true 仅窗口不在前台时接管
approval.timeoutSeconds 30 通知等待上限(5–300)
events.question / turnEnd / errors true 提问、完成、错误提醒
events.onlyWhenHidden true 上述三类仅后台
sound.mode bundled system / bundled / custom / none
attention.enabled true 交互提示音(前台也响)
presence.idleSeconds 180 无输入视作离开的秒数;0 关闭

给其他插件复用通知

Host 注册 ctx.desktopNotify 后,其他插件可调用 show() 展示带按钮的通知(细节见仓库「架构」一节)。

适用场景与注意

适合谁: 长时间开多个应用、希望 DSH 在后台仍能通过系统通知处理「允许一次」或听到待办提示的开发者;Windows 用户最能享受带头像的应用名 toast 与内联按钮。

平台注意:

  • macOS 通知发送方显示为 terminal-notifier,不是 DeepSeek Harness(node-notifier 3 的限制);可自行构建带图标的 notifier 并在设置中填写路径。
  • Linux 无 actions 支持时按钮不可用,会退回应用内面板。
  • Windows 自定义通知音频仅支持 WAV;按钮回传依赖 Host 进程存活,退出后旧通知按钮不再处理。

安全与合规: 不要凭包名臆造安装命令;Windows 协议注册位于 HKCU\Software\Classes\dshnotify。安全软件拦截 wscript.exe 会导致按钮失效,可在设置页尝试「修复通知按钮协议」。

结尾

dsh-desktop-notify 把 DSH 的审批与状态变化接到操作系统通知层,并在 Windows 上尽量保持与安装包一致的应用身份。若你已在用 DSH 0.2.x RC,可从 GitHub 或 npm 安装后于 设置 → 通知提醒 按需开关。

  • 目录页:https://www.skillhub.cn/plugins/HonestShine/dsh-desktop-notify
  • 仓库与文档:https://github.com/HonestShine/dsh-desktop-notify(中文说明:docs/README.zh-CN.md)
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye