DeepSeek Harness Hub
← 返回列表

语音会话插件PerryLink/dsh-talk

DeepSeek Harnessspec-screenednotify在 GitHub 查看 ↗
✓ 可直接安装

🎙️ dsh-talk

自动检查通过:npm 包已发布且 engines 声明满足基线(声明 Node ^22.19.0 || >=24.0.0);该结论来自程序自动检查,未经人工实机验证。 · 最近上游提交 2026/9/19 · 已提供中文文档

DeepSeek Harness 的语音优先会话循环:一个带有浏览器/本地语音转文本(Web Speech、FunASR、whisper.cpp)的编辑器麦克风按钮,一个用于文本转语音回复的 speak 工具(浏览器、edge-tts、piper),带静音功能的事件播报,以及语音打断。

综合分
39.8
GitHub 分
39.8
用户评分
★ Stars
11
周下载量
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add dsh-talk
npm 包 dsh-talk 已校验归属本仓库,走 npm 安装最省事
数据截至 2026/9/19(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
安装兼容性检查✓ 自动检查通过

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

npm 包dsh-talk @ 0.3.10
Node 引擎要求 ^22.19.0 || >=24.0.0 · 基线 Node 22.19 满足
dsh CLI 依赖未声明 dsh 版本约束
入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后验证 2026/9/18 14:30:11

依赖的 DSH / Cordis 模块
@deepseek-ai/dsh-attachment@deepseek-ai/cordis@deepseek-ai/cordis-plugin-include@deepseek-ai/cordis-plugin-loader@deepseek-ai/dsh-agent@deepseek-ai/dsh-api-remotes@deepseek-ai/dsh-client-connection@deepseek-ai/dsh-client-locale@deepseek-ai/dsh-client-ui-conversation@deepseek-ai/dsh-client-ui-settings@deepseek-ai/dsh-client-ui-slots@deepseek-ai/dsh-llm
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动

README

🎙️ dsh-talk
- 1024 商店渠道:先执行一次 npm i -g dsh1024,然后执行 dsh1024 plugin --profile web add dsh-talk(会计入 deepseek1024.com 的安装排名)。
Gitee

DeepSeek Harness 的语音优先会话循环:对它说话,听它回答。

按下麦克风,开口说话,回复会被朗读出来——并支持说话打断。

License
DSH plugin
dsh-doctor
Node
CI
Version
npm version
npm downloads

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

兼容性

| 层面 | 状态 |
|---|---|
| Harness | DeepSeek Harness dsh-v0.1.6-alpha.2(2026-09-18 适配:第三个 peer 子句 + engines.dsh + manifestVersion: 1,以及锚定到该版本的每月 Compat 工作流);2026-09-18 全部门禁链路通过(双 typecheck 标尺、86 项测试、构建、自包含、产物、打包)。npm dev/test 线 0.1.5-rc.2,peers >=0.1.2-rc.1 =0.1.5-alpha.1 =0.1.6-0 =24.0.0 |
| 浏览器 | Web Speech + MediaRecorder(Chrome/Edge 最佳);其余情况使用宿主的转录/TTS 引擎 |

你将获得

dsh-talk 双向闭合语音循环:

- speak 工具 —— 智能体将其回复大声朗读出来。TTS 引擎:浏览器语音、edge-tts(网络神经语音)或 piper(本地)。音频在浏览器中播放;在能够承载它的宿主上,会话日志会记录经过净化的朗读内容(见安全边界)。
- 输入框麦克风按钮 —— 按下它,开口说话,转录文本会落入输入框(或直接提交)。STT 引擎:浏览器的 Web Speech(包含中间结果)、FunASR HTTP 服务器或本地 whisper.cpp。
- 说话打断 —— 开始说话会停止正在播放的任何内容(客户端 → 宿主,通过 talk Remote 命名空间)。
- 事件公告 — 完成轮次、待审批(瀑布式安全:绝不阻塞门控)以及错误,带有静音开关和可配置短语。
- 设置选项卡 — 引擎/语言选择和公告开关,保存为仅追加的配置文件补丁操作,并带有备份。

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)

快速开始

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'

然后按下编辑器旁边的麦克风并说话;让智能体用 speak 说出它的回复:

Say "hello" with the speak tool.

安装与卸载

- git 渠道(最新的 main):dsh plugin --profile web add "github:PerryLink/dsh-talk#main" — prepare 脚本仅使用生产依赖进行构建。
- npm 渠道(已发布的版本):dsh plugin --profile web add dsh-talk。
- tarball 渠道:在此仓库中运行 pnpm pack,然后运行 dsh plugin --profile web add ./dsh-talk-.tgz。
- 卸载:dsh plugin --profile web remove dsh-talk(或从配置文件补丁中移除该行)。

如果 pnpm 对此包报告 ERR_PNPM_IGNORED_BUILDS(esbuild 无害的平台二进制验证),请将 allowBuilds: { esbuild: true } 添加到你的 pnpm-workspace.yaml — dsh CLI 会打印出确切的代码片段。

配置

所有可调项都是 Schemastery Config 字段(可从 cordis.yml 更改)。cordis.patch.yml 内联记录了每个键。

| 键 | 默认值 | 含义 |
|---|---|---|
| record.enabled | true | 显示编辑器麦克风按钮 |
| record.hotkey | (无) | 可选的切换热键,例如 "alt+r" |
| record.maxSeconds | 60 | 录音时长上限(秒)(1..600) |
| record.autoSubmit | false | 将转录内容作为用户消息提交(false = 填入草稿) |
| record.vad.enabled / silenceMs / energyThreshold | true / 1500 / 0.01 | 语音活动检测:静音自动结束录音(当 AudioContext 缺失时会降级) |
| stt.engine | auto | auto / web / funasr / whisper;auto 优先选择已配置的本地引擎,然后是 Web Speech |
| stt.language | auto | BCP-47 语言或 auto |
| stt.interim | true | 显示临时转录(Web Speech) |
| stt.silenceFinaliseMs | 4000 | 在无语音达到这么多毫秒后停止连续 Web Speech 识别(500..15000) |
| stt.funasr.url | (无) | FunASR 推理端点;当引擎为 funasr 时必填 |
| stt.whisper.modelPath | (无) | whisper.cpp 模型;当引擎为 whisper 时必填 |
| tts.engine | auto | auto / browser / edge-tts / piper;auto 优先选择 piper,其次 edge-tts,最后是浏览器语音 |
| tts.rate | 0 | edge-tts/piper 的语速偏移百分比(-50..50) |
| tts.fallbackToBrowser | true | 当本地引擎失败时回退到浏览器语音 |
| tts.browser.voiceName | (无) | 首选浏览器语音名称;未知名称将使用平台默认值 |
| tts.browser.rate | 1 | 浏览器 SpeechSynthesis 语速(0.1..10) |
| tts.browser.pitch | 1 | 浏览器 SpeechSynthesis 音调(0..2) |
| tts.piper.modelPath | (无) | piper 语音模型;当引擎为 piper 时必填 |
| announce.enabled | true | 事件播报的总开关 |
| announce.onTurnEnd / onApproval / onError | true | 哪些事件会被朗读 |
| announce.messages. | "Turn complete." 等* | 朗读的短语 |
| interrupt | true | 说话会停止当前播放 |
| maxSpeakChars | 20000 | speak 工具文本长度上限(1..100000) |
| maxAudioCacheBytes | 8388608 | 内存中合成音频缓存上限(1 MiB..64 MiB) |

stt.silenceFinaliseMs 和 record.vad.silenceMs 是两种不同的机制:前者在连续识别未听到语音时最终确定 Web Speech 转录文本,后者是基于 MediaRecorder 能量的检测器,用于结束录音(并在 record.autoSubmit 开启时提交录音)。它们运行在不同的流水线中,不共享任何状态。

工具与界面

| 界面 | 类型 | 备注 |
|---|---|---|
| speak | 工具 | 朗读文本(browser/edge-tts/piper);支持按调用覆盖引擎/语音;规范的 JSON 结果 |
| 麦克风按钮 | conversation.input.left 插槽 | 录音 → 转录 → 填充草稿(或提交);按下时说话以打断 |
| 设置标签页 | settings.plugins.tab(id 为 talk) | 引擎/语言/播报开关;仅追加式保存 |
| talk:* | Typert Remote | status、audio、transcribe、applySettings、interrupt(宿主命名空间) |

权限与数据

- 权限:该插件除内存中按字节数限制的音频缓存外不存储任何内容;麦克风权限由浏览器管理。设置标签页仅向配置文件追加补丁片段,并附带带时间戳的备份——从不重写文件。
- 数据:音频永远不会进入模型上下文或会话日志。在宿主的会话词汇表接受它的情况下,dsh-talk/speech 事件会携带话语 id、引擎、原因、大小、经过清理的文本,以及适用时的浏览器语音/语速/音调;在不支持信封的宿主上,该事件根本不会被写入。所有显示/日志界面都会对凭据、JWT、bearer 标头和临时路径进行脱敏处理。
- 网络:只会联系你配置的引擎。edge-tts 执行网络合成,FunASR 使用其配置的端点,而 Chrome 的 webkitSpeechRecognition 会将麦克风音频发送到 Google 的服务器进行转写;浏览器 speechSynthesis 播放则保持在本地。

安全边界

- 模型可见 ⟺ 已记录——模型只能看到 speak 工具的规范值和渲染文本。dsh-talk/speech 事件仅在宿主能够承载它时才会被追加(参见宿主兼容性);tool/call + tool/result 事件始终保留为可重建的轨迹。
- 审批通知从不阻塞——approval/request 监听器始终调用 next()。
- 已净化输出——凭据和临时音频路径永远不会进入日志或显示。
- 宿主兼容性——dsh-talk/speech 事件通过一个是/否门控来追加。已知类型词汇表覆盖该事件的宿主会追加它,并且调用会报告已追加;其他所有宿主——从已发布的各版本直到 0.1.1-rc.2、0.1.2-alpha 系列、0.1.2-rc.1,以及 0.1.6-alpha.2,其 Session.append 只能标记表层意图而无法标记 ignorable 信封(该字段仅为存储日志的读取兼容性而保留)——都不会追加,因此语音在那里永远不会污染会话日志。跳过不再是静默的:宿主会保留每个会话的已追加/已跳过计数器,talk/latest(sessionId) 会读回它们,客户端的会话范围播放列表保持为空,并且 speak 工具结果仍然是可重建的审计轨迹。
- 大声失败——无效引擎、超出范围的值,以及未配置其所需模型/端点的引擎都会导致挂载失败。

已知限制

- 浏览器支持:Web Speech 和 MediaRecorder 会进行特性检测;没有它们时,麦克风按钮会自行禁用,而宿主引擎(FunASR/whisper.cpp)在配置后仍可进行转写。
- 本地引擎需自行安装:edge-tts、piper 和 whisper.cpp 的可执行文件和模型必须单独安装。
- 录制格式:浏览器使用其原生 MediaRecorder 编解码器进行录制;whisper.cpp 可能需要配置为 WAV 的录制器,或对其他格式进行服务器端转换。
- 设置需重新加载后生效:设置选项卡会追加到配置文件补丁;配置文件重新加载(或 Web 应用重启)会激活更改。
- 在没有相应词汇表的宿主上,实时播放历史为空:在 0.1.1-rc.2、0.1.2-alpha 系列、0.1.2-rc.1 和 0.1.6-alpha.2 上,宿主词汇表不认识 dsh-talk/speech,因此门控不会写入任何内容,客户端的会话范围播放列表保持为空;talk/latest(sessionId) 仍会以最新话语和已跳过计数器作出应答。语音本身、麦克风、设置选项卡和工具均不受影响。
- 由 dsh-talk ≤ 0.2.1 写入的旧版日志在冷加载前可能需要修复:截至 0.2.1 的版本会追加未标记的 dsh-talk/speech 事件。在 0.1.0-rc.7 及更新的主机上,日志中已包含这些事件的会话在下一次冷加载时会以 SessionFormatUnsupportedError 失败。修复方法:停止主机,备份会话的 .jsonl 日志,为每一行 "type" 为 "dsh-talk/speech" 的 JSON 行添加 "ignorable":true 作为顶层成员(例如,在开头的 { 之后立即插入 "ignorable":true,),然后重新打开该会话。其他内容均不变,也不会丢失任何内容;此版本的新追加内容永远不会添加未标记的事件。

开发

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

主题

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

贡献者

- @PerryLink — 创建者与维护者:语音管线、语音引擎、麦克风录音器、事件公告、投影单元,以及五种语言的文档。

PerryLink DSH 插件家族

本项目是由 PerryLink 维护的 40 个 DeepSeek Harness 插件之一。如果这个插件对你有帮助,其他的很可能也会:

| 插件 | 一句话简介 |
|---|---|
| dsh-auto-review | 审批链上的第二模型自动审查,默认故障关闭 | |
| dsh-background-agents | 持久化的后台子代理,带 Web UI 侧边栏、消息传递与中断 | |
| dsh-budget | DeepSeek Harness 的成本治理:预算、碳排与延迟集于一个面板。 | |
| dsh-checkpoint-rewind | 等同于 Claude Code /rewind:快照、会话分叉、一次性恢复 | |
| dsh-claude-move | 将 Claude Code 的会话、记忆、技能和 CLAUDE.md 迁移到 DSH | |
| dsh-click | DeepSeek Harness 的跨平台原生桌面控制——Windows 优先。 | |
| dsh-composer-history | Web 编写器的终端风格输入历史:方向键、Ctrl+R 搜索 | |
| dsh-data-quality | 数据集质量检查与引用交叉核对(此处消费的可选数值桥梁) | |
| dsh-defend | 面向 DeepSeek Harness 的提示注入、越狱和机密泄露防御。 | |
| dsh-doublecheck | 工程纪律守卫:需求拷问、测试门禁、对抗性审查 | |
| dsh-draw | 面向 DeepSeek Harness 的统一静态图像生成路由。 | |
| dsh-fast | 面向 DeepSeek Harness 的只读性能诊断。 | |
| dsh-fund-research | 面向中国公募基金的确定性研究报告 | |
| dsh-github | 面向 DSH 的 GitHub PR/issue 集成,每次写入均需审批门控 | |
| dsh-industry-research | 行业研究编排,通过本插件的 ctx.researchReport.assemble 封存其交付物 | |
| dsh-library | 面向 DeepSeek Harness 的本地文档知识库。 | |
| dsh-local-ai | 面向 DeepSeek Harness 的本地模型(Ollama)集成。 | |
| dsh-lsp-actions | 基于语言服务器的 LSP 诊断、格式化、补全、代码操作和重命名 | |
| dsh-mask | PII 脱敏中间件:在模型边界匿名化,在展示层还原 | |
| dsh-mcp-panel | 只读 MCP 运行时面板:/mcp 命令 + 设置标签页,含状态、工具和错误 | |
| dsh-memento | 审批门控的跨会话记忆:ctx.memory 接缝 + SQLite + memory 工具 | |
| dsh-observe | 面向 DeepSeek Harness 的 OpenTelemetry 和 Langfuse 可观测性导出器。 | |
| dsh-output-styles | 等效于 Claude Code outputStyles 的运行时样式切换 | |
| dsh-permission-rules | Claude Code 风格的声明式 allow/deny/ask 权限规则,带审计 | |
| dsh-personal-directive | 带顶栏开关的个人指令注入器(框架版) | |
| dsh-plugin-guide | 作为按需智能体技能的插件开发知识库 | |
| dsh-plugin-doctor | 面向 DSH 插件的零依赖静态 + 沙箱冒烟检测器 | |
| dsh-reach | 多通道审批/提问桥接:微信/Telegram/飞书,会话控制台 |
| dsh-research-report | 可验证的研究报告引擎:内容寻址的证据账本和密封版本 | |
| dsh-score | DeepSeek Harness 插件的多维度质量评分。 | |
| dsh-session-pin | 在 Web 侧边栏中固定会话,并保持持久排序 | |
| dsh-session-sync | DeepSeek Harness 的跨设备会话同步——你的会话存储的专用 git 镜像。 | |
| dsh-skill-pack-security | 安全审计技能包:密钥扫描、依赖和供应链审查 | |
| dsh-test-drive | 针对 DeepSeek Harness 插件的隔离安装与冒烟测试试驾。 | |
| dsh-ticktick | 滴答清单/TickTick 任务桥接:会话头部面板 + 11 个工具 | |
| dsh-translate | 面向 DeepSeek Harness 的供应商参数翻译和确定性 JSON 修复。 | |
| dsh-wechat | 微信 ↔ DSH 桥接(腾讯 iLink 机器人):文本/图片/文件/语音,聊天内审批 | |
| dsh-autotier | 自动强/廉价模型层级路由,带确定性风险防护和 /tier 命令 | |
| dsh-catalog | PerryLink 系列的 DSH Desktop Market 标准目录源 | |
| dsh-cert-mcp | 只读 MCP 服务器,公开认证注册表:等级、快照和五维证据 | |
| dsh-kit | 一键安装核心系列的一体化入门包 | |
| dsh-plugin-certification | 社区认证注册表,带可复现检查的等级和徽章 | |
| dsh-plugin-kit | 面向 PerryLink DSH 插件的共享零运行时依赖工具包 | |
| dsh-plugin-portal | 零依赖静态门户,将整个插件系列渲染为一个页面 | |
| dsh-plugin-upgrade-015 | 合并的 0.1.3-alpha.1 → 0.1.5-rc.1 升级通道卡片,外加零依赖接缝扫描器 | |
| dsh-team-rooms | 跨会话团队房间:共享消息总线、任务板和时线 | |

从 DSH Desktop Market 安装
所有 PerryLink 插件均可在内置的 DSH Desktop Market 中浏览:Market → Sources → add source → 粘贴 https://perrylink-dsh-catalog.perrylink.workers.dev/catalog-source.json → 选择它。安装仍需经过 Market 的 npm 身份验证以及你的确认。

许可证

Apache License 2.0 © 2026 dsh-talk contributors

上游仓库有新提交时邮件通知你(每天最多一封,无更新不打扰),随时一键退订。

💬 加入 DPharness 群聊

插件用法、部署报错、新插件第一时间同步——群里问,比一个人翻文档快。

点击加入 QQ 群
DPharness 群聊二维码,手机 QQ 扫码进群
扫码进群