前言¶
在 DeepSeek Harness(DSH)Web GUI 里长时间盯屏读回复,或需要边做别的事边听最新一轮对话,浏览器自带的「选中朗读」往往对不上会话结构:思考块、工具卡片、用量折叠行混在正文里,起点也不好固定。下面介绍社区插件 dsh-volume-knob:在输入框工具行、模型选择框左侧放一个扬声器按钮,默认从你最新一条提问的第一个字读到当前回复末尾,并附带页内媒体音量与系统输出音量的竖式混音台。
这是什么¶
dsh-volume-knob(npm 包名 dsh-volume-knob)由维护者 underworld-oddball 发布,作者署名为江湖老妖。它面向 DSH Web GUI,注册在槽位 conversation.input.right(提交键之前的一排紧凑控件),整体渲染在模型选择框左边;插件显式设置 order: 40,在同一槽位里通常紧贴模型选择框待在这一排最右侧。
一句话定位:朗读 + 音量,一个按钮——单击朗读/停止,长按后点正文自选起点,按住并上滑打开混音台。
核心功能¶
朗读与起点¶
- 默认起点:你最新那条提问的第一个字。每次单击(或 Enter / Space)都从该处读起,顺序为「这条提问 → 之后的助手回复(含最新一条)」;页面会滚到起点,并用闪烁光标标出位置(光标不形成编辑器选区,不影响复制)。
- 自定义起点:按住图标 ≥400ms 后松手,提示变为「选择开始位置后点击 / After Pick → Tap」;移动鼠标后提示消失,在正文处单击即定起点并立刻开读。松手后 5 秒无有效操作会自动取消;挑选期间除移动鼠标外,按键、滚轮、点空白、Esc、失焦等都会取消,诊断里会记录
gesture:pick-cancel及具体原因。 - 停止:朗读中再单击图标停止,或朗读自然结束;标记消失,起点规则仍回到「最后一次提问的第一个字」。起点按会话保存在
localStorage,刷新后仍在;出现新回复时自动回到最新提问开头。
文本来源(白名单)¶
插件只朗读带 [data-chat-flow] 且 data-chat-flow-kind 在白名单内的节点(在 DSH 0.1.7-rc.1 上实测过的类型):
| kind | 典型内容 | 是否朗读 |
|---|---|---|
user |
你的提问 | ✅ |
assistant-step(response) |
回复正文 | ✅ |
assistant-step(reasoning) |
思考过程 | ❌ |
turn-process |
折叠头(如用时) | ❌ |
turn-tail |
用量行 | ❌ |
tool-call |
工具调用卡片 | ❌ |
节点在 DOM 中平铺为兄弟节点,按文档顺序从起点读到末尾;按约 220 字分块请求 POST /dsh-tts/speak(依赖已配置的 dsh-tts provider 链)。未安装 dsh-tts 或某块合成失败时,剩余部分回退浏览器 speechSynthesis,不会从头重念。点击按钮时会先暂停页面上其它 <audio>,避免与 dsh-tts 的 speakReplies 叠播。
音量混音台¶
按住图标并向上拖拽(≥18px)从图标上方弹出竖式混音台:
| 推子 | 作用范围 |
|---|---|
| 页内音量 | 本标签页内所有 <audio> / <video> 的 volume(含本插件朗读) |
| 系统音量 | 系统输出(macOS osascript,Linux pactl);其它平台该行置灰并说明原因 |
两者串联:系统音量为上限。也可用 Alt + ↑ 开关混音台;点击页面其它位置或 Esc 收起混音台或取消挑选。
界面与无障碍¶
悬停图标显示三列中英双语提示(中文在上、英文在下):点击朗读 / 长按选起点 / 上滑调音量。朗读中图标变蓝并带声波弧。挑选起点时光标为琥珀色,朗读中为主题色。← / → 按字移动光标(Shift 加速 20 字),便于微调;空闲时用方向键挪过的位置不会成为下次单击的默认起点。
安装与启用¶
推荐从 npm 安装:
# 从 npm 安装(推荐)
dsh plugin --profile web add dsh-volume-knob
等价方式(取 GitHub 仓库源码):
dsh plugin --profile web add github:underworld-oddball/dsh-volume-knob
收录进社区列表后,还可在 dsh-market(设置 → 插件市场)搜索并一键安装。
装完后重启一次 dsh web(插件在启动时组入 boot graph),再刷新页面。
环境要求(来自 package.json):DSH >= 0.1.5-rc.3,且为 Web GUI;维护者在 README 中说明已在 next(0.1.7-rc.1)与 latest(0.1.5-rc.3)上核对过相关槽位 API。dsh-tts 为可选:不装也能用,仅合成质量与路由回退到浏览器语音。
典型用法¶
- 打开 DSH Web 会话,确认输入框右侧、模型选择框左侧出现扬声器图标。
- 听最新一轮:单击图标(松手后开始),从最新提问首字读到当前回复末尾;再单击停止。
- 从中间某段读起:长按图标约 0.4 秒松手 → 移动鼠标 → 在正文目标处单击;读完后标记消失,下次单击仍从「最新提问开头」读(除非再次长按选点)。
- 调音量:按住图标向上拖出混音台,分别调节页内与系统推子;或 Alt + ↑ 打开/关闭混音台。
布局示意(README):
[ …其他插件图标 ] [ 🔊 ] [ 模型选择 ▾ ] ← conversation.input.right 整体排在 .model 左边
适用场景与注意¶
适合:需要 hands-free 听最新问答、在流式输出较长时边听边扫代码、或希望单独压低/静音本页媒体而不动全局系统音量的 DSH Web 用户。
权限与安全:插件以当前 dsh 进程权限运行;系统音量接口经宿主路由(GET/POST /dsh-volume-knob/system),混音台只接受回环或同源请求,避免任意网页改机器音量。安装前建议查看 GitHub 仓库 源码与 MIT 许可证。
已知边界(README):页内音量为母音量,会覆盖元素上此前设过的 volume;浏览器 speechSynthesis 无音量 API,静音时只能 cancel();若回复在起点之后被重渲染,起点会尽量按同一节点夹取,节点整体替换时退回默认起点。
DSH 生态强调「一切皆插件」;SkillHub 目录页 为社区收录站点,与 DeepSeek / 幻方无官方从属关系。
结尾¶
dsh-volume-knob 把「从最新提问读起、可选起点、页内 + 系统音量」收进输入框一行,并与 DSH 消息 DOM 白名单和可选 dsh-tts 对齐。若要安装或查交互细节,见目录页与仓库 README: