@hope_phenom/dsh-plugin-notify:DSH 每轮回答结束时的桌面通知

前言

用 DeepSeek Harness(DSH)跑长对话或子任务时,窗口在后台、你在写别的代码,往往要等切回界面才知道这一轮已经结束。以前有的做法依赖托盘辅助进程和 DSH_NOTIFY 标准输出协议;启动方式一变(dsh web、桌面应用、是否带托盘),通知链路就容易对不齐。

下面介绍 Hope-Phenom 维护的标准 DSH 插件 @hope_phenom/dsh-plugin-notify:在 Host 内订阅 session/event,每轮 turn/end 发一条桌面通知,不依赖托盘进程,也不要求单独的 stdout 协议。

这是什么

npm 包名 @hope_phenom/dsh-plugin-notify(仓库 Hope-Phenom/dsh-plugin-notify),分类为客户端插件。简介:每轮回答结束时发一条桌面通知;相当于旧版 DSH 托盘辅助(DshNotifyicon)里的通知能力,以独立插件重新实现。许可证 MIT,当前 package 版本 0.1.0。

核心功能

事件与触发

  • 在每次 turn/end 时通知;可选是否对 subagent / 子任务也通知。
  • 内置「安静」策略:可设最短轮次时长(毫秒),低于阈值不弹;对通知子进程有硬超时。

投递通道

默认 Auto:检测到 Python 则用内置 scripts/notify.py,否则用 scripts/notify.ps1,无需先手工配解释器。

也可强制 Python、PowerShell,或 Custom command(任意可执行文件 + 带占位符的参数模板,类似旧托盘辅助的外部命令)。

跨平台大致为:Windows 系统 balloon / WinRT toast;macOS osascript;Linux notify-send。内置 Python 脚本优先 notifypy,再按平台回退;PowerShell 脚本在 Windows / macOS / Linux 上分派到对应实现。

设置页

Settings → Notifications 分四组:何时通知、投递通道、通知文案、高级项(超时、设置文件路径、发送/失败计数、最近一次投递结果)。底部有 Send test、Restore defaults、Save;支持实时预览与重新检测通道。

文案与参数模板支持占位符,例如 {label}、{sessionTitle}、{turn}、{reason} / {reasonLabel}、{duration} / {durationMs}、{title} / {message} 等;参数模板按空格拆分,含空格需加引号,单独一个占位符会作为单个参数传入(便于多行正文)。

配置采用原子读写:设置文件损坏时会回退默认并给出说明,避免插件整体不可用。

安装与启用

前提:DSH 桌面应用或 dsh web 已在 desktop profile 下运行。

方式 A — npm(推荐)

  1. 侧栏 Plugins → Install → 输入包名 @hope_phenom/dsh-plugin-notify。
  2. 安装完成后点 Enable now(新 bundle 可通过 HMR 激活;若界面无反应可重启 DSH)。
  3. 在 Settings → Notifications 里配置。

命令行(需先退出 DSH 桌面应用,因其会锁定 profile 目录)示例:

& "C:\Users\<you>\AppData\Local\Programs\DeepSeek Harness\resources\runtime\cli\bin\dsh.cmd" `
  plugin --profile desktop add @hope_phenom/dsh-plugin-notify

方式 B / C — 本地目录

在 Plugins 页选择本地目录并填仓库绝对路径,或用同一 dsh.cmd 执行:

& "C:\Users\<you>\AppData\Local\Programs\DeepSeek Harness\resources\runtime\cli\bin\dsh.cmd" `
  plugin --profile desktop add "F:\WorkSpace\dsh-plugin-notify"

注意:路径必须是绝对路径;相对路径会按 shell 当前目录解析,裸目录名会被当作 npm 包名。替换同名已安装包时,需重启进程以加载新的 JS 模块。

卸载:Plugins 页操作,或:

dsh plugin --profile desktop remove @hope_phenom/dsh-plugin-notify

典型用法

安装并启用后,默认 Auto 通道在多数环境即可收到「轮次结束」通知。若要验证当前配置,在 Settings → Notifications 底部点 Send test。

若已有 Python 通知脚本,可切到 Python 通道并改参数模板,例如:

{script} {message} --title {title}

内置脚本接受 --title、--message、--event、--kind、--session、--turn、--reason、--duration-ms 等参数。

在不真正发送通知的前提下查看某平台会执行的命令(便于跨平台检查):

python scripts/notify.py --dry-run --platform macOS --title T --message M
python scripts/notify.py --dry-run --backend notify-send --title T --message M
pwsh -File scripts/notify.ps1 -DryRun -Platform Linux -Title T -Message M

适用场景与注意

适合:长时间跑 DSH、需要「这一轮答完」桌面提醒的开发者;希望统一 dsh web、桌面应用、有无托盘等多种启动方式下的通知行为。

注意:

  • 插件在 Host 内运行,通知子进程以 当前 DSH 进程权限 启动;安装前建议阅读仓库源码与 MIT 许可证。
  • desktop profile 仅能通过桌面应用自带的 dsh.cmd 管理(README 给出的 Windows 路径);Linux / macOS 用户若 CLI 路径不同,应以本机 DSH 安装文档为准,包名与 profile 名称不变。
  • DSH 生态强调「一切皆插件」;社区目录 skillhub.cn 为独立站点,与 DeepSeek / 幻方无官方从属关系。

结尾

@hope_phenom/dsh-plugin-notify 把「轮次结束 → 桌面通知」做成标准插件:订阅会话事件、自带 Python/PowerShell 投递与完整设置页,减少对托盘与 stdout 协议的依赖。

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

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

小夜