DeepSeek Harness (DSH) default models (such as deepseek-v4-flash) are text-only and cannot directly “understand” images. When you ask the model in a conversation to analyze image content, it typically fails because it lacks visual capabilities.

dsh-tool-see-image is a plugin tool designed for DSH. It acts as a middle layer: when a text model needs to process an image, the plugin sends the image file path to a configured vision model (default is Zhipu’s GLM-4V-Flash, which is free), and then returns the text description from that model back to the conversation session. This solves the problem that text models cannot directly process visual information.

Core Features

  • see_image tool: Accepts an image path and a question, and outputs a text description.
  • Vision-model agnostic: Supports any vision model compatible with the OpenAI /chat/completions interface (default GLM-4V-Flash, or switch to SiliconFlow, Qwen2.5-VL, etc.).
  • Sandbox-aware: Reads files through ctx.fs, respects DSH sandbox and observation policies, and does not access the local filesystem directly.
  • Paste-to-text (Bonus): Includes a patch script that allows you to paste an image directly into the chat box and automatically convert it into a text description.

Installation and Enablement

The plugin must be manually installed into your Web configuration file.

  1. Copy the plugin files: Copy the plugin directory into your Web configuration path, for example:
    $DSH_HOME/profiles/web/plugins/dsh-tool-see-image/
(`$DSH_HOME` is usually `~/.dsh`).
  1. Declare the dependency: Edit package.json in the Web configuration directory and add the dependency declaration:
    "dsh-tool-see-image": "file:plugins/dsh-tool-see-image"
Then run the installation command:
    pnpm install
  1. Configure the plugin: Edit $DSH_HOME/profiles/web/cordis.patch.yml and insert the configuration in an appropriate location:
    - insert:
        - id: tool-see-image
          name: 'dsh-tool-see-image'
          config:
            baseURL: https://open.bigmodel.cn/api/paas/v4
            apiKeyEnv: ZHIPU_API_KEY
            model: glm-4v-flash
  1. Set the API key: You need an API Key from Zhipu AI. Set the environment variable in your terminal (Windows example):
    setx ZHIPU_API_KEY "your-api-key-here"
After setting it, **restart the terminal**, and restart the `dsh web` process.
  1. Verify: In a new conversation session, the see_image tool should be available. Try the following instruction:
    Use see_image to look at path/to/your/image.png

Configuration Notes

Under the config node in cordis.patch.yml, you can adjust the following parameters:

Setting Default Description
baseURL https://open.bigmodel.cn/api/paas/v4 OpenAI-compatible endpoint URL; the plugin automatically appends /chat/completions
apiKeyEnv ZHIPU_API_KEY Environment variable name that stores the API key
model glm-4v-flash Vision model ID; Zhipu GLM-4V-Flash is free by default
maxTokens 1024 Maximum output token count. Note: glm-4v-flash has a limit of 1024; exceeding it will cause an error
timeoutMs 60000 Request timeout (milliseconds)
maxBytes 15728640 Maximum size for a single image (approximately 15MB)
prompt (Chinese description instruction) Default question prompt; the question parameter overrides this setting

If you need to use another provider (e.g., SiliconFlow), you only need to modify baseURL, apiKeyEnv, and model.

Typical Usage

You can invoke the tool directly in the conversation:

Use see_image to look at path/to/your/image.png

The plugin will read the image at that path, send it to the vision model, and insert the returned text description into the conversation flow.

Notes

  • Restart requirement: After modifying cordis.patch.yml or dependencies, you must restart dsh web for the changes to take effect.
  • Token limit: The default maxTokens is 1024. If you switch to a vision model that supports longer output, increase this value accordingly.
  • Permissions and sandbox: The plugin runs inside the DSH process and reads files via ctx.fs. This means the image path must be within the current sandbox observation scope and cannot bypass DSH’s security policies.

Ecosystem Background

This plugin is released under the MIT License and maintained by community developer gugu123a. It reflects the “everything is a plugin” philosophy in the DeepSeek Harness ecosystem, aiming to make the capability boundaries of base models more flexible through lightweight tool extensions.