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

任务完成通知 S1m0n1314/dsh-TaskCompletedNotification-plugin

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

任务跑完或需要确认时弹出 Windows 横幅提醒

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

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

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

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么[目录]—
dsh 原生插件 · other
暂无时间戳·判据 →
装得上吗[实装验证]✓
本站已在 dsh 0.2.1-rc.5 下真实安装成功
非静态推断
L5 · 运行时冒烟等级说明 →
数据截至 2026/11/04·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/04·判据 →
还在维护吗[仓库]✓
活跃:最近一次提交在 30 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

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

验证判据与等级说明 →

可信度证据

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

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

可执行外部命令读写/删除本地文件
查看扫描证据(共 14 处,展示前 13 条)
  • 写入本地文件
    lib/index.js:228
    mkdirSync(dir, { recursive: true });
  • 读取本地文件
    lib/index.js:235
    const info = statSync(path, { throwIfNoEntry: false });
  • 写入本地文件
    lib/index.js:236
    if (info !== undefined && info !== null && info.size > LOG_LIMIT_BYTES) writeFileSync(path, '', 'utf8');
  • 写入本地文件
    lib/index.js:237
    appendFileSync(path, `${JSON.stringify({ ts: Date.now(), level, message, ...(extra === undefined ? {} : { extra }) })}\n`, 'utf8');
  • 读取本地文件
    lib/index.js:324
    if (existsSync(candidate)) return candidate;
  • 执行外部命令来自配置/变量
    lib/index.js:377
    execFileSync(powershellPath(), ['-NoProfile', '-NonInteractive', '-ExecutionPolicy', 'Bypass', '-Command', script], {
  • 写入本地文件
    lib/index.js:420
    mkdirSync(targetDir, { recursive: true });
  • 读取本地文件
    lib/index.js:423
    if (existsSync(from)) cpSync(from, join(targetDir, file));
  • 读取本地文件
    lib/index.js:432
    if (!existsSync(launcher)) {
  • 执行外部命令来自配置/变量
    lib/index.js:455
    execFileSync(powershellPath(), ['-NoProfile', '-NonInteractive', '-ExecutionPolicy', 'Bypass', '-Command', script], {
  • 执行外部命令来自配置/变量
    lib/index.js:488
    execFileSync(powershellPath(), ['-NoProfile', '-NonInteractive', '-ExecutionPolicy', 'Bypass', '-Command', script], {
  • 写入本地文件
    lib/index.js:515
    mkdirSync(payloadDir, { recursive: true });
  • 写入本地文件
    lib/index.js:574
    writeFileSync(markupPath, toastMarkup(input.title, input.body), { encoding: 'utf8' });
扫描于 2026/11/4(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

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

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

功能亮点

  • 任务完成弹窗提醒
  • 需确认时横幅通知

用WorkBuddy有感,于是照做了个横幅通知

README

由 DeepSeek 最新模型翻译生成
dsh-taskcompletednotification-plugin DeepSeek Harness 的 Windows 桌面通知插件:任务跑完、模型在等你选择、模型在申请操作权限时,弹一条 Windows 横幅通知;点一下横幅,DSH 窗口会被拉到前台。 它解决的问题很简单:DSH 在后台跑长任务时,你不可能一直盯着窗口。以前你只能反复切回来看进度;装上它以后,该回来的时候它会主动叫你。 名字说明:npm 包名必须全小写,所以是 dsh-taskcompletednotification-plugin; GitHub 仓库名大小写不敏感,用的是 dsh-TaskCompletedNotification-plugin。 安装时用的是 npm 那个小写包名,两者是同一个插件。 功能 | 场景 | 通知标题 | 通知正文 | | 一轮任务跑完 | DeepSeek Harness | 任务完成 | | 模型调用 ask_user_question 等你选择 | DeepSeek Harness | 任务操作待确认 | | 模型申请沙箱/权限升级等你授权 | DeepSeek Harness | 任务操作待确认 | - 点横幅拉起窗口:点通知后 DSH 窗口自动到前台(最小化也会被恢复)。
展开完整文档(README 剩余 1 节)
dsh-taskcompletednotification-plugin

DeepSeek Harness 的 Windows 桌面通知插件:任务跑完、模型在等你选择、模型在申请操作权限时,弹一条 Windows 横幅通知;点一下横幅,DSH 窗口会被拉到前台。

它解决的问题很简单:DSH 在后台跑长任务时,你不可能一直盯着窗口。以前你只能反复切回来看进度;装上它以后,该回来的时候它会主动叫你。

名字说明:npm 包名必须全小写,所以是 dsh-taskcompletednotification-plugin; GitHub 仓库名大小写不敏感,用的是 dsh-TaskCompletedNotification-plugin。
安装时用的是 npm 那个小写包名,两者是同一个插件。

功能

| 场景 | 通知标题 | 通知正文 |
| 一轮任务跑完 | DeepSeek Harness | 任务完成 |
| 模型调用 ask_user_question 等你选择 | DeepSeek Harness | 任务操作待确认 |
| 模型申请沙箱/权限升级等你授权 | DeepSeek Harness | 任务操作待确认 |

- 点横幅拉起窗口:点通知后 DSH 窗口自动到前台(最小化也会被恢复)。
- 署名与图标是它自己:通知显示为「DeepSeek Harness」+ Harness 图标,而不是「Windows PowerShell」。
- 一轮只弹一条:同一轮里已经弹过「待确认」,这一轮结束时就不再重复弹「完成」。
- 子会话不打扰:subagent 产生的轮次不通知,只通知你本人所在的会话。
- 不干扰 Harness:全程只旁听事件,不改任何决定(审批/提问的执行路径完全不受影响)。

安装

从社区市场 / npm 安装(推荐)

dsh plugin --profile web add dsh-taskcompletednotification-plugin

包名与仓库名一致(package.json 的 name 就是它)。这条命令要求包已经发布到 npm 仓库 ——本插件目前尚未发布,所以现在请先用下面两种方式安装;一旦发布,上面这条命令即可直接使用。

从发行包安装

1. 在 [Releases 下载 dsh-taskcompletednotification-plugin-<version>.zip 并解压(例如 D:\plugins\dsh-taskcompletednotification-plugin-0.1.0);
2. 让 DSH 安装这个目录:

plugin_manager action=install_bundle target="D:\plugins\dsh-taskcompletednotification-plugin-0.1.0"

从源码克隆

git clone https://github.com/S1m0n1314/dsh-TaskCompletedNotification-plugin.git D:\plugins\dsh-taskcompletednotification-plugin

然后同样用 install_bundle 指向该目录。

手工装法(与上面等价)

把目录加进 profile 的 package.json 依赖,并在 profile 的 cordis.patch.yml 里插入:

- insert:
- id: dsh-taskcompletednotification-plugin
name: 'dsh-taskcompletednotification-plugin'

以上任一方式装完,都要完全退出并重启 DSH —— 插件模块只在启动时载入一次。

使用说明

1. 正常用 DSH 干活,什么都不用做。
2. 任务跑完或模型需要你介入时,右下角会弹出通知(右下角横幅,同时进入通知中心)。
3. 点横幅(或通知中心里的那条)→ DSH 窗口回到前台,接着操作即可。
4. 不想被打扰时:在 设置 → 系统 → 通知 里关掉「DeepSeek Harness」,或把插件配置里的 enabled 设成 false。

配置

改 profile 的 cordis.patch.yml 里 dsh-taskcompletednotification-plugin 那一行的 config,改完完全重启 DSH。
未填字段用默认值。

| 字段 | 默认 | 含义 |
| enabled | true | 总开关,false 时不注册任何监听。 |
| notifyOnTurnEnd | true | 任务完成通知。 |
| notifyOnQuestion | true | 模型提问通知。 |
| notifyOnApproval | true | 模型申请权限通知。 |
| minTurnMs | 0 | 短于该毫秒数的轮次不弹完成通知(0 = 不限制)。 |
| quietWhenActiveMs | 0 | 0 = 完成通知一定弹;设 15000 表示「15 秒内你动过键鼠就不弹」(你正看着屏幕,不打扰)。 |
| suppressTurnEndAfterAsk | true | 一轮只弹一条:本轮回过问过/申请过权限,轮末不再弹「任务完成」。 |
| title | DeepSeek Harness | 通知标题,同时作为注册的显示名。 |
| focusOnClick | true | 点击横幅把 DSH 窗口拉到前台。 |
| registerAppId | true | 注册通知署名与图标。 |
| timeoutMs / maxConcurrent / log / probe | 15000 / 3 / true / false | 通知进程上限、并发数、诊断日志、诊断模式。 |

配置示例(关闭点击激活 + 只在离开电脑时提醒完成):

- id: dsh-taskcompletednotification-plugin
name: 'dsh-taskcompletednotification-plugin'
config:
focusOnClick: false
quietWhenActiveMs: 15000

截图

截图待补:需要在 Windows 上真机弹一条通知后截取横幅与通知中心两个画面。
你可以自己用 node tools/send-test-toast.mjs "测试" 弹一条来截,我会在这一节放图。

权限说明

插件不需要管理员权限,只使用当前用户可写的资源。具体会动到:

| 类别 | 具体内容 | 用途 |
| 用户目录写入 | %USERPROFILE%\.dsh\dsh-taskcompletednotification-plugin\(log.ndjson、spool\、lib\) | 诊断日志、通知暂存、点击处理器副本 |
| 用户级注册表(HKCU) | HKCU\Software\Classes\AppUserModelId\DeepSeek.Harness.Notify | 让通知署名显示为「DeepSeek Harness」+ 图标 |
| 用户级注册表(HKCU) | HKCU\Software\Classes\dsh-taskcompletednotification-plugin | 注册 dsh-taskcompletednotification-plugin:// 协议,实现「点击横幅拉起窗口」;插件卸载时会自动删除 |
| 进程 | 每次通知启动一个 powershell.exe(约 1 秒,用完即退,最多 3 个并发) | 调用 Windows 通知 API |
| 网络 | 无 | 插件本身不联网 |

不想要某些改动:registerAppId: false 关闭署名注册、focusOnClick: false 关闭点击激活、 enabled: false 彻底停用。

工作原理

1. 事件从哪来 —— 插件挂在 Harness 宿主进程上,只旁听三类信号,从不干预:会话日志里的 turn/end(reason.kind === 'completed')、user-questions/request、 approval/request。监听器注册在 ctx.root(服务根)上并带 { global: true }:插件自己拿到的 context 不是服务根,而两个 request 事件是按 agent 作用域过滤的 waterfall,不加这两条会被静默过滤掉、一个事件都收不到。

2. 怎么变成通知 —— lib/index.js 把标题正文拼成 toast XML(自带 XML 转义),写进 $DSH_HOME/dsh-taskcompletednotification-plugin/spool/,再起一个 powershell.exe 执行 lib/notify.ps1;后者只做 LoadXml + CreateToastNotifier(<已注册 AUMID>).Show(),并把结果写回同名 .result.txt 便于排查。

3. 署名与图标 —— 启动时把 DeepSeek.Harness.Notify 注册到 HKCU\Software\Classes\AppUserModelId\,Windows 才会把通知显示成「DeepSeek Harness」。

4. 点击拉起窗口 —— 通知带 activationType="protocol" 与 launch="dsh-taskcompletednotification-plugin://focus",点击时由系统按协议启动一个无窗口的 wscript 启动器,再跑 lib/focus-window.ps1:定位标题以 DeepSeek Harness 结尾的主窗口、必要时从最小化恢复,并在 SetForegroundWindow 被前台锁拒绝时依次改用 AttachThreadInput、按住 ALT 再抢。

自测

node tools/smoke.mjs # 39 项离线测试,不需要 Windows 也能跑
node tools/send-test-toast.mjs "正文" # 走插件自己的链路真弹一条
node tools/verify-click-focus.mjs # 验证「点击拉起窗口」这条链
node tools/pack.mjs # 重新打包发行版到 ../dist/
node tools/release.mjs --dry-run # 预览 GitHub Release 内容
npm run release # 打包 + 发布 Release(需 repo 权限的 GitHub 凭据)

许可证

MIT © 2026 S1m0n1314 —— 可自由使用、修改、分发,保留版权声明即可。

由 ai 生成,仅供参考
预览分享卡片长什么样 ↓S1m0n1314/dsh-TaskCompletedNotification-plugin
分享 · DeepSeek Harness Hub
S1m0n1314/dsh-TaskCompletedNotification-plugin

任务跑完或需要确认时弹出 Windows 横幅提醒

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