给纯文本模型装上眼睛:把用户图片转发给任意 OpenAI 兼容的视觉模型生成描述,并在 Web UI 右侧面板展示结果。
安装
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:jyh20030112/dsh-visual-plugin
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yaml 的 allowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
DeepSeek Harness 插件。
视频预处理及插件媒体存储均在运行 DSH 的机器上完成。图片与提取的关键帧通过 DSH 发送给当前配置的模型;模型推理是否在本地运行,取决于你的 DSH 模型配置。
特性
- 原生图片理解 —— 上传图片始终走 DSH 原生附件与模型链路;插件不再配置或调用独立视觉模型。
- 可复制的图片历史 —— 右侧面板在图片缩略图旁记录当前 DSH 模型的最终回答,支持展开历史和一键复制。
- 插件自有视频上传 —— 支持 MP4、M4V、MOV、AVI、MPG/MPEG、MKV 和 WebM;扩展名、文件签名与 FFprobe 结果必须一致。
- 视频场景解析 —— 统一转为 H.264/yuv420p MP4,通过 PySceneDetect 提取关键帧,再将有序、带时间戳的图片交给当前 DSH 视觉模型。
- 右侧面板 —— 在图片/视频视图间切换,直接播放标准化视频,并将选中视频写入会话草稿。
- 视频高级设置 —— 可在插件设置卡中调整上传大小、存储配额、时长、输出尺寸、FPS、CRF 和关键帧数量。
工作原理
图片 → DSH 原生附件 → 当前视觉模型 → 最终回答
→ /vision-bridge/recent → 面板缩略图 + 可复制描述
视频 → 容器校验 → H.264/yuv420p 标准化 → PySceneDetect
→ 带时间戳关键帧 → DSH 原生图片附件 → 当前模型回答
插件不会改写模型消息,也不会调用私有视觉接口。发送图片或询问视频前,请在 DSH 中选择支持图片输入的模型。
快速开始
插件 0.4.x 面向 DSH 0.2.0-rc.2;旧版 DSH 0.1.x 请继续使用插件 0.3.2。升级无需启用版本风险豁免。
1. 安装宿主环境依赖
图片功能无需安装以下工具。视频功能需要 FFmpeg/FFprobe >= 6.1(同一主版本)、包含 libx264 编码器的 FFmpeg,以及 PySceneDetect >= 0.7.1 < 0.8。
请在运行 dsh web 的机器及用户环境中安装依赖。ffmpeg、ffprobe 和 scenedetect 必须加入该进程的 PATH,可以从任意目录直接调用。如果 DSH 运行在 Docker、WSL 或远程服务器中,请在对应运行环境内安装依赖。
macOS(Homebrew)
若尚未安装 Homebrew,请先安装并按照其安装后提示将 brew 加入 PATH。然后安装 FFmpeg(包含 FFprobe)和 uv:
brew install ffmpeg uv
Arch Linux(pacman)
sudo pacman -Syu ffmpeg uv
Windows(PowerShell、WinGet)
打开 PowerShell,执行 winget --version 确认 WinGet 可用。若缺少该命令,请按链接中的说明安装或更新 应用安装程序(App Installer)。在 Windows x64 上安装 FFmpeg(包含 FFprobe)和 uv:
winget install --id Gyan.FFmpeg --exact
winget install --id astral-sh.uv --exact
安装后关闭并重新打开 PowerShell,使新的 PATH 生效,再继续下面的步骤。如果无法使用 WinGet,可从 FFmpeg 下载页 获取 Windows 构建,解压到 C:\Tools\ffmpeg 等固定目录,并在 环境变量 中将包含 ffmpeg.exe 和 ffprobe.exe 的目录(通常为 bin)添加到当前用户的 Path;uv 则按其 Windows 官方安装说明 安装。
使用 uv 安装 PySceneDetect(三种系统通用)
在终端或 PowerShell 中执行:
uv tool install --python 3.12 "scenedetect>=0.7.1,<0.8"
uv tool update-shell
该方式将 PySceneDetect 安装为当前用户可直接调用的持久命令,并使用独立环境。uv 会在需要时下载 Python 3.12;标准 scenedetect 包包含所需的 OpenCV 依赖。启动 DSH 前无需激活虚拟环境。详见 uv 工具安装文档 和 PySceneDetect 安装说明。
2. 验证依赖
执行 uv tool update-shell 后,关闭并重新打开终端。在即将启动 DSH 的同一环境中执行:
ffmpeg -version
ffprobe -version
ffmpeg -hide_banner -encoders
scenedetect version
确认 FFmpeg 和 FFprobe 均为 >= 6.1 且主版本一致,编码器列表包含 libx264,PySceneDetect 为 >= 0.7.1 < 0.8。
若提示找不到命令,在 macOS/Arch 中执行 command -v ffmpeg ffprobe scenedetect,在 PowerShell 中执行 Get-Command ffmpeg, ffprobe, scenedetect,确认命令位置。uv tool dir --bin 可查看 PySceneDetect 的命令目录,该目录需要加入 PATH。通过服务或容器启动 DSH 时,也应配置相应的 PATH,修改后重启 DSH 进程。
插件不会自动下载依赖或执行安装脚本。缺少依赖时图片功能仍可用,设置页会列出视频依赖问题。
3. 安装插件
dsh plugin --profile web add dsh-visual-plugin # 或:github:jyh20030112/dsh-visual-plugin
若使用本地 DeepSeek Harness 源码开发,请改为链接本地插件目录:
cd /absolute/path/to/dsh-visual-plugin
npm run bootstrap
dsh plugin --profile web add link:/absolute/path/to/dsh-visual-plugin
bootstrap 要求已安装、构建的 dsh-v0.2.0-rc.2 Harness 检出,并自动查找同级或祖先目录。其他布局请显式指定:
HARNESS=/absolute/path/to/deepseek-harness npm run bootstrap
4. 重启并使用
在通过上述依赖验证的环境中重启 dsh web,然后:
打开 设置 → 插件,选择 dsh-visual-plugin 详情页中的 视觉媒体 配置。通过 侧边栏 开关控制右侧面板,并按需调整视频解析高级设置。设置保存到当前 profile,立即生效且重启保留;升级会恢复旧设置归档中的有效视频参数,不覆盖已保存的新参数。
在 DSH 中选择支持图片输入的模型;插件不再提供单独的视觉模型配置。
发送图片。当前模型会原生回答,图片面板会记录缩略图和最终回答,方便复制。
点击输入框旁的 上传视频。处理完成后在右侧选择 视频 播放;点击 在会话中提问 只会写入草稿,确认后再发送。
视觉模型
图片与视频关键帧均由 DSH 当前选择的视觉模型理解。模型提供方、接口和凭据统一由 DSH 管理,插件不再重复配置。
卸载
dsh plugin --profile web remove dsh-visual-plugin
重启 dsh web。该命令会在 profile 内转发执行 pnpm remove,bundle 层列表会自动同步移除该插件。
项目结构
src/
index.ts 原生图片历史、video_describe 工具、设置与 HTTP 路由
config.ts 视频解析高级设置与运行时策略
video/ 上传、容器探测、转码、场景检测、关键帧与 HTTP Range 播放
client/ 图片/视频面板、上传控件、高级设置、文案与样式
cordis.patch.yml bundle 补丁层
构建
npm run bootstrap && npm run typecheck && npm run build # 需要本地 harness 检出
预构建 lib/ 已提交,使用者无需构建。
CI/CD
ci.yml 在每次 push/PR 校验产物与打包内容;release.yml(tag v*)校验版本、打包、创建 GitHub Release 并发布到 npm。
相关资源
- DeepSeek Harness —— 本插件所扩展的宿主框架。
- PySceneDetect —— 用于选择视频关键帧的场景检测工具。
- awesome-dsh-plugin —— 收录本插件的 DSH 插件精选列表。
友情链接
致谢
- HsiangNianian — 感谢开发过程中的帮助与建议。
- tingfeng347 — 感谢构建稳定性修复与本地 harness 开发环境的完善。
- dsh-auto-continue — 网络错误等异常导致请求被中断时自动发送「继续」恢复的 DSH 插件(错误分类、自适应退避、浏览器通知),很好用的搭配。
许可证
链接
同类插件
liustack/modlens★ 4945
为纯文本模型架起视觉桥梁:粘贴图片,输出结构化 JSON 证据(OCR、版面、语义)。
ysr666/dsh-vision-router★ 1264
为纯文本 Agent 提供视觉能力:内置免 Key 视觉链 + 像素级视觉工具(看图问答、定位、裁剪、像素对比、取色、OCR、矢量化、抠图、截图);粘贴图片即可用。
Anionex/dsh-vision-toolkit★ 943
让纯文本模型处理视觉任务:粘贴图片后自动切换到 Vision Toolkit 变体,支持图片问答、多图比较、长截图 OCR、截图还原前端 UI、元素定位与像素对比。默认无需 API Key——图片经作者自建的免费服务处理,每台机器每天 100 张;也可改为指向自己的服务商。
SAOS-3624/dsh-see-now★ 612
让只有文字的智能体「看」实时屏幕或摄像头:每帧按画面变化量打分,只把真正变了的帧拼成一张带编号、带音轨条的宫格图——看视频、看演示、看游戏都行,token 只花在变了的地方。
SAOS-3624/dsh-video-storyboard★ 530
把视频(本地文件,或 B 站 / yt-dlp 链接)压成一张可寻址的宫格图:每格烧编号、对应精确时间、挂台词,底部还有同时间轴的音频包络;video_zoom 可对任意窗口高清重看——纯文本模型因此能「看」视频,而不是读别人写的摘要。
dickpy/dsh-imagegen★ 188
面向 DSH Web GUI 的 AI 生图插件:通过可配置的 OpenAI 兼容端点(gpt-image-2 / gpt-image-1 / dall-e-3)实现文生图与图生图,提供 api_url/api_key 设置卡片与侧边栏分栏生图工作台。
社区评论
评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。