前言¶
在 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 里用结构化证据回答「这个视频讲了什么」,而不是先整片落盘。