按住 F2 说话,松开即把语音转成草稿文字
30.7/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/8 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
自动兼容检查有告警:未发布到 npm registry,仅可从源码安装。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add eicon-xyz/dsh-voice-ptt该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · other
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 28 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查⚠ 装前注意未发布到 npm registry,仅可从源码安装
展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✗npm 包dsh-voice-ptt(未发布到 npm,仅可源码安装)
✓Node 引擎要求 >=20 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/16 14:11:07
安全扫描自动 · 静态分析源码v2.7.0🟢 扫描:未发现敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描未发现敏感能力:最多只发网络请求、读取自身元数据或只读文件,未发现执行命令、文件写入或敏感信息读取。
扫描于 2026/11/3(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/dsh-api-remotes@deepseek-ai/dsh-client-locale@deepseek-ai/dsh-client-ui-conversation@deepseek-ai/dsh-client-ui-slots给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 按住按键说话
- 松开转文字
- 文字落入草稿框
按住一个键说话,松开就转成文字落进草稿框:DeepSeek Harness 的按键听写功能。
README
由 DeepSeek 最新模型翻译生成dsh-voice-ptt
给 DeepSeek Harness 用的按住听写(push-to-talk):在输入框里按住一个键说话,松开即转写,文字插入当前草稿。
不用记组合键。按住 F2,松开,完事。
怎么用
1. 把光标放进输入框。当输入框获得焦点且草稿为空时,工具栏会出现一行淡提示:按住 F2 听写。
2. 按住 F2 —— 开始录音,提示变成 正在录音,松开 F2 结束。
3. 松开 —— 音频被转写,文字落在草稿的光标处。
听写过程中:
- 按 Esc,或按任何别的键(比如你本来想打的那个字母),立即取消并丢弃本次录音。
- 窗口失焦、或切走标签页,会取消录音,而不是录下无关的声音。
- 超过识别服务上限会自动停止录音,并转写已经录到的部分。
换键
那行提示本身就是按钮。点它展开候选键,点一个即生效并记住(存在 localStorage)。
| 键 | 说明 |
| F2(默认) | 功能键:不产生字符,冲突最少 |
| F4 | 功能键,位置更靠右 |
| Insert | 全尺寸键盘上右手好按;很多笔记本没有这个键 |
| 右 Ctrl | 右手小指按住最顺手 |
| 右 Shift | 右手小指;在 Windows 上连按 5 次可能触发粘滞键 |
修饰键也能正常工作:插件知道按住键本身就是修饰键,因此不会把它误判成组合键而放行事件。
展开完整文档(README 剩余 1 节)
dsh-voice-ptt
给 DeepSeek Harness 用的按住听写(push-to-talk):在输入框里按住一个键说话,松开即转写,文字插入当前草稿。
不用记组合键。按住 F2,松开,完事。
怎么用
1. 把光标放进输入框。当输入框获得焦点且草稿为空时,工具栏会出现一行淡提示:按住 F2 听写。
2. 按住 F2 —— 开始录音,提示变成 正在录音,松开 F2 结束。
3. 松开 —— 音频被转写,文字落在草稿的光标处。
听写过程中:
- 按 Esc,或按任何别的键(比如你本来想打的那个字母),立即取消并丢弃本次录音。
- 窗口失焦、或切走标签页,会取消录音,而不是录下无关的声音。
- 超过识别服务上限会自动停止录音,并转写已经录到的部分。
换键
那行提示本身就是按钮。点它展开候选键,点一个即生效并记住(存在 localStorage)。
| 键 | 说明 |
| F2(默认) | 功能键:不产生字符,冲突最少 |
| F4 | 功能键,位置更靠右 |
| Insert | 全尺寸键盘上右手好按;很多笔记本没有这个键 |
| 右 Ctrl | 右手小指按住最顺手 |
| 右 Shift | 右手小指;在 Windows 上连按 5 次可能触发粘滞键 |
修饰键也能正常工作:插件知道按住键本身就是修饰键,因此不会把它误判成组合键而放行事件。
提示文字、状态条和上面这些键名都会跟随 DSH 的界面语言(en / zh)。
想提供别的键,改 lib/client.js 顶部的 KEY_OPTIONS(一个 {code, labelKey} 数组,code 按 KeyboardEvent.code 的拼写,labelKey 指向 lib/client.js 顶部 zh / en 词典里的键名)。
安装
dsh plugin --profile web add dsh-voice-ptt
包声明了 dsh.bundle.patch,所以这条命令会把它追加到 profile 的 bundle 栈并挂载 —— 不需要手工编辑 cordis.patch.yml。从 Git 仓库安装时建议锁定 revision:
dsh plugin --profile web add 'github:eicon-xyz/dsh-voice-ptt#<commit>'
需要语音识别服务:安装并启用 @deepseek-ai/dsh-experimental-voice-input-bundle,并准备一次识别模型(约 230 MB)。若识别服务未就绪,按住键会在状态条给出可见原因,而不是静默失败。
开发模式
直接挂载本地 checkout,而不是安装 ln -sfn "$PWD" "$DSH_HOME/profiles/web/node_modules/dsh-voice-ptt" 然后在 profile 自己的 cordis.patch.yml 里加:
- insert:
- id: dsh-voice-ptt
name: 'dsh-voice-ptt'
切换到 bundle 通道前,必须先删掉这段手工挂载行,否则同一行会被挂载两次。
为什么单键要自己接管键盘
官方快捷键服务(@deepseek-ai/dsh-client-shortcuts)只派发 keydown —— 没有 keyup 事件可以用来结束"按住"。它还拒绝不带修饰键的绑定(bindingIssue 返回 modifier-required),并且在 Web 端把组合限制在一份平台白名单内。
所以"按住一个键说话"无法表达成快捷键命令。本插件改为自己接管键盘:文档级 keydown 开始,keyup 结束。代价是它无法出现在设置 → 快捷键里 —— 这也是换键入口做在输入框里的原因。
不让单键变成"第二个修饰键"
| 情况 | 行为 |
| 焦点不在输入框里 | 不开始录音 |
| 录音期间按了任何别的键 | 取消本次采集;那个键照常工作(按住右 Ctrl 再按 A,Ctrl+A 依然生效) |
| 弹窗或菜单打开时 | 让出按键 |
| 带修饰键的按下(Ctrl+F2、Alt+F2 等) | 完全不拦截 |
| 焦点在终端里 | 不拦截(xterm 自己要用功能键) |
实现要点
- 插入草稿用会话作用域的 inputActions(captureInsertion + insertText)。插件在 conversation.input.left 注册一个常驻条目来登记每个会话的动作;同一个条目同时渲染状态条、焦点提示和键位选择器。
- 录音用 MediaRecorder,经 OfflineAudioContext 重采样成 16 kHz 单声道 PCM16 WAV —— 与官方语音输入插件发送的格式一致 —— 然后调用 host 的 speech.transcribe。
- host 半侧是有意为空的。 所有行为都在浏览器半侧,通过 dsh.client 触达。
文件
| 路径 | 用途 |
| lib/client.js | 浏览器半侧:按键、录音、转写、状态条、键位选择器 |
| lib/index.js | host 半侧(有意为空,只为让 bundle 行可挂载) |
| cordis.patch.yml | 安装器合并的 dsh.bundle.patch 层 |
| test/ | 无头 Chrome 端到端测试 |
测试
它们驱动真实浏览器、连接一个正在运行的 DSH web profile,并把自带的音频夹具喂给 Chrome 的假麦克风:
npm install # 提供 ws
export PTT_TOKEN=<dsh web URL 里的 token>
node test/e2e.cjs # 按住 → 松开 → 文字插入草稿
node test/picker.cjs # 选择器打开、新键生效并持久化
node test/modifier-key.cjs # 右 Ctrl 可录音;Ctrl+A 不被抢占
node test/nonempty-draft.cjs # 草稿非空时仍可用,文字追加在后面
node test/modal-yield.cjs # 弹窗打开时让键,关闭后恢复
test/make-fixture.cjs 可以从任何 Chrome 能解码的音频重新生成 test/fixtures/speech-16k.wav:
node test/make-fixture.cjs input.mp3 # 需要 Chrome;不需要 ffmpeg
已知限制
- 只在 Web 端生效(Desktop 原生键盘桥接未接线到本插件)。
- 没有流式字幕:松开后才出文字。
- 从不自动发送 —— 转写结果只进草稿,由你确认。
- 同一时刻只监听一个按住键;不改 KEY_OPTIONS 的话只能从内置候选键里选。
许可证
MIT预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
eicon-xyz/dsh-voice-ptt
按住 F2 说话,松开即把语音转成草稿文字
相关插件 · 其他
模型破甲清洗HunYiSage/dsh-purge
⚔️ DeepSeek Harness 网络安全红队工具dsh-purge
★ 16,993已汉化DeepSeek 客户端
73
女娲蒸馏alchaincyf/nuwa-skill
输入名人名字,提炼其思维模型与决策方式供你调用
★ 37,308已汉化DSH
72
逆向分析桥接Fanqi89/dsh-rea
REA(Reverse Engineer Anything)MCP 桥接,用来把 REA 逆向工具接入 DSH 插件
★ 51已汉化DSH
72
语音女友beiyege-01/dsh-voice-ai-girlfriend
语音 AI 女友Voice AI girlfriend for DeepSeek Harness:Whisper…
★ 888已汉化DSH
71.6
红队越狱测试套件Minglink/dsh-infinite-gen-5
DeepSeek v4.1 flash 逆向工具无限五代 求 Star 收藏 ⭐欢迎大家提交项目的改进
★ 3,759已汉化DSH
71.4
协同办公空间dream-num/univer-workspace
一个让人类与 AI Agent 共同创作、协作和审阅的开源 Office 工作空间。
★ 2,269已汉化DSH
70.8
这是你的仓库?认领条目