前言¶
在 DeepSeek Harness (DSH) 中,当询问视频内容时,Agent 需要的是画面。
现有的方案基本只有两类:使用视觉桥插件(把帧发给云端 VLM,只返回文字结论,需要 API key 且结论是二手的),或者让 Agent 自己拼 ffmpeg 命令(需要处理时间戳和边界,容易出错)。
dsh-video-see 提供了第三条路:不调用外部 VLM,不需要任何 API key,画面不离开机器。它使用 ffmpeg 抽取帧,作为真实图像返回给 Agent,并附带时间戳。
这是什么¶
dsh-video-see 是 DeepSeek Harness 的一个插件。它使用 ffmpeg 对视频进行抽帧,返回真实的图像内容块,并标记时间戳。作者是 HongtaoWang75,许可证为 MIT。
核心功能¶
- 使用 ffmpeg 抽取视频帧。
- 将真实图像返回给 Agent。
- 为每帧标记时间戳。
- 不需要视觉 API 或 API key。
- 所有处理都在本地完成,不离开机器。
- 支持多种参数:input, times, every, count, start, end, width, mode。
- 可通过 cordis.patch.yml 配置:ffmpegPath, ffprobePath, maxFrames, maxWidth, maxPixels, quality, timeoutMs, toolTimeoutMs, graceMs。
- 包含单元测试和契约验证脚本。
安装与启用¶
- 执行安装命令:
dsh plugin --profile web add dsh-video-see
- 重启
dsh web(插件树在进程启动时组合)。
前置条件:必须安装 ffmpeg / ffprobe(或在配置中指定绝对路径)。插件零运行时依赖,没有构建步骤,也不联网。
典型用法¶
安装后,直接提问即可。Agent 会调用 video_see。
示例:
- “D:\videos\demo.mp4 里发生了什么?”
- “第 14 秒画面上那行小字写的是什么?”
- “这条片子剪了几个镜头?”
主要参数:
- input:视频路径(必填)。
- times:定点抽取秒数或时钟串,优先级最高。
- every:每 N 秒一帧。
- count:等分抽取帧数(1-64,默认 8)。
- start / end:指定时间窗。
- width:单帧宽度上限。
- mode:frames(每帧一张图)或 sheet(拼成一张图版)。
适用场景与注意¶
- 无音频转录:不转写音频,
hasAudio仅报告音轨存在。 - 不经过 ctx.fs:
input路径直接交给 ffmpeg,文件沙箱对此读取不生效。 - 离散快照:帧是离散的,运动或一闪而过的细节可能被漏掉。
- 依赖 ffmpeg:必须安装 ffmpeg。
- 边界处理:自动处理帧边界、旋转检测、竖屏按面积缩放、仅在必要时缩放。
- 临时文件:临时帧会立即删除。
- 错误提示:提供用户友好的失败信息。
短结尾¶
该插件将视频帧以真实图像形式交还给 DSH Agent,配合本地模型的原生视觉能力,避免了二次翻译和 API 成本。如需了解详情,可查看目录页或 GitHub 仓库。