DeepSeek Harness 语音对话插件介绍

前言

DeepSeek Harness (DSH) 提供了插件化扩展能力。在 Web 端开发时,如果希望为对话界面增加语音交互功能,通常需要编写后端服务或引入外部语音 SDK。该插件通过浏览器原生的 Web Speech API,实现了纯客户端的语音识别与朗读(TTS)功能,无需服务端支持,也不需要配置 API Key。

插件定位

  • 名称:lak321/dsh-voice-chat
  • 一句话描述:DeepSeek Harness 语音对话插件,支持语音输入与自动/手动朗读回复。
  • 维护者:lak321
  • 类别:客户端
  • 许可证:MIT

核心功能

  • 语音输入:利用 Web Speech API 进行语音识别,支持普通话、粤语、台湾国语、英语。识别结果实时显示在输入框中,支持编辑后发送。
  • 朗读回复:集成浏览器 TTS 引擎,支持对 AI 回复进行朗读。提供自动朗读功能(默认开启),通过消息序号判断新旧消息,避免历史消息重复朗读。
  • 语音设置:支持选择人声、调节语速(0.5~2.0)与语调(0~2.0)。
  • 文本清理:自动剥离 Markdown 标记(如粗体、斜体、代码块、标题等),防止 TTS 朗读出“星号星号”等噪音。
  • 数据持久化:所有设置通过 localStorage 保存,刷新页面后保留。
  • 架构特点:纯客户端插件,无服务端依赖,无 API Key 需求。

安装与启用

该插件仅兼容 DSH Profile: web。

使用官方命令安装(git 源,产物已入库,无需构建):

dsh plugin --profile web add "github:lak321/dsh-voice-chat#<commit>&path:/"

安装完成后需要重启 DSH 进程(例如运行 npx -y @deepseek-ai/dsh web)。

注意:旧的手动复制 client/ 目录并注入 cordis.patch.yml 的方式已废弃。

典型用法

  1. 语音输入:点击输入框旁的按钮说话,识别后的文字会自动填入输入框,可编辑后直接发送。
  2. 朗读回复:每条 AI 回复旁会出现朗读按钮,点击即可朗读该条消息。系统默认开启自动朗读,新回复生成时会自动朗读。
  3. 设置调整:在设置面板中,可以关闭自动朗读,选择人声,或调整语速和语调。

开发与注意事项

  • React Hook 规范:如果涉及 React 开发,props.useSession 必须在组件函数体顶层调用,不能在 onClick 等事件处理函数中调用,否则会报错。
  • 导出要求:Client 插件必须导出 exports.inject 才能使用 ctx.slots。
  • 运行机制:插件通过 ctx.slots.inject 注册 slot 到 conversation.input.left 和 conversation.chat.assistant-actions,通过 SpeechRecognition 和 speechSynthesis 实现核心逻辑。

结语

该插件为 DSH Web 界面提供了轻量级的语音交互能力,适合需要在浏览器端直接使用语音功能的场景。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜