dsh-vision-any

August 15, 2026 · View on GitHub

简体中文 | English

让纯文本的 DeepSeek Harness Agent 直接粘贴图片,并用任意 OpenAI 兼容 / Anthropic / Gemini 视觉 API 看图。

💖 赞助支持

我是大学生村官,收入比较低。
如果这个插件帮到了你,欢迎打赏支持我。

打多打少是个缘,感谢每一份心意!

微信收款二维码

dsh-vision-any 是一个标准的 DeepSeek Harness(DSH)插件,为 DeepSeek V4、GLM 等纯文本模型补上真正的图像理解能力。

一个插件同时解决两件事:

  1. 粘贴准入:即使当前主模型是纯文本,也能把图片粘贴进聊天框;图片会保存到本地,并替换成路径提示。
  2. vision 工具:Agent 用这个路径(或任意本地路径 / URL / data URI)调用 vision,由你配置的视觉模型返回文字描述。

不需要切换模型,不绑定厂商,自带任意视觉 API。


特性

  • ✅ 纯文本模型也能直接在 DSH 聊天框粘贴 / 拖拽图片
  • ✅ 支持任意 OpenAI 兼容端点(OpenAI、OpenCode Go、智谱、通义、Ollama、vLLM、LM Studio 等)
  • ✅ 支持 Anthropic Messages API 和 Google Gemini generateContent
  • ✅ 多图批量:一次最多分析 10 张图
  • ✅ 本地图片存储:MD5 去重、LRU 上限、过期清理
  • ✅ API Key 不进源码,通过配置 / 环境变量读取
  • ✅ 标准 DSH bundle:可用 dsh plugin 安装 / 卸载

安装

本地安装:

dsh plugin --profile web add /path/to/dsh-vision-any
dsh plugin --profile headless add /path/to/dsh-vision-any

GitHub 安装(发布后):

dsh plugin --profile web add github:<你的用户>/dsh-vision-any

重启 dsh web 并刷新浏览器。


快速开始(OpenCode Go + MiMo V2.5)

创建 ~/.config/dsh-vision-any/config.json

{
  "provider": "openai",
  "openai": {
    "baseUrl": "https://opencode.ai/zen/go/v1",
    "model": "mimo-v2.5",
    "apiKeyEnv": "OPENCODE_GO_API_KEY"
  }
}

确保环境里有 OPENCODE_GO_API_KEY(例如写在 ~/.dsh/.env 或 shell 环境变量里)。

然后启动:

dsh web

把图片粘贴进聊天框即可。模型会看到路径提示,并自动调用 vision 工具。


配置

配置优先级(高到低):

  1. profile patch / overlay 里的插件行配置
  2. ~/.config/dsh-vision-any/config.json
  3. VISION_ANY_* 环境变量
  4. 内置默认值(OpenAI 兼容)

简单配置(推荐)

可以直接在顶层填 providerbaseUrlmodelapiKeyEnv

{
  "provider": "openai",
  "baseUrl": "https://opencode.ai/zen/go/v1",
  "model": "mimo-v2.5",
  "apiKeyEnv": "OPENCODE_GO_API_KEY"
}

常见模型速查表

想用哪个providerbaseUrlmodelapiKeyEnv
OpenCode Go / MiMoopenaihttps://opencode.ai/zen/go/v1mimo-v2.5OPENCODE_GO_API_KEY
通义千问 / DashScopeopenaihttps://dashscope.aliyuncs.com/compatible-mode/v1qwen-vl-plusQWEN_API_KEY
OpenAIopenaihttps://api.openai.com/v1gpt-4o-miniOPENAI_API_KEY
Anthropic / Claudeanthropichttps://api.anthropic.comclaude-sonnet-4-5ANTHROPIC_API_KEY
Geminigeminihttps://generativelanguage.googleapis.com/v1betagemini-2.0-flashGEMINI_API_KEY
本地 Ollamaopenaihttp://localhost:11434/v1llavaollama(或任意)

想换模型就改 model。如果用其他 OpenAI 兼容网关,保持 provider: "openai",填它的 baseUrlmodel 即可。

进阶:按 provider 分块配置

也可以把配置写进 openai / anthropic / gemini 块里:

{
  "provider": "openai",
  "openai": {
    "baseUrl": "https://api.openai.com/v1",
    "model": "gpt-4o-mini",
    "apiKeyEnv": "OPENAI_API_KEY"
  }
}

插件行配置(也可以不用配置文件)

在 profile 的 cordis.patch.yml 里写:

- insert:
    - id: vision
      name: dsh-vision-any
      config:
        provider: openai
        baseUrl: https://opencode.ai/zen/go/v1
        model: mimo-v2.5
        apiKeyEnv: OPENCODE_GO_API_KEY

环境变量

变量含义
VISION_ANY_PROVIDERopenai / anthropic / gemini
VISION_ANY_BASE_URL视觉 API 的 Base URL
VISION_ANY_MODEL视觉模型 ID
VISION_ANY_API_KEYAPI Key(兜底)
VISION_ANY_API_KEY_ENV存放 API Key 的环境变量名
VISION_ANY_TIMEOUT_MS请求超时(默认 120000
VISION_ANY_MAX_TOKENS最大输出 token(默认 4096
VISION_ANY_MAX_IMAGES粘贴图片 LRU 上限(默认 200
VISION_ANY_SYSTEM_PROMPTtrue / false

使用方法

粘贴图片

直接把图片粘贴或拖进 DSH 聊天框。插件会保存图片并注入类似提示:

[Image #1 auto-saved to /tmp/dsh-vision-any/image1/xxxx.png]

模型会自动调用 vision 工具。

手动调用工具

也可以让模型分析本地文件或 URL:

vision 工具读取 C:\path\to\screenshot.png,告诉我里面显示什么错误。

工具参数示例:

{
  "paths": ["/tmp/dsh-vision-any/image1/xxxx.png", "https://example.com/a.png"],
  "question": "这张图表说明了什么?"
}

工作原理

  1. DSH 默认会拒绝纯文本模型的图片附件。
  2. dsh-vision-any 包装 API 代理的 prompt 准入:图片先保存到本地临时目录,再替换成文本路径提示。
  3. Agent 调用 vision 工具。
  4. 工具解析图片(本地路径 / URL / data URI),发送给你配置的视觉后端,返回纯文本。
  5. 纯文本主模型基于描述继续对话。

环境要求

  • Node.js 20+(实际 DSH 通常要求 22.19+)
  • DeepSeek Harness 0.1.x(开发者预览版)
  • 一个支持图片输入的视觉模型端点 + API Key

常见问题

现象解决办法
仍提示 The current model does not support images重启 dsh web 并刷新浏览器;确认插件已安装
图片能粘贴,但模型说看不到图确认模型调用了 vision 工具;检查系统提示是否开启
vision provider error (HTTP 401)检查 apiKeyEnv / API Key / Base URL
vision provider error (HTTP 404)检查 baseUrlmodel;Anthropic 要确保最终请求到 /messages
模型不支持图片输入换支持视觉的模型,例如 mimo-v2.5gpt-4o-minikimi-k2.6qwen3.6-plusclaude-sonnet-4-5gemini-2.0-flash

License

MIT