🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

多通道通知提醒 huangDouP/dsh-client-ui-notifications

DeepSeek 客户端
huangDouP9 天前有提交已提供中文文档扫描:含敏感能力兼容 / 相关生态

后台时用系统通知、标题闪烁与红点提醒你回来处理

28.2/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/11/1 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

相关生态插件(非 dsh 原生,按其对应运行时安装)
git clone https://github.com/huangDouP/dsh-client-ui-notifications.git

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:待复验
是什么
生态应用
桌面端 / Web 外壳,不以 dsh plugin add 安装
装得上吗
曾在 dsh 0.2.0-rc.2 下真实安装成功,但当前 dsh 已更新至 0.2.1-rc.5,本站尚未在新版下复验
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 9 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

可执行外部命令读写/删除本地文件
查看扫描证据(共 5 处,展示前 5 条)
  • 写入本地文件
    lib/index.js:18
    appendFileSync(DEBUG_LOG, ( new Date()).toISOString() + " " + line + "\n");
  • 执行外部命令固定命令
    lib/index.js:76
    execFile(
  • 读取本地文件
    build.mjs:45
    const bundled = readFileSync(clientTmp, "utf8");
  • 写入本地文件
    build.mjs:46
    writeFileSync(path.join(root, "lib/client.js"), wrapClientBundle(bundled));
  • 删除本地文件
    build.mjs:47
    rmSync(clientTmp);
扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

依赖的 DSH / Cordis 模块
@deepseek-ai/cordis
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 系统浏览器通知
  • 标签页标题闪烁
  • favicon角标提醒

DSH 网页通知:浏览器通知、标签页标题闪烁、favicon 角标,还有原生 Windows 弹窗,配一个中英双语设置页。

README

由 DeepSeek 最新模型翻译生成
@dsh-external/dsh-client-ui-notifications DSH Web 的「等待 / 完成」通知插件:你切去做别的事情时,DSH 需要你回来处理(等待批准 / 提问、回合完成、出错),会通过 浏览器系统通知、Tab 标题闪烁、favicon 红点、原生 Windows toast 提醒你,并可在 设置 → 通知 里逐项开关与配置。 截图 浏览器通知(Windows 通知中心,来源为浏览器): 浏览器通知 原生 Windows toast(由 DSH Host 进程弹出——浏览器整个关掉也能收到): 原生 Windows toast 提醒机制(与生效条件) | 场景 | 信号来源(全部是 DSH 原生契约,无需自定义通道) | 默认 | | 等待批准 | 会话快照 pending 中出现 approval | 开 | | 等待回答 | 会话快照 pending 中出现 question | 开(与批准同一开关) | | 回合完成 | 会话快照 running: true → false | 开 | | 出错 | 会话快照 lastAgentError 变为非空 | 开 | 呈现方式(均可配置):
展开完整文档(README 剩余 1 节)
@dsh-external/dsh-client-ui-notifications

DSH Web 的「等待 / 完成」通知插件:你切去做别的事情时,DSH 需要你回来处理(等待批准 / 提问、回合完成、出错),会通过 浏览器系统通知、Tab 标题闪烁、favicon 红点、原生 Windows toast 提醒你,并可在 设置 → 通知 里逐项开关与配置。

截图

浏览器通知(Windows 通知中心,来源为浏览器):

浏览器通知

原生 Windows toast(由 DSH Host 进程弹出——浏览器整个关掉也能收到):

原生 Windows toast

提醒机制(与生效条件)

| 场景 | 信号来源(全部是 DSH 原生契约,无需自定义通道) | 默认 |
| 等待批准 | 会话快照 pending 中出现 approval | 开 |
| 等待回答 | 会话快照 pending 中出现 question | 开(与批准同一开关) |
| 回合完成 | 会话快照 running: true → false | 开 |
| 出错 | 会话快照 lastAgentError 变为非空 | 开 |

呈现方式(均可配置):

- 浏览器系统通知(Notification API):开启时浏览器会请求「允许发送通知」权限——这就是你熟悉的「网站想发送通知」体验;允许后即使切到其他窗口,也会在系统通知中心收到。
- Tab 标题闪烁:后台标签页标题在「⚠ / ✅ 前缀 + 原标题」间交替,最多 30 秒,回到页面即恢复。
- favicon 红点:后台标签页的 favicon 覆盖红点,回到页面即恢复。
- 声音:WebAudio 短哔声(首次在页面点击/按键后自动预热,规避浏览器自动播放策略)。
- 原生系统通知(nativeToast 开关,默认关):由 DSH Host 进程直接弹 Windows toast——浏览器整个关掉也能收到。零依赖(内置 WinRT 实现,经 Windows PowerShell 5.1 调用);若安装了 BurntToast 模块则自动使用它获得更美观的样式。Host 半改动需重启生效。
- 冷却:同类通知默认 30 秒内只提醒一次,可调。

提醒只在窗口未被聚焦(后台标签或切到别的窗口)时触发,不打扰正在盯着 DSH 的你。

结构

- src/index.ts —— Host 半源码(TypeScript):导出 Config(schemastery schema + 默认值,字段标 volatile() 才能热改),监听 approval/request / agent/status / agent/error 并弹原生 Windows toast(零依赖 WinRT,可选 BurntToast)。设置项由 Config 自动成为 profile 里该条目的配置,不再手写 settings 命名空间。
- src/client/index.ts —— Client 半源码(TypeScript):通过 configForms.get('<宿主条目 id>') 读写上面那份配置(getSnapshot / subscribe / set),监听 sessions.list / 各会话快照,检测信号并呈现通知;注册 settings.section 设置页;内置 zh/en 双语文案。
- build.mjs —— 构建脚本(esbuild):src/index.ts → lib/index.js(ESM),src/client/index.ts → lib/client.js(window.__ModuleLoader__ bundle)。
- lib/ —— 构建产物(已提交;安装时直接使用)。
- cordis.patch.yml —— 把本包的组合行插入 profile(与已安装的皮肤包同机制,dsh.bundle.patch 自动生效)。

开发 / 构建

pnpm install # 安装 esbuild / typescript 等 devDependencies
pnpm build # 重新生成 lib/index.js + lib/client.js
pnpm typecheck # tsc --noEmit(可选)

提交规则:lib/ 是构建产物且需要提交(github: 安装不跑构建)。改 src/ 后先 pnpm build 再提交;CI(.github/workflows/build.yml)会校验 lib/ 是否与构建一致。

安装

从 GitHub 安装(共享版)——在 ~/.dsh/profiles/<你的profile>/package.json 中:

{
"dependencies": {
"@dsh-external/dsh-client-ui-notifications": "github:huangDouP/dsh-client-ui-notifications"
},
"dsh": {
"profile": {
"bundles": [
"@deepseek-ai/dsh-base",
"@deepseek-ai/dsh-web-app",
"@dsh-external/dsh-client-ui-notifications"
]
}
}
}

然后 pnpm install,重启 dsh(新增插件集合只在重启后生效)。

若仓库是 monorepo、包在子目录:用 github:<user>/<repo>#path:/<subdir>。
与皮肤包同机制——bundle 自身的 cordis.patch.yml(dsh.bundle.patch)会在 profile 加载该 bundle 时自动插入组合行,不需要手工改 profile 的 cordis.patch.yml。

本地开发安装:"@dsh-external/dsh-client-ui-notifications": "file:<本包绝对路径>",或复制进 node_modules/@dsh-external/。
0.2 说明:设置命名空间就是宿主条目的 id(本包 cordis.patch.yml 里 insert 的 client-ui-notifications),客户端据此读取同一份配置;桌面客户端用的是 ~/.dsh/profiles/desktop,与 web profile 互不相通,要各装一份。

重启后打开 设置 → 通知 即可看到全部开关并逐项配置(启用通知 / 等待批准 / 回合完成 / 出错 / 浏览器系统通知 / 原生系统通知 / Tab 标题闪烁 / favicon 红点 / 声音 / 冷却)。

卸载

1. 编辑 ~/.dsh/profiles/<你的profile>/package.json:
- 从 dependencies 删除 "@dsh-external/dsh-client-ui-notifications": ... 那一行;
- 从 dsh.profile.bundles 数组中删除 "@dsh-external/dsh-client-ui-notifications" 那一行。
2. 在 ~/.dsh/profiles/<你的profile> 下执行 pnpm install(把包从 node_modules 中清掉)。
3. 重启 dsh —— 插件集合的增删只在重启后生效;bundle 自带的 cordis.patch.yml 插入行会随 bundle 移除自动消失,无需手工改 profile 的 patch 文件。

可选清理:

- 设置残留:0.2 起设置写在 profile 的 cordis.patch.yml 里该条目的 config 段(旧版是 ~/.dsh/settings.yaml 的 notifications: 段),删掉这些字段即恢复默认;
- 浏览器通知授权:浏览器设置 → 网站设置 → 通知,移除对 127.0.0.1:3080 的授权;
- Tab 标题 / favicon 属于插件运行期改动,重启后自动恢复,无需处理。

已知限制

- 桌面客户端里以 Host 的原生 toast 为准,Client 半不再发浏览器通知:Client 半检测到 dshDesktop(Electron 预加载总会注入,浏览器里没有)就把浏览器通知这一路关掉,否则同一次回合完成会出现两条(Host 的「DSH 回合完成」+ Client 的「回合完成」带会话标题)。设置页在桌面端也会把该开关灰掉并附说明。
- 桌面端的 shell 服务跑在沙箱令牌里,WinRT toast 在那种令牌下会报 0x80073D54 no package identity。因此 Host 半改为用自身进程直接跑 powershell.exe -EncodedCommand(非沙箱令牌),并按「开始菜单里的 DeepSeek Harness → electron.app.DeepSeek Harness → DSH」依次尝试已注册的 AppUserModelID;nativeToast 默认开启。
- 浏览器通知依赖页面处于打开状态(标签页可以后台,但不能关闭整个标签页);只有在浏览器里跑 web profile(dsh --profile web)时它才是可用的那一路。
- 冷却只在真正要弹之前登记,被前台静音的那一次不会吃掉冷却窗口。
- 回合完成只在客户端不在前台时弹:Host 侧用 GetForegroundWindow + GetWindowThreadProcessId 判断前台窗口是否属于 DeepSeek Harness,是则静音(approval/request 与 agent/error 不受影响,始终提醒)。这里判断的是「应用是否在前台」,不是「是否正在看某个会话」——后者需要 client 半把当前会话 id 报给 Host(插件内可加一条 webServer 路由),目前没做。
- agent/status 在 0.2 只带 { status }(不再有 agent.sessionId),回合完成按全局 running → idle 判断;多个子代理并行时可能偶尔多弹一条(受冷却约束)。
- 桌面端客户端内检测不到 pending(0.2 的会话快照把审批交互移出了 snapshot),所以「等待批准」的提醒以 Host 侧的 approval/request 事件为准。
- error 检测依赖 lastAgentError 快照字段;子代理 / 工作流结束通知未纳入 v1(会话快照不含该信号)。
- 设置页编辑的是插件 Config(标了 volatile() 的字段可热改),写进 profile 的条目配置,重启不丢;与动态插件的临时设置不同。
预览分享卡片长什么样 ↓huangDouP/dsh-client-ui-notifications
分享 · DeepSeek Harness Hub
huangDouP/dsh-client-ui-notifications

后台时用系统通知、标题闪烁与红点提醒你回来处理

回到顶部