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

系统通知提醒 Zhiyi-Zhao/dsh-notify

DeepSeek Harnessv0.1.7
Zhiyi-Zhao26 天前有提交已提供中文文档扫描:未发现敏感能力

任务完成或需确认时弹出系统通知,点击直达会话

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

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

自动兼容检查有告警:npm 同名包「dsh-notify」归属 pasumao/dsh-plugin-notify,装到的可能不是本插件。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add Zhiyi-Zhao/dsh-notify
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:仅索引
是什么[目录]—
dsh 原生插件 · ui
暂无时间戳·判据 →
装得上吗[实装验证]—
静态安装检查有提示项,装前建议看一眼 README
L4 · 真实安装等级说明 →
数据截至 2026/10/31·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/04·判据 →
还在维护吗[仓库]✓
活跃:最近一次提交在 26 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

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

验证判据与等级说明 →

可信度证据

安装兼容性检查⚠ 装前注意

npm 同名包「dsh-notify」归属 pasumao/dsh-plugin-notify,装到的可能不是本插件

展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✓npm 包dsh-notify @ 0.1.7
✓Node 引擎要求 ^22.19 || >=24 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/10 21:28:50

安全扫描自动 · 静态分析源码
v2.7.0
🟢 扫描:未发现敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描未发现敏感能力:最多只发网络请求、读取自身元数据或只读文件,未发现执行命令、文件写入或敏感信息读取。

扫描于 2026/11/4(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

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

社区实装还没有人打卡 · 装过的第一个就是你
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 任务完成推送通知
  • 失败时推送通知
  • 待确认时推送通知

DeepSeek Harness 插件:一轮结束、失败或智能体等你确认时,推送系统通知(Windows 操作中心、macOS 通知中心)。

README

由 DeepSeek 最新模型翻译生成
dsh-notify 给 DeepSeek Harness 加上真正的操作系统通知:Windows 通知中心 toast、macOS 通知中心横幅,或 Linux 通知守护进程的消息;在 DSH 需要你回到窗口时提醒你。 什么时候会通知 | 时刻 | 来源 | | 一轮任务完成 | api-session/status 远程事件,running 由 true 变 false | | 本轮运行失败 | api-session/error 远程事件 | | 后台作业结束 | 客户端会话列表上的 jobsBySession 镜像 | | Agent 在等你确认 | uiSession.pendingInteractions(审批、提问、计划评审) | 点击通知会把窗口切到前台,并打开该通知所属的会话。 安装 方式一:预构建包(推荐,无需构建授权) 从 Releases 下载 dsh-notify-0.1.0.tgz: dsh plugin --profile desktop add ./dsh-notify-0.1.0.tgz 构建产物已打进包里,安装时不跑任何构建脚本(已在隔离 profile 上实测)。
展开完整文档(README 剩余 1 节)
dsh-notify

给 DeepSeek Harness 加上真正的操作系统通知:Windows 通知中心 toast、macOS 通知中心横幅,或 Linux 通知守护进程的消息;在 DSH 需要你回到窗口时提醒你。

什么时候会通知

| 时刻 | 来源 |
| 一轮任务完成 | api-session/status 远程事件,running 由 true 变 false |
| 本轮运行失败 | api-session/error 远程事件 |
| 后台作业结束 | 客户端会话列表上的 jobsBySession 镜像 |
| Agent 在等你确认 | uiSession.pendingInteractions(审批、提问、计划评审) |

点击通知会把窗口切到前台,并打开该通知所属的会话。

安装

方式一:预构建包(推荐,无需构建授权)

从 Releases 下载 dsh-notify-0.1.0.tgz:

dsh plugin --profile desktop add ./dsh-notify-0.1.0.tgz

构建产物已打进包里,安装时不跑任何构建脚本(已在隔离 profile 上实测)。

方式二:直接从 GitHub 安装

dsh plugin --profile desktop add github:Zhiyi-Zhao/dsh-notify

lib/ 构建产物随仓库一起提交,因此不需要本地工具链。不过 pnpm 对 git 依赖可能仍要求显式允许其构建脚本;若命令提示需要授权,把它打印的键加进该 profile 的 pnpm-workspace.yaml 后重试:

allowBuilds:
dsh-notify: true

方式三:本地目录(开发时)

dsh plugin --profile <profile> add /绝对路径/dsh-notify

该包同时声明 dsh.bundle 层(负责挂载插件行)与 dsh.client 浏览器半。装进 desktop profile 后需要重启 DeepSeek Harness 应用:profile 组合在启动时读取,而 desktop profile 由 Electron 壳独占,CLI 无法替你热加载。

安装后的第一次加载会发一条自检通知,这样不必等长任务就能确认通道可用。

卸载:

dsh plugin --profile desktop remove dsh-notify

噪音控制

默认只在你真的需要被打扰时通知:窗口在前台且可见时完全静默;短于 10 秒的轮次不发通知;同一个停下来的 agent 只产生一条通知——等待确认或报错会顶替同一轮的"已完成"。

运行时开关从 localStorage['dsh-notify.options'] 读取(JSON)。客户端半不会收到它在 cordis.yml 里的配置(Web 启动内核用 loader.create({ name }) 创建每个 entry),所以这个 key 就是本独立插件的配置通道:

localStorage.setItem('dsh-notify.options', JSON.stringify({ onlyWhenUnfocused: false, minRunMs: 0 }))

| 字段 | 默认 | 含义 |
| onlyWhenUnfocused | true | 窗口在前台且可见时保持静默 |
| minRunMs | 10000 | 短于此值的轮次不通知 |
| silent | false | 不发声音,只进通知中心 |
| selfTest | true | 首次安装时发一条自检通知 |
| replaceTurnEndMs | 2000 | 轮次结束通知为"更好的通知"让路而等待的时长 |

自检标志位是 localStorage['dsh-notify.selfTestShown']。

工作原理

插件只有浏览器半;宿主半的作用是让 profile 行能挂载这个包。所有通知都由页面通过 Web Notification API 发出——这既让它同时适用于桌面壳和普通浏览器窗口,也让它不需要程序包标识符,更不需要 PowerShell 辅助进程。

桌面壳对主窗口除 media 外的权限请求一律放行,因此 toast 不会弹授权框。普通浏览器窗口需要一次用户手势才允许申请权限:插件在第一次指针或键盘事件时申请,未授权前保持静默。环境没有 Web Notification API、或权限被拒绝时,插件记录一条警告并自行停用。

投递与排查

第一条通知同时会把应用注册进 设置 → 系统 → 通知(Windows 里显示为 DeepSeek Harness)——那个开关就是"横幅有没有被允许"的检查点,而通知中心(Win+N)里能看到被抑制或错过的横幅。

窗口在前台且可见时插件保持静默,这是默认行为(onlyWhenUnfocused),不是故障:想确认通道本身是否工作,就切到别的窗口再让一轮任务结束。排查顺序建议:通知设置里的开关 → 通知中心历史 → %LOCALAPPDATA%\Microsoft\Windows\Notifications\wpndatabase.db(系统侧是否真的收到)。

绝不要传 tag。 这台机器上实测:带 tag 的 new Notification() 会被浏览器接受,但 toast 永远不会进 Windows;同一调用去掉 tag 则 100% 送达(自检、探针与真实通知都验证过)。代价是同一会话的多次通知不再互相替换,而是各自堆叠。

已知限制与待办

- 没有 cordis.yml 选项。 客户端 entry 不接收配置,因此本插件从 localStorage 读开关。上游版本应改为宿主侧提供 settings 命名空间加设置卡片。
- 运行中途重载已尽量覆盖。 插件激活时会把列表中 running 的会话补种为"进行中",因此重载后该轮结束仍会通知;若客户端不把运行状态投影进列表,则无法补种,那一轮会漏掉。
- 不做同会话替换。 为能真正投递而不传 tag(见上),因此重复通知会堆叠而非替换。
- 按客户端各自投递。 同时开着的两个客户端(桌面窗口 + 浏览器标签页)会各发一次;跨客户端去重目前没有归属方。
- 仅限 Web GUI。 插件注入的是客户端服务(remote、sessions、locale,外加可选的 uiSession);headless 与 ACP 运行没有浏览器半,不会收到通知。
- 重跑的作业可能重复通知。 作业行从镜像里消失、之后带着同样的 id 与状态回来时,只按身份去重,不按时间去重。

激活安全

客户端 entry 一旦抛错就会让 Web boot 审计失败,而桌面壳把审计失败当作致命错误:应用起不来,随后它的崩溃恢复会重写 profile。下面两个错误都曾在真实 profile 上造成过这个后果,所以现在它们是实现的硬规则:

- 服务只在 apply 时解析一次。 ctx.<service> 是按当前运行的 fiber 解析的,因此在本插件 fiber 之外运行的回调(store 通知、通知点击、延后计时器)必须使用捕获下来的值。在那里走 ctx 会抛 cannot get required service "sessions" in inactive context。
- 把发布出来的状态当作可能不完整。 会话列表 store 会发布没有 jobsBySession 的状态;假设该成员一定存在的规则会抛 Cannot convert undefined or null to object 并使激活失败。

此外 apply 把整段激活都兜住了:任何意外错误只记一行日志并把通知关掉,不会走到 boot 审计。任何改动都请对着独立 profile 验证,绝不要对着你正在使用的那一个 —— dsh --profile <scratch> 配合它自己的 DSH_HOME 能复现真实启动,而底层异常出现在浏览器控制台里。

客户端版本兼容

插件用到的三个客户端成员在 DSH 不同版本上形状不同,代码对两种都做了兼容(在本机 0.2.0-rc.2 桌面版上实测):

| 信号 | 当前版本 | 较早版本(本机实测) | 本插件的处理 |
| 待确认(审批/提问) | uiSession.pendingInteractions(可订阅) | 只有 uiSession.pendingSnapshot,且该字段每次变更被整体替换(this.pendingSnapshot = projected) | 有可订阅面就订阅;否则按 1 Hz 轮询,并每次重新读取该字段——缓存 Map 对象会让轮询永远读到最初那个空 Map |
| 后台作业终态 | 列表状态里的 jobsBySession | 列表状态只有 ids/byId/phase/projectionsBySession | 缺失即视为空;较早版本上作业通知不生效 |
| 点击回会话 | sessions.open(id) | 无此方法 | 存在才调用;否则只把窗口切到前台 |
| 运行状态 | 列表行含 running | 同样含 running | 激活时按 running 补种"进行中"的会话,使重载不丢当前轮 |

上游化形态

要把它落进 deepseek-harness 仓库,代码迁到 packages/client/ui-notify/,包名 @deepseek-ai/dsh-client-ui-notify:

1. 用共享预设替换 tsdown.config.mjs:clientBundle('@deepseek-ai/dsh-client-ui-notify', ['lib/types/index.js'])。
2. 把 src/client/types.ts 里的本地服务视图换成真实类型(import type {} from '@deepseek-ai/dsh-api-session-controller/client'、…/dsh-client-ui-session/client、…/dsh-client-locale/client)。
3. 在三处注册:tsconfig.client.json 聚合、packages/bundle/web-app/cordis.patch.yml 里一行 disabled: true、以及 packages/bundle/web-app/package.json 依赖。
4. 把开关改成 settings 命名空间,并补一份描述触发规则的 Agent Note。
预览分享卡片长什么样 ↓Zhiyi-Zhao/dsh-notify
分享 · DeepSeek Harness Hub
Zhiyi-Zhao/dsh-notify

任务完成或需确认时弹出系统通知,点击直达会话

这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。
认领条目 →
回到顶部