前言¶
DeepSeek Harness(DSH)在對話裏已經能渲染指向本地文件的圖片,但沒有對等的視頻、音頻內聯播放能力。若你在 Harness 裏調試媒體管線、復盤本地素材,或希望助手直接展示一段 MP4 而不是隻給出路徑,就需要從插件層補這一環。下面介紹社區插件 dsh-plugin-media-gen:它在聊天裏提供本地圖片/視頻/音頻播放器,並可選調用 xAI Grok Imagine 生成短片。
這是什麼¶
dsh-plugin-media-gen 由維護者 atzx 發佈,分類爲客戶端插件。一句話定位:在 DSH 聊天中內聯播放本地媒體,並通過 xAI Grok Imagine API 生成視頻後同樣內聯展示。Harness 本體不負責視頻/音頻的 Turn 級卡片;該插件用兩個工具和一個自定義媒體路由填補缺口。
- 目錄頁:https://www.skillhub.cn/plugins/atzx/dsh-plugin-media-gen
- 源碼:https://github.com/atzx/dsh-plugin-media-gen
- 許可證:MIT(README 與
package.json一致) - 當前包版本:
0.1.0(見倉庫package.json)
核心功能¶
工具 show_media¶
展示已存在的本地圖片、視頻或音頻文件。參數:
| 參數 | 類型 | 說明 |
|---|---|---|
path |
string | 必填。 文件的絕對路徑。 |
title |
string | 可選,播放器上方的標題。 |
支持的擴展名:圖片 png jpg jpeg webp gif avif bmp;視頻 mp4 mov m4v webm mkv;音頻 mp3 wav m4a flac ogg opus aac。其它擴展名會被拒絕並返回支持列表。返回 { path, kind, bytes },並在 presentationMeta 中記錄 { path, title? },Turn 卡片從元數據讀路徑,不依賴正文解析。
README 說明:圖片仍可通過 Markdown 渲染;show_media 主要針對 Markdown 無法覆蓋的視頻與音頻。
工具 generate_video¶
調用 xAI Imagine API(POST /v1/videos/generations,輪詢 GET /v1/videos/{id}),將 MP4 下載到 <DSH_HOME>/media/,返回絕對路徑。參數包括:prompt(必填)、image_path、duration(1–15 秒)、aspect_ratio、resolution、model、generate_audio、output_dir。
API Key 每次調用從 GROK_API_KEY 解析,來源爲啓動環境或 ~/.dsh/.credentials.yaml,輪換密鑰無需重啓應用。
展示位置:Turn 尾部卡片與工具行¶
工具調用默認摺疊在可摺疊組裏;若只在 tool.call.toolview 註冊卡片,需展開組才能看到播放器。插件的主展示面是 Turn tail:Turn Definition(media-shown)累積媒體工具產生的路徑,conversation.chat.turnTail 註冊的卡片在助手收束段落下繪製——與 present、schedule_create 同類位置。同時寫入帶 key 的工具行,不展開摺疊組也能看到播放器。
媒體工具結果會引用路徑(例如 Shown audio: "/…/file.mp3" (2.8 MB)),以便會話重放時從含空格的文件名中仍能提取路徑。
自定義媒體路由(Range 請求)¶
Harness 的 GET /api/file 會忽略 Range 頭並始終以完整 200 響應;<video> 需要字節範圍,收到全量 200 會觸發 error,而音頻管線對全量響應更寬容。插件因此註冊認證路由:
GET|HEAD /api/media-gen/file?path=<absolute>
- 支持
Accept-Ranges: bytes與正確 MIME 206與Content-Range(含bytes=a-b、bytes=a-、bytes=-n)- 不可滿足範圍時
416 - 流式傳輸,不整文件緩衝
客戶端優先走該路由,失敗則回退 /api/file,再回退爲普通鏈接;連接載體不可用時仍可部分工作。
安裝與啓用¶
官方 README 給出的步驟是符號鏈接到 desktop profile 的 node_modules,並在 package.json 中聲明 link 依賴與 bundle。不要憑插件名拼接 dsh plugin add github:... 一類未在文檔出現的命令。
1、在插件源碼目錄執行:
ln -sfn "$PWD" ~/.dsh/profiles/desktop/node_modules/dsh-plugin-media-gen
2、編輯 ~/.dsh/profiles/desktop/package.json:添加 link: 依賴,並把 dsh-plugin-media-gen 寫入 dsh.profile.bundles。
3、重啓 DSH 應用。
插件以當前 DSH 進程權限運行;安裝前應閱讀源碼與 MIT 許可證,確認工具與自定義 HTTP 路由符合你的安全策略。
典型用法¶
在對話中讓助手調用工具即可(具體措辭因模型與 Harness 配置而異,行爲以工具 schema 爲準)。
展示本地文件: 提供絕對路徑,必要時加 title。例如助手調用 show_media,path 爲 /home/user/clips/demo.mp4。
生成視頻: 調用 generate_video,prompt 必填;按需設置 duration(1–15)、aspect_ratio、resolution、model、generate_audio、image_path、output_dir。需事先配置 GROK_API_KEY(環境變量或 ~/.dsh/.credentials.yaml)。
適用場景與限制¶
適合: 在 DSH 桌面 profile 裏內聯試聽/預覽本地音視頻;在對話中生成 Grok Imagine 短片並直接在 Turn 卡片裏播放;需要正確 HTTP Range 的視頻 seek 行爲時。
限制(README 原文要點):
- 播放器只出現在 Turn 卡片與工具行,不會作爲裸 assistant 塊或 Markdown 擴展出現;Harness 未把文本渲染器作爲擴展點暴露。
generate_video在輪詢期間阻塞當前 turn;生成約 1–3 分鐘,聲明超時爲 15 分鐘。- 第三方插件不 import
@deepseek-ai/*;瀏覽器側通過 Harness 的window.__ModuleLoader__.load加載,僅依賴react。
社區插件目錄 SkillHub 爲獨立站點,與 DeepSeek / 幻方無官方從屬關係;星標等元數據以目錄頁與 GitHub 爲準(撰寫時 GitHub 星標爲 0)。
結尾¶
dsh-plugin-media-gen 從插件層補上了 DSH 對本地視頻/音頻的內聯播放,並用 Grok Imagine 把「生成 → 落盤 → 播放」串在同一條對話 Turn 裏;自定義 /api/media-gen/file 解決了全量 200 導致 <video> 失敗的問題。需要啓用時按 README 的 link 與 bundle 步驟操作即可。