前言¶
在 DeepSeek Harness(DSH)的 Web GUI 裏,長對話右側會有一列「快捷跳轉錨點」(turn rail),用來快速跳到不同輪次。默認狀態下,這些短條只反映加載、預覽、當前等會話狀態,和你在本機播放的音樂無關。若希望在寫代碼、查資料的同時,界面邊緣能隨系統混音做輕量律動,而不改 DSH 核心或自己寫前端補丁,可以裝社區插件 dsh-audio-rail。下面介紹它是什麼、怎麼工作,以及如何在 Windows 上安裝啓用。
這是什麼¶
dsh-audio-rail 由維護者 Lingwuxin 發佈,在 SkillHub 插件目錄 中歸類爲「趣味換裝」。一句話定位:讓 DSH Web 會話頁右側 turn rail 的錨點短條,隨系統正在播放的音樂做伸縮律動,視覺效果類似把頻譜柱旋轉 90°。
源碼與說明見 GitHub:Lingwuxin/dsh-audio-rail。當前 package 版本爲 1.0.1,許可證 MIT。
核心功能¶
插件只做一件事:把 WASAPI 環回採集到的頻段能量,經宿主 SSE 推到瀏覽器,再驅動每個錨點短條的 scaleX,在保留 DSH 原有狀態樣式的前提下疊加音頻脈衝。
採集(Windows)¶
- 獨立 helper:
bin/AudioRailCapture.exe(由src/AudioRailCapture.cs經build.cmd編譯,零依賴單文件)。 - 以環回模式捕獲默認渲染端點的系統混音(WASAPI shared mode +
AUDCLNT_STREAMFLAGS_LOOPBACK)。 - FFT 後歸約爲 12 個對數分佈頻段(約 45 Hz–16 kHz),約 30 fps 向 stdout 輸出 JSON 行;靜默時衰減到 0。
- 歸一化採用約 1 秒滑窗均值爲基準的相對動態映射(-9/+17 dB 窗口),鼓點可上衝、弱奏回落,避免一直頂格。
宿主(index.js)¶
- 註冊
/audio-rail/events(SSE)與/audio-rail/status。 - 有訂閱者才啓動採集進程;最後一個訂閱者斷開 15 秒後停止;崩潰按指數退避重啓(設備熱插拔 exit 3 可恢復)。
瀏覽器(client.js)¶
- 注入 CSS,將錨點短條(
.…_mark::before)的transform改爲帶scaleX(var(--dsh-audio-rail-scale, .6))。 - 通過 EventSource 收頻段幀,在
requestAnimationFrame裏對每個錨點做攻擊/釋放平滑,寫入 CSS 變量;音頻脈衝乘在宿主狀態係數之上(上限約 26px)。低音對應底部錨點。 - 尊重
prefers-reduced-motion:用戶開啓減少動效時,插件完全不啓用。
兼容性說明¶
README 標明:v1.0.1 僅針對 dsh v0.1.7-rc.2 做過適配驗證。插件依賴 dsh-client-ui-chat 的 TurnNavigator DOM 約定(_marks 內 _mark 按鈕、data-index 排序、固定 20px 短條、scaleX 狀態係數)。DSH 若再次重構該組件,視覺效果可能失效;採集與 SSE 管線不受影響。
平臺:僅 Windows(WASAPI)。非 Windows 環境無法使用採集端。
安裝與啓用¶
插件以當前 dsh 進程權限運行;安裝前請自行查看倉庫源碼與 MIT 許可證。採集器不隨倉庫分發,克隆後須先在本機編譯。
- 克隆倉庫到本機路徑(安裝命令需要該路徑,勿用未在文檔中出現的
github:owner/repo簡寫)。 - 在倉庫根目錄執行 Windows 編譯腳本(調用系統自帶 .NET Framework
csc.exe,無需額外安裝依賴):
build.cmd
- 在 DeepSeek Harness 會話中讓 agent 安裝 bundle,或手動執行(將
<本倉庫克隆路徑>換成實際路徑):
dsh plugin --profile web add link:<本倉庫克隆路徑>
安裝後瀏覽器頁面會自動熱加載,一般無需手動刷新。卸載或禁用插件後 SSE 斷開,採集進程退出,無常駐開銷。
典型用法¶
沒有單獨的配置文件或 CLI 子命令:安裝並編譯採集器後,在 Web GUI 打開會話頁,本機有音樂從默認渲染設備播放即可。右側 turn rail 各錨點綁定不同頻段,隨混音伸縮;無訂閱者時宿主不會長期跑採集進程。
效果可參考倉庫 docs/demo1.gif 與 docs/demo1.mp4。
適用場景與注意¶
適合:在 Windows 上使用 DSH Web GUI、希望 turn rail 隨背景樂做輕量視覺反饋的開發者;接受「趣味換裝」類非功能型插件。
注意:
- 必須與 README 聲明的 DSH 版本及 TurnNavigator DOM 一致,否則可能只有 SSE/採集正常、畫面不動。
- 部分 Windows 版本/運行時對
IMMDevice::Activate存在已知問題,helper 已按IAudioClient3 → IAudioClient2 → IAudioClient1探測並用 vtable 委託規避;高採樣率設備會自動加大 FFT 點數以保證低頻分辨率。 - SkillHub 等爲社區目錄,與 DeepSeek / 幻方無官方從屬關係;星標與傳播數據以各站點當時頁面爲準,本文不引用未覈實數據。
結尾¶
dsh-audio-rail 把系統混音的 12 頻段經 SSE 接到 Web 端,在不動會話邏輯的前提下給 turn rail 加上音樂律動,適合作爲 DSH「一切皆插件」生態裏的一例趣味 UI 擴展。