easy-vision
A DeepSeek Harness tool plugin that lets text-only agents "see" local images — auto-detects the real format and returns a detailed text description via any OpenAI-compatible vision model.
- Stars
- 1
- Language
- JavaScript
- Created
- Aug 14, 2026
- Updated
- Aug 15, 2026
Introduction
easy-vision
English · 简体中文
A DeepSeek Harness tool plugin that gives a text-only agent the ability to "see" local images.
It registers a model-facing describe_image tool. When the model needs to look at, describe, analyze, or read an image (screenshot, photo, chart, UI mockup, etc.), it calls this tool with the image's local path. The plugin:
- Reads the file and auto-detects its real format from magic bytes (PNG / JPEG / GIF / WebP), tolerating wrong file extensions.
- Sends the image (base64 data URI) to a configured OpenAI-compatible vision model via chat completions.
- Returns a detailed text description, or optionally writes it to a Markdown file.
This lets a model on a text-only route (e.g. deepseek over a gateway that rejects image input) see pictures as prose.
Screenshots
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 for a UI spec, mockup notes, or any document.



Install
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.
1. Install the package into a DSH profile
Pick the source that matches your setup:
From npm (recommended after publishing):
dsh plugin --profile web add easy-vision
Or the equivalent direct pnpm command in the profile directory:
cd "$env:DSH_HOME\profiles\web"
pnpm add easy-vision
From a local tarball (before/without publishing):
cd "$env:DSH_HOME\profiles\web"
pnpm add "D:\path\to\easy-vision-0.1.0.tgz"
@deepseek-ai/cordisis declared as a peer dependency — DSH already provides it at runtime, so no extra install is needed.
2. Mount it in a patch layer
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: EASY_VISION_API_KEY
timeoutMs: 120000
Save — DSH hot-reloads cordis.patch.yml edits. A new session will then expose the describe_image tool to the model.
3. Store the vision API key
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
EASY_VISION_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.
Configuration
| 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. |
Model Experience
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.
Parameters:
path(required) — absolute local path to the image.prompt(optional) — focus what to extract (e.g. extract UI layout/colors, describe people, OCR text).outFile(optional) — absolute path to a.mdfile to write the description into; the parent directory is created if needed.
Known Limitations
- 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.
Build & Pack
npm run prepack # copies src -> lib
npm pack # produces easy-vision-0.1.0.tgz
License
MIT