dsh-desktop-toast:DSH 任务中断与完成时的桌面通知

前言

用 DeepSeek Harness(DSH)跑长任务时,模型常会停下来等你审批、回答问题或确认计划;任务跑完也可能在你切到别的窗口时已经结束。若一直盯着 DSH 窗口,体验并不好。系统自带的桌面通知可以在不打断当前工作的前提下提醒你「该回 DSH 看一眼了」。

dsh-desktop-toast 是社区维护者 hhaosheng 发布的 DSH 客户端类插件:在任务需要人工介入或正常完成时,通过操作系统原生通知弹一条 toast。它由早期的 dsh-desktop-notify 原型演进而来,现以标准 bundle 形式接入官方插件管理器,安装与卸载不再依赖手工往 profile 里拷文件。

这是什么

dsh-desktop-toast(npm 包名同插件 id)在宿主侧监听 DSH 会话事件,按规则调用各平台的系统通知 API。当前版本为 0.1.2,MIT 许可证,要求 Node.js >= 20。插件归属分类为「客户端」,在 SkillHub 插件目录 与 GitHub 仓库 均可查阅说明。

提示时机

下面介绍插件在哪些事件下会弹通知,以及刻意不提示的情况。

会话事件 通知 说明
tool/call 且工具为 ask_user_question / exit_plan_mode 任务中断 · 需要你处理 模型在等你回答或确认计划
approval/asked 任务中断 · 需要你处理 有操作在等你授权
turn/end 且 reason.kind === 'completed' 任务完成
turn/end 且 reason.kind 为 blocked / error / max-tokens 任务中断 · 需要你处理 需要你看一眼才能继续
turn/end 且 reason.kind === 'aborted' 不提示 用户自行取消

子会话(subagent)产生的事件一律忽略,避免一次任务连续弹出多条通知。

安装与启用

安装方式与其它 DSH 插件相同,需指定 profile(示例为 desktop)。任选其一即可。

# CLI
dsh plugin --profile desktop add dsh-desktop-toast

本地开发时可直接指向插件目录:

dsh plugin --profile desktop add D:\code\dsh-notify\dsh-desktop-toast

也可以在 DSH 桌面端侧边栏打开「插件」,搜索 dsh-desktop-toast 后安装。装完立即生效,无需重启 DSH。

不推荐手工把 cordis.patch.yml 里的 insert 行抄进 %USERPROFILE%\.dsh\profiles\<profile>\cordis.patch.yml;若必须如此操作,注意 id 保持唯一。

插件在 DSH 宿主进程内加载,与当前 DSH 进程权限一致。安装前建议浏览仓库源码并确认 MIT 许可证是否满足你的合规要求。

配置

DSH 插件设置页不会为本插件自动生成表单;配置通过在 profile 的 cordis.patch.yml 里按 bundle 的 id 覆盖 config。修改后需重启 DSH 生效。

示例(关闭完成通知、调整去重窗口):

- id: desktop-toast
  name: dsh-desktop-toast
  config:
    onDone: false
    dedupeWindowMs: 5000
键 默认值 作用
onInterrupt true 是否发「任务中断」通知
onDone true 是否发「任务完成」通知
silent false 静音弹出(Windows 上不响提示音)
dedupeWindowMs 3000 同一种通知在该时间窗口内只弹一次(毫秒,0 关闭去重)
bootQuietMs 3000 插件加载后这段时间内的「任务完成」不弹;「中断」不受影响
interruptText 任务中断 · 需要你处理 中断通知正文
doneText 任务完成 完成通知正文
appId com.deepseek.dsh Windows 通知 AUMID,默认复用 DSH 应用身份

若只希望在中断时被打扰,可将 onDone 设为 false;若启动阶段不希望刷「任务完成」,可增大 bootQuietMs。

平台与实现要点

  • Windows(主要目标):通过 PowerShell 5.1 与 WinRT ToastNotificationManager 弹出通知,通知中心里显示为 DeepSeek Harness。需打开系统通知总开关,且未单独关闭 DSH 的通知。正文在 Windows 上仅一行;标题留空,由系统显示应用名。
  • macOS:使用 osascript 的 display notification,尽力而为,弹窗归属常为「脚本编辑器」。
  • Linux:依赖 notify-send,系统需安装 libnotify。

每次通知在 Windows 上会短暂拉起一个 PowerShell 进程(约几百毫秒),实现上已 unref(),不拖住宿主退出。插件不支持点击通知跳回对应会话。事件仅作用于宿主侧会话;纯 client 侧(例如浏览器直连)场景没有系统通知。

从 dsh-desktop-notify 迁移

若 profile 里仍挂着旧原型 dsh-desktop-notify,与 dsh-desktop-toast 同时启用会弹两遍通知,应先拆旧再装新:

  1. 删除 profile 下 node_modules\dsh-desktop-notify 目录;
  2. 删除 profile cordis.patch.yml 中 id: desktop-notify 整块(含其前面的 - insert: 行);
  3. 按上文「安装与启用」安装 dsh-desktop-toast。

适用场景与注意

适合经常在 DSH 里跑 agent、且会离开窗口做别事的用户:审批、问答、计划确认和异常结束时有中断提醒,正常跑完有完成提醒,自行 aborted 则保持安静。

社区插件目录 SkillHub 与 DeepSeek、幻方无官方从属关系;DSH 生态强调「一切皆插件」,本插件是其中一条可选能力,并非 DSH 内置功能。

源码与变更记录见 GitHub:hhaosheng/dsh-desktop-toast;目录页 SkillHub:dsh-desktop-toast。

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

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

小夜