Tenold-a
dsh-notice
为 DeepSeek Harness(dsh)准备的 Windows 桌面通知组件:在对话完成、等待你授权、需要你回答这三个时刻,于系统托盘弹出气泡提醒,确保你不会错过任何需要操作的瞬间。
- Stars
- 0
- Language
- PowerShell
- Created
- Aug 15, 2026
- Updated
- Aug 16, 2026
Introduction
dsh-notice
为 DeepSeek Harness(dsh)准备的 Windows 桌面通知组件:在对话完成、等待你授权、需要你回答这三个时刻,于系统托盘弹出气泡提醒,确保你不会错过任何需要操作的瞬间。
整个项目由少量纯脚本构成,不引入任何第三方包,也不需要编译或额外的运行环境——拿到代码就能直接跑起来。设计上刻意保持小巧:一个插件文件、一个托盘脚本、两个图标,没有安装包、没有后台服务、没有配置文件。
特性
- 轻巧无依赖:仅使用系统自带的 PowerShell 与 Node 内置模块,零 npm 依赖;
- 拿到即用:一条命令完成插件安装、开机自启与托盘启动;
- 三种提醒:会话完成 / 等待授权 / 等待回答,各自可独立开关;
- 托盘常驻:图标常驻系统托盘,右键即可测试通知、切换提示模式(正常 / 静音 / 勿扰)、开机自启、退出;
- 只提醒该提醒的:仅对顶层会话触发,子代理与被用户中断的回合自动忽略。
环境要求
- Windows 10 / 11;
- 已安装 DeepSeek Harness,并且至少运行过一次
dsh web(用于生成 profile); - 无需额外软件,系统自带的 PowerShell 即可。
安装流程
第一步:获取代码
git clone <仓库地址>
cd dsh-notice
也可以下载 ZIP 后解压,进入目录即可。
第二步:一键配置
powershell -ExecutionPolicy Bypass -File .\setup.ps1
这一步会自动完成三件事:
- 把插件
dsh-notice.mjs与兜底脚本show-toast.ps1复制到~/.dsh/profiles/web/plugins/,并在该 profile 的cordis.patch.yml中注册; - 把托盘程序写入开机启动(
HKCU\...\CurrentVersion\Run); - 立刻启动托盘程序。
配置成功后,任务栏右下角会出现一个蓝色铃铛图标,并弹出一条「通知服务已启动」的气泡。
第三步:重启 dsh
taskkill /F /IM node.exe # 结束旧的 dsh 进程
dsh web # 重新启动
回到浏览器刷新页面即可。此后每当对话完成、等待授权或等待回答时,右下角都会弹出通知。
注意:请保留本仓库目录。托盘程序是从这里启动的,删除目录会导致托盘失效。
手动安装(可选)
不习惯一键脚本的话,也可以分步进行:
- 安装插件:在仓库目录执行
.\install.ps1; - 启动托盘:双击
start-tray.vbs; - 开机自启:右键托盘图标 → 勾选「开机启动」。
使用非 web profile 时,给脚本加 -Profile <名字>。
工作原理
通知必须出现在你的交互桌面,而 dsh 沙箱内的进程无法可靠地把窗口投到桌面,因此拆成两段:
[dsh 宿主进程] ──写 JSON 触发文件──> [dsh-notice-tray(托盘常驻)] ──> 系统托盘气泡
dsh-notice.mjs:宿主端插件,监听会话事件并判断该不该提醒,把通知内容写成%APPDATA%\dsh-notice\triggers\下的一个 JSON 文件;dsh-notice-tray.ps1:托盘常驻程序,每秒轮询触发目录,发现新文件就弹出气泡;show-toast.ps1:兜底方案,托盘未运行时由插件直接调用。
插件监听的三个事件:
| 场景 | 会话事件 | 默认提示 |
|---|---|---|
| 对话完成 | turn/end | 会话已完成(有标题时拼成「标题 · 会话已完成」) |
| 等待授权 | approval/asked | 需要你允许执行操作(工具名) |
| 等待回答 | tool/call(ask_user_question) | 需要你回答一个问题 |
配置
插件配置位于 profile 的 cordis.patch.yml:
| 键 | 默认值 | 说明 |
|---|---|---|
enabled | true | 总开关 |
onlyTopLevel | true | 只提示顶层会话,跳过子代理 / fork |
title | "DeepSeek Harness" | 通知标题 |
cooldownMs | 0 | 两次提示的最小间隔 |
triggerDir | %APPDATA%\dsh-notice\triggers | 触发文件目录(与托盘程序一致) |
notifyComplete | true | 是否在对话完成时提醒 |
completeMessage | "会话已完成" | 完成提醒的正文 |
includeTitle | true | 完成提醒是否拼接会话标题 |
skipReasons | ["interrupted", "aborted"] | 视为「非完成」的结束原因 |
notifyApproval | true | 是否在等待授权时提醒 |
approvalMessage | "需要你允许执行操作" | 授权提醒的正文 |
notifyQuestion | true | 是否在等待回答时提醒 |
questionMessage | "需要你回答一个问题" | 提问提醒的正文 |
托盘菜单
-
测试通知:立即弹一条测试气泡,随当前提示模式联动;
-
提示模式:三选一的全局设置——
- 正常:气泡 + 提示音(蓝色铃铛);
- 静音:仅气泡、无提示音(灰色铃铛);
- 勿扰:不弹气泡、不响(灰色铃铛 + 红斜杠)。
当前模式会被记住,重启托盘程序后依然生效。
-
显示时长:气泡自动消失的时间,可选 1 / 3 / 5 / 10 秒(默认 5 秒),设置会被记住;
-
开机启动:勾选后随 Windows 登录自动运行;
-
退出:关闭托盘程序。
卸载
.\uninstall.ps1
托盘程序:右键图标 → 「退出」;若之前勾选了「开机启动」,先取消勾选再退出。
常见问题
- 装完没收到通知? 先确认托盘图标在(Win11 可能收进任务栏的
^里),并确认已重启dsh web。 - 想只保留某类提醒? 在
cordis.patch.yml里把对应的notifyComplete/notifyApproval/notifyQuestion设为false。 - 想改图标样式? 编辑
make-icon.ps1顶部的颜色值后重新运行生成。 - 想切换提示模式? 右键托盘 → 「提示模式」里选「正常 / 静音 / 勿扰」。