前言¶
DeepSeek Harness(DSH)右侧的 turn-navigation rail(轮次导航条)默认是一排细竖线,用来预览和跳转会话轮次。长时间开着 Agent 时,这条导航条功能完整,但视觉上几乎静止。若希望在不改交互的前提下,让导航条随当前播放的系统声音有节奏地伸缩,就需要在浏览器侧注入样式、在主机侧拿到混音电平——且最好不装驱动、不提权。
下面介绍社区插件 dsh-pulse-rail(维护者 rinsoraa,分类:趣味换装):它只改导航条柱子的几何尺寸(长度跟频段、粗细跟节拍),不发光、不改色;静音时柱子会回到与原版一致的像素级外观。插件以 MIT 许可证发布,当前 npm 版本为 0.4.1。
这是什么¶
dsh-pulse-rail 把 DSH 的轮次导航条做成音乐可视化条:每一根细柱随「此刻正在播放的系统音频」变长、变粗。实现上走 纯几何(transform: scale(),合成层缩放,右缘不抖动),不叠加光晕、阴影或配色。
社区插件目录为独立站点,与 DeepSeek / 幻方无官方从属关系;安装前请自行查看源码与许可证。插件在 当前 DSH 进程权限 下运行。
核心功能¶
律动模式(Silk Wave)¶
0.4.0 起导航条默认使用 Silk Wave:通过 WASAPI 共享模式环回(loopback)采集系统混音,做 12 频段分析;每根柱的瞬时长度来自对应频段,经满量程归一化与邻域柔化,相邻柱过渡更连续。README 注明:滚动后部分柱子失去律动的 bug 仍未解决,详见仓库内 docs/KNOWN-ISSUES.md。
平台与依赖¶
| 项 | 要求 |
|---|---|
| DSH | desktop / web profile(platform: web 的 client 半) |
| 操作系统 | Windows 10/11 x64(WASAPI loopback) |
| 运行时 | 无需额外安装;构建辅助程序时使用系统自带的 .NET Framework 4.x csc |
| 音频 | 任意默认渲染设备(耳机、USB DAC、HDMI 等) |
采集由自带小工具 lib/pulse-tap.exe(自 lib/pulse-tap.cs 编译)完成:无需管理员权限、无第三方驱动、无额外运行时。
交互与外观边界¶
- 悬停预览、点击跳转、滚轮滚动等行为与原生一致。
- 仅柱子几何变化;静音后移除所有覆盖,导航条恢复应用原生渲染。
- 界面左下角用户行上方有 ♪ 按钮,打开滑块面板;每次修改会立即写回
config.json,无需重启 DSH。
隐私¶
辅助程序仅在内存中读取系统混音,每帧向 stdout 输出频段电平(12 个浮点)及 RMS/peak;不录音、不落盘。仅在页面请求数据时运行;无请求约 20 s 后自行退出,也可在任务管理器中查看 pulse-tap.exe,或在配置里设 "enabled": false。
安装与启用¶
任选一种方式;通过插件管理器安装时,须在 无 Agent 运行 的空闲会话中操作(管理器会在 Agent 运行时拒绝安装)。启用后需 重启 DSH(host 半在启动时组装)。
方式 A:插件管理器(推荐)¶
- 打开 Settings → Plugins → Add plugin,填入本仓库 URL(或本地克隆路径)。
- 启用插件并重启 DSH。
方式 B:npm¶
包名 dsh-pulse-rail,已发布至 npm:
dsh plugin add dsh-pulse-rail
等价于:
npm i dsh-pulse-rail
方式 C:手动拷贝¶
将插件目录复制到 %USERPROFILE%\.dsh\profiles\desktop\node_modules\dsh-pulse-rail,并在 %USERPROFILE%\.dsh\profiles\desktop\package.json 的 dsh.profile.bundles 中加入 "dsh-pulse-rail",同时建议写入 dependencies 以免 pnpm install 时被裁剪,然后重启 DSH。具体 JSON 示例见仓库 README。
典型用法与调参¶
配置文件路径:
%USERPROFILE%\.dsh\pulse-rail\config.json
可在 ♪ 面板中调整,也可手改后执行:
%USERPROFILE%\.dsh\pulse-rail\tune-config.cmd
主要字段示例(含义以 README 为准):
{
"enabled": true,
"minW": 0.18,
"maxW": 2.6,
"minH": 2,
"maxH": 7,
"gamma": 0.6,
"gate": 0.02,
"agcMix": 0.6,
"atkMs": 35,
"relMs": 120,
"silentMs": 450,
"freqLayout": "center",
"fps": 30,
"tapIdleMs": 20000
}
| 目标 | 建议 |
|---|---|
| 律动更明显 | 提高 maxW 至 3–4,agcMix 至 0.8–1.0 |
| 更克制 | agcMix 降至约 0.3,gate 升至 0.05–0.1 |
| 粗细起伏更大 | maxH 至 8(README 建议不超过 8,刻度间距 10px) |
| 反应更快 | atkMs 降至 15–25 |
在不改文件的情况下,可将当前 config.json POST 到本机 DSH Web 端口(端口取自环境变量 DSH_WEB_URL,README 示例为 19387):
Invoke-WebRequest -UseBasicParsing -Method POST -ContentType 'application/json' `
-Body (Get-Content -Raw $env:USERPROFILE\.dsh\pulse-rail\config.json) `
http://127.0.0.1:19387/pulse-rail/config
工作原理(简述)¶
默认渲染设备
│ WASAPI shared-mode loopback(48 kHz,多声道,float32)
▼
lib/pulse-tap.exe ── 1024 点 FFT ──► 12 个对数间隔频段(45 Hz – 15 kHz)
│ stdout 每帧一行 JSON,默认 30 fps
▼
host 半(lib/index.js)── GET /pulse-rail/state ──► browser 半(lib/client.js)
browser 半按几何定位导航条,把 12 个频段映射到当前屏幕上实际渲染的刻度数量,用 CSS 自定义属性驱动每根 ::before 的缩放。host 半懒启动采集进程,提供 /pulse-rail/config、/pulse-rail/health、/pulse-rail/diag 等同源路由。
适用场景与注意¶
适合:在 Windows 上使用 DSH desktop/web 配置、希望导航条随系统播放内容(音乐、会议、游戏等)有轻微律动反馈,且接受仅几何变化、不改主题的「趣味换装」类增强。
注意:
- 仅 Windows;Linux / macOS 无 WASAPI loopback,不在支持范围内。
- 0.4.0 存在长会话下对话区被挤窄、界面左移的回归;README 建议 升级到 0.4.1,重载窗口可临时恢复。
- 柱子无反应时:先播放音频,检查
GET /pulse-rail/state中playing;若running为 false,查看lastError。可尝试POST /pulse-rail/restart或手动运行lib\pulse-tap.exe --fps 30观察 JSON 流。 - 插件会扩宽导航条滚动容器的可见区域(右缘与点击区域不变),属于刻意设计,以便长柱可见。
结尾¶
dsh-pulse-rail 在不动导航条原生交互的前提下,用 WASAPI 环回和 12 频段映射,把轮次导航条做成轻量系统音频可视化。安装以 dsh plugin add dsh-pulse-rail 或插件管理器添加仓库为准;调参集中在 %USERPROFILE%\.dsh\pulse-rail\config.json 与左下角 ♪ 面板。