DeepSeek Harness 插件:讓智能體在本地“看”和“聽”視頻

前言

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
羽毛球分组比赛记分
小程序二维码

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

小夜