dsh-tool-see-image:为纯文本 DSH 会话补上「看图」能力

前言

DeepSeek Harness(DSH)里常用的纯文本模型(例如 deepseek-v4-flash)本身不接收图像输入。会话里若只有路径或截图需求,模型无法直接「看见」像素内容。常见做法是换用多模态模型,或在本地跑视觉模型,成本和改动都更大。

dsh-tool-see-image 在 Host 侧注册 see_image 工具:由会话中的文本模型按需调用,把指定路径的图片交给可配置的视觉 API(默认智谱 GLM-4V-Flash),再把文字描述回传给当前会话。下面介绍它的定位、安装与配置方式。

这是什么

  • 名称:dsh-tool-see-image(npm 包名一致,当前版本 0.1.2,MIT 许可证)
  • 维护者:guguthecoder(社区插件目录 SkillHub 条目)
  • 分类:模型推理
  • 仓库:GitHub

插件向 DSH 暴露一个工具:see_image(image_path, question)。读取图片、编码、请求视觉模型均在 Host 平面完成,不要求改你所用的主对话模型,也不要求本地 GPU。

工作原理(简述)

  1. 用户在会话中让模型查看某张图;纯文本模型无法直接读图,转而调用 see_image。
  2. 插件通过 ctx.fs 解析并读取文件(遵守 DSH 沙箱与观测策略),将图像编码为 base64 data URL。
  3. 向配置好的 OpenAI 兼容端点发起 POST …/chat/completions,默认指向智谱 glm-4v-flash。
  4. 视觉模型返回的文字描述回到会话,由文本模型继续回答你。

换用 SiliconFlow、Qwen2.5-VL 等其它兼容端点时,只需改 baseURL、apiKeyEnv、model 三项配置。

核心功能

  • see_image 工具:传入本地(沙箱可见)图片路径与可选问题,得到文本描述;未传问题时使用插件内置的中文「详细描述」类默认 prompt。
  • 视觉后端可替换:任意 OpenAI 兼容 /chat/completions 接口;默认智谱 GLM-4V-Flash(文档称可在智谱侧免费使用)。
  • 沙箱感知:不直接使用 node:fs,统一走 ctx.fs,与 DSH 文件访问策略一致。
  • 可选能力(同仓库脚本):scripts/patch-dsh-image-relay.mjs 可在 Web 聊天框粘贴图片时,自动转成文字再发给 DeepSeek(需对 DSH 安装目录打补丁,与工具安装相互独立)。

安装与启用(DSH web profile)

官方 README 未提供 dsh plugin add 一类单行命令,而是把插件放进 profile 并用 Cordis patch 挂载。$DSH_HOME 一般为 ~/.dsh。

  1. 将插件目录复制到 profile 下,例如:

$DSH_HOME/profiles/web/plugins/dsh-tool-see-image/

  1. 在 $DSH_HOME/profiles/web/package.json 的 dependencies 中声明本地依赖:
   "dsh-tool-see-image": "file:plugins/dsh-tool-see-image"

在该 profile 目录执行 pnpm install(会在 profiles/node_modules 下建立指向插件源码的链接)。

  1. 在 $DSH_HOME/profiles/web/cordis.patch.yml 中插入插件配置,例如默认智谱:
   - insert:
       - id: tool-see-image
         name: 'dsh-tool-see-image'
         config:
           baseURL: https://open.bigmodel.cn/api/paas/v4
           apiKeyEnv: ZHIPU_API_KEY
           model: glm-4v-flash
  1. 在 智谱开放平台 创建 API Key(格式 id.secret),设置环境变量(Windows 示例):
   setx ZHIPU_API_KEY "your-key"

重新打开终端后重启 dsh web(文档注明 web profile 的 patch 层目前不支持热更新,需重启进程)。

  1. 新开一条会话,确认工具列表中出现 see_image,可用自然语言试跑:
   Use see_image to look at path/to/your/image.png

配置项说明

在 cordis.patch.yml 里 tool-see-image 的 config 块可调整下列字段(摘自 README 配置表):

键 默认值 说明
baseURL https://open.bigmodel.cn/api/paas/v4 兼容 OpenAI 的 API 根路径;插件会追加 /chat/completions
apiKeyEnv ZHIPU_API_KEY 存放 API Key 的环境变量名
model glm-4v-flash 视觉模型 ID
maxTokens 1024 最大输出 token;glm-4v-flash 上限为 1024,更高会返回 400
timeoutMs 60000 请求超时(毫秒)
maxBytes 15728640(15MB) 单张图片大小上限
prompt (中文详细描述类默认指令) 默认问题;工具参数 question 优先

改用 SiliconFlow 的示例:

config:
  baseURL: https://api.siliconflow.cn/v1
  apiKeyEnv: SILICONFLOW_API_KEY
  model: Qwen/Qwen2.5-VL-32B-Instruct

典型用法

  • 按路径识图:在会话中说明图片路径,让模型调用 see_image,并在 question 里写你想问的内容(例如「图里有哪些 UI 控件」「错误信息是什么」)。
  • 卸载:从 cordis.patch.yml 删除 tool-see-image 的 insert 块;移除 node_modules 中的链接;删掉 package.json 里对应依赖行;重启 dsh web。

仓库提供 test/mount-test.mjs:在设置 DSH_CHECKOUT 指向含 node_modules/@deepseek-ai 的 DSH 安装根目录后运行,可验证 see_image 是否进入工具注册表(输出含 tools.schemas() 含 see_image: true 与 === MOUNT TEST PASS ===)。

适用场景与注意

适合:已在 DSH web profile 上使用纯文本模型,偶尔需要读截图、界面图、文档扫描件等,且愿意用云端视觉 API(默认智谱免费档)换描述文本的场景。

注意:

  • 插件在 DSH Host 进程权限下运行,会按配置把图片内容发往第三方 API;安装前请阅读源码与 MIT 许可证,并妥善保管 apiKeyEnv 对应密钥。
  • 单图 15MB 上限、请求超时与 maxTokens 受所选视觉模型限制;文档记录过 glm-4v-flash 因 max_tokens 超过 1024 导致 400 的坑,当前默认已改为 1024。
  • 粘贴转文字补丁会修改 DSH 自带包(host-apiproxy、llm-deepseek、client-ui),仅在你理解回滚方式(--revert)后再启用。

DSH 生态强调「一切皆插件」;SkillHub 等社区目录独立于 DeepSeek / 幻方,并非官方应用商店。本插件曾出现在社区 awesome-deepseek-harness-plugins 列表中。

结尾

dsh-tool-see-image 用一个小工具把「看图」从主模型能力里拆出来:文本模型负责推理与编排,视觉模型负责读图,默认无需本地 GPU。若你要在现有 web profile 里启用,按上文复制插件、pnpm install、编写 cordis.patch.yml 并配置 API Key 即可。

  • 目录页:https://www.skillhub.cn/plugins/guguthecoder/dsh-tool-see-image
  • GitHub:https://github.com/guguthecoder/dsh-tool-see-image
羽毛球分组比赛记分
小程序二维码

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

小夜