前言¶
DeepSeek Harness(DSH)以 Web UI 承载对话与 agent 任务。任务在后台跑完时,界面没有系统级提醒;如果你切到别的窗口等结果,很容易错过一轮任务的结束,或在计划模式下漏掉「等待你输入 / 审批」的节点。社区插件 dsh-plugin-task-notify(维护者 Favio8,分类:客户端)针对这一点:在会话一轮任务结束、出错,或进入等待交互时,通过宿主进程弹出置顶桌面卡片,并在页面内显示 toast,点击可精确跳转到对应会话。
这是什么¶
dsh-plugin-task-notify 是 DSH 的 Cordis 插件,适配 DSH 0.2.x(README 写明已在 0.2.1-rc.2 桌面版验证)。当前 package 版本为 0.10.0,许可证 MIT。
它解决的核心问题是:任务状态变化时主动提醒你,且不依赖浏览器页签是否在前台。桌面侧由 DSH 宿主(Node 常驻进程)监听 agent 与会话事件;卡片为自绘置顶窗口,不经过 Windows 通知管道,系统通知总开关关闭时仍可显示(与系统 Toast 的关键区别)。非 Windows 平台目前仅有应用内 toast。
目录页:SkillHub - dsh-plugin-task-notify
源码与说明:GitHub - Favio8/dsh-plugin-task-notify
核心功能¶
下面按通道与检测逻辑说明已文档化的能力。
桌面通知(Windows)¶
- 由 Host 半触发:PowerShell + WinForms 自绘无边框置顶卡片;默认开启。
- 0.10.0 起采用常驻渲染进程:插件启动时预创建并预热卡片进程,后续通知写
command.json,渲染进程约 20ms 轮询消费;冷启动脚本保留为兜底。README 给出同一测量脚本下常驻模式 median 约 70ms、冷启动约 1.7s 量级。 - 0.9.x 起卡片为 DPI-aware(Per-Monitor V2):渐变表面、语义图标(成功 / 等待 / 错误)、两行省略、淡入淡出、悬停暂停自动消失、Win11 DWM 圆角;不抢焦点,同一时刻只保留一张卡片。
- 点击卡片经 Host HTTP/SSE 桥通知页面执行
uiWorkspace.openSession(sessionId),精确打开对应会话;右上角可关闭。 - 卡片样式可在设置页配置:主题(深/浅)、强调色(绿/蓝/橙/紫)、四角位置、显示时长(4/6/8/10 秒)、字号与字体(微软雅黑等)。配置持久化在
~/.dsh/plugins/task-notify.json,配色对齐 DSH 设计令牌。
应用内 toast¶
- 右下角浮层(
shell.overlay槽位),约 6 秒自动消失,可手动关闭;点击通过uiWorkspace.openSession跳转会话。 - Client 半订阅
sessions.list快照与uiSession.sessionStatus.pendingInteraction(DSH 0.2.x 等待标记位置),配合页面内提示。
提示音与出错提醒¶
- 设置页可开关提示音,选择音色(苹果三全音 / 叮 / 双响 / 系统提示音),音量滑杆 0–100(拖动结束才写入宿主);宿主合成 WAV,无需额外音频资源。
- Host 监听
agent/error,任务失败时可弹红色错误卡片(独立防抖),可在设置中关闭。
等待输入与审批¶
- 计划模式下
ask_user_question或exit_plan_mode等审批(approval/request)也会触发卡片、提示音与 toast。 - 过滤子代理会话,避免重复提醒。
完成检测(双通道)¶
- Host:
agent/status从 running→idle 视为一轮完成,2 秒防抖。 - Client:订阅
sessions.list做页面内完成翻转检测。
设置与预览¶
- 设置 → General 有「任务完成通知」快速行(桌面 / 应用内 / 提示音 + 测试)。
- 独立设置页「任务完成通知」含通道开关、卡片样式、字体、提示音与音量;0.9.0 起顶部有与真实卡片同源的 HTML 实时预览;「测试通知」仍触发真实桌面卡片。
安装与启用¶
插件以当前 dsh 进程权限运行,安装前请自行查看源码与 MIT 许可证。DSH 生态主张「一切皆插件」;SkillHub 为社区目录,与 DeepSeek / 幻方无官方从属关系。
推荐用官方插件管理器,将本地构建产物目录以 link: 挂载(README 原文,请将路径替换为本机绝对路径):
dsh plugin --profile desktop add "link:<本插件文件夹绝对路径>"
CLI Web 版常用 web profile:
dsh plugin --profile web add "link:<本插件文件夹绝对路径>"
手动等价步骤:在对应 profile 的 package.json 的 dependencies 添加 "dsh-plugin-task-notify": "link:<路径>",并在 dsh.profile.bundles 追加 "dsh-plugin-task-notify",然后在 profile 目录执行 pnpm install。刷新页面后,Host 半变更需重启 dsh 进程。
开发者本地构建(Node >=22.19.0):
pnpm install
pnpm typecheck
pnpm build
pnpm smoke
产物在 lib/;renderer.ps1 须带 UTF-8 BOM 供 Windows PowerShell 5.1 使用。
典型用法¶
- 打开 设置 → General →「任务完成通知」:调整主题、强调色、字号、字体时,顶部预览即时更新。
- 确认 桌面通知(Windows)、应用内 toast、提示音 开关;点 测试:任一通道开启即可验证(桌面开则弹置顶卡片,提示音开则播放,应用内开则出 toast)。
- 正常对话:每轮任务完成后收到提醒;需要你做计划审批或回答问题时同样会提醒。点击桌面卡片或 toast 跳转到对应会话;悬停卡片可暂停自动消失。
验收长文本或三种变体时,Host 提供 POST /task-notify/test,可选 body:{ title, body, variant, sessionId }(需插件已挂载且知悉本机 webServer 端口)。
适用场景与注意¶
适合:在 Windows 桌面版 DSH 上长时间跑 agent、常切到其他窗口的开发者;需要在任务结束或「等你点一下」时立刻知道的场景。
务必知晓:
- 桌面通知仅支持 Windows;macOS / Linux 目前只有应用内 toast。
- Host 运行在 Electron Node/utility 进程,无法直接创建 Electron HTML 窗口;当前为原生 WinForms 卡片,非浏览器
NotificationAPI。 - 常驻渲染进程约 110MB 基线内存(README 记载),插件停止或更新时会清理渲染进程与临时目录。
- 配置勿直接改合成产物
cordis.yml,覆盖应写入cordis.patch.yml。
结尾¶
dsh-plugin-task-notify 把「任务跑完了」和「在等你」从被动刷页面变成可配置的桌面卡片、提示音与应用内 toast,并支持点击回到精确会话。若你使用 DSH 0.2.x 桌面环境,可按上文 link: 方式挂载后,在设置页一键测试。
- 目录页:https://www.skillhub.cn/plugins/Favio8/dsh-plugin-task-notify
- GitHub:https://github.com/Favio8/dsh-plugin-task-notify