English · 简体中文
Give a text-only agent the ability to "see" local images — from any OpenAI-compatible vision model.
easy-vision is a DeepSeek Harness tool plugin that registers a model-facing describe_image tool. When the model needs to look at a screenshot, photo, chart, UI mockup, or any local image, it calls this tool with the file path. The plugin:
- Auto-detects the real format — reads magic bytes (PNG / JPEG / GIF / WebP), tolerating wrong file extensions
- Sends the image as a base64 data URI to your configured OpenAI-compatible vision model via chat completions
- Returns a text description — or optionally writes it straight to a Markdown file for a UI spec, mockup notes, or any document
This lets a model on a text-only route (e.g. deepseek over a gateway that rejects image input) see pictures as prose.
Ask the agent to look at an image in plain language, and the describe_image tool turns it into a usable text description — optionally written straight to a Markdown file.
The package is a dependency-free plain ESM Cordis plugin that only injects tools. Install it into a DSH profile, then mount it in a patch layer.
From npm:
dsh plugin --profile web add easy-visionOr run pnpm directly inside the profile directory:
cd "$env:DSH_HOME\profiles\web"
pnpm add easy-vision
@deepseek-ai/cordisis declared as a peer dependency — DSH already provides it at runtime, so no extra install is needed.
Add this to your DSH patch file — for example the home-level $DSH_HOME\cordis.patch.yml (applies to every profile) or a profile's cordis.patch.yml:
- insert:
- id: easy-vision
name: easy-vision
config:
baseUrl: https://example.com/v1
model: your-vision-model
apiKeyEnv: YOUR_API_KEY
timeoutMs: 120000Save — DSH hot-reloads cordis.patch.yml edits. A new session will then expose the describe_image tool to the model.
The tool resolves the key from apiKeyEnv: it checks the environment variable first, then $DSH_HOME\.credentials.yaml. Add a key matching apiKeyEnv there if it is not already an env var:
# C:\Users\Z\.dsh\.credentials.yaml
YOUR_API_KEY: sk-...If the profile was booted before these steps, restart the profile (or open a new session) so the tool schema is available to the model.
| Key | Default | Description |
|---|---|---|
baseUrl |
https://example.com/v1 |
OpenAI-compatible chat completions base URL. |
model |
your-vision-model |
Vision model id. |
apiKeyEnv |
YOUR_API_KEY |
Env var name for the API key; falls back to reading that key from $DSH_HOME/.credentials.yaml. |
timeoutMs |
120000 |
Request timeout. |
The describe_image tool description tells the model to use it automatically whenever the user asks it to look at / view / describe / analyze / read an image, and to recognize natural-language intent (e.g. "描述一下 / 看一下 / 分析这张图") — the user does not need to name the tool.
| Parameter | Required | Description |
|---|---|---|
path |
✅ | Absolute local path to the image. |
prompt |
— | Focus what to extract (e.g. UI layout/colors, describe people, OCR text). |
outFile |
— | Absolute path to a .md file to write the description into; the parent directory is created if needed. |
- Requires an OpenAI-compatible endpoint that accepts base64
image_urldata URIs. - The API key is resolved from the environment or
$DSH_HOME/.credentials.yaml; it is not shelled out to DSH's own provider routing. - Vision results are plain text — the description is not an actual image, so fine-grained spatial accuracy is limited to what the vision model reports.
npm run prepack # copies src -> lib
npm pack # produces easy-vision-0.1.1.tgzMIT — free to use, modify, and distribute.


