dsh-blackhole-radio-lab:用 3D 黑洞舞台听网络电台

前言

在 DSH(DeepSeek Harness)里长时间写提示、跑对话时,背景音往往还要切到浏览器或独立播放器:找台、分类、切流和主界面是两套窗口。社区里已有把电台做成 DSH 侧边入口的插件,但多数是列表或卡片式浏览。若你希望用一套可交互的三维场景承载大量真实电台源,并在同一进程里播放与控制,dsh-blackhole-radio-lab 把目录、渲染和播放收进一个 DSH 插件 bundle,左栏底部一张卡片即可进入全屏舞台。

这是什么

dsh-blackhole-radio-lab 是维护者 WhatCannotBeSaid 发布的 DSH 插件(npm 包名 dsh-blackhole-radio-lab,当前 README 标注 v1.2.1,MIT 许可)。装上后左栏底部多一张电台卡片,点卡片上的黑洞图标进入全屏「黑洞电台」舞台:中央是事件视界、光子环与吸积盘,外围三层视差星场;约 2.4 万台真实网络电台嵌在吸积盘里,远看是一条亮带,靠近才分辨单个电台。页面没有常驻搜索栏或分类侧栏,搜索和分类在你主动点击时出现。

插件分类属于联网工具:播放时浏览器直连电台流,曲目信息来自流内 ICY 元数据;目录数据来自 Radio Browser 公开 API,发布包内含构建期探活后的快照。

核心功能

舞台与交互

  • 手写轨道相机:左键拖动环绕黑洞、滚轮缩放、阻尼收敛,焦点锁在黑洞核心。
  • 原生 Three.js:单个 Points 与自定义着色器承载全部电台,不为每台电台单独建 Mesh。
  • 远中近三级 LOD:远看连续亮带,中距见盘面亮结,近距显示单个电台与附近台名(台名画在 2D canvas,不进 DOM)。
  • 黑洞与星团两相:按住黑洞左键约 2.3 s,盘面散成星团;星团或空白处按住右键约 2.3 s,星点重新凝聚成盘。配置项 wormhole 为 false 时可恢复瞬时切换。
  • 转场期间若帧时间吃紧,会按视口面积把渲染像素压到约 70 万以内,仍不足再逐步降倍率,空闲后爬回。

电台与播放

  • 内置快照启动(构建时已逐条探活),缺快照时回落实时抓取;用户侧可按配置在 DSH 运行期间后台刷新目录,缓存写入 $DSH_HOME/cache/blackhole-radio-lab/。
  • 搜索覆盖台名、国家地区、语言、分类;13 个流派烘进星团视觉分区,无单独分类面板。
  • 播放 / 暂停、上一台 / 随机下一台、音量;启动或卡顿超过 15 秒时同台最多重连一次,不自动换台。
  • 记住音量与最后成功播放站,重开不自动出声;支持系统播放 / 暂停 / 停止控制。
  • 悬停卡片可点播放,显示流派与 LIVE;收藏在左栏底部卡片上。收藏与喜欢的歌曲保存在本机 $DSH_HOME/blackhole-radio-lab/library.json,不联网同步。
  • 点歌名可在 Spotify、网易云音乐、QQ 音乐、Apple Music、YouTube 中搜索(平台可右键切换)。界面语言随应用中文 / English。

Host 与架构(简要)

插件分 Host 半(index.js + src/host/:配置、静态路由、目录刷新、ICY 曲目探测,零运行时依赖)与浏览器半(按需加载 client.stage.js、client.radio.js 等 chunk)。Host 对曲目查询拒绝回环、私网地址,重定向逐跳校验;不加载远端脚本、不引 CDN。

安装与启用

先决条件:Node.js ≥ 20,DSH(README 写明已验证 0.2.1-rc.2)。

从 npm 安装发布版:

dsh plugin --profile <profile> add dsh-blackhole-radio-lab

将 <profile> 换成你实际使用的 DSH profile 名。装完后必须重启 DSH:桌面端进程不会在运行时自行发现新 bundle。

卸载:

dsh plugin --profile <profile> remove dsh-blackhole-radio-lab

可选配置挂在 cordis.patch.yml 对应条目的 config 下,例如抗锯齿、渲染倍率上限、是否启用 wormhole 转场、目录刷新策略等;未给出的键回落到插件 index.js 中的默认值。完整键名与范围见仓库 README 的配置表。

典型用法

进入舞台后,常用操作如下(与 README「上手」表一致):

操作 结果
左键拖动 绕黑洞旋转
滚轮 以黑洞为中心缩放
单击黑洞中心 / 回车 打开搜索
黑洞上按住左键 2.3 s 盘面散开为星团;按住 0.6 s 时环外脉冲表示已识别;松手回抽
星团或空白处按住右键 2.3 s 星点内收成盘;120 ms 内松手则打开收藏列表
星点上悬停 / 点击 悬停卡片 / 播放暂停
Esc 关闭浮层或退回黑洞

左栏底部卡片独占站名、曲目行、收藏、喜欢、播放控制与音量;点卡片黑洞图标进入全屏舞台。

调试时可在页面 URL 加查询参数,例如 ?bhrlStations=5000 临时覆盖台数、?bhrlWormhole=0 关闭按住转换。

适用场景与注意

适合谁: 已在用 DSH、希望在工作流同屏听全球网络电台,且能接受 WebGL 三维交互而非传统列表 UI 的开发者或重度用户。

权限与信任: 插件以当前 DSH 进程权限运行;安装前请阅读 GitHub 仓库 源码与 MIT(及黑洞着色器相关的 BSD-3-Clause 声明)。播放直连第三方流,你的 IP 会暴露给对应电台;作者服务器不参与中继。

已知限制(节选): 无账号与云同步;部分电台会 404 或地区受限;关闭窗口时 pagehide 会停止播放;实时抓取路径每次最多取 5,000 台,内置快照远大于此。DSH 社区目录 SkillHub 条目 与 DeepSeek / 幻方无官方从属关系,生态理念是「一切皆插件」,需自行判断是否安装第三方 bundle。

结尾

dsh-blackhole-radio-lab 把 Radio Browser 规模的真实电台目录、ICY 元数据播放与本机偏好,放进可环绕、可缩放的黑洞 / 星团三维舞台,并作为 DSH 左栏常驻入口。若要查看简介与安装说明,可打开 SkillHub 插件页 或 GitHub 仓库 README。

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

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

Xiaoye