跳到主内容

dsh-free-vision

6Star1Fork0Issue1Watching

为纯文本 DSH 模型补上看图能力:注册 image_understand 工具调用免费视觉 API(千问/豆包/硅基),并自带 show_image 把图片内联渲染进对话流。

机审证据5/5方法论数据来源安装命令持续维护DSH 版本风险扫描
机审证据安装命令仓库已核验dsh-plugin Topic许可证READMEAI 百科
语言
JavaScript
License
MIT
分支
main
deepseek-harnessdshdsh-pluginfreeimage-understandingvision

安装

命令web profile
$ dsh plugin --profile web add dsh-free-vision

在终端中运行以上命令,通过 dsh CLI 安装此插件。可在右上角切换 Profile。 第一次用 dsh?看这篇新手教程

对话式安装

帮我安装 DeepSeek Harness 插件 FuzzySoul/dsh-free-vision:先查看仓库 https://github.com/FuzzySoul/dsh-free-vision 确认安全性,然后执行安装命令并验证插件加载成功。

把这段指令粘贴给 DSH Web GUI 里的助手,由它代你完成安装与验证。

一句话定位

为 DeepSeek Harness 中只能看文字的模型补上"看图"能力:默认走千问、豆包、硅基流动三家提供商的免费视觉接口,把截图、报错、UI、文档转成模型能理解的文字证据,全程不需要用户手动配置 MCP 服务。

核心能力

  • 注册 image_understand 工具,让纯文本模型接收本地路径、HTTP(S) URL、data URI 或粘贴的图片引用,按 PNG/JPEG/WebP/GIF 调用视觉 API 并返回文字证据
  • 一键识别(默认开启):在消息分发时把粘贴的图片替换成缓存好的文字描述,模型同一回合直接回答,无需先调工具再追问
  • 注册 show_image 工具:让模型把找到的、生成的、截到的图片以内联卡片形式渲染进对话流,图片不进模型上下文
  • 提供设置面板(Settings → Free Vision),表单由插件 schema 自动渲染,支持多 provider 一键切换、API Key 单独填、自定义 API 地址,保存到 ~/.dsh/free-vision.json 后下一次调用立即生效
  • 提供 6 个模型提供商的切换:千问、豆包、硅基流动(OCR 专长)默认免费,智谱、腾讯混元、自建 OpenAI 兼容端点按量或自配

技术实现

  • 语言: JavaScript (ESM,"type": "module")
  • 关键依赖: @modelcontextprotocol/sdk(1.25.3,作为 MCP 客户端连 luma-mcp)、luma-mcp(1.7.1,本包内置的视觉引擎)、@deepseek-ai/schemastery(配置 schema 校验)
  • 架构模式: 宿主通过 cordis.patch.yml 注入插件 → 插件用 apply(ctx, config) 在进程内 spawn luma-mcp 子进程 → 通过 stdio MCP 与之通信 → 用 ctx.tools.register 把通用视觉工具注册到宿主 → 配置保存走宿主 webServer 的 GET/POST /dsh-free-vision/config,配置变更会重连引擎
  • 入口文件: dsh/index.js(host 端 ESM 入口,含 schema/路由/工具注册),client/client.js(浏览器端 UMD bundle,注入 settings.section)

适用场景

当用户用纯文本 DeepSeek 跑 DSH,但需要让模型"看懂"截图、报错、UI、文档时——例如调试时丢一张控制台报错图、写前端时丢一张设计稿、要 OCR 识别一段长截图——装上这个插件就能在不切换模型的情况下完成看图问答。免费额度对个人日常使用已经够用。

前置依赖与兼容性

依赖最低版本说明
Node.js>=18package.json:38 声明
DSH未声明通过 cordis.patch.yml 注入,未在 package.json 中显式声明版本范围
操作系统跨平台纯 JS 实现,无原生模块
原生模块无不依赖 node-pty/node:sqlite 等原生扩展
视觉 API 端点国内直连阿里云百炼、火山方舟、硅基流动均为国内端点,子进程会剥离代理变量

安装方式

dsh plugin --profile web add dsh-free-vision

配置项

配置类型说明默认值
apiKey字符串当前提供商的 API Key;缺省时回退到该提供商对应的环境变量(如 DASHSCOPE_API_KEY)空
keys对象按提供商分别填写的 API Key 映射(如 { qwen: 'sk-...' }){}
baseURLs对象按提供商覆盖 API 地址(如 { qwen: 'https://my-proxy.example.com/v1' }),留空走官方默认{}
modelProvider枚举提供商:qwen(默认)/ volcengine / siliconflow / zhipu / hunyuan / customqwen
modelName字符串可选模型名覆盖(如 qwen3-vl-flash),默认按提供商自动选空
toolName字符串公开工具名,跟宿主已有工具冲突时改名image_understand
maxTokens数字单次视觉调用最大生成 token8192
temperature数字采样温度0.7
multiCrop布尔大图自动多裁剪提升细节保真度true
toolCallTimeoutMs数字单次调用超时(毫秒)200000
allowedDirs字符串额外允许读取的图片根目录(; 或 , 分隔,默认仅工作目录与用户主目录)空
lumaEnv对象透传给视觉引擎(luma-mcp)的额外环境变量{}
preservePastedImages布尔保留粘贴的图片在对话里显示为原生缩略图(纯文本模型视角会自动改写为引用文本)true
describeAtDispatch布尔分发时把图片替换成已识别的描述文本,一步回答无需调工具true
describePrompt字符串一步识别使用的默认提示词中文详细描述模板
describeCacheSize数字一步识别描述的进程内 LRU 缓存条数(按 sha256)64
showImageEnabled布尔启用 show_image 工具(把模型找到/生成的图片渲染到对话流)true
showImageToolName字符串show_image 工具的公开名(冲突时改名)show_image
showImageMaxBytes数字show_image 单图字节上限(同时受宿主附件上限约束)26214400
showImagePixels数字show_image 像素上限(宽×高),0 表示不限制40000000

常见问题

Q: 装完就能用吗?

A: 还差一步:填一个 API Key。最简单的路径是阿里云百炼开通即送 50 万 token 限免额度,模型选 qwen3-vl-flash,把得到的 Key 配成环境变量 DASHSCOPE_API_KEY(或在 Settings → Free Vision 里直接粘贴)。保存后下一次调用立即生效,无需重启。

Q: 粘贴到对话里的图片,纯文本模型能看到吗?

A: 能,而且通常不需要再调工具。默认开启"一步识别"(describeAtDispatch):分发时插件先把粘贴图片的描述文字塞给模型,模型在同一回合直接回答。image_understand 仍然保留,用于精确追问(如 OCR 逐字转写)。

Q: 支持哪些视觉模型?都免费吗?

A: 千问 Qwen3-VL-Flash(默认,限免 50 万 token)、豆包视觉(火山方舟新用户 20 万~50 万 token)、硅基流动 DeepSeek-OCR(OCR 免费)三家是免费档;智谱 GLM-4.6V、腾讯混元 HY-Vision、自建 OpenAI 兼容端点为按量或自配。

Q: 我能用国内代理或自建网关代替官方 API 地址吗?

A: 可以。在设置面板切到对应提供商卡片,下方"Base URL / API 地址"留空走官方默认;填上 https://my-proxy.example.com/v1 这种格式即可,引擎会自动拼接路径并避免重复。

Q: 为什么子进程要"直连",不能挂代理?

A: 阿里云百炼、火山方舟、硅基流动都是国内端点,子进程启动时会主动剥离 HTTP_PROXY/HTTPS_PROXY/ALL_PROXY/NO_PROXY 等代理环境变量;挂代理反而会拿到 502 错误。

Q: 工具名 image_understand 跟别人的插件冲突怎么办?

A: 在高级设置里把 toolName 改成别的即可;show_image 也能通过 showImageToolName 改名,改完保存立刻生效。

Q: 怎么完全卸载?

A: 配置文件在 ~/.dsh/free-vision.json(自定义路径可由 DSH_FREE_VISION_CONFIG_PATH 环境变量覆盖),删掉即清空所有 Key/地址覆盖;插件本体通过 dsh plugin --profile web remove dsh-free-vision 卸载。

Q: 引擎进程挂了怎么办?

A: 插件内置指数退避自动重连(dsh/index.js:648-664),最多 30 秒后会重连并重新注册工具;同时插件的 luma-mcp 版本被锁在 1.7.1,postinstall 钩子会在升级时自动重打幂等补丁。

上手难度

入门 — 装好插件、配一个免费 API Key,模型就能自己调工具看图;进阶能力(一键识别缓存、show_image 内联卡片、API 地址代理)都有合理默认,按需在高级设置里打开。

已知问题与限制

  • 子进程会主动剥离 HTTP_PROXY/HTTPS_PROXY/ALL_PROXY/NO_PROXY/http_proxy/https_proxy/all_proxy/no_proxy 八个代理环境变量(dsh/index.js:121-124),对挂代理才能联通的网络环境不可用。
  • 仅支持 PNG/JPEG/WebP/GIF 四种图片格式(dsh/index.js:1046-1053),其他格式会抛 Unsupported image format。
  • 视觉引擎内置 SSRF 防护,会阻止拉取 127.0.0.1 等回环地址(dsh/index.js:710-711, 1199),宿主内部 URL 必须先走粘贴图片引用再传,不允许直接拼。
  • show_image 工具明确不支持远程 HTTP(S) 图片 URL(dsh/index.js:1517-1518),只接受本地路径、粘贴引用或 data URI。
  • 图片读取受白名单限制:默认仅工作目录与用户主目录可读,其他路径需在 allowedDirs 用 ; 或 , 分隔添加(dsh/index.js:204-209)。
  • 插件依赖 [email protected],postinstall 钩子会在升级时对该依赖做幂等补丁;如果上游 luma-mcp 改了对应源码字符串,补丁会失败(scripts/patch-luma.mjs:46-53)。

查看使用指南 →

该插件的安装步骤、关键要点、FAQ 与兼容性说明(基于已收录字段派生)。

收录徽章

Listed on deepseek-plugin.org
[![Listed on deepseek-plugin.org](https://img.shields.io/badge/listed_on-deepseek--plugin.org-007EC6)](https://deepseek-plugin.org/plugins/FuzzySoul/dsh-free-vision)

把这段 markdown 粘贴到你的 GitHub README,链接回本插件详情页。徽章只声明已被本站收录,不代表安全认证。

返回插件目录