前言¶
在 DeepSeek Harness(DSH)里一边写代码、一边让 Agent 帮忙,很常见会再开音乐或背景声。点播歌曲有网易云一类插件,但「听广播」「随便放一台地方台」「按 FM 频率找台」往往还要切到浏览器或独立播放器,和对话窗口割裂。下面介绍社区插件 dsh-global-radio(维护者 zeelinkCN),把发现页、播放控制和 Agent 点播收进 Harness 左侧面板,与现有音乐插件并列时还能自动互斥,只保留一路音频。
这是什么¶
全球电台 · Global Radio 是 DSH 的客户端(Web)插件,许可证 MIT,当前包版本 1.2.1(见仓库 package.json)。它在 Harness 内提供:
- 网易云风格的发现页(大 banner、分类卡、横滑/网格列表)
- 20 个国内主要城市地方台入口,以及 CNR / CRI / 凤凰、京沪粤等省市台与国际台目录(上游含 Radio Browser)
- 卡片与播放页展示 FM / AM 物理频率,全屏播放页带 Web Audio 实时频谱(柱形 / 波形 / 环形)
- 底部大播放条(browse 视图常驻)与 侧栏迷你条(离开面板后继续播)
- 与网易云音乐插件 双向暂停互斥,两条迷你条在侧栏 上下堆叠,同一时刻只有一条在出声
实现上是「Host(Node)代理流与目录 + Client(React / canvas / Web Audio)」,macOS / Windows 共用同一份包;内置 hls.js,支持直链 MP3/AAC 与 HLS(m3u8),无需额外 Python 依赖。
发现页与播放体验¶
发现页结构¶
- 大 banner × 3:精选台大图与台标;初始 3 个按日期种子每日轮换,右上角「换一批」可立即换 3 个;点 banner 直接开播。
- 城市电台 × 20:北京、上海、广州、深圳、成都、武汉、杭州、南京、天津、重庆、西安、长沙、郑州、苏州、厦门、香港、台北、澳门、青岛、昆明;点城市进入当地地方台集合页。
- 分类卡 × 12:新闻资讯、世界之声、古典音乐、爵士蓝调、电子律动、摇滚现场、谈话电台、华语、日本、韩国、英国、法国;点卡片主体随机该分类一台并 toast 提示;点右侧「›」或板块标题进入集合页(36 条/页,可加载更多)。
- 自适应网格:全球热门、华语电台、编辑精选、最近收听、我的收藏等;顶栏搜索按台名 / 城市 / 类型筛选,结果替换发现页。
精选数据在 data/seed-stations.json(49 条人工挑选);上游不可用时首页可回退该台单。
播放条与全屏页¶
- 底部大播放条:台标、台名、频率、tags;上一台 / 播放暂停 / 下一台居中;收藏、音量、展开播放页;占面板布局行,不悬浮遮挡内容。
- 全屏播放页:跟随 DSH 浅色/深色主题;模糊台标背景、频率大字、国家与 codec/bitrate/tags;可浏览器全屏,Esc 返回不中断播放。
- 侧栏迷你条:离开电台面板后继续播;与网易云迷你条垂直堆叠,被对方暂停时保留条目,点一下可抢回播放。
流播放、备用源与互斥¶
主源失败(audio error、HLS fatal、或 9 秒内未进入 playing)时,Host 请求 /alternates,按台名/国家找候选并健康检查,最多 3 个逐个换源;成功则 toast「已切换到备用源」。全部失败则标记不可播、从列表过滤,并自动跳队列下一台。
音频流经 Host /stream 同源代理;HLS 经 /hls 重写播放列表与分片,规避 CORS 与相对路径。代理不再请求 Icy-MetaData,避免 Chrome 对部分 MP3 直链「没声音」的问题。
电台开始播会暂停页面上其它 <audio>/<video>;其它播放器开始播则电台自动暂停。只调用 pause(),不修改对方插件源码;MediaSession 同步当前电台元数据。
在对话里点播(Agent 工具)¶
装好插件后,可在对话框直接说明意图,由 Host 注册的工具执行(详见仓库 docs/CONTRACT.md)。常见说法与对应能力包括:
- 「播放上海的某个电台」→ 按城市/query 播放
- 「来点新闻电台 / 古典电台」→ 按 genre 播放
- 「随便来点电台」→ 随机
- 「听 FM 97.4 / 放 BBC」→ 按频率或台名 query
- 「暂停 / 继续 / 下一台 / 调小音量 / 现在放的是什么」→ 播放器控制
- 「先搜一下有哪些北京电台」→ 搜索
System prompt 约定:用户提到电台、广播、FM、AM、收音机等时用 radio_play / radio_player,与「听歌/歌单」场景的网易云工具区分。浏览器端约每 1.2s 轮询 Host 命令队列并回报状态。
安装与启用¶
插件通过 Harness 的 plugin_manager 安装本地 bundle,官方 README 写法如下(target 为你本机已得到的插件目录绝对路径):
plugin_manager action=install_bundle target=<你本地的路径>/dsh-global-radio
安装后左侧栏出现「全球电台」图标;无需账号、无需命令行常驻、无需单独安装 hls.js(已随包内置)。修改或升级插件后刷新 Harness 页面(macOS:Cmd+R,Windows:Ctrl+R)加载新 client bundle。
仓库地址:https://github.com/zeelinkCN/dsh-global-radio。社区目录页:https://www.skillhub.cn/plugins/zeelinkCN/dsh-global-radio(与 DeepSeek / 幻方无官方从属关系,仅为社区收录站点)。
典型使用步骤¶
- 点左侧栏「全球电台」进入发现页。
- 点 banner、城市、列表卡片或分类随机台开始收听;需要全集时点板块标题或分类「›」。
- 用底部大播放条切台、调音量、收藏、进入全屏播放页查看频谱。
- 切回对话继续工作:播放不中断,侧栏出现迷你条;若同时启用网易云,两插件会自动互斥。
- 也可在对话中用自然语言点播或控制,无需先点界面。
适用场景与注意¶
适合:希望在 Harness 内听国内外广播、地方台或按类型/频率随手点播的开发者;需要 HLS 台、备源重试以减少「点了没声」的情况;已与网易云音乐插件并用、希望侧栏只保留一条活跃音频的用户。
注意:
- 插件在当前 DSH 进程权限下运行,Host 会代理外部电台流与图片;安装前请自行审阅源码与 MIT 许可证。
- 全球目录依赖 Radio Browser 等上游;仓库
data/SOURCES.md记录镜像与 DNS 等调研,个别地区或时段仍可能遇到源不可用(插件会过滤并换台)。 - Windows 与 macOS 使用同一份 Web + Node 实现;README 标明主要在 macOS Harness Desktop 验收,Windows 遇路径等问题可向仓库提 issue。
结尾¶
dsh-global-radio 把「找台—播放—可视化—后台收听」放进 DSH 面板,并用 Agent 工具把口语意图接到播放器上;与网易云音乐互斥与侧栏堆叠,适合作为 Harness 里的常驻广播入口。