dsh-vidlens:在 DSH 里像人一样「看」公网视频,而不整片下载

前言

在 DeepSeek Harness(DSH)里让智能体处理视频链接,常见做法是整段拉媒体或把 MCP 服务器挂上去。前者带宽和磁盘压力大,后者往往只有一个全局工具超时,长 ASR 容易被误杀,画面能否进模型还取决于客户端实现。维护者 cctv2333 的 dsh-vidlens 把 vidlens 从 stdio MCP 外壳改成 DSH 原生插件:工程侧 Python 逻辑不改,通过常驻桥进程调用已测过的工具函数,在对话里提供元数据、章节、带时间码的帧、字幕优先转写,以及 AudioSet 527 类声音事件等能力,并按步骤控制下载量。

这是什么

dsh-vidlens 是 DSH 分类下的联网工具插件,仓库 github.com/cctv2333/dsh-vidlens,社区目录页 skillhub.cn/plugins/cctv2333/dsh-vidlens。许可证 MIT;npm 包名 dsh-vidlens,当前 package 版本 1.4.3(以仓库 package.json 为准)。

插件要求:vidlens >= 1.4.0(自 video_soundscape 起)、Node ≥ 20、DSH >=0.2.1-rc.2 <0.3.0。Python 核与 MCP 服务器在 cctv2333/vidlens,本仓库只负责 DSH 集成。

相对 MCP 外壳做了什么

下面几项是 README 里明确写出的差异,便于判断是否从 MCP 迁到插件。

能力 MCP 外壳 dsh-vidlens
工具名 mcp__vidlens__video_meta vidlens_meta 等短名
超时 客户端全局约 60s 每工具自带预算(如 vidlens_brief、vidlens_scan 各 15 分钟)
图片 依赖客户端是否支持 MCP image 走宿主 attachments.saveImage,成为持久附件
缓存 无 vidlens_library、vidlens_seek 等零下载能力
批量筛选 无 vidlens_compare(最多 8 链接,0 媒体下载)
整片下载 存在 video_full(confirm=true) 故意不提供
本地文件 vidlens 1.6.0 起与核同步 所有 url 可填本地路径或 file://

插件还通过独立的 system-prompt 小节约束流程:先 meta → plan → 抽样,避免整片下载;取消时通过 exec.signal 重启桥进程,减少卡死下载。

核心功能与工具概览

README 将工具归纳为 21 个(含若干零下载与缓存相关能力)。典型「问一个链接讲了什么」的推荐顺序如下(均为资料原文流程):

用户: 这个视频讲了什么? <url>
  → vidlens_meta      0 下载:值不值得看
  → vidlens_plan      0 下载:切章节,挑 2–3 段
  → vidlens_window    只下这一窗的音频(或直接读缓存/字幕)
  → vidlens_sheet     只下这 20 秒,拼图带时间码,图直接附在结果里
  → vidlens_brief     平台字幕优先;无字幕才下音频做本地 ASR
  → vidlens_soundscape 台词之外的声音(吃饭/敲击/水声),带概率

基础四件(0 下载):vidlens_meta、vidlens_plan、vidlens_subs、vidlens_library(本地缓存清单)。

读内容:含 vidlens_watch(分段观看)、vidlens_window、vidlens_brief(默认摘要档 level="digest",全文用 level="full")、vidlens_seek(缓存转写关键词定位)、vidlens_audio、vidlens_soundscape 等。

看画面:vidlens_sheet、vidlens_frames、vidlens_scan、vidlens_ocr(本地 OCR,可选 RapidOCR;首次不会偷偷下载,需显式 install: true)。

判断 / 长视频 / 自检:vidlens_comments、vidlens_compare、vidlens_job_start / vidlens_job、vidlens_models、vidlens_doctor。

为控制上下文,vidlens_brief 默认给约 0.7–1.5k 字摘要;细节用 vidlens_window;完整报告仅在用户明确需要时用 level="full"。全文仍落在 out/<id>/brief.md。

安装与启用

前置:安装 vidlens 核

资料要求先有一份 vidlens,二选一:

pipx install "vidlens-mcp[all]"          # 推荐:无 checkout,命令叫 vidlens / vidlens-mcp
# 或
git clone https://github.com/cctv2333/vidlens && cd vidlens && install.cmd

(上文第二条 clone 来自官方 README;装插件本身另有 GitHub 直装方式,见下。)

安装 dsh-vidlens 插件

三选一:

# A. 本地目录(开发;换成你自己 clone 的位置)
plugin_manager action=install_bundle target=<你的路径>\dsh-vidlens

# B. GitHub 直装(本包无 build/prepare 脚本,不需要 allowBuilds 权限)
#    注意:这条会真的 git clone 本仓库,会被 GitHub 记一次 clone
dsh plugin --profile desktop add github:cctv2333/dsh-vidlens#<sha>

# C. npm(registry,不经过 GitHub)
dsh plugin --profile desktop add dsh-vidlens

插件会自动解析 Python 工程目录:config.projectDir → $VIDLENS_PROJECT → <本包>/../vidlens → 当前目录;找不到时按 $VIDLENS_PYTHON / .venv / python 尝试。

安装后 bundle 会插入 Host 插件条目;换机器时可配置 projectDir、pythonPath、warm 等(字段均可省略,见 README 示例 YAML)。

典型用法与验证

在 DSH 对话中直接给出公网视频 URL(或本地路径),按 meta → plan → window / sheet / brief 递进即可;需要对比多个候选时用 vidlens_compare,长片用 job 系列后台跑。

维护者在仓库提供自检:

node tools/selftest.mjs
# 130/130 checks passed(工具表 + 桥握手 + library/models/seek + 本地路径声明 + 强制杀进程后自愈)

带约 1MB 真实媒体:

node tools/selftest.mjs --live

架构上,DSH Host 注册工具与超时,经 stdin/stdout JSONL 与 bridge/vidlens_bridge.py 通信,复用 vl_mcp 里已有工具函数,缓存写在 out/<id>/。

适用场景与注意

适合:需要在智能体对话里快速判断视频是否值得看、按章节抽样、字幕优先摘要、看带时间码的拼图或 527 类环境声,且希望控制下载量与上下文体积的 DSH 用户。

注意:

  • 插件以当前 DSH 进程的权限运行;安装前应自行查看源码与 MIT 许可证,并理解会触发的网络与本地缓存(out/)行为。
  • DSH 社区目录(如 SkillHub)是独立站点,与 DeepSeek / 幻方无官方从属关系;星标等统计以 GitHub 页面为准(线索中仓库星标为 2)。
  • vidlens_ocr 依赖可选,可通过 VIDLENS_OCR_TARGET、VIDLENS_OCR_AUTO_INSTALL 控制安装位置与策略。
  • 多进程(DSH 会话、MCP、插件桥)共享下载口时,工程侧用跨进程文件锁串行媒体访问,超时可用 VIDLENS_LOCK_TIMEOUT(默认 900s)调整。

结尾

dsh-vidlens 把 vidlens 的「按需看片」能力接到 DSH 原生工具、分工具超时与图片附件上,并补上 library/seek/compare 等本地缓存意识,适合在 Harness 里用结构化证据回答「这个视频讲了什么」,而不是先整片落盘。

羽毛球分组比赛记分
小程序二维码

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

小夜