前言¶
在 DeepSeek Harness(DSH)中开发智能体时,有时需要播放本地音频或展示媒体内容。直接嵌入网页播放器会破坏沉浸感,且难以控制播放状态。DSH 的插件机制支持通过宿主半区提供 API、通过浏览器半区渲染 UI。dsh-netease-music 正是这样一个插件:它为 DSH 提供了一个完整的网易云音乐播放器,兼顾桌面端体验与智能体集成。
插件定位¶
dsh-netease-music 是 DeepSeek Harness 的客户端插件,由 zzy040919-ship-it 维护。它提供迷你播放条、液态玻璃卡片、黑胶视图等 UI 形态,支持自动登录本机网易云客户端账号、客户端同步、歌词显示、CDN 容灾与系统媒体键集成。插件只负责播放,不包含背景特效。
核心功能¶
迷你播放条¶
收起状态下,播放器以右上角一条玻璃条显示:小封面、歌名/歌手、播放键与进度线。点击可展开完整卡片。
播放器卡片¶
展开后显示液态玻璃卡片:高模糊背景、透明白色主体、边缘高光与鼠标跟随光斑。卡片顶部为封面与歌名,底部为搜索框、控制栏与歌词区。
黑胶视图¶
点击卡片上半部分(封面/歌名区),视图切换为大黑胶模式:唱片纹路、金色圈边、封面标签与金色唱臂。播放时唱片转动,暂停即停。
搜索¶
卡片底部输入框支持搜索。回车后结果就地展开,点击任意一条即可播放。搜索结果来自网易云网页搜索接口。
播放控制¶
支持上一首、播放/暂停、下一首。可点击进度条与音量条,音量记忆上次值。播放队列会在重启后继续。
歌词¶
自动拉取 LRC 歌词,卡片内显示当前句与下一句(含翻译)。
账号自动登录¶
点卡片上的账号按钮,宿主半区会自动从本机网易云客户端 CEF 数据目录中读取 cookie(使用 Windows DPAPI 解密),验证通过后写入本地文件。登录后可播放 VIP 与高音质曲目,卡片上显示头像。
客户端同步¶
读取网易云客户端窗口标题(格式为“歌名 - 歌手”),同步当前播放。若客户端未运行,则回退到账号最近播放列表。若两者均无,则先搜索一首歌。
CDN 容灾¶
网易云音频节点按域名调度,个别 m*.music.126.net 节点可能不可用。插件会自动切换至 m701/m702/m703/m801/m802/m803 等节点。
系统媒体键¶
通过 navigator.mediaSession 发布元数据,支持锁屏与系统媒体键控制。
安装与启用¶
标准安装¶
插件以 DSH bundle 形式提供,package.json 声明了 dsh.bundle.patch 与 cordis.patch.yml。安装到指定 profile 即可:
dsh plugin --profile desktop add https://github.com/zzy040919-ship-it/dsh-netease-music
安装后完全重启 DSH,插件才会生效。
手动安装(开发调试)¶
# 1) 链接进 profile
New-Item -ItemType Junction `
-Path "$env:USERPROFILE\.dsh\profiles\desktop\node_modules\dsh-netease-music" `
-Target "<本仓库路径>"
# 2) 在 profile 的 cordis.patch.yml 末尾追加
# - insert:
# - id: dsh-netease-music
# name: 'dsh-netease-music'
# 3) 完全重启 DSH
宿主半区有改动时必须完全重启客户端,只刷新页面不会重新加载。
结构说明¶
lib/index.js:宿主半区,提供/api/search、/api/song、/api/audio(同源音频代理)、/api/lyric、/api/cover、/api/account、/api/account/auto、/api/client-now等 API。lib/client.js:浏览器半区,在shell.overlay中渲染迷你条、玻璃卡片与黑胶视图。helper/client-title.ps1:读取网易云客户端窗口标题(同步客户端用)。helper/net-cookie-key.ps1:使用 DPAPI 解出 cookie 密钥(自动登录用)。cordis.patch.yml:bundle 补丁。
日志与排查¶
播放器将关键步骤写入 %TEMP%\dsh-netease-music.log,包括 streamUrl ok、cdn host ok、now playing、audio error、play rejected。
| 现象 | 原因 / 处理 |
|---|---|
| 点了播放没声音 | 浏览器自动播放策略:点击页面任意位置解锁后即可 |
| 提示「VIP / 付费歌」 | 需要登录账号(点卡片上的账号按钮自动登录本机客户端) |
| 一直「拿不到播放地址」 | 该曲目在网易云已下架或无版权 |
| 某个节点连接重置 | 插件会自动切换 m701/m702/m703/m801/m802/m803 等节点 |
| 同步客户端没反应 | 客户端没开时用账号最近播放;两者都没有时先搜一首歌 |
已知边界¶
- 网易云网页搜索接口在请求过多时会返回加密串,插件使用
/api/search/get,失败时自动回退。 - 客户端「同步」读的是窗口标题(格式为“歌名 - 歌手”),拿不到进度与暂停状态。
- 仅供个人学习使用,音乐版权归网易云音乐及各版权方所有。
适用场景与注意¶
该插件适合需要在 DSH 中集成音乐播放能力的智能体开发者。插件以当前 dsh 进程权限运行,安装前应检查源码与许可证(MIT)。Cookie 仅保存在本机、只用于 music.163.com 请求,不会上传。
结语¶
dsh-netease-music 为 DeepSeek Harness 提供了一个完整的网易云音乐播放方案,兼顾桌面端交互与智能体集成。通过宿主半区 API 与浏览器半区 UI 的协作,它展示了如何在一个插件中同时提供后端能力与前端展示。
- 目录页:https://www.skillhub.cn/plugins/zzy040919-ship-it/dsh-netease-music
- GitHub:https://github.com/zzy040919-ship-it/dsh-netease-music