dsh-see-image

by tiefeiyu

2 视觉与多模态github收录于 08-23

DeepSeek Harness 的 see_image 视觉工具插件——经任意 OpenAI 兼容视觉模型描述图片

A see_image vision tool plugin for DeepSeek Harness — describe images through any OpenAI-compatible vision mod

安装

dsh plugin --profile web add github:tiefeiyu/dsh-see-image

GitHub 源码安装:首次需按提示配置 allowBuilds 构建授权后重试

安装与环境配置指引、插件开发教程见 DSH 中文社区文档 ↗

安装即在你的机器上以你的权限运行第三方代码——它可读写文件、使用凭据、访问网络,DSH 的工具审批不会为插件代码加沙箱。「检测到 manifest」仅代表发现 dsh.bundle / dsh.plugin 清单,不构成兼容性或安全审查;安装前请审阅源码,不熟悉的插件先在不含密钥的环境试用。

README

目录

CI Version License DSH

English | 中文

给 DSH(DeepSeek Harness)的纯文本模型装上"眼睛":注册一个 see_image 工具,把图片文件路由给任意 OpenAI 兼容的视觉模型,描述以文本返回——主模型无需支持图像输入、无需切换模型、无需子代理编排。默认后端 GitHub Copilot gpt-4.1(Free 计划可用),内置令牌自动续期。安装 = 把文件夹复制进 DSH profile + 一行 cordis.patch.yml 挂载;热加载,零 npm 安装。

模型 → see_image(file_path, question?)
        │ 1. 经 DSH 文件服务读取图片(沙箱/观察策略生效)
        │ 2. base64 编码
        │ 3. POST {baseURL}/chat/completions
        ▼
    视觉模型 → 文字描述 → 模型基于描述回答

实测演示

输入 assets/demo-chart.png(本仓库自带),提问"读这张柱状图:每个季度的数值和颜色?哪个季度最高?":

demo chart

see_image 返回:

标题: Quarterly Revenue (M$) 每个季度的数值和颜色: Q1:85(蓝色)、Q2:140(红色)、Q3:115(绿色)、Q4:175(橙色) 最高的季度: Q4(175,橙色)

(GitHub Copilot Free 计划 gpt-4.1 实测输出,约 5 秒。)

特性

  • 任意 OpenAI 兼容 VLM:智谱 / 百炼 / 豆包 / SiliconFlow / Ollama 本地 / OpenRouter……改三个配置项即可
  • GitHub Copilot 一等支持:默认后端 gpt-4.1(Free 计划可用),内置令牌自动续期,无需任何 key 管理
  • 无工具数问题:请求由插件直接发起,不携带 DSH 的工具列表,不受 OpenAI 系网关 128 工具上限影响
  • 零 npm 依赖:复用 DSH 宿主的 @deepseek-ai/dsh-tools / schemastery(profile 的扁平 node_modules 自动解析)
  • 热加载:修改 cordis.patch.yml 即生效(实测无需重启;保守场景重启 dsh web)

安装(3 步)

  1. (可选)克隆仓库替代解压 zip:

    git clone https://github.com/tiefeiyu/dsh-see-image
    
  2. 复制插件到 profile 目录($DSH_HOME 通常是 ~/.dsh,以 web profile 为例):

    $DSH_HOME/profiles/web/plugins/dsh-see-image/
    ├── index.js        # 插件本体
    ├── scripts/        # Copilot 令牌脚本(可选,用 Copilot 后端才需要)
    ├── package.json
    ├── README.md
    └── LICENSE
    
  3. 挂载——在 $DSH_HOME/profiles/web/cordis.patch.yml 追加:

    - insert:
        - id: local-see-image
          name: './plugins/dsh-see-image/index.js'
          config:
            baseURL: 'https://api.individual.githubcopilot.com'   # 默认:GitHub Copilot
            model: gpt-4.1
            apiKeyEnv: VISION_API_KEY    # 非 Copilot 后端读此环境变量
            maxTokens: 1024
            timeoutMs: 90000
            maxBytes: 15728640
    
  4. 验证:等待约 6 秒(热加载),新会话中工具列表出现 see_image,即可使用。

配置

键 默认值 说明
baseURL https://api.individual.githubcopilot.com OpenAI 兼容端点;插件追加 /chat/completions
model gpt-4.1 视觉模型 ID
apiKeyEnv VISION_API_KEY 非 Copilot 后端读取 API key 的环境变量名;留空则不带 Authorization(本地免 key 端点,如 Ollama)
maxTokens 1024 输出上限(智谱 glm-4v-flash 上限 1024,换大模型可调高)
timeoutMs 90000 请求超时
maxBytes 15728640 图片大小上限(15MB)
prompt (中文详细描述指令) 默认提问;调用时传 question 参数优先

后端切换示例

只需改 config 三行(baseURL / model / apiKeyEnv),再设置环境变量(setx VISION_API_KEY "你的key" 或写入 ~/.dsh/.env):

后端 baseURL model 说明
GitHub Copilot(默认,免费额度) https://api.individual.githubcopilot.com gpt-4.1 走内置令牌流程(见下),不需要 VISION_API_KEY
智谱(免费档) https://open.bigmodel.cn/api/paas/v4 glm-4v-flash 注册 bigmodel.cn 拿 key(格式 id.secret)
阿里百炼 https://dashscope.aliyuncs.com/compatible-mode/v1 qwen3-vl-flash 截图/GUI 场景可换 qwen3-vl-plus
SiliconFlow https://api.siliconflow.cn/v1 Qwen/Qwen2.5-VL-32B-Instruct
火山豆包 https://ark.cn-beijing.volces.com/api/v3 doubao-seed-2-1-turbo-260628 Ark 模型 ID 带日期后缀
Ollama 本地(离线) http://localhost:11434/v1 qwen3-vl:4b apiKeyEnv: '',完全离线免费

GitHub Copilot 令牌(默认后端专用)

插件内置自动续期:Copilot 访问令牌 30 分钟过期,插件每次调用前检查 exp,过期时用 OAuth 刷新令牌自动换新并写回 ~/.dsh/.credentials.yaml。

只需一次性准备(约 1 分钟,需浏览器授权 GitHub):

  1. 运行打包内的登录脚本:

    node scripts/copilot-login.mjs
    
  2. 脚本输出授权网址和授权码(如 https://github.com/login/device + XXXX-XXXX),在浏览器打开网址、登录 GitHub(有 Copilot 订阅的账号,Free 计划即可)、输入授权码并授权。

  3. 脚本自动保存两处:

    • ~/.dsh/copilot-oauth.json —— OAuth 刷新令牌(长期有效,勿外泄)
    • ~/.dsh/.credentials.yaml 的 COPILOT_GITHUB_TOKEN —— 当前访问令牌(插件自动续期)

OAuth 令牌失效(罕见)时重跑登录脚本即可。也可手动用 node scripts/refresh-copilot-token.mjs 立即续期。

使用

对话中直接说"看看这张图 / 读一下这个截图",模型会自己定位文件并调用工具;也可以明确指定问题:

see_image(file_path="C:\\Users\\me\\Desktop\\error.png", question="这个报错的完整文本是什么?")

question 可省略,默认输出:场景 → 逐字转录文字 → 颜色/形状/布局细节 → 图表/UI/报错解释(中文)。

兼容性与已知说明

  • 实测环境:@deepseek-ai/dsh 0.1.0-rc.6(web profile,Windows;其他平台应一致)
  • 插件以宿主全局层注册,DSH 所有入口(web/TUI/远程)的会话均可见
  • 不覆盖 Anthropic / Gemini 原生协议(Gemini 可用其 OpenAI 兼容入口绕行)
  • 修改插件代码后若热加载未生效(ESM 模块缓存),把文件名换成新路径(如 index.v2.js)并同步更新 cordis.patch.yml 的 name,或重启 dsh web

License

MIT

原始 README: https://github.com/tiefeiyu/dsh-see-image/blob/main/README.zh-CN.md ↗