🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

律动导航条 rinsoraa/dsh-pulse-rail

DeepSeek Harness
rinsoraa20 天前有提交已提供中文文档扫描:含敏感能力

让轮次导航条随系统声音律动变长变粗

30/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/15 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add rinsoraa/dsh-pulse-rail
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么
dsh 原生插件 · vision
装得上吗
本站已在 dsh 0.2.1-rc.5 下真实安装成功
非静态推断
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 20 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 16 处,展示前 16 条)
  • 写入本地文件
    lib/index.js:117
    mkdirSync(dataDir(), { recursive: true });
  • 读取本地文件
    lib/index.js:120
    try { size = statSync(file).size; } catch { size = 0; }
  • 写入本地文件
    lib/index.js:121
    if (size > 262144) writeFileSync(file, '', 'utf8');
  • 写入本地文件
    lib/index.js:122
    appendFileSync(file, JSON.stringify(payload) + '\n', 'utf8');
  • 发起网络请求
    lib/client.js:586
    window.fetch(BASE + '/diag', {
  • 发起网络请求
    lib/client.js:746
    window.fetch(BASE + '/config', {
  • 发起网络请求
    lib/client.js:1110
    window.fetch(BASE + '/state', { cache: 'no-store' })
  • 写入本地文件
    lib/tap.js:31
    mkdirSync(dataDir, { recursive: true });
  • 读取本地文件
    lib/tap.js:35
    const src = statSync(join(HERE, 'pulse-tap.exe'));
  • 读取本地文件
    lib/tap.js:36
    const old = statSync(dst);
  • 写入本地文件
    lib/tap.js:39
    if (need) copyFileSync(join(HERE, 'pulse-tap.exe'), dst);
  • 执行外部命令来自配置/变量
    lib/tap.js:115
    child = spawn(this.exePath, args, { stdio: ['pipe', 'pipe', 'pipe'], windowsHide: true });
  • 读取本地文件
    lib/config.js:50
    if (existsSync(p)) {
  • 读取本地文件
    lib/config.js:51
    const raw = JSON.parse(readFileSync(p, 'utf8'));
  • 写入本地文件
    lib/config.js:63
    mkdirSync(dataDir(), { recursive: true });
  • 写入本地文件
    lib/config.js:64
    writeFileSync(configPath(), JSON.stringify(merged, null, 2) + '\n', 'utf8');
扫描于 2026/11/4(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

给 DeepSeek Harness 回合导航栏做的音乐可视化:条形随系统音频(WASAPI 回环)变高变粗,纯几何,无需管理员权限。

README

由 DeepSeek 最新模型翻译生成
dsh-pulse-rail 把 DeepSeek Harness 的轮次导航条变成音乐可视化:右缘那一列细横条会随正在播放的系统声音变长、变粗。 导航条律动 | 设置面板 | 左下角用户信息正上方有一个 ♪ 按钮,点开是滑动条面板;任何改动都会立刻写回 config.json,不用重启。 | - Windows 平台、无需管理员权限、不装驱动、无第三方运行时:用 WASAPI 共享模式 loopback 抓默认播放设备的混音,采集由自带的小程序完成(lib/pulse-tap.exe,源码 lib/pulse-tap.cs,用系统自带的 .NET Framework csc 编译)。 - 只动横条本身:长度对应各自的频段能量,厚度跟着节拍走;没有发光、没有颜色、没有阴影 —— 纯几何,而且全部是只走合成层的 transform: scale(),所以右缘不会抖。 - 不破坏原生交互:悬停预览、点击跳转、超出可视条数时的滚轮滚动全都照旧;没有声音时横条逐像素回到应用原本的样子。
展开完整文档(README 剩余 1 节)
dsh-pulse-rail

把 DeepSeek Harness 的轮次导航条变成音乐可视化:右缘那一列细横条会随正在播放的系统声音变长、变粗。

导航条律动

| 设置面板 | 左下角用户信息正上方有一个 ♪ 按钮,点开是滑动条面板;任何改动都会立刻写回 config.json,不用重启。 |

- Windows 平台、无需管理员权限、不装驱动、无第三方运行时:用 WASAPI 共享模式 loopback 抓默认播放设备的混音,采集由自带的小程序完成(lib/pulse-tap.exe,源码 lib/pulse-tap.cs,用系统自带的 .NET Framework csc 编译)。
- 只动横条本身:长度对应各自的频段能量,厚度跟着节拍走;没有发光、没有颜色、没有阴影 —— 纯几何,而且全部是只走合成层的 transform: scale(),所以右缘不会抖。
- 不破坏原生交互:悬停预览、点击跳转、超出可视条数时的滚轮滚动全都照旧;没有声音时横条逐像素回到应用原本的样子。

环境要求

| DSH | 桌面端 / web profile(客户端半侧声明 platform: web) |
| 操作系统 | Windows 10/11 x64(WASAPI loopback) |
| 运行时 | 无 —— .NET Framework 4.x 的 csc 只用于编译采集器 |
| 音频 | 任意默认播放设备(耳机 / USB DAC / HDMI 均可) |

安装

A. 走插件管理器(推荐)

1. 设置 → 插件 → 添加插件,填入本仓库地址(或本地克隆目录的绝对路径)。
2. 启用后重启 DSH(宿主半侧在启动时组合)。

管理器在有 agent 运行时拒绝安装,请在空闲会话里操作。

B. 手动安装(本插件开发时的做法)

git clone https://github.com/<you>/dsh-pulse-rail.git
xcopy /E /I dsh-pulse-rail "%USERPROFILE%\.dsh\profiles\desktop\node_modules\dsh-pulse-rail"

然后把 "dsh-pulse-rail" 加进 %USERPROFILE%\.dsh\profiles\desktop\package.json 的 dsh.profile.bundles,并重启 DSH:

{
"dsh": { "profile": { "bundles": [
"@deepseek-ai/dsh-base", "@deepseek-ai/dsh-web-app", "dsh-pulse-rail"
] } }
}

(顺便把它加进同级 dependencies,这样它会出现在「已安装插件」列表里,也不会被后续的 pnpm install 当作多余目录清掉。)

调参

所有参数在 %USERPROFILE%\.dsh\pulse-rail\config.json;可以从 ♪ 面板改,也可以手改后运行自带的小工具应用:

%USERPROFILE%\.dsh\pulse-rail\tune-config.cmd

{
"enabled": true, // false = 立刻停效果、导航条恢复原样 "minW": 0.18, // 最短横条(单位:应用原始的 20px 长度) "maxW": 2.6, // 最长横条(面板滑动条可以拉到 4 = 80px) "minH": 2, // 最薄厚度(px,应用原始就是 2) "maxH": 7, // 最厚厚度(px;横条间距 10px,别超过 8) "gamma": 0.6, // 响应曲线:<1 更猛,>1 更克制 "gate": 0.02, // 噪声门:低于此值的频段算静音 "agcMix": 0.6, // 动态对比:每个频段跟自己的慢基线比,解决「长度看不出差别」 "atkMs": 35, // 横条上升 / 下降时间常数 "relMs": 120, "silentMs": 450, // 多久没有音频就恢复原样 "freqLayout": "center",// top=高频在上 / center=高频居中(两端低频)/ down=高频在下 "fps": 30, // 采集帧率 "tapIdleMs": 20000 // 采集器空闲多久自停 }

不编辑文件的热改方式(端口取 DSH_WEB_URL 里的那个):

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

| 想要 | 改哪个 |
| 更夸张 | maxW → 3~4,agcMix → 0.8~1.0 |
| 更克制 | agcMix → 0.3,gate → 0.05~0.1 |
| 厚度更猛 | maxH → 8(再多就会上下粘连) |
| 更跟拍 | atkMs → 15~25 |

工作原理

默认播放设备 │ WASAPI 共享模式 loopback(48 kHz、N 声道、float32) ▼ lib/pulse-tap.exe ── 1024 点 FFT ──► 12 个对数频段(45 Hz – 15 kHz) │ 每帧一行 JSON,30 fps ▼ 宿主半侧(lib/index.js) ── GET /pulse-rail/state ──► 浏览器半侧(lib/client.js) │ │ │ └─ 定位导航条,把 12 个频段映射到 │ 「当前实际渲染出来的横条数」上 └─ /pulse-rail/config、/pulse-rail/health、/pulse-rail/diag

* 宿主半侧(lib/index.js + lib/tap.js):懒启动采集子进程、缓存最后一帧、用同源 HTTP 路由提供数据。
20 秒没有请求就停掉采集器;异常退出按退避重启;宿主停止心跳时自己退出(防止产生孤儿进程)。
* 浏览器半侧(lib/client.js):按几何特征定位导航条(右缘、窄容器、小横条;类名换版时有
button[data-index] 兜底),每帧按当前渲染的横条数重算映射,然后只写一个自定义属性。
长度和厚度都通过横条 ::before 的 transform: scale() 表达,transform-origin: 100% 50%。
由于应用的滚动容器横向把内容裁在 28px 内,插件会把该容器向左加宽(右缘不动、命中区域不变、 pointer-events 透传),这样长横条才真的画得出来。
* 静音时移除全部覆盖 —— 导航条回到应用自己的渲染。

隐私与开销

采集器只在内存里读取系统混音,输出只有 12 个频段电平加 RMS/峰值;不录音、不缓存、不落盘。
它只在页面请求数据时运行,最后一次请求后 20 秒自行停止;任务管理器里能看到 pulse-tap.exe,也可以把 enabled 设为 false 彻底关掉。

排障

| GET /pulse-rail/health | 采集器状态(running / playing / pid / 重启次数 / 最近错误) |
| POST /pulse-rail/restart | 重启采集子进程 |
| GET /pulse-rail/diag | 浏览器半侧最近的发现结果 |
| %USERPROFILE%\.dsh\pulse-rail\diag.jsonl | 浏览器半侧诊断日志(超过 256KB 会重写) |
| %APPDATA%\@deepseek-ai\dsh-desktop\logs\crash-*-web-boot.log | 渲染进程 console.error(例如 [dsh-pulse-rail] …) |
| lib\pulse-tap.exe --fps 30 | 手动跑采集器看 JSON 流 |

横条不动?先放点声音,再看 /pulse-rail/state 的 playing。如果 running 是 false,看 lastError (某些 USB/蓝牙端点会「假装在放、实际全 0」,插件会在持续静音 5 秒后自动重建采集客户端)。

开发 / 自检

| 工具 | 用途 |
| tools/verify-install.mjs | 最快自检:路由注册 + 采集器出帧 |
| tools/harness.mjs(+page.mjs) | 离线验证台:复刻导航条 DOM/CSS,上报每根横条的实测几何 |
| tools/host-test.mjs | 用最小 webServer 实现跑真实 lib/index.js |
| tools/cdp-check.mjs | headless Edge + CDP:采样 ::before 的 transform、右缘对齐、命中测试 |
| tools/mktone.py、tools/mkmusic.py | 生成测试音 / 伪音乐 |

改了 pulse-tap.cs 之后重新编译采集器:

"C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe" /nologo /platform:x64 /optimize+ ^
/out:lib\pulse-tap.exe lib\pulse-tap.cs

卸载

1. 从 dsh.profile.bundles(以及 dependencies)里删掉 "dsh-pulse-rail";
2. 删除 node_modules\dsh-pulse-rail;
3. 需要的话删掉 %USERPROFILE%\.dsh\pulse-rail\;
4. 重启 DSH。

许可

MIT,见 LICENSE。
预览分享卡片长什么样 ↓rinsoraa/dsh-pulse-rail
分享 · DeepSeek Harness Hub
rinsoraa/dsh-pulse-rail

让轮次导航条随系统声音律动变长变粗

这是你的仓库?认领条目

回到顶部