前言¶
在 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 扩展。