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

桌面通知音效 paleech0/dsh-notify-desktop

DeepSeek Harnessv0.1.1
paleech06 天前有提交已提供中文文档扫描:含敏感能力

DSH 桌面应用支持 Windows 通知横幅,并按不同场景播放提示音

32.1/100
综合分
3
GitHub 星标
655
npm 周下载
—/5
用户评分

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

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add dsh-notify-desktop
npm 源 · dsh-notify-desktop 的发布者账号已校验与本仓库一致

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么
dsh 原生插件 · model
装得上吗
本站已在 dsh 0.2.1-rc.2 下真实安装成功(非静态推断);本次验证针对插件 v0.2.0,当前版本为 v0.1.1
L5 · 运行时冒烟等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 6 天前
档位由哪些信号合成

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

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查✓ 自动检查通过
展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✓npm 包dsh-notify-desktop @ 0.1.1
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖要求 >=0.2.0-rc.2 <0.3.0-0 · 最新 0.2.1-rc.2 兼容
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/19 22:24:12

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

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

可执行外部命令读写/删除本地文件
查看扫描证据(共 25 处,展示前 20 条)
  • 读取本地文件
    lib/index.js:317
    raw = readFileSync(textTemplateFile(root), "utf8");
  • 写入本地文件
    lib/index.js:359
    mkdirSync(directory, { recursive: true });
  • 写入本地文件
    lib/index.js:360
    writeFileSync(temporary, JSON.stringify(payload, null, 2), "utf8");
  • 写入本地文件
    lib/index.js:361
    renameSync(temporary, target);
  • 读取本地文件
    lib/index.js:365
    if (existsSync(temporary)) writeFileSync(temporary, "", "utf8");
  • 写入本地文件
    lib/index.js:365
    if (existsSync(temporary)) writeFileSync(temporary, "", "utf8");
  • 执行外部命令固定命令
    lib/index.js:5988
    const child = spawn("cmd.exe", [
  • 执行外部命令来自配置/变量
    lib/index.js:6080
    const child = spawn(POWERSHELL, [
  • 执行外部命令来自配置/变量
    lib/index.js:6171
    const child = spawn(POWERSHELL, [
  • 读取本地文件
    lib/index.js:6353
    if (existsSync(candidate)) {
  • 读取本地文件
    lib/index.js:6390
    names = readdirSync(dir);
  • 读取本地文件
    lib/index.js:6403
    bytes: statSync(join(dir, file)).size
  • 读取本地文件
    lib/index.js:6415
    if (!isAbsolute(source) || !existsSync(source)) return { error: "file not found" };
  • 写入本地文件
    lib/index.js:6421
    mkdirSync(dir, { recursive: true });
  • 写入本地文件
    lib/index.js:6424
    copyFileSync(source, join(dir, name));
  • 删除本地文件
    lib/index.js:6437
    rmSync(join(customSoundDir(), file), { force: true });
  • 删除本地文件
    lib/index.js:6555
    rmSync(join(directory, name), { force: true });
  • 执行外部命令来自配置/变量
    lib/index.js:6825
    const child = spawn(POWERSHELL, [
  • 执行外部命令来自配置/变量
    lib/index.js:6908
    const child = spawn(REG_EXE, [
  • 执行外部命令来自配置/变量
    lib/index.js:6951
    const child = spawn(POWERSHELL, [
扫描于 2026/11/1(0 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包

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

依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-api-session-controller@deepseek-ai/dsh-client-locale@deepseek-ai/dsh-client-ui-settings@deepseek-ai/dsh-client-ui-slots@deepseek-ai/dsh-host-webserver@deepseek-ai/dsh-session@deepseek-ai/dsh-session-projection@deepseek-ai/dsh-client-ui-renderer@deepseek-ai/dsh-client-ui-workspace@deepseek-ai/dsh-user-approval@deepseek-ai/dsh-api-gateway
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
v0.2.02026-10-25
· 新变化 · 按情境定制声音和弹窗文案。九种情境(五个回合结束、三种等待、仍在等待提醒)各自选择自己的声音和通知文案。 · 可保存的弹窗文案。每种情境最多三条命名文案,存放在 %LOCALAPPDATA%\dsh-notify\templates\templates.json,可就地编辑(名称 / 标题 / 正文、实时预览、带说明的占位符插入、删除前确认)。上一版自定义的全局标题/正文组合会自动迁移。 · 全新设置布局。三张卡片:桌面通知、情境开关、通知设置——每行带预览,使用真实文案和声音。 · 测试通知就在总开关正下方;模板编辑器和数字用等宽字体,其余跟随 DSH 主题字体。 · 升级 现有设置首次读取时迁移:四个声音组变成按情境选择,旧的已自定义模板组合变成已保存文案。 · 已验证 DSH 桌面版 0.2.1-rc.3:插件加载、投影投递、宿主 toast / 声音 / 静音 / 文案模板路由、设置预览、测试通知与缓存清理,以及含中文内容的保存 → 落盘 → 删除往返。 · 安装 & "\resources\runtime\cli\bin\dsh.cmd" plugin --profile desktop add dsh-notify-desktop
v0.1.12026-10-18
· 已在 DSH 桌面版 0.2.1-rc.2 上验证通过 版本校验、插件加载、会话投影投递、宿主 toast / 声音 / 静默三条路径、dsh://open 聚焦以及真实的 Windows toast 全部通过。 运行时代码无改动:本次发布更新了兼容性说明(README / CHANGELOG / 验收记录),并把这几份文档发布到 npm。 详见 docs/acceptance/2026-10-18-dsh-0.2.1-rc.2-compat.md。
v0.1.02026-10-17
· dsh-notify-desktop 0.1.0 首次在 npm 公开发布:dsh-notify-desktop@0.1.0 — · 亮点 · 为 DSH 桌面会话提供 Windows 通知:回合结束(完成/出错/中止/受阻/max-tokens)、审批请求、提问(含 run_code PTC 提问)、计划评审,以及等待过久时的一条提醒。 · DSH 窗口处于焦点时保持安静;3 秒去重。 · 按场景区分声音(完成 / 出错 / 等你处理 / 提醒),包括 sounds/ 里自带的四个作者音效和你自己导入的文件。 · 点击后通过 dsh://open 唤起 DSH 窗口。 · 已在 DSH 桌面版 0.2.1-rc.1 上端到端验证 —— 见 docs/acceptance/2026-10-17-dsh-0.2.1-rc.1-compat.md。 · 安装 & "\resources\runtime\cli\bin\dsh.cmd" plugin --profile desktop add dsh-notify-desktop 然后重启 DSH 桌面应用,打开「设置 → 通知」(Ctrl+,)。
数据来自仓库的 GitHub Release,可能与插件实际版本不一致。

README

由 DeepSeek 最新模型翻译生成
dsh-notify-desktop · English · 中文 给 DSH 桌面端 加 Windows 原生通知:会话跑完、出错、或停下来等你确认时弹一条系统通知,并播放为这种情况挑好的音效、显示为这种情况写好的文字;点通知把 DSH 窗口拉回前台。 它能给你什么 - 该提醒时提醒 —— 回合结束(正常完成 / 出错 / 被中止 / 被阻塞 / Token 上限)、等待审批、等待回答、计划评审,以及等待过久时的一条催办。 - 你在看就不吵 —— DSH 窗口有焦点时一律不弹;同一件事只弹一次(3 秒去重)。 - 每种情况一套音效和文字 —— 九个情况(五个结束原因、三种等待、一个催办)各自挑音效、各自选弹窗文本;每个情况可以保存最多 3 套自定义文本,每行都能先点「预览效果」看/听。 - 通知形式三选一 —— 通知 + 提示音 / 仅通知(静音弹窗)/ 仅提示音(只出声,不弹窗)。 - 可以用自己的音效和文字 —— 音效来源三类:Windows 音效、随插件发布的作者音效(sounds/)、你导入的文件;文字支持名称、标题、正文和占位符,保存在本机 JSON 里,改名/删除都走二次确认。 - 不会一直响 —— 文件类音效最长 8 秒;关掉总开关、切到「仅通知」、或切回 DSH 窗口,正在响的立刻停。
展开完整文档(README 剩余 1 节)
dsh-notify-desktop

· English · 中文

给 DSH 桌面端 加 Windows 原生通知:会话跑完、出错、或停下来等你确认时弹一条系统通知,并播放为这种情况挑好的音效、显示为这种情况写好的文字;点通知把 DSH 窗口拉回前台。

它能给你什么

- 该提醒时提醒 —— 回合结束(正常完成 / 出错 / 被中止 / 被阻塞 / Token 上限)、等待审批、等待回答、计划评审,以及等待过久时的一条催办。
- 你在看就不吵 —— DSH 窗口有焦点时一律不弹;同一件事只弹一次(3 秒去重)。
- 每种情况一套音效和文字 —— 九个情况(五个结束原因、三种等待、一个催办)各自挑音效、各自选弹窗文本;每个情况可以保存最多 3 套自定义文本,每行都能先点「预览效果」看/听。
- 通知形式三选一 —— 通知 + 提示音 / 仅通知(静音弹窗)/ 仅提示音(只出声,不弹窗)。
- 可以用自己的音效和文字 —— 音效来源三类:Windows 音效、随插件发布的作者音效(sounds/)、你导入的文件;文字支持名称、标题、正文和占位符,保存在本机 JSON 里,改名/删除都走二次确认。
- 不会一直响 —— 文件类音效最长 8 秒;关掉总开关、切到「仅通知」、或切回 DSH 窗口,正在响的立刻停。
- 点击回前台 —— 通知只把窗口拉回前台,刻意不跳转会话(更可预测)。

环境要求:Windows + DSH 桌面端(profile desktop),运行时 0.2.x。ffmpeg 可选(仅用于把非 .wav 的自定义音效转码),放在 PATH 里即可。

安装

从 npm 安装

& "<DSH 桌面端安装目录>\resources\runtime\cli\bin\dsh.cmd" plugin --profile desktop add dsh-notify-desktop

然后重启 DSH 桌面端,打开 设置 → 通知(窗口有焦点时按 Ctrl+,)。

从本地仓库安装

1. 把本仓库 clone 到一个固定目录(profile 以链接方式指向它,之后别挪动)。
2. 用桌面端自带 CLI 注册:

& "<DSH 桌面端安装目录>\resources\runtime\cli\bin\dsh.cmd" plugin --profile desktop add "link:<本仓库路径>"

3. 重启 DSH 桌面端,然后打开 设置 → 通知(窗口有焦点时按 Ctrl+,)。

设置项

设置页的「通知」段现在共三张卡。偏好存在渲染层 localStorage,文字和音效文件存在本机磁盘,改完立即生效。

卡一「桌面通知」—— 要不要发、怎么发:

| 控件 | 作用 |
| 启用通知 | 总开关;关掉后不再弹窗也不出声。交付相关的控件全部变灰(已选内容保留):通知形式、各情况的音效/文本选择、预览、催办分钟数、下面的情况开关;只有「自定义音效」「自定义文本」仍可编辑 |
| 发送测试通知 | 就在总开关下方;固定用默认音效(Windows 通知)+ 弹窗,不受通知形式和下面任何设置影响,用于检测配置是否正常 |
| 通知形式 | 三选一:通知 + 提示音(默认)/ 仅通知(只弹窗)/ 仅提示音(只出声,不弹窗) |

卡二「选择接收以下哪种情况的通知」—— 哪些情况要提醒:

| 分组 | 开关 |
| 会话结束 | 正常完成 / 出错 / 被中止 / 被阻塞 / 达到 Token 上限(每行附一句例子) |
| 等待你确认 | 等待审批 / 等待回答 / 等待计划评审(每行附一句例子) |

卡三「通知自定义」—— 每个情况的声音和文字:

| 控件 | 作用 |
| 情况行 | 只列出你在卡二勾选的情况(勾选变化实时增减)。每行 = 情况名 + 音效选择器 + 文本选择器 + 「预览效果」 |
| 预览效果 | 用该情况当前选中的文本(默认文本按示例值渲染)和音效,按当前通知形式弹/响 |
| 音效选择器 | 两级:先选来源(Windows / 作者 / 自定义),再选具体音效 |
| 文本选择器 | 两级:默认(内置文案)或自定义(该情况保存的文本,按名称列出) |
| 自定义音效(可收起) | 添加 / 列出 / 删除你的音效文件;「转换缓存」占用与清理也在里面 |
| 自定义文本(可收起) | 按情况管理已保存文本:每个情况最多 3 套,每套有名称、标题、正文,带「编辑」和红色「删除」(删除有二次确认) |

勾选情况后,下面的「通知自定义」会实时出现对应行;取消勾选只是隐藏,已配的音效和文本都保留,重新勾选回来还在。

音效

三个分区。 每个音效选择器都是两级:先选来源,再选该来源下的具体音效。

- Windows 音效 —— 内置 20 个:5 个通知事件 + 系统媒体库(chimes、ding、tada、Windows Error、 Critical Stop、Alarm0x、Ring0x 等)。
- 作者音效 —— 本仓库 sounds/ 里的 4 个 .wav。往那个文件夹再丢文件就等于加音效,不用改代码。
- 自定义音效 —— 你自己导入的。

用自己的文件。 点「添加音效…」会把文件复制到 %LOCALAPPDATA%\dsh-notify\custom,所以原文件之后移动或删除都不影响。
支持 .wav、.mp3、.m4a、.aac、.wma、.flac、.ogg、.opus。删除自定义音效会先弹行内确认。

声音什么时候停。 .wav 直接播放;其他格式首次播放时用 PATH 上的 ffmpeg 转码一次,占用计入「自定义音效」里的 「转换缓存」(在那里查看与清理)。文件类音效最长 8 秒;总开关关掉、切到「仅通知」,或窗口重获焦点时,正在响的立刻停。
没有 ffmpeg 时,wav 与随插件发布的音效照常可用,诊断接口会显示 media.ffmpeg: null。

为什么需要自定义音效。 Toast 只能引用 5 个 ms-winsoundevent 值,而在 Windows 11 上它们只对应 4 个彼此很像的「叮」—— Notification.IM 与 Notification.SMS 甚至是同一个文件。想让不同情况真的听得出差别,只能由宿主自己播放音频。

弹窗文本

每个情况一套文字。 真实通知的标题和正文来自该情况当前选中的文本:

- 默认文本 —— 内置的 {工作区} · {状态} / {内容},不需要配置。
- 自定义文本 —— 在该情况行里选择,或在卡三的「自定义文本」里新建/编辑。每个情况最多保存 3 套。

编辑器。 名称(最多 24 字)、标题(120 字)、正文(300 字);占位符 {工作区} {状态} {内容} {分钟} 可点击插入,编辑器里会实时渲染一行预览。长度上限与 Windows Toast 的截断一致。

测试与预览。 卡一的「发送测试通知」永远是固定文案 + 系统默认音效;卡三的「预览效果」才用该情况真正的文本和音效(跟随当前通知形式)。默认文本的 {内容} 为空时整条正文回退到该情况的内置提示句。

存在哪里。 文本内容保存在 %LOCALAPPDATA%\dsh-notify\templates\templates.json(和自定义音效同一个 dsh-notify 目录),按情况分组、每个情况最多 3 套;写入走临时文件 + rename,损坏时按空库处理不会崩。设置里只存"当前用哪一套"的 id;模板被删掉时该情况自动回退默认文本。手动编辑这个文件后需要重启桌面端(客户端启动时加载一次)。

兼容性

| 实测版本 | DSH 桌面端 0.2.1-rc.3:插件加载、会话投影、宿主 Toast / 音效 / 静音 / 文本模板路由,以及设置页里的预览、测试通知、缓存清理均实测通过(证据);更早的 0.2.1-rc.2 / rc.1 / 0.2.0-rc.2 验收记录见 docs/acceptance/ |
| 声明范围 | >=0.2.0-rc.2 <0.3.0-0(semver 加载闸门)—— 表示加载器会放行从 0.2.0-rc.2 起的整条 0.2 线(含预发布);只有上表实测版本经过验证,范围内其它版本不保证。0.2.0-rc.1 及更早、0.3.x 不在范围内 |
| 平台 | 仅 Windows 桌面端 profile;web profile 没有 Toast 通道,未验证 |
| seam 核对 | 0.2.1 运行时镜像不带 .d.ts;本插件用到的全部 seam 均按其编译 JS 复核通过 |

兼容声明同时写在 dsh.engines.dsh 和 peerDependencies.@deepseek-ai/dsh(两处保持一致);加载器用 semver.satisfies(runtime, range, { includePrerelease: true }) 判定,不匹配会直接跳过该插件(不加载)。
运行时不在范围内时,可以显式豁免:

dsh.cmd plugin --profile desktop allow-version dsh-notify-desktop@0.2.0 --dsh-version <你的版本> --accept-risk

工作原理

两半组成,不改任何 harness 代码。

- 宿主半侧:注册一个会话投影(notify)和若干同源路由;文本模板的读写也由宿主完成(原子写、上限校验)。
- 客户端半侧:从会话列表读那个投影,判断该不该通知,按情况取音效与文本,然后发出去 —— 窗口失焦时走宿主 PowerShell Toast,路由不可达时退回渲染层通知。

提问故意有两个来源,都不能删:工具调用式提问能进投影;而服务级提问(计划评审)根本不进会话日志,所以宿主用 { global: true } 监听 user-questions/request 瀑布,经有界队列交给客户端。跨源去重键保证不会重复弹两条。

| 路由 | 用途 |
| GET /dsh-notify/debug | 投影状态 + 客户端最近上报 + ffmpeg/播放器状态 |
| POST /dsh-notify/toast | 弹一条通知(标题、正文、音效 id)|
| POST /dsh-notify/focus | 通过 dsh://open 把窗口拉回前台 |
| POST /dsh-notify/silence | 停掉正在播放的声音 |
| GET/POST /dsh-notify/sound-library | 列出两个音效目录 |
| POST /dsh-notify/import-sound、/delete-sound | 添加 / 删除自定义音效 |
| GET/POST /dsh-notify/sound-cache | 查询 / 清理转码缓存 |
| GET/POST /dsh-notify/text-templates | 读取全部文本模板;保存 / 删除一套 |
| POST /dsh-notify/pick-file、GET /dsh-notify/foreground | Windows 选文件框;OS 级焦点判定 |
| GET /dsh-notify/questions | 轮询宿主侧提问队列 |

排查

Windows 通知不进操作中心,所以诊断接口是唯一的证据通道。端口每次启动可能不同,取当前桌面端 Web 地址里的那个:

Invoke-WebRequest http://127.0.0.1:<桌面端端口>/dsh-notify/debug

返回投影注册状态、客户端最近 40 条上报(每条决定、通道选择、平台结果),以及音效链路状态(media.ffmpeg、media.soundPlayers)。

开发

pnpm install
pnpm run check # typecheck + vitest + build

lib/ 是故意提交的:profile 链接的就是这个目录,构建产物随源码一起走。AGENTS.md 里是仓库规则,以及那些不许"优化"掉的实测约束 —— 宿主 bundle 必须自包含、Toast 子进程必须保留管道 stdio、音频只能走 System.Media.SoundPlayer。

已知限制

- 没有托盘角标 / 任务栏角标 / 窗口闪烁;那些需要主进程 API,插件够不到。
- 部分场景下点通知只把窗口拉回前台,不跳转会话。
- error 与 max-tokens 两个结束态只有单测覆盖,没有真机构造过。
- 插件无法感知通知被关闭,所以文件类音效用「封顶 8 秒」代替跟随通知生命周期。
- 一套自定义文本只属于一个情况;同一套文案给多个情况用需要各存一份。手工编辑模板文件后需重启桌面端才会重新读取。
- 仅支持 Windows 桌面端 profile。

许可证

MIT · 第三方许可见 THIRD-PARTY-NOTICES.md。

非官方插件:与 DeepSeek 官方无关,未获其背书或赞助。「DeepSeek」「DSH」「DeepSeek Harness」仅用于说明本插件接入的对象。
预览分享卡片长什么样 ↓paleech0/dsh-notify-desktop
分享 · DeepSeek Harness Hub
paleech0/dsh-notify-desktop

DSH 桌面应用支持 Windows 通知横幅,并按不同场景播放提示音

回到顶部