DeepSeek Harness plugin

dsh-netease-music

DSH 网页版网易云音乐播放器插件:顶部条常驻迷你播放器 + 展开面板(每日推荐/歌单/私人FM/搜索/队列/历史/设置),扫码登录,内置自动启动 NeteaseCloudMusicApi,支持 AI 对话控制播放。

Jump to install

Source facts

Repository
JasonCHTT/dsh-netease-music
Latest update
Aug 15, 2026
Category
Just for Fun
GitHub stars
0
Format
plugin
Catalog evidence
Upstream dsh.bundle evidence
Evidence path
package.json#dsh.bundle
Checked against
0.1.0-rc.8
Upstream check date
2026-08-20

This evidence comes from the upstream catalog. This site has not installed, run, or security-reviewed the plugin.

Install

Start with a prompt that asks an agent to review the GitHub repository and source. Switch to the command if you want to install it yourself.

Copy this prompt into DSH, Codex, or another agent and ask it to review the GitHub repository and source first.

Do not install or run any commands yet. Read this plugin's GitHub repository, README, and relevant source code. Then answer the questions below clearly and directly so I can decide whether it fits my needs:

1. What is this plugin, and what problem does it solve?
2. Who is it for, and what are its typical use cases?
3. How is it used after installation? Include one minimal example.
4. What known limitations or privacy, security, compatibility, or maintenance risks does it have?
5. Give a clear recommendation: recommend, conditionally recommend, or do not recommend, with reasons.

Distinguish statements documented by the repository, inferences from source code, and unknowns. If evidence is insufficient, say so explicitly. Do not guess or simply repeat the README.

GitHub: https://github.com/JasonCHTT/dsh-netease-music
Plugin: dsh-netease-music
Author: JasonCHTT

Check the source files

Read the README and other files from this plugin directory before installing.

File explorer3 files
README.mdSource · read only

<div align="right"><b>简体中文</b> | <a href="README.en.md">English</a></div>

dsh-netease-music

<p align="center"> <a href="https://github.com/JasonCHTT/dsh-netease-music"><img alt="release" src="https://img.shields.io/github/v/release/JasonCHTT/dsh-netease-music"></a> <img alt="platform" src="https://img.shields.io/badge/platform-DSH%20Web-blueviolet"> <a href="https://github.com/JasonCHTT/dsh-netease-music/blob/main/LICENSE"><img alt="license" src="https://img.shields.io/github/license/JasonCHTT/dsh-netease-music"></a> </p>

<p align="center"><b>DeepSeek Harness(DSH)网页版的网易云音乐播放器插件</b></p> <p align="center">常驻顶部条迷你播放器 + 可展开完整面板 · 内置自动启动的 <a href="https://github.com/Binaryify/NeteaseCloudMusicApi">NeteaseCloudMusicApi</a> 本地服务 · 支持 AI 对话控制</p>

<p align="center"><span style="font-size:1.5em;font-weight:600">我</span>听说,从前有个木匠,他手里那把刨子磨得锃亮,做起活来便格外顺手。人做事也是一样,手里的家伙什儿顺了,心里便不慌,活计也就做得利落。工作时听歌,就如同给心神添了一副趁手的器具,让繁杂的事务也生出几分轻快来。这并非贪图安逸,而是懂得调适自己的节奏,使精神常驻清明。若按礼法来看,人各掌其事,也各有其养心之法,能让自己安住当下,便不失为本分。这样看来,随身带着乐声劳作,岂不也是一种贤者的智慧?</p>

---

截图

<p align="center"><img src="demo.jpg" alt="使用截图" width="720"></p>

功能总览

  • 顶部条常驻迷你播放器:封面、歌名 / 歌手、上一首、播放 / 暂停、下一首、播放模式切换、单行滚动歌词
  • 展开播放面板:每日推荐、我的歌单、私人 FM、搜索(歌曲 + 歌单)、播放队列、播放历史、设置
  • 完整播放控制:顺序 / 列表循环 / 单曲循环 / 随机播放,进度条拖动,音量调节,歌词显示
  • 断点续播:自动记住关闭前正在播放的歌曲、歌单与播放位置,重新打开后继续收听
  • 扫码登录:面板内展示二维码,手机网易云音乐 App 扫码确认,登录状态持久化(重启 DSH 不丢)
  • AI 控制工具:注册模型工具 netease_music,可直接在对话里控制播放器

安装

环境要求

  • DeepSeek Harness(dsh web
  • Node.js、pnpm(安装依赖用)

安装步骤

# 1. 进入 web profile 目录
cd "$env:USERPROFILE\.dsh\profiles\web"

# 2. link 安装本插件(<路径> 替换为插件目录的绝对路径)
pnpm add 'link:C:/<路径>/dsh-netease-music'

# 3. 安装插件运行时依赖 NeteaseCloudMusicApi
pnpm add NeteaseCloudMusicApi

# 4. 编辑 profile 的 package.json,在 dsh.profile.bundles 末尾追加
#    "dsh-netease-music"

4. 完成后重启 dsh web(Host 端需要重启进程加载),刷新页面即可在顶部条看到播放器。

> 提示:如果使用 dsh plugin --profile web add ... 命令安装,路径中不能包含空格(该命令内部拼接命令行时会被截断);上方 pnpm 直装方式没有此限制。

卸载

cd "$env:USERPROFILE\.dsh\profiles\web"
pnpm remove dsh-netease-music NeteaseCloudMusicApi   # 若其他插件也在使用 API 包,保留它
# 从 package.json 的 dsh.profile.bundles 中删除 "dsh-netease-music",重启 dsh web

使用说明

登录

1. 面板「推荐 / 歌单 / 私人FM」页或「设置 → 账号」中点击 「扫码登录」 2. 手机网易云音乐 App 扫码并确认登录 3. 登录状态显示在设置页;「退出登录」可注销

播放一首歌

1. 点击顶部条播放器左侧封面 / 箭头展开面板(也可用快捷键 Ctrl+Shift+M) 2. 切换到 「搜索」 页,输入歌名 / 歌手 / 专辑 / 歌单,回车 3. 搜索结果分「歌单」和「歌曲」两个区块展示: - 点歌单 → 进入歌单详情,可「播放全部」或点单曲播放 - 点歌曲(或行尾 ▶ 按钮)→ 直接播放

每日推荐

登录后打开面板 「推荐」 页 → 「播放全部」或点击单曲。

我的歌单

面板 「歌单」 页 → 显示账号下全部歌单(创建 + 收藏)→ 点击进入详情播放。

私人 FM

面板 「私人FM」 页 → 「开始播放」获取专属推荐流 → 「换一批」刷新推荐。

播放控制

操作位置
上一首 / 播放暂停 / 下一首顶部迷你播放器、面板底部播放条
播放模式(顺序 / 列表循环 / 单曲循环 / 随机)迷你播放器与面板的模式按钮,点击循环切换
进度拖动面板底部进度条
音量调节面板底部音量滑块(可在设置中隐藏)
歌词面板底部滚动歌词框 + 顶部条单行滚动歌词(随行上下滚动、居中、宽度自适应顶栏剩余空间)
播放队列面板「队列」页:点击跳转、清空
播放历史面板「历史」页:本机保留最近 50 首

断点续播

插件会自动记住你关闭页面前的状态,重新打开 dsh web 后继续收听:

  • 记住的内容:正在播放的歌曲、歌单(播放队列,最多 300 首)、播放位置(播放中每 5 秒自动保存一次)、播放模式
  • 恢复方式:打开页面后自动恢复歌曲与队列,并从上次位置继续播放;若浏览器自动播放策略拦截(新页面首次播放需要一次点击),歌曲会停在原位置并提示,点一下播放按钮即可继续
  • 存储位置:仅保存在本机浏览器 localStorage;清空播放队列后记忆随之清除

设置项

打开面板「设置」页(或 DSH 设置 → 网易云音乐):

分组项目说明
显示模块每日推荐页 / 歌单页 / 私人FM页 / 歌词显示 / 播放历史页 / 音量调节勾选即时生效,控制面板页签与控件显隐
播放音质标准 / 高音质 / 极高音质(非 VIP 自动降级为标准)
播放播放模式顺序 / 列表循环 / 单曲循环 / 随机
账号状态 / 扫码登录 / 退出登录
本地服务NeteaseCloudMusicApi 状态、重启按钮默认端口 3000

用 AI 控制播放

插件注册了模型工具 netease_music,在对话中直接说即可,例如:

  • 「帮我播放周杰伦的晴天」
  • 「播放每日推荐」「播放我的歌单」「下一首」「暂停」
  • 「把音量调到 50%」「切换为随机播放」

工具动作一览:

action说明
search按关键词搜索歌曲,返回结果列表(含歌曲 id)
play按 songId 播放一首歌
pause / toggle暂停 / 播放暂停切换
next / previous下一首 / 上一首
setMode设置播放模式:sequence / loop / single / shuffle
volume设置音量 0~1
state查询当前播放状态(歌曲 / 模式 / 音量 / 队列)
daily播放每日推荐
playlists列出账号歌单(含歌单 id)
playPlaylist按 playlistId 播放歌单

工作原理

  • Host 端lib/index.js):零第三方 import(仅 Node 内置模块 + webServer / subprocess / tools 服务)

- 通过 webServer 注册同源路由 /plugin/netease-music/*(设置、API 代理、命令队列、状态回报),浏览器端直接 fetch,无跨域问题 - 用 subprocess 拉起 NeteaseCloudMusicApi(默认端口 3000,崩溃自动重启) - 代理全部网易云 API 请求并自动附带登录 Cookie(持久化在 profile 目录,重启登录不丢) - 通过 tools 注册 AI 工具 netease_music

  • Client 端lib/client.js):自注册浏览器 bundle,HTML5 <audio> 播放

- 歌曲地址优先取 /song/url/v1(按所选音质自动降级),无地址时回退 music.163.com/song/media/outer/url - 每 1.2s 轮询一次 Host 命令队列执行 AI 指令,播放状态回报 Host 供 AI 查询

  • UI 挂载点:迷你播放器 → conversation.session.header.actions(顶部条);面板 → shell.overlay(全局浮动层,Portal 到 body);设置页 → settings.section

项目结构

dsh-netease-music/
├── package.json           # 插件清单(dsh.bundle.patch + dsh.client)
├── cordis.patch.yml       # 注入 profile 的 Loader 补丁
├── lib/
│   ├── index.js           # Host 端插件
│   └── client.js          # 浏览器端 bundle
├── nm-default-cover.jpg   # 未播放时的默认封面图(内嵌于 bundle)
├── demo.jpg               # 使用截图
├── README.md              # 中文说明
├── README.en.md           # 英文说明
└── LICENSE

常见问题

Q:需要登录才能用吗? 搜索、播放、队列、历史不需要登录;每日推荐、私人 FM、我的歌单需要登录。

Q:登录状态会被别人拿到吗? 不会。登录 Cookie 只保存在你的本机 profile 目录,且只存在于宿主机进程内部——浏览器端拿到的设置数据已剔除 Cookie 字段,插件路由也只响应本机(loopback)请求。登录状态不会随插件仓库或安装包分发。

Q:本地 API 服务(默认 3000 端口)可以暴露到公网吗? 不可以。登录 Cookie 以 URL query 参数形式传给本机 NeteaseCloudMusicApi(上游 API 的设计约束),若把该端口暴露到公共网络,服务器日志与网络抓包都可能残留 Cookie。请保持该服务仅监听本机(127.0.0.1),不要把 3000 端口转发到公网。

Q:有些歌播放失败? 无版权或需要单独付费的歌曲无法播放,面板会提示。非 VIP 的高音质 / 极高音质会自动降级为标准音质。

Q:打开页面第一次点播放没反应? 浏览器自动播放策略要求页面首次播放必须有一次点击;点击过一次后,AI 下发的播放命令即可正常生效。

Q:改了代码怎么生效?lib/client.js 刷新页面即可;改 lib/index.js 需要重启 dsh web

Q:本地 API 服务启动很慢或失败? 首次启动需要十余秒;若端口 3000 被占用,可在设置页重启或在 profile 的插件配置中修改端口。

致谢

许可证

[MIT](LICENSE)