Back to home@Couioly

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)
NodeDSH 自带(无需单独装)
网络edge-tts 需联网
ffmpegPATH 里有 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" 加进 profile package.jsondsh.profile.bundles

第 3 步:重启 DSH

dsh web

插件是 Host 端插件,必须重启 dsh web 才生效。重启后无需再开任何进程。

第 4 步:触发一次审批测试

随便让 AI 做一件需要提权的事(例如让 AI 写文件到工作区外),审批触发后你应该听到语音播报,同时网页弹出审批按钮。


配置

优先用 config.json(插件根目录,改完重启 dsh web 生效);环境变量可覆盖它(在启动 dsh web 的窗口里设置)。

变量(config.json 键 / 环境变量)默认说明
enabled / AUDIO_ALERT_ENABLEDtrue启用 / 禁用
voice / AUDIO_ALERT_VOICEzh-CN-XiaoyiNeuraledge-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_TEMPLATEDeepSeek 需要你的人工审核:{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-XiaoyiNeuralzh-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 之前:

  1. 拼好性格文案 → lib/tts.js 走 edge-tts 协议合成 mp3 → ffmpeg 转 wav → PowerShell 外放(后台进行,不阻塞);
  2. 立即 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.jsDSH Cordis 插件本体(审批 answerer + 播报)
lib/tts.jsedge-tts 协议实现(WebSocket 合成 mp3)
config.json配置文件(音色/音调/语速/文案模板)
package.json插件包元数据(依赖 ws
install.bat一键 npm install
test-speak.mjs独立播报自检脚本(node test-speak.mjs
LICENSEMIT 许可证
README.md / README.en.md中/英文档

限制与说明

  • 仅支持 Windows(播放依赖 PowerShell)。
  • 本插件只做语音提醒,审批决定仍由网页按钮完成。
  • 本插件覆盖的是审批(approval/request;模型主动提问(ask_user_question)是另一个 seam(userQuestions),未覆盖。
  • lib/tts.js 的 edge-tts 协议参考 rany2/edge-tts(MIT)。

许可证

MIT