鲸歌(dsh-pet-qqmusic):让桌宠跟着 QQ 音乐与网易云逐行唱歌词

前言

在 DSH 里挂着 dsh-pet 时,桌宠气泡多半还是静态碎碎念,和正在听的 PC 端音乐没有关联。自己写脚本读播放器状态、再对齐 LRC 时间戳投喂气泡,要处理 QQ 音乐的系统媒体会话、网易云的进度与 seek,还要避免每换一句歌词就触发桌宠换动作。下面介绍社区插件 鲸歌(dsh-pet-qqmusic):在 Windows 上把 QQ 音乐与网易云 PC 客户端的播放进度接到 dsh-pet,按歌词时间逐行显示,延迟、翻译与显示模式可配置。

这是什么

鲸歌是 DeepSeek Harness(DSH) 插件,仓库由维护者 344272586-sketch 发布,在 SkillHub 插件目录 分类为「趣味换装」。包名 dsh-pet-qqmusic 源于早期只支持 QQ 音乐;当前版本(资料中 package.json 为 1.3.9)同时支持 QQ 音乐与网易云音乐 PC 客户端。

一句话:播到哪一句,桌宠气泡就显示哪一句。QQ 音乐通过 Windows SMTC 读标题、进度与时长;网易云直接解析本地 cloudmusic.elog,不依赖 BetterNCM、InfLink 等注入方案,并能感知拖拽 seek。歌词按 LRC 时间戳切行,经 dsh-pet 的 /dsh-pet-7340/broadcast 或 Web 侧自绘气泡展示。插件不需要 DeepSeek、OpenAI、QQ 音乐或网易云的 API Key,也不读 Cookie。

核心功能

双播放器与自动切换

  • QQ 音乐:依赖 Windows 10 1809+ / Windows 11 的 SMTC;需在客户端设置里开启「显示系统媒体传输控制(SMTC)」。
  • 网易云音乐:读取 %LOCALAPPDATA%\NetEase\CloudMusic\cloudmusic.elog(默认路径,可通过配置覆盖);3.0+ 客户端会写该日志,资料在 3.1.39 上验证。
  • 配置项 player 默认为 "auto":谁在播放就跟谁;也可强制 qq 或 netease。

歌词与显示

  • 按 LRC 时间戳逐行同步;默认 600ms 提前量(offsetMs)用于补偿 dsh-pet 气泡约 1 秒的轮询,范围 −5000~5000 ms;网易云可用 neteaseOffsetMs 单独微调。
  • 按「歌名 + 歌手 + 时长」在曲库匹配版本(Live / 伴奏等降权);网易云优先用 songId 取词。
  • 自动跳过开头制作名单与「歌名 - 歌手」标题行;纯音乐识别为无填词时显示「纯音乐,请欣赏」。
  • 可选 showTranslation:有翻译时显示原文 + 译文两行;切歌时可先显示「歌名 - 歌手」(showTrackInfo)。
  • 不刷新宠物模型:Web 桌宠用自绘歌词气泡;桌面悬浮模式可对 dsh-pet 打 quiet 补丁,歌词只更新气泡,不切动画、不重播。

宿主与客户端协作

宿主约 200ms 采样,浏览器侧 lib/client.js 约 300ms 轮询,并按下一行时间主动排程;同一行可通过 keepAliveSec(默认 8 秒)补发,避免气泡约 10 秒自动收起。hostFallback 在 DSH 被最小化或后台节流时,由宿主直接写 dsh-pet,减轻对浏览器轮询的依赖(overlay 模式不启用)。

多桌宠时 petId 留空表示当前选中的桌宠,也可固定投给某一 id。

前置条件

条件 说明
系统 Windows 10 1809+ / Windows 11
QQ 音乐 PC 建议 ≥ 21.10.2962(更早版本可能不上报进度);资料在 22.76 验证
网易云 PC 建议 3.0+;资料在 3.1.39 验证
dsh-pet 已安装并启用,建议 0.3.5+
DSH 桌面版(desktop profile)或 dsh web
Node 插件 engines 要求 >= 20

开启 QQ 音乐 SMTC 的路径(小版本菜单文案可能略有差异):

QQ 音乐 → 主菜单(≡)→ 设置 → 常规设置 → 通知
        → 勾选「显示系统媒体传输控制(SMTC)」

网易云无需 SMTC;只要启动过客户端并播放过歌曲,上述 cloudmusic.elog 一般会存在,否则插件会在桌宠气泡提示。

安装与启用

插件以当前 DSH 进程权限运行;安装前请阅读仓库源码与 MIT 许可证。无 git 环境可从 Releases 下载源码包,再解压到固定目录(下文 <PLUGIN_DIR>,例如 C:\Plugins\dsh-pet-qqmusic)。

方式 A:DSH 桌面应用(desktop profile)

桌面版的 desktop profile 由 Electron 独占管理,不能直接用 dsh plugin --profile desktop add ... 登记本地插件,需手动 link:

  1. 将插件目录放到 <PLUGIN_DIR>(README 示例使用 git clone 到该路径;亦可使用 Releases 解压)。
  2. 编辑 %USERPROFILE%\.dsh\profiles\desktop\package.json:在 dependencies 增加 "dsh-pet-qqmusic": "link:<PLUGIN_DIR>"(JSON 中反斜杠写成 \\);在 dsh.profile.bundles 增加 "dsh-pet-qqmusic"。
  3. 在 profile 目录用 DSH 自带 Node / pnpm 安装:
$profile = "$env:USERPROFILE\.dsh\profiles\desktop"
$node = "$env:USERPROFILE\.dsh\dsh-runtimes\dsh-primary-runtime\dependencies\node\bin\node.exe"
$pnpm = "$env:USERPROFILE\.dsh\dsh-runtimes\dsh-primary-runtime\dependencies\pnpm\bin\pnpm.mjs"
& $node $pnpm install --dir $profile --config.confirmModulesPurge=false
  1. 若使用桌面悬浮(display: "desktop"),需额外执行 quiet 补丁(Web 桌宠可跳过):
cd <PLUGIN_DIR>
& "$env:USERPROFILE\.dsh\dsh-runtimes\dsh-primary-runtime\dependencies\node\bin\node.exe" `
  scripts\patch-dsh-pet-quiet-lyrics.mjs --restart
  1. 刷新 DSH 页面;未加载则完全退出 DSH 再打开。dsh-pet 升级覆盖 events.js 后需重跑上述补丁脚本。

方式 B:dsh web(web profile)

dsh plugin --profile web add link:<PLUGIN_DIR>

安装后重启 dsh web 并刷新浏览器。发布到 npm 后也可使用 dsh plugin --profile web add dsh-pet-qqmusic(以仓库说明为准)。

配置

用户配置默认位于 %USERPROFILE%\.dsh\dsh-pet-qqmusic\config.json(即 $DSH_HOME/dsh-pet-qqmusic/config.json)。修改后下一轮生效,一般无需重启整个 DSH;neteasePath 变更需重启插件。

常用项摘要:

键 默认 说明
enabled true 总开关
player "auto" auto / qq / netease
offsetMs 600 歌词提前量(毫秒)
displayMode "auto" auto / overlay / bubble
showTranslation false 是否显示译文行
prefix "♪ " 气泡前缀(最多 8 字符)

也可用 HTTP 读写配置(将 <DSH_PORT> 换成实际端口):

Invoke-RestMethod http://127.0.0.1:<DSH_PORT>/dsh-pet-qqmusic/config.json

Invoke-RestMethod http://127.0.0.1:<DSH_PORT>/dsh-pet-qqmusic/config.json -Method Put `
  -ContentType 'application/json' -Body '{"offsetMs":800,"showTranslation":true}'

延迟调法:歌词比声音快则减小 offsetMs(可为负);比声音慢则增大。蓝牙耳机或外置声卡常见再 ±200~500 ms。

典型用法与自检

播放 QQ 音乐或网易云任意歌曲后,桌宠气泡会随进度切换当前行,例如 README 中的效果示意:

QQ 音乐   晴天 — 周杰伦        00:29
桌宠气泡  ♪ 故事的小黄花

网易云    熄灭 — TC            01:09
桌宠气泡  ♪ 可不知不觉你的心已越来越远

调试与状态接口(资料中的路由):

路由 用途
GET /dsh-pet-qqmusic/ 可视化调试面板(约 1.5 秒刷新)
GET /dsh-pet-qqmusic/state.json 当前行、下一行与进度
GET /dsh-pet-qqmusic/health helper 与歌词状态
POST /dsh-pet-qqmusic/refresh 强制重新取词

未开启 QQ 音乐 SMTC 时,health 可能返回 available: false 及 smtc-off 提示文案,按设置项打开 SMTC 即可。

适用场景与注意

适合在 Windows 上同时使用 DSH、dsh-pet 与 QQ 音乐或网易云 PC 版,希望桌宠气泡与听歌进度一致、又不愿折腾播放器注入或第三方歌词插件的用户。网易云路径走本地 elog,插件说明仅解析歌名、歌手、进度等字段,不读取日志中的 musicurl 签名链接。

限制需心里有数:平台以 Windows 为主(QQ 依赖 SMTC);双客户端同时播放时用 player 指定来源;桌面悬浮要维护 quiet 补丁与 dsh-pet 版本关系。DSH 生态是「一切皆插件」;SkillHub 为社区目录,与 DeepSeek / 幻方无官方从属关系。

结尾

鲸歌把 QQ 音乐的 SMTC 与网易云的 cloudmusic.elog 接到同一套 LRC 逐行逻辑,再喂给 dsh-pet,并针对 Web 与桌面悬浮区分气泡实现方式。需要安装步骤、配置表与原理图时,以仓库 README 为准。

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

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

Xiaoye