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

Windows 原生通知 zhangyuzhangyu233/dsh-windows-notification

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

在系统通知里查看进度并直接审批或回答

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

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

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

状态速览

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

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

验证判据与等级说明 →

可信度证据

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

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

读写/删除本地文件发起外部网络请求
查看扫描证据(共 14 处,展示前 14 条)
  • 读取本地文件
    index.js:77
    const parsed = JSON.parse(readFileSync(join(PLUGIN_DIR, 'package.json'), 'utf8'))
  • 写入本地文件
    index.js:1256
    mkdirSync(dirname(this.bridgeFile), { recursive: true })
  • 写入本地文件
    index.js:1265
    writeFileSync(temporary, payload, 'utf8')
  • 写入本地文件
    index.js:1266
    renameSync(temporary, this.bridgeFile)
  • 读取本地文件
    index.js:1275
    const parsed = JSON.parse(readFileSync(this.bridgeFile, 'utf8'))
  • 删除本地文件
    index.js:1276
    if (isRecord(parsed) && parsed.pid === process.pid) rmSync(this.bridgeFile, { force: true })
  • 读取本地文件
    index.js:1723
    const parsed = JSON.parse(readFileSync(pingStatePath(), 'utf8'))
  • 写入本地文件
    index.js:1742
    mkdirSync(dirname(pingStatePath()), { recursive: true })
  • 写入本地文件
    index.js:1744
    writeFileSync(temporary, JSON.stringify(payload), 'utf8')
  • 写入本地文件
    index.js:1745
    renameSync(temporary, pingStatePath())
  • 发起网络请求
    client.js:338
    request = fetch('http://127.0.0.1:' + port + '/ui/health', {
  • 发起网络请求
    client.js:422
    request = fetch('http://127.0.0.1:' + port + '/ui/' + route, {
  • 发起网络请求
    client.js:454
    request = fetch('http://127.0.0.1:' + port + '/ui/' + route, {
  • 发起网络请求
    client.js:492
    probe = fetch('http://127.0.0.1:' + port + '/ui/health', {
扫描于 2026/11/3(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

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

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

README

由 DeepSeek 最新模型翻译生成
dsh-windows-notification 智能体干完活了?让 Windows 替你喊一声。 把 DeepSeek Harness 的状态交给 Windows 通知中心——以桌面端自己的身份弹出原生 Toast;来不及切回 DSH?直接在通知里点「允许一次」、选选项,把智能体放行。 这是 DeepSeek Harness 的 Windows 原生通知插件。它把 Harness 里值得你抬头看一眼的时刻——一轮回答完成、需要你确认一次工具调用、智能体向你提问、一轮任务出错——变成 Windows 通知中心里的原生 Toast: 一句话卖点: - 💬 智能体干完活了? 让 Windows 替你喊一声——不用一直盯着终端。 - 🖱️ 通知替你按按钮——审批点「允许一次」,提问直接选选项,人不用切回来。 - 🪶 零依赖 · 纯本机 · MIT——只用一个 PowerShell + WinRT,不联网、不要管理员权限。
展开完整文档(README 剩余 1 节)
dsh-windows-notification

智能体干完活了?让 Windows 替你喊一声。

把 DeepSeek Harness 的状态交给 Windows 通知中心——以桌面端自己的身份弹出原生 Toast;来不及切回 DSH?直接在通知里点「允许一次」、选选项,把智能体放行。

这是 DeepSeek Harness 的 Windows 原生通知插件。它把 Harness 里值得你抬头看一眼的时刻——一轮回答完成、需要你确认一次工具调用、智能体向你提问、一轮任务出错——变成 Windows 通知中心里的原生 Toast:

一句话卖点:

- 💬 智能体干完活了? 让 Windows 替你喊一声——不用一直盯着终端。
- 🖱️ 通知替你按按钮——审批点「允许一次」,提问直接选选项,人不用切回来。
- 🪶 零依赖 · 纯本机 · MIT——只用一个 PowerShell + WinRT,不联网、不要管理员权限。

截图

完成 / 审批 / 提问 三种通知

设置页(静态预览)

- 身份正确:通知以 DeepSeek Harness 的应用身份(AUMID com.deepseek.dsh)发布,显示 DSH 的名字和图标,而不是「Windows PowerShell」;
- 可以操作:通知自带按钮——打开 DSH、知道了,审批通知里的 允许一次 / 拒绝,提问通知里直接列出选项按钮;
- 通知里直接审批 / 回答:你不在电脑前时,可以直接在通知里允许/拒绝一次敏感操作,或选择一个回答让智能体继续;
- 更聪明的推送:完成通知带「用时 · 步数 · 工具调用」摘要和清洗过的回复预览;同一会话的新通知会替换旧通知,不在通知中心堆积;错误和提问使用 High 优先级(系统允许时可穿透勿扰);
- 安静时不打扰:DSH 窗口在前台时默认不弹通知;系统开着「勿扰」时通知仍然会进入通知中心;
- 自带演示选项:设置里选一种演示类型、点一下就能看到对应通知(完成 / 审批 / 提问·选项 / 提问·文本),不用等真实事件;
- 即时、低延迟:设置页的「发送测试通知 / 发送演示通知」不再经过「写配置 → 等插件重新加载」,而是直接调用宿主在本机回环地址上的 /ui 通道(毫秒级请求 + 一次 Toast 进程,通常 0.2–0.8 秒出现);
- 纯本机、零依赖:不联网、不安装 npm 依赖、不需要管理员权限;通知通过 Windows PowerShell 5.1 的 WinRT API 发布。

DeepSeek Harness
┌──────────────────────────────┐
│ DeepSeek Harness │ ← 通知身份 = DSH 桌面端本身 │ 已回复 · 会话标题 │ │ 用时 1 分 12 秒 · 5 步 · … │ │ 回答摘要…… │
│ [ 打开 DSH ] [ 知道了 ] │
└──────────────────────────────┘

功能

| 事件 | 默认 | 通知内容 | 通知里的操作 |
| 一轮回答完成 | 开 | 会话标题 + 智能摘要 + 回复预览 | 打开 DSH / 知道了 |
| 一轮任务出错 | 开 | 会话标题 + 【错误码】 + 摘要 | 打开 DSH / 知道了 |
| 请求审批(你不在 DSH 前) | 开 | 工具名 + 审批原因 | 允许一次 / 拒绝 / 打开 DSH |
| 智能体提问(你不在 DSH 前) | 开 | 问题 + 选项概览(或文本输入框) | 选项按钮 / 发送 / 打开 DSH |
| 演示通知 | — | 由「演示选项」决定四种示例之一 | 对应按钮(演示回执) |

补充行为:

- 子代理(subagent)会话不会触发通知,避免刷屏;同一轮只通知一次;
- 同一会话的完成/错误通知默认合并替换(通知中心只保留最新一条);
- 审批/提问只有在 DSH 不在前台 时才接管;你在应用里时仍然由应用内 UI 处理;
- 审批 30 秒、提问 60 秒没有回应时自动交回应用内,不会把智能体卡死;
- 模型也可以主动调用 windows_notification 工具发一条自定义通知。

安装

从本地目录安装(推荐)

1. 克隆或下载本仓库到任意目录,例如:

git clone https://github.com/zhangyuzhangyu233/dsh-windows-notification C:/plugins/dsh-windows-notification

2. 在 DSH 的插件管理里「从本地目录安装」本目录,条目名为 Windows 系统通知 / Windows Notification;
3. 在配置档的 package.json 里加入依赖并以 link: 方式链接:

{ "dependencies": { "dsh-windows-notification": "link:C:/plugins/dsh-windows-notification" } }

4. 如果配置档没有自动加载它,把包名加进 dsh.profile.bundles,或在本配置档的 cordis.patch.yml 里插入一行(二选一,同一个 id 只能出现一次):

- insert:
- id: dsh-windows-notification
name: dsh-windows-notification

5. 重启一次 DeepSeek Harness,刷新页面后在 设置 → 内置插件 → Windows 通知 看到配置页(旧版 OSS dsh web 运行时则是 设置 → 插件 → 插件配置 里的卡片)。

从 npm 安装

已发布到 npm:dsh-windows-notification

npm install dsh-windows-notification
或作为 DSH profile 依赖:
"dependencies": { "dsh-windows-notification": "^1.3.0" }

也可以在 DSH 的插件管理里直接从 npm 安装 dsh-windows-notification,然后重启一次 DeepSeek Harness。

开发模式

修改插件代码(index.js / client.js)后需要重启 DSH(或禁用/启用插件一次)才能加载;修改配置项则会被运行中的实例直接读取(桌面运行时通过 config form 重新应用插件)。

设置

桌面端:设置 → 内置插件 → Windows 通知;旧版 Web 运行时:设置 → 插件 → 插件配置。
字段即时写入 DSH 设置(桌面运行时会重新应用插件),以下为默认值:

| 字段 | 默认 | 说明 |
| enabled | 开 | 总开关 |
| onTurnComplete | 开 | 回答完成时通知 |
| onApproval | 开 | 请求审批时通知 / 接管 |
| onError | 开 | 任务出错时通知 |
| onUserQuestion | 开 | 智能体提问时通知 / 接管 |
| skipWhenForeground | 开 | DSH 在前台时不弹自动通知 |
| includePreview | 开 | 通知正文带回答摘要 |
| smartSummary | 开 | 智能摘要:用时/步数/工具调用 + 清洗后的预览 |
| sessionCollapse | 开 | 同一会话的完成/错误通知合并替换 |
| sound | 默认 | 通知声音:默认 / 静音 |
| approvalActions | 开 | 允许在通知里直接允许/拒绝(仅 DSH 不在前台时接管) |
| approvalTimeoutSec | 30 | 审批通知超时秒数(5–300),超时交回应用内 |
| questionActions | 开 | 允许在通知里直接回答提问(仅 DSH 不在前台时接管) |
| questionTimeoutSec | 60 | 提问通知超时秒数(10–600),超时交回应用内 |
| maxPreviewChars | 180 | 摘要最大字符数(40–500) |
| demoKind | 提问·选项 | 演示选项:完成通知 / 审批通知 / 提问·选项 / 提问·文本 |
| testPing | 0 | 写入时间戳即触发一条测试通知(由「发送测试通知」按钮使用) |
| demoPing | 0 | 写入时间戳即触发演示通知(由「发送演示通知」按钮使用) |

演示选项

设置页的「演示」分组里有一个演示选项下拉(demoKind)和「发送演示通知」按钮:

- 完成通知:样式同真实完成通知(含操作按钮);
- 审批通知:允许一次 / 拒绝 / 打开 DSH,点击后回复一条演示回执;
- 提问·选项:方案 A / 方案 B / 稍后处理,点击即模拟"在通知里回答选项";
- 提问·文本:带文本输入框的提问通知,输入后点「发送」。

演示不会创建真实审批或回答,只用来验证 Windows 通知通道和按钮回环是否正常。
「发送测试通知」则只发一条最简单的连通性通知。

通知里的操作是怎么实现的

Windows 对未打包的 Win32 应用提供两种 Toast 激活方式。插件使用 协议激活(protocol activation),不需要 COM 服务、不需要管理员权限:

1. 宿主插件在 HKCU\Software\Classes\dsh-notify 注册 dsh-notify:// 协议,指向插件目录里的 notify-handler.ps1;
2. Toast 按钮/正文携带 dsh-notify://… URI;
3. 点击通知时 Windows 启动 notify-handler.ps1:
- 读取宿主插件写在 %LOCALAPPDATA%\dsh-windows-notification\bridge.json 里的本机回环端口与一次性 token;
- 把 open / approve / deny / answer / demo 动作 POST 给宿主插件的本机回环桥;
- 需要时把 DeepSeek Harness 窗口还原并切到前台。
4. 对于审批/提问,宿主插件在 approval/request、user-questions/request 瀑布里以 一次性 id 等待回环桥的决定;超时/取消/异常一律回退到应用内 UI,绝不阻塞智能体。

安全边界:回环桥只监听 127.0.0.1、只接受带 token 的 POST /action、决定只接受与待决请求匹配的一次性 id,token 每次启动重新生成,不写日志。

为什么通知显示为「DeepSeek Harness」

插件没有用 powershell.exe 自己的 AppUserModelID,而是使用 DSH 桌面端在开始菜单里注册的 AUMID:

com.deepseek.dsh

因此 Windows 会把通知归到 DeepSeek Harness 名下(名字与图标来自 DSH 的开始菜单快捷方式),通知中心里的分组也属于 DSH。

关于「勿扰 / 专注助手」

Windows 在开启「勿扰」时不会弹出横幅,但通知仍会进入通知中心——这与系统对其它应用(包括 Codex)的行为一致。审批、提问与错误通知会用 High 优先级发送;如果希望它们穿透勿扰,可以在 Windows 设置 → 系统 → 通知 → DeepSeek Harness 中允许它发送 优先通知。

架构

DSH host(纯 Node,index.js) ├─ ctx.on('session/event') turn/end → 完成/错误通知(智能摘要、同会话合并) ├─ ctx.on('approval/request') 审批通知 + 等待回环桥决定(prepend) ├─ ctx.on('user-questions/request') 提问通知/选项回答(prepend) ├─ 本机 HTTP 回环桥(127.0.0.1 固定候选端口 + token) │ └─ /ui/* 即时通道:设置页的「发送测试通知 / 发送演示通知」直接调用(无需重载插件) ├─ child_process → toast.ps1 以 AUMID com.deepseek.dsh 显示 Toast └─ HKCU 协议注册 → notify-handler.ps1 Windows 通知点击 → dsh-notify://… → notify-handler.ps1 → 回环桥 / 聚焦 DSH

两套运行时都支持:旧 OSS dsh 0.1.x(ctx.settings 命名空间 + settingsScope 卡片)与桌面端 0.2.x (插件 Config + configForms 设置页)。

| 文件 | 作用 |
| index.js | 宿主插件:事件监听、设置(两套运行时)、回环桥、智能摘要、Toast XML、公开 Config |
| client.js | 浏览器插件:旧运行时设置卡片 + 桌面运行时「内置插件」设置页 |
| toast.ps1 | Windows PowerShell 5.1 Toast 发送 / 前台窗口检测 / 优先级 |
| setup-protocol.ps1 | 注册 dsh-notify:// 协议(幂等,写用户注册表) |
| notify-handler.ps1 | 协议激活入口:回环桥动作 + 聚焦/启动 DSH |
| cordis.patch.yml | bundle 行与 18 个默认配置 |
| docs/INTERNALS.md | 完整的运行时契约(开发/维护用) |

验证与证据

以下链路都已在本机真实环境跑过(不是单元测试桩):

- 身份:通知以 com.deepseek.dsh 写入 Windows 通知中心,通知中心里的应用分组显示 DeepSeek Harness(不是 Windows PowerShell);
- 完成通知:独立 web 实例里发一条消息,回复结束后 WinRT 历史出现 turn-done-*,正文为「任务完成 · 会话标题」+ 摘要,按钮为 打开 DSH / 知道了;
- 通知内审批:让智能体在 workspace 外写文件触发沙箱升级 → 弹出带 允许一次 / 拒绝 的通知 → 从通知触发 approve → 回环桥 200 OK → 智能体继续执行升级后的命令;
- 协议与回环:dsh-notify:// 注册后点击可聚焦/还原 DSH;fake-bridge 测试覆盖 open/approve/deny/answer/demo 的全部 payload;
- 设置页与即时通道:旧运行时 Web 实例真实渲染卡片;桌面端 0.2.x 运行时用从 app.asar 导入的真实 cordis + schemastery 验证了 Config 校验、volatile 配置解包与重新应用;/ui 通道用真实双实例验证(GET /ui/health、POST /ui/test 后 WinRT 历史出现「测试通知」、POST /ui/demo 四种演示);
- 自动化测试:宿主 sim 48/48、真实 cordis 12/12、真实桌面运行时 9/9、/ui 真实 smoke 6/6(含 Origin: dsh-app://app 预检与真实 Toast)、客户端 harness 49/49、node --check 全绿。

诊断(重启后若仍有问题,一条命令定位)

宿主的 /ui/health 会返回插件版本、解析后的 18 项配置、待决审批/提问数量、上次 apply 时间和 UI 端口:

$bridge = Get-Content "$env:LOCALAPPDATA\dsh-windows-notification\bridge.json" -Raw | ConvertFrom-Json
curl.exe -s "http://127.0.0.1:$($bridge.uiPort)/ui/health"
直接触发一条测试通知 / 演示通知(绕过设置页): curl.exe -s -X POST "http://127.0.0.1:$($bridge.uiPort)/ui/test" curl.exe -s -X POST "http://127.0.0.1:$($bridge.uiPort)/ui/demo" -H "content-type: application/json" -d "" UI 端口优先用 49514–49522。本机这些端口被 Windows 保留时,自动退到 49714–49722 或 48080–48088(客户端会并行探测三组)。

复现命令(需要同机 Windows):

前台检测(JSON) powershell -File dsh-windows-notification\toast.ps1 -CheckOnly

以 DSH 身份发一条测试通知(XML 由调用方构造) $xml = '<toast duration="long"><visual><binding template="ToastGeneric"><text>DeepSeek Harness</text><text>测试通知</text></binding></visual><actions><action content="知道了" activationType="system" arguments="dismiss"/></actions></toast>'
$b64 = [Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes($xml))
powershell -File dsh-windows-notification\toast.ps1 -XmlBase64 $b64 -Tag manual-test

查看通知历史(确认身份/内容/按钮)
[Windows.UI.Notifications.ToastNotificationManager]::History.GetHistory('com.deepseek.dsh')

宿主行为契约见 docs/INTERNALS.md;验证脚本在仓库根目录的 .verify/notification/ 下。

环境和限制

- 仅 Windows 10/11;通知发送依赖 Windows PowerShell 5.1 的 WinRT 投影(系统自带);
- 改配置:桌面运行时即时重新应用;改插件代码后需重启 DSH(或禁用/启用插件一次);
- 延迟:设置页按钮走 /ui 即时通道(本机 HTTP + 一次 Toast 进程,通常 0.2–0.8 秒);自动事件通知同理,不再有「写配置 → 等插件重载」的多秒延迟。若 /ui 端口被防火墙/安全软件拦截,按钮会回退到旧配置写入路径(会慢一些);
- 系统通知被关闭/勿扰时,插件不影响 Harness 正常工作,只是你看不到提醒;审批/提问超时后自动回退到应用内;
- 通知按钮依赖 dsh-notify:// 协议注册;若注册失败,通知仍会显示,只是按钮点了没反应;
- 提问的「文本输入」依赖 Windows 把 Toast 文本框内容附加到协议 URI(不同 Windows 版本行为可能不同);选项按钮不受影响,文本回答会退化为超时回到应用内。

开发

插件没有构建步骤(纯 JS + PowerShell),运行时零 npm 依赖。宿主行为契约见 docs/INTERNALS.md,验证脚本在仓库根目录的 .verify/notification/ 下。

许可

MIT。

English — Native Windows toast notifications for DeepSeek Harness. The plugin posts turn-complete (with a smart summary), error, approval-request and agent-question notifications under the DSH desktop app's own identity (com.deepseek.dsh), with actionable buttons that open the app, answer an approval, or pick a question option straight from the notification. A demo option in settings previews each notification kind. Host half is dependency-free Node ESM supporting both the OSS 0.1.x runtime and the desktop 0.2.x Config/form runtime; the browser half ships an old-runtime settings card and a desktop settings page; PowerShell 5.1 + WinRT handles the transport and a localhost protocol bridge carries clicks back to the host. MIT licensed.
预览分享卡片长什么样 ↓zhangyuzhangyu233/dsh-windows-notification
分享 · DeepSeek Harness Hub
zhangyuzhangyu233/dsh-windows-notification

在系统通知里查看进度并直接审批或回答

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