Preface

DeepSeek Harness (dsh) splits its capabilities into plugins: for the visual direction, there are already OCR, layout analysis, and UI restoration features. When an agent looks at an image, it can read text, parse structures, and restore the interface. However, it fails to address another common type of problem: where this image comes from, who the original author is, and whether there are higher-resolution versions or properly sourced copies available online.

This kind of requirement is usually not called “understanding the image”, but reverse image search. In actual operation, people often copy the public URL of the same image and paste it into Google Lens, Baidu Image Search, Yandex, and TinEye in turn; if it is an illustration or anime-style work, they will additionally use SauceNAO, IQDB, and Ascii2d. The upload portals and URL parameters of each site are different, and copying back and forth is tedious, and it is difficult for a pure-text agent to complete this process in one go.

dsh-image-search wraps this task into a single tool call: input a publicly accessible image URL, and construct the corresponding search links according to the engine templates. It does not replace the various image search sites to crawl results, but instead compiles all the entry points for “one image, multiple engines” at once. This article is organized after cross-checking the plugin directory page, GitHub repository README, and source code.

What is this

dsh-image-search is a tool and capability plugin for DeepSeek Harness, maintained by zimai233, licensed under MIT, and mainly written in JavaScript. Its positioning on the plugin directory page is: a multi-engine reverse image search aggregation plugin —— use one image to search across multiple search engines.

The repository README explains it more specifically: convert a public image URL into search links for Google Lens, Baidu Image Search, Yandex, TinEye, Bing Visual Search, Sogou Image Search, SauceNAO, IQDB, and Ascii2d. The implementation is purely URL construction, without sending any actual crawling requests.

It is necessary to clarify the ecological relationship first. DeepSeek Harness is an open-source agent runtime developed by DeepSeek AI, whose core design is “everything is a plugin”. The plugin directory you are currently viewing is a community site for collecting and showcasing community plugins, which has no official affiliation with DeepSeek / Magic Square, and should not be regarded as an official app store. dsh-image-search itself is also a community project, with the GitHub topics deepseek-harness and dsh-plugin tagged.

As of 2026-08-18, the GitHub repository zimai233/dsh-image-search has 0 stars; the directory page shows it was added on 2026-08-14, and the latest push date is also 2026-08-14. The version number in package.json is 0.1.0.

It does not solve the problem of “letting the model see what is in the image”, but rather: when you already have a publicly accessible image address, how to avoid opening multiple web pages and remembering multiple sets of image search URLs.

Core Features

The plugin registers three tools through @deepseek-ai/dsh-tools. The source code is in src/index.js, and the Cordis patch mounts the plugin as an entry with the id image-search.

Nine engines, divided into two groups

The ENGINES table in the source code contains a total of 9 engines, divided into “General Purpose” and “Illustration/Anime” by group:

id Name Group Whether to encode the image URL
google Google Lens General Yes
baidu Baidu Image Search General Yes
yandex Yandex General Yes
tineye TinEye General Yes
bing Bing Visual Search General Yes
sogou Sogou Image Search General Yes
saucenao SauceNAO Illustration/Anime No
iqdb IQDB Illustration/Anime No
ascii2d Ascii2d Illustration/Anime No

The “More Introduction” section on the directory page lists Google Lens, Baidu, Yandex, TinEye, SauceNAO, IQDB, and Ascii2d; Bing and Sogou appear in the repository README and source code table. The engine list in this article is subject to the source code.

When encode is true, the image URL will first be processed with encodeURIComponent before being inserted into the template, which is suitable for sites that use query strings; when false, the original URL is inserted directly. The README calls the latter path-style parameters, which is also noted in the source code comments. In the actual templates, Ascii2d uses path replacement (https://ascii2d.net/search/url/{IMAGE_URL}), while SauceNAO and IQDB still use query parameters without encoding. Unknown engine ids will be skipped directly without causing an error to interrupt execution.

What the three tools do respectively

  1. image_search_urls: Requires imageUrl as a mandatory parameter, with optional engines (comma-separated engine ids) and group (General or Illustration/Anime). Returns a JSON array, each item being { id, name, group, url }. Suitable for subsequent script processing, or letting the agent open specific links as needed.
  2. image_search_engines: No parameters. Returns all engines grouped by category, including templates and the encode flag, used to discover valid engine ids.
  3. image_search_best: Requires imageUrl as a mandatory parameter, with optional engines. Returns a human-readable Markdown string: one line of overview, followed by one clickable link per engine. The overview line in the source code will include the number of engines, for example across 9 engine(s). Note that this tool does not have a group parameter; grouping filtering is only available for image_search_urls.

What it explicitly does NOT do

The README and source code repeatedly emphasize the same point: only constructs URLs, does not send requests to image search sites. Therefore:
- It will not return search results such as “87% similarity, author information, original image link” —— these require opening the respective pages of each search engine to view.
- It does not accept local file paths, pasted attachments, or base64-encoded images. The input parameter must be a public network image URL. The image search sites must be able to pull the image on their own; intranet addresses or links that require login are usually invalid.
- Except for the tool interface of Harness, it does not rely on additional image search SDKs; the dependencies in package.json only include @deepseek-ai/dsh-tools, and the peer dependency is @deepseek-ai/cordis. The repository states that the release package is runtime code, pure ESM, without a prepare script, so there is no need to enable allowBuilds for build scripts when installing via git.

Installation and Activation

The installation command given on the plugin directory page is as follows, run in the DeepSeek Harness terminal:

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

The directory page explains that the dsh CLI will parse the plugin from GitHub and install it to the current configuration. According to the official DeepSeek Harness CLI documentation, the common way to install a plugin to a specific profile is dsh plugin --profile <profile> add .... The example in the repository README is:

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

Replace myprofile with the actual profile name you are using (for example web). For reproducible installations, the directory page requires fixing the commit hash, in the format:

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

As of 2026-08-18, the commit that can be verified on the repository’s default branch master is 95ac2b739f7464386cb28c2b758cbc9382befe5a (commit message: feat: initial dsh-image-search plugin for DeepSeek Harness). The fixed installation command can be written as:

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

The repository README also includes an “from npm” command dsh plugin --profile myprofile add dsh-image-search. This article has not verified a corresponding published package on the npm registry, so please use the GitHub source as specified on the directory page when installing.

Both the directory page and the repository remind: the plugin runs with the permissions of the current dsh process, and may execute code during installation. You should check the source code repository and license before installing.

Typical Usage

The usage given in the repository README is natural language, allowing the agent to call the tools. For example:

Help me search for the source of this image: https://example.com/img.png —— first list the search links for all engines

The agent will call image_search_urls with parameters like:

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

A truncated sample return from the README (the actual links will vary depending on your image URL) is as follows:

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

You can also limit the engines and groups at the same time:

{
  "imageUrl": "https://example.com/img.png",
  "engines": "google,saucenao",
  "group": "Illustration/Anime"
}

According to the filtering logic in the source code: first filter by group, then filter by the engines whitelist. In the example above, google belongs to the “General” group and will be removed by the grouping condition, so only SauceNAO will usually remain. If you only want illustration sites, use the group parameter; if you only want specific engines, using the engines parameter is more straightforward without combining both conditions.

To check the available engine ids first, call the parameterless image_search_engines. To get a clickable list directly, pass the same imageUrl to image_search_best.

The template for Google Lens in the source code is https://lens.google.com/uploadbyurl?url={IMAGE_URL}, and Baidu Image Search is https://graph.baidu.com/upload?image={IMAGE_URL}. These addresses are subject to the current source code in the repository; if the sites change their entry points, the plugin will need to update its templates accordingly.

Applicable Scenarios and Notes

It is suitable for these situations:
- You already have a publicly accessible image URL and need to perform both domestic image searches and international searches via Lens / Yandex / TinEye.
- You want to check the source of illustrations, fan arts, or character images, and hope to get the entry points for SauceNAO, IQDB, and Ascii2d at once.
- You need the “generate image search links” step in an agent workflow, which will then be opened by a human or a browser, instead of parsing the search results within the plugin.

It fills the gap mentioned on the directory page: the visual plugins already have OCR and UI restoration features, but there is no aggregation of multiple reverse image search entry points in a single call. The directory also lists other visual plugins such as modlens, agent-vision-toolkit, and dsh-vision-router, which focus on image understanding, OCR, and pixel-level tools, and are not the same as this plugin —— they can be used together according to tasks, rather than replacing each other.

Please note when using:
1. The capability boundary is URL construction, not search results. After opening the links, issues such as login walls, regional restrictions, and interface changes of each site are beyond the control of the plugin.
2. The image must be accessible to the search sites. Local files need to be uploaded to a public image hosting service first, and then the URL should be passed in.
3. Do not arbitrarily combine filtering parameters. The group and engines parameters of image_search_urls require simultaneous satisfaction; image_search_best only supports the engines parameter.
4. Installing the plugin means granting execution authorization. The plugin runs with the permissions of the current dsh process. Please read the source code and the MIT license before installing; for production environments, it is recommended to fix the above commit instead of tracking the latest branch commits.
5. The version is still early. The repository is currently at its initial commit, and the interfaces and engine templates may change later, so please refer to the README and src/index.js of the checked-out commit at that time.

Summary

dsh-image-search does a very narrow thing: given a public image address for DeepSeek Harness agents, it returns up to nine reverse image search entry points. It does not crawl results, understand images, or handle local files, so it has few dependencies, and cannot replace OCR or visual question answering features.

If you are already using dsh and often need to submit the same image to multiple image search sites, you can first check the directory page and the repository, confirm the source code, and then install it.

  • Plugin Directory: 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