🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

视频事件审阅 xinghuobk/dsh-event-video

DeepSeek Harness
xinghuobk6 天前有提交已提供中文文档扫描:含敏感能力

把长视频转成带时间戳的可核对事件记录

29.6/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/11/2 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add xinghuobk/dsh-event-video
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:仅索引
是什么
dsh 原生插件 · vision
装得上吗
本站尚未做安装检查
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 6 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

可执行外部命令读写/删除本地文件写入剪贴板(不计风险)读取剪贴板或密钥环境变量发起外部网络请求
查看扫描证据(共 73 处,展示前 26 条)
  • 写入剪贴板
    bundle/client.js:86
    navigator.clipboard.writeText(text).catch(() => {})
  • 发起网络请求
    bundle/client.js:1187
    fetch('/event-video/pipeline-progress?out=' + encodeURIComponent(record.out))
  • 发起网络请求
    bundle/client.js:1203
    fetch('/event-video/pipeline', {
  • 发起网络请求
    bundle/client.js:1230
    fetch('/event-video/describe', {
  • 发起网络请求
    bundle/client.js:1244
    fetch('/event-video/describe', {
  • 发起网络请求
    bundle/client.js:1258
    fetch('/event-video/work-items', {
  • 发起网络请求
    bundle/client.js:1270
    fetch('/event-video/annotations', {
  • 读取密钥环境变量
    bundle/index.js:73
    VLM_API_KEY = config.vlmApiKey || process.env.DSH_EVENT_VIDEO_VLM_API_KEY || ''
  • 读取密钥环境变量
    bundle/index.js:83
    TTS_API_KEY = config.ttsApiKey || process.env.DSH_EVENT_VIDEO_TTS_API_KEY || ''
  • 执行外部命令来自配置/变量
    bundle/index.js:202
    const child = spawn(PYTHON, command, { windowsHide: true })
  • 读取本地文件
    bundle/index.js:248
    if (!hasThumb && video && existsSync(video)) {
  • 执行外部命令固定命令
    bundle/index.js:251
    const child = spawn('ffmpeg', ['-hide_banner', '-loglevel', 'error', '-ss', String(seek),
  • 发起网络请求
    bundle/index.js:681
    const response = await fetch(VLM_ENDPOINT, {
  • 读取本地文件
    bundle/index.js:770
    if (existsSync(candidate)) {
  • 读取本地文件
    bundle/index.js:847
    createReadStream(path).pipe(res)
  • 读取本地文件
    bundle/index.js:856
    createReadStream(path, { start: range.start, end: range.end }).pipe(res)
  • 执行外部命令固定命令
    bundle/index.js:1146
    const child = spawn('explorer.exe', [target], { detached: true, stdio: 'ignore' })
  • 执行外部命令固定命令
    bundle/index.js:1158
    const child = spawn('explorer.exe', [body.out], { detached: true, stdio: 'ignore' })
  • 执行外部命令固定命令
    bundle/index.js:1262
    const child = spawn('powershell', ['-NoProfile', '-NonInteractive', '-Command', script],
  • 执行外部命令来自配置/变量
    bundle/index.js:1321
    const child = spawn(PYTHON, args,
  • 读取本地文件
    bundle/index.js:1787
    if (!existsSync(frame)) {
  • 读取本地文件
    bundle/index.js:1791
    if (!existsSync(frame)) {
  • 发起网络请求
    bundle/index.js:3625
    const response = await fetch(TTS_ENDPOINT, {
  • 写入本地文件
    plugin/lib/index.js:144
    await mkdir(outDir, { recursive: true })
  • 读取本地文件
    plugin/lib/index.js:163
    const event = JSON.parse(await readFile(join(outDir, 'event.json'), 'utf8'))
  • 写入本地文件
    plugin/lib/index.js:165
    await writeFile(join(outDir, 'review.json'), JSON.stringify({
扫描于 2026/11/4(0 天前) · 范围 全包扫描 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

每一秒都有据可查。把长视频转成 DeepSeek Harness 可核验的事件记录:状态、语音单元、语义章节、关注点,以及确定性复核标记。

README

由 DeepSeek 最新模型翻译生成
DSH Event Video banner 给 DeepSeek Harness 用的本地视频审阅工具。 丢一个录屏或会议视频进来,它会写一份带时间戳的记录:画面里是什么、说了什么、页面或话题什么时候变的。同一份记录驱动审阅面板:看片、跳到某一刻、写标注、导出工单。 English README 事件记录时间线 50 秒演示记录:画面状态、转移、时间尺、校验和审阅标记,直接由真实的 event.json 渲染。 用来做什么 一小时的录屏审起来很慢。快进会漏掉原话和当时打开的页面,直接让模型总结又拿不出证据。 这个工具把证据留下: - 画面状态和转移覆盖整条时间线; - 语音切成带时间戳的小段,和画面变化对上; - 章节按页面切换和话题变化切分; - 每次构建都会列出需要人工确认的地方。 产物是 event.json,以及一个边看边核对的面板。
展开完整文档(README 剩余 1 节)
DSH Event Video

banner

给 DeepSeek Harness 用的本地视频审阅工具。

丢一个录屏或会议视频进来,它会写一份带时间戳的记录:画面里是什么、说了什么、页面或话题什么时候变的。同一份记录驱动审阅面板:看片、跳到某一刻、写标注、导出工单。

English README

事件记录时间线

50 秒演示记录:画面状态、转移、时间尺、校验和审阅标记,直接由真实的 event.json 渲染。

用来做什么

一小时的录屏审起来很慢。快进会漏掉原话和当时打开的页面,直接让模型总结又拿不出证据。

这个工具把证据留下:

- 画面状态和转移覆盖整条时间线;
- 语音切成带时间戳的小段,和画面变化对上;
- 章节按页面切换和话题变化切分;
- 每次构建都会列出需要人工确认的地方。

产物是 event.json,以及一个边看边核对的面板。

产物

event.json
├─ states[] 126 个画面状态:时间、语音标签、OCR 标签、URL、注意力 ├─ transitions[] 125 次状态转移 ├─ units[] 380 条与转移对齐的语音语元 ├─ chapters[] 21 个语义章节(页面切换/话题转折、停留、注意力) ├─ gaps[] ≥3 秒的语音缺口,缺失叙述可见 ├─ gates 分区/标签/缺口/语元/章节 校验 └─ review 审阅标记:OCR URL 异常、无标签状态、弱对齐、长度异常

工作原理

ffmpeg 抽帧 ──► pHash 状态机 ──► 画面状态 + 转移 │ │ │ ├──► 代表帧 OCR ──► 页面标签 │ ├──► 状态起点高分辨率 OCR ──► URL / 标签页提示 │ └──► 语音(转写或本地 ASR)──► 语元 │ └──► 对齐:哪些话在描述哪次变化(滞后统计) │ ├──► 章节:页面切换 + 话题低谷 ├──► 注意力:停留 + 指代/动作语言 + 微交互 └──► 审阅:确定性自检标记

试试 50 秒 demo

cd engine
pip install -e ".[dev,office]"
cd ..
python examples/demo/make_demo.py
event-build examples/demo/demo.mp4 --out examples/demo/out --transcript examples/demo/transcript.txt

预期:4 个状态、3 次转移、校验 PASS、1 条审阅标记(章节 49 秒)。

仓库结构

| 目录 | 说明 |
| engine/ | Python 包 event-build:流水线与测试 |
| plugin/ | DSH 工具插件,注册 build_video_event |
| bundle/ | DSH Web 插件:侧栏唯一入口「视频审阅」,含 审阅/总览/库/摄像头 四个标签 |
| camera/ | 反射式摄像头监控(本地 5Hz 感知,事件才唤醒模型) |
| scripts/ | 独立使用的库索引脚本 |
| docs/architecture.md | 数据模型与流水线细节 |

模型(可选,一条命令)

核心只需要 ffmpeg + Python;摄像头信号、本地 VLM 描述、本地 ASR 都是可选层:

python scripts/setup_models.py # MediaPipe 手/脸/姿态模型(约 17 MB)
python scripts/setup_models.py --with-vlm # + Ollama 视觉模型(qwen2.5vl:3b,约 3.2 GB)

Windows 封装:powershell -ExecutionPolicy Bypass -File scripts/install.ps1 -WithVlm。

完整表格(大小、用途、存放位置、关闭方式)与许可证说明:docs/MODELS.zh.md。视觉分层设计(OCR / 几何 / 批量 VLM / 关键帧思考 / GUI 定位)与模型评测方式:docs/VISION.md。受限内存下的多模型任务编排(单元任务、模型换入换出、缓存、断点):docs/ORCHESTRATION.md。模型权重不进仓库,按需下载。

快速开始(只用引擎)

需要 Python 3.10+ 与 PATH 上的 ffmpeg。

cd engine
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -e ".[dev,office]"

event-build input.mp4 --out out --transcript transcript.txt

转写文件每行一句 [mm:ss] 文本;也可以本地转写:

pip install -e ".[asr,dev]"
event-build input.mp4 --out out --asr --whisper-model /path/to/whisper-large-v3

得到 out/event.json、out/report.md(校验 + 审阅标记)、out/coverage.json。

接入 DSH

1. 安装工具插件

cd "$DSH_PROFILE_DIR"
npm install --install-links --legacy-peer-deps "file:/path/to/dsh-event-video/plugin"

在 profile 的 cordis.patch.yml 追加(必须写在 insert 里,且用相对路径——裸包名从 DSH 安装目录解析,profile 里的包不会被看到):

- insert:
- id: event-video
name: ./node_modules/dsh-event-video/lib/index.js
config:
pythonPath: /path/to/engine/.venv/bin/python
modelPath: /path/to/whisper-large-v3
defaultOutDir: /path/to/data/video-events

2. 安装界面插件

用 DSH 的 plugin manager install_bundle,target 指向 bundle/ 目录;重启 DSH。

3. 使用

主要工具:

- build_video_event(...) 生成记录;review_video_event(out) 返回审阅标记。
- read_video_frame(out, t) / ocr_video_frame(out, t) 取某一刻的画面或精确文字。
- describe_video_frames(out, keyFrames?, think?) 让配置的 VLM 写简短描述(Ollama 或任意 OpenAI 兼容接口)。
- annotate_video_record / list_video_annotations / reply_video_annotation 记录带时间码的标注和回复;fuse_vision_evidence 用 OCR 交叉校验 UI-TARS 定位,fuse_to_work_item 直接写成工单。
- export_work_items(out, kind) 导出工单或 SOP;export_video_analysis(out) 导出 Markdown、CSV、Word、Excel。
- run_vision_batch(records, ...)、run_vision_pipeline(out, ...) 批量跑同一套流程。

界面上是一个侧栏入口:首页、视频库、查看、设置。布局规则见 docs/DESIGN.md,模型栈见 docs/VISION.md。

摄像头(Windows,显式开启)

pip install -r camera/requirements.txt
首次:下载 MediaPipe 手/脸模型(约 11MB)到数据目录
python camera/download_models.py
python camera/camera-monitor.py --device "video=Your Camera"

监控还会加载本地 MediaPipe 模型(hand_landmarker.task、face_landmarker.task),产出 手势/挥手/微笑/皱眉/人脸出现/离开 事件,并支持个人中性基线校准(camera_calibrate)与阈值反馈(camera_feedback)。bundle 注册:camera_state(即时结构化状态)、camera_wait(阻塞等待运动/画面/主体事件)、camera_snapshot(抓帧路径,配合 read_image)。只有用户显式开启才采集,画面留在本地。面板预览走本地 MJPEG 流(/camera/stream);采集 640x480@15fps(分析降到 320x240),latest.jpg 每帧刷新。新增身体动作事件:both_hands_up / arms_crossed / hands_on_hips(pose_action)。

配置

| 环境变量 / bundle 配置 | 含义 |
| DSH_EVENT_VIDEO_HOME / dataHome | 数据根目录(记录、缓存、摄像头),默认 ~/event-video |
| DSH_EVENT_VIDEO_PYTHON / pythonPath | 装了 event-build 的解释器 |
| DSH_EVENT_VIDEO_WHISPER / whisperModel | 本地 faster-whisper 模型目录 |
| DSH_EVENT_VIDEO_CAMERA_DEVICE / cameraDevice | ffmpeg dshow 设备 |
| DSH_EVENT_VIDEO_ROOTS / extraRoots | 额外允许的媒体根目录(; 分隔) |
| DSH_EVENT_VIDEO_VLM_ENDPOINT / vlmEndpoint | Ollama /api/chat 或 OpenAI 兼容 URL |
| DSH_EVENT_VIDEO_VLM_MODEL / vlmModel | VLM 模型名(如 qwen2.5vl) |
| DSH_EVENT_VIDEO_MEDIAPIPE_DIR / mediapipeDir | 手/脸 .task 模型目录(默认 <home>/models/mediapipe) |
| DSH_EVENT_VIDEO_CAMERA_SIGNALS / enableCameraSignals | 0/false 关闭手势与表情事件 |
| DSH_EVENT_VIDEO_CAMERA_SIZE | 采集分辨率,默认 640x480 |
| DSH_EVENT_VIDEO_VOICE / enableVoice | 0/false 关闭语音与语音反应 |
| DSH_EVENT_VIDEO_TTS_COMMAND / ttsCommand(+ttsArgs)/ ttsEndpoint | 本地 TTS 可执行文件或 OpenAI 兼容语音 URL |

审阅标记

review 是确定性的,每次构建都会跑,不额外调用模型。它会标记:

- 完整性校验未通过;
- OCR 把 URL 里的 = / & 读丢(地址栏识别真实存在的失败模式);
- 完全没有标签的状态;
- ≥60 秒的语音缺口;
- 动作对齐弱、语音滞后过大;
- 章节短于 30 秒或长于 300 秒。

构建工具的摘要会带上同一块内容,模型可以在同一轮回答里汇报。

已知限制

- 只支持 mp4;章节边界是字符 bigram 启发式(粗但稳定)。
- 注意力是排序代理,不是校准过的概率。
- 摄像头采集仅限 Windows/DirectShow。
- 构建队列在内存中:重启 DSH 会丢队列(记录仍在磁盘)。
- OCR 可能读错 URL 标点;审阅会标记,但不会自动纠正。

参与贡献

见 CONTRIBUTING.md。提交 PR 前跑 pytest -q engine/tests 和 Node 语法检查。

License

MIT © 2026 xinghuobk
预览分享卡片长什么样 ↓xinghuobk/dsh-event-video
分享 · DeepSeek Harness Hub
xinghuobk/dsh-event-video

把长视频转成带时间戳的可核对事件记录

这是你的仓库?认领条目

回到顶部