前言¶
用 DeepSeek Harness(DSH)搭智能体时,推理交给 DeepSeek 的文本模型没有问题,但很多任务需要“看”:从截图里读报错文字、比较两版界面的布局差异、从设计稿里取主色。常见做法是把图片手动丢给另一个多模态服务,再把结果搬回会话,链路断在中间。
dsh-vision-suite 解决的就是这个问题。它在保留官方 deepseek-official 文本路由的同时,把图片理解、OCR、截图裁剪、像素比较、主色提取和安全网页截图接进了 Harness。文本推理仍然由 DeepSeek 负责,只有调用远程视觉工具时,插件才会把用户选定的图片发送给已配置的 OpenAI-compatible 视觉模型。
这是什么¶
dsh-vision-suite 由 princefrogdida-ux 维护,许可证为 MIT,插件包名为 dsh-vision-workbench(GitHub 仓库名为 dsh-vision-suite),当前版本 0.7.1,面向 Windows。DSH 的理念是“一切皆插件”,这个插件就是给文本为主的工作流补上视觉这一环。
运行环境要求 Node ^22.19.0 || >=24.0.0。本地像素处理、OCR 和浏览器能力分别依赖 sharp、tesseract.js 和 playwright-core,三者均为可选依赖,按需加载——不用本地工具就不会引入这些开销。
核心功能¶
六个视觉工具¶
| 工具 | 作用 | 执行位置 |
|---|---|---|
vision_describe |
理解 1~4 张上传图片或工作区图片,支持图片问答、多图比较和结构化截图证据 | 视觉 Provider |
vision_ocr |
识别整张图片或指定区域中的文字,可选择远程视觉模型或本地 Tesseract | Provider 或本机 |
vision_crop |
按像素坐标裁剪图片,并保存为可继续使用的持久附件 | 本机 |
vision_compare |
比较两张同尺寸截图,返回变化比例和洋红色差异图 | 本机 |
vision_palette |
提取图片中的近似主色 | 本机 |
vision_browser_capture |
使用独立的无头 Edge 或 Chrome 截取白名单网页 | 本机浏览器 |
可以看到分工:需要模型理解内容的走视觉 Provider,纯像素操作(裁剪、比较、取色)和网页截图都在本机完成,图片不必离开机器。
其他基础能力¶
- 支持 PNG、JPEG 和 WebP。
- 图片附件使用持久 ID,工具结果可随会话保存和回放。
- 支持一个主视觉 Provider 和最多三个顺序后备 Provider,失败时执行有限回退,并通过冷却机制避免持续请求故障端点。
- 支持图片数量、文件大小、像素数、工作像素、超时和缓存限制。
- API Key 通过 Harness Credentials 保存,不写入插件配置、日志或页面响应。
- 可为插件请求单独配置 HTTP/HTTPS 代理(
proxyUrl,默认为空),不修改全局网络设置。
安装与启用¶
本文整理资料时,README 与 package.json 中均未包含可直接引用的一行安装命令,这里不自行拼接,具体安装方式请以 GitHub 仓库的 README 为准。
安装后插件默认保持关闭(enabled 默认 false),不会自动接管模型路由,也不会自动发送图片。启用走 Harness 原生配置页面:
- 启动安装了本插件的 Web Profile。
- 打开“设置 → 插件 → 插件配置”。
- 点击 Vision Workbench 展开全部配置项。
- 填写文本模型、视觉 Provider 和 API Key。
- 打开“启用插件”,保存配置。
- 重启当前 Profile,使路由和工具配置生效。
关于 API Key 的输入框:页面刷新后不会回显密钥,只会显示对应凭据是否已经配置;密码框为空时会保留已保存的密钥,不需要重复粘贴。
最小可用配置¶
第一次使用只需要以下几项:
| 配置项 | 推荐值或说明 |
|---|---|
enabled |
开启 |
wrapperRoute |
保持 deepseek-vision-workbench,不能与 deepseek-official 或文本 Provider 重名 |
textProvider.provider |
保持 deepseek-official |
textProvider.model |
选择当前 Harness 中可用的 DeepSeek 模型(默认 deepseek-v4-pro) |
visionProvider.name |
primary |
visionProvider.baseURL |
视觉服务的 OpenAI-compatible API 地址 |
visionProvider.model |
服务商提供的视觉模型名称 |
visionProvider.credentialRef |
凭据名称,例如 VISION_API_KEY |
| API Key | 在同一 Provider 卡片的密码框中输入 |
保存并重启 Profile 后,在模型选择器中选择:
DeepSeek + Vision Workbench / <配置的 DeepSeek 模型>
随后上传图片并直接提问,例如“识别这张截图中的文字”或“比较这两张图片的布局差异”。
配置远程视觉服务¶
任何兼容 OpenAI /chat/completions 且支持 image_url 图片输入的服务都可以接入。README 给出了几个常用服务的入口:
| 服务商 | baseURL |
API Key 官网 |
|---|---|---|
| OpenAI | https://api.openai.com/v1 |
platform.openai.com/api-keys |
| OpenRouter | https://openrouter.ai/api/v1 |
openrouter.ai/settings/keys |
| 硅基流动 SiliconFlow | https://api.siliconflow.cn/v1 |
cloud.siliconflow.cn/account/ak |
| 阿里云百炼 | 中国大陆:https://dashscope.aliyuncs.com/compatible-mode/v1;国际:https://dashscope-intl.aliyuncs.com/compatible-mode/v1 |
help.aliyun.com |
配置时按三步走:
- 把服务商的 API 地址填入
visionProvider.baseURL。 - 从服务商官网复制一个支持图片输入的模型 ID,填入
visionProvider.model。 - 为该服务设置独立的
credentialRef,例如OPENAI_VISION_KEY或OPENROUTER_VISION_KEY,真实 Key 粘贴到对应 Provider 卡片的密码框。
注意三点:同一个服务商可能同时提供纯文本模型和视觉模型,选模型前必须确认它支持 image_url 输入及 /chat/completions 接口;baseURL 中不能嵌入用户名、密码或 API Key;正常使用必须是 HTTPS,只有 allowInsecureLocalhost 显式开启时才允许连接本机回环地址上的 HTTP 测试服务。
本地 OCR¶
vision_ocr 默认走远程视觉 Provider,只有明确选择 backend="local" 时才进入本地 Tesseract。本地 OCR 默认关闭(localOcr.enabled 默认 false),且需要自行准备可信来源的语言数据文件——插件不会自动下载语言包、访问 CDN、写入 Tesseract 缓存,本地识别失败后也不会自动切换到远程 Provider。
Windows 配置示例:
localOcr:
enabled: true
languagePath: 'D:\vision-data\tesseract'
languages: [eng, chi_sim]
gzip: true
timeoutMs: 60000
maxLanguageBytes: 52428800
maxRegions: 50
pageSegMode: auto
autoRotate: true
lowConfidenceThreshold: 40
languagePath 指向的目录中应存在 eng.traineddata.gz、chi_sim.traineddata.gz 等与配置一致的文件。默认启用 gzip、自动处理方向,低置信度提示阈值为 40。
网页截图¶
vision_browser_capture 默认关闭(browserCapture.enabled 默认 false)。开启后必须填写精确的主机白名单,插件使用独立的无头浏览器(browserCapture.browserChannel 默认 msedge,可选用 chrome)只截取白名单内的页面。
Provider 回退与限制¶
除了主 Provider(visionProvider),最多可以配置三个后备 Provider(fallbackProviders)。插件按列表顺序逐个尝试,不会并发把图片发给多个端点;主备 Provider 之间不能重名。
回退行为由三个参数控制:
| 字段 | 默认值 | 说明 |
|---|---|---|
providerRouting.attemptTimeoutMs |
45000 |
单个 Provider 的尝试超时 |
providerRouting.failureThreshold |
2 |
连续失败多少次后进入冷却 |
providerRouting.cooldownSeconds |
60 |
故障 Provider 的冷却时间 |
总超时 timeoutMs(默认 120000)应大于 attemptTimeoutMs,否则可能没有足够时间尝试后备 Provider。
图片与缓存方面的默认限制:单次调用最多 4 张图片,单张最大 10485760 字节(10 MiB)、40000000 像素;视觉结果缓存默认开启,200 条,TTL 3600 秒;本地处理最大工作像素 16000000;视觉模型最大输出 maxTokens 默认 4096。这些都有对应配置项,可按需调整。
另外,vision_compare 要求两张截图尺寸完全相同,插件不会自动缩放或对齐图片,以免掩盖真实布局变化。
适用场景与注意¶
这个插件适合在 Windows 上使用 DSH、需要处理截图和图片的智能体开发者:比如让智能体读界面截图里的文字、对比两版 UI 的变化区域、从图片里取色,或者把白名单网页截图作为会话证据。前提是你手上有一个兼容 OpenAI image_url 格式的视觉服务 API Key,或者愿意自行准备 Tesseract 语言文件做本地 OCR。
使用前有几点需要清楚:
- 插件以当前 dsh 进程的权限运行,本地工具能读写你的工作区图片、调用本机浏览器。安装前建议检查仓库源码与许可证(MIT),确认符合自己的安全要求。
- 插件默认关闭,不会在你不知情时接管路由或发送图片;图片只会在调用远程视觉工具时发送给你自己配置的端点。
- 远程视觉服务必须 HTTPS、
baseURL不夹带密钥、网页截图走精确白名单,这三条是插件内置的边界,配置时不要绕开。
小结¶
dsh-vision-suite 做的事情很聚焦:不替换 DeepSeek 的文本推理,只在需要“看”的时候补上六个工具,并把凭据、回退、限制这些工程细节都做成了显式配置。如果你在 DSH 上经常和截图打交道,值得装上试一次。