任务需授权或完成时弹窗提醒,点一下回到对话
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
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 38 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
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。预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
VoodooB0Ys/dsh-desktop-notify
任务需授权或完成时弹窗提醒,点一下回到对话
相关插件 · 桌面端
Codex 任务面板chuspeeism/dashi-taskboard
现代化可灵活嵌入的任务面板,支持 Codex、DeepSeek Harness
★ 3,409已汉化DSH
71.7
多智能体自进化开发平台Prism-Shadow/penguin-harness
统一、稳定的 Agent 自进化框架全自动优化:任意模型 · 任意算法 · 任意 Benchmark
★ 3,111已汉化DSH
71.1
桌面宠物PC2005-cloud/dsh-pet
DSH 桌面宠物:一行命令装好即用的透明动画小桌宠,支持多开、大小位置随心配置;还内置 DIY 素材链,能用 AI…
★ 5,341已汉化DSH
71
多端 Agent 工作台GCWing/OpenBitFun
OpenBitFun 是一个高度可定制的开源 Agent 工作台,让任务按你的方式持续推进。
★ 3,449已汉化DSH
70.8
DSH Desktopanywhere-labs/dsh-desktop
为 DeepSeek Harness DSH 插件生态打造的现代化桌面端解决方案。万物皆「插件」,桌面本身也是「插件」。
★ 34,532已汉化DSH
70.7
桌面宠物伴侣OpenPetsHQ/openpets
桌面伴侣平台,带宠物、插件,还能选配本地智能体集成。
★ 1,353已汉化DSH
70.2
这是你的仓库?认领条目