polunzh/dsh-task-notifier:任务完成时响铃并通知的任务通知台

前言

在 DeepSeek Harness(DSH)里跑长任务,很容易切去干别的,回来才发现早就跑完了;更常见的是 Agent 正在等你提问回复、计划审阅或审批,你却一时想不起来是哪个会话被挡住了。下面介绍的插件「任务通知台」polunzh/dsh-task-notifier 解决的就是这件事:会话一轮结束时合成提示音、发浏览器或系统通知,并提供侧边栏三列看板,便于筛选待回复、运行中与已完成未读的任务。

定位

  • 类型:DSH Web 插件,包名 @polunzh/dsh-task-notifier,当前版本 1.2.0。
  • 维护者:polunzh;GitHub 星标 0;许可证 MIT。
  • 依赖:engines.dsh 要求 >= 0.2.0-rc.2,Node >= 20。
  • 解决什么:把「任务完成」和「正在等你处理」这两类事件推到你能看到的位置,而不是让你自己翻会话列表。

核心功能

会话结束提示音

任意会话一轮结束时,浏览器端合成一段上行提示音(G5→C6),不需要准备音频素材。面板里提供「试听提示音」按钮,可以直接听效果。

通知双通道

通知分两条通道发出,靠心跳判重避免双发:

  1. 页面开着且已授权浏览器通知 → 走浏览器 Notification,点击通知跳回对应会话。
  2. 页面关着或未授权 → 宿主在 macOS 上用 osascript 弹系统通知。

待回复状态

当 Agent 向你提问、等待计划审阅或等待审批时,侧边栏图标亮起琥珀色脉冲点,面板「待回复」列置顶提示,点开直接回到那个在等你决定的会话。

三列看板面板

侧边栏图标(带未读角标)打开任务面板,一屏同时展示三列:

  • 待回复:在等你输入的会话。
  • 运行中:当前正在执行的任务。
  • 已完成未读:跑完但你还没点开看过的任务。

顶部 chip 可以单独筛选某一列,底部「更早完成」可展开历史记录。面板支持按标题搜索、全部标为已读、试听提示音、试发系统通知。

未读不丢

状态写在 $DSH_HOME/storages/dsh-task-notifier/state.json,重启后仍在。目录权限 0700,文件权限 0600。

中英双语

面板与系统通知文案跟随宿主语言(zh / en)。

安装与启用

四种安装方式,按使用场景选择。

方式一:开放插件市场(推荐,可在市场点赞)

在 DSH 里进入「插件 → 实验性插件」,打开「自定义插件市场」,再进「发现 → 添加索引源」,粘贴:

https://dshopen.org/index.json

之后搜索「任务通知台 / Task Notifier」安装。该市场分类为「工作流与协作」,插件已通过源码级验证。市场页见 dshopen 插件页。

方式二:自建索引安装(可自动检测更新)

同样在「发现 → 添加索引源」处粘贴:

https://dsh.127.dev/index.json

有新版本时列表会显示可更新,卸载在「已安装」里完成。索引每 6 小时随 npm 刷新,源码见 dsh-plugins-index。

方式三:npm 安装

dsh plugin --profile desktop add @polunzh/dsh-task-notifier

方式四:本地目录安装(开发调试)

在 DSH 里使用 plugin_manager 的 install_bundle,target 填本仓库的绝对路径。

配置

配置项全部可以省略,写在 profile 的 cordis.patch.yml 里即可:

- insert:
    - id: polunzh-task-notifier
      name: '@polunzh/dsh-task-notifier'
      config:
        osNotify: auto            # auto | always | off
        sound: true               # 浏览器端提示音开关
        osSound: Glass            # macOS 系统提示音名
        osTitle: DeepSeek Harness # 系统通知标题
字段 默认 说明
osNotify auto auto=页面在线交给浏览器通知、离线兜底系统通知;always=恒发系统通知;off=不发
sound true 浏览器合成提示音
osSound Glass macOS 自带提示音名(Glass / Ping / Pop 等)
osTitle DeepSeek Harness 系统通知标题

典型用法

把面板和通知组合起来,完整流程如下:

  1. 在 DSH 里启动一个长任务,切去干别的事。
  2. 任务本轮结束时听到提示音,并收到浏览器通知(页面开着)或 macOS 系统通知(页面关着)。
  3. 打开侧边栏任务面板,先看「待回复」列有没有被挡住的会话,再用顶部 chip 切到「已完成未读」列查看结果。
  4. 点通知或面板里的条目,直接跳回对应会话继续下一步。

如果想让系统通知更醒目,把 osNotify 设为 always,再用 osSound 换一种提示音名;如果完全不想被打扰,osNotify: off 并 sound: false。

适用场景与注意

适用场景:

  • 常在 DSH 里跑长任务,希望第一时间知道完成。
  • 会话被 Agent 卡等回复、审阅、审批,需要快速定位。
  • 使用 Web UI 跨平台访问,且主要在 macOS 上收到系统通知。

注意事项:

  • 插件以当前 dsh 进程的权限运行,启用前应检查源码与 MIT 许可证,尤其是从第三方索引源安装时。
  • 系统通知目前仅支持 macOS(osascript),其他平台只发浏览器通知。
  • 浏览器通知需要用户手动点击授权,插件不会在后台自动请求。
  • 隐私方面:插件没有出站请求、遥测或远程资源,会话标题只写本机;不读取 ~/.dsh/.credentials.yaml、.env、keychain 和 SSH key;package.json 中没有 preinstall/postinstall/prepare 等安装期脚本。
  • 从 1.1.1 起,浏览器模块 id 改为包名 @polunzh/dsh-task-notifier,patch row id 改为 polunzh-task-notifier。如果你之前用 link: 或 1.1.0 及更早版本装过,请只保留一份:先在「插件 → 已安装」卸载旧的,再装新版本。

结尾

任务通知台不改变 DSH 的任务执行逻辑,只是把「完成」和「待回复」这两类容易错过的事件推到你能看到的地方。如果你常被长任务和被挡住的会话中断节奏,值得装一个试试。

目录页:skillhub 目录页;开源仓库:GitHub: polunzh/dsh-task-notifier。

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

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

小夜