增强版视觉工具箱:14 个像素级视觉工具(看图问答/定位/检测/裁剪/像素比对/OCR/长截图OCR/矢量化/取色/抠图/截图/展示/落盘/网页截图),单一 OpenAI 兼容端点驱动,桥接标记极简、规则下沉系统提示,带内容安全识别与限流自动重试。
安装
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:xing666173/dsh-vision-hub#path:/tool-vision
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yaml 的 allowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
GitHub: Scorp1o117/dsh-tool-vision · npm: dsh-tool-vision · English
属于 DeepSeek Harness Enhancement Suite —— Vision · Soul/Persona · 长期记忆 · 插件市场。
给 DeepSeek Harness 外接视觉模型的插件。
DeepSeek 自家模型是纯文本的,而且 harness 的每次模型请求都严格从会话日志推导(llm/stream 请求必须与持久化推导一致,否则 agent-loop invariant 会报 log-reconstruction desync)。本插件用两条路径补上缺口:
inspect_image工具 —— 把图片(本地文件或 http(s) URL)发给任意支持image_url内容块的 OpenAI 兼容/chat/completions端点,把视觉模型的文字回答带回对话。- 图片桥(v0.2.1) —— 粘贴的图片在进入持久化日志之前就被转换成
inspect_image指引文本,拦截点是agent/pre-stepwaterfall(这是 harness 唯一允许插件替换"进入某一步的消息"的缝;替换后的消息会成为持久化的user/message日志,所以请求重建 invariant 天然满足)。旧版本已经写进日志的图片消息,会在该会话下一次 pre-step 时用 surfacereplace惰性修复。只有multimodalModels白名单内的模型直收图片块;不参考模型的inputModalities声明——因为很多配置为了通过 prompt 准入检查,会给纯文本模型声明input: [text, image](那只是声明,不代表上游真的能吃image_url)。 - 像素级视觉工具(v0.4.0,移植自 dsh-vision-router) —— 14 个
vision_*工具(看图问答/像素定位/元素检测/裁剪/像素对比/取色/OCR/长截图 OCR/SVG 矢量化/抠图/HTML 截图/桌面截图/图片展示/附件落盘),全部走同一个inspect_image配置的端点(baseURL/apiKey/model),不做模型区分、不引入本地模型与降级链。工具产物写入工作区.dsh-tool-vision/目录。
- 除 dsh SDK 外零依赖 —— 兼容任意端点:OpenAI GPT-4o、Qwen-VL(DashScope)、GLM-4V(智谱)、Moonshot、Gemini 兼容端点、本地 Ollama 等。
- 注册在全局工具层:进程内所有 Agent 都能调用
inspect_image。 - Web UI 设置栏(v0.3.0):设置 → 视觉模型 编辑
tool-vision命名空间(API 地址、只写密钥、模型、桥接选项),写入settings.yaml,改动即时生效无需重启。API 密钥存放在settings.yaml而非 profile patch;插件按包名挂载(name: 'dsh-tool-vision')以便 web 端发现客户端 bundle。
安装
在 profile patch($DSH_HOME/profiles/<name>/cordis.patch.yml)里挂载:
- insert:
- id: tool-vision
name: 'dsh-tool-vision' # 前置:在 profile 里 pnpm add dsh-tool-vision
config:
baseURL: 'https://api.openai.com/v1'
apiKeyEnv: 'VISION_API_KEY'
model: 'gpt-4o-mini'
不装 npm 包、直接加载本地路径:
- id: tool-vision
name: './plugins/dsh-tool-vision/index.js'
配置
| 字段 | 默认值 | 含义 |
|---|---|---|
baseURL |
https://api.openai.com/v1 |
OpenAI 兼容 API 基地址 |
apiKey |
'' |
API 密钥(优先于环境变量) |
apiKeyEnv |
VISION_API_KEY |
存放密钥的环境变量名 |
model |
gpt-4o-mini |
视觉模型 id |
maxTokens |
1024 |
视觉调用最大输出 token |
timeoutMs |
60000 |
单次请求超时 |
maxImageBytes |
10MB |
本地图片大小上限 |
description |
默认描述 | 工具描述(模型可见) |
bridgeTextOnly |
true |
把粘贴图片转成文本指引(发给看不懂图片的模型时) |
bridgeExportDir |
临时目录 | 桥接图片导出目录(os.tmpdir()/dsh-vision-bridge) |
multimodalModels |
[] |
直发图片块的模型 id(如 mimo-v2.5) |
图片桥配置
- 在模型设置里给要贴图的模型声明图片输入(pi-ai 风格),让 harness 放行图片消息:
llm-pi-ai: providers: your-provider: models: - id: deepseek-v4-flash input: [text, image] - 在插件配置里列出真正多模态的模型,让它们直收图片块:
- id: tool-vision name: 'dsh-tool-vision' config: multimodalModels: ['mimo-v2.5', 'grok-4.5']
之后在文本模型下贴图,转录里会留下一条指引:
[User sent an image, exported to: <path>. Inspect it with the inspect_image tool...]
(该消息不再以像素图形式渲染),Agent 会调用视觉端点查看并把结果带回对话。
为什么不用
llm/stream?harness 会冻结每个请求,且 agent-loop invariant 会拒绝任何与会话日志推导不一致的请求;这个 cordis 版本的 waterfallnext()也无法替换请求参数。agent/pre-step才是受支持的缝:它的决策消息会成为持久化日志,invariant 天然成立。
密钥解析顺序:config.apiKey → process.env[apiKeyEnv] → process.env.OPENAI_API_KEY。
工具:inspect_image
| 参数 | 必填 | 含义 |
|---|---|---|
path |
✅ | 图片路径(绝对路径,或相对当前工作区)或 http(s) URL |
question |
– | 可选的具体问题 |
detail |
– | auto / low / high 分辨率提示 |
示例端点(baseURL):
- OpenAI:
https://api.openai.com/v1——gpt-4o、gpt-4o-mini - 阿里云 DashScope(Qwen-VL):
https://dashscope.aliyuncs.com/compatible-mode/v1——qwen-vl-plus、qwen-vl-max - 智谱(GLM-4V):
https://open.bigmodel.cn/api/paas/v4——glm-4v-flash(免费档)、glm-4v-plus - Moonshot(Kimi):
https://api.moonshot.cn/v1——moonshot-v1-8k-vision-preview - Ollama 本地:
http://localhost:11434/v1——llama3.2-vision(无需密钥)
限制
- 被桥接的图片以文本指引进入对话(转录而非像素)——文本模型无法做像素级上下文推理;视觉模型的描述通过
inspect_image回传。 - 图片以 base64 传输;注意隐私与大小限制。
- 独立于 dsh-llm 的路由/重试体系;失败会向 Agent 返回明确错误。
License
MIT
链接
同类插件
liustack/modlens★ 4142
为纯文本模型架起视觉桥梁:粘贴图片,输出结构化 JSON 证据(OCR、版面、语义)。
ysr666/dsh-vision-router★ 1132
为纯文本 Agent 提供视觉能力:内置免 Key 视觉链 + 像素级视觉工具(看图问答、定位、裁剪、像素对比、取色、OCR、矢量化、抠图、截图);粘贴图片即可用。
Anionex/dsh-vision-toolkit★ 885
让纯文本模型处理视觉任务:粘贴图片后自动切换到 Vision Toolkit 变体,支持图片问答、多图比较、长截图 OCR、截图还原前端 UI、元素定位与像素对比。默认无需 API Key——图片经作者自建的免费服务处理,每台机器每天 100 张;也可改为指向自己的服务商。
dickpy/dsh-imagegen★ 100
面向 DSH Web GUI 的 AI 生图插件:通过可配置的 OpenAI 兼容端点(gpt-image-2 / gpt-image-1 / dall-e-3)实现文生图与图生图,提供 api_url/api_key 设置卡片与侧边栏分栏生图工作台。
fandc520/dsh-comfyui★ 98
让 DeepSeek Harness 的 Agent 直接驱动本地或远程 ComfyUI:comfyui_run / comfyui_object_info / comfyui_workflow 工具生成与编辑图像、视频,附带工作流库(图工作流提取:按分量 / 主流程 / 整体)、加载区分辨率自动匹配、实时队列、SDXL 与 Wan 2.1 模板、配套 skill 与同源媒体代理。
sunxin-ai/dsh-design-qa★ 44
给纯文本模型的设计稿保真判定:`deepseek_vision` 工具从任意 OpenAI 兼容视觉路由借来一只眼,让模型判断实现与设计稿是否一致——并附上支撑该判定的基准(4 组夹具、23 处注入缺陷、逐格原始输出)与其依赖的提问纪律。
社区评论
评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。