dsh-spectrum-rail:把 DSH 輪次導航條變成音頻頻譜

前言

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

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜