前言¶
在 DSH 里做智能体时,常见做法是把网页或文档丢进上下文,但技术类内容大量落在 B 站等视频里:口播细节、演示步骤、幻灯片上的公式往往不在简介里。整段下载再人工整理,成本高;只记链接又几乎无法检索。下面介绍社区插件 dsh-forage(采源 Forage):在 DSH 侧注册一组工具,由 Python 引擎负责快扫元数据、深采转写与可选抽帧 OCR,并把摘要写回本地 SQLite,供后续模糊检索。
这是什么¶
dsh-forage 由维护者 a3079566007-pixel 发布,在 DSH 插件目录分类为「记忆」,当前 GitHub 星标为 0。仓库自述为「DSH 插件(宿主层)+ Python 引擎(转写 / OCR / SQLite)」的合集:Node 侧是薄壳,通过 spawn 调用 engine/harvest.py --json <cmd> 完成实际工作。命名上,中文 采源 指采集信源、留存知识;英文 Forage 强调按偏好挑选,而不是无差别抓取整站。
许可证为 MIT(README 标注 © 2026 mikejikichen);npm 包版本为 0.1.0。
架构概览¶
DSH 插件(Node,薄壳)
├─ Config:pythonPath / scriptPath / whisperModel / defaultFrames / timeout
└─ 7 个 defineTool ──spawn──> engine/harvest.py --json <cmd>
├─ B 站 WBI 搜索(requests)
├─ yt-dlp 下载 → faster-whisper 转写
├─ ffmpeg 抽帧(场景检测 + 哈希去重)→ rapidocr
└─ SQLite(trigram FTS + 二元组模糊)
依赖包括 Python 3.12、yt-dlp、ffmpeg、faster-whisper、rapidocr_onnxruntime。国内拉模型时,引擎已内置 HF_ENDPOINT=https://hf-mirror.com 与 HF_HUB_DISABLE_XET=1 的说明。
核心功能¶
插件向 DSH 暴露 7 个工具,对应从「定方向」到「查库」的流水线:
| 工具 | 作用 |
|---|---|
forage_plan |
把方向性需求展开成检索计划(含时长/排除词过滤) |
forage_search |
B 站快扫元数据(WBI 签名,不下载),按播放/点赞/新鲜度/兴趣评分 |
forage_ingest |
后台深采:音频转写(faster-whisper)+ 可选抽帧 OCR |
forage_digest |
取材料包(元数据 + 转写 + OCR),交给模型写摘要 |
forage_note |
写回摘要与标签,进入检索库 |
forage_kb |
本地模糊检索(FTS + 中文二元组兜底) |
forage_status |
库状态与进行中的采集 |
典型顺序可以是:先用 forage_plan / forage_search 缩小候选,再 forage_ingest 深采,经 forage_digest 与 forage_note 沉淀摘要,最后用 forage_kb 检索;进度与异常可用 forage_status 或 CLI harvest.py --json status 查看。更细的参数说明在仓库 docs/SKILL.md(面向模型使用)。
安装与启用¶
README 给出的安装分两步:先把 Python 引擎放到用户目录,再在 DSH 的 profile 里本地 link 插件。官方示例为 PowerShell(路径按 Windows 用户目录写法):
# 1) 引擎:放到 ~/.dsh/harvest/
mkdir "$env:USERPROFILE\.dsh\harvest"
copy engine\harvest.py "$env:USERPROFILE\.dsh\harvest\harvest.py"
copy engine\profile.example.json "$env:USERPROFILE\.dsh\harvest\profile.json"
# 2) 插件:本地 link 安装
# profile 的 package.json 里加依赖与 bundle,然后 pnpm install
Linux /macOS 用户需把上述路径换成对应的 ~/.dsh/harvest/,拷贝仓库中的 engine/harvest.py 与 engine/profile.example.json(后者改名为 profile.json)。插件侧需在 profile 的 package.json 中声明对本包的依赖及 dsh.bundle.patch(见仓库 package.json 与 cordis.patch.yml),再执行 pnpm install。资料中未给出 dsh plugin add github:... 一类一键命令,请勿自行拼接。
配置项¶
宿主层可通过配置指向引擎与模型行为(默认值以 README 为准):
| 字段 | 默认 | 说明 |
|---|---|---|
| pythonPath | python | Python 可执行文件 |
| scriptPath | ~/.dsh/harvest/harvest.py | 引擎路径 |
| whisperModel | small | tiny 对中文技术词误差大 |
| defaultFrames | false | 默认是否抽帧 OCR |
| timeoutMs | 60000 | 单次工具超时 |
| ingestTimeoutMs | 1800000 | 预留 |
peer 依赖包括 @deepseek-ai/cordis ^4.0.2、@deepseek-ai/dsh-tools >=0.2.0-rc.1、 @deepseek-ai/schemastery ^3.18.2。
适用场景与限制¶
适合:需要从 B 站(及 yt-dlp 可解析的链接,如抖音链接导入)把视频变成可检索文本与摘要、并在本机 SQLite 里模糊搜索的 DSH 工作流。
限制与注意(均来自 README):
- 抖音仅支持链接导入(yt-dlp);搜索侧 README 提到使用
whale_dive_*(具体以引擎文档为准)。 - OCR 对竖屏低码率视频不准,横屏 1080p 较可用;关键帧原图会保留,可交给视觉模型精读。
- ASR 对专有名词易错(示例:LoRA→RORA),摘要阶段需结合上下文校正。
- 长任务以 detached 进程运行,异常状态会落在
failed,可用harvest.py --json status排查。
DSH 插件在 当前 dsh 进程权限 下运行,会调用 Python、下载与写本地库。安装前请阅读仓库源码与 MIT 许可证,确认网络下载与磁盘路径可接受。DeepSeek Harness 的「一切皆插件」理念下,社区目录(如 SkillHub)为独立站点,与 DeepSeek / 幻方无官方从属关系;本文仅介绍社区维护的 dsh-forage。
链接¶
- 插件目录页:https://www.skillhub.cn/plugins/a3079566007-pixel/dsh-forage
- 源码与 README:https://github.com/a3079566007-pixel/dsh-forage
经过上面的步骤,你可以在 DSH 里用采源 Forage 把视频流里的有效片段落成本地知识库,而不是只留一堆打不开的链接。