前言¶
在 DSH 里处理课堂录像、播客或会议录音时,常见做法是把文件交给云端 ASR,再把长文本丢给主模型总结。转写与讲义一旦经过云端,来源追溯、中断恢复和「整段链路是否留在本机」都不好控。下面介绍的 Vidora(仓库 a49a/dsh-vidora,维护者 a49a)是面向 DeepSeek Harness 的本地优先插件:在本机用 FFmpeg 解码、VAD 分段、Qwen3-ASR 转写、Qwen3-ForcedAligner 对齐,并可调用本地 LLM 生成带来源片段关联的 Markdown 讲义。DSH 提供对话入口与工具编排;核心业务数据(Transcript / Document JSON)不依赖 Harness 私有接口,便于后续扩展到浏览器或桌面端。
这是什么¶
Vidora 的定位是本地优先的音视频知识文档化工具。输入本地 MP4、MKV、MP3、WAV 等文件后,流水线在本机完成解码与推理,输出 transcript.json、讲义 document.json、notes.md 以及 exports/ 下的导出文件。插件当前版本为 0.1.0(见仓库 package.json),许可证 MIT。社区目录页:SkillHub 插件页;源码:GitHub a49a/dsh-vidora。
处理链路可概括为:
本地音视频
→ FFmpeg 解码 / 16kHz 单声道
→ VAD + 静音感知分段
→ Qwen3-ASR-0.6B(可切换 1.7B)
→ Qwen3-ForcedAligner-0.6B
→ transcript.json
→ 本地 LLM 分窗口提取 → 合并 → 确定性 Markdown 渲染
→ notes.md + document.json + exports/
维护者在 README 中说明:Phase 1–5 最小可运行链路已实现;macOS Apple Silicon(M1 Pro,32GB,MPS)上完成真实推理测试。Linux、Windows 与 Intel Mac 尚未在其本机验证,代码含 CPU fallback,应视为兼容目标而非已验证结果。
核心功能¶
DSH 工具一览¶
插件向 Cordis 注册的工具如下(名称与职责以 README 为准):
| 工具 | 功能 |
|---|---|
vidora_transcribe |
创建本地转写任务;默认 wait=true 等待完成,也可异步轮询 |
vidora_task_status |
查询阶段、已处理时长、总时长、片段数、错误 |
vidora_cancel_task |
取消任务;检查点保留,可恢复 |
vidora_get_transcript |
分页读取转写正文(仅受信任的本地会话) |
vidora_generate_notes |
用本地 LLM 生成精简/详细/可读转写/复习提纲 |
vidora_get_document |
读取讲义正文(仅受信任的本地会话) |
vidora_export |
导出 Markdown / JSON / TXT / SRT(不返回正文) |
vidora_list_models |
查询模型、设备、FFmpeg、Worker、本地 LLM 与隐私状态 |
媒体格式¶
支持 MP3、WAV、FLAC、M4A、MP4、MKV、WebM、OGG、Opus、AAC、MOV、AVI、M4B。
任务恢复与缓存¶
Python Worker 由 Node 子进程拉起,推理不在 Harness 主进程内执行。任务状态写在 tasks/<id>/task.json,每个 ASR 片段后写 checkpoint.json。取消或崩溃后可用 vidora_transcribe 的 resumeTaskId 恢复。相同源文件在 SHA-256、模型、语言、对齐与 VAD 参数一致时会命中缓存,不重复 ASR。
严格本地与隐私¶
privacy.strictLocal 默认开启:ASR 在本机不等于整段工作流都在本机——若当前 DSH 主模型是云端,vidora_get_transcript / vidora_get_document 在不可信 provider 下不会出现在工具列表;讲义生成走独立配置的本地 LLM 端点;vidora_export 只返回路径与大小。Vidora 不会自动回退到云端模型。若要在对话里直接读转写正文,需将主模型切到已确认的本地 provider,并将其 id 写入 privacy.trustedLocalProviders;否则用 vidora_export 在本机打开文件。
安装与启用¶
前提(README「快速安装」):Node.js >= 22、Python >= 3.9、FFmpeg/ffprobe、DSH >= 0.2.2-rc.1 且 < 0.3.0(已在 DSH 0.2.2-rc.1 上实测)。
在已取得插件源码目录的前提下,先做构建与 Worker、模型准备:
cd dsh-vidora
# 1. 构建 TypeScript 插件
npm install
npm run build
# 2. 安装独立 Python Worker 虚拟环境(不修改全局 Python)
node scripts/install-worker.mjs --yes
# 3. 确认后下载模型权重(默认写入操作系统用户数据目录)
node scripts/prepare-models.mjs --model qwen3-asr-0.6b --yes
node scripts/prepare-models.mjs --model qwen3-forced-aligner-0.6b --yes
下载前会显示模型来源、大小与目标目录;prepare-models 支持 --endpoint https://hf-mirror.com、--dest、--data-dir。Worker 推理时设置 HF_HUB_OFFLINE=1,不会在运行时拉取权重。
安装到 DSH profile(必须使用资料中的 link 方式,路径换成你本机绝对路径):
dsh plugin --profile desktop add link:/absolute/path/to/dsh-vidora
编辑 ~/.dsh/profiles/desktop/cordis.patch.yml,为 vidora 增加配置,例如:
- id: vidora
config:
dataDir: /Users/you/Library/Application Support/Vidora
worker:
pythonPath: /absolute/path/to/dsh-vidora/python-worker/.venv/bin/python
asr:
modelsDir: /Users/you/Library/Application Support/Vidora/models
device: auto
align: true
llm:
mode: openai # off | ollama | openai | harness
baseUrl: http://127.0.0.1:8090/v1
model: qwen2.5-3b-instruct
privacy:
strictLocal: true
trustedLocalProviders: []
Linux 默认数据目录为 $XDG_DATA_HOME/vidora 或 ~/.local/share/vidora,可用 dataDir 或环境变量 VIDORA_DATA_DIR 覆盖。重启 DSH 或等待 profile 热重载后工具生效。
典型用法¶
在 DSH 对话中可直接用自然语言驱动,README 示例:
请把
/Users/you/Videos/os-lecture.mp4转换成文字,并整理成一份精简的 Markdown 教学讲义。
仅转写:
只转文字,不需要总结。
基于已有 Transcript 重新生成讲义:
使用刚才的 Transcript 重新生成一份详细讲义。
本地 LLM 通过 llm.mode 配置:ollama(默认 http://127.0.0.1:11434)、openai(OpenAI 兼容本地端点)、harness(复用 DSH 已注册本地 provider,且须列入 trustedLocalProviders)、off(仅 ASR、缓存与导出)。端点默认须为回环地址;非本机端点需显式 llm.allowNonLoopback=true。
数据落盘结构(节选):
Vidora/
├── meta.json
├── models/
├── projects/
│ └── prj-<source-hash>/
│ ├── transcript.json
│ ├── documents/
│ └── exports/
└── tasks/<task-id>/
├── task.json
└── checkpoint.json
适用场景与注意¶
适合谁:需要在 DSH 对话里编排「本地转写 → 可选本地讲义 → 导出」,且重视检查点恢复、缓存与 Transcript/Document 契约(毫秒时间戳、source_segment_ids 关联、LLM 不覆盖原始转写)的开发者或自托管用户。
运行权限:插件以当前 DSH 进程的用户权限运行,可读写你配置的 dataDir 与登记的源媒体路径。安装前请阅读仓库 安全与隐私 与 LICENSE,自行核对源码。
平台:官方 README 的真实推理 benchmark 在 Apple Silicon 上完成;在其他平台部署前建议先 vidora_list_models 检查 FFmpeg、Worker 与设备,必要时用 asr.device: cpu 做功能验证。
结尾¶
a49a/dsh-vidora 把长音视频拆成可恢复的本地 ASR 任务,并把讲义生成与「正文是否进入云端会话」拆开设计,适合作为 DSH 生态里的本地知识文档化插件。更多字段见仓库 配置参考 与 数据契约。
- 目录页:https://www.skillhub.cn/plugins/a49a/dsh-vidora
- 源码:https://github.com/a49a/dsh-vidora