前言¶
DSH(DeepSeek Harness)的理念是「一切皆插件」,開發者可以通過插件擴展智能體的能力。智能體需要看視頻、聽音頻的場景越來越多,但主流方案要麼依賴雲服務上傳,要麼只能處理文本。插件 ck99998888/dsh-video-reader 解決這個問題,讓智能體在本地直接處理視頻/音頻文件和實時桌面,無需上傳、無需聯網。
這是什麼¶
ck99998888/dsh-video-reader 是一個 DeepSeek Harness 插件,支持智能體觀看、收聽和查看視頻/音頻文件以及實時桌面。所有處理都在本地完成:視頻不上傳、不聯網、不依賴雲服務。
插件基於 whisper.cpp + sherpa-onnx + ffmpeg 技術棧,維護者 ck99998888。插件版本 1.8.0,許可證 MIT。
核心功能¶
插件提供以下工具:
video_read:讀取視頻/音頻元數據、關鍵幀、字幕,生成帶說話人標籤的多語種轉寫video_frames:按時間點抓取全寬大圖,一次最多 8 張screen_capture:實時捕獲桌面,返回每幀的拼版圖和單幀路徑screen_frames_read:持續讀取捕獲直到沒有未讀幀screen_watch:持續採樣,僅在畫面變化超過閾值時喚醒智能體screen_record:長時捕獲爲視頻(1 小時 30 fps 約 350 MB)video_reader_setup:檢查或安裝外部工具鏈,首次使用時自動安裝
安裝與啓用¶
從 GitHub 克隆倉庫:
git clone https://github.com/ck99998888/dsh-video-reader $env:USERPROFILE\dsh-video-reader
pwsh -File $env:USERPROFILE\dsh-video-reader\scripts\setup.ps1
或通過 DSH 插件管理器安裝:
dsh plugin --profile web add github:ck99998888/dsh-video-reader
然後安裝文件夾爲 bundle(插件管理器 → 安裝文件夾,或 plugin_manager install_bundle),重啓 DSH。Client 端會在頁面啓動時自動構建。
首次使用 video_read/video_frames/screen_capture 時,插件會自動下載缺失的依賴到 %LOCALAPPDATA%\dsh-video-reader\bin 和 …\models,每個文件通過 lib/deps.js 中的版本和 sha256 校驗,校驗失敗則刪除並重試。
典型用法¶
讀取視頻元數據和轉寫¶
- video_read:
path: ./demo.mp4
frames: 12
start: 1:30
end: 2:00
transcript: true
language: auto
diarize: true
subtitles: true
返回結果包含:
- 拼版圖片(每格左上角燒入時間碼)
- 每幀全尺寸圖路徑
- 說話人標籤轉寫(如 [S1] 0:00–0:05 大家好,今天我們討論視頻閱讀器的測試結果。)
- transcript.srt 完整時間戳字幕
實時捕獲桌面¶
- screen_capture:
seconds: 5
fps: 20
region: full
frames: 12
width: 960
mouse: true
返回拼版圖和每幀路徑。screen_watch 可用於持續採樣,僅在畫面變化超過閾值時喚醒智能體。
檢查依賴狀態¶
- video_reader_setup:
action: status
components: all
返回每個組件的就緒狀態、安裝位置、版本以及安裝耗時/體積。
屏幕捕獲設置¶
Web UI 中「設置 → 視頻閱讀器」提供圖形化配置:
- 允許/禁止抓屏
- 整屏 / 指定窗口 / 自定義區域
- 幀率、默認時長、每幀寬度
- 是否包含鼠標指針
- 「抓一幀預覽」按鈕確認範圍
設置保存後立即生效,也可直接修改 %LOCALAPPDATA%\dsh-video-reader\screen-settings.json。
實現要點¶
- 整屏:
gdigrab -i desktop - 窗口:先枚舉窗口座標再裁剪(不能用
gdigrab -i title=,GDI 讀不到 D3D 合成窗口) - 區域:使用
-offset_x/-offset_y/-video_size - 窗口標題子串匹配(如
Microsoft Edge)
實測幀率(2560×1600 桌面,JPEG 落盤)¶
| 目標 fps | 實際產出 | 說明 |
|---|---|---|
| 10 | 9.1 fps | |
| 20 | 18.8 fps | |
| 30 | 28.5 fps | 插件上限,覆蓋 24–30fps 視頻 |
| 40 | 37.9 fps | |
| 60 | 56.6 fps | 受 JPEG 編碼/寫盤限制 |
單張全屏截圖約 173 ms。總幀數封頂 240(seconds × fps ≤ 240),超了自動降 fps 並在結果中註明。
識別與分離¶
語種支持¶
使用 whisper medium-q5_0 模型,支持 99 種語言。本機實測:
- 中文:逐句全對,兩名說話人分對
- 英文:全對
- 德文:全對
- 法文:僅一處冠詞差異
- 俄/日/韓:模型原生支持(本機未實測)
說話人分離¶
使用 sherpa-onnx 離線分離:pyannote 分段模型(5.7MB)+ 3D-Speaker 聲紋嵌入(27MB)+ 聚類,不聯網、CPU 即可。57 秒 4 人素材實測分離正確(S1–S4),速度約爲實時 20 倍。
每句轉寫按時間重疊度歸到說話人,連續同人語句合併成一 “turn”,輸出附帶各說話人發言總時長。
配置¶
- insert:
- id: video-reader
name: '@local/dsh-video-reader'
config:
frames: 12
columns: 4
frameWidth: 960
tileWidth: 320
maxTextChars: 12000
maxTranscriptSeconds: 900
languages: auto
cacheDir: .dsh-video-cache
diarize: true
speakers: 0
diarizationThreshold: 0.5
autoSetup: true
autoSetupModels: true
dependencyMirror: true
ffmpegPath: ''
ffprobePath: ''
whisperPath: ''
whisperModel: ''
diarizationPath: ''
segmentationModel: ''
embeddingModel: ''
依賴自動安裝(1.8 起)¶
- 首次使用時自動下載缺失的 ffmpeg / 運行時 / 模型
- 每個文件按版本和 sha256 校驗,失敗則刪除重試
- GitHub 域名不通時默認走
gh-proxy.com鏡像(dependencyMirror) - 設置頁「依賴組件」可查看狀態、手動安裝、關閉自動安裝
體積¶
| 組成 | 大小 |
|---|---|
| ffmpeg + ffprobe(essentials 構建) | 201 MB |
| whisper.cpp + sherpa-onnx 運行時 | 27 MB |
| 識別模型 medium-q5_0 | 514 MB |
| 分離模型(分段 + 聲紋) | 33 MB |
| 代碼/資源 | < 0.1 MB |
| 合計 | 約 778 MB |
可替換模型:ggml-large-v3-q5_0.bin(1031 MB,俄/日/韓更好)或 ggml-small.bin(465 MB,更小但德/俄/日/韓準確率下降)。
適用場景與注意¶
適合需要智能體分析視頻/音頻或監控桌面的場景,如:
- 自動生成視頻字幕和摘要
- 說話人分離和多語種轉寫
- 實時桌面監控與異常檢測
- 視頻內容檢索與理解
注意:插件以當前 DSH 進程權限運行。安裝前應檢查源碼與許可證(MIT)。GitHub 域名不可達時可通過 dependencyMirror 配置鏡像。
短結尾¶
這個插件讓智能體在本地完成視頻/音頻處理和桌面監控,無需上傳和雲服務。完整的插件目錄頁和源碼倉庫見下方鏈接。
鏈接¶
- GitHub:https://github.com/ck99998888/dsh-video-reader
- DSH 目錄頁:https://www.skillhub.cn/plugins/ck99998888/dsh-video-reader