前言¶
DeepSeek Harness(DSH)的理念是“一切皆插件”。当用户在对话中需要播放音乐时,直接打开本地播放器会打断上下文流,而让模型输出文本链接又缺乏交互性。dsh-music 解决了这个问题:它在对话流中渲染一张可交互的播放器卡片,模型只需输出一个 dsh-music 围栏,卡片即刻出现并接管播放控制。
插件定位¶
- 名称:
jh-evil/dsh-music - 维护者:jh-Evil
- 类型:客户端插件
- 功能:将 DSH 会话中的
dsh-music代码块渲染为支持网易云/QQ 双后端的音乐播放器卡片,提供视觉特效与完整播放控制。
核心功能¶
1. 双后端与自动降级¶
插件集成了网易云音乐和 QQ 音乐两个后端。
* 网易云音乐:支持搜索、播放直链(默认 320kbps)、歌词与翻译。
* QQ音乐:在免登录环境下,由于腾讯签名限制,多数歌曲无法获取直链。插件会自动跨后端切换到网易云音乐寻找同名同歌手曲目播放,并在状态栏标注降级原因。
* 容错机制:若两个后端均失败,卡片会标记为“不可播”并自动跳下一曲。
2. 视觉与交互¶
- 主题:提供
glass(玻璃拟态)、neon(霓虹发光)、paper(纸感)、vapor(蒸汽波)四种预设主题,以及自定义主题对象。 - 歌词模式:
bubble:悬浮玻璃歌词气泡,随播放浮动换行(默认)。bar:内嵌三行滚动歌词栏(含翻译)。none:不显示歌词。
- 特效:播放时气泡随节拍从唱片边缘升起(基于 WebAudio 实时频谱驱动,跨域不可用时降级为模拟节拍);点击卡片任意处可触发气泡迸发;唱片随播放旋转。
3. 播放控制与状态¶
- 完整控制:支持切歌、循环/单曲/随机切换、音量调节、进度拖拽。
- 本地管理:支持本地收藏与电台模式(播完自动搜索相似歌曲加入队列)。
- 系统集成:集成 MediaSession,支持锁屏控制与媒体键操作。
- 状态持久化:刷新页面后自动恢复队列与偏好,直链过期时自动重新解析。
安装与启用¶
安装命令如下:
dsh plugin --profile web add dsh-music
安装完成后重启 DSH Web 界面即可。插件依赖 Node.js 环境运行,要求 Node >= 20,无运行时依赖。
使用示例¶
模型在回复中输出 dsh-music 围栏即可触发卡片。以下是几种典型用法:
- 搜索播放:
输入:
{"theme":"glass","backend":"netease","keyword":"周杰伦 晴天","autoplay":true,"lyricMode":"bubble"}
- 指定主题与歌单:
输入:
{"theme":"vapor","playlist":[
{"title":"晴天","artist":"周杰伦"},
{"title":"Lemon","artist":"米津玄師"}
]}
- 自定义主题:
输入:
{"theme":{"accent":"#f9a8d4","bg":"#3b0764"}}
- AI 推荐:
点击卡片状态栏的「AI 推荐」按钮,会将当前曲目回传给模型,模型可据此回复新的播放指令。
配置与环境变量¶
| 变量名 | 作用 |
|---|---|
DSH_MUSIC_NETEASE_COOKIE |
网易云 Cloud Music Cookie。填写后可提高 VIP 歌曲、高码率直链的成功率(默认使用匿名 Cookie)。 |
DSH_MUSIC_QQ_COOKIE |
QQ 音乐 Cookie。填写用户 Cookie 后,QQ 侧免费歌曲有机会直接获取直链,减少自动降级。 |
注意事项:
* 浏览器自动播放策略限制:首次 autoplay 可能需要用户点击播放按钮。
* 仅供个人学习使用,音乐版权归各平台所有。
结语¶
dsh-music 通过“Node 宿主半区”提供搜索与代理服务,结合“浏览器半区”的渲染与交互,实现了在对话流中无缝播放音乐的能力。对于需要在智能体场景中引入音频体验的开发者,这是一个轻量且功能完备的解决方案。
- 目录页:https://www.skillhub.cn/plugins/jh-Evil/dsh-music
- 源码:https://github.com/jh-Evil/dsh-music