DeepSeek Harness 插件

dsh-web-notification

System-level Web Notification when the model finishes a reply in the DeepSeek Harness web GUI(英文原文)

跳到安装方式

来源信息

GitHub 仓库
2h0n/dsh-web-notification
最近更新
2026年8月14日
分类
通知与集成
GitHub stars
2
载体类型
plugin
目录证据
上游声明已找到 dsh.bundle
证据路径
package.json#dsh.bundle
核对版本
0.1.0-rc.8
上游核对日期
2026-08-20

该证据由上游目录提供。本站没有安装、运行或安全审核这个插件。

安装

默认先复制一段 Prompt,让 Agent 读 GitHub 仓库和源码;需要自己装时再切到命令。

复制这段 Prompt,发给 DSH、Codex 或其他 Agent,让它先读 GitHub 仓库和源码。

请先不要安装或执行任何命令。阅读这个插件的 GitHub 仓库、README 和关键源码,然后用清楚、直接的方式回答以下问题,帮助我判断它是否适合我的需求:

1. 这个插件是什么,解决什么问题;
2. 适合哪些用户和典型使用场景;
3. 安装后如何使用,并给出一个最小使用示例;
4. 有哪些已知限制,以及隐私、安全、兼容性或维护风险;
5. 给出“推荐 / 有条件推荐 / 不推荐”的明确建议和理由。

请区分仓库明确说明、根据源码推断和未知信息。证据不足时请明确说明,不要猜测或照抄 README。

GitHub:https://github.com/2h0n/dsh-web-notification
插件名:dsh-web-notification
作者:2h0n

检查来源文件

安装前先看这个插件目录里的 README 和其他文件。

文件资源管理器4 个文件
README.zh.md来源说明 · 只读预览
README 语言

dsh-web-notification

English | 简体中文

大模型在 DeepSeek Harness Web UI 中完成一次回复时,弹出一条系统级 Web Notification(页面聚焦与否都会弹)。

功能特性

  • 每轮回复完成 → 弹系统通知:标题为 🐳 Model Replied,正文为该轮用户消息

- 用户消息不可用时回退到会话标题

  • 启动时 + 首次用户手势时自动请求通知权限(兼容 Safari 的手势要求)
  • 同一轮回复去重,不会重复弹
  • 无 UI 侵入:不注入任何界面元素

截图

![通知效果示例](screenshot.png)

工作原理

  • 检测:客户端监听所有已打开会话的 snapshot turnEndsMap<turn, endSeq>),turn 数增长 = 该会话一轮回复完成——多个会话并行回复时各自独立触发通知;同时从 chat 节点取触发本轮回复的用户消息文本。
  • 显示:每条通知唯一 tag(dsh-reply-done-<sessionId>-<turn>)+ renotify: true。相同 tag 是"替换"语义,上一条还显示时替换通知在 macOS/Chrome 上不会重新弹横幅。
  • 打包build.mjssrc/client/index.js 包进 window.__ModuleLoader__.load({ id, factory }) 握手外壳,由浏览器端模块表执行。

---

安装(用户)

前置要求:已安装 dshnpx @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

本地开发调试

官方方式:把本地 checkout 直接装进 profile(npx @deepseek-ai/dsh plugin add 会链接目录并自动登记 bundles):

# 1. 构建
node build.mjs

# 2. 安装本地 checkout
npx @deepseek-ai/dsh plugin --profile web add "$PWD"

# 3. 重启
npx @deepseek-ai/dsh web

不方便跑 pnpm 时,也可以手动链接(结果等价):

ln -s "$PWD" ~/.dsh/profiles/web/node_modules/dsh-web-notification
# 并手动编辑 ~/.dsh/profiles/web/package.json:
#   dependencies:        "dsh-web-notification": "file:$PWD"
#   dsh.profile.bundles: 追加 "dsh-web-notification"

修改逻辑后的迭代流程(符号链接,无需重新安装):

node build.mjs        # 重新生成 lib/
npx @deepseek-ai/dsh web   # 重启(file: 符号链接,无需重新安装)

移除

官方方式(同时移除依赖和对应的层):

npx @deepseek-ai/dsh plugin --profile web remove dsh-web-notification

手动链接安装的,反向操作即可:

rm ~/.dsh/profiles/web/node_modules/dsh-web-notification
# 并手动编辑 ~/.dsh/profiles/web/package.json:
#   从 dependencies 与 dsh.profile.bundles 中删除 dsh-web-notification

移除后重启 npx @deepseek-ai/dsh web 生效。

License

MIT