DeepSeek Harness Plugin Hub

发布与管理完整 Harness Profiles,发现适合你的插件。

探索

插件目录环境预设文档中心动态

社区

发布插件联系我们报告问题

相关链接

Plugin Hub GitHubDeepSeek Harness 官方项目系统状态隐私说明
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

独立、非官方社区项目,与 DeepSeek 官方无隶属、授权或背书关系。

DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录
← Plugins

@dr-co/dsh-speech-gate

Speech Gate

DeepSeek Harness 的语音转文本网关:支持 OpenAI 兼容 API 或本地命令。

插件会安装到这里;不确定时保持 web。

npx -y @deepseek-ai/dsh plugin --profile web add @dr-co/dsh-speech-gate@0.1.1
README兼容性版本

兼容性与来源证明

Speech Gate 以 @dr-co/dsh-speech-gate 发布,当前版本为 0.1.1。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
any
发布来源
npm
Registry 更新时间
2026/10/22

版本

0.1.1stable
2026/10/22

相关插件

正在加载相关插件…

最新版
0.1.1
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
25.9 kB
文件数
5
Surface
any
许可证
MIT
发布源
npm
GitHub
★ 0
周下载
0
最近提交
2026/10/22
查看源码 ↗
README Badge

点击下方 Badge 复制 Markdown,粘贴到 README 即可。

这是你的 Plugin?认领权益 · 优先安全扫描

验证 package.json 声明的 GitHub 仓库,即可管理这个公开页面。认领后,Hub 会优先安排当前版本的安全扫描,并在通过后公开展示结果。

认领这个 Plugin →
报告问题

相关插件

继续浏览 models-usage 分类下经过校验的插件。

Experimental Cot Translation Bundle@deepseek-ai/dsh-experimental-cot-translation-bundle扩展推理的实验性机器翻译Whale Widgetdsh-whale-widgetDSH Web 界面右下角的 DeepSeek 余额小鲸鱼挂件:余额/今日已用/峰谷定价、自定义泡泡点击序列(文本/余额/今日/峰谷/图片/随机语句与并列加权选择)、逐行样式与字体、悬浮快捷编辑、音效与每轮消耗、自定义角色/动图/音效、吸附与翻转自定义Our Free Model@ebony-vinyl/dsh-our-free-modelOur Free Model — 在 dsh 里装上这个插件即可,无需登录、注册或填 API Key,就能使用包括 DeepSeek V4.1 Flash、Kimi K3 在内的前沿模型,桌面端另有 EAC 协付渠道;2.0 起接入 LobsterAI、Qoder、TRAE、Cline、Loomy、Raccoon、MiniMax、ZCode、Gemini 十个账号渠道(原有匿名免费通道保留)(登录、账号池、积分领取、本地 OpenAI 网关与局域网转发、数据看板与运行日志),六页毛玻璃界面统一呈现。Usage@linxin666/dsh-usage用于 dsh Web GUI 的使用统计插件:检测各提供商的余额和编程套餐配额,并实时记录令牌使用情况;侧边栏 Settings 行上方显示紧凑的价格概览卡片

README

dsh-speech-gate

A configurable speech-to-text provider for DeepSeek Harness.

Harness keeps recognizers behind the speechToText service (@deepseek-ai/dsh-experimental-speech-to-text): a registry of named providers that a channel resolves before transcribing. This package registers one or more of them, so a host can offer a choice between a hosted model, a local whisper server and a local command without any channel knowing about it.

Two backends, one package:

backendwhat it doesgood for
apiPOST {baseUrl}/audio/transcriptions (OpenAI-compatible multipart)hosted models, whisper.cpp --server, faster-whisper-server, whisper-asr-webservice
execruns a command, prints the transcript on stdoutwhisper-cli or faster-whisper on the same machine
configured-modelsame call as api, but the endpoint and key come from the model connector the Host already hasa Host whose OpenAI/Mistral model is configured once, without pasting the secret twice

The provider never transcodes audio: the channel already hands it canonical 16 kHz mono PCM16 WAV, which is what every speechToText provider accepts.

Install

Pick whichever source fits the Host. All three install the same package, and dsh plugin records the result in the profile's package.json.

From npm — a released version, the default choice:

dsh plugin --profile <profile> add @dr-co/dsh-speech-gate        # latest release
dsh plugin --profile <profile> add @dr-co/dsh-speech-gate@0.1.0  # pinned, reproducible

From GitHub — no registry involved; useful when you want the current main:

dsh plugin --profile <profile> add github:unera/dsh-speech-gate            # main branch
dsh plugin --profile <profile> add github:unera/dsh-speech-gate#v0.1.0     # a tag
dsh plugin --profile <profile> add github:unera/dsh-speech-gate#206fb1e    # a commit

From a local checkout — while developing, file: follows your edits (re-run add after changing files, because pnpm copies the directory):

git clone https://github.com/unera/dsh-speech-gate
dsh plugin --profile <profile> add file:$PWD/dsh-speech-gate

The package ships no dsh.bundle, so dsh plugin add installs it as a plain dependency and the profile patch below is what actually mounts it — dsh plugin prints a warning saying exactly that.

Then mount it in the profile patch ($DSH_HOME/profiles/<profile>/cordis.patch.yml) next to the service it feeds:

- id: speech-to-text
  config:
    defaultProvider: openai-compatible
    language: ru
- insert:
    - id: speech-provider
      name: '@dr-co/dsh-speech-gate'
      config:
        providers:
          - id: openai-compatible
            backend: configured-model
            name: OpenAI gpt-4o-mini-transcribe
            location: cloud
            languages: [ru, en]
            language: ru
            model: gpt-4o-mini-transcribe
          - id: mistral-voxtral
            backend: configured-model
            name: Mistral Voxtral
            location: cloud
            languages: [ru, en]
            language: ru
            model: voxtral-mini-latest
          - id: whisper-local
            backend: api
            name: Local whisper server
            location: host-local
            languages: [ru, en]
            baseUrl: http://127.0.0.1:8080/v1
            model: whisper-1
          - id: whisper-exec
            backend: exec
            name: Local whisper command
            location: host-local
            languages: [ru, en]
            command: whisper-cli
            args: ['-f', '{input}', '-l', '{language}', '-nt']

Every entry becomes a selectable provider; with the optional @deepseek-ai/dsh-experimental-voice-input-bundle enabled, that choice (and the language) appears in the Web UI under Plugins → Voice Input. A flat config (backend, baseUrl, model, …) registers a single provider and is still supported.

Reusing the Host model connector (configured-model)

Typing the same secret twice is the main friction: the Host already holds an OpenAI or Mistral key for the chat model. backend: configured-model reuses it — the entry names only the transcription model, and the endpoint plus the credential name come from the table below:

providerendpointcredential
openaihttps://api.openai.com/v1OPENAI_API_KEY
mistralhttps://api.mistral.ai/v1MISTRAL_API_KEY
groqhttps://api.groq.com/openai/v1GROQ_API_KEY
- id: openai-transcribe
  backend: configured-model
  model: gpt-4o-transcribe

- id: openai-mini
  backend: configured-model
  model: gpt-4o-mini-transcribe

- id: voxtral
  backend: configured-model
  model: voxtral-mini-latest

Resolution runs once per transcription, against the providers the Host reports through llm.listProviders():

  1. an explicit provider in the entry;
  2. otherwise the model family — voxtral-* → mistral, whisper-large-v3* → groq, gpt-4o* / gpt-4* / whisper* → openai;
  3. otherwise, when the Host has exactly one of the known providers configured, that one;
  4. otherwise the transcription fails with the candidate list. It never guesses: the wrong credential would quietly bill the wrong account.

A provider that the model configuration does not include is refused with "has no model connector configured". configured-openai-model remains accepted as the earlier OpenAI-only spelling. baseUrl, apiKeyRef, apiKeyEnv and apiKeyFile still override anything the table provides.

Requirements

  • DeepSeek Harness 0.2.1-rc.2 or newer (the version this was tested on), Node 22+;
  • the speechToText service mounted in the profile — @deepseek-ai/dsh-experimental-speech-to-text;
  • for configured-model: the matching model connector configured in the Host;
  • for exec: the local binary the entry names.

Agent instructions

For an agent wiring this up on a Host, in order:

  1. dsh plugin --profile <profile> add github:unera/dsh-speech-gate # or @dr-co/dsh-speech-gate from npm once published (or file:/path/to/checkout while iterating).
  2. In $DSH_HOME/profiles/<profile>/cordis.patch.yml, mount the service row and insert this plugin — copy the example above. If a bundle already inserts speech-to-text, override that row (- id: speech-to-text) instead of inserting a second one.
  3. Point defaultProvider at one of the entry ids (a name that is registered, otherwise the service fails the first call explicitly).
  4. dsh --profile <profile> --dump-config | grep -A30 speech to confirm the composition, then restart the server so new plugin code loads.
  5. Verify with a canonical 16 kHz mono PCM16 WAV, e.g. ffmpeg -i in.ogg -ar 16000 -ac 1 -f s16le out.pcm plus a 44-byte header, or by sending a voice message in a channel that feeds speechToText.

Troubleshooting: speech API key is unavailable (<REF>) means the Host has no credential under that name — configure the model connector or set apiKeyRef; cannot tell which provider serves model means two known providers are configured and the model family is not distinctive — set provider.

Configuration

fieldbackendmeaning
idbothprovider identity shown to the host (default: openai-compatible / local-command)
namebothhuman-readable label
locationbothcloud or host-local
languagesbothaccepted language hints (default [ru, en])
languagebothlanguage sent when the caller omits one
baseUrlapiOpenAI-compatible root, without the trailing slash
modelapi, execmodel name ({model} is available in args)
apiKeyRefapicredentials reference resolved through ctx.credentials
apiKeyEnvapienvironment variable with the key
apiKeyFileapifile containing the key
extraFieldsapiextra multipart fields
commandexecexecutable
argsexecargument list; {input}, {language}, {model} are substituted
stripTimestampsexecdrop leading [00:00.000 --> …] markers (default true)

The key is resolved in this order: apiKeyEnv, then apiKeyRef, then apiKeyFile. A local endpoint that ignores authentication needs none.

Development

npm test

Node 22+; no build step, the package ships as plain ESM.

License

MIT