用 dsh-vision-router 给纯文本 DeepSeek Harness 智能体装上眼睛

前言

DeepSeek Harness(下文简称 DSH)把模型、工具、会话和界面都做成可替换的插件。官方仓库的说法很直接:Everything is a Plugin。日常用的 DeepSeek 路由本身仍是纯文本:对话里贴一张截图,运行时往往会在插件还没接手之前就提示当前模型不支持图片;即便接上视觉能力,很多社区方案也会先把图翻译成一段文字描述再喂给 DeepSeek。描述能用,但像素没了——按钮在哪、两版 UI 差几个像素、长截图里某行字怎么排,都很难继续往下做。

dsh-vision-router 走的是另一条路:视觉模型只负责看原图,DeepSeek 继续负责推理;看图变成普通的工具调用,可以定位、裁剪、对比、再截图。本文按社区目录详情页、插件 GitHub 仓库 README / package.json,以及 DeepSeek Harness 官方仓库 交叉核对后整理:它是什么、装在哪、怎么用。

需要先说明一点:下文提到的插件目录站点 deepseek-harness-plugin.com 是社区收录站,和 DeepSeek / 幻方没有官方从属关系,不能当成官方应用商店。

这是什么

dsh-vision-router 是一款 DSH「工具与能力」插件,由 GitHub 用户 ysr666 维护,许可证为 MIT,主要语言是 JavaScript。社区目录于 2026-08-15 收录;仓库 package.json 当前版本为 1.4.4。截至 2026-08-17,GitHub 仓库约 460 星(目录页快照仍显示 94,星标以仓库页面为准)。

一句话定位来自仓库说明:给纯文本 DeepSeek Harness 智能体装上眼睛。默认带一条免注册、免 Key 的视觉兜底链路,再配上一组像素级工具(问答、定位、裁剪、像素对比、OCR、矢量化、抠图、HTML 截图等)。图片轮次按普通工具调用处理,不需要本机 Python。

它针对的是这两类问题:

  • 日常 DeepSeek / opencode 路由是纯文本,直接发图会被运行时拒掉。
  • 只把图片转成一段描述再交给文本模型,后续无法对原图像素做定位、裁剪和逐像素对比。

核心功能

眼睛和大脑分开

仓库 README 把职责写得很清楚:视觉模型只当眼睛,DeepSeek 始终是大脑。图片轮不会被一次性视觉答案抢走;智能体自己调用工具,可以在同一张图上连续多步操作,例如 vision_groundvision_cropvision_describevision_pixel_diff

文字轮在模型、费用和上下文上保持原样。视觉调用按需发生,答案按附件内容哈希缓存;后续文字轮会用已记录的描述替换历史图片,并标注为不可信证据,避免把图里的文字当成可执行指令。

上传的图片在会话界面里仍显示为图片。指向视觉工具的改写只发生在模型输入层,不写入会话日志。

默认免费的视觉兜底

未配置自己的视觉模型时,工具链最后会落到内置的 OVHcloud 匿名视觉端点:免注册、免 Key。README 写明匿名限额是每 IP、每模型 2 次/分钟;当前质量优先链里有 5 个独立限额的模型,理论上分散请求大约 10 次/分钟,实际以 OVH 当时的限流为准。

用户在「设置 → 插件 → 插件配置 → 视觉路由(自动识图)」里配置的视觉后端会排在匿名兜底之前。链路按顺序尝试,全部失败才报错,并对地区限制、额度、429 限流、网络故障等做分类提示。超大图会在调用前压缩,默认像素预算 400 万。

聊天页右下角的模型选择器只选「脑子 / 会话模型」。视觉后端不要在那里选。

十一个像素级工具

默认 progressiveTools: false:插件启动后就会注册完整工具表,文本轮和图片轮都能直接调用。工具实现依赖 sharp / potrace / tesseract / 系统 Chrome,不依赖 Python。图片格式按文件魔数识别,没有 .png 扩展名的附件也能用。

当前 README 列出的工具如下:

工具 作用 产物
vision_describe 看图问答、多图对比;可输出结构化 JSON(摘要、布局区域、实体清单、原文转写)
vision_ground 按自然语言定位目标,返回原图像素框 x1/y1/x2/y2 可选标注 PNG
vision_detect 盘点某类元素(按钮、输入框、链接等),给出编号和像素框 编号标注 PNG
vision_crop 按像素框裁剪放大 PNG
vision_pixel_diff 逐像素对比:差异率 + 最差 8×8 网格区域 红色热力图 PNG + JSON
vision_colors 提取主色(十六进制和占比)
vision_ocr 文字转写:本地 tesseract(中英)优先,视觉模型兜底
vision_trace 用 potrace 做 SVG 矢量化,适合图标 / logo SVG
vision_extract_foreground 边界洪泛抠图,适合纯色背景 透明 PNG
vision_html_screenshot 给本地 HTML 截图(无头系统 Chrome);fullPage: true 可截整页 PNG
vision_long_screenshot_ocr 长截图分片转写,再拼成 Markdown 分片 PNG + Markdown + manifest

vision_html_screenshot 需要本机已安装 Chrome / Chromium / Edge;其余工具没有浏览器也能跑。本地没有 tesseract 时,vision_ocr 会退回视觉模型。

仓库 README 用像素闭环说明「可验证」:参照图 → 截图 → vision_pixel_diff → 修复 → 再对比。文档里的演示结果是最终差异 2.54%(32,939 / 1,296,000 个差异像素,阈值 16/channel)。这是维护者给出的示例,不是第三方评测。

自动识图模型组

插件默认开启 autoWrapProviders:读取「设置 → 模型」里已启用的模型组,额外注册同名的「+ 自动识图」入口,例如:

opencode-go                 ← 原模型组,保持不变
opencode-go + 自动识图       ← 发图片时选这个

原模型组不会被改写。隐身模式(stealth)默认关闭,官方 deepseek-official 路由保持原样;发图走选择器里可见的自动识图包装。隐身模式是高级选项,开启后才会接管官方 DeepSeek 路由,普通安装不必先动它。

安装与启用

社区目录给出的安装命令如下,在 DeepSeek Harness 终端里运行即可:

dsh plugin add github:ysr666/dsh-vision-router

需要可复现安装时,按目录页说明固定 commit 哈希:

dsh plugin add github:ysr666/dsh-vision-router#<commit>

<commit> 换成仓库里实际的提交哈希。插件以当前 dsh 进程的权限运行,安装时可能执行代码;装之前应检查源码和许可证。

插件面向 Web profile。仓库 README 推荐的 npm / npx 写法更明确地指定了 profile:

npx @deepseek-ai/dsh plugin --profile web add dsh-vision-router

从 DeepSeek Harness 源码仓库用 pnpm 跑时,CLI 不一定在 PATH 里,改用:

cd deepseek-harness
pnpm dsh plugin --profile web add dsh-vision-router

宿主侧要求 Node ≥ 22。如果是把插件第一次装进已经长期运行的 Web 进程,需要让该进程重新加载一次,才能发现插件本体。加载完成之后,增删模型、修改自动识图包装范围会热更新,不必再为这些改动重启。

可选验证:

npx @deepseek-ai/dsh --profile web --dump-config | grep vision-router

装好后按仓库「快速开始」做两件事:

  1. 打开聊天页输入区右下角的模型选择器,选带「+ 自动识图」的模型组。仍停在原来的纯文本组时,DSH 会在插件处理图片之前提示当前模型不支持图片。这是入口没选对,不是视觉后端坏了。
  2. 直接粘贴或上传图片。默认工具表从会话开始就可用,智能体可以调用 vision_describevision_groundvision_crop 等继续看图。

典型用法

下面这些调用形式来自仓库 README,可以按自己的文件名改。

定位页面上的某个控件,再裁出那一块细看:

vision_ground image="ref.png" target="发送按钮"
vision_crop   image="ref.png" region="1067,841,1108,881"

对比设计稿和实现,并要结构化差异:

vision_describe paths=["ref.png","impl.png"] question="列出两图的差异" json=true
vision_pixel_diff original="ref.png" rebuilt="screenshot.png"

读截图文字、抽主色、把图标转成 SVG:

vision_ocr image="screenshot.png"
vision_colors image="ref.png" top=8
vision_trace image="icon.png" steps=4

给本地 HTML 截图,或把长聊天记录截图转成 Markdown:

vision_html_screenshot source="page.html" width=1200 height=720 fullPage=true
vision_long_screenshot_ocr image="chat-log.png" chunkHeight=1200 overlap=120

Web 配置入口在 设置 → 插件 → 插件配置 → 视觉路由(自动识图)。卡片顶部会提示:回到聊天页 → 右下角选「+ 自动识图」→ 发图。卡片里还可以测第一个视觉提供方的连通性和延迟。默认配置即可用;自备 Key、代理、隐身模式都属于进阶项。

匿名 OVH 额度不够时,README 在 2026 年 8 月快照里列了若干免费视觉渠道(智谱、阿里云百炼、Intern AI 等),可以写成 httpProviders 条目,Key 放环境变量或 ~/.dsh/.credentials.yaml。免费政策会变,接入前以各家控制台为准。

适用场景与注意事项

比较适合这些工作:

  • 对着设计稿或截图做 UI 还原,并用像素差异检查收敛情况
  • 在页面截图里定位按钮、输入框,再裁块细看
  • 读错误弹窗、终端截图、长聊天记录里的文字
  • 从图标 / logo 生成 SVG,或从纯色背景里抠前景

使用前注意下面几条,都来自目录页或仓库文档,不是额外发挥。

  1. 权限。插件以当前 dsh 进程权限运行。安装前检查 源码仓库 和 MIT 许可证;需要可复现安装时固定 commit。
  2. 运行环境。面向 Web profile,宿主 Node ≥ 22。HTML 截图才需要系统浏览器;OCR 的本地 tesseract 是可选项。
  3. 发图入口。必须选「+ 自动识图」模型组。原纯文本组不会被插件改写,停在原组发图会被运行时直接拒绝。
  4. 匿名额度。内置 OVH 兜底有每 IP、每模型 2 次/分钟的上限,只适合轻度试用。用量上来之后应换成自己的视觉后端。
  5. 图里的字不可信。描述、OCR 和自动挂载说明都会要求智能体不要执行图片里出现的指令。工具入参走沙箱感知的 ctx.fs;视觉上传只发送选中的图和问题。产物写在会话工作区下的 .dsh-vision-router/artifacts
  6. Oh-DSH Desktop。若使用 Oh-DSH Desktop,它走的是 ~/.ohdsh 下的 desktop profile,不会加载普通 ~/.dsh。需要把 DSH_HOME 指过去再装;README 还写明 Desktop ≤ 0.1.5 应使用本插件 v1.4.2 及以上,更早版本会在启动时报路由重复声明。

卸载可用:

npx @deepseek-ai/dsh plugin --profile web remove dsh-vision-router

如果曾经手动禁用过官方 DeepSeek 行,卸载后要在 profile 补丁里重新启用。

小结

纯文本 DSH 智能体要看图,关键不是再找一个会输出说明文字的模型,而是把原图像素留在视觉链路里,让 DeepSeek 继续当大脑、按工具一步步看。dsh-vision-router 把这条链路做成一条插件:默认免 Key 兜底,十一个像素级工具常驻,发图前切到「+ 自动识图」即可。

目录页:https://deepseek-harness-plugin.com/zh-CN/plugins/dsh-vision-router/

GitHub:https://github.com/ysr666/dsh-vision-router

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜