dsh-global-radio:在 DeepSeek Harness 裏收聽全球實時電臺

前言

在 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 依賴。

發現頁與播放體驗

發現頁結構

  1. 大 banner × 3:精選臺大圖與臺標;初始 3 個按日期種子每日輪換,右上角「換一批」可立即換 3 個;點 banner 直接開播。
  2. 城市電臺 × 20:北京、上海、廣州、深圳、成都、武漢、杭州、南京、天津、重慶、西安、長沙、鄭州、蘇州、廈門、香港、臺北、澳門、青島、昆明;點城市進入當地地方臺集合頁。
  3. 分類卡 × 12:新聞資訊、世界之聲、古典音樂、爵士藍調、電子律動、搖滾現場、談話電臺、華語、日本、韓國、英國、法國;點卡片主體隨機該分類一臺並 toast 提示;點右側「›」或板塊標題進入集合頁(36 條/頁,可加載更多)。
  4. 自適應網格:全球熱門、華語電臺、編輯精選、最近收聽、我的收藏等;頂欄搜索按臺名 / 城市 / 類型篩選,結果替換髮現頁。

精選數據在 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 / 幻方無官方從屬關係,僅爲社區收錄站點)。

典型使用步驟

  1. 點左側欄「全球電臺」進入發現頁。
  2. 點 banner、城市、列表卡片或分類隨機臺開始收聽;需要全集時點板塊標題或分類「›」。
  3. 用底部大播放條切臺、調音量、收藏、進入全屏播放頁查看頻譜。
  4. 切回對話繼續工作:播放不中斷,側欄出現迷你條;若同時啓用網易雲,兩插件會自動互斥。
  5. 也可在對話中用自然語言點播或控制,無需先點界面。

適用場景與注意

適合:希望在 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 裏的常駐廣播入口。

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

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

小夜