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

桌面提醒 VoodooB0Ys/dsh-desktop-notify

DeepSeek Harness
VoodooB0Ys38 天前有提交已提供中文文档扫描:含敏感能力

任务需授权或完成时弹窗提醒,点一下回到对话

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

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

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add VoodooB0Ys/dsh-desktop-notify
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么
dsh 原生插件 · desktop
装得上吗
本站已真实安装成功
非静态推断
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 38 天前
档位由哪些信号合成

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

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

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

读写/删除本地文件发起外部网络请求
查看扫描证据(共 11 处,展示前 11 条)
  • 写入本地文件
    lib/host.js:155
    mkdirSync(dirname(LOG_FILE), { recursive: true });
  • 写入本地文件
    lib/host.js:156
    appendFileSync(LOG_FILE, `${new Date().toISOString()} ${message}\n`, "utf8");
  • 写入本地文件
    lib/host.js:407
    writeFileSync(titleFile, headline, "utf8");
  • 写入本地文件
    lib/host.js:408
    writeFileSync(bodyFile, body, "utf8");
  • 删除本地文件递归
    lib/host.js:447
    rmSync(dir, { recursive: true, force: true });
  • 删除本地文件递归
    lib/host.js:456
    rmSync(dir, { recursive: true, force: true });
  • 读取本地文件
    lib/host.js:1064
    const raw = readFileSync(ACTIVATION_FILE, "utf8");
  • 删除本地文件
    lib/host.js:1065
    rmSync(ACTIVATION_FILE, { force: true });
  • 发起网络请求
    lib/client.js:138
    fetch(ACTIVATED_ENDPOINT, {
  • 发起网络请求
    lib/client.js:192
    fetch(FOCUS_ENDPOINT, {
  • 发起网络请求
    lib/client.js:238
    const response = await fetch(ACTIVATION_ENDPOINT, {
扫描于 2026/11/2(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

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

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 任务状态弹窗提醒
  • 点击返回对应对话

DeepSeek Harness 的 Windows 桌面提醒:需要授权、提问、完成、出错、被中止时在屏幕角落弹出提醒,点一下回到对应对话。

README

由 DeepSeek 最新模型翻译生成
dsh-desktop-notify 给 Windows 上的 DeepSeek Harness 用的桌面提醒:需要你授权、向你提问、任务跑完、出错、被中止时,屏幕角落弹出一张提醒卡片。点它,DSH 会自己浮到最前,并切到发出这条提醒的那个对话。 它是为“你没在看 DSH”这个场景做的——你在别的窗口、看别的对话,或者全屏看视频。 仅 Windows。 不支持 macOS / Linux:整条链是 WinRT 通知 / PowerShell / Win32 窗口激活。在其它系统上插件会加载但什么都不做。 覆盖哪些事件 | 事件 | 提醒 | 打扰程度 | | 有工具需要你授权 | 「需要你授权」 | 响,且一直等你 | | 模型向你提问 / 计划审阅 | 「需要你回答」 | 响,且一直等你 | | 一个回合正常结束 | 「任务完成」 | 轻 | | 一个回合以报错结束 | 「任务出错」 | 轻 | | 回合被中止 / 中断 / 达到输出上限 | 「任务被中止」 | 轻 | 该安静的时候它会安静: | 情形 | 行为 | | 你正看着发出这条提醒的那个对话 | 不出声也不弹 | | 你在看别的对话,或窗口最小化 / 被别的窗口盖住 | 提醒 | | 子代理 / 子会话里的动作 | 默认不提醒 | | 短于 5 秒的回合结束 | 不算“完成” |
展开完整文档(README 剩余 1 节)
dsh-desktop-notify

给 Windows 上的 DeepSeek Harness 用的桌面提醒:需要你授权、向你提问、任务跑完、出错、被中止时,屏幕角落弹出一张提醒卡片。点它,DSH 会自己浮到最前,并切到发出这条提醒的那个对话。

它是为“你没在看 DSH”这个场景做的——你在别的窗口、看别的对话,或者全屏看视频。

仅 Windows。 不支持 macOS / Linux:整条链是 WinRT 通知 / PowerShell / Win32 窗口激活。在其它系统上插件会加载但什么都不做。

覆盖哪些事件

| 事件 | 提醒 | 打扰程度 |
| 有工具需要你授权 | 「需要你授权」 | 响,且一直等你 |
| 模型向你提问 / 计划审阅 | 「需要你回答」 | 响,且一直等你 |
| 一个回合正常结束 | 「任务完成」 | 轻 |
| 一个回合以报错结束 | 「任务出错」 | 轻 |
| 回合被中止 / 中断 / 达到输出上限 | 「任务被中止」 | 轻 |

该安静的时候它会安静:

| 情形 | 行为 |
| 你正看着发出这条提醒的那个对话 | 不出声也不弹 |
| 你在看别的对话,或窗口最小化 / 被别的窗口盖住 | 提醒 |
| 子代理 / 子会话里的动作 | 默认不提醒 |
| 短于 5 秒的回合结束 | 不算“完成” |
| 同一件事 8 秒内又发生一次 | 只提醒一次 |
| 主回合在等后台子代理还没跑完 | 不算“完成”,等它们都结束 |
| 焦点信息取不到(页面从未上报) | 按“没在看”处理——宁可多响一次也不漏 |

环境要求

- Windows 10 / 11(x64)
- DeepSeek Harness 桌面版(profile 的宿主进程),0.1.7-rc.2 或兼容版本
- PowerShell 5.1 与 .NET Framework 4(Windows 自带)

没有 npm 依赖。除了想自己重建激活器(见下文)之外,没有构建步骤。

安装

这是一个 DSH bundle:一个声明了 cordis.patch.yml 条目的包。

方式一:插件管理器

在 DSH 里打开 设置 → 插件,用 spec 安装(git 简写或本地路径都行):

github:VoodooB0Ys/dsh-desktop-notify

方式二:把本地检出 link 进 profile(本仓库开发时用的就是这个)

1. 把这个目录放到任意位置,例如 D:\tools\dsh-desktop-notify。
2. 编辑 %USERPROFILE%\.dsh\profiles\\package.json( 通常是 desktop,浏览器版是 web),加入:

{
"dependencies": {
"dsh-desktop-notify": "link:D:/tools/dsh-desktop-notify"
},
"dsh": {
"profile": {
"bundles": [
"dsh-desktop-notify"
]
}
}
}

原有条目保留不动——你只是往 dependencies 加一行、往 bundles 加一行。路径用正斜杠。

3. 装进 profile:

cd %USERPROFILE%\.dsh\profiles\
/bin/pnpm.mjs install

(桌面版自带 node/pnpm,在 %USERPROFILE%\.dsh\dsh-runtimes\ 下。)

4. 重启 Harness。 插件是在宿主启动过程中注册自己的路由的,热重载不够。

除此之外没有任何跟机器绑定的东西:插件里不存任何绝对路径,通知身份是运行时在 HKCU 里按当前用户创建的。

点击行为

点卡片会把目标对话 id 写进交接文件(%USERPROFILE%\.dsh\dsh-desktop-notify.activate),宿主轮询取走后让页面打开那个对话——等同于点侧边栏里那一行。同时把 DSH 窗口恢复并短暂置顶 1.2 秒,这样即使被全屏视频盖住也能浮上来。

配置

默认值在本包的 cordis.patch.yml 里。要改就在你自己 profile 的 cordis.patch.yml 里加一段覆盖:

- id: desktop-notify
name: dsh-desktop-notify
config:
channels:
toast: false # 是否另外发 Windows 系统通知(默认关,避免两条横幅叠一起) alert: true # 提醒卡片(默认通道) classes: completion: false minTurnMs: 10000

| 键 | 默认 | 含义 |
| enabled | true | 总开关 |
| classes | 全 true | 按事件开关(approval / question / completion / failure / aborted) |
| channels.toast | false | Windows 系统通知(进通知中心)。默认关,免得你同时收到两条横幅 |
| channels.alert | true | 提醒卡片 |
| alertSeconds | 见文件 | 卡片停留秒数(授权/提问 60 秒,完成 10 秒,出错/中止 25 秒;0 = 一直留到你点) |
| gateOnFocus | true | “你正在看那个对话就不打扰”这道门 |
| backgroundGraceMs | 45000 | 焦点上报多久没更新就当作你已离开 |
| minTurnMs | 5000 | 短于这个时长的回合不算“完成” |
| dedupeMs | 8000 | 同一对话同一类事件的去重窗口 |
| minGapMs | 1500 | 两条提醒之间的最小间隔 |
| settleMs | 800 | 回合结束后等多久再判定“完成” |
| notifySubagents | false | 子代理会话是否也提醒 |
| sound | true | 按类别播放的短提示音 |
| debug | true | 写 %USERPROFILE%\.dsh\dsh-desktop-notify.log |

如果你把 channels.toast 打开,插件会顺带注册它需要的 COM 激活器(见《为什么点击需要 COM 激活器》);关着的时候不注册任何东西。

排查

tail -f %USERPROFILE%\.dsh\dsh-desktop-notify.log # 门与投递的判定 tail -f %USERPROFILE%\.dsh\dsh-desktop-notify.activate.log # 点击与窗口唤前

每一步判定都会留痕:skip completion: user is looking at this conversation、 skip ...: deduped、skip ...: subagent session、card shown、card clicked。

快速确认宿主路由是否活着:

curl -X POST -H "content-type: application/json" -d "" \
http://127.0.0.1:/dsh-desktop-notify/focus

返回 204 说明插件注册上了;405/404 说明没有——你正在跑的是旧宿主进程,重启它。

卸载

1. 从 profile 的 dependencies 和 bundles 里删掉 dsh-desktop-notify,在 profile 目录里跑一次 pnpm install,然后重启。
2. 可选:清掉它运行时创建的东西:

HKCU\Software\Classes\AppUserModelId\DeepSeekHarness.DesktopNotify
HKCU\Software\Classes\CLSID\{D7A1F0B2-3C4D-4E5F-9A0B-1C2D3E4F5A6B} (只有用过 channels.toast 才会有)

为什么点击需要一个 COM 激活器

对未打包的 Windows 应用,两条看起来最直接的路实测都走不通——都是靠留痕判定,不是猜的:

| 做法 | 结果 |
| activationType="protocol" + 注册 URI 协议 | 手动执行这条 URI 每次都成功,但真实点击横幅从来没有到过处理器——Windows 对未打包应用不做这个转交 |
| 常驻进程订阅通知的 Activated 事件 | PowerShell 宿主收不到:用一个不需要点击的等价实验(程序化关闭通知)验证,连 Dismissed 都收不到,事件泵根本投递不进这个进程 |
| 注册成 AUMID 的 CustomActivator 的 COM 本地服务器 | 可用——Windows 会启动 lib/dsh-notify-activator.exe,由它把对话 id 交给宿主并把窗口唤前 |

激活器刻意编译成 winexe:控制台子系统每次点击都会闪一个黑框。用 .NET Framework 自带的编译器重建:

& "$env:WINDIR\Microsoft.NET\Framework64\v4.0.30319\csc.exe" -nologo -optimize+
-target:winexe -platform:x64 -out:lib\dsh-notify-activator.exe lib\activator\NotifyActivator.cs

lib/register-activator.ps1 可以手动注册(并校验)COM 那半边。

已知限制

- 仅 Windows,x64。激活器是 .NET Framework 4 的 x64 二进制。
- 绑定 DSH ^0.1.7-rc.2 的事件与服务契约。DSH 内部版本之间会变;如果某个版本改名了本插件订阅的事件,提醒就会失效。
- 首次安装必须重启宿主——路由是在启动过程中注册的。
- 卡片是我们自己的窗口,不是系统通知:不会进通知中心。想要通知中心里也留一份,把 channels.toast 打开。
- 卡片不抢焦点、不进任务栏,但它是置顶窗口:如果还有别的东西也置顶,最终谁在上面由系统按"最后显示"决定。

许可

MIT,见 LICENSE。
预览分享卡片长什么样 ↓VoodooB0Ys/dsh-desktop-notify
分享 · DeepSeek Harness Hub
VoodooB0Ys/dsh-desktop-notify

任务需授权或完成时弹窗提醒,点一下回到对话

这是你的仓库?认领条目

回到顶部