dsh-vision:让纯文本 DSH 会话也能读图

前言

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)。值得写进调用习惯的两点:

  1. 逐字转写:三种路线在同一条漫页上对白一致;若目标是文字,task: "text" 通常最快、最省。
  2. 计数与朝向:同一模型在多图合并请求中可能把朝向说反;涉及分格数、面板方向时,每次只送一张图,尽管 paths[] 支持多张。

不适合:当前会话模型已能直接附图时(应直接附件);需要像素级 diff 时(文档建议裁剪区域再问,不依赖对话模型做精确比对)。

安装与启用

官方 README 给出的是将插件目录复制进 profile 并登记 bundle,不是一条 dsh plugin add … 命令。步骤如下。

  1. 将 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
  1. 在 ~/.dsh/profiles/<profile>/package.json 的 dsh.profile.bundles 中加入 "dsh-vision"。

  2. 重启 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
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye