前言¶
在 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 列出五项,缺一通常无法完整使用:
- ffmpeg(录音)。
- 语音识别 API 密钥(填入设置 → 语音弹幕)。
- Chrome 扩展 — 将设置页中的「本地桥端口」与「本地桥口令」填入扩展弹窗(细节见仓库
extension/README.md);口令留空时扩展无法连桥。 - 已登录的 B 站直播间页面保持打开(后台即可)。
- 允许 DSH 使用麦克风(Windows:设置 → 隐私和安全性 → 麦克风 → 允许桌面应用访问)。
重启 DSH 后打开 设置 → 语音弹幕,填写 ASR 密钥并配置扩展与本地桥口令;不需要在插件里填 B 站凭证。
典型用法¶
基本流程¶
- 确认 ffmpeg 在 PATH 或已在设置中指定路径(启动日志会写实际使用的路径)。
- 在浏览器打开目标直播间并保持标签页存在。
- 游戏中按
F9说话,再按F9结束并识别;核对浮层文字后按F11发送,或F10取消。 - 若普通热键在游戏内无反应,先在仓库根目录用 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 站前端改版可能导致扩展找不到发送控件(设置页会上报探测结果,而非静默失败)。