DeepSeek Harness 插件

linenxi-ctrl/dsh-vision

Star 数 ★ 9 分类 工具与能力 收录于 2026-08-14

外挂识图插件:鲸鱼按钮配置面板、图片识图自动回传、模型自主截图识图工具。

安装

# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)

dsh plugin --profile web add github:linenxi-ctrl/dsh-vision

GitHub 来源的插件在安装时会在你的机器上执行构建脚本。请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。

README

License Platform DSH Version npm

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.jsondsh.bundle.patch 声明会被 DSH 自动 reconcile 进 profile 的 dsh.profile.bundlescordis.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 遮蔽)。

配置

点页面右下角鲸鱼按钮,或直接编辑 $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/completionsimage_url 内嵌 data URL choices[0].message.content
openai-responses apiBase/responses POST /responsesinput_image output[].content[].text
anthropic apiBaseanthropic POST /v1/messagesx-api-key 头,source.base64 content[].text
gemini apiBasegemini/generativelanguage/googleapis POST /models/{model}:generateContentinline_datax-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.contentdata.textresult.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
识图失败:结果为空 协议识别不对时手动指定 protocolcustom 协议检查 responsePath 是否正确
外网直连不通 proxyhttp://127.0.0.1:65532(或你自己的代理)
点「发送图片」没反应 确认已打开一个会话;确认右下角有鲸鱼按钮(client 插件已挂载)
模型不调用识图工具 确认 tool.js 已加进 preset 的 agent.cordis.yml,且该会话使用该 preset
截图失败 Windows 下需 PowerShell 可用(System.Drawing);macOS 用 screencapture;Linux 需 ImageMagick import

内容来自项目 README(GitHub)↗

链接

同类插件

查看整个分类 →