DeepSeek Harness plugin

dsh-voice-input-jinhuooo

Voice-to-text for DSH, powered by Whisper. One click to record, speak, and text appears in the input box. Local-first (privacy), Simplified-Chinese output, anti-hallucination, works in China without

Jump to install

Source facts

Repository
jinhuoooo/dsh-voice-input
Latest update
Aug 17, 2026
Category
Tools & Capabilities
GitHub stars
0
Format
plugin
Catalog evidence
Upstream dsh.bundle evidence
Evidence path
package.json#dsh.bundle
Checked against
0.1.0-rc.8
Upstream check date
2026-08-20

This evidence comes from the upstream catalog. This site has not installed, run, or security-reviewed the plugin.

Install

Start with a prompt that asks an agent to review the GitHub repository and source. Switch to the command if you want to install it yourself.

Copy this prompt into DSH, Codex, or another agent and ask it to review the GitHub repository and source first.

Do not install or run any commands yet. Read this plugin's GitHub repository, README, and relevant source code. Then answer the questions below clearly and directly so I can decide whether it fits my needs:

1. What is this plugin, and what problem does it solve?
2. Who is it for, and what are its typical use cases?
3. How is it used after installation? Include one minimal example.
4. What known limitations or privacy, security, compatibility, or maintenance risks does it have?
5. Give a clear recommendation: recommend, conditionally recommend, or do not recommend, with reasons.

Distinguish statements documented by the repository, inferences from source code, and unknowns. If evidence is insufficient, say so explicitly. Do not guess or simply repeat the README.

GitHub: https://github.com/jinhuoooo/dsh-voice-input
Plugin: dsh-voice-input-jinhuooo
Author: jinhuoooo

Check the source files

Read the README and other files from this plugin directory before installing.

File explorer3 files
README.mdSource · read only

dsh-voice-input

DSH(DeepSeek Harness)语音输入插件:点一下麦克风,说话,文字自己进输入框。

做给谁用的:打字慢、不方便打字、或者单纯懒得敲键盘的人。

我见过不少长辈和刚接触电脑的人,用输入法一个字一个字找拼音,一句话打完要半分钟。语音输入这东西对他们来说不是"效率工具",是"能不能用得起来"的问题。但现成的语音输入方案要么不准(中文稀烂),要么要翻墙,要么把音频传去别人服务器。这个插件就是把这事在本地解决掉。

---

它能做什么

  • 在 DSH 聊天输入框旁边点麦克风,说话,文字自动填进输入框,全程不碰键盘
  • 中文识别靠谱:本地 Whisper 模型 + 强制简体输出
  • 安静环境下不会"脑补":没说话就是没说话,不会突然给你冒出一段莫名其妙的话
  • 全程本地跑:音频不出本机,不传云端,不要 API Key 也能用
  • 国内网络友好:模型走 ModelScope 下载,不需要翻墙

优点(说点实在的)

1. 真的简单。整个操作就两步:点麦克风 → 说话 → 再点停止。停止就是"确定",取消就是"不要了",没有第三个选项。界面是一个贴在麦克风按钮下面的小白卡片,不弹大窗口、不挡聊天内容。 2. 中文准,而且一定是简体。识别完强制转简体(OpenCC),不会给你输出一堆繁体字让你再翻译一遍。默认模型 small,普通话日常口述够用;想要更准就改一行配置换 medium。 3. 不会乱说话。Whisper 在音频太安静或噪音大的时候有个毛病:自己编一段话输出,比如你在咳嗽,它给你来一句"谢谢大家的关注"。这个插件加了防幻觉参数,静音就返回空、提示"未识别到语音",而不是给你塞一段编的。 4. 。模型只加载一次(常驻进程),之后每次转写毫秒级。不是每次点完等十秒转圈那种。 5. 隐私。默认纯本地:录音在你电脑上,转写在你电脑上,只有文字进了 DSH。不想要本地也行,配置里填一个云端 API(Groq 免费)就能切过去,速度更快。 6. 不折腾网络。模型从 ModelScope 下载,国内直连,装完一次以后不用管。

安装

前置条件

东西要求说明
DSH任意可用版本DeepSeek Harness 桌面端
Python3.10+本地语音识别需要;首次使用会自动装依赖
麦克风正常工作的麦克风笔记本自带 / 外接都行

没有 Python 的话,去 python.org 下一个 3.10+ 装上,安装时勾选 "Add Python to PATH"

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

打开终端(Windows 用 PowerShell 或 CMD),执行:

dsh plugin --profile web add github:你的用户名/dsh-voice-input

> 如果你在 Web 界面模式下使用,把 web 换成你的 profile 名(一般就是 web)。

方式二:手动安装

1. 把本仓库整个下载解压,文件夹改名 dsh-voice-input 2. 放到 DSH 插件目录:~/.dsh/profiles/web/plugins/dsh-voice-input 3. 重启 DSH

首次使用(自动配置)

第一次点麦克风时,插件会自己干活,你什么都不用管:

1. 自动检查 Python 依赖(faster-whisper、modelscope 等),缺了自动装 2. 自动从 ModelScope 下载 Whisper 模型(默认 small,约 480MB,取决于网速) 3. 装完就能用

下载期间界面会提示进度,耐心等一两分钟。之后再点就是秒开了。

使用

点击输入框右侧的麦克风图标,按钮下方会弹出一个小白卡片:

[🎤 音量条]  [00:07]  [■] [✕]
  • 左边是麦克风图标和音量条,说话时它会跟着你声音起伏,能直观确认麦克风在收音
  • 中间是录音时长 分钟:秒
  • 右边两个小圆钮:红色方块 = 停止并出字灰色 × = 取消(丢弃,不留痕)
  • 录满 60 秒会自动停止并转写,不用一直按着

转写完成后文字直接进输入框,你可以改完再发送。取消就真的什么都不要了,不会把一段错误文字塞给你。

配置(可选)

不加配置文件也能用,默认本地 small 模型。想自定义就复制 config.example.jsonconfig.json(放在插件目录下),改完重启 DSH。

切换本地模型

{
  "local": {
    "model": "medium",
    "language": "zh",
    "device": "cpu",
    "computeType": "int8"
  }
}
模型大小中文准确率速度内存
tiny~75MB最快~150MB
base~145MB一般~250MB
small~480MB还行(默认)中等~500MB
medium~1.5GB较慢~1.5GB
large-v3~3GB最好最慢~3GB

模型只下载一次,换模型不用重新下载别的(除了第一次)。内存不够就 small,想更准就 medium。

用云端 API(更快,可选)

本地模型对老电脑可能偏慢,想要更快更准可以接云端,配置 API Key 即可:

  • Groq(免费,Whisper Large v3):去 console.groq.com 注册拿 Key
  • SiliconFlow(SenseVoice,中文优化,有免费额度):去 siliconflow.cn 注册
{
  "api": {
    "provider": "groq",
    "apiKey": "gsk_your_key_here"
  }
}

设计理念

做这个插件的时候,我一直在想一个问题:一个"打字困难"的人,第一次用这个东西,什么样的体验算好?

结论是这几个,也是这个插件的设计取舍:

1. 能不动手就不动手。 录音的启动/停止就是两次点击,没有多余的确认弹窗、没有设置向导。界面只有一个白色小卡片,贴在麦克风按钮正下方,因为你刚点完按钮,视线就在那里——这比弹一个屏幕中央的大面板更不打扰,也是参考了 Workbuddy 自己的交互习惯。

2. 结果必须"干净"。 这是踩过坑的:Whisper 对静音和噪声会幻觉出整段编造的文字,繁体字也时有出现。对会用电脑的人来说,乱字可以删;对小白来说,屏幕上出现一段"我没说过的字",第一反应是"我是不是说错了?是不是我电脑坏了?"——这很劝退。所以防幻觉参数和强制简体转换不是锦上添花,是必需品

3. 本地优先,隐私和免费都不含糊。 语音是敏感数据,默认全本地处理,不依赖任何云服务。国内网络环境下的模型下载(ModelScope)也专门处理过,不至于装个插件先研究怎么翻墙。想要云端的快就自己开,选择权留给用户。

4. 技术为体验服务,不炫技。 常驻服务(模型只加载一次)、贪心解码、Windows 下麦克风权限的绕行方案(webview 不给权限弹窗,就改用系统级录音)——这些技术细节的唯一目的,是让"点一下、说话、出字"这个动作真的快、真的稳。用户不该感知到它们的存在,它们只负责不让用户等。

常见问题

Q:转写出来一堆问号方块/乱码? A:Windows 下 Python 默认输出 GBK 编码导致。这个插件已经内置了编码修复,如果还遇到,确认你的 Python 是 3.10+ 并重启 DSH。

Q:转写出来不是我说的话? A:这是 Whisper 的幻觉,通常发生在音频太安静或噪音大时。先确认音量条在说话时确实在跳动(说明收音正常),再确认周围环境别太吵。插件已加防幻觉,静音时会提示"未识别到语音"而不是乱出字。

Q:内存占用高? A:默认 small 模型约 500MB,模型常驻是为了转写速度快。介意的话换 tiny/base(省一半以上),或者用云端 API(本地完全不占)。

Q:没声音/麦克风没反应? A:先看音量条动不动。不动就检查系统麦克风权限(设置 → 隐私 → 麦克风),确保 DSH 和 Python 都有权限。

Q:模型下载太慢? A:用的是 ModelScope 国内节点,一般不会太慢。如果网络环境特殊,可以挂代理后重试。

技术栈

  • 录音:Python sounddevice 直录系统麦克风(16kHz 单声道),绕开 webview 麦克风权限限制;实时计算 RMS 音量驱动 UI 动画
  • 转写:faster-whisper(CTranslate2),int8 量化,VAD 过滤,贪心解码
  • 常驻服务server.py 模型加载一次,stdin/stdout JSON 行协议循环处理,空闲 30 分钟自动退出
  • 简体转换:OpenCC t2s
  • 防幻觉:no_speech_threshold / log_prob_threshold / compression_ratio_threshold
  • 云端可选:OpenAI 兼容 API(Groq / SiliconFlow)
  • 降级链:云端 API → 本地常驻服务 → 本地一次性进程 → 可读错误提示

文件结构

dsh-voice-input/
├── package.json          # 插件元数据
├── cordis.patch.yml      # DSH bundle 补丁
├── config.example.json   # 配置模板
├── lib/
│   ├── index.js          # 服务端:HTTP 路由 + ASR 逻辑 + 常驻服务管理
│   ├── client.js         # 客户端:录制面板 UI(音量动画 / 计时 / 停止 / 取消)
│   ├── record.py         # 系统录音 + 实时音量输出
│   ├── server.py         # 常驻转写服务(模型加载一次)
│   └── transcribe.py     # 一次性转写(常驻服务不可用时的回退)
└── README.md

License

MIT