用 dsh-image-search 给 DeepSeek Harness 补上多引擎以图搜图

前言

DeepSeek Harness(dsh)把能力拆成插件:视觉方向已经有 OCR、版面理解和 UI 还原,智能体看到一张图,可以读字、拆结构、还原界面。但另一类更常见的问题它还接不上——这张图从哪来、原作者是谁、网上有没有更高清或带出处的版本。

这类需求通常不叫「看懂图」,而叫反向图片搜索,也就是以图搜图。实际操作往往是:把同一张图的公网地址,依次贴进 Google Lens、百度识图、Yandex、TinEye;如果是插画或二次元,再补 SauceNAO、IQDB、Ascii2d。每个站点的上传入口、URL 参数都不一样,来回复制很烦,也很难让纯文本智能体一次做完。

dsh-image-search 把这件事收成一次工具调用:输入一张公网可访问的图片 URL,按引擎模板拼出对应的搜索链接。它并不代替各家搜图站去抓结果,而是把「一张图、多个引擎」的入口一次性配齐。本文按插件目录页、GitHub 仓库 README 与源码交叉核对后整理。

这是什么

dsh-image-search 是一款 DeepSeek Harness 的工具与能力插件,由 zimai233 维护,许可证为 MIT,主要语言是 JavaScript。目录页的定位是:多引擎以图搜图聚合插件——一张图,多个搜索引擎一起找。

仓库 README 写得更具体:把一张公网图片 URL,转成 Google Lens、百度识图、Yandex、TinEye、Bing 视觉搜索、搜狗识图、SauceNAO、IQDB、Ascii2d 的搜索链接。实现方式是纯 URL 构造,不发起任何实际抓取请求

需要先分清生态关系。DeepSeek Harness 是 DeepSeek AI 开源的 agent 运行时,核心设计是「一切皆插件」。你现在看到的插件目录是社区站点,用来收录和展示社区插件,与 DeepSeek / 幻方没有官方从属关系,不能当成官方应用商店。dsh-image-search 本身也是社区项目,GitHub 主题标了 deepseek-harnessdsh-plugin

截至 2026-08-18,GitHub 仓库 zimai233/dsh-image-search 星标为 0;目录页显示 2026-08-14 收录,最近推送日期同样是 2026-08-14。package.json 里的版本号是 0.1.0

它解决的不是「让模型看见图里有什么」,而是:已经有一张能被外网访问的图片地址时,怎样少开几个网页、少记几套搜图 URL。

核心功能

插件通过 @deepseek-ai/dsh-tools 注册三个工具。源码在 src/index.js,Cordis 补丁把插件挂成 id 为 image-search 的一层。

九个引擎,分成两组

源码里的 ENGINES 表一共 9 个引擎,按 group 分成「通用」和「插画/动漫」:

id 名称 分组 是否编码图片 URL
google Google Lens 通用
baidu 百度识图 通用
yandex Yandex 通用
tineye TinEye 通用
bing Bing 视觉搜索 通用
sogou 搜狗识图 通用
saucenao SauceNAO 插画/动漫
iqdb IQDB 插画/动漫
ascii2d Ascii2d 插画/动漫

目录页「更多介绍」里点名的是 Google Lens、百度、Yandex、TinEye、SauceNAO、IQDB、Ascii2d;Bing 和搜狗出现在仓库 README 与源码表中。写进文章的引擎列表以源码为准。

encode 为 true 时,图片 URL 会先做 encodeURIComponent 再填进模板,适合走 query string 的站点;为 false 时按原文插入。README 把后一种称为路径式参数,源码注释也这么写。实际模板里,Ascii2d 是路径替换(https://ascii2d.net/search/url/{IMAGE_URL}),SauceNAO 和 IQDB 仍是 query 参数,只是不做编码。未知的引擎 id 会被直接跳过,不会报错中断。

三个工具分别干什么

  1. image_search_urls:必填 imageUrl,可选 engines(逗号分隔的引擎 id)和 group通用插画/动漫)。返回 JSON 数组,每项是 { id, name, group, url }。适合后续脚本处理,或让智能体按需打开某几条链接。
  2. image_search_engines:无参数。返回按分组归类的全部引擎,含模板和 encode 标志,用来发现合法的引擎 id。
  3. image_search_best:必填 imageUrl,可选 engines。返回一段人类可读的 Markdown:一行总览,下面每个引擎一条可点击链接。源码里总览行会带上引擎数量,例如 across 9 engine(s)。注意这个工具没有 group 参数,分组过滤只在 image_search_urls 上。

它明确不做的事

README 和源码反复强调同一点:只拼 URL,不向搜图站发请求。因此:

  • 不会返回「相似度 87%、作者是谁、原图链接」这类检索结果,那些要打开各引擎自己的页面才能看到。
  • 不接收本地路径、粘贴附件或 base64,入参必须是公网图片 URL。搜图站要能自己拉取这张图,内网地址、需要登录的链接通常无效。
  • 运行时除了 Harness 的工具接口,不额外依赖搜图 SDK;package.jsondependencies 只有 @deepseek-ai/dsh-tools,peer 依赖是 @deepseek-ai/cordis。仓库称发布物就是运行时代码,纯 ESM,没有 prepare 脚本,git 安装时不必为构建脚本开 allowBuilds

安装与启用

插件目录页给出的安装命令如下,在 DeepSeek Harness 终端中运行:

dsh plugin add github:zimai233/dsh-image-search

目录页说明:dsh CLI 会从 GitHub 解析插件并安装到当前配置。DeepSeek Harness 官方 CLI 文档里,往某个 profile 装插件的常见写法是 dsh plugin --profile <profile> add ...。仓库 README 的示例是:

dsh plugin --profile myprofile add github:zimai233/dsh-image-search#<sha>

myprofile 换成你实际使用的 profile 名称(例如 web)。如需可复现安装,目录页要求固定 commit 哈希,格式为:

dsh plugin add github:zimai233/dsh-image-search#commit

截至 2026-08-18,仓库默认分支 master 上能核对到的提交是 95ac2b739f7464386cb28c2b758cbc9382befe5a(说明为 feat: initial dsh-image-search plugin for DeepSeek Harness)。固定安装可以写成:

dsh plugin add github:zimai233/dsh-image-search#95ac2b739f7464386cb28c2b758cbc9382befe5a

仓库 README 另外写了一条「from npm」的命令 dsh plugin --profile myprofile add dsh-image-search。本文没有在 npm 注册表上核到对应发布包,安装时请以目录页的 GitHub 源为准。

目录页和仓库都提醒:插件以当前 dsh 进程的权限运行,安装时可能执行代码。安装前应检查源代码仓库和许可证。

典型用法

仓库 README 给的用法是自然语言,让 agent 去调工具。例如:

帮我用这张图搜一下源头:https://example.com/img.png —— 先列出所有引擎的搜索链接

智能体会调用 image_search_urls,参数形如:

{
  "imageUrl": "https://example.com/img.png"
}

README 中的返回截取如下(真实链接会随你的图片 URL 变化):

[
  { "id": "google", "name": "Google Lens", "group": "通用", "url": "https://lens.google.com/uploadbyurl?url=https%3A%2F%2Fexample.com%2Fimg.png" },
  { "id": "saucenao", "name": "SauceNAO", "group": "插画/动漫", "url": "https://saucenao.com/search.php?url=https://example.com/img.png" }
]

可以同时限定引擎和分组:

{
  "imageUrl": "https://example.com/img.png",
  "engines": "google,saucenao",
  "group": "插画/动漫"
}

按源码过滤逻辑:先按 group 筛,再按 engines 白名单筛。上面这条里 google 属于「通用」,会被分组条件去掉,最终多半只留下 SauceNAO。只想要插画站时,用 group 即可;只想要某几个引擎时,用 engines 更直接,不必叠两个条件。

想先看有哪些 id,调用无参数的 image_search_engines。想直接得到可点击列表,把同一张 imageUrl 交给 image_search_best

源码里 Google Lens 的模板是 https://lens.google.com/uploadbyurl?url={IMAGE_URL},百度识图是 https://graph.baidu.com/upload?image={IMAGE_URL}。这些地址以仓库当前源码为准,各站点若改入口,插件也需要跟着改模板。

适用场景与注意事项

比较适合这些情况:

  • 已经有一张公网图片 URL,需要同时走国内识图和国际 Lens / Yandex / TinEye。
  • 插画、同人、角色图要查出处,希望一次拿到 SauceNAO、IQDB、Ascii2d 的入口。
  • 智能体流程里需要「生成搜图链接」这一步,后续由人或浏览器打开,而不是在插件里解析检索页。

它补的是目录页说的那块空白:视觉插件里已有 OCR 和 UI 还原,但没有把多家反向搜图入口聚在一次调用里。同分类下目录还列出了 modlens、agent-vision-toolkit、dsh-vision-router 等视觉插件,做的是看图、OCR、像素级工具,和本插件不是同一件事,可以按任务搭配,不必互相替代。

使用时注意:

  1. 能力边界是拼链接,不是搜图结果。 打开链接之后,各站点自己的登录墙、地区限制、接口变更,插件都管不到。
  2. 图片必须能被搜图站拉取。 本地文件要先放到公网或图床,再把 URL 传进来。
  3. 过滤参数不要想当然叠加。 image_search_urlsgroupengines 是「同时满足」;image_search_best 只支持 engines
  4. 安装即授权运行。 插件以当前 dsh 进程权限执行,安装前阅读 源码 和 MIT 许可证;生产环境建议固定上面的 commit,而不是追踪分支最新提交。
  5. 版本仍早。 仓库目前是初始提交,接口和引擎模板都可能再改,以当时 checkout 的 README 和 src/index.js 为准。

小结

dsh-image-search 做的事情很窄:给 DeepSeek Harness 的智能体一张公网图片地址,换回最多九家以图搜图入口。不抓结果、不看图、不走本地文件,所以依赖面小,也谈不上替代 OCR 或视觉问答。

如果你已经在用 dsh,又经常要把同一张图丢给多家识图站,可以先看目录页和仓库,确认源码后再装。

  • 插件目录:https://deepseek-harness-plugin.com/zh-CN/plugins/dsh-image-search/
  • GitHub:https://github.com/zimai233/dsh-image-search
  • DeepSeek Harness:https://github.com/deepseek-ai/deepseek-harness
羽毛球分组比赛记分
小程序二维码

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

小夜