前言¶
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