unifilitence/dsh-notify-say

dsh-notify-say

为 DSH 提供 Windows 桌面通知,默认把回合结果读出来:Windows TTS 零下载即可用,另有 13 个 VOICEVOX 语音包可在设置页下载。完成提醒会等子代理与后台任务结束后再响;审批、提问、出错立即提醒。语音包从 GitHub 下载,下载前需确认使用条款。

미분류deepseek-harnessdshnotification

dsh-notify-say

给 DeepSeek Harness Desktop 用的通知插件:任务跑完会说话。

别的通知插件"叮"一声;这个会喊你"任务完成了"。
而且子代理还在跑的时候,它不会骗你说完成了。

只支持 Windows。

设置页实拍(声音来源 = 系统语音合成)。语音包、提醒规则、高级区见下文。

目录

  • 它解决什么问题
  • 特性
  • 安装
  • 快速开始
  • 配置
  • 语音包
  • 关于"跳回会话"
  • 兼容性与降级
  • 已知限制
  • 常见问题
  • 开发
  • 许可

它解决什么问题

你让 AI 跑一个较长任务,然后切去干别的。常见两种通知插件的毛病:

  1. 该响的时候不响 —— 主会话一轮结束就报"完成",但其实它派出的子代理还在跑,你回来发现没干完。
  2. 不该响的时候一直响 —— 每个子代理结束都弹一次,连环轰炸。

本插件的做法:

  • 空闲门(idle gate):主会话这轮结束、但仍有子代理或后台任务在跑时,先不播;等全部结束再播一次。超时兜底(默认 10 分钟),防子任务卡死导致永不播报。
  • 按会话去抖:同一会话默认 60 秒内只响一次。
  • 失败单独提醒:回合出错时播日语道歉语音(可选)—— 比"任务完成"更该让你立刻知道。

特性

特性 · 说明 语音播报 · 播放本地 wav,不调用云端 TTS。发布版自带 1 个音色,另 13 个可在设置页按需下载 空闲门 · 有在飞工作时不误报"完成",全部结束才播一次 五类事件 · 完成 / 出错 / 被拦截 / 待批准 / 要提问,各自独立开关 设置页 GUI · 走官方 Config schema,在 DSH 设置页里直接改,改完立即生效 命令行 · tools/notify-config.ps1,适合脚本化与排查 切回窗口时跳会话 · 通知时你不在前台 → 你切回来时自动跳到那个会话(见下文) 点哪条通知就跳哪条 · 多会话同时完成时,点不同的 Toast 会落到各自的会话(可选开关,见下文) 不装语音也能用 · 没有语音包 = Toast + 系统提示音,这是正常配置 许可先告知 · 下载音色前弹出条款确认,写明署名要求与官方条款链接 诊断导出 · 一键导出脱敏日志(用户名/路径已替换),方便提 Issue 日志隐私分级 · 默认只记元数据,不记台词正文;要详细日志需手动开 debug 检查更新 · 显示当前/最新版本,有新版时给出升级命令(不自动更新,见下文)

联网说明:通知、播放、TTS 完全离线。
会联网的只有两件事:
① 下载语音包(访问 GitHub,只有你点「下载」时才发生)
② 检查更新(访问 npm registry 与 GitHub,每 24 小时最多一次)
不想让它检查更新?不点「检查更新」就不会主动查;已缓存的 24 小时内也不会再查。
网络不可用时这两件事都会失败,但不影响通知和语音。

安装

前置

  • DSH Desktop 0.2.1-rc.2 ~ 0.3.0(>=0.2.1-rc.2 <0.3.0)
  • 实测环境是 0.2.1-rc.2。更早版本未测过,所以没有声明支持
  • 设了上界 0.3.0:DSH 若有不兼容改动,市场会拦住而不是让你装了才发现
  • Windows(Toast 用 WinRT,播放用 MCI,调用 Windows PowerShell 5.1)

方式一:插件页(推荐,不用命令行)

  1. 打开 DSH 的 设置 → 插件
  2. 找到「包名或地址」输入框(不是上面那个搜索框 —— 那个只过滤已安装列表)
  3. 填进去:
dsh-notify-say
  1. 点「安装」,装完重启 DSH
装的时候卡住或报网络错误?在同一个面板里把「安装源」切到
「中国大陆镜像源」再试 —— 官方源在国内经常拉不动。
填 dsh-notify-say 是包名(不是搜索词)。它也能接受 GitHub 仓库地址
或本机目录路径,但包名最简单。

方式二:npm

npm install dsh-notify-say

方式三:手工 link(本地开发)

把本仓库目录链接进 profile:

D:\Program Files (x86)\DSH\profiles\desktop\package.json
  dependencies 里加:  "dsh-notify-say": "link:<本仓库路径>"
  dsh.profile.bundles 里加:  "dsh-notify-say"

然后在该 profile 目录执行 pnpm install,重启 DSH。

快速开始

装好之后什么都不用配就能用:任务完成时会弹 Toast + 播自带音色。

想做更多,进 DSH 设置 → 通知:

想做的事 · 去哪 换音色 / 调音量 · 设置页「音色」「音量」 下载更多音色(13 个可选) · 设置页「语音包」→ 点「加载列表」→ 选一个点「下载」 只保留提示音、不要语音 · 音源改成「系统提示音」 出错时也要语音提醒 · 「出错」开关(默认已开) 让子代理结束也提醒 · 「子代理」开关(默认关) 少响一点 · 「同会话去抖」调大 看看有没有新版 · 高级区「版本与更新」→ 检查更新

配置

四种来源,优先级由低到高(后者覆盖前者):

1. schema 默认值
2. cordis.patch.yml 的 config
3. DSH 设置页里改的值
4. tools/notify-config.ps1 写的 storages/config.json
⚠️ 注意语义:一旦你在设置页改过某项,再改 cordis.patch.yml 里同一项不再生效。
这是 DSH 官方设计(用户层优先级更高),不是本插件的 bug。

设置页

DSH 设置 → 通知。包含音源选择、音色、音量、增益、TTS 参数、五个事件开关、 去抖与冷却、音源按事件覆盖、自定义音频、语音包管理、日志级别、诊断导出等。

分常规区与「高级」折叠区:日常只用常规区,排查时才展开高级区。

命令行

cd <插件目录>\tools

.\notify-config.ps1 -Show              # 看当前生效值
.\notify-config.ps1 -Voice off         # 静音(Toast 仍弹)
.\notify-config.ps1 -Volume 40
.\notify-config.ps1 -VoiceMode random
.\notify-config.ps1 -VoiceName ankomon
.\notify-config.ps1 -Disable aborted -Enable subagents
.\notify-config.ps1 -Clear             # 交还控制权给设置页

改完立即生效,不需要重启 DSH。

语音包

核心包只带一个日语音色(ずんだもん),安装包约 3.2 MB。

另有 13 个音色可单独下载(每个约 1.7–3.0 MB,合计约 27 MB), 在设置页里点几下就能装,不需要命令行。

怎么装

  1. DSH 设置 → 通知 → 语音包 → 点「加载列表」
  2. 列表里会显示每个音色的名称、体积、署名要求
  3. 点「下载」→ 先弹出条款确认弹窗(见下)→ 确认后开始下载
  4. 装好后在「音色」下拉里就能选到

下载前会告知什么

点下载会弹一个居中弹窗,写明:

  • 署名要求(例如 VOICEVOX:ずんだもん)—— 你用这些语音做的内容需要保留这个署名
  • 官方条款链接(可点开原文)
  • 提示"下载后 zip 内也带 TERMS.md;你用它做的内容(视频、直播等)仍需守上述条款"

这不是走形式:13 个音色里有 2 个因为条款禁止再分发被我们排除在外, 1 个因为身份存疑(同名角色有多个)暂不收录。审核依据是官方条款原文, 留档在 docs/audio-audit/。

需要说清楚:我们的审核结论是依据官方通用条款得出的,
不等于各权利人针对"独立 WAV 素材 ZIP 再分发"出具过专项授权。

卸载

设置页里点「卸载」即可,会删掉该音色整个目录。 卸载不依赖网络 —— 离线时也能卸。

已装的音色放哪

%LOCALAPPDATA%\dsh-notify-say\voice-lines\<音色key>\

每个音色一个目录,卸载 = 删这一个目录。

不装语音包也完全可用

通知会退回 Windows Toast + 系统提示音。

想自己做音色

装 VOICEVOX(本地免费 TTS),启动引擎(默认 http://127.0.0.1:50021), 然后按命名规则把合成好的 wav 放进对应目录:

sounds/voice-lines/<key>~1.wav            完成
sounds/voice-lines/question/<key>~1.wav   提问
sounds/voice-lines/approval/<key>~1.wav   审批
sounds/voice-lines/fail/<key>~1.wav       出错

(合成脚本不随本包发布 —— 它依赖本地 VOICEVOX 引擎与特定音色表,放进发布包只会误导。)

关于"跳回会话":能做到什么,做不到什么

这一节把边界写清楚 —— 有些事是宿主没给接口,不是本插件偷懒。 结论先给:能在你切回来时跳到「你离开期间最早完成」的那个会话; 不能做到「点哪条通知就跳哪条」。

✅ 能做到:切回窗口时跳到那个会话

通知发出时你不在前台  →  插件记下那个会话
你切回 DSH 窗口       →  插件自动跳到它

所以体验是:你在别处干活 → 听到"任务完成了" → 切回 DSH → 它已经帮你跳过去了。