dsh-media-preview:DSH 插件:在聊天記錄中自動將本地音視頻路徑渲染爲可播放的預覽組件

前言

當助手消息或工具結果中出現本地音視頻/圖片路徑,或在線 http(s) 媒體鏈接時,自動將其替換爲內聯的 <audio> / <video controls playsInline> / <img> 預覽組件。

功能特性

本插件基於 unrestricted 模式運行,即 DSH 進程可讀的任何文件路徑均可訪問。權限或 IO 錯誤會以明確的 HTTP 狀態碼返回,方便瀏覽器原生播放器呈現有意義的錯誤提示。

  • Range 請求支持:支持 bytes=start-end 請求,返回 206 Partial Content,使得 <video> 標籤能夠正常拖拽進度條。
  • 全文件讀取:默認使用 GET 請求,返回 200 OK。
  • 緩存策略:響應頭包含 Cache-Control: private, max-age=60。
  • 路徑安全:客戶端正則僅匹配特定根路徑(/Users, /tmp, /private/tmp, /var/folders, /var/tmp)加 15 種擴展名,避免誤匹配外部 URL。同時支持 UTF-8 安全路徑編碼。
  • 樣式清理:插件卸載時,客戶端 Fiber 會自動移除注入的 <style>。

支持格式

插件支持本地路徑與在線鏈接,支持的擴展名如下:

  • 音頻/視頻(15 種):mp3, wav, m4a, flac, ogg, opus, aac, mp4, mov, mkv, m4v, webm, avi, 3gp, ogv
  • 圖片(12 種):png, jpg, jpeg, gif, bmp, webp, svg, tiff, ico, avif, heic, heif

安裝與配置

  1. 進入 DSH web profile 目錄(默認爲 ~/.dsh/profiles/web)。
  2. 使用官方命令安裝插件:
dsh plugin --profile web add media-preview
  1. 插件安裝後會自動修改 package.json,添加 dsh.bundle.patch 和 dsh.client.platform 配置項。
  2. 源碼修改後需重啓 dsh web。

限制與依賴

  • 緩衝限制:全文件緩衝讀取,單請求上限爲 500 MB。大視頻首幀可能較慢;Range 請求在同一內存緩衝區上切片。
  • 目錄與鏈接:不支持目錄列表,無符號鏈接策略(依賴 fs.stat)。
  • 依賴:需要 @deepseek-ai/cordis (^4.0.1)。

參考資料

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

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

小夜