DeepSeek Harness Plugin Hub

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

探索

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

社区

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

相关链接

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

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

Talk — DeepSeek Harness 插件(DSH Plugin)
DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录
← Plugins

dsh-talk

Talk

面向语音的 DeepSeek Harness 会话循环:提供带麦克风按钮的编辑器,支持浏览器/本地语音转文本(Web Speech、FunASR、whisper.cpp);提供用于文本转语音回复的 speak 工具(浏览器、edge-tts、piper);支持带静音功能的事件播报,以及 speak-t

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

npx -y @deepseek-ai/dsh plugin --profile web add dsh-talk@0.3.12
README兼容性版本

兼容性与来源证明

Talk 以 dsh-talk 发布,当前版本为 0.3.12。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
web
发布来源
npm
Registry 更新时间
2026/9/21

版本

0.3.12stable
2026/9/19
0.3.11stable
2026/9/18
0.3.10stable
2026/9/12
查看其余 16 个版本收起版本
0.3.9stable
2026/9/10
0.3.8stable
2026/9/9
0.3.7stable
2026/9/9
0.3.6stable
2026/9/7
0.3.5stable
2026/9/7
0.3.4stable
2026/9/4
0.3.3stable
2026/9/2
0.3.2stable
2026/9/2
0.3.1stable
2026/9/1
0.3.0stable
2026/8/30
0.2.1stable
2026/8/27
0.2.0stable
2026/8/26
0.1.3stable
2026/8/23
0.1.2stable
2026/8/22
0.1.1stable
2026/8/21
0.1.0stable
2026/8/17
最新版
0.3.12
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
1.1 MB
文件数
60
Surface
web
许可证
Apache-2.0
发布源
npm
GitHub
★ 0
周下载
571
查看源码 ↗项目主页 ↗
README Badge

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

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

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

认领这个 Plugin →
报告问题

README

🎙️ dsh-talk

  • 1024 store channel: npm i -g dsh1024 once, then dsh1024 plugin --profile web add dsh-talk (counts toward the deepseek1024.com install ranking).

Voice-first session loop for DeepSeek Harness: talk to it, hear it answer.

Press the mic, speak, and the reply is spoken back — with speak-to-interrupt.

English · 简体中文 · Español · Português · हिन्दी


Compatibility

SurfaceStatus
HarnessDeepSeek Harness dsh-v0.1.6-alpha.2 (adapted 2026-09-18: third peer clause + engines.dsh + manifestVersion: 1, and the monthly Compat workflow anchored to that line); full gate chain green on 2026-09-18 (dual typecheck rulers, 86 tests, build, self-contained, artifacts, pack). npm dev/test line 0.1.5-rc.2, peers `>=0.1.2-rc.1 <0.2.0
Node^22.19.0 || >=24.0.0
BrowserWeb Speech + MediaRecorder (Chrome/Edge best); host transcription/TTS engines for the rest

What you get

dsh-talk closes the voice loop in both directions:

  • speak tool — the agent speaks its replies aloud. TTS engines: the browser voice, edge-tts (network neural voices), or piper (local). Audio plays in the browser; on hosts that can carry it, the session log records the sanitized utterance (see Security boundaries).
  • Composer mic button — press it, speak, and the transcription lands in the input box (or submits directly). STT engines: the browser's Web Speech (interim results included), a FunASR HTTP server, or local whisper.cpp.
  • Speak-to-interrupt — starting to talk stops whatever is playing (client → host over the talk Remote namespace).
  • Event announcements — turn completion, pending approvals (waterfall-safe: never blocks the gate), and errors, with a mute switch and configurable phrases.
  • Settings tab — engine/language selects and announcement switches, saved as append-only profile-patch operations with backups.
browser                                host
  🎙 press ──▶ interrupt ─────────────────▶ talk/interrupt
  record (MediaRecorder / Web Speech)
  transcribe (browser) or talk/transcribe ─▶ FunASR / whisper.cpp
  setDraft(text) or submit()  ◀── talk:speech projection ── speak tool / announcements
  ▶ play audio (talk/audio or speechSynthesis)

Quick start

# 1. install the bundle into your profile
dsh plugin --profile web add "github:PerryLink/dsh-talk#main"

# or from npm (published releases)
dsh plugin --profile web add dsh-talk

# 2. restart and verify the row
dsh --profile web --dump-config | grep -A2 'id: talk'

Then press the microphone next to the composer and talk; ask the agent to speak its reply:

> Say "hello" with the speak tool.

Install & uninstall

  • git channel (latest main): dsh plugin --profile web add "github:PerryLink/dsh-talk#main" — the prepare script builds with production dependencies only.
  • npm channel (published releases): dsh plugin --profile web add dsh-talk.
  • tarball channel: pnpm pack in this repo, then dsh plugin --profile web add ./dsh-talk-<version>.tgz.
  • uninstall: dsh plugin --profile web remove dsh-talk (or remove the row from the profile patch).

If pnpm reports ERR_PNPM_IGNORED_BUILDS for this package (esbuild's harmless platform-binary validation), add allowBuilds: { esbuild: true } to your pnpm-workspace.yaml — the dsh CLI prints the exact snippet.

Configuration

All tunables are Schemastery Config fields (changeable from cordis.yml). cordis.patch.yml documents each key inline.

KeyDefaultMeaning
record.enabledtrueShow the composer mic button
record.hotkey(none)Optional toggle hotkey, e.g. "alt+r"
record.maxSeconds60Recording cap in seconds (1..600)
record.autoSubmitfalseSubmit the transcription as a user message (false = fill the draft)
record.vad.enabled / silenceMs / energyThresholdtrue / 1500 / 0.01Voice-activity detection: silence auto-ends the recording (degrades when AudioContext is absent)
stt.engineautoauto / web / funasr / whisper; auto prefers a configured local engine, then Web Speech
stt.languageautoBCP-47 language or auto
stt.interimtrueShow interim transcriptions (Web Speech)
stt.silenceFinaliseMs4000Stop continuous Web Speech recognition after this many milliseconds without speech (500..15000)
stt.funasr.url(none)FunASR inference endpoint; required when the engine is funasr
stt.whisper.modelPath(none)whisper.cpp model; required when the engine is whisper
tts.engineautoauto / browser / edge-tts / piper; auto prefers piper, then edge-tts, then the browser voice
tts.rate0Rate offset in percent (-50..50) for edge-tts/piper

stt.silenceFinaliseMs and record.vad.silenceMs are separate mechanisms: the first finalises the Web Speech transcript when continuous recognition hears no speech, the second is the MediaRecorder energy-based detector that ends the recording (and submits it when record.autoSubmit is on). They run in different pipelines and share no state.

Tools & surfaces

SurfaceKindNotes
speaktoolSpeaks text aloud (browser/edge-tts/piper); per-call engine/voice overrides; canonical JSON outcome
mic buttonconversation.input.left slotRecord → transcribe → fill draft (or submit); speak-to-interrupt on press
settings tabsettings.plugins.tab (id talk)Engine/language/announcement switches; append-only save
talk:*Typert Remotestatus, audio, transcribe, applySettings, interrupt (host namespace)

Permissions & data

  • Permissions: the plugin stores nothing but an in-memory, byte-capped audio cache; microphone permission is browser-mediated. The settings tab only appends patch fragments to the profile with a timestamped backup — never rewrites the file.
  • Data: audio never enters the model context or the session log. Where the host's session vocabulary accepts it, the dsh-talk/speech event carries the utterance id, engine, reason, size, sanitized text, and browser voice/rate/pitch when applicable; on envelope-less hosts the event is not written at all. All display/log surfaces redact credentials, JWTs, bearer headers, and temp paths.
  • Network: only the engines you configure are contacted. edge-tts performs network synthesis, FunASR uses its configured endpoint, and Chrome's webkitSpeechRecognition sends microphone audio to Google's servers for transcription; browser speechSynthesis playback remains local.

Security boundaries

  • Model-visible ⟺ logged — the model sees only the speak tool's canonical value and render text. The dsh-talk/speech event is appended only when the host can carry it (see Host compatibility); the tool/call + tool/result events always remain the reconstructable trail.
  • Approval announcements never block — the approval/request listener always calls next().
  • Sanitized output — credentials and temp audio paths never reach logs or displays.
  • Host compatibility — the dsh-talk/speech event is appended through a yes/no gate. Hosts whose known-type vocabulary covers the event append it, and the call reports that it did; every other host — every released line through 0.1.1-rc.2, the 0.1.2-alpha line, 0.1.2-rc.1, and also 0.1.6-alpha.2, whose Session.append can stamp only the surface intent and not the ignorable envelope (that field is retained for stored-log read compatibility only) — gets no append, so speech can never pollute the session log there. The skip is not silent any more: the host keeps per-session appended/skipped counters and talk/latest(sessionId) reads them back, the client's session-scoped playback list stays empty, and the speak tool results remain the reconstructable audit trail.
  • Fail loud — invalid engines, out-of-range values, and engines configured without their required model/endpoint fail the mount.

Known limitations

  • Browser support: Web Speech and MediaRecorder are feature-detected; without them the mic button disables itself and host engines (FunASR/whisper.cpp) can still transcribe when configured.
  • Local engines are your install: edge-tts, piper, and whisper.cpp executables and models must be installed separately.
  • Recording format: the browser records with its native MediaRecorder codec; whisper.cpp may require a WAV-configured recorder or a server-side conversion for other formats.
  • Settings apply on reload: the settings tab appends to the profile patch; a profile reload (or web-app restart) activates the changes.
  • Live playback history is empty on hosts without the vocabulary: on 0.1.1-rc.2, the 0.1.2-alpha line, 0.1.2-rc.1, and 0.1.6-alpha.2 the host vocabulary does not know dsh-talk/speech, so the gate writes nothing and the client's session-scoped playback list stays empty; talk/latest(sessionId) still answers with the newest utterance and the skipped counter. Speech itself, the mic, the settings tab, and the tool are unaffected.
  • Legacy logs written by dsh-talk ≤ 0.2.1 may need repair before cold load: versions through 0.2.1 appended unmarked dsh-talk/speech events. On hosts 0.1.0-rc.7 and newer, a session whose log already contains them fails its next cold load with SessionFormatUnsupportedError. Repair: stop the host, back up the session's .jsonl log, add "ignorable":true as a top-level member of every JSON line whose "type" is "dsh-talk/speech" (for example, insert "ignorable":true, right after the opening {), then reopen the session. Nothing else changes and nothing is lost; new appends from this version never add unmarked events.

Development

pnpm install        # node ^22.19 || >=24
pnpm run typecheck  # tsc: src + tests against the local harness checkout
pnpm run typecheck:ci  # tsc against the published 0.1.5-rc.2 types (no paths)
pnpm test           # vitest: 86 tests, 15 suites
pnpm run build      # tsc declarations + tsdown bundles (lib/)
pnpm run verify:self-contained  # dependency specs resolve from the registry
pnpm run verify:artifacts       # built ESM faces + client ModuleLoader handshake
pnpm pack           # the published tarball

Topics

dsh, dsh-plugin, deepseek-harness, deepseek, cordis, voice, speech, tts, stt, speech-to-text, text-to-speech, microphone

Contributors

  • @PerryLink — creator and maintainer: speak pipeline, speech engines, mic recorder, event announcements, projection unit, and the five-language docs.

PerryLink DSH Plugin Family

This project is one of the 40 DeepSeek Harness plugins maintained by PerryLink. If this one helps you, the others likely will too:

PluginOne-liner
dsh-auto-reviewSecond-model auto-review on the approval chain, fail-closed by default
dsh-background-agentsDurable background child agents with a Web UI sidebar, messaging and interrupt
dsh-budgetCost governance for DeepSeek Harness: budgets, carbon, and latency in one panel.
dsh-checkpoint-rewindClaude Code /rewind-equivalent: snapshots, session forks, one-shot restore
dsh-claude-moveMigrate Claude Code sessions, memory, skills and CLAUDE.md into DSH
dsh-clickCross-platform native desktop control for DeepSeek Harness — Windows first.
dsh-composer-historyTerminal-style input history for the web composer: arrows, Ctrl+R search
dsh-data-qualityDataset quality checks and citation cross-checks (the optional numeric bridge consumed here)
dsh-defendPrompt-injection, jailbreak, and secret-leak defense for DeepSeek Harness.
dsh-doublecheckEngineering-discipline guard: requirements grill, test gates, adversary review
dsh-drawUnified static-image generation routing for DeepSeek Harness.

Install from the DSH Desktop Market

All PerryLink plugins are browsable in the built-in DSH Desktop Market: Market → Sources → add source → paste https://perrylink-dsh-catalog.perrylink.workers.dev/catalog-source.json → select it. Installation still goes through the Market's npm-identity verification and your confirmation.

License

Apache License 2.0 © 2026 dsh-talk contributors

tts.fallbackToBrowser
true
Fall back to the browser voice when a local engine fails
tts.browser.voiceName(none)Preferred browser voice name; an unknown name uses the platform default
tts.browser.rate1Browser SpeechSynthesis rate (0.1..10)
tts.browser.pitch1Browser SpeechSynthesis pitch (0..2)
tts.piper.modelPath(none)piper voice model; required when the engine is piper
announce.enabledtrueMaster switch for event announcements
announce.onTurnEnd / onApproval / onErrortrueWhich events are spoken
announce.messages.*"Turn complete." etc.Spoken phrases
interrupttrueTalking stops current playback
maxSpeakChars20000Cap on the speak tool's text length (1..100000)
maxAudioCacheBytes8388608In-memory synthesized-audio cache cap (1 MiB..64 MiB)
dsh-fastRead-only performance diagnostics for DeepSeek Harness.
dsh-fund-researchDeterministic research reports for Chinese public mutual funds
dsh-githubGitHub PR/issues integration for DSH, every write gated by approval
dsh-industry-researchIndustry research orchestration that seals its deliverables through this plugin's ctx.researchReport.assemble
dsh-libraryLocal document knowledge base for DeepSeek Harness.
dsh-local-aiLocal-model (Ollama) integration for DeepSeek Harness.
dsh-lsp-actionsLSP diagnostics, formatting, completion, code actions and rename over language servers
dsh-maskPII masking middleware: anonymize at the model boundary, restore at the display layer
dsh-mcp-panelRead-only MCP runtime panel: /mcp command + Settings tab with status, tools and errors
dsh-mementoApproval-gated cross-session memory: ctx.memory seam + SQLite + memory tool
dsh-observeOpenTelemetry and Langfuse observability exporter for DeepSeek Harness.
dsh-output-stylesClaude Code outputStyles-equivalent runtime style switching
dsh-permission-rulesClaude Code-style declarative allow/deny/ask permission rules with audit
dsh-personal-directivePersonal directive injector with top-bar toggle (framework edition)
dsh-plugin-guidePlugin-development knowledge base as an on-demand agent skill
dsh-plugin-doctorZero-dependency static + sandbox smoke detector for DSH plugins
dsh-reachMulti-channel approval/question bridge: WeChat/Telegram/Feishu, session console
dsh-research-reportVerifiable research-report engine: content-addressed evidence ledger and sealed versions
dsh-scoreMulti-dimensional quality scoring for DeepSeek Harness plugins.
dsh-session-pinPin sessions in the Web sidebar with durable ordering
dsh-session-syncCross-device session sync for DeepSeek Harness — a dedicated git mirror of your session store.
dsh-skill-pack-securitySecurity-audit skill pack: secret scan, dependency and supply-chain review
dsh-test-driveIsolated install-and-smoke test drives for DeepSeek Harness plugins.
dsh-ticktickTickTick/Dida365 task bridge: session-header panel + 11 tools
dsh-translateVendor parameter translation and deterministic JSON repair for DeepSeek Harness.
dsh-wechatWeChat ↔ DSH bridge (Tencent iLink bot): text/image/file/voice, approvals in chat
dsh-autotierAutomatic strong/cheap model-tier routing with deterministic risk guards and a /tier command
dsh-catalogDSH Desktop Market standard catalog source for the PerryLink family
dsh-cert-mcpRead-only MCP server exposing the certification registry: grades, snapshots and five-dimension evidence
dsh-kitOne-command starter pack that installs the core family
dsh-plugin-certificationCommunity certification registry with repro-checkable grades and badges
dsh-plugin-kitShared zero-runtime-dependency toolkit for the PerryLink DSH plugins
dsh-plugin-portalZero-dependency static portal rendering the whole plugin family as one page
dsh-plugin-upgrade-015Merged 0.1.3-alpha.1 → 0.1.5-rc.1 upgrade corridor card plus a zero-dependency seam scanner
dsh-team-roomsCross-session team rooms: shared message bus, task board and timeline