dsh-audio-rail:让会话页右侧跳转锚点随系统音乐律动

前言

在 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 许可证。采集器不随仓库分发,克隆后须先在本机编译。

  1. 克隆仓库到本机路径(安装命令需要该路径,勿用未在文档中出现的 github:owner/repo 简写)。
  2. 在仓库根目录执行 Windows 编译脚本(调用系统自带 .NET Framework csc.exe,无需额外安装依赖):
build.cmd
  1. 在 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 扩展。

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

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

Xiaoye