前言¶
在 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)。