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