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

Windows 系统通知 LucienLL/dsh-win-toast

DeepSeek 客户端
LucienLL11 天前有提交已提供中文文档扫描:含敏感能力兼容 / 相关生态

在需要确认或回答时弹出系统通知,避免错过等待

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

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

相关生态插件(非 dsh 原生,按其对应运行时安装)
git clone https://github.com/LucienLL/dsh-win-toast.git

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:仅索引
是什么
生态应用
桌面端 / Web 外壳,不以 dsh plugin add 安装
装得上吗
本站尚未做安装检查
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 11 天前
档位由哪些信号合成

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

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

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

可执行外部命令读写/删除本地文件
查看扫描证据(共 2 处,展示前 2 条)
  • 读取本地文件
    lib/index.js:68
    return existsSync(absolute) ? absolute : 'powershell.exe'
  • 执行外部命令来自配置/变量
    lib/index.js:141
    child = spawn(shell, args, { windowsHide: true, stdio: ['ignore', 'pipe', 'pipe'] })
扫描于 2026/11/2(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

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

依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/schemastery
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

DeepSeek Harness 插件:需要确认 / 提问 / 回合结束时由宿主进程直接弹 Windows 系统通知(Toast),不依赖浏览器通知权限

README

由 DeepSeek 最新模型翻译生成
dsh-win-toast DeepSeek Harness 的 Windows 原生通知插件:需要你确认 / 回答时、回合结束时,由 DSH 宿主进程直接弹系统通知(不依赖浏览器标签页在前台)。 曾用名 dsh-desktop-toast。该 npm 名称已由其他作者先占用(同功能、0.1.2),本项目改名 dsh-win-toast 发布,代码与仓库均为独立实现。 为什么放在宿主侧 DSH 的确认与提问是「浏览器端应答、宿主端永久等待」的模型:只要标签页不在前台,你就可能完全错过一个正在等你的弹窗。本插件不走浏览器 Notification,而是在宿主进程里观察事件、调用 Windows Toast API,所以标签页被切走、最小化、被浏览器冻结时依然会提醒。 插件能做的只有提醒本身:真正答复仍需要在 DSH 页面里点。
展开完整文档(README 剩余 1 节)
dsh-win-toast

DeepSeek Harness 的 Windows 原生通知插件:需要你确认 / 回答时、回合结束时,由 DSH 宿主进程直接弹系统通知(不依赖浏览器标签页在前台)。

曾用名 dsh-desktop-toast。该 npm 名称已由其他作者先占用(同功能、0.1.2),本项目改名 dsh-win-toast 发布,代码与仓库均为独立实现。

为什么放在宿主侧

DSH 的确认与提问是「浏览器端应答、宿主端永久等待」的模型:只要标签页不在前台,你就可能完全错过一个正在等你的弹窗。本插件不走浏览器 Notification,而是在宿主进程里观察事件、调用 Windows Toast API,所以标签页被切走、最小化、被浏览器冻结时依然会提醒。

插件能做的只有提醒本身:真正答复仍需要在 DSH 页面里点。

触发点

| 事件 | 默认 | 通知标题 |
| approval/request(工具执行需要确认) | 开 | DSH · 等待你确认 |
| user-questions/request(ask_user_question、计划确认) | 开 | DSH · 需要你回答 |
| turn/end 且 reason.kind === 'completed' | 开 | DSH · 回复完成 |
| turn/end 且为 error / aborted / blocked / max-tokens / interrupted | 开 | DSH · 回合中断 |

以下情况不提醒:

- 子智能体会话(header.origin === 'subagent' 或 delegationDepth > 0)——它们没有人类应答者,提醒只算噪声。
- turn/end 的 forked 原因——那是 fork 种子的记账事件,不是你看着结束的回合。
- 同类通知间隔小于 minIntervalMs 的重复(默认 1.5s),防止突发刷屏。

安装

从 npm(推荐)
dsh plugin --profile web add dsh-win-toast

或从本地检出
dsh plugin --profile web add <本目录路径>

然后重启 DSH web(插件是宿主侧插件,需要重新组合)。

同生态的替代实现(同样功能、不同作者):dsh-desktop-toast、dsh-desktop-notify、dsh-notify-me。装之前建议只留一个,否则同一次确认会收到多条通知。

发送方身份(一次性,可选)

Windows 只认「与 AUMID 同名的开始菜单快捷方式」来决定通知的发送方名称与图标;没有快捷方式的 AUMID 会被 API 接受、然后被系统静默丢弃。所以:

- 不注册:默认使用 {1AC14E77-02E7-4E5D-B744-2EB1AE5198B7}\WindowsPowerShell\v1.0\powershell.exe(系统自带,已实测可达),但发送方显示为「Windows PowerShell」。
- 注册(推荐外观):在开始菜单建一个带 AppID 的快捷方式,通知改显示为 DeepSeek Harness + DSH 图标。

powershell.exe -NoProfile -ExecutionPolicy Bypass -File scripts/register-aumid.ps1
-Aumid 'DeepSeek.Harness.Notify'
-TargetPath 'E:\Program Files\DeepSeek Harness\DeepSeek Harness.exe'
-IconPath 'E:\Program Files\DeepSeek Harness\DeepSeek Harness.ico'

撤销 powershell.exe -NoProfile -ExecutionPolicy Bypass -File scripts/register-aumid.ps1 -Aumid 'DeepSeek.Harness.Notify' -Unregister

注册后把配置里的 appId 设成同一个 AUMID;没注册就把 appId 留空/改回默认的 PowerShell AUMID。

配置项(Settings → Plugins)

| 键 | 默认 | 说明 |
| enabled | true | 总开关 |
| notifyApproval | true | 工具确认提醒 |
| notifyQuestion | true | 提问 / 计划确认提醒 |
| notifyTurnComplete | true | 回合完成提醒 |
| notifyTurnError | true | 回合异常提醒 |
| includeReason | true | 确认通知里是否附带工具给出的理由 |
| sound | true | 是否播放系统提示音 |
| minIntervalMs | 1500 | 同类通知最小间隔 |
| language | zh | zh / en |
| appId | PowerShell AUMID | 通知发送方身份 |

实现要点

- 监听 approval/request 与 user-questions/request 时以 { prepend: true } 注册,弹完通知原样 next() 交还给真正的应答者,绝不吞掉请求、绝不改变审批结果。所有回调都包在 try/catch 里:通知失败不能影响审批链路。
- 每次通知是一次短命的 powershell.exe -File lib/toast.ps1(约 0.3–0.6s)。必须用 Windows PowerShell 5.1——PowerShell 7 已移除 WinRT 投影,Windows.UI.Notifications 在 7 里不可用。
- 同一时刻只跑一个通知进程,后来的覆盖尚未启动的旧通知。
- lib/toast.ps1 是纯 ASCII:Windows PowerShell 5.1 会按当前 ANSI 代码页解析无 BOM 的 UTF-8 脚本,源码里的中文会把它弄坏;所有中文正文只经由参数(UTF-16 命令行)传入。

已知边界

- Windows 专注助手 / 勿扰模式、以及每个 AUMID 的通知开关拥有最终否决权,插件无法绕过。
- 通知正文只包含工具名、理由、会话标题,不含工具参数,避免把敏感内容推到锁屏界面。若不希望会话标题出现在通知里,可关闭对应开关。
- DSH 标签页完全关闭时,审批本身仍会 fail-closed 拒绝;通知只能起提醒作用。

验证

node --check lib/index.js
node test/notify.test.mjs # 纯逻辑单测(10 项)
node scripts/smoke-wiring.mjs # 假 ctx 跑通三条监听 + 瀑布委托,并实测发通知

smoke-wiring.mjs 结束后可以用 PowerShell 查 toast 历史,确认真正送达:

[void][Windows.UI.Notifications.ToastNotificationManager, Windows.UI.Notifications, ContentType=WindowsRuntime]
([Windows.UI.Notifications.ToastNotificationManager]::History.GetHistory('DeepSeek.Harness.Notify')).Count
预览分享卡片长什么样 ↓LucienLL/dsh-win-toast
分享 · DeepSeek Harness Hub
LucienLL/dsh-win-toast

在需要确认或回答时弹出系统通知,避免错过等待

这是你的仓库?认领条目

回到顶部