dsh-vision-toolkit

613Star30Fork5Issue2Watching

为 DSH 中的纯文本模型装上眼睛:粘贴图片即可问答、定位元素、长图 OCR、UI 还原与像素对比。

语言
TypeScript
License
MIT
分支
main
agent-skillsagent-vision-toolkitcomputer-visiondeepseekdeepseek-harnessdshdsh-plugingui-automation

安装

$ dsh plugin --profile web add github:Anionex/dsh-vision-toolkit

在终端中运行以上命令,通过 dsh CLI 安装此插件。可在右上角切换 Profile。 第一次用 dsh?看这篇新手教程

一句话定位

为 DeepSeek Harness 中只能看文字的纯文本模型补上眼睛,让它们能直接看懂粘贴的截图并回答关于图像内容的问题。在此基础上还提供元素定位、长图 OCR、像素对比、UI 还原等本地视觉处理能力。

核心能力

  • 粘贴即用:把截图粘到 DSH Web,文本模型自动切到 (Vision Toolkit) 变体并理解画面,回答、OCR、多图比较都可用
  • 视觉定位:按名称找出图中的特定元素(如"登录按钮"),返回原图像素坐标并可生成带框预览图
  • 元素清点:按类别(图标、按钮等)枚举图中所有元素,返回编号清单和坐标
  • 长截图 OCR:自动把很长的截图切成多块并合并成 Markdown,支持断点续传和拆分预览
  • 像素级对比:拿参考图与实现图对比,输出差异比例、最差区域、热力图和 JSON 报告
  • 本地图像处理:在不联网的情况下完成裁剪、SVG 描摹、前景抠图、主色提取和本地 HTML 截图

技术实现

  • 语言: TypeScript(同时打包出 React 客户端与 Node 后端)
  • 关键依赖: @deepseek-ai/cordis(DSH 插件运行时)、@deepseek-ai/dsh-tools(原生 Tool 注册)、@deepseek-ai/dsh-skill(Skill 注入)、saxes(SVG 解析)
  • 架构模式: 通过 cordis.patch.ymlvision-toolkit 身份挂入 DSH Profile 层;启动后注册一个 vision-tools Skill 与 10 个原生 Tool;Tool 调用通过 DSH Subprocess 在打包好的 agent-vision-toolkit Python 快照中执行,运行在隔离的 Python 虚拟环境($DSH_HOME/cache/dsh-vision-toolkit
  • 入口文件: src/index.ts(服务端 apply 钩子),前端扩展由 src/client/index.tsx 注册到 Web Profile

适用场景

在 DSH 里用 DeepSeek 等纯文本模型做 UI 还原、截图排障、视觉回归测试、长截图转写时最有用。当你需要把"截图"变成"模型可以读取的证据",或想从截图里抠图标、提取品牌主色、做局部裁剪时,本插件可以避免反复切换工具链。

前置依赖与兼容性

依赖最低版本说明
DeepSeek Harness>= 0.1.0-rc.6在 peerDependencies 中以 @deepseek-ai/dsh-* 系列形式声明
Node.js^22.19.0 || >=24.0.0来自 package.json engines 字段
Python3.11+managed 模式下插件自动准备隔离 venv;Windows 启动器请用 py 而非 py -3
Chrome / Chromium / Edge最新版vision_html_screenshot 工具需要,其他工具不受影响
操作系统macOS / Windows / Linux跨平台;Windows 下 /tmp/... 路径会被自动重写为 TEMP/TMP 目录
原生模块唯一外部运行时是隔离的 Python 子进程,不需要本机预装

安装方式

dsh plugin --profile web add github:Anionex/dsh-vision-toolkit

配置项

配置类型说明默认值
provider.baseUrl字符串视觉模型服务的 API 地址https://vision.anionex.me/v1(内置免费服务)
provider.credential字符串DSH 中保存 API Key 的凭证名,运行时按引用解析密钥ANIONEX_FREE_VISION(内置共享密钥)
provider.model字符串视觉模型名称gemini-3.7-flash
provider.protocolopenai / anthropic调用协议openai
provider.anthropicThinkingomit / disabled / adaptiveAnthropic 思考字段策略;omit 表示不动模型默认omit
provider.userAgent字符串调用视觉服务和连通性测试时使用的 User-AgentChrome 126 桌面 UA
languagezh / en视觉模型输出文字的语言zh
timeoutMs整数(1000-600000)单次远程调用的最大等待毫秒15000
maxImageBytes整数(1024-268435456)输入图片的字节上限;超出会自动无损/有损压缩4194304(4 MiB)
maxImagePixels整数(1-268435456)输入图片的解码像素上限;超出自动降采样20000000
concurrency整数(1-16)单会话内并发视觉工具调用上限4
runtime.modemanaged / externalmanaged 用打包快照和隔离 venv;external 用自备的 agent-vision-toolkit 快照managed
runtime.python字符串引导或刷新隔离环境所用的 Python 解释器;需要 3.11+自动探测
runtime.agentVisionToolkitPath字符串external 模式下指向精确的 agent-vision-toolkit 快照路径未设置(managed 模式下不允许)
allowedDirs字符串数组工作区之外的额外可读取输入根目录[]
imageInputVariants.enabled布尔是否为宿主声明的纯文本模型生成图片输入变体路由true
imageInputVariants.providers字符串数组仅对这些 provider id 注入变体;空表示全部[]
imageInputVariants.autoSwitch布尔粘贴图片时是否自动把会话切到对应 (Vision Toolkit) 变体true

常见问题

Q: 安装后还需要自己申请视觉模型的 API Key 吗?

A: 默认不需要。插件内置免费的 Gemini 3.7 Flash 视觉服务(vision.anionex.me),开箱即可粘贴图片提问;如果需要更高额度或私有端点,可在 Settings → 视觉工具 中替换为自备的 OpenAI/Anthropic 兼容服务。

Q: 在 Web 里粘贴图片,模型还是提示不支持图像输入怎么办?

A: 通常是因为页面缓存或 Profile 没有切到带 (Vision Toolkit) 后缀的变体。重启 Web Profile 并刷新页面,确认当前模型已切换到 (Vision Toolkit) 变体;也可以把图片放进会话工作区,再通过 /vision-tools Skill 触发。

Q: 免费视觉服务返回 429 该如何处理?

A: 这是共享容量临时耗尽。按错误响应里的 Retry-After 秒数等待后重试即可;如果经常触发,建议在 Settings 中替换为自备端点(Groq、自建 OpenAI 兼容网关均可)。

Q: 报错说图片过大或像素超限,如何处理?

A: 错误会明确指出是字节限制(默认 4 MiB)还是像素限制(默认 2000 万)。先用 vision_crop 或外部工具裁剪/缩放图片后再调用视觉工具。

Q: vision_html_screenshot 找不到 Chrome 怎么办?

A: 安装 Chrome、Chromium 或 Edge 任一浏览器即可。只有 HTML 截图这一个工具受影响,其他 9 个视觉工具仍可正常使用。

Q: 是否支持视频、音频或摄像头输入?

A: 当前版本不支持。本插件只处理静态图片(PNG/JPEG/GIF/WebP)和本地 HTML 截图,不会自动点击 GUI,也不做视频流、音频或摄像头采集。

Q: 插件的运行数据存放在哪里?

A: 粘贴的图片存到会话工作区下的 .dsh-vision-toolkit/ 目录;插件隔离的 Python 虚拟环境与运行时缓存放在 $DSH_HOME/cache/dsh-vision-toolkit(DSH_HOME 未设置时回退到 ~/.dsh/cache/dsh-vision-toolkit)。

Q: 如何卸载或临时禁用这个插件?

A: 卸载命令为 dsh plugin --profile web remove @anionex/dsh-vision-toolkit;如需临时关闭,可在 Profile patch 中设置 disabled: true,重启 Profile 即可生效。

上手难度

进阶 — 安装命令即用,但要让 Python 隔离环境、可选 Chrome、API Key 凭据都能按预期工作,需要理解 DSH Profile patch、Credential 引用与 Settings 的关系。普通用户按默认配置粘贴图片就能体验核心能力,无需编程。

已知问题与限制

  • 不支持视频、音频或摄像头输入,也不会自动点击 GUI(README.zh.md:393-395)
  • 交互式标注编辑、远程服务集群、模型投票、跨会话视觉缓存不在当前范围(README.zh.md:394)
  • vision_html_screenshot 必须依赖 Chrome/Chromium/Edge 中的一个;缺失时仅该工具不可用
  • 自动 Python 探测失败时需要手动指定 runtime.python;Windows 启动器请填 py,不要填 py -3
  • 共享免费视觉服务有容量上限,繁忙时段会返回 429,按 Retry-After 重试即可
  • 单次请求最多 5 张图片、单张最大 4 MiB、单张最多 2000 万像素、单次输出最多 4096 tokens(来自 README 配置章节)