DSH HUB
HomePlugin StorePlugin PacksCommunityRankingsResourcesPublish Guide
Plugin source
Back to catalog

zeelinkCN /

zeelinkCN/dsh-netease-music

Verified

DeepSeek Harness 网易云音乐插件:侧栏红标入口、听歌模式轮播、黑胶/歌词页、原生全屏、播放模式(顺序/列表/单曲/随机)、红心收藏、左侧栏迷你播放器;对话里说「放首歌」由 Agent 调 netease_play 在插件内播放;装插件自动安装网易云 MCP 数据引擎。

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

网易云音乐 · DeepSeek Harness 插件

在 DeepSeek Harness 里直接听网易云音乐:左侧栏入口 → 整页音乐界面(每日推荐 / 歌单 / 歌手 / 搜索), 扫码登录后即可播放。音乐面板里有页内播放条;回到对话后,播放器缩到左侧栏底部的迷你播放器, 不悬浮、不遮挡输入框,一边工作一边听歌。

仓库:https://github.com/zeelinkCN/dsh-netease-music

version UI login license

功能

  • 官方红标:左侧栏入口、面板左上角、插件管理页统一使用网易云官方红底白音符图标(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 指向这个包目录即可:

  1. 首次激活时,插件会自动检测数据引擎并自动安装: git clone cloud-music-mcp → 创建 .venv → uv pip install -e .(没有 uv 时自动退回 python3 -m venv + pip)。
    • 过程在面板「数据引擎」卡片里实时显示(阶段 + 日志),也可以调 GET /netease-panel/api/setup/install/log 查看。
    • 安装好后自动连接、自动拉首页,无需重启 Harness。
  2. 左侧栏出现网易云图标,点开扫码登录即可听歌。

引擎目录默认是 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 依赖与网易云接口 面板显示安装/网络错误,可点「重试」

使用

  1. 点左侧栏「网易云音乐」图标 → 右上角「扫码登录」→ 用手机网易云 App 扫码(会员账号解锁高音质)。
  2. 首页「听歌模式轮播」选心动/漫游/相似歌曲/相似艺人/每日推荐(点卡片直接开播),或切到「歌单」「歌手」「搜索」。
  3. 音乐面板底部是本页播放条:可拖进度、上一首/播放/下一首、音量、音质、播放队列、红心收藏;点封面进入全屏播放页(黑胶 / 歌词互斥,可切换)。
  4. 切到对话继续工作:播放器收成左侧栏 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。

截图

搜索页大搜索框 播放模式与底部播放条 全屏播放页(原生 Fullscreen) 侧栏图标(深色) 首页轮播·心动模式 轮播绕回动画 黑胶播放页(底部工具栏 + 58% 盘心) 歌词播放页 收藏红心 对话框左侧栏迷你播放器 侧栏收起为 56px 的迷你按钮 滚动后贴顶的不透明标题栏 引擎无感安装 对话页里点歌(左侧迷你播放器)

已知局限

  • 未登录(匿名)状态下,会员歌曲只能试听 128k/约 42 秒;登录自己的会员账号后才是完整音质。
  • 离线 harness 用假侧栏(56px)+ 全宽 main,真实 Harness 顶栏下 --dsh-frame-top-clearance 的实际留白需真机目视。
  • 歌单详情首屏 100 行 + 「加载更多」,未做虚拟滚动。
  • 歌词为标准 LRC 同步(非逐字),暂无「歌词/写真」等更多播放页皮肤。
  • 迷你播放器依赖 Harness 的 sidebar.footer.action 槽;若宿主改版/收起侧栏,位置会随之变化(已同时适配 56px rail)。

License

MIT © zeelinkCN

网易云音乐名称、图标与相关商标归网易公司所有,本插件与网易公司无隶属关系;官方红标仅用于本机识别。详见 NOTICE。

—/ 5

No ratings yet

Verified DSH bundle

Commit 9c73e9efea6a

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