前言¶
在 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:
- 将插件目录放到
<PLUGIN_DIR>(README 示例使用git clone到该路径;亦可使用 Releases 解压)。 - 编辑
%USERPROFILE%\.dsh\profiles\desktop\package.json:在dependencies增加"dsh-pet-qqmusic": "link:<PLUGIN_DIR>"(JSON 中反斜杠写成\\);在dsh.profile.bundles增加"dsh-pet-qqmusic"。 - 在 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
- 若使用桌面悬浮(
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
- 刷新 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 为准。