前言¶
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