dsh-system-notify:DSH 桌面系统通知插件

前言

在 DeepSeek Harness(DSH)里跑长任务时,人往往不在 IDE 前。仅靠 turn 结束时的简单脚本 hook,很难区分「正常完成」「报错」「等你点批准」或「Goal 卡住」——消息样式、声音、隐私和点击回到 DSH 都要自己拼。下面介绍社区客户端插件 dsh-system-notify(维护者 JamesYasR):在 Windows 与 Ubuntu 上提供类似 Codex 风格的桌面 toast 与提示音,事件可配置,并支持设置页与本地配置,不发起网络请求。

这是什么

dsh-system-notify 是 DSH 的 客户端(client)插件,面向 DSH Desktop 使用场景。它在任务完成、失败、需要输入或批准、Goal 完成/阻塞等节点触发系统通知,并可配置展示粒度、声音、免打扰时段与点击聚焦 DSH。插件在 SkillHub 目录 归类为客户端;源码与说明见 GitHub:JamesYasR/dsh-system-notify。许可证为 MIT;package.json 中当前版本为 1.1.0,要求 Node.js >= 20,与 DSH >=0.2.0-rc.2 且 <0.3.0-0 兼容。

与「只在 turn 完成时跑一段 notify 脚本」相比,README 用表格概括了差异:本插件覆盖 turn 错误、提问/批准、Goal、可选的子 agent/workflow 结束;支持多种通知样式、按事件选声、安静时段与冷却、点击聚焦,以及 Settings → System Notifications 图形设置。数据处理均在本地完成,README 明确说明无网络调用、无遥测。

核心功能

通知事件

README 列出 11 种 可单独开关的事件,默认大多开启,子 agent / workflow 结束默认关闭:

  • turn 完成、错误、阻塞、达到 token 上限、用户中止
  • 需要输入(ask_user_question)、工具等待批准
  • Goal 完成 / 阻塞
  • 子 agent 结束、workflow 结束(可选)

展示样式与隐私

四种样式:privacy(隐私)、simple(简洁)、standard(标准)、detailed(详细)。同一 turn 完成事件下,从「仅标题 Task completed」到含 session、摘要、项目路径、耗时、turn 编号等逐级增加信息量。错误类通知在 Linux 上使用 critical urgency,并走错误提示音;隐私模式下仍隐藏具体错误正文。

交互式通知

  • 批准:可在 toast 上直接批准或拒绝工具调用,结果回传给 DSH。
  • 提问:可从 toast 选列表项、多选 checklist,或通过输入框填自定义答案(Ubuntu 上复杂输入依赖 zenity,缺失时部分流程回退到 Chat UI)。

声音与送达方式

正常事件与错误事件可分别配置:none / system / 内置 chime / alert / custom;设置页可上传 WAV/OGG(Windows 自定义声要求 PCM WAV)。送达模式支持 toast+声音、仅 toast、仅声音。Ubuntu 上可调音量;支持 安静时段(夜间抑制普通通知,可选仍通知严重错误)以及最小时长、按事件冷却、可选过滤子 agent 会话。

点击聚焦

Windows 使用 DSH Desktop 注册的 dsh://open 深链;Ubuntu 优先用 wmctrl/xdotool 聚焦窗口,否则回退打开链接;整段点击行为可关闭。macOS 为 best-effort:osascript 显示通知,afplay 播放声音;点击聚焦需 terminal-notifier。

其他

  • 可选 Agent 工具 send_desktop_notification(需 opt-in),供模型在你要求「完成后 ping 我」时主动发通知。
  • 设置页 中英双语;通知文案跟随系统 locale 或强制 zh/en。
  • 运行时仅依赖 Node 内置模块与操作系统通知栈(README:Zero runtime dependencies)。

安装与启用

环境要求

Windows:Windows 10(1809+)或 Windows 11;需 DSH Desktop。Toast 身份与 dsh://open、交互按钮用的 dsh-system-notify:// 协议由插件/桌面环境配合注册。若看不到通知,需检查 Windows 对「DeepSeek Harness」的通知权限及 Focus Assist。

Ubuntu 22.04/24.04(README 主推平台):建议安装:

sudo apt install libnotify-bin libglib2.0-bin pulseaudio-utils wmctrl

可点击通知依赖 gdbus 与 dbus-monitor;交互文本/多选建议再装 zenity:

sudo apt install zenity

macOS:best-effort;点击聚焦建议 brew install terminal-notifier。

安装命令

从 GitHub 安装(须使用 desktop profile,命令来自 README 原文):

dsh plugin --profile desktop add github:JamesYasR/dsh-system-notify

本地目录安装:

dsh plugin --profile desktop add /absolute/path/to/dsh-system-notify

也可在 DSH Web UI:Settings → Plugins → Install,填写 GitHub 规格或本地路径。

安装后打开 Settings → System Notifications(系统通知)。插件默认启用;设置页会显示检测到的后端与缺失的系统包。

配置文件位置

  • Windows:%APPDATA%\dsh-system-notify\config.json
  • Linux/macOS:$XDG_CONFIG_HOME/dsh-system-notify/config.json(默认 ~/.config/dsh-system-notify/config.json)

可通过环境变量覆盖:

DSH_SYSTEM_NOTIFY_CONFIG=/path/to/config.json

常用配置项(节选,默认值以 README 为准):

键 默认 含义
enabled true 总开关
events.turnComplete 等 见 README 各事件是否通知
style standard privacy / simple / standard / detailed
language auto auto / zh / en
sound.enabled true 是否播放声音
sound.normal system 正常事件声音
sound.error alert 错误事件声音

完整字段见仓库 README 的 Settings reference。

典型用法

  1. 按上文命令安装插件,确认 DSH Desktop 与目标系统依赖已就绪。
  2. 打开 Settings → System Notifications,按需要勾选事件、选择样式与声音,必要时配置安静时段与点击聚焦。
  3. 在 DSH 中发起会长时间运行的任务;turn 完成、报错或出现批准/提问时,应收到对应 toast(及配置的声音)。
  4. 若启用交互式批准或提问,在通知上操作即可,无需先切回 IDE(部分 Ubuntu 流程在无 zenity 时会回退到 Chat UI)。
  5. 若希望模型在特定节点主动提醒,在插件设置中 opt-in send_desktop_notification 工具,并在对话中说明何时需要桌面 ping。

README 中 turn 完成示例字段(用于理解 detailed 等样式会展示什么):

kind=turnComplete
session=Refactor the settings page
project=D:\workspace\demo
summary="Finished the settings page and verified save / test / sound."
duration=1m 12s

适用场景与注意

适合:长时间在 DSH Desktop 上跑 agent、Goal 或 workflow,需要离开座位但仍要区分「完成 / 失败 / 要你输入 / 要你批准」的开发者;对通知隐私(路径、摘要是否露出)和夜间免打扰有要求的用户。

注意:

  • 插件以 当前 DSH 进程权限 运行,安装前请自行审阅 源码与 MIT 许可证。
  • 社区目录 SkillHub 为独立站点,与 DeepSeek / 幻方无官方从属关系;DSH 生态理念是「一切皆插件」,本文仅介绍社区贡献物。
  • macOS 与部分 Linux 桌面为 best-effort;Windows 自定义通知声须 PCM WAV。
  • 截断前的资料未列出完整 sound.customPath 等后续键,以仓库 README 为准。

结尾

dsh-system-notify 把 DSH 运行态里多种会话事件接到操作系统通知层,在可配置的隐私、声音与交互能力下,减少「脚本只 hook turn 结束」的缺口。目录页:https://www.skillhub.cn/plugins/JamesYasR/dsh-system-notify;仓库:https://github.com/JamesYasR/dsh-system-notify。

羽毛球分组比赛记分
小程序二维码

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

小夜