在 DeepSeek Harness(DSH)Web 界面中,助手返回的本地圖片或視頻路徑通常只是純文本。dsh-image-preview 插件通過重寫這些路徑,將它們渲染爲可交互的媒體元素,同時保留一個可點擊的原始地址鏈接。
核心功能¶
- 本地媒體內聯:助手回覆中的本地圖片/視頻絕對路徑會自動變成內聯圖片或可播放的視頻。
- 視頻播放器:支持拖動進度條,基於 HTTP Range 206 分段響應實現。
- 持久化:跨重啓媒體不消失,持久 token 存於
$DSH_HOME/plugins/dsh-image-preview.token。 - 系統打開:點擊地址行(媒體下方)可用系統默認應用打開。
- 點擊攔截:客戶端攔截點擊,不開新 tab;無客戶端模塊時降級處理。
- 樣式與體積:媒體下方地址行小字號、緊貼媒體;零構建、純 ESM。
安裝與啓用¶
該插件以普通依賴的形式安裝在 DSH 的 profile 目錄中。
- 進入 DSH 的 profile 目錄:
cd ~/.dsh/profiles/web
- 安裝插件:
pnpm add github:ywleeo/dsh-image-preview
- 在
~/.dsh/profiles/web/cordis.patch.yml中追加配置:
- insert:
- id: dsh-image-preview
name: dsh-image-preview
- 重啓
dsh web後刷新頁面即可。
工作原理¶
插件由 Host 側和 Client 側兩部分組成,通過文件拆分隔離啓動風險。
Host 側(邏輯層)
- 包裝 llm/stream 接口。當流式文本塊結束時,掃描真實存在的本地媒體絕對路徑(POSIX /…、Windows 盤符、UNC)。
- 驗證文件存在後,將路徑改寫爲同源迴環 URL(127.0.0.1)。
- 註冊三條路由:
- /image:讀取文件字節,返回圖片。
- /video:支持 HTTP Range 206 分段響應,返回視頻。
- /open:調用系統命令(open/start/xdg-open)打開文件,並重定向至媒體路由。
Client 側(渲染層)
- 注入 CSS 樣式:控制播放器樣式、小字號、間距。
- 將“▶ 播放視頻”鏈接替換爲 <video controls> 標籤。
- 攔截對 /open 鏈接的點擊事件,阻止默認跳轉,改爲觸發本地打開。
文件結構
- index.js:啓動殼,不依賴核心模塊,確保審計通過。
- host.js:核心邏輯。
- client.js:前端渲染與交互。
注意事項與邊界¶
- 作用範圍:只處理助手回覆的流式文本(
llm/stream),工具結果卡片裏的路徑文本不改寫。 - 路徑校驗:只處理真實存在的本地絕對路徑;遠程 http(s)、data:/、file: 協議及相對路徑會被忽略。
- 視頻支持:僅支持瀏覽器原生可播放的容器/編碼(mp4/H.264、webm、mov、ogv);mkv、avi 等不支持預覽,但地址行點擊仍可用系統播放器打開。
- 性能限制:視頻讀取爲整讀後按 Range 切片,單文件上限 512MB。
- 權限與安全:token 持久化在
$DSH_HOME/plugins/dsh-image-preview.token(600 權限),僅限本機使用,勿暴露到公網。 - 特殊字符:路徑含
()[]等特殊字符時,markdown 鏈接語法可能破損。 - 平臺差異:Windows/Linux 打開命令已實現但僅在 macOS 實測。
結尾¶
該插件通過 Host 與 Client 的協作,在 DSH Web 界面中實現了本地媒體的無縫預覽。更多細節與更新可查閱插件目錄或源碼倉庫。