DeepSeek Harness plugin

dsh-voice-input

Voice-to-text input plugin for the DeepSeek Harness Web UI

Jump to install

Source facts

Repository
forrestahha/dsh-voice-input
Latest update
Aug 14, 2026
Category
Tools & Capabilities
GitHub stars
3
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/forrestahha/dsh-voice-input
Plugin: dsh-voice-input
Author: forrestahha

Check the source files

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

File explorer4 files
README.mdSource · read only
README language

dsh-voice-input

English | 简体中文

Voice-to-text input for the DeepSeek Harness Web UI.

The plugin adds a microphone button immediately before the composer send button. It uses the browser's Web Speech API, streams recognition results into the current draft, and never submits the message automatically.

Features

  • Adds to the official conversation.input.right extension slot.
  • Supports standard and WebKit-prefixed SpeechRecognition implementations.
  • Uses the browser language, falling back to zh-CN.
  • Preserves natural spacing for Chinese, Japanese, Korean, and Latin text.
  • Stops recording when clicked again and aborts when the component unloads.
  • Requires no additional API key or host-side service.

Install

Install directly from GitHub into the Web profile:

dsh plugin --profile web add github:forrestahha/dsh-voice-input
dsh web

For a pinned installation:

dsh plugin --profile web add github:forrestahha/dsh-voice-input#v0.1.1

Open the Web UI, select a workspace, and click the microphone button. The browser asks for microphone access on first use.

Browser support

The plugin requires SpeechRecognition or webkitSpeechRecognition. Chromium-based browsers provide the broadest support. Unsupported browsers show a disabled microphone button instead of failing at startup.

localhost is treated as a secure context by modern browsers. If Harness is served from another machine, use HTTPS or the browser may refuse microphone access.

Privacy

The plugin does not store audio and does not add its own network calls. The Web Speech API implementation is controlled by the browser and may send audio to the browser vendor's speech service. Review your browser's privacy policy before recording sensitive material.

Development

Requirements: Node.js ^22.19.0 || >=24.0.0 and pnpm 11.

pnpm install
pnpm check

Install a local checkout for integration testing:

dsh plugin --profile web add /absolute/path/to/dsh-voice-input
dsh web

Design

The npm package is both a Harness bundle and a client plugin:

  • cordis.patch.yml inserts the package into the selected profile.
  • The Node entry is intentionally empty; dsh.client discovers ./client.
  • The browser entry registers VoiceInputButton in conversation.input.right.
  • Harness supplies the current input state and inputActions.setDraft() through slot props.

No agent-loop, model, session-log, or Host API behavior is changed.

License

MIT