为 DeepSeek Harness 增加外挂识图模型:圆形鲸鱼按钮、发送图片识图自动回传、模型自主截图+识图工具、多协议自动适配、小白一键安装(未装 Node.js 自动下载)
33.3/100
综合分
10
GitHub 星标
88
npm 周下载
—/5
用户评分
数据截至 2026/9/17 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add @linenxi-ctrl/dsh-visionnpm 源 · @linenxi-ctrl/dsh-vision 的发布者账号已校验与本仓库一致
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:仅索引
是什么
dsh 原生插件 · vision
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 80 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查✓ 自动检查通过展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✓npm 包@linenxi-ctrl/dsh-vision @ 0.2.6
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/17 08:15:22
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
读写/删除本地文件发起外部网络请求
查看扫描证据(共 57 处,展示前 35 条)
- 发起网络请求lib/index.js:229
const req = mod.request(opts, collect); - 发起网络请求lib/index.js:246
const connectReq = http.request({ - 发起网络请求lib/index.js:259
const req = https.request({ - 读取本地文件lib/tool.js:98
const data = await readFile(args.image_path); - 发起网络请求lib/client.js:185
const res = await fetch('/api/vision/recognize', { - 发起网络请求lib/client.js:304
const res = await fetch('/api/vision/models', { - 发起网络请求lib/client.js:424
const res = await fetch('/api/vision/config', { - 发起网络请求lib/client.js:441
const res = await fetch('/api/vision/config'); - 读取本地文件install.mjs:50
for (const c of candidates) if (c && existsSync(c)) return c; - 读取本地文件install.mjs:69
if (existsSync(EN_DIR)) rmSync(EN_DIR, { recursive: true, force: true }); - 删除本地文件递归install.mjs:69
if (existsSync(EN_DIR)) rmSync(EN_DIR, { recursive: true, force: true }); - 读取本地文件install.mjs:73
if (existsSync(profilesDir)) { - 读取本地文件install.mjs:74
for (const name of readdirSync(profilesDir)) { - 读取本地文件install.mjs:76
if (!statSync(profileDir).isDirectory()) continue; - 读取本地文件install.mjs:78
if (!existsSync(nm)) continue; - 删除本地文件递归install.mjs:80
if (existsSync(target)) rmSync(target, { recursive: true, force: true }); - 写入本地文件install.mjs:102
writeFileSync(patchPath, fixed, 'utf8'); - 写入本地文件install.mjs:124
writeFileSync(patchPath, content, 'utf8'); - 写入本地文件install.mjs:159
mkdirSync(presetsDir, { recursive: true }); - 写入本地文件install.mjs:168
writeFileSync(cordisPath, lines.join('\n'), 'utf8'); - 删除本地文件递归install.mjs:176
if (existsSync(visionDir)) rmSync(visionDir, { recursive: true, force: true }); - 删除本地文件递归install.mjs:191
if (existsSync(visionDir)) rmSync(visionDir, { recursive: true, force: true }); - 写入本地文件install.mjs:210
writeFileSync(settingsPath, s, 'utf8'); - 读取本地文件uninstall.mjs:42
for (const c of candidates) if (c && existsSync(c)) return c; - 读取本地文件uninstall.mjs:124
if (existsSync(enDir)) { - 删除本地文件递归uninstall.mjs:125
rmSync(enDir, { recursive: true, force: true }); - 读取本地文件uninstall.mjs:131
if (!IN_NODE_MODULES && existsSync(profilesDir)) { - 读取本地文件uninstall.mjs:132
for (const name of readdirSync(profilesDir)) { - 读取本地文件uninstall.mjs:134
try { if (!statSync(profileDir).isDirectory()) continue; } catch { continue; } - 读取本地文件uninstall.mjs:138
if (existsSync(scoped)) { - 删除本地文件递归uninstall.mjs:139
rmSync(scoped, { recursive: true, force: true }); - 删除本地文件递归uninstall.mjs:144
rmSync(legacy, { recursive: true, force: true }); - 写入本地文件uninstall.mjs:153
writeFileSync(patchPath, ensureTopLevelArray(after), 'utf8'); - 删除本地文件递归uninstall.mjs:163
rmSync(visionDir, { recursive: true, force: true }); - 写入本地文件uninstall.mjs:173
writeFileSync(settingsPath, after, 'utf8');
扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-tools@deepseek-ai/dsh-system-prompt@deepseek-ai/dsh-settings@deepseek-ai/dsh-host-webserver@deepseek-ai/schemastery给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 发送图片自动识图回传
- 模型自主截图识图
- 多协议自动适配
最近更新
在 GitHub 查看全部 →v0.2.62026-08-15
· @linenxi-ctrl/dsh-vision v0.2.6
· 🐛 修复
· 卸载脚本:移除 vision 挂载行后,若 cordis.patch.yml 只剩注释或空,会写回合法空数组 [](之前写回非数组导致 DSH 报 "must be a top-level YAML array" 打不开)。
· 📦 安装 / 卸载
· 安装:dsh plugin --profile web add @linenxi-ctrl/dsh-vision 或 install.bat
· 卸载:uninstall.bat / uninstall.sh / uninstall.mjs
v0.2.52026-08-15
· @linenxi-ctrl/dsh-vision v0.2.5(修复 DSH 打不开)
· 🐛 修复(重要)
修复两个导致 DeepSeek Harness 无法启动的问题:
1. package.json 带 UTF-8 BOM:JSON.parse 报 "Unexpected token" —— 已去 BOM,后续统一 UTF-8 无 BOM 保存。
2. client.js 注册 id 未随包名更新:ModuleLoader.load({ id: 'dsh-vision' }) 应为 '@linenxi-ctrl/dsh-vision',否则报 "loaded without registering" —— 已修复。
如果你装的是 0.2.4 及更早版本且 DSH 打不开:升级到本版即可(重启 DSH)。
· 📦 安装
· npm:dsh plugin --profile web add @linenxi-ctrl/dsh-vision
· 手动:解压 zip 后双击 install.bat / bash install.sh
v0.2.42026-08-15
· @linenxi-ctrl/dsh-vision v0.2.4
· 🐛 修复
· uninstall.bat 转 CRLF 换行:修复双击时 cmd 报一堆 "不是内部或外部命令" 碎片错误的问题。
· ✨ 功能
· 一键安装(install.bat / install.sh / npm)
· 一键卸载(uninstall.bat / uninstall.sh / uninstall.mjs),方便更新
· 圆形 DeepSeek 鲸鱼按钮、图片识图自动回传、模型自主截图识图、多协议适配
· 📦 安装
· npm:dsh plugin --profile web add @linenxi-ctrl/dsh-vision
· 手动:解压 zip 后双击 install.bat / bash install.sh
数据来自仓库的 GitHub Release,可能与插件实际版本不一致。
README
由 DeepSeek 最新模型翻译生成dsh-vision —— DeepSeek Harness 外挂识图模型插件
给 DeepSeek Harness 加上「外挂识图模型」能力:本来不具备视觉能力的模型,借助一个外部视觉模型就能「看懂」图片与屏幕,地址、密钥、提示词都能自定义。
功能
1. 网页配置按钮与面板:页面右下角出现一个 DeepSeek 鲸鱼圆形按钮(可拖动),点击即可配置外挂识图模型的 API 地址、密钥、模型名、识图提示词(skill)、代理与超时。
2. 发送图片识图并自动回传:点鲸鱼按钮打开面板,点「📤 发送图片」选图,插件会先把它发给外挂识图模型,等识别完成后把识别文本自动作为消息发回当前会话(无需手动复制粘贴),DeepSeek 基于识别文本作答。
3. 模型自己截图 + 识图:插件为 agent 注入 screenshot(截屏)与 recognize_image(识图)两个工具,并注入提示词,模型可自行「截图 → 识图 → 等待结果」。
4. 自动适配识图 API 协议:内置 OpenAI Chat Completions、OpenAI Responses、Anthropic Messages、Google Gemini 四种协议,并按 apiBase 自动探测;另有 custom 模板协议适配任意长尾接口。
展开完整文档(README 剩余 1 节)
dsh-vision —— DeepSeek Harness 外挂识图模型插件
给 DeepSeek Harness 加上「外挂识图模型」能力:本来不具备视觉能力的模型,借助一个外部视觉模型就能「看懂」图片与屏幕,地址、密钥、提示词都能自定义。
功能
1. 网页配置按钮与面板:页面右下角出现一个 DeepSeek 鲸鱼圆形按钮(可拖动),点击即可配置外挂识图模型的 API 地址、密钥、模型名、识图提示词(skill)、代理与超时。
2. 发送图片识图并自动回传:点鲸鱼按钮打开面板,点「📤 发送图片」选图,插件会先把它发给外挂识图模型,等识别完成后把识别文本自动作为消息发回当前会话(无需手动复制粘贴),DeepSeek 基于识别文本作答。
3. 模型自己截图 + 识图:插件为 agent 注入 screenshot(截屏)与 recognize_image(识图)两个工具,并注入提示词,模型可自行「截图 → 识图 → 等待结果」。
4. 自动适配识图 API 协议:内置 OpenAI Chat Completions、OpenAI Responses、Anthropic Messages、Google Gemini 四种协议,并按 apiBase 自动探测;另有 custom 模板协议适配任意长尾接口。
文件结构
dsh-vision/
├── install.bat # Windows 一键安装(双击) ├── install.sh # macOS/Linux 一键安装 ├── install.mjs # 安装脚本本体(npm 场景只做 agent 工具平面;目录场景全自动) ├── bootstrap-node.ps1 # Windows 引导脚本:未装 Node.js 时从国内镜像自动下载免安装版 ├── package.json # 包定义(dsh.bundle + dsh.client 声明;tool 为独立子路径) ├── cordis.patch.yml # 插件挂载声明(dsh.bundle.patch 自动应用到 profile layer) ├── lib/ │ ├── index.js # host 平面插件:识图服务 + 协议适配 + settings 配置 + HTTP 路由 │ ├── tool.js # agent 工具插件:recognize_image / screenshot + 提示词注入 │ └── client.js # 客户端插件:鲸鱼按钮 / 配置面板 / 发送图片识图 / 自动回传 └── README.md
工作原理
[用户点鲸鱼按钮选图] [模型调用工具]
│ │
▼ ▼
client 转 base64 发送 screenshot 工具截屏 │ │ ▼ ▼ POST /api/vision/recognize recognize_image 工具 │ │ ▼ ▼ host 插件 ctx.vision 服务 ──► 协议自动适配后调用外挂识图 API │ │ ▼ ▼ 识别文本 → 自动注入当前会话 识别文本返回给模型
识图请求在 host(Node)侧发起,因此不受浏览器 CORS 限制;图片请求走同源 /api/vision/recognize,同样无 CORS 问题。
安装
两种方式任选:npm 安装(标准,推荐)或手动 / 离线(下载 zip,无需 pnpm)。
方式一:npm 安装(推荐)
需要系统已装 Node.js 18+ 与 pnpm。
在 DSH 的 web profile 安装本插件(DSH 自动把 cordis.patch.yml 加入 profile layer)
dsh plugin --profile web add @linenxi-ctrl/dsh-vision
(可选)配置 agent 工具平面:让模型能自己截图 + 识图
node ~/.dsh/profiles/web/node_modules/@linenxi-ctrl/dsh-vision/install.mjs
安装后无需手动改任何配置文件:package.json 的 dsh.bundle.patch 声明会被 DSH 自动 reconcile 进 profile 的 dsh.profile.bundles,cordis.patch.yml 即成为该 profile 的一个 bundle layer。
方式二:手动 / 离线(无需 pnpm,小白友好)
从 Releases 下载 zip 解压:
1. Windows 双击 install.bat,macOS/Linux 运行 bash install.sh——无需预装 Node.js:脚本检测不到时会自动从国内镜像(npmmirror / 华为云 / 腾讯云)下载免安装版(无需管理员权限);
2. 脚本会自动:复制英文副本、复制进每个 profile 的 node_modules、在 cordis.patch.yml 加 vision 行、创建 agent preset vision(复制随附 standard 并加入识图工具)并设为默认;
3. 重启 DSH(关闭后重新 dsh web)。
实测要点(DSH 0.1.0-rc.6):host + client 插件(cordis.patch.yml)的 name 必须用「包名」,插件须在 profile 的 node_modules 下;agent 工具插件(preset)的 name 支持绝对路径(自动转 file://);agent preset 不能叫 standard(会被随附 standard 遮蔽)。
更新与卸载
更新:先卸载旧版,再安装新版即可(cordis.patch.yml 与 preset 会自动重建)。
一键卸载:
- Windows:双击 uninstall.bat
- macOS/Linux:运行 bash uninstall.sh
- 任意平台:node uninstall.mjs
卸载脚本会自动:删除英文副本与 profile node_modules 里的插件、从 cordis.patch.yml 移除 vision 挂载行、删除 agent preset「vision」、恢复 settings.yaml 的默认 preset。
npm 方式安装的插件,请先用 dsh plugin --profile web remove @linenxi-ctrl/dsh-vision 卸载 npm 包,再跑上面的卸载脚本清理 preset 与设置。
配置
点页面右下角鲸鱼按钮,或直接编辑 $DSH_HOME/settings.yaml 中的 vision 段:
| 字段 | 默认值 | 说明 |
| apiBase | https://api.openai.com/v1 | 识图模型地址(按所选协议填到基础路径即可) |
| apiKey | 空 | API 密钥(secret,不回显) |
| model | gpt-4o-mini | 模型名称 |
| protocol | auto | 协议:auto / openai-chat / openai-responses / anthropic / gemini / custom |
| prompt | 见下 | 识图提示词(skill),可自定义 |
| proxy | 空 | 可选 HTTP 代理,如 http://127.0.0.1:65532 |
| timeoutMs | 60000 | 单次识图超时(毫秒) |
| requestTemplate | 空 | 仅 custom:请求体 JSON 模板 |
| responsePath | 空 | 仅 custom:响应文本取路径,如 choices.0.message.content |
默认识图提示词:
你是一名专业的图像识别助手。请仔细观察用户提供的图片……(详细描述 + 逐字转录文字 + 截图场景重点描述)
使用
- 发送图片识图:打开一个会话后,点右下角鲸鱼按钮 → 面板点「📤 发送图片」选图。识别期间右上角显示「外挂模型正在识图当中」,完成后自动把识别文本发回当前会话。
- 模型自主识图:直接对模型说「看看我现在屏幕上的报错」,模型会调用 screenshot 截图、再调用 recognize_image 识图并继续。
API 协议自动适配
protocol 默认 auto,按 apiBase 自动识别;也可手动指定:
| 协议 | 识别条件 / 用法 | 请求要点 | 响应取文本 |
| openai-chat | 默认;apiBase 填到 /v1 | POST /chat/completions,image_url 内嵌 data URL | choices[0].message.content |
| openai-responses | apiBase 含 /responses | POST /responses,input_image | output[].content[].text |
| anthropic | apiBase 含 anthropic | POST /v1/messages,x-api-key 头,source.base64 | content[].text |
| gemini | apiBase 含 gemini/generativelanguage/googleapis | POST /models/{model}:generateContent,inline_data,x-goog-api-key 头 | candidates[0].content.parts[].text |
| custom | 手动指定 | 按 requestTemplate 构造 | 按 responsePath 取路径 |
custom 模板协议
custom 用于适配上述四种之外的长尾接口:
- requestTemplate:请求体 JSON 模板。占位符必须裸写(不带引号),替换时会自动补上 JSON 引号。支持的占位符:
- {{model}} → 模型名
- {{prompt}} → 识图提示词
- {{image}} → 图片纯 base64(不含 data: 前缀)
- {{dataUrl}} → 完整 data:image/...;base64,...
- {{mime}} → 图片 MIME 类型
示例(等价于 OpenAI Chat):
{"model":{{model}},"messages":[{"role":"user","content":[{"type":"text","text":{{prompt}}},{"type":"image_url","image_url":{"url":{{dataUrl}}}}]}]}
- responsePath:从响应 JSON 取文本的点号路径,数字为数组下标,如 choices.0.message.content、data.text、result.0.content。
- 鉴权默认走 Authorization: Bearer <apiKey>(apiKey 为空则不携带);需要特殊鉴权头的接口暂不支持,可提 issue 扩展。
提示:占位符若误加了引号(写成 "{{image}}"),替换后会得到 ""base64"" 导致 JSON 非法。请保持裸写。
故障排查
| 现象 | 处理 |
| 识图失败:HTTP 401/403 | apiKey 未填或填错,去面板重新保存密钥 |
| 识图失败:HTTP 404 | apiBase 拼错或与协议不匹配;确认填到基础路径(如 OpenAI 填到 /v1,Anthropic 填 https://api.anthropic.com,Gemini 填到 /v1beta) |
| 识图失败:结果为空 | 协议识别不对时手动指定 protocol;custom 协议检查 responsePath 是否正确 |
| 外网直连不通 | 在 proxy 填 http://127.0.0.1:65532(或你自己的代理) |
| 点「发送图片」没反应 | 确认已打开一个会话;确认右下角有鲸鱼按钮(client 插件已挂载) |
| 模型不调用识图工具 | 确认 tool.js 已加进 preset 的 agent.cordis.yml,且该会话使用该 preset |
| 截图失败 | Windows 下需 PowerShell 可用(System.Drawing);macOS 用 screencapture;Linux 需 ImageMagick import |预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
linenxi-ctrl/dsh-vision
为 DeepSeek Harness 增加外挂识图模型:圆形鲸鱼按钮、发送图片识图自动回传、模型自主截图+识图工具、多协议自动适配、小白一键安装(未装 Node.js 自动下载)
相关插件 · 视觉能力
智能体工作台Devin-AXIS/iPolloWork
企业级、本地优先的智能体工作台,面向个人和智能体团队——一个工作区,容纳多个智能体引擎;一套统一体系,管理插件和技能;支…
★ 7,364已汉化DSH
72
开源设计工作台nexu-io/open-design
OpenDesign:首个协作式 AI 设计智能体工作区
★ 105,709已汉化DSH
71.8
GPT 图像提示词库freestylefly/awesome-gpt-image-2
Prompt as Code | GPT Image 2 / 2.5 提示词与案例库,530+ 个案例、20+…
★ 34,534已汉化DSH
71.5
多智能体编码工作区spacering-net/codeg
多智能体协作的 AI 编程工作区:汇总 Claude Code、Codex、OpenCode、Pi、Grok Build 等来源的会话。支持桌面应用、自托管服务器或 Docker。
★ 4,319已汉化DSH
71.5
AI 用量桌面小部件Javis603/token-monitor
EN | 简 | 繁 | KO | JA | PT
★ 3,533已汉化DSH
71.1
架构图生成器tt-a1i/archify
把你想理解、规划或分享的事,变成可以互动的可视化作品。
★ 93,105已汉化DSH
71.1
这是你的仓库?认领条目