前言¶
DeepSeek Harness(DSH)的對話右側有一條輪次導航條,用來快速跳轉歷史會話。這條導航條默認是靜態的,但 DSH 的設計理念是「一切皆插件」,社區已經做了不少圍繞它做擴展的嘗試。dsh-spectrum-rail 就是其中一個:它不改變導航條的原生交互,只是把每一條的寬度改成隨音頻跳動,把原本單調的導航條變成一條音頻頻譜。
插件定位與維護者¶
dsh-spectrum-rail 是一個 DSH 插件,由維護者 Microqian2th 開發。它不依賴任何外部音頻服務,而是通過本地採集電腦裏的聲音,再驅動導航條上的 42 條色塊做長度變化。它屬於「趣味換裝」類插件,主要面向在 Windows 上使用 DSH 0.2.0 及以上的開發者。
核心功能¶
- 42 段對數頻譜:覆蓋 40 Hz – 16 kHz 頻段,底部爲最低頻,頂部爲最高頻。
- 長度由音頻驅動:每條色塊的寬度跟隨音頻 FFT 結果變化,最大 60px(約爲原生小條寬度的 3 倍)。
- 未加載輪次的佔位:當對話輪次少於 42 條時,插件會在下方用 1px 下邊 + 2px 端帽的托盤佔位,並且同樣跟着音樂跳動。
- 原生樣式與交互:已加載的條採用
border-l4樣式,未加載的透明度爲 0.6,懸停時爲label-tertiary,當前輪爲白色;所有交互(滾輪、懸停預覽、點擊跳轉、鍵盤操作)均由 DSH 自己處理,插件只改樣式。 - 右鍵菜單:在導航條上右鍵可以:
- 選擇系統音頻(僅 Windows,使用 WASAPI 迴環,無需虛擬聲卡)
- 選擇麥克風 / 虛擬聲卡(走瀏覽器 getUserMedia)
- 開關頻譜(關閉後恢復原生外觀並停止採集)
- 刷新設備列表
- 狀態行反饋:選擇設備後,菜單會顯示類似
正在採集 · 96kHz · 已收 KB · 峯值的信息,用來區分「沒數據」還是「沒動畫」。
安裝與啓用¶
安裝前需要滿足以下條件:
- Windows 10/11(系統音頻功能依賴)
- DSH 版本 ≥ 0.2.0
- .NET Framework 4.x(Windows 自帶)
方式一:本地目錄¶
git clone https://github.com/Microqian2th/dsh-spectrum-rail.git
dsh plugin --profile <profile> add ./dsh-spectrum-rail
或在 DSH 的插件管理頁使用「安裝本地目錄」功能,選擇該文件夾。
方式二:Release 包¶
從 GitHub Releases 下載 dsh-spectrum-rail-<version>.zip,解壓後通過插件頁安裝該目錄。
安裝完成後需要重啓一次 DSH,因爲 Host 需要重新加載才能拉起音頻採集助手。
使用方法¶
在 DSH 對話右側的輪次導航條上右鍵,會出現一個菜單。菜單裏會列出可用的輸入設備與控制選項:
- 系統音頻(本機回放):使用 WASAPI 迴環採集電腦正在播放的聲音(僅 Windows)。
- 麥克風 / 虛擬聲卡:走瀏覽器的 getUserMedia 接口,適合 VB-Cable、立體聲混音等場景。
- 頻譜:開 / 關。關閉後插件會停止採集並恢復原生外觀,狀態會被記住。
- 刷新設備:重新枚舉系統可用的輸入設備。
選擇設備後,菜單下方會顯示當前狀態信息(例如採樣率、已接收的數據量、峯值),方便判斷是否正常工作。
工作原理¶
插件採用「本地助手 + 客戶端」的架構:
- Host 端(index.js + native/LoopbackCapture.cs)運行一個本地 HTTP 服務,監聽
127.0.0.1:45999–46010,用於與瀏覽器通信。 - Host 端還包含一個名爲
loopback-capture.exe的輔助程序,使用 Windows WASAPI 迴環模式採集默認輸出設備的 PCM 音頻(float32 交織格式)。 - 客戶端(client.js)通過 fetch 獲取音頻數據,存入 AudioBuffer 隊列,再通過雙分析器分別做 FFT:8192 點長窗用於低頻段,2048 點短窗用於中高頻段。
- 客戶端只覆蓋導航條每條按鈕的
::before樣式,不接管任何 DOM 交互;找不到對應結構時會靜默不生效。
已知限制¶
- 系統音頻功能僅在 Windows 上可用,且只採集默認輸出設備。如果更換了默認輸出設備,需要重新在菜單中選擇一次。
- 當對話正文欄可用寬度 ≤ 900px 時,DSH 原生會隱藏整條導航條,插件也隨之不顯示。
- 單輪會話(
items.length < 2)沒有導航條,因此不會有頻譜。 - 對未加載輪次的識別依賴 DSH 導航條按鈕的
aria-label文案(中英文),其它語言下可能會退化成「已加載」的樣式。 - 插件依賴 DSH 自帶導航條的 DOM 結構(
button[data-index]+::before),DSH 大版本升級時可能會失效。 - 本地助手端口
45999–46010沒有鑑權,僅綁定127.0.0.1。同一臺機器上的其它程序理論上可以讀取系統音頻。
隱私說明¶
- 只有在你顯式選擇設備後,插件纔會開始採集。
- 關閉「頻譜」選項會立即停止採集並釋放設備。
- 音頻數據不落盤、不上傳,只在頁面內存中做 FFT 計算。
卸載¶
dsh plugin --profile <profile> remove dsh-spectrum-rail
或在插件管理頁停用/移除。移除後導航條會恢復原樣,插件注入的樣式會被清理。
開發與編譯¶
項目源碼包含以下主要部分:
- client.js:瀏覽器端,負責繪製、音頻處理與菜單邏輯。
- index.js:Host 端,負責啓動與守護本地助手進程。
- native/LoopbackCapture.cs:WASAPI 迴環實現與本地 HTTP 服務。
- native/build.ps1:用於重新編譯
loopback-capture.exe的 PowerShell 腳本。
如果需要自行編譯本地助手,可以在項目根目錄執行:
powershell -ExecutionPolicy Bypass -File native/build.ps1
適用場景與注意事項¶
dsh-spectrum-rail 適合希望在 DSH 對話中通過視覺反饋來「看到」當前正在播放聲音的開發者或使用者,比如在調試音頻應用、演示語音交互效果時。它對 DSH 原生交互的改動很小,因此兼容性較好,但仍需注意上述已知限制。
插件以當前 DSH 進程的權限運行,安裝前建議查看源碼與許可證(MIT)。如果你在非 Windows 平臺使用,或者對本地端口的安全有顧慮,可以優先使用麥克風或虛擬聲卡作爲輸入源。
結語¶
dsh-spectrum-rail 把 DSH 原本靜態的輪次導航條變成了一條動態的音頻頻譜,在不改變交互的前提下增加了視覺反饋。如果你經常在 DSH 裏調試音頻或語音相關功能,這條頻譜可以讓你更直觀地看到聲音在導航條上的表現。
插件目錄頁:https://www.skillhub.cn/plugins/Microqian2th/dsh-spectrum-rail
GitHub 倉庫:https://github.com/Microqian2th/dsh-spectrum-rail