前言¶
DeepSeek Harness(DSH)里,宿主已经能把图片交给声明了 image 输入能力的模型。实际开发会话里却常卡在两点:内置的 read_image 要求当前会话模型本身支持图片,纯文本模型会直接拒绝;把读图交给子智能体并指定视觉路线时,又可能被会话级的模型选择白名单拦住。
你需要的是:对话继续用正在用的推理模型,读图单独走一条宿主已配置的视觉路线,结果以文本回到上下文里。维护者 YOUNG-FELIX 的 dsh-vision(分类:模型推理,当前版本 v0.4.4)就是围绕这个缺口做的插件:一个可调用工具、一块设置面板,无额外运行时依赖。
这是什么¶
dsh-vision 通过宿主进程内的 ctx.llm.stream() 直连视觉模型,把模型回复当文本交给调用方;鉴权留在宿主的 provider 适配器里,插件不接触 API 密钥。SkillHub 目录页的简述是:Let any DSH session read images through a vision-capable model the host already has. Tool + settings panel, no runtime dependencies.
插件在 DSH 社区目录 SkillHub 上架,源码与完整说明见 GitHub:YOUNG-FELIX/dsh-vision。许可为 MIT;package.json 要求 Node >=22.19.0。
核心功能¶
工具 vision_read¶
面板里可以改工具显示名,默认可通过 JSON 参数调用(字段与 README 一致):
{
"path": "/home/you/shot.png",
"paths": ["a.png", "b.png"],
"task": "ui",
"prompt": "只关心左上角的错误提示",
"route": "someprovider/some-model"
}
path/paths:本地 PNG、JPEG、GIF、WEBP;多张时数量上限可在面板配置。task:auto | describe | text | ui | chart | diff | question。prompt:可选,追加到对应任务模板之后。route:可选,覆盖面板里配置的主路线。
成功时返回模型文本,并附一行元数据,例如:
[model provider/model · transport attachment · 6.2s · 1 image(s) · 220 KB · tokens 1412→180]
失败时会露出各次尝试的原始错误,不吞异常。
任务模板与可编辑提示词¶
调用方只选 task,不必每次手写提示词,换模型、换会话时输出颗粒度一致。六套预置模板含义如下(摘自官方文档):
| task | 用途 | 产出侧重 |
|---|---|---|
auto |
自定义完整指令 | 原样发送,不套模板 |
describe |
通用(缺省) | 主体、位置、逐字文字、颜色材质、不确定项 |
text |
纯 OCR | 仅文字,保留换行与缩进 |
ui |
软件截图 | 标题、导航、控件状态、报错原文、路径与版本等 |
chart |
图表 | 类型、坐标轴、图例、可读数值与异常 |
diff |
多图对比 | 逐项差异、变化区域、增删元素 |
question |
定向问答 | 仅依据可见内容;看不出则说明 |
在 设置 → 视觉 → 提示词 中可就地修改模板,点「保存提示词」或页面级「保存」后写入 ~/.dsh/dsh-vision/config.json,下一次读图即生效,无需重建或改源码。promptPrefix 会拼在每次请求最前面,便于固定输出语言或格式。
路线与设置面板¶
设置 → 视觉 提供状态、路线、提示词、自定义 API、参数与限制、开关、最近调用等区块。主路线只列出宿主已发现且声明支持图片输入的 provider 模型(如 workbuddy/…、aliyun/…、direct/…);传输方式可选 auto / attachment / inline,并支持备用路线与「重新发现模型」。
若无付费视觉 API,文档给出与 dsh-connect-workbuddy 组合的路径:从市场安装连接器并登录后,在视觉面板选已注册的免费视觉模型作路线,会话计费模型可保持不变。
插件还支持 OpenAI 兼容的 自定义 API(图片仅能 base64 内联,密钥落在插件配置或 apiKeyRef 引用的 ~/.dsh/.credentials.yaml);有宿主路线时文档建议优先用宿主路线。
「运行自检」会由宿主生成纯色测试图,让当前路线回答颜色并比对,用于端到端验证传输与模型能力。
文档中的能力边界(实测结论)¶
README 用三张固定样图对比了三类路线(大视觉语言模型、小通用 VL、专用 OCR)。值得写进调用习惯的两点:
- 逐字转写:三种路线在同一条漫页上对白一致;若目标是文字,
task: "text"通常最快、最省。 - 计数与朝向:同一模型在多图合并请求中可能把朝向说反;涉及分格数、面板方向时,每次只送一张图,尽管
paths[]支持多张。
不适合:当前会话模型已能直接附图时(应直接附件);需要像素级 diff 时(文档建议裁剪区域再问,不依赖对话模型做精确比对)。
安装与启用¶
官方 README 给出的是将插件目录复制进 profile 并登记 bundle,不是一条 dsh plugin add … 命令。步骤如下。
- 将
dsh-vision目录复制到当前 profile 的local-plugins与node_modules(<profile>换成你的 profile 名):
cp -r dsh-vision ~/.dsh/profiles/<profile>/local-plugins/dsh-vision
cp -r dsh-vision ~/.dsh/profiles/<profile>/node_modules/dsh-vision
-
在
~/.dsh/profiles/<profile>/package.json的dsh.profile.bundles中加入"dsh-vision"。 -
重启 DSH 应用。
卸载时:从 bundles 与 dependencies 移除、删除上述两个目录,并删除 ~/.dsh/dsh-vision。
启用后应在 设置 → 视觉 配置主路线;仅有自定义端点时再填 自定义 API。配置与统计分别落在:
~/.dsh/dsh-vision/config.json
~/.dsh/dsh-vision/stats.json
典型用法¶
下面介绍一次最小可用的读图调用。先确认路线已在面板保存,再在会话中让模型调用工具(或由工作流、子智能体调用)。
单张截图、关心 UI 文案与报错:
{
"path": "/home/you/app-error.png",
"task": "ui",
"prompt": "只列出红色错误框内的原文"
}
漫画或扫描件、只要台词:
{
"path": "/home/you/page.webp",
"task": "text"
}
临时指定便宜 OCR 路线(会话仍为纯文本模型):
{
"path": "/home/you/label.jpg",
"task": "text",
"route": "workbuddy/hy3"
}
route 的值须是宿主或面板里已配置、且支持图片输入的模型 id;具体名称以你环境中「重新发现模型」列表为准。
仓库内可用冒烟测试验证插件逻辑(不启动完整 DSH):
node scripts/smoke.mjs
适用场景与注意¶
适合谁
- 主会话绑定纯文本强推理模型,但仍要把本地图片事实纳入上下文。
- 上传链路被部分 provider 拒绝,需要绕过「会话模型直读附件」的路径。
- 读图想用专用模型(OCR、大 VLM),对话继续用已在付费的会话模型。
- 脚本、子智能体或工作流需要读图,而不改会话模型或白名单。
不适合谁
- 会话模型已支持图片:直接附图即可。
- 依赖模型做像素级差异比对。
运行与安全
- 插件随 当前 DSH 进程 运行,权限与宿主一致;安装前请自行查阅源码与 MIT 许可证。
vision_read只读本地文件,不替你下载 URL;图片字节会发往当前路线所属的模型服务。- 插件设计为不持有宿主路线的密钥;自定义 API 路径可能在配置中存 key 或通过
apiKeyRef解析,面板与/state对密钥做不回显处理。详见 README「安全说明」。 - 每次调用都是真实模型请求,费用由提供该模型的方计量。
社区目录 SkillHub 与 DeepSeek / 幻方无官方从属关系;DSH 生态奉行「一切皆插件」,选用插件时以目录页与仓库文档为准。
结尾¶
dsh-vision 用一条宿主内的视觉路线、一个 vision_read 工具和可配置的六套任务模板,把「读图」从「当前会话模型能不能看图」里拆出来。纯文本会话、子智能体脚本和分任务选模型(OCR 对 UI 对描述)是文档写明的典型用法;涉及计数与方位时单图单呼,转写优先 text,是 README 实测里反复强调的习惯。
- 目录页:https://www.skillhub.cn/plugins/YOUNG-FELIX/dsh-vision
- 仓库:https://github.com/YOUNG-FELIX/dsh-vision