dsh-netease-music
DiscoveredDeepSeek Harness NetEase Cloud Music Plugin: sidebar red-badge entry, listening-mode carousel, vinyl/lyrics pages, native fullscreen, playback modes (sequential/list/single/random), heart-to-favorite, left-sidebar mini player; saying "play a song" in the conversation triggers the Agent to call netease_play to play within the plugin; installing the plugin automatically installs the NetEase Cloud MCP data engine.
网易云音乐 · DeepSeek Harness 插件
在 DeepSeek Harness 里直接听网易云音乐:左侧栏入口 → 整页音乐界面(每日推荐 / 歌单 / 歌手 / 搜索), 扫码登录后即可播放。音乐面板里有页内播放条;回到对话后,播放器缩到左侧栏底部的迷你播放器, 不悬浮、不遮挡输入框,一边工作一边听歌。
仓库:https://github.com/zeelinkCN/dsh-netease-music
功能
- 官方红标:左侧栏入口、面板左上角、插件管理页统一使用网易云官方红底白音符图标(22px)。
- 首页「听歌模式」大 banner 轮播:心动模式 / 漫游·私人FM / 相似歌曲 / 相似艺人 / 每日推荐 五张卡,左右无缝循环(6s 自动 + 箭头/滑动 + 悬停暂停),点一下就直接开播;接口不可用时自动降级并提示。
- 全屏播放页(黑胶 / 歌词 严格互斥)
- 黑胶模式:整页封面模糊背景 + 正圆黑胶旋转(盘心封面 58%,黑圈变细),可点唱片暂停/播放,不显示歌词卡。
- 歌词模式:全屏大字号滚动歌词,当前行品牌红高亮、自动居中、点任意行跳唱、翻译副行;不显示黑胶。
- 底部保留整条工具栏(封面/歌名/上一首/播放/下一首/可拖拽进度条/音量/音质/队列),播放页内不再重复第二条进度条;右上角「黑胶 / 歌词」切换并记住偏好;返回或 Esc 退出不中断播放。
- 音质可调:自动 / 标准 / 较高 / 极高 / 无损 / Hi-Res,切换时保持播放进度;显示实际码率与「试听」标记(会员账号实测无损 FLAC 1.5 Mbps)。
- 播放条不挡工作区
- 在网易云面板里:页面底部内嵌一条 dock(占自己的布局行,不遮列表、不悬浮)。
- 回到对话/其它面板:只在左侧栏 Settings 上方显示占满侧栏宽度的迷你播放器(封面 + 歌名 + 上一首/播放/下一首 + 喇叭音量滑杆,2px 进度贴底);侧栏收起成 56px 时只留封面按钮。
- 原生全屏播放:播放页右上角「全屏」按钮调用浏览器原生 Fullscreen API(真·整个屏幕,覆盖侧栏/聊天/菜单栏);曲目行「全屏播放」按钮 = 播放 + 播放页 + 自动全屏;Esc 先退全屏(播放页保留),返回键 = 退全屏 + 关播放页 + 回列表,任何路径离开播放页都会退出全屏,不会被困住。
- 播放模式:顺序播放 / 列表循环 / 单曲循环 / 随机播放,播放条与全屏页各一个模式按钮(图标+文字,窄屏只图标),选择会记住;随机模式保留历史供「上一首」回退。
- 列表点歌不跳页:在歌单/搜索/推荐/专辑列表点歌只开始播放并更新底部播放条,停留在当前列表可连续点歌;进播放页只由用户主动点封面/「打开播放页」/行内「全屏播放」触发。
- 搜索页大搜索框:切到「搜索」tab 内容区顶部有通栏大搜索框(自动聚焦、回车搜索、与顶部搜索框同步),不再只有空状态提示。
- 图标语义区分:「打开播放页」用矩形+上箭头图标,四角括号只用于真全屏,避免误触。
- 收藏红心:曲目行悬停、播放页歌名旁、底部播放条各有一颗红心,点一下收藏到「我喜欢的音乐」(实心=已收藏),三处状态实时同步;未登录会提示先登录。
- 扫码登录:面板内直接出二维码,手机网易云 App 扫一扫;登录态只存在本机,会员账号解锁高音质。
- 三种听歌入口:推荐(今日推荐 / 推荐歌单 / 收藏歌手)、歌单(我的/收藏,全量曲目)、搜索(单曲/歌单/歌手/专辑);另有歌单 / 专辑 / 歌手详情页。
- 首次安装即自动装好数据引擎(cloud-music-mcp):无需命令行,面板内可视化进度与日志。
- 对话里直接点歌:在任意对话里说「放首歌 / 来点周杰伦 / 听心动模式」,AI 会调用插件工具
netease_play在 Harness 内置播放器播放(不启动桌面客户端);netease_player可查当前播放、暂停/继续/切歌/跳进度/调音量/收藏。MCP 里会「唤起桌面客户端」的cloud_music_play/cloud_music_login已被拦截。
数据来源
数据来自你的网易云 MCP:Code-MonkeyZhang/cloud-music-mcp。
插件把它的 Python 依赖(pyncm + 账号登录态)作为数据引擎常驻运行(server/bridge.py),
因为 MCP 的 tools 只返回给人/模型看的文本(没有封面、时长、歌词等结构化字段),
而界面需要结构化数据与可播放音源。登录态与 MCP 共享:扫码登录后会把 cookie 镜像写入
engine/cloud-music-mcp/src/cloud_music_mcp/storage/cookies.json,所以同一个 MCP 也对 Agent 生效。
Agent 侧:插件自带
netease_play/netease_player工具(见「对话里点歌」),cordis.patch.yml里的netease-mcp行同时提供 MCP 搜索类工具;两套工具共享登录态。
目录结构
dsh-netease-music/
├── index.js # Host:REST 路由 / 引擎进程 / 音频图片代理 / Agent 工具 / 播放器命令队列
├── client.js # 浏览器:整页面板 + 侧栏图标 + 迷你播放器 + 播放页 + 播放器 store
├── server/bridge.py # 常驻 Python 数据引擎(NDJSON over stdio)
├── server/installer.mjs # 引擎无感安装器(clone + venv + pip,跨 macOS/Linux/Windows)
├── server/selftest.mjs # 引擎自测(真实网络,41 项)
├── engine/cloud-music-mcp/ # 上游 MCP 仓库 + .venv(安装时自动生成,不进仓库)
├── selftest/ # 浏览器端验收 harness(headless Chrome,432 项断言)
├── docs/ # CONTRACT.md 契约 + 截图
├── locale/{zh,en}.json # 插件管理页展示文案
└── assets/icon*.png # 官方网易云红标(插件管理页图标)
安装
不需要任何命令行操作。 在 DeepSeek Harness 里用 plugin_manager 的 install_bundle 指向这个包目录即可:
- 首次激活时,插件会自动检测数据引擎并自动安装:
git clone cloud-music-mcp→ 创建.venv→uv pip install -e .(没有 uv 时自动退回python3 -m venv+pip)。- 过程在面板「数据引擎」卡片里实时显示(阶段 + 日志),也可以调
GET /netease-panel/api/setup/install/log查看。 - 安装好后自动连接、自动拉首页,无需重启 Harness。
- 过程在面板「数据引擎」卡片里实时显示(阶段 + 日志),也可以调
- 左侧栏出现网易云图标,点开扫码登录即可听歌。
引擎目录默认是
engine/cloud-music-mcp(已在.gitignore中,不进仓库、不随包分发)。 想手动预装或装到别处,可用环境变量DSH_NETEASE_PYTHON/DSH_NETEASE_UV覆盖。
依赖前置(自动安装所需)
| 依赖 | 用途 | 没有时 |
|---|---|---|
uv | 下载 Python 3.12 并建 venv(推荐) | 自动退回系统 python3.10+ + pip |
git | 克隆上游 MCP 仓库 | 需提前把 cloud-music-mcp 放到 engine/ |
| 网络/代理 | 拉取 pip 依赖与网易云接口 | 面板显示安装/网络错误,可点「重试」 |
使用
- 点左侧栏「网易云音乐」图标 → 右上角「扫码登录」→ 用手机网易云 App 扫码(会员账号解锁高音质)。
- 首页「听歌模式轮播」选心动/漫游/相似歌曲/相似艺人/每日推荐(点卡片直接开播),或切到「歌单」「歌手」「搜索」。
- 音乐面板底部是本页播放条:可拖进度、上一首/播放/下一首、音量、音质、播放队列、红心收藏;点封面进入全屏播放页(黑胶 / 歌词互斥,可切换)。
- 切到对话继续工作:播放器收成左侧栏 Settings 上方的迷你播放器,不遮挡输入框;点它回到音乐面板。
对话里点歌(Agent 工具)
在任意对话里直接说:
| 你说 | Agent 调用 | 效果 |
|---|---|---|
| 「放点周杰伦」 | netease_play({query:"周杰伦", limit:20}) | 搜索并播放前 20 首 |
| 「听心动模式 / 私人 FM / 相似歌曲」 | netease_play({mode:"heart"|"roam"|"similar_song"}) | 按当前歌曲为种子生成队列 |
| 「播放我的歌单」 | 先 netease_player({action:"search", type:"playlist", query:"…"}) 再 netease_play({playlistId}) | 播放整张歌单 |
| 「现在在放什么 / 暂停 / 下一首 / 调小音量 / 收藏这首」 | netease_player({action:"status"|"pause"|"next"|"volume"|"like"}) | 控制同一个播放器 |
播放不会切换你的面板,也不启动桌面网易云客户端;cloud_music_play / cloud_music_login 已被守卫拦截,模型会被引导到插件播放器与面板扫码。
配置
Host 侧支持环境变量(一般不需要):
| 变量 | 默认 | 说明 |
|---|---|---|
DSH_NETEASE_MUSIC_DIR | ~/.dsh/netease-panel | 登录态与日志目录 |
DSH_NETEASE_PYTHON | engine/cloud-music-mcp/.venv/bin/python | 引擎解释器 |
DSH_NETEASE_BRIDGE | server/bridge.py | 引擎脚本 |
DSH_NETEASE_ENGINE_DIR | <插件目录>/engine/cloud-music-mcp | 引擎安装目录 |
DSH_NETEASE_UV | 自动探测 | uv 可执行文件路径 |
故障排查
- 面板提示「数据引擎尚未安装」:正常会自动安装;失败时点「重试」,或看
~/.dsh/netease-panel/install.log。 - 已经装好但对话里说放歌没反应:确认左侧栏播放器可手动播放(需要页面刷新到最新版本),并检查
~/.dsh/netease-panel/bridge.log。 - 扫码后一直 waiting:检查网络(网易云接口在国内网络需要代理时,给引擎加代理环境变量),日志在
~/.dsh/netease-panel/bridge.log。 - 某首歌点了没声音:会员/版权限制,
/api/audio会返回「这首歌暂时没有可播放的音源」;播放条会跳到下一首。 - 想清空登录态:面板账号菜单「退出登录」,或删除
~/.dsh/netease-panel/cookies.json。
隐私
- 登录 cookie 仅保存在本机
~/.dsh/netease-panel/cookies.json(并镜像给本地 MCP 的 storage 目录)。 - 插件只访问网易云官方接口(经
pyncm)与 Harness 本地127.0.0.1,不上传任何账号信息。
可选:MCP 也给 Agent 用
cordis.patch.yml 默认已包含 netease-mcp 一行:它把 cloud-music-mcp 作为 stdio MCP 服务器接进 Harness,
于是 Agent 能直接调用 cloud_music_* 工具(搜歌、歌单、播放),与面板共享登录态。
如果不希望 Agent 直接操作音乐,删掉 cordis.patch.yml 里的 netease-mcp 那一项并重启 Harness 即可;
也可以只保留 command 的路径指向你机器上的其它 MCP 安装。
开发与验证
- 契约:
docs/CONTRACT.md(数据形状 / 路由 / 播放器 store / 视觉规范 / 测试钩子)。 - 引擎自测(真实网络,登录态):
cd dsh-netease-music && node server/selftest.mjs→ 41/41(含 like 收藏、模式接口、匿名降级、回滚不污染收藏)。 - Host 冒烟:
node --check index.js+ 假引擎/假 ctx 驱动路由与 Agent 工具(工具定义、守卫、命令队列、状态上报)。 - 真实联调:真实 bridge + 真实网易云音源;headless Chrome 里
<audio>真实播放 mp3/FLAC(无损 1.5 Mbps),currentTime前进、readyState=4。 - 浏览器端验收:
cd selftest && node run.mjs→ PASS 432 / FAIL 0(headless Chrome CDP,43 张截图)。 - 侧栏图标:官方网易云红底白色音符标志,128px PNG 内联为 dataURL(
client.js的ICON_DATA),深/浅色都保持红色;插件管理页图标为assets/icon.png。
截图

已知局限
- 未登录(匿名)状态下,会员歌曲只能试听 128k/约 42 秒;登录自己的会员账号后才是完整音质。
- 离线 harness 用假侧栏(56px)+ 全宽 main,真实 Harness 顶栏下
--dsh-frame-top-clearance的实际留白需真机目视。 - 歌单详情首屏 100 行 + 「加载更多」,未做虚拟滚动。
- 歌词为标准 LRC 同步(非逐字),暂无「歌词/写真」等更多播放页皮肤。
- 迷你播放器依赖 Harness 的
sidebar.footer.action槽;若宿主改版/收起侧栏,位置会随之变化(已同时适配 56px rail)。
License
MIT © zeelinkCN
网易云音乐名称、图标与相关商标归网易公司所有,本插件与网易公司无隶属关系;官方红标仅用于本机识别。详见 NOTICE。
Comments
Loading…
Similar plugins
by xiekai886
这是一个可以让你边对话边听歌的 DeepSeek Harness 插件:折叠/展开两种可自由拖动的悬浮窗口形态,利用 Meting API 等解析源接入网易云音乐,支持歌单导入和按歌名或歌手搜索单曲导入。Chat and listen at the same time.
★ 4
MIT
JavaScript
Aug 16, 2026
dsh plugin --profile web add @dsh-external/dsh-musicby XiaoMao-yty
网易云音乐 DSH 插件:单曲/MV/歌词/笔记/歌手/图片抓取,歌单管理,以及 AI 私人电台策展。零 npm 依赖。
★ 0
MIT
JavaScript
Sep 21, 2026
dsh plugin --profile web add dsh-netease-musicby xiaoqiezi-china
为Deepseek-Harness开发的音乐播放插件。允许用户播放本地与网易云音乐。支持通过Cookie解锁VIP歌曲。提供了丰富全面的skill允许Agent控制音乐播放,自定义播放器CSS层叠样式表。允许队列结束后自动通知AI来挑选新的歌曲。
★ 0
↓ 244/wk
MIT
JavaScript
Aug 15, 2026
dsh plugin --profile web add dsh-music-playerDeepSeek Harness Web 本地音乐播放器插件:会话视图「音乐」标签页,flac/mp3 等常见格式,单曲/列表循环,macOS Music 风格 UI
★ 2
MIT
JavaScript
dsh plugin --profile web add @heshuren/dsh-music-playerby ZhaoZiyangShaanxi
Windows only, needs the NetEase Cloud Music client installed. NetEase Cloud Music player for the DSH Web UI: a mini bar that expands into a liquid-glass card with search, synced lyrics and volume, a c
★ 0
MIT
JavaScript
Oct 21, 2026
dsh plugin --profile web add dsh-netease-musicby Raywh
DeepSeek Harness 歌曲下载插件:搜索(B站/YouTube)+ 下载(MP3 320k 酷狗兼容)+ LRC 歌词(站点字幕 + 网易云兜底)。DSH plugin: song search & download with lyrics.
★ 0
MIT
JavaScript
Aug 31, 2026
dsh plugin --profile web add dsh-song-download