答完提醒 · dsh-answer-notify
DeepSeek Harness(DSH)Web / Desktop 的一个小插件:你切走或最小化窗口后,一轮回答结束时会收到一条系统通知。点通知直接回到对应会话。零配置、零依赖。
功能
- 回答结束且窗口不在前台时,发送桌面通知:「回答完成 · <会话标题>」。
- 点击通知 → 聚焦窗口并打开该会话。
- 窗口在前台且聚焦时保持安静,不打扰。
- 子代理(subagent)结束不单独通知,由父会话通知一次。
- 设置里有总开关和一键「测试」。
安装
桌面版(DeepSeek Harness App)
打开侧栏 插件 → 添加插件。
输入下面的 Git 安装地址(也接受 release 的
.tar.gz链接,或下载 zip 后用「本地目录」):github:lllcccwww/dsh-answer-notify#v1.0.0按提示安装,点 立即启用,然后完全退出并重新打开应用。
也可以直接下载 https://github.com/lllcccwww/dsh-answer-notify/archive/refs/tags/v1.0.0.tar.gz,在「添加插件」里粘贴这个地址。
命令行(Web profile)
dsh plugin --profile web add github:lllcccwww/dsh-answer-notify#v1.0.0
桌面端的 desktop profile 由 Electron 应用管理,请用上面的桌面步骤安装,不要用 CLI 改它。
npm 包
dsh-answer-notify目前尚未发布(npmjs 暂时无法访问),发布后可直接用包名安装,上面的 Git 写法仍然可用。
使用
设置 → 通用 会出现「回答完成通知」一行:
- 开关:即时生效;状态存在
localStorage(键dsh.turn-notify.enabled),默认开启。 - 测试:立刻弹一条通知,用来确认系统通知权限和展示效果。测试会绕过「窗口在后台」的判断,所以窗口在前台时也能弹。
平时不需要任何操作:发完消息、切到别的窗口或最小化,回答结束就会收到通知。
点击通知
点击通知会把窗口从最小化恢复、置前,并切换到对应会话。
最小化时 Electron 的 window.focus() 会直接返回(窗口不可见时 NativeWindowViews::Focus() 不做任何事),页面也没有 restore() 权限,所以这一步由 Host 半边完成:点击后页面向 POST /turn-notify/focus 发一个同源请求,Host 启动 focus-window.ps1,用 ShowWindow(SW_RESTORE) 恢复窗口、用一个 Alt 轻敲获得前台权限,再 SetForegroundWindow。
- Windows:由上面的脚本处理(恢复 + 置前)。
- macOS / Linux:交给系统与窗口管理器(点击通知通常已会激活应用),Host 路由在这些平台上不做额外动作。
兼容性
- 实测运行于 DSH
0.2.1-rc.5(桌面端)。 - 包内声明
engines.dsh: ">=0.2.1-rc.5 <0.3.0-0";安装器会在安装前检查,不满足时报incompatible-version并拒绝安装,不会下载任何东西。 - 如果你的 DSH 版本不在范围内但想试,可在 profile 的
compatibility.json里加版本豁免(插件管理器 /dsh plugin allow-version),风险自负。
卸载
插件页里对 dsh-answer-notify 选择卸载,然后重启应用。卸载不会清除 localStorage 里的开关状态。
限制
- 通知由页面内的浏览器
NotificationAPI 发出,因此页面必须还活着:最小化、隐藏到托盘都可以;退出应用则不会通知。 - Windows 的 Toast 标签上限为 64 字符,Chromium 会先把 tag 拼成
n#<来源>#<tag>再交给系统。因此 tag 使用会话 ID 的短哈希而不是原始 UUID:超长 tag 会被系统静默丢弃,JS 端不报错。 - 通知的图标、声音、是否显示横幅由操作系统决定。
开发
node --check client.js # 语法
node test/client.test.mjs # 用假的 ctx / DOM / Notification 跑状态机
插件结构:
index.js:Host 半边,注册POST /turn-notify/focus并在点击时启动focus-window.ps1。client.js:浏览器半边,注册设置行、监听api-session/status、发出通知并处理点击。focus-window.ps1:Windows 上恢复并置前主窗口的脚本(只在 win32 上启动)。cordis.patch.yml:向 profile 插入一行dsh-answer-notify。locale/*.json:插件在插件列表里的标题与描述。
License: MIT
No comments yet. Be the first to write one.