前言¶
在 DeepSeek Harness(DSH)里写提示、盯轮次和 token 时,不少人会另开浏览器或播放器放背景音。那样窗口来回切,和当前会话也脱节。社区插件 dsh-radio(包名 dsh-plugin-radio)把网络电台收进 Web GUI:一条约 24px 的胶囊嵌在 composer 状态行,与轮次、token 等状态并排,点一次即可出声,切台、音量、曲目信息都在同一套界面里完成。
下面按定位、能力、安装与日常操作说明;事实以仓库 README 与 package.json 为准。
这是什么¶
- 仓库:CXZAAA/dsh-radio
- 维护者:CXZAAA
- 分类:联网工具(社区目录 SkillHub 条目)
- 许可证:MIT
- 当前版本(
package.json):0.1.2 - 一句话:Ambient internet radio for the DeepSeek-Harness Web GUI——在 DSH Web GUI 里边工作边听的网络电台。
插件分客户端与宿主两侧:客户端通过 slots 注入状态行 UI;宿主侧注册只读路由,供 Radio Paradise 曲目信息代理。安装包内带 cordis.patch.yml,会在插件页自动加入 Loader 并默认启用,一般无需手改组合包配置。
核心功能¶
预置电台(7 台)
| 电台 | 来源 | 流 |
|---|---|---|
| ChillSynth | Nightride FM | MP3 320 |
| Nightride | Nightride FM | MP3 320 |
| Darksynth | Nightride FM | MP3 320 |
| Spacesynth | Nightride FM | MP3 320 |
| Main Mix | Radio Paradise | AAC 320 |
| Mellow Mix | Radio Paradise | AAC 128 |
| EVE Radio | GamingNow / EVE Radio | MP3 256 |
全部为浏览器直放的渐进式流,无 HLS,也不需要音频代理。
播放与体验
- 切台时先停旧流再起新流,避免叠音;主地址失败会静默尝试备用地址一次,12 秒内仍无声音才算失败。
- 只预热一条流(上次听的台),点击播放时复用同一音频元素,尽量缩短首声延迟。
- 使用 AnalyserNode 做频谱:胶囊收起态 28 根小方柱,面板内 56 根频谱带。
- 曲目:Nightride 直读 Icecast;Radio Paradise 走宿主只读路由;面板显示「歌手 — 曲名」。EVE Radio 的 Icecast 无有效 title,不显示曲目。
- 上次电台、音量、静音与设置保存在浏览器 localStorage。
- UI 仅使用
--dsw-*主题变量,明暗主题均可;彩色主要用于频谱柱与失败态。
v0.1 范围
不支持自定义电台;入口仅在对话面板可见(切到其他主面板时胶囊消失,播放不中断)。
安装与启用¶
插件以当前 DSH 进程权限运行,安装前建议浏览仓库源码并确认 MIT 许可证与网络行为是否符合你的环境。
推荐:在 DSH 里直接装
- 侧边栏打开 插件 → 添加插件。
- 粘贴仓库地址并安装:
https://github.com/CXZAAA/dsh-radio
- 若提示
restart-required,重启 Web 服务后再刷新页面:
sudo systemctl restart dsh-web
包内已声明组合包 patch,插件页会自动加好 Loader 行并默认启用。
若曾用旧脚本安装过同名插件,可先移除再装,避免 cordis.patch.yml 重复插入:
dsh plugin --profile web remove dsh-plugin-radio
并删除 ~/.dsh/profiles/web/cordis.patch.yml 末尾 # dsh-radio (managed by install-local.sh) 一段(若存在)。
可选:pnpm git 安装(README 注明未在 CI 中验证;github: 简写默认走 SSH,无 key 可能卡住,需用 git+https://):
dsh plugin --profile web add "git+https://github.com/CXZAAA/dsh-radio.git"
之后需手动在 ~/.dsh/profiles/web/cordis.patch.yml 追加 Loader 段(见仓库 README「其他安装方式与卸载」),并重启 dsh-web。
卸载
dsh plugin --profile web remove dsh-plugin-radio
删除对应 id: radio 的 patch 段后重启 dsh-web。
典型用法¶
安装并刷新后,在 composer 状态行找到电台胶囊,可按 README 操作表使用:
| 操作 | 结果 |
|---|---|
| 点胶囊左端 | 播放 / 暂停(失败时变为重试) |
| 点「下一台」 | 切到下一台,7 台循环 |
| 点台名 | 向上弹出面板 |
| 面板里点某台 | 切换到该台;点当前台为暂停 / 恢复 |
| 面板右上角齿轮 | 系统媒体键、频谱样式、是否记住上次电台 |
| 面板底部 | 左侧播放 / 下一台,右侧静音与音量滑杆 |
Esc |
关闭面板 |
适合长时间在 DSH Web 里对话、编排智能体时放 ambient 电子或 Radio Paradise 类背景流,且希望控制条与当前页面同屏的场景。
适用场景与注意¶
适合谁
- 已在用 DSH Web GUI、希望少开一个外部播放器标签的用户。
- 能接受固定 7 台预置源、不需要自建电台列表的 v0.1 能力边界。
已知限制(仓库 README)
- 切到轨迹等非对话主面板时入口消失,播放继续。
- EVE Radio 备用流为
http://;DSH 若跑在 HTTPS 下,混合内容策略可能拦截备用地址。 - Nightride 无低码率 MP3,移动网络下首声更依赖预缓冲。
- Radio Paradise 曲目依赖宿主侧小路由;修改宿主相关代码后需重启 dsh 才生效。
- 不支持自定义电台。
社区目录 SkillHub 与 DeepSeek / 幻方无官方从属关系;DSH 生态是「一切皆插件」,本插件为社区维护的联网工具类扩展。
结尾¶
dsh-radio 把 Nightride FM、Radio Paradise、EVE Radio 共 7 路网络流收进 composer 状态行,用胶囊 + 面板完成播放、切台、频谱与曲目展示,状态落在浏览器本地。若要在 DSH 里试装,可从目录页或 GitHub 进入仓库,按上文推荐步骤添加插件并视提示重启 dsh-web。
- 目录页:https://www.skillhub.cn/plugins/CXZAAA/dsh-radio
- GitHub:https://github.com/CXZAAA/dsh-radio