2h0n/dsh-web-notification ↗★ 1
dsh-web-notification
System-level Web Notification when the model finishes a reply in the DeepSeek Harness web GUI
安装
$
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:2h0n/dsh-web-notification说明文档
阅读完整 README ↗dsh-web-notification
English | 简体中文
大模型在 DeepSeek Harness Web UI 中完成一次回复时,弹出一条系统级 Web Notification(页面聚焦与否都会弹)。
功能特性
- 每轮回复完成 → 弹系统通知:标题为
🐳 Model Replied,正文为该轮用户消息- 用户消息不可用时回退到会话标题
- 启动时 + 首次用户手势时自动请求通知权限(兼容 Safari 的手势要求)
- 同一轮回复去重,不会重复弹
- 无 UI 侵入:不注入任何界面元素
截图

工作原理
- 检测:客户端监听所有已打开会话的 snapshot
turnEnds(Map),turn 数增长 = 该会话一轮回复完成——多个会话并行回复时各自独立触发通知;同时从chat节点取触发本轮回复的用户消息文本。 - 显示:每条通知唯一 tag(
dsh-reply-done--)+renotify: true。相同 tag 是"替换"语义,上一条还显示时替换通知在 macOS/Chrome 上不会重新弹横幅。 - 打包:
build.mjs把src/client/index.js包进window.__ModuleLoader__.load({ id, factory })握手外壳,由浏览器端模块表执行。
安装(用户)
前置要求:已安装 dsh(npx @deepseek-ai/dsh)并初始化过 web profile。
# 1. 安装组合包
npx @deepseek-ai/dsh plugin --profile web add https://github.com/2h0n/dsh-web-notification/archive/refs/tags/v0.1.0.tar.gz
# 2. 重启
npx @deepseek-ai/dsh web
验证:浏览器控制台无 dsh-web-notification 报错;同一会话连发两条消息,两条回复各弹一条通知;再次重启插件仍在。
npx @deepseek-ai/dsh plugin --profile web add把参数转发给 profile 目录内的 pnpm,并因包声明了dsh.bundle自动把它追加进dsh.profile.bundles;若绕过它直接pnpm add,则需手动补上 bundles 条目。- 若安装报
ERR_PNPM_TARBALL_INTEGRITY(profile 里其他移动分支依赖的锁文件校验和过期),先执行pnpm install --update-checksums再重试。
开发(开发者)
环境要求
- Node.js 22.19+ 或 24+(与 DeepSeek Harness 官方支持一致;构建零依赖,无需安装任何 npm 包)
目录结构
dsh-web-notification/
├── package.json # manifest(元数据清单):exports + dsh.bundle.patch + dsh.client
├── cordis.patch.yml # patch 条目(插件行),由 dsh.bundle.patch 引用
├── dsh.plugin.json # 插件清单
├── build.mjs # 构建脚本(零依赖)
├── src/
│ ├── index.js # 插件入口(Node 端):空入口(无宿主逻辑)
│ └── client/index.js # 客户端插件(浏览器端):全部逻辑(唯一需要改的文件)
└── lib/ # 构建产物(勿手改,由 build.mjs 生成)
├── index.js
└── client.js # __ModuleLoader__ 握手格式的浏览器 bundle