前言¶
DeepSeek Harness (DSH) 提供了插件化架构。在长时间运行或调试时,开发者往往需要明确知道当前 Agent 的对话轮次是否结束。dsh-voice-notify 是一个宿主侧插件,它挂接 DSH 原生的“轮次收尾”扩展点,在对话真正结束时触发中文语音播报。
核心功能¶
- 轮次收尾播报:监听
agent/turn-stopping事件,在对话真正结束时播报中文语音。 - 内置语音库:内置 20 条“晓晓·温暖”风格的叠词语音(WAV 格式)。
- 可视化配置:提供设置页,支持总开关、子代理轮次过滤、最小间隔、固定语音选择等。
- 自定义扩展:支持指定自定义语音目录和脚本。
- 轮次过滤与间隔:支持子代理轮次过滤,并可通过
minIntervalMs防止频繁播报。
安装与启用¶
插件仅支持 Windows 平台。
安装命令¶
在解压后的目录下运行:
powershell -NoProfile -ExecutionPolicy Bypass -File .\install.ps1
守护热挂载(推荐)¶
如需在运行中的 DSH 实例中立即生效(无需重启),可使用守护热挂载模式:
powershell -ExecutionPolicy Bypass -File .\install.ps1 -Hot
工作原理¶
- 挂接缝:
agent/turn-stopping(宿主serial扩展点,一轮真正收尾时派发)。 - 放音:随机播一条内置 WAV;可选追加自己的语音目录。
- 非阻塞:
spawn后unref(),立刻返回,绝不等它放完。 - 容错:任何异常都吞掉只记日志,绝不影响任务收尾。
配置¶
配置项位于挂载条目的 config 中:
- id: voice-notify
name: dsh-voice-notify
config:
enabled: true # 总开关
includeSubagents: false # 子代理轮次是否也响
minIntervalMs: 4000 # 两条提醒的最小间隔
clip: '' # 固定一条,如 'done-3';留空则随机
clipDir: '' # 额外语音目录,*.wav 一起进随机池
voiceScript: '' # 覆盖放音脚本(默认包内 lib/play.ps1)
注意事项¶
- 平台限制:仅支持 Windows 平台。
- 子代理默认行为:子代理轮次默认不响,需配置
includeSubagents: true。 - 最小间隔:默认为 4000ms,防止频繁播报。
- React 依赖:React 为可选依赖。
- 日志位置:日志文件位于
$DSH_HOME/voice-notify.log。