plugin-audio-alert
给DeepSeek Harness (DSH)的审批语音告警插件:当 DSH 遇到需要人工审核/审批时,用电脑 TTS 自动语音呼叫你——把"需要你审核"的内容念出来,同时照常在网页上弹出审批按钮让你点。
- Stars
- 0
- Language
- JavaScript
- Created
- Aug 20, 2026
- Updated
- Aug 20, 2026
Introduction
plugin-audio-alert
给 DeepSeek Harness (DSH) 的审批语音告警插件:当 DSH 遇到需要人工审核/审批时,用电脑 TTS 自动语音呼叫你——把"需要你审核"的内容念出来,同时照常在网页上弹出审批按钮让你点。
一句话:AI 需要你点头时,电脑会"开口"喊你,你听到后去网页点确认即可。
纯 Node 实现,无独立进程、无 Python:合成、转码、播放全部在插件内完成,注册进 profile 重启后即用。
功能
- 🔔 语音呼叫:审批触发时,用 edge-tts 神经音色外放朗读「需要你审核」的内容。
- 🎭 人物性格文案:播报话术可自定义模板(占位符
{reason}/{tool}/{reasonOrTool}),想让它"病娇软萌妹"口吻说话,改一行就行。 - 🎛️ 音色/音调/语速:可切换 edge-tts 音色,调节 pitch(音调)/ rate(语速)/ volume(音量)。
- 🛟 不碰审批:本插件只负责"播报提醒",审批决定仍由网页按钮完成,绝不吞掉审批。
本地零大模型下载(edge-tts 走云端),插件本体仅约 10KB。
架构
DSH 审批触发(approval/request 瀑布事件)
└─ plugin-audio-alert(Node 插件,prepend 优先)
├─ lib/tts.js edge-tts 协议(WebSocket)合成 mp3
├─ ffmpeg mp3 → wav
├─ PowerShell 外放(阻塞到播完)
└─ next() ──────▶ Web 审批卡片(照常弹按钮)
- 插件完全运行在 DSH 的 Node 进程内,没有常驻的独立进程。
- 唯一 npm 依赖是
ws(WebSocket 客户端);ffmpeg / PowerShell 是临时子进程,用完即退。
前置要求
| 项 | 要求 |
|---|---|
| 系统 | Windows 10 / 11(播放走 PowerShell,仅 Windows) |
| Node | DSH 自带(无需单独装) |
| 网络 | edge-tts 需联网 |
| ffmpeg | PATH 里有 ffmpeg 即可;没有则设 AUDIO_ALERT_FFMPEG 指定路径 |
快速开始
第 1 步:装依赖(仅 ws 一个包)
cd /d 本插件目录
npm install
或直接双击
install.bat。
第 2 步:把插件注册进 DSH profile
编辑 %USERPROFILE%\.dsh\profiles\<profile>\cordis.patch.yml(例如 web profile 就是 ~/.dsh/profiles/web/cordis.patch.yml),加入:
- insert:
- id: audio-alert
name: 'file:///D:/绝对路径/plugin-audio-alert/lib/index.js'
注意:
file:///后面用正斜杠的绝对路径,例如file:///D:/CodeFile/AI_Code/plugins/plugin-audio-alert/lib/index.js。也可用 pnpm 安装:
dsh plugin --profile web add "file:本插件目录的绝对路径",再把"plugin-audio-alert"加进 profilepackage.json的dsh.profile.bundles。
第 3 步:重启 DSH
dsh web
插件是 Host 端插件,必须重启
dsh web才生效。重启后无需再开任何进程。
第 4 步:触发一次审批测试
随便让 AI 做一件需要提权的事(例如让 AI 写文件到工作区外),审批触发后你应该听到语音播报,同时网页弹出审批按钮。
配置
优先用 config.json(插件根目录,改完重启 dsh web 生效);环境变量可覆盖它(在启动 dsh web 的窗口里设置)。
| 变量(config.json 键 / 环境变量) | 默认 | 说明 |
|---|---|---|
enabled / AUDIO_ALERT_ENABLED | true | 启用 / 禁用 |
voice / AUDIO_ALERT_VOICE | zh-CN-XiaoyiNeural | edge-tts 音色 |
pitch / AUDIO_ALERT_PITCH | +0Hz | 音调(格式 +xHz,如 +25Hz 更甜) |
rate / AUDIO_ALERT_RATE | +0% | 语速(格式 +x%,如 -10% 更慢/扭捏) |
volume / AUDIO_ALERT_VOLUME | +0% | 音量(格式 +x%) |
textTemplate / AUDIO_ALERT_TEXT_TEMPLATE | DeepSeek 需要你的人工审核:{reasonOrTool} | 播报文案模板(人物性格) |
ffmpeg / AUDIO_ALERT_FFMPEG | 自动探测 | ffmpeg 路径(PATH 没有时指定) |
config.json 示例:
{
"enabled": true,
"voice": "zh-TW-HsiaoChenNeural",
"pitch": "+0Hz",
"rate": "+0%",
"volume": "+0%",
"textTemplate": "DeepSeek 需要你的人工审核:{reasonOrTool}",
"ffmpeg": ""
}
播报文案模板占位符:{reason}=审批原因、{tool}=触发工具、{reasonOrTool}=原因或工具。示例(病娇软萌妹口吻):
set "AUDIO_ALERT_TEXT_TEMPLATE=主人~人家这里有个小请求,想请你确认一下下哦,是关于「{reasonOrTool}」的事情,答应人家好不好嘛~"
set只对当前 cmd 窗口有效;永久生效用setx 变量 值(需重开窗口)。
音色自定义
换 edge-tts 音色
列出所有音色:
npx edge-tts --list-voices
(或直接用 Python 版 edge-tts --list-voices 看列表。)
常用中文音色:zh-CN-XiaoxiaoNeural(温柔女声)、zh-CN-XiaoyiNeural、zh-CN-YunxiNeural(少年男声)、zh-CN-YunjianNeural(沉稳男声)、zh-TW-HsiaoChenNeural(台湾腔)、zh-HK-HiuMaanNeural(粤语)。
set AUDIO_ALERT_VOICE=zh-CN-XiaoxiaoNeural
调"甜 / 软 / 扭捏"(pitch / rate)
AUDIO_ALERT_PITCH=+25Hz→ 音调更高、更甜(格式必须是Hz)AUDIO_ALERT_RATE=-10%→ 语速更慢、更撒娇(格式是%)
⚠️ 别拉太狠:全局音调/语速偏移会让句尾语气词("吗/嘛")失真、像机器人。建议 pitch 0~+30Hz、rate 0~-15%,自然感主要靠文案本身。
人物性格(文案模板)
见上文 AUDIO_ALERT_TEXT_TEMPLATE。要点:语气词(哦/嘛/呢/呀)放在句尾自然位置,别满屏省略号;让 TTS 自己按标点走语调。
工作原理
DSH 的审批走 approval/request 瀑布事件(answerer 机制)。本插件用 prepend 抢在 Web 审批 answerer 之前:
- 拼好性格文案 →
lib/tts.js走 edge-tts 协议合成 mp3 → ffmpeg 转 wav → PowerShell 外放(后台进行,不阻塞); - 立即
next()委托给 Web 审批 answerer → 网页照常弹按钮。
故障排查
| 现象 | 原因 / 处理 |
|---|---|
| 没声音 | 看 dsh web 控制台是否有 [audio-alert] 播报失败 警告;常见是 ffmpeg 不在 PATH(设 AUDIO_ALERT_FFMPEG)或没联网 |
| 播报报 ffmpeg 相关错误 | ffmpeg 不在 PATH;设 AUDIO_ALERT_FFMPEG 指定路径 |
| 播报报 403 / WebSocket 错误 | 网络问题或微软接口变动;确认能联网 |
| 审批没语音也没弹窗卡住 | 检查插件是否已注册进 profile、dsh web 是否重启 |
文件清单
| 文件 | 作用 |
|---|---|
lib/index.js | DSH Cordis 插件本体(审批 answerer + 播报) |
lib/tts.js | edge-tts 协议实现(WebSocket 合成 mp3) |
config.json | 配置文件(音色/音调/语速/文案模板) |
package.json | 插件包元数据(依赖 ws) |
install.bat | 一键 npm install |
test-speak.mjs | 独立播报自检脚本(node test-speak.mjs) |
LICENSE | MIT 许可证 |
README.md / README.en.md | 中/英文档 |
限制与说明
- 仅支持 Windows(播放依赖 PowerShell)。
- 本插件只做语音提醒,审批决定仍由网页按钮完成。
- 本插件覆盖的是审批(
approval/request);模型主动提问(ask_user_question)是另一个 seam(userQuestions),未覆盖。 lib/tts.js的 edge-tts 协议参考 rany2/edge-tts(MIT)。
许可证
MIT