mimo-vision
DeepSeek Harness (DSH) native plugin: the describe_image tool, a vision bridge (image -> mimo-v2.5 -> text description) over the ctx.fs / ctx.credentials seams
安装
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:wulusai2333/mimo-vision说明文档
阅读完整 README ↗mimo-vision · DSH 原生视觉插件
English | 中文
mimo-vision 是一个 DeepSeek Harness(DSH)原生插件,包名 mimo-vision。它注册一个 describe_image 工具:把图片发给 mimo-v2.5 系多模态模型,把返回的文字描述交给主模型——专为主模型(如 deepseek-v4-flash)没有视觉输入能力的场景做的"视觉桥"。
它不是独立进程,而是 DSH 里"一切皆插件"的一等公民:apply 只有一个动作——把能力注册成 dsh 的一等公民工具,依赖、文件、凭据、子进程全部走 dsh 已定义的能力接缝,卸载即干净回收。
实现范式:DSH 原生插件原语的直接落地
- 注册即可逆效果:
apply(ctx)里只有一句ctx.tools.register(defineTool(...))。register()返回 disposer,插件纤程 dispose 即反注册工具、schema 自动撤出 system-prompt。没有任何残留清理代码——卸载干净是结构保证,而非靠开发者手写清理。 inject声明依赖:export const inject = ['tools', 'fs', 'credentials'],走纯 Cordis 余效果规范,等接缝就位才激活。transcode.ts里的ctx.get('subprocess')是可选能力、带缺省降级,用在执行期而非激活期。整套是「声明依赖」,不是「探测依赖」。- 能力全部走 dsh 接缝:文件读走
ctx.fs.resolve/stat/readBytes+ctx.emit('fs/observed'),凭据走ctx.credentials.resolve(credentialRef(...))且不手写解析,子进程(转码)走ctx.subprocess。唯一例外:转码的临时中间文件经node:fs写入系统临时目录(见下方 Known Limitations)。 - 可卸载 / 可组合:卸载是纯粹的——disposer 一跑即干净回收,无落盘、无 timer、无长连接需要手动收尾。
工具
| 工具 | 参数 | 说明 |
|---|---|---|
describe_image | path(必填)、question(可选) | 描述图片文件,返回文字 |
支持图片格式:
- 原生直发:PNG / JPEG / GIF / WebP / BMP(均已实测可被视觉模型解码)
- 自动转码:SVG / TIFF / HEIC / PSD / ICO / EXR / JP2 / JXL / AVIF——本机装有 ImageMagick 时自动转成 PNG 再发,并缩到长边 ≤2048px(省 token)
- 其它扩展名、或转码格式未装 ImageMagick 时,直接返回明确报错(不静默发送)
用法示例(对模型说):用 describe_image 描述 D:\photos\cat.png,重点看它是什么品种的猫。
工作原理
- key 解析:
ctx.credentials.resolve按OPENCODE_GO_API_KEY→OPENCODE_API_KEY取第一个非空(DSH 凭据分层:进程 env >~/.dsh/.credentials.yaml>.env)。 - 读图:(相对路径按会话 workspace cwd 解析)→ (20 MiB 上限);非原生格式(SVG/TIFF/HEIC…)经 ImageMagick(走 接缝)转成 PNG 并缩到长边 2048px → base64。