dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
DeepSeek Harness 多通道通知插件:前台弹页面内 toast,后台按可用性切换 PWA 系统通知(Service Worker)或浏览器通知兜底;任务完成、审批请求、提问、计划评审、出错等事件可逐项开关,重要通知驻留不消失,并用 Web Audio 实时合成提示音效、零音频文件零网络上报。
DeepSeek Harness (DSH) 多通道通知插件 —— 根据窗口可见性自动在页面内 toast、PWA 系统通知、浏览器通知之间切换,并附带 Web Audio 合成音效。
Telegram · 会话)dsh plugin --profile web add dsh-hybrid-notify
dsh plugin --profile web add github:john-walks-slow/dsh-hybrid-notify
# 首次 add 可能被 pnpm 拦截:把 pnpm 提示的包名加入
# ~/.dsh/profiles/web/pnpm-workspace.yaml 的 allowBuilds 后重跑
git clone https://github.com/john-walks-slow/dsh-hybrid-notify.git
cd dsh-hybrid-notify
npm install
node build.mjs
构建产物会部署到 ~/.dsh/profiles/web/node_modules/dsh-hybrid-notify/。
在 DSH Web UI 打开 设置 → 通知。所有设置持久化在 localStorage(键 dsh.notify.config),改完立即生效。
| 事件 | 默认 | 说明 |
|---|---|---|
| 任务完成 | 开 | 会话一轮 turn 结束(running → idle) |
| 子代理完成 | 关 | subagent 会话完成 |
| 审批请求 | 开 | Agent 请求批准操作 |
| 用户提问 | 开 | Agent 向你提问 |
| 计划评审请求 | 开 | Plan 模式等待评审 |
| Agent 出错 | 开 | Agent 遇到错误 |
| 后台任务完成 | 关 | 后台 bash 任务结束 |
你当前正在前台查看的会话不会弹出通知。
通知栏里的系统通知会跟随界面状态一起收掉(默认开启,设置 → 通知 → 「已读后清除」可关闭):
页面内 toast 不受影响——它就在你眼前,会自动消失或点一下关掉。
设置页「忽略会话」一栏,每行一个正则表达式;会话标题命中后,该会话既不弹通知也不响铃。
| 默认规则 | 作用 |
|---|---|
^Telegram · | 忽略 DSH-IM 的 Telegram 会话 |
RegExp 语法解析,大小写敏感;写法无效的行会被自动跳过,并在输入框下方提示。^微信 ·、^飞书 ·、^钉钉 ·、^企业微信 ·、^QQ ·、^Slack ·、^Discord ·、^WhatsApp ·。插件用 Web Audio API(振荡器 + 包络整形,无音频文件)为每种通知级别合成独立音色:
| 级别 | 音效 |
|---|---|
| 成功 | 温暖大三和弦上行(C5 → E5 → G5) |
| 错误 | 小调下行(E5 → A4) |
| 警告 | 440 Hz 双脉冲 |
| 信息 | 柔和双音铃(G4 → B4) |
/plugins/dsh-hybrid-notify/sw.js 提供(作用域 /plugins/dsh-hybrid-notify/)。不支持 Service Worker 的环境自动降级为浏览器通知通道,再降级为页面内 toast。localStorage。new Notification() 抛异常——这类环境会静默降级为页面内 toast。从源码构建需 Node.js ≥ 18。dependencies 为空;@deepseek-ai/cordis 与 react 由 DSH 宿主运行时提供(以 peerDependencies 声明)。┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ In-page │ │ PWA │ │ Browser │
│ Toast │ │ Notification │ │ Notification │
│ (foreground)│ │ (background)│ │ (fallback) │
└──────┬───────┘ └──────┬───────┘ └──────┬───────┘
│ │ │
└───────────────────┬───────────────────┘
│
┌──────▼──────┐
│ Engine │
│ (singleton)│
└──────┬──────┘
│
┌──────▼──────┐
│ DSH Session│
│ List │
│ Snapshot │
└─────────────┘
引擎订阅 DSH 会话列表快照,检测状态迁移(running → idle、待交互),并按窗口可见性把通知派发到合适的通道。
git clone https://github.com/john-walks-slow/dsh-hybrid-notify.git
cd dsh-hybrid-notify
npm install
node build.mjs
构建 client bundle 与宿主入口,并部署到 web profile 的 node_modules。
npm run typecheck
src/
├── index.ts # 宿主端:SW 路由注册
├── client.ts # 客户端插件入口
├── notification-engine.ts # 核心编排与差分检测
├── notify-config.ts # 持久化配置存储
├── sound-manager.ts # Web Audio 音效合成
├── toast-store.ts # 页面内 toast 状态管理
├── visibility-detector.ts # 页面可见性与焦点检测
├── types.ts # 共享类型定义
├── locales.ts # 中英词典
├── dts-shim.d.ts # 环境类型声明
├── channels/
│ ├── inpage-toast.ts # 页面内 toast 通道
│ ├── pwa-notification.ts # PWA 通知通道
│ └── web-notification.ts # 浏览器通知通道
└── components/
├── NotifySettings.tsx # 设置页 UI(React)
├── Toast.tsx # Toast 组件
└── ToastContainer.tsx # shell.overlay 的 Toast 容器
MIT