DSH HUB
HomePlugin StorePlugin PacksCommunityRankingsResourcesPublish Guide
Plugin source
Back to catalog

YardonYan /

YardonYan/dsh-plugin-netease-lyrics

Verified

网易云音乐歌词贴进 DeepSeek Harness 状态行右侧,伪装成状态行的一部分。Netease Cloud Music lyrics beside the DSH activity line, disguised as part of it.

★ 0 Stars0 Forks0 IssuesN/A Community rating0 Confirmed installs
View on GitHub
READMESource: main@a9d9bef3

dsh-plugin-netease-lyrics

DeepSeek Harness(DSH)摸鱼歌词插件:桌面网易云音乐在放什么,DSH 输入框上方的「深度求索中,用时 X 秒 …」状态行右边就同步浮现当前那句歌词——同字体、同字号、同颜色,看起来只是那句话有点长。

灵感:工作时要听歌,但把网易云切出来看歌词太张扬。不如让歌词藏进 DSH 自己的状态行里。

目前只支持 Windows 宿主加桌面版网易云音乐。 其他系统与其他音乐平台的适配,欢迎一起做:有想法先到 Discussions 说,准备动手前看 CONTRIBUTING.md。

效果预览

DSH 里的样子——歌词贴在「深度求索中」右边,一模一样的橙色小字:

歌词贴行效果

歌词贴行效果 2

此时网易云里正在放的歌(对应上面两张图):

正在播放 1

正在播放 2

不仔细看,只会觉得这句状态话有点长——只有你知道那是歌词。

工作原理

桌面网易云音乐 ──播放──▶ Windows SMTC 系统媒体接口(歌名 / 歌手 / 播放状态)
                                   │
                                   ▼
                   插件 Host 端(DSH 宿主进程内)
                    ├─ 常驻 PowerShell worker 每秒读一次 SMTC
                    ├─ Host 秒表推算播放进度*(见"已知限制")
                    └─ 拉取网易云歌词 API(LRC + 翻译,7 天缓存)
                                   │  同源 HTTP 路由 /plugin/netease-lyrics/*
                                   ▼
                   Client 端(浏览器 bundle)
                    └─ 每秒轮询,把当前歌词行以 fixed 定位
                       贴在「深度求索中」状态行右侧,
                       computed style 现场克隆其字体字号颜色

* 网易云 PC 客户端不通过 SMTC 上报播放进度,所以插件自己跑秒表:切歌归零、暂停停表、恢复续走。

当前支持范围

目前只验证了 Windows 加网易云音乐这一种组合,其他组合都还没做:

维度 已支持 尚未支持
宿主系统 Windows 10 / 11 macOS、Linux
音乐客户端 桌面版网易云音乐 QQ 音乐、酷狗、Spotify、Apple Music 等

这不是改个配置就能切的事,而是实现层面的绑定:

  • 播放状态来自 Windows 的系统媒体传输控件(SMTC),属于 Windows 独占接口。macOS 要另找系统级正在播放接口,Linux 走 MPRIS(D-Bus),取数方式与 Windows 完全不同
  • 歌词检索走网易云的公开接口,换音乐平台就得另接歌词源,还要按对方的曲目 ID 体系重写匹配逻辑
  • 播放状态与歌词源必须成对替换,只换一边跑不起来

一起共创

仓库已经开源,缺陷、适配、新功能都欢迎直接提。还没想清方案的,先到 Discussions 聊,定了再写代码也不迟。

最值得做的两件事:

  • 适配其他系统:把 smtc-worker.ps1 换成对应系统的取数方式,宿主端与浏览器端基本不用动。Windows 之外没有 SMTC,需要各自找系统级正在播放接口
  • 适配其他音乐平台:Windows 上 SMTC 覆盖所有注册了系统媒体控件的播放器,smtc-worker.ps1 目前按 *cloudmusic* 过滤会话,放开匹配就能拿到 QQ 音乐、Spotify 等播放器的曲目,剩下要补的是歌词源

换歌词源、修歌词匹配、调界面细节、补截图与文档同样欢迎。流程与代码约定见 CONTRIBUTING.md;只有想法、还没想清怎么落地的,用功能建议模板开个 issue 讲清使用场景就行,不用先写代码。

安装

环境要求

  • DeepSeek Harness(Windows 宿主;SMTC 是 Windows 独占 API,其他平台插件保持静默不报错,适配方法见上方「一起共创」)
  • 桌面版网易云音乐,且已在 设置 → 播放 打开「系统媒体控件」类开关(不开的话 SMTC 读不到播放状态,这是最容易踩的坑)

步骤

# 在 DSH 会话中直接安装(<路径> 换成仓库克隆位置)
dsh plugin --profile web add "<路径>/dsh-plugin-netease-lyrics" --save-exact

或在 DSH 的插件管理里以本地目录 bundle 方式安装。安装后重启 dsh web(Host 端需要加载进程),刷新页面。

使用

  1. 打开桌面网易云放一首歌
  2. 在 DSH 里随便发一条消息让 AI 转起来
  3. 「深度求索中」状态行右边会出现同样式的歌词,跟着演唱进度换行
  4. 鼠标悬停歌词可看完整句和翻译(如果有);浮层不拦截点击,下方控件照常可用

必读:注意事项与已知限制

限制 原因 缓解办法
歌词不显示的第一排查项 网易云没开「系统媒体控件」 网易云 → 设置 → 播放 → 打开系统媒体控件开关,切一次歌生效
拖动网易云进度条后歌词漂移 SMTC 不上报 seek,秒表感知不到 换一首歌再换回来,即重新对齐
单曲循环时秒表会走出歌尾 秒表不知道歌曲总长 同上
仅适配中文界面 锚点匹配「深度求索中,用时」文案 在插件配置里改 anchorText(见下)
AI 空闲时歌词不显示 设计行为:状态行不在 = 歌词隐藏(隐蔽优先) 想常显需自行改 client.js 的 stealth 判断
仅本机访问 路由只响应 loopback + Origin 校验 这是安全特性,不开放外露
歌词搜索偶尔对不上歌 按「歌名 + 歌手」搜索取首个精确匹配 少见;纯音乐/翻唱版本多时可能取错

配置

在 profile 的 cordis.patch.yml 中覆盖该插件行:

- override:
    id: netease-lyrics
    config:
      anchorText: "深度求索中,用时"   # 换成你的宿主状态行文案(英文界面等)

关于 anchorText 的三点:

  • 只认这一个键,值的用途是在页面里定位宿主状态行,不是替换歌词内容
  • 未配置、配置成非字符串或空字符串时,回退到内置默认值 深度求索中,用时
  • 客户端在加载时读取该值,改完要刷新页面;改动 index.js 才需要重启 dsh web

文案本身要选状态行里稳定出现的一小段。太短容易误匹配聊天正文,太长在状态行拆分文本节点时会匹配不到。

隐私与安全

  • 插件不读取网易云账号、Cookie 或任何客户端数据,只读 Windows 系统媒体会话的公开快照(歌名/歌手/状态)
  • 歌词经 music.163.com 公开接口按歌名搜索,无需登录
  • HTTP 路由仅接受本机回环地址,带 Origin 校验,防 DNS rebinding

目录结构

dsh-plugin-netease-lyrics/
├── package.json          # 插件清单(dsh.bundle.patch + dsh.client)
├── cordis.patch.yml      # Loader 补丁
├── index.js              # Host 端:SMTC worker 监管 + 歌词代理路由
├── client.js             # 浏览器端:锚点定位 + 歌词渲染 + 悬停浮层
├── smtc-worker.ps1       # Windows SMTC 探测 worker(ASCII-only,PS 5.1 兼容)
├── scripts/
│   └── smtc-probe.ps1    # 单独验证 SMTC 能否读到网易云会话
├── docs/                 # 效果截图
├── locale/               # 展示名称与描述(en / zh)
├── .github/              # Issue 与 Pull Request 模板
├── CONTRIBUTING.md       # 贡献流程、代码约定与提交规范
├── SECURITY.md           # 安全问题报告方式与关注范围
├── CHANGELOG.md          # 版本变更记录
└── icon.svg              # 插件图标

排障速查

歌词完全不出现?

  1. 网易云在放吗?→ 放着才有效
  2. 网易云系统媒体控件开了吗?→ 设置 → 播放
  3. AI 在转吗(「深度求索中」行存在)?→ 空闲时按设计隐藏
  4. 浏览器 F12 控制台有没有 [netease-lyrics] 警告?→ worker 挂了会在这里提示

歌词突然卡住不走? 网易云被暂停又恢复过、或拖动过进度条 → 切一首歌再切回来。

颜色/位置不对? 歌词样式是从状态行现场克隆的,若 DSH 更新改了状态行实现,重新刷新页面即可。

开发与贡献

环境准备、本地生效方式、代码约定与提交规范见 CONTRIBUTING.md。只想先跑一遍语法自检:

npm run check

提缺陷时请附上系统媒体控件开关状态,以及控制台里 [netease-lyrics] 开头的告警原文,缺这两项多数问题无法定位。安全问题按 SECURITY.md 走私密报告,不要开公开 issue。

致谢

  • NeteaseCloudMusicApi 社区 摸清的公开歌词接口参数
  • JasonCHTT/dsh-netease-music 的 README 提供了 DSH 插件挂载点参考

许可证

MIT

—/ 5

No ratings yet

Verified DSH bundle

Commit a9d9bef343c3

Community comments

No comments yet. Be the first to write one.

DSH HUB

A community index for DSH plugins. Not an official GitHub or DeepSeek AI product.

CommunityResourcesAPIAbout