Skip to content
dsh.fish
Bundle

dsh-notify

Native Windows toast + system tray for DeepSeek Harness (dsh): the only dsh plugin with a tray icon. Pops the moment the agent stops running — finished / aborted / error / output limit / waiting for your choice / session closed — body labeled with workspace · session, so you can switch windows during long tasks and glance at the tray instead of watching a spinner. Pure host-side, zero dependencies, zero build.

Source
Pasumao
stars
4 stars
License
MIT
Updated
Updated 6 hours ago

Readme

# dsh-notify

![npm version](https://img.shields.io/npm/v/dsh-notify)
![License](https://img.shields.io/github/license/Pasumao/dsh-plugin-notify)
![AI Assisted](https://img.shields.io/badge/AI-Assisted-8A2BE2)

[**中文**](./README.md) | [English](./README.en.md)

**唯一带系统托盘的 Windows 原生通知插件**:agent 不再运行时(完成 / 停止 / 出错 / 等你选择 / 会话关闭)自动弹原生 Toast,正文标注「工作区 · 会话」,任务栏托盘常驻鲸鱼图标——跑长任务时切走窗口,瞄一眼托盘就知道跑完了没。

零运行时依赖、零构建,`dsh plugin add` 一条命令装完即用。

## 效果图

![dsh-notify 实机截图:Windows 原生 Toast 通知](docs/notify-toast.png)

> 真实 Windows Toast 实拍:正文标注「工作区 · 会话」,任务栏托盘鲸鱼图标常驻。

## 功能

- **Windows 原生 Toast 通知**:agent 不再运行时(完成 / 停止 / 出错 / 达到输出上限 / 等你选择 / 会话关闭)自动弹系统通知,正文标注「工作区 · 会话」,一眼知道哪个会话跑完了;
- **系统托盘常驻图标**:任务栏托盘鲸鱼图标常驻,右键菜单可唤起 dsh web 页面 / 退出后台(竞品均明确不做托盘,本插件是 dsh 生态唯一);
- **防刷屏**:`rootsOnly` 默认仅根会话通知,子代理不刷屏;`cooldownMs` 同会话同类型两次通知最小间隔;
- **零运行时依赖、零构建**,`dsh plugin add` 一条命令装完即用。

## 使用场景

- **跑长任务时切走窗口**:LLM 长生成 / 批处理跑着,切到别的应用,任务结束托盘弹通知,瞄一眼就知道结果;
- **挂机批量任务**:一晚上跑多轮任务,全部结束后收到 Toast,不用守着页面;
- **会话多开**:同时跑多个工作区会话,通知正文带「工作区 · 会话」标注,不会搞混;
- **子代理观察**:希望只关注根会话结果时保持 `rootsOnly: true` 默认值,需要观察子代理时再关掉。

## 安装

```powershell
dsh plugin --profile web add dsh-notify
```

GitHub 安装:`dsh plugin --profile web add github:Pasumao/dsh-plugin-notify`

源码安装(本地开发 / 调试):

```bash
git clone https://github.com/Pasumao/dsh-plugin-notify.git
cd dsh-plugin-notify
npm install
# 以 link: 方式挂载进 profile(包名 dsh-notify)
```

装完重启 `dsh web`,任务栏出现鲸鱼图标即生效。

> 兼容性:Windows 10/11 · Node ≥ 22.5 · 实测于 DSH `0.1.1-rc.2`。

## 配置

在 profile 的 `cordis.patch.yml` 按 id `dsh-plugin-notify` 覆盖 config。常用项:

| key | 默认 | 说明 |
|---|---|---|
| `cooldownMs` | `10000` | 同会话同类型两次通知的最小间隔(毫秒) |
| `rootsOnly` | `true` | 仅根会话通知,子代理不刷屏 |
| `tray` | `true` | 托盘图标开关 |
| `titlePrefix` | `'dsh'` | 通知标题前缀 |

## 测试

```powershell
node scripts/test-harness.mjs   # 弹三条真实 Toast 自测
```

## 常见问题

- **收不到通知?** 检查 Windows「设置 → 系统 → 通知」是否允许 PowerShell 显示通知,
  以及是否处于专注助手 / 勿扰时段;
- **只想根会话通知?** 保持默认 `rootsOnly: true`;需要观察子代理时再改为 `false`;
- **通知太频繁?** 调大 `cooldownMs`(默认 10000ms)即可;
- **托盘图标不见了?** 重启 dsh web;仍无则检查 `tray: true` 配置项是否被覆盖。

## 相关插件

本插件属于 **Pasumao 的 dsh 插件生态**,同系列已发布插件可搭配使用:

| 插件(npm) | GitHub | 说明 |
|---|---|---|
| [dsh-plugin-choice-refresh](https://www.npmjs.com/package/dsh-plugin-choice-refresh) | [GitHub 仓库](https://github.com/Pasumao/dsh-plugin-choice-refresh) | 选择增强:重新生成选项 / 更多选项 |
| [dsh-plugin-dev-kb](https://www.npmjs.com/package/dsh-plugin-dev-kb) | [GitHub 仓库](https://github.com/Pasumao/dsh-plugin-dev-kb) | 插件开发知识库(官方文档完整镜像 + 技能) |
| [dsh-plugin-image-tools](https://www.npmjs.com/package/dsh-plugin-image-tools) | [GitHub 仓库](https://github.com/Pasumao/dsh-plugin-image-tools) | 图片选择卡 + 回复内嵌图片 + 盲模型收图 |
| [dsh-plugin-table-zoom](https://www.npmjs.com/package/dsh-plugin-table-zoom) | [GitHub 仓库](https://github.com/Pasumao/dsh-plugin-table-zoom) | 聊天长表格浮窗查看 + 一键复制 Markdown |
| [dsh-plugin-windows-guard](https://www.npmjs.com/package/dsh-plugin-windows-guard) | [GitHub 仓库](https://github.com/Pasumao/dsh-plugin-windows-guard) | Windows 环境防坑:守则技能 + 乱码检测 / 危险写拦截 / 编码诊断修复 |
| [dsh-plugin-workbench](https://www.npmjs.com/package/dsh-plugin-workbench) | [GitHub 仓库](https://github.com/Pasumao/dsh-plugin-workbench) | VS Code 风格文件浏览器 + 可编辑预览 |

> 本系列其余插件见 [Pasumao · dsh 插件](https://github.com/Pasumao);觉得好用欢迎到 GitHub 点 ⭐。

## AI 生成声明

代码与文档由 AI 辅助生成(DeepSeek Harness),均经人工审查与实机验证
(`scripts/test-harness.mjs` 弹真实 Toast 自测)。

## License

[MIT](./LICENSE)

Install

dsh plugin --profile web add github:Pasumao/dsh-plugin-notify

Profile: web

  • This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.
Source