前言¶
在 DSH 里做多轮对话时,最打断节奏的动作不是想不出答案,而是腾出手去点麦克风。官方语音输入插件要按一下「开始录音」、说完再按一下「结束」,这个「点两次」的动作在连续改稿、反复追问的场景里会积少成多。
dsh-push-to-talk 做的事很简单:按住一个键说话,松开自动停止并转写成草稿。默认 macOS 用 Option ⌥,Windows 用 Alt。插件不自己录音、不自己识别,只是把按住和松开翻译成官方语音输入插件的两次点击,录音界面、模型、语言全部沿用官方那套。
插件由 wengyingjian 维护,发布在社区目录(SkillHub),包名 dsh-push-to-talk,当前版本 0.6.0,许可证 MIT。
它解决什么问题¶
- 去掉手离开键盘的步骤:录音的开始和结束都在一个键上完成。
- 不另起一套语音链路:识别走官方语音输入插件
@deepseek-ai/dsh-experimental-voice-input-bundle,本地识别模型、语言设置、录音界面都没有变化。 - 按键可按平台选:默认值适配 macOS 和 Windows,macOS 上想用 Command 或功能键也可以换。
核心功能¶
- 按住说话、松开转写。按住期间录音,松开后停止并把结果作为草稿写回输入框。
- 键位可在插件设置页里选,保存后立即生效,重启 DSH 后保留。
- 自动聚焦输入框:当前视图有输入框时,按住键会自己聚焦再录音,不用先把光标点进去。
- 按键判定用物理键位
KeyboardEvent.code,不受输入法和大小写影响。
安装与启用¶
前言里提到它依赖官方栈,所以先确认两件事:官方语音输入插件已启用,本地识别模型已就绪(点一次官方麦克风按钮,按提示下载一次)。
接下来装插件,两条命令选一条:
# 从 npm 安装
dsh plugin --profile desktop add dsh-push-to-talk
# 想跟仓库主干走
dsh plugin --profile desktop add github:wengyingjian/dsh-push-to-talk
装完重启 DSH,入口在 设置 → 插件 → 按键语音输入。如果只是改了 client.js,按 ⌘R 刷新页面即可,不必重启。
升级同理:
dsh plugin --profile desktop add dsh-push-to-talk@latest
按键设置¶
插件页那张卡片本身就是选择器,点一下即保存。可选键如下:
| 平台 | 可选键 |
|---|---|
| macOS | ⌥ Option · ⇧ Shift · ⌃ Ctrl · ⌘ Command · F2 |
| Windows / Linux | Alt · Shift · Ctrl · F2 |
细节上有几处值得留意:
- 左右修饰键等效,存的是
Alt/Shift/Control/Meta,不是AltLeft/AltRight。 - 不放 Win / Super,会被系统截获;Windows 上的 AltGr 会被过滤。
- 想跟仓库主干走就用上例第二条命令。
典型用法¶
姿势就是「装好、选键、按住说」:
- 在输入框里按住设定的键(默认 macOS 为 Option ⌥,Windows 为 Alt)。
- 开始说话,此时进入录音状态。
- 松开键,录音停止,转写结果作为草稿进入输入框,可直接继续改。
不需要把光标先点进输入框:当前视图有输入框时,按住键会自动聚焦再录音。
注意与边界¶
- 设置页、弹窗、菜单打开时插件会让出按键;DSH 窗口在后台时收不到按键,因为它不做系统级全局热键。
- Windows 上单独按 Alt 可能先激活窗口菜单,不行就换成
F2或Ctrl。 - 录音太短会提示「未识别到语音」,再按住一次即重录;首次使用需授权麦克风。
- 国内镜像同步有延迟:报
ERR_PNPM_TARBALL_EXTRACT或解析到0.0.0-stage时,加--registry=https://registry.npmjs.org重装。0.0.0-stage是 npm 新包首发的占位版本,不是latest,正常安装拿不到。
适用场景¶
适合两类人:一是用 DSH 做长时间、多轮对话的用户,按住说话能明显减少打断;二是想自己改键位或照着源码调整行为再发布的开发者。插件只依赖宿主自带的 @deepseek-ai/schemastery,@deepseek-ai/cordis 是 peer,不会分裂宿主实例。
兼容性方面,engines.dsh = ">=0.2.1-rc.5 <0.4.0",作者实际核对于 dsh 0.2.1-rc.5;engines.node = ">=20"。
需要说明的是,插件以当前 DSH 进程的权限运行,读取的是你在 DSH 里的输入内容。从第三方仓库安装前,建议先读一遍源码(尤其是 src/index.js 和 client.js)与许可证。该插件发布在独立社区目录上,与 DeepSeek / 幻方无官方从属关系,也不是官方应用商店条目。
开发¶
改了 Host 半侧(src/index.js)需要重启 DSH;只改 client.js 刷新页面即可。按键状态机、安全边界、设置同步有配套测试:
node --test test/hotkey.test.mjs # 15 个用例
小结¶
push-to-talk 的价值不在新能力,而在把已有的语音输入从「点两次」变成「按住说」。它接的是官方语音输入插件,录音和识别能力没有变化,键位和平台适配由它负责。如果你已经在用官方语音输入,这算是一个低成本的输入流程改进。
目录页:https://www.skillhub.cn/plugins/wengyingjian/dsh-push-to-talk
源码:https://github.com/wengyingjian/dsh-push-to-talk