Vision Toolkit 给纯文本的 DeepSeek Harness agent 配上一套「视觉仪器」。README 的承诺刻意写得很窄:模型不去生成一段泛泛的描述,而是围绕当前任务抽取证据——错误出在哪里、按钮在哪里、那串很长的聊天记录究竟说了什么。它自带十个工具和一个 vision-skills Skill,并把两者接进 DSH 的 Profile、会话、设置与 Artifacts。
这是什么
npm 包名是 @anionex/dsh-vision-toolkit,版本 0.1.44,MIT 许可,仓库为 github.com/Anionex/dsh-vision-toolkit,主页 agent-vision.anionex.me。它是另一个上游项目 Anionex/agent-vision-toolkit 的 DeepSeek Harness 原生集成;插件内置的是上游的一份固定快照,而不是要求你去 clone 源码。
装之前有三处声明值得先读。dsh.bundle.patch 指向 ./cordis.patch.yml,也就是说这个包通过自己的组合补丁挂载进 profile;dsh.client.platform 为 web,并注入了九个客户端模块,这意味着设置面板与 Web UI 行为只存在于浏览器客户端;dsh.compatibility.profiles 列出的是 web 与 headless,而 README 另外记录了一条 DSH Desktop 的 desktop 安装路径。
装进来的东西也不只是 JavaScript。包的 files 字段包含 lib、src、runtime、vendor、patches、assets、docs、examples:vendor 放上游快照,runtime 放下面会讲到的 Python 工具链。所以它不是一个薄薄的桥。
十个工具,按真名列出
README 说明插件提供 10 个工具,可以独立调用,也可以串成工作流:
vision_glance:聚焦回答、描述、OCR 或多图对比,也就是「这张图里发生了什么」。vision_ground:对描述的目标返回原图像素坐标,可选带框预览。vision_detect:对同一类元素(按钮、图标、输入框)给出带坐标的编号清单。vision_crop:把某个区域单独裁成 PNG 或 JPEG。vision_trace:把形状转成可编辑的 SVG。vision_pixel_diff:把实现与参考图对比,返回差异百分比、排序后的差异区域、热力图与 JSON。vision_long_screenshot_ocr:读完整张长截图,输出 Markdown、切片、manifest 与审计产物。vision_extract_foreground:抠出主体、去掉背景,得到透明 PNG。vision_dominant_colors:给出某个区域的主色板或候选色排序。vision_html_screenshot:以精确视口渲染本地页面,或用fullPage=true截取整份文档并以 CSS 像素回报pageHeight。
坐标统一使用原图像素、x1,y1,x2,y2 形式,这正是 ground 的结果能直接喂给裁剪、描摹或后续自动化的原因。
README 还记录了一个随包分发的 Skill:vision-skills,被描述为上游 vision-tools Skill 的 DSH 适配版本,包含它的 SKILL.md 与五份 playbook,分别覆盖长截图 OCR、UI 还原、图形还原(PNG 或 SVG)、结构还原(Mermaid、Graphviz 之类)以及从截图操作 GUI。适配版本把上游 Skill 的确切 commit、源文件哈希和自己的补丁记录在 assets/skill/UPSTREAM.json 与 patches/vision-tools-dsh.patch 里。README 说得很明确:这个 Skill 是被调用的,不是自动生效的——快速开始的第三步就是粘贴图片「然后调用 /vision-skills」。
视觉能力从哪来,以及你的图会离开本机吗
这一节请先读,因为插件自己不附带任何视觉模型。 每一次图像理解调用都发往你配置的服务商,用你自己的账号与凭证。
README 要求你在设置 → Vision Toolkit里配置视觉服务商,并把 API key 存为 DSH Credential;它同时写明「Settings 只保存 Credential 引用,从不把已保存的密钥读回浏览器」。协议支持范围也写得很直白:「OpenAI Chat Completions-compatible endpoints and Anthropic Messages are supported.」由于端点由你决定,谁能看到这张图也由你决定——聚合网关、官方 API,或本地服务都可以。排错表里点名了本地 OpenAI 兼容服务(LM Studio、Ollama),并解释它们必须填带 /v1 的 base URL。FAQ 更进一步,说本地部署的小型多模态副模型「can provide the vision capability」。但源码没有说默认就是本地:一旦你配置的是云端服务商,图像连同你对它的提问都会被发送出本机,交给该服务商。
留在本机的是什么:README 把确定性的图像处理——裁剪、SVG 描摹、像素运算——描述为本地运行,并说明视觉能力来自随包固定的 agent-vision-toolkit 快照。这套本地工作由一个插件自带的 Python 运行时执行,README 还声明「the runtime never fetches upstream main in the background」。这句话说的是不会在后台拉取上游代码,它并不等于「图像数据不出本机」。
源码还写了两处与凭证相关的细节:自签名证书或 MITM 代理端点,做法是把 DSH 进程启动时的 VISION_SSL_VERIFY 设为假值——0、false、off、no、none 或 disabled,不区分大小写——插件会把这个值透传给隔离的 Python 运行时;取其他任何值时证书校验保持开启;自定义 Credential 的名字必须与服务商配置一致,否则调用失败。
运行要求
- Node:
package.json声明engines.node为^22.19.0 || >=24.0.0。package.json里没有任何操作系统限制。 - Harness 下限:包声明
dsh.compatibility.dsh为>=0.1.0-rc.8 <0.2.0,并逐条列出从0.1.0-rc.8到0.1.5-rc.1的兼容版本——其中0.1.3-alpha.1被标为unknown而非 compatible。本条目将该声明逐字记为dshTarget。 - Profile:声明支持
web与headless。README 另记录了 DSH Desktop 的desktopprofile 安装路径,并提醒 DSH Desktop 2.0.1 内置插件市场存在已知安装问题,目前终端命令才是可靠路径。 - Python:插件优先使用系统的 Python 3.11+;找不到时会在首次使用时从国内镜像下载一份带哈希校验的独立 Python(约 35 MB),镜像不可达则回退到 GitHub release,并优先从腾讯云 PyPI 镜像安装锁定依赖(Pillow、NumPy、vtracer),失败再回退官方 PyPI。正常安装不需要
agent-vision-toolkit的源码检出,也不需要设置本地路径。 - 浏览器二进制:HTML 截图渲染需要 Chrome、Chromium 或 Edge;README 明确说没有 Chrome 时「Only HTML screenshot rendering is unavailable; the other tools still work」。
- 一个可用的视觉模型端点:不自带。这是最常被忽略的一项要求。
它需要 Harness 里有视觉模型吗
它需要一个具备视觉能力的端点,而不需要一个具备视觉能力的 Harness 模型。这个插件就是为 DSH 明确判定为纯文本的路由设计的:对这类路由,它会注册一个同名的 <model> (Vision Toolkit) 变体,默认情况下在 DSH Web 粘贴图片就会切到该变体。README 的近期更新又往前走了一步——自 2026-08-19 起,「image input (paste, history, read_image) works without manually switching」,并且可以关闭高级设置里的「Transparent variant routing」来恢复显式变体条目。
所以预期组合是:纯文本的 Harness 模型 + 已配置的视觉服务商。不被支持的是完全不配服务商:设置面板提供了连通性测试,README 还记录了一处具体修正——之所以加入完整的图像请求测试,是因为「a successful /models request to a model that still cannot process images」会制造虚假的信心。这里有一处诚实的空白:源码没有描述当 Harness 路由本身就已经原生支持图像时的行为,因此不要假设在那情况下插件是必需的或完全无作用的。
已知限制
- 存在图像大小与像素上限。README 的建议是先裁剪或缩放,并说明报错会指出是字节数还是解码后的像素数触发了拒绝。
- 限流是真实存在的。排错表里有「视觉服务返回
429」一条,建议等待Retry-After间隔,或者「switch to your own endpoint when you need stable higher volume」。一条更新记录说扩充了服务容量,以「reduce peak-time429responses」——它并没有说 429 已被消除,也没有公布任何配额数字。 - 存储上的平台差异:配置的绝对共享保存根目录「currently rejected on Windows because their ownership and access-control lists cannot yet be verified safely」。
- 功能缺失是可控的,不是静默的:没有浏览器只损失
vision_html_screenshot;缺少自定义 Credential 则是一次硬失败。 - 没有任何准确率基准。源码给了比较性说法——焦点提示能带来「fewer tokens, higher accuracy, and faster responses」——也给了快速 UI 还原的速度目标(首张截图「about three minutes」)。但它没有发布任何工具的实际测量准确率。README 里确实带有热度与评分徽章——第三方推荐、dshfind 94 分、Trendshift 徽章——以及一句自称「生态内首个综合性视觉工具插件」的宣传语。这些是链接与自我描述,而不是证据,来源中也没有任何东西能证明它们属于独立验证。
- 成本只是断言,没有明细。README 的 FAQ 说增量成本很小,因为每次检查只发送必要的意图与图像,且上下文不跨调用累积;该说法没有附带任何数字。
- Skill 需要手动调用:
/vision-skills。
什么时候用它,什么时候不要用
当任务确实是视觉性且多步骤时用它:不丢字地读完一张长截图、把设计稿或白板草图变成可编辑代码、按描述定位控件,或者用像素 diff 而不是目测来收敛一轮 UI 还原。README 自述的目标用户正是这些场景,并且明确指出第二类用户是想要「more than image Q&A」的人。
不要指望它是一个自带眼睛的独立机器。如果你不打算用自己的账号和 key 配置视觉服务商,这些工具没有任何东西可调用——这是关于这个插件最常见的错误假设。也不要为了「离线」或「默认隐私」而装它:源码从未这样承诺,而配置云端服务商就意味着你的图像会离开本机。如果你只是要一次性描述一张图,这里的一套机器——Python 运行时、带五份 playbook 的 Skill、十个工具——比任务本身要重。
与同为 DSH 视觉插件的 vision-router 相比,两者的差别在形态而非目标。Vision Toolkit 的 README 把自己呈现为工具箱:十个具名工具,加上一份上游 Skill 的适配版,在视觉任务需要时被显式调用。Vision Router 的 README 则把自己描述为路由桥:把一次图像对话直接交给视觉模型,自带十四个深度工具、整轮自动路由,以及一条内置的免密钥兜底链。两份 README 追溯到同一条上游血缘——Vision Router 的设计谱系一节把 Anionex/agent-vision-toolkit 与本插件列为其影响来源之一。读者能从两份文档中提炼出的实际分野是:本插件是「工具箱优先、自备服务商」的选项,另一个是「路由优先、声称开箱有免费链路」的选项。关于任一项目的判断,都应当回到它自己的仓库核查,而不是依赖另一方的描述。
信任相关说明
- 凭证:以 DSH Credential 形式保存;Settings 只保留引用,不把密钥读回浏览器。README 没有说明这些凭证落在磁盘上的哪个存储里——它把这件事交给 DSH 的 Credential 机制,本条目也只能说到这里。
- 遥测与数据保留:本条目的依据只有插件的 README 与
package.json。两者都没有说明插件是否发送遥测,也都没有给出数据保留政策。这里的不对称值得注意:本地产物留在你的工作区,而配置的云端视觉服务商保留了什么,由该服务商的条款决定,README 并未讨论这一点。 - 自主性:插件不会在后台拉取上游
main;视觉能力来自随包固定的快照。安装、更新与 Skill 调用都由用户发起。 - 存储历史:当配置的保存目录发生变化时,此前已验证的根目录会被保留为只读输入位置,并把这段历史记在插件自有的
vision_toolkit_storage侧车里,使之前粘贴过的图片路径在 Profile 重启后仍然可用。
FAQ
它能在纯文本的 DeepSeek 模型上工作吗?
可以,这正是它的用途。对 DSH 判定为纯文本的路由,它会注册一个同名的 <model> (Vision Toolkit) 变体,默认情况下粘贴图片就会切过去。但你仍然需要配置一个视觉服务商:插件提供的是工具与工作流,不是「看见」本身。
我的图片会被发给第三方吗?
会发给你所配置的那个视觉服务商,连同你对图片的提问。README 支持 OpenAI Chat Completions 兼容端点与 Anthropic Messages,也可以把它指向本地服务——但按文档所写,这个插件没有离线模式,也没有声称默认只在本地。源码中没有任何一句话承诺你的图片留在本机。
需要 API key 或账号吗?
使用云端服务商就需要:你在设置里配置服务商,并把 API key 存为 DSH Credential。插件不自带模型,也不自带 key。FAQ 提出的替代方案是本地部署的多模态模型,那条路不需要服务商账号。
用之前需要先装什么?
Node ^22.19.0 || >=24.0.0、一个兼容版本上的 DSH web 或 headless profile,以及系统的 Python 3.11+,或者接受首次运行时下载约 35 MB 的独立 Python。Chrome、Chromium 或 Edge 只在 HTML 截图渲染时才需要。
它和 dsh-vision-router 有什么区别?
两者都是给纯文本 agent 提供视觉,区别在实现路线。本插件是工具箱优先:十个具名工具加一个随包的 vision-skills Skill,显式调用,对接你自己配置的服务商。Vision Router 自述为路由优先,有自己的工具集、整轮包装路由和内置的免密钥免费兜底链。它们是两个独立项目,Vision Router 把本插件的上游列为其设计影响来源之一。
