DSH HUB
HomePlugin StorePlugin PacksCommunityRankingsResourcesPublish Guide
Plugin source
Back to catalog

dytom18 /

dytom18/dsh-plugin-voice-dictation

Verified

说话即任务:给 DSH Web GUI 加语音听写,说完自动发送给 Agent(纯前端,无需 API Key)

★ 0 Stars0 Forks0 IssuesN/A Community rating0 Confirmed installs
View on GitHub
READMESource: main@dce1e76f

🎙️ dsh-plugin-voice-dictation · 语音听写

说话即任务:点一下 🎤,说出你的任务,自动填入输入框或直接发送给 DeepSeek Harness Web GUI 里的 Agent —— 从此不用打字。

ci license topic

纯浏览器端实现:使用浏览器内建的 Web Speech API(Chrome / Edge 自带在线语音识别,无需任何 API Key、无需联网配置密钥、无需构建)。


功能

能力 说明
🎤 一键听写 点击悬浮按钮开始说话,实时显示转写(灰字=临时结果),再说一次点击即结束
自动发送 识别结束后按设置自动把任务发送给当前会话(也可改成只填入输入框草稿)
自动续接 浏览器静音超时/网络抖动自行断流时自动续接,不会把半句话当成说完了发出去
智能接入 优先走 DSH 客户端 API(composer 输入机 setDraft+submit / conversation.send),失败自动降级为 DOM 写入输入框
草稿保护 输入框里已有你手写的内容时绝不抢发、绝不覆盖:自动改为追加进草稿并提示
撤销口令 说「取消 / 算了 / 错了 / 重来」等(整句)→ 本条直接丢弃,不发送
更正口令 说「更正 / 上一条作废」→ 自动通知 Agent「上一条任务作废,以下一条为准」
去重 同一句被浏览器拆成两段结果下发时自动合并,绝不出现重复两行
可拖动按钮 按钮位置随意拖动(拖动不会误触发录音),位置持久化(localStorage + Cookie 双写)
可隐藏 ⚙ 里一键隐藏悬浮按钮;Ctrl+Shift+M 随时唤回
随手可关 面板 × 或 Esc 关闭;面板默认不显示,不占屏幕
快捷开关 Ctrl+Shift+M 全局开/关听写
停止后快捷操作 识别完成后出现「发送 / 填草稿 / 丢弃」三个按钮,不满意随时重来
超时保护 单次最长听写 90 秒自动结束(自动续接不延长上限),不怕忘关麦克风
自愈 组件被页面框架移除后 10 秒内自动重建
中英双语 界面跟随浏览器语言;识别语言可在设置里选 中文 / English / 跟随浏览器
安全兜底 权限被拒、浏览器不支持、网络错误都有明确提示;插件任何异常都不影响 DSH 页面

安装

方式 A:一行从 GitHub 安装(推荐)

dsh plugin --profile web add github:dytom18/dsh-plugin-voice-dictation

方式 B:克隆后本地安装

git clone https://github.com/dytom18/dsh-plugin-voice-dictation.git
dsh plugin --profile web add ./dsh-plugin-voice-dictation

方式 C:已在本地(开发调试)

dsh plugin --profile web add C:\Users\hp\.dsh\plugins\dsh-plugin-voice-dictation

暂未发布到 npm(npm 同名包已被他人占用,且新账号受 2FA 限制),目前以 GitHub 为唯一分发渠道。 Windows 桌面端安装前请完全退出 DSH Desktop(含托盘图标),避免 pnpm 占用报 EPERM。

然后重启 DSH 服务(已安装 dsh-setting-restart 的话:设置 → 通用设置 → 一键重启;或在服务端 dsh web 重启),页面按 Ctrl+Shift+R 强制刷新一次。

使用

  1. 页面右下(可拖动)出现紫色圆形 🎤 按钮;
  2. 点击它 → 打开听写面板,按钮变红开始录音;
  3. 说出你的任务(例如:“帮我写一个 Python 脚本,统计当前目录下所有文件的行数”);
  4. 说完了再点一次 🎤(或等待 90 秒自动结束);
  5. 默认自动发送:任务直接发给了 Agent 🚀;若在设置里关闭了自动发送,则文字填入输入框,你按回车发送即可。

记住:Ctrl+Shift+M 也能随时开始/停止听写。

设置

点面板右上角 ⚙:

选项 说明
识别语言 中文(普通话)/ English (US) / 跟随浏览器
自动发送 开启=说完即发送给 Agent;关闭=只填入输入框草稿
发送前确认 开启=说完先显示文字,点「发送」才发(重要任务推荐)
显示悬浮按钮 关闭=整个插件从屏幕上收起;Ctrl+Shift+M 可唤回
复位按钮位置 按钮移丢了?一键回默认位置

语音口令(整句说即可)

你说 插件行为
取消 / 撤消 / 算了 / 错了 / 说错了 / 不对 / 不要 / 等等 / 重来 / 重新说 / 别发 本条不发送,提示重新说
更正 / 纠正 / 改口 / 上一条作废 / 上一条不算 自动给 Agent 发一句「上一条任务作废,以下一条为准」
其他任何内容 按设置发送(或填入草稿);输入框已有手写内容时改为追加、不发送

注意:只有整句等于这些词才触发(例如「不要用 Python,改用 Go」不会被当成取消)。

验证是否加载成功

浏览器按 F12 打开控制台,执行:

__VOICE_INPUT_DEBUG__.state()     // 插件状态:supported / sessionsAvailable / send / confirm / visible
__VOICE_INPUT_DEBUG__.ui()        // 界面状态:面板是否可见、按钮是否显示
__VOICE_INPUT_DEBUG__._probe()    // 会话链路自检:scope / conversation / 输入机 / 当前草稿
__VOICE_INPUT_DEBUG__._classify('取消')   // 口令分类:cancel / correct / normal

没有麦克风也能完整验证链路:

__VOICE_INPUT_DEBUG__.simulateDispatch('帮我分析今天的行情', true)   // 模拟识别并自动发送
__VOICE_INPUT_DEBUG__.simulateDispatch('帮我看看这个文件夹', false)  // 模拟识别并填入草稿
__VOICE_INPUT_DEBUG__.simulateFinish('帮我统计文件数量')             // 模拟「停止录音」全链路

工作原理

🎤 点击 → Web Speech API 在线识别(zh-CN / en-US)
          ↓ 实时转写
识别结束 → 0) 口令判定:cancel=丢弃 / correct=通知作废 / normal=继续
          1) 草稿保护:输入框已有内容 → 追加进草稿,不发送
          2) 优先:DSH 客户端 API
             · 有 composer 输入机 → setDraft + submit()(等同按回车)
             · 无输入机           → conversation.send()(队列发送)
          ↓ 任一失败
          2) 兜底:原生 setter + input 事件写入 textarea(React 受控输入安全更新)

环境要求

  • DeepSeek Harness dsh web profile(本插件为纯客户端插件,dsh.client.platform: web)
  • Chrome 或 Edge(Firefox 不支持 Web Speech API,插件会给出提示)
  • 语音识别需要 Chrome 在线服务(Chrome 内置,无需登录/密钥);首次使用浏览器会请求麦克风权限,请允许

故障排查

现象 原因 处理
按钮不出现 服务未重启 / 页面缓存旧 bundle 重启 DSH 服务 + Ctrl+Shift+R
提示「不支持语音识别」 Firefox 或内核不支持 换 Chrome/Edge
提示权限被拒 麦克风权限被拒 点地址栏 🔒 → 允许麦克风 → 刷新页面
提示网络错误 Chrome 识别服务不可达 确认能正常上网后重试
识别成了英文/错语种 语言设置不对 设置里选 中文(普通话)
面板关不掉 旧版本 bug(已修) 刷新页面到 v1.1.0+
消息重复两行 旧版本 bug(已修) 刷新页面到 v1.1.0+

更新日志

v1.1.0

  • 修复:面板默认隐藏、×/Esc 真正可关闭(旧版面板常驻、关不掉)
  • 修复:临时结果升级为定稿后未清空导致「同一句发两行」,并增加规范化去重
  • 修复:发送时整句替换草稿,不再追加出第二行
  • 新增:浏览器自行断流时自动续接,不会提前发送半句话
  • 新增:撤销口令(取消/算了/错了…)与更正口令(更正/上一条作废)
  • 新增:草稿保护——输入框有手写内容时只追加、不覆盖、不抢发
  • 新增:可隐藏悬浮按钮(Ctrl+Shift+M 唤回)、面板跟随按钮移动、10 秒自愈重建、拖动不再误触发录音
  • 新增:调试钩子 _probe() / _classify() / ui() / simulateFinish() 便于自检

v1.0.0

  • 首个版本:悬浮 🎤 听写、自动发送/填草稿、快捷键、可拖动、位置持久化

二次开发

  • 全部逻辑集中在 lib/client.js(浏览器端,无依赖、无构建),宿主侧 lib/index.js 为空壳;
  • 改完执行 node --check lib/client.js 验证语法;
  • 调试钩子:window.__VOICE_INPUT_DEBUG__(见上)。

License

MIT

—/ 5

No ratings yet

Verified DSH bundle

Commit dce1e76f2dff

Community comments

No comments yet. Be the first to write one.

DSH HUB

A community index for DSH plugins. Not an official GitHub or DeepSeek AI product.

CommunityResourcesAPIAbout