🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

视觉工具全家桶 xing666173/dsh-vision-hub

DeepSeek Harness
xing66617375 天前有提交已提供中文文档扫描:含敏感能力

让纯文本模型看图问答、定位裁剪与 OCR 转写

31/100
综合分
4
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/9/16 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

自动兼容检查未通过:缺少 main/exports/bin 入口声明;仓库 package.json 标记 private,未发布到 npm,需从源码安装。以下命令仍可尝试,但可能失败。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add xing666173/dsh-vision-hub
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:需留意
是什么[目录]—
dsh 原生插件 · market
暂无时间戳·判据 →
装得上吗[实装验证]!
作者未把包发布到 npm,只能用源码安装
插件本身没问题,是分发方式不同
L4 · 真实安装等级说明 →
数据截至 2026/10/31·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/04·判据 →
还在维护吗[仓库]—
更新放缓:最近一次提交在 75 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →

可信度证据

安装兼容性检查需源码安装

缺少 main/exports/bin 入口声明;仓库 package.json 标记 private,未发布到 npm,需从源码安装

展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✗npm 包dsh-vision-hub(未发布到 npm,仅可源码安装)
✓Node 引擎要求 >=20.18 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✗入口文件缺少入口声明

源码安装时若 pnpm 拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑。

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/12 06:03:31

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

读写/删除本地文件读取剪贴板或密钥环境变量发起外部网络请求
查看扫描证据(共 32 处,展示前 32 条)
  • 读取本地文件
    bridge-preview/index.js:100
    const info = await stat(target)
  • 读取本地文件
    bridge-preview/index.js:106
    const bytes = await readFile(target)
  • 读取本地文件
    bridge-preview/test-regex.mjs:62
    const client = await readFile(new URL('./client.js', import.meta.url), 'utf8')
  • 读取本地文件
    bridge-preview/test-route.mjs:43
    const info = await stat(target)
  • 读取本地文件
    bridge-preview/test-route.mjs:45
    const bytes = await readFile(target)
  • 发起网络请求
    file-drop/client.js:174
    const response = await fetch(API_PATH, {
  • 写入本地文件
    file-drop/index.js:84
    mkdirSync(dropDir, { recursive: true })
  • 写入本地文件
    file-drop/index.js:89
    writeFileSync(target, String(payload.content == null ? '' : payload.content), 'utf8')
  • 写入本地文件
    file-drop/index.js:92
    writeFileSync(target, buf)
  • 读取本地文件
    tool-vision/index.js:117
    const entries = await readdir(exportDir, { withFileTypes: true }).catch(() => []);
  • 读取本地文件
    tool-vision/index.js:122
    const info = await stat(join(exportDir, entry.name));
  • 删除本地文件
    tool-vision/index.js:123
    if (info.mtimeMs < cutoff) await rm(join(exportDir, entry.name), { force: true });
  • 读取本地文件
    tool-vision/index.js:178
    const existing = await readFile(path).catch(() => null);
  • 写入本地文件
    tool-vision/index.js:187
    await writeFile(disambiguated, data);
  • 写入本地文件
    tool-vision/index.js:191
    await writeFile(path, data);
  • 读取密钥环境变量
    tool-vision/index.js:350
    return process.env.OPENAI_API_KEY ?? "";
  • 读取本地文件
    tool-vision/index.js:387
    const info = await stat(abs).catch(() => null);
  • 读取本地文件
    tool-vision/index.js:400
    const data = await readFile(abs);
  • 发起网络请求
    tool-vision/index.js:429
    const response = await fetch(endpoint, {
  • 写入本地文件
    tool-vision/index.js:515
    mkdir(exportDir, { recursive: true }).catch(() => {});
  • 写入本地文件
    tool-vision/index.js:527
    mkdir(exportDir, { recursive: true }).catch(() => {});
  • 读取本地文件
    tool-vision/lib/vision-tools.js:148
    const info = await statP(target).catch(() => null)
  • 读取本地文件
    tool-vision/lib/vision-tools.js:154
    bytes = await readFileP(target)
  • 写入本地文件
    tool-vision/lib/vision-tools.js:312
    await mkdirP(dirname(target), { recursive: true })
  • 写入本地文件
    tool-vision/lib/vision-tools.js:313
    await writeFileP(target, data)
  • 读取密钥环境变量
    tool-vision/lib/vision-tools.js:1118
    return process.env.OPENAI_API_KEY ?? ''
  • 发起网络请求
    tool-vision/lib/vision-tools.js:1184
    const response = await fetch(endpoint, {
  • 读取本地文件
    tool-vision/lib/vision-tools.js:2289
    if (!existsSync(targetPath)) {
  • 读取本地文件
    tool-vision/lib/vision-tools.js:2304
    const executablePath = candidates.find((p) => existsSync(p))
  • 读取本地文件
    tool-vision/lib/vision-tools.js:2409
    if (!existsSync(tmp)) {
  • 读取本地文件
    tool-vision/lib/vision-tools.js:2414
    const data = await readFileP(tmp)
  • 删除本地文件
    tool-vision/lib/vision-tools.js:2446
    await rmP(tmp, { force: true })
扫描于 2026/11/4(0 天前) · 范围 全包扫描 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

社区实装还没有人打卡 · 装过的第一个就是你
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 图片问答
  • 定位裁剪
  • OCR转写

README

由 DeepSeek 最新模型翻译生成
👁️ dsh-vision-hub — 给 DeepSeek Harness EAC 装上眼睛的视觉全家桶 一个仓库,三件利器:像素级视觉工具 × 桥接内联预览 × 拖拽文件上传。 让纯文本的 DeepSeek 主模型真正"看得见"——图片进得来、看得懂、用得好。 纯文本模型(如 deepseek-v4-flash)天生看不见图。EAC 的请求管道又严格要求 "请求必须从会话日志推导",塞一张图进去,整个回合直接报错。dsh-vision-hub 用一套优雅的组合拳解决这件事:桥接 → 下沉 → 工具化,图片被无声地 "翻译"成模型能读的线索,再交给视觉模型逐像素看个明白。 🧩 三大组件 1️⃣ tool-vision/ — 像素级视觉工具箱(增强版 dsh-tool-vision 0.4.0) 一个 OpenAI 兼容端点,驱动 15 个视觉工具——不搞模型路由、不搞降级链、不搞独立设置页,你的 GLM 配置就是全部: | 工具 | 一句话 | | inspect_image | 看图问答的基础款,[图片: 路径] 标记的官方搭档 | | vision_describe | 看图问答 / 多图对比,可要结构化 JSON | | vision_ground | 像素级定位:告诉我"那个按钮"的精确坐标 |
展开完整文档(README 剩余 1 节)
👁️ dsh-vision-hub — 给 DeepSeek Harness EAC 装上眼睛的视觉全家桶

一个仓库,三件利器:像素级视觉工具 × 桥接内联预览 × 拖拽文件上传。
让纯文本的 DeepSeek 主模型真正"看得见"——图片进得来、看得懂、用得好。

纯文本模型(如 deepseek-v4-flash)天生看不见图。EAC 的请求管道又严格要求
"请求必须从会话日志推导",塞一张图进去,整个回合直接报错。dsh-vision-hub 用一套优雅的组合拳解决这件事:桥接 → 下沉 → 工具化,图片被无声地 "翻译"成模型能读的线索,再交给视觉模型逐像素看个明白。

🧩 三大组件

1️⃣ tool-vision/ — 像素级视觉工具箱(增强版 dsh-tool-vision 0.4.0)

一个 OpenAI 兼容端点,驱动 15 个视觉工具——不搞模型路由、不搞降级链、不搞独立设置页,你的 GLM 配置就是全部:

| 工具 | 一句话 |
| inspect_image | 看图问答的基础款,[图片: 路径] 标记的官方搭档 |
| vision_describe | 看图问答 / 多图对比,可要结构化 JSON |
| vision_ground | 像素级定位:告诉我"那个按钮"的精确坐标 |
| vision_detect | 把图里的元素全部点名:按钮、输入框、图标…带编号 |
| vision_crop | 按原图像素裁剪放大,细节看不清楚?裁出来看 |
| vision_pixel_diff | 逐像素对比两张图,差异比例 + 热图 + 最差区域 |
| vision_colors | 主色提取,给"照着图还原 UI"提供调色板 |
| vision_ocr | 图片文字转写,专注文字,不编造 |
| vision_long_screenshot_ocr | 长截图分块转写,聊天记录/长文档一键变 Markdown |
| vision_trace | 图标/Logo 矢量化,输出真彩色 SVG |
| vision_extract_foreground | 纯色背景抠图,一秒出透明 PNG |
| vision_html_screenshot | 本地 HTML 无头渲染截图(禁网,安全) |
| vision_screenshot | 桌面截屏,还能顺带识别屏幕内容 |
| vision_present | 把生成/导出的图片正式展示给用户 |
| vision_materialize | 附件落盘成真实文件路径 |

增强版相对上游的诚意(详见 docs/ENHANCEMENTS.md):

- ✨ 对话干净:桥接标记从一大段指令瘦身为 [图片: 路径],使用规则下沉到系统提示层,模型照读、界面不脏;
- 🛡️ 内容安全识别:图片被端点安全策略拒绝时返回明确的 VISION_CONTENT_FILTERED,告诉你"换张图",而不是一脸茫然;
- 🔁 限流自动重试:免费端点 429/5xx 自动退避,高峰期照样干活;
- 🐛 修掉了一批上游 bug:Uint8Array 编码、导出文件 NTFS 冒号陷阱、长截图无预算失控、缓存串模型、大文件 OOM…能修的都修了;
- 🔒 安全加固:路径逃逸拦截、HTML 截图禁网、导出防覆盖、启动清理。

2️⃣ bridge-preview/ — 桥接内联预览(0.1.1)

桥接把图片变成了文本标记,预览插件再把标记变回图片——对话里 [图片: …] 那行字在图像加载成功后自动隐藏,只留下清爽的内联缩略图,
点击可放大(灯箱)。新老标记格式都认,加载失败自动降级不捣乱。

3️⃣ file-drop/ — 拖拽文件上传(1.0.0)

视觉管图,它管"其余一切文件":PDF / Word / Excel / ZIP / 文本,拖进来或点上传——桌面壳直取原始路径,无壳环境上传到工作区换回路径。与视觉桥接天然互补:图片走视觉,文档走路径,各得其所。

⚡ 快速开始(5 分钟上手)

1. 装:把 README「交给 Agent 安装」的提示词发给任意 AI 助手,或手动装入
profile(详见 docs/INSTALL.md);
2. 配:把「交给 Agent 配置」的提示词发过去,或自己改 $DSH_HOME/settings.yaml 的 tool-vision 段(端点见 docs/presets.md);
3. 用:
- 粘贴一张图 → 对话里出现 [图片: 路径] 短标记 + 气泡内联缩略图;
- 问模型「图里是什么」→ 模型自动调用 inspect_image 看图回答;
- 需要像素级操作 → 让模型用 vision_ocr(读字)/ vision_colors(取色)/
vision_ground(定位)/ vision_crop(裁剪)……(全部工具见
docs/examples.md);
- 拖 PDF/Word 进来 → file-drop 直接换成路径给模型。

全部设置热加载,通常无需重启;只有安装/升级代码后才需要重启 dsh。

📸 效果一览

视觉工具颜色识别

像素级分析

与 EAC 原生设置共存

🚀 安装

三个组件各自独立,按需取用:

视觉工具箱(tool-vision 增强版)
dsh plugin add xing666173/dsh-vision-hub # 子目录:tool-vision/

桥接内联预览
dsh plugin add xing666173/dsh-bridge-preview

拖拽文件上传
dsh plugin add xing666173/dsh-file-drop

依赖:视觉工具箱需要 sharp / potrace / puppeteer-core(缺失时工具自动降级并提示安装命令,不影响其他工具)。

🤖 交给 Agent 安装(复制即用) 大多数人都是让 agent 帮忙装——把下面这段提示词直接发给你的 agent 即可 (在 DSH 对话里、或任意能执行命令的 AI 助手都行):

请帮我安装 dsh-vision-hub 视觉全家桶(https://github.com/xing666173/dsh-vision-hub), 包含三个组件:增强版 dsh-tool-vision(视觉工具箱)、dsh-bridge-preview(桥接内联预览)、
dsh-file-drop(拖拽文件上传)。

安装步骤:
1. 把仓库克隆或下载到本地,或者直接按子目录取文件:
- tool-vision/ → 增强版 dsh-tool-vision(覆盖我当前的内置/已安装版本)
- bridge-preview/ → 桥接内联预览插件
- file-drop/ → 拖拽上传插件
2. 三个组件都安装到我的 DSH profile(默认 web-desktop):
- 视觉工具箱:dsh-tool-vision 需要正确的 package.json(name=dsh-tool-vision)、 lib/ 目录、vendor/ 目录、cordis.patch.yml;依赖 sharp/potrace/puppeteer-core/ @deepseek-ai/schemastery 需要装进 profile 的 node_modules(或保证可解析)。
- bridge-preview 与 file-drop:按各自包结构安装并挂载。
3. 在 profile 的 cordis.patch.yml 中确认三个插件的挂载行存在(或按包内 cordis.patch.yml 自动挂载)。
4. 如果我的桌面是 EAC(内置插件机制),请同步到 resources/app/assets/plugins/ 对应目录,保证重启后不被覆盖。
5. 完成后提示我重启 dsh。

不要修改任何设置项,安装完即可。

🤖 交给 Agent 配置(复制即用)

安装完成后,把这段发给 agent 帮你配好视觉端点(把 YOUR_API_KEY 换成你的密钥;没有密钥就问我要):

请帮我配置 dsh-vision-hub 的视觉模型(保持 EAC 原生设置,不要新增设置页):

1. 在 $DSH_HOME/settings.yaml 的 tool-vision 段写入(没有该段就创建): tool-vision: baseURL: https://open.bigmodel.cn/api/paas/v4 model: glm-4v-flash maxTokens: 1024 apiKeyEnv: GLM_API_KEY apiKey: YOUR_API_KEY bridgeTextOnly: true requestGuard: true
2. 如果 profile 的 cordis.patch.yml 里有 tool-vision 挂载行,保持其 config 与上面一致(bridgeTextOnly/requestGuard)。
3. 检查依赖 sharp/potrace/puppeteer-core 可被插件解析;缺失时安装并说明。
4. 不要改动其他任何配置;改完告诉我是否需要重启。

说明:全部设置热加载,通常无需重启;只有安装新代码时才需要重启 dsh。

💡 想换视觉端点?任意 OpenAI 兼容 /chat/completions 都行——改 baseURL + model + apiKey 三项即可(例如阿里百炼 https://dashscope.aliyuncs.com/compatible-mode/v1 + qwen3-vl-flash)。

⚙️ 配置

视觉工具箱的设置全部在 EAC 原生设置页(设置 → 视觉模型),12 项配置热加载即时生效,无需重启。核心三项:

tool-vision:
baseURL: https://open.bigmodel.cn/api/paas/v4 # 任意 OpenAI 兼容端点 model: glm-4v-flash # 视觉模型 apiKey: sk-xxxx # 你的密钥

更多细节见 docs/ENHANCEMENTS.md(新增与修改、适配性、EAC 平台适配度)与 docs/COMPARISON.md(与上游对比)。另有 README.en.md 英文版。

🙏 致谢

这个仓库不是从零开始,而是站在巨人的肩膀上重新打磨:

- DeepSeek Harness EAC —— 感谢平台本身的开放架构:内置插件机制、 agent/pre-step 桥接缝、原生设置体系、系统提示装配,让"外挂眼睛"成为可能;也感谢 EAC 作者与 DeepSeek 团队对纯文本模型的坚持——正是这份坚持,催生了这套桥接方案。
- Scorp1o117 / dsh-tool-vision
—— 视觉桥接与 inspect_image 的原作者。我们在此基础上移植了 14 个像素级视觉工具、重构了桥接链路、做了大量稳定性与安全修复,但桥接的骨架与设计思路始终是他的。
- ysr666 / dsh-vision-router
—— 14 个 vision_* 工具的设计者。我们保留了他的工具语义(提示词、参数契约、像素后处理),砍掉了重型架构,让工具在单一端点下轻装上阵。
- dsh-bridge-preview 与 dsh-file-drop —— 本仓库维护者(xing666173) 自己编写/适配的两个配套插件。

没有上游的开放与慷慨,就没有今天的全家桶。感谢每一位把代码开源出来的开发者。❤️

📄 License

MIT — 三方署名与致谢:Scorp1o117(dsh-tool-vision)
· ysr666(dsh-vision-router)
· xing666173(增强与维护)。详见 LICENSE。
预览分享卡片长什么样 ↓xing666173/dsh-vision-hub
分享 · DeepSeek Harness Hub
xing666173/dsh-vision-hub

让纯文本模型看图问答、定位裁剪与 OCR 转写

这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。
认领条目 →
回到顶部