ysr666/dsh-vision-router
ysr666/dsh-vision-router为纯文本 Agent 提供视觉能力:内置免 Key 视觉链 + 像素级视觉工具(看图问答、定位、裁剪、像素对比、取色、OCR、矢量化、抠图、截图);粘贴图片即可用。
复用 DeepSeek 网页端识图模式给纯文本模型补上看图能力:deepseek_vision 工具调用本地 deepseek-vision-cli 浏览器自动化(手动登录助手、自动开启深度思考、用后自动关窗),把图片描述以文字返回给模型。
A DSH plugin that gives text-only DeepSeek models image recognition.
It registers the deepseek_vision tool, which calls the local
deepseek-vision-cli
(browser automation driving chat.deepseek.com's vision mode) and returns the
image description as text to the model.
deepseek_vision(image, prompt?)
image: absolute path to a local image (PNG/JPG/WebP/GIF; HEIC is not supported)prompt: optional question or analysis request for the imagedsh plugin --profile web add D:/Dsh/tools/dsh-deepseek-vision
Or use the release tarball:
dsh plugin --profile web add dsh-deepseek-vision-0.0.1.tgz
DeepSeek web vision requires a web login session. The current web UI uses password / third-party login, so the recommended way is the manual login helper:
py -3.13 D:\Dsh\tools\deepseek-vision-cli\dsv_manual_login.py
It opens an Edge window to the DeepSeek login page. After you log in manually,
the helper saves the token to D:\Dsh\.cache\dsv_token.
If you already have a DeepSeek web session in your normal browser, you can copy the token directly:
https://chat.deepseek.com and log in.F12 → Application → Local Storage → https://chat.deepseek.com.userToken, copy its value field.D:\Dsh\.cache\dsv_token (no quotes, no newline):[IO.File]::WriteAllText(
'D:\Dsh\.cache\dsv_token',
'PASTE_TOKEN_HERE',
(New-Object Text.UTF8Encoding($false))
)
The token is only stored locally in D:\Dsh\.cache\dsv_token; it is never
committed to this repository.
Default configuration for this machine:
pythonCommand: pypythonVersion: -3.13dsvScript: D:/Dsh/tools/deepseek-vision-cli/dsv.pytimeoutMs: 180000maxOutputChars: 20000These can be overridden in a profile patch.
subprocess service with an argv array, never through a shell.critical for spawning a subprocess; this is
inherent to wrapping an external CLI. The code has been manually reviewed:
it only runs the fixed dsv.py, with no command concatenation or extra
exfiltration.MIT