dsh-voice-danmaku:游戏里用语音发 B 站弹幕,不切出窗口

前言

在 DeepSeek Harness(DSH)桌面端跑智能体或工具时,常见需求是「后台挂着 Harness,前台做别的事」。看 B 站直播并想发弹幕时,传统做法是 Alt+Tab 切到浏览器、打字、再切回游戏,打断操作节奏。若你已经在用 DSH 0.2 桌面端,并希望全局热键 + 语音识别把文字送到直播间,可以看一下社区插件 dsh-voice-danmaku(维护者 weizhida,分类:联网工具)。它把录音、转写、确认和发送串成一条链路,弹幕仍由浏览器里已登录的直播间页面发出,插件侧不保存 B 站凭证。

这是什么

dsh-voice-danmaku 是 DeepSeek Harness 的插件:玩游戏时按热键说话,识别结果浮在游戏画面上方,确认后由 Chrome 扩展驱动已打开的 B 站直播间页面发送弹幕,全程不必切出游戏。项目自述处于早期开发中,功能已端到端跑通,但接口与配置仍可能变化。当前 package 版本为 0.1.0,许可证 MIT。

使用前请知悉 README 中的风险说明:该工具可能触发游戏反作弊导致账号封禁,也可能触发 B 站直播风控导致 B 站账号封禁,使用风险自负。

核心功能

下面介绍 README 中已标明实现状态的能力。

操作链路

默认键位(均可在设置中修改):

键 动作
F9 按一下开始录音,再按一下结束并开始识别
F11 确认发送
F10 取消

识别结果在屏幕上方置顶显示,浮层不抢焦点、不接收鼠标,游戏可照常操作。确认超时由 behavior.confirmTimeoutSeconds 控制,默认 8 秒无操作会自动取消。

语音识别与发送

  • 语音识别走 OpenAI 兼容 转写 API,需在设置中填写 ASR 密钥;作者示例使用硅基流动上的 Qwen/Qwen3-ASR-1.7B,可自行更换服务商与模型。
  • 录音依赖系统可用的 ffmpeg(README 推荐 winget install Gyan.FFmpeg)。
  • 弹幕发送只有一条通道:Chrome 里保持打开的 B 站直播间页面 + Chrome 扩展;扩展通过本地桥与插件通信,由页面自行完成 wbi 签名与发送。插件不存 B 站 cookie 或登录态。
  • 插件侧强制执行发送频率限制(最小间隔与每小时上限)。

全局热键与媒体键

  • 普通全局热键在游戏前台也可配置;带内核级反作弊的游戏可能拦截键盘钩子,此时 README 提供媒体键备选(HID Consumer Control,RegisterHotKey),与普通键可同时生效。
  • 多直播间页面同时打开时,可按房间号定位;无法确定目标时会拒绝发送并说明原因。

环境与宿主版本

  • DeepSeek Harness 0.2(桌面端) — README 写明只针对 0.2 适配,装在 0.1.x 可能导致应用无法启动。
  • Windows 10 / 11(键盘钩子、媒体键、置顶浮层为 Windows 原生实现)。
  • 不需要单独装 Node.js 即可使用已构建插件;从源码构建时才需要 Node(engines 要求 >=22.19.0)。

安装与启用

插件以 DSH desktop profile 安装;README 强调不要用 npm 上的 dsh CLI 操作 desktop profile。

推荐:安装脚本

在插件仓库根目录执行(脚本会先编译,再以 link: 方式装进 desktop profile):

powershell -ExecutionPolicy Bypass -File tools/install-plugin.ps1

手工安装

必须使用桌面端自带的 CLI,将 <DSH 安装目录> 和本仓库绝对路径换成实际值:

& "<DSH 安装目录>\resources\runtime\cli\bin\dsh.cmd" plugin --profile desktop add "link:<本目录绝对路径>"

装完后必须重启 DSH(托盘退出,确认所有 DeepSeek Harness 进程结束),插件才会加载。

安装前还需自备

README 列出五项,缺一通常无法完整使用:

  1. ffmpeg(录音)。
  2. 语音识别 API 密钥(填入设置 → 语音弹幕)。
  3. Chrome 扩展 — 将设置页中的「本地桥端口」与「本地桥口令」填入扩展弹窗(细节见仓库 extension/README.md);口令留空时扩展无法连桥。
  4. 已登录的 B 站直播间页面保持打开(后台即可)。
  5. 允许 DSH 使用麦克风(Windows:设置 → 隐私和安全性 → 麦克风 → 允许桌面应用访问)。

重启 DSH 后打开 设置 → 语音弹幕,填写 ASR 密钥并配置扩展与本地桥口令;不需要在插件里填 B 站凭证。

典型用法

基本流程

  1. 确认 ffmpeg 在 PATH 或已在设置中指定路径(启动日志会写实际使用的路径)。
  2. 在浏览器打开目标直播间并保持标签页存在。
  3. 游戏中按 F9 说话,再按 F9 结束并识别;核对浮层文字后按 F11 发送,或 F10 取消。
  4. 若普通热键在游戏内无反应,先在仓库根目录用 README 提供的命令验证媒体键是否到达插件,再在设置中启用媒体键并捕获绑定。

验证媒体键示例:

npm run verify:media

配置文件(可选)

设置页可打开当前 profile 的补丁文件(桌面端为 ~/.dsh/profiles/desktop/cordis.patch.yml)。片段示例(字段以 README 为准):

- id: voice-danmaku
  name: dsh-voice-danmaku
  config:
    keys:
      record: F9
      send: F11
      cancel: F10
    channel:
      roomId: '你的直播间号'
      page:
        port: 39217
        token: '扩展弹窗里要填同一份口令'
    asr:
      apiKey: '你的密钥'

改配置文件后 DSH 重载插件可能有十几秒到一分多钟延迟;密钥以明文保存在该文件中,需注意本机安全。

弹幕长度默认上限 20 字(channel.maxLength,可设 20–100),识别完成后超长会自动截断并在浮层提示。

适用场景与注意

适合谁:已在 Windows 上使用 DSH 0.2 桌面端、看 B 站直播并希望边玩游戏边发弹幕、且愿意自行准备 ASR 密钥、ffmpeg 与 Chrome 扩展的用户。

不适合或需慎重:对账号安全极其敏感、或游戏反作弊策略严格的环境 — README 已明确封禁风险,安装前应阅读完整源码与 MIT 许可证,并理解插件以 当前 DSH 进程权限 运行,会访问麦克风、注册全局热键并与本地浏览器扩展通信。

项目状态:README 称功能端到端已验证(含服务端返回 code: 0),但属早期开发,B 站前端改版可能导致扩展找不到发送控件(设置页会上报探测结果,而非静默失败)。

链接

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye