前言¶
在 DeepSeek Harness(DSH)裏處理視頻時,常見做法是先把片段描述成文字,再交給模型推理。畫面裏的切點、屏幕上的字、一鏡到底的錄屏,單靠摘要很容易丟信息;若每次都抽大量幀進視覺模型,token 成本又很難控。社區維護者 Destinhue 的客戶端插件 dsh-video-vision(GitHub:Destinhue/dsh-video-vision)走另一條路:本地用 ffmpeg 做分析與抽幀,通過一組工具把「元數據、零 token 文本地圖、分鏡 contact sheet、局部放大、整片 OCR 式閱讀」拆開,並針對 deepseek-v4.1-flash 的視覺計費方式做了格子布局與索引設計。它可作爲 dsh-video-storyboard / dsh-video-understand 的 drop-in 替換(同名工具與參數形狀兼容),並額外提供整文件文本地圖與有聲無畫文件的轉錄能力。
這是什麼¶
dsh-video-vision 是 DSH 的客戶端插件:在 Harness 進程內註冊工具,不自帶 npm 運行時依賴,依賴系統上的 ffmpeg(有 ffprobe 時優先用它讀元數據,否則從 ffmpeg -i 輸出解析)。當前 package 版本爲 1.4.3,許可證 MIT,要求 Node.js ≥ 20。插件目錄與源碼見 社區插件頁 與上述 GitHub 倉庫(截至資料記錄,倉庫約 5 stars)。
一句話定位:每次視圖給出一張可尋址的分鏡網格,並用文本索引把每一格綁定到時間碼;長片可先花 0 視覺 token 用 video_outline 決定開哪一段,再對窗口調用 video_storyboard 或 video_read。
核心功能¶
插件暴露五個工具(名稱與用法說明寫在工具描述裏,結果側儘量只返回索引與圖像,減少重複說明佔用上下文):
| 工具 | 作用(據 README) |
|---|---|
video_probe |
元數據 + 閱讀計劃,不解碼畫面 |
video_outline |
整條片子按窗口輸出文本行(切點、說話佔比、強度條、標籤),不返回圖像,0 視覺 token |
video_storyboard |
一張 contact sheet + 逐格時間碼索引;可選音頻帶、字幕軌信息 |
video_zoom |
短窗口內 1–9 格大圖查看 |
video_read |
整片讀成帶 [mm:ss] 時間戳的文本,適合講課、幻燈片、錄屏 |
輸入可以是本地路徑、ffmpeg 可拉的 http(s) 媒體 URL,或 B 站鏈接(bilibili.com/video/BV…、裸 BV、av 號、b23.tv 短鏈等):首次會下載到緩存,之後與本地文件同樣處理。
與舊插件的差異要點(均來自上游 README 自述):基於 12×7 亮度+色度塊的一次 pass 做切點/變化檢測;格子數量隨內容與 token 預算自適應,而非均勻鋪幀;長無切點段落會按畫面「新增內容」規劃格子;video_read 面向「字在畫面上」的內容,README 中給出了 2 小時課約 87 s、36 s 卡片約 1.3 s 等實測量級。設計依據與復現數據見倉庫內 docs/DESIGN.md、docs/EVIDENCE.md。
安裝與啓用¶
DSH 生態是「一切皆插件」;skillhub.cn 爲社區目錄,與 DeepSeek / 幻方無官方從屬關係。安裝前請自行審閱源碼與 MIT 許可證:插件以當前 DSH 進程權限運行,會讀寫 profile、緩存媒體並調用 ffmpeg。
官方安裝方式不是 dsh plugin add github:…,而是在克隆或解壓插件目錄後執行安裝腳本(會修改 ~/.dsh/profiles/desktop 的 dependencies、bundles,並將包目錄聯接進 profile 的 node_modules):
cd /path/to/dsh-video-vision
node bin/install.mjs # 改 ~/.dsh/profiles/desktop,然後重啓 DSH
node bin/install.mjs --dry-run # 只打印要改什麼,不動文件
node bin/install.mjs --remove # 卸載
裝完後必須重啓 DSH:包內 cordis.patch.yml 在啓動時把插件掛進 harness 樹,五個工具纔會出現。可選 --copy 改爲複製快照而非目錄聯接。
ffmpeg 查找順序(節選):$DSH_FFMPEG_PATH → $DSH_VIDEO_FFMPEG → $FFMPEG_PATH → 包內 vendor、常見安裝路徑、PATH 等;ffprobe 對應 $DSH_FFPROBE_PATH / $FFPROBE_PATH。長片可設 DSH_SCAN_KEYFRAMES=off 退回逐幀掃描;DSH_VIDEO_ZOOM_MARKERS=0 可關閉「建議 zoom 的格」標記。
本機自檢(無需自備樣片,--smoke 會生成素材):
node bin/selfcheck.mjs --smoke
node bin/selfcheck.mjs --smoke --host # 需對已安裝的 Harness 做 schema 與真調用校驗
典型用法¶
下面介紹 README 中的可復現調用順序:先 outline 再 storyboard,避免在長片上盲目燒 token。
1、對短片做零圖像成本的文本地圖,並拿到建議窗口:
video_outline input:"dsh-video-vision-promo.mp4" windows:8 top:3
返回各行窗口的切點數、說話佔比、強度條與 watch first 推薦;next 行會給出例如 video_storyboard start=21 end=28 的參數提示。README 稱對該倉庫自帶 57 秒宣傳片原樣跑一次約 1.9 s,無圖、無視覺 token。
2、對選定文件或窗口生成分鏡圖:
video_storyboard input:"C:\clips\pv.mp4"
索引中會給出網格維度、每格 pos / frame@;同一工具結果內返回圖像。常用參數包括 start / end / duration、detail(low / auto / high)、cells、textOnly + cellRange(只翻索引、不取圖)。
3、需要看清某一格上的字幕或代碼時,按索引裏的 zoom 提示調用:
video_zoom input:"..." start=... end=... cells=3
4、內容是屏幕文字而非「畫面敘事」時,優先整片文本閱讀:
video_read input:"lecture.mp4"
適用場景與注意¶
更適合:需要在 Agent 對話裏直接對照畫面做分析的場景(體育、遊戲、電影片段);以及錄屏、幻燈片、課程等「字在屏上」、分鏡圖難以讀字時,用 video_read 換可檢索的時間戳文本。可先 video_probe 定計劃,再 video_outline 定窗口,最後 video_storyboard / video_zoom 花視覺 token。
務必注意:依賴 ffmpeg 版本與本地解碼性能;B 站鏈接會觸發下載與緩存。README 在 docs/EVIDENCE.md、docs/REAL-WORLD.md 中寫明弱點(例如約 1 s 疊化與部分全幀切換的誤檢)。ffmpeg 許可取決於你本機二進制(GPL/LGPL),插件不捆綁 ffmpeg。
結尾¶
dsh-video-vision 把「看哪一段、花多少視覺 token、字還是畫」拆成可組合的工具鏈,並在客戶端完成抽幀與佈局,減輕「只聽轉述、不見畫面」的信息損失。進一步瞭解與安裝說明見 skillhub 目錄頁 與 GitHub 倉庫(含中文版 README:README.zh.md)。