dsh-image-reader:为 DeepSeek Harness 智能体提供 read_image 图片读取工具

前言

DeepSeek Harness 的插件化思路,是把不同能力挂载到智能体上。对只能处理文本的智能体来说,截图、图表或照片里的内容无法直接成为推理输入。dsh-image-reader 提供一个模型可见的 read_image 工具,让智能体通过 OpenAI-compatible vision endpoint 读取图片,并基于图片内容回答问题。

插件定位

dsh-image-reader 是一个 MIT 许可证的 DSH 插件,仓库 owner 为 zcXie777,仓库地址为:

https://github.com/zcXie777/dsh-image-reader

它的核心能力是向 DeepSeek Harness 智能体暴露一个 read_image 工具。工具接收工作区内的图片路径,并可选择携带一个问题;随后插件调用已配置的视觉接口,将回答返回给模型。

核心能力

dsh-image-reader 提供以下已核实能力:

  • 提供一个模型侧 read_image 工具,供 DeepSeek Harness 智能体调用。
  • 通过任意 OpenAI-compatible vision endpoint 读取图片。
  • read_image 支持传入图片路径和可选的 query
  • 支持以下配置项:provider.baseUrlprovider.modelprovider.apiKeyEnvlangtimeoutMsmaxImageBytesallowedDirs
  • API key 在每次调用时从环境变量读取,不写入配置。
  • 输入路径会结合 workspace 和 allowedDirs 通过 realpath 解析,避免通过 symbolic link 绕过允许目录。
  • 上传图片前会进行大小限制和扩展名检查。
  • 本地验证已通过:npm run typechecknpm run buildnpm test,其中测试用例数量为 16。

安装与启用

运行环境需要满足:

Node engines: ^22.19.0 || >=24.0.0
Peer dependencies: @deepseek-ai/cordis ^4.0.1 and @deepseek-ai/dsh-tools ^0.0.1-rc.1

先克隆仓库并构建一次。lib/ 目录不会提交到仓库,因此克隆后需要执行 npm run build

git clone https://github.com/zcXie777/dsh-image-reader.git
cd dsh-image-reader
npm install
npm run build          # lib/ is not committed; build once after cloning
cd ..
dsh plugin --profile web add "$PWD/dsh-image-reader"
dsh plugin --profile headless add "$PWD/dsh-image-reader"
dsh --profile web --dump-config | grep image-reader

安装后,如果正在运行 Web profile,需要重启该 profile。

配置说明

provider.baseUrlprovider.model 是必填项。插件不预设具体供应商,需要使用者在 profile patch row 中填写对应视觉服务的 base URL 和模型名称。

下面是一个配置示例:

- id: image-reader
  config:
    provider:
      baseUrl: "https://vision.example.com/v1"
      model: "your-multimodal-model"
      apiKeyEnv: "VISION_API_KEY"
    lang: "zh"
    timeoutMs: 60000
    maxImageBytes: 10485760
    allowedDirs: []

启动 profile 前,需要先把 API key 放到环境变量中:

export VISION_API_KEY=sk-...

各配置项含义如下:

  • provider.baseUrl:OpenAI-compatible vision endpoint 的 base URL,必填。
  • provider.model:多模态模型名称,必填。
  • provider.apiKeyEnv:保存 API key 的环境变量名,示例中使用 VISION_API_KEY
  • lang:回答语言,支持 zhen
  • timeoutMs:整次请求超时时间,单位毫秒。
  • maxImageBytes:单张图片允许的最大编码字节数。
  • allowedDirs:额外允许读取的目录列表;workspace 本身允许使用。

典型用法

在对话中,可以让智能体调用 read_image,并指定图片路径和可选问题:

read_image image="screenshot.png" query="What error is shown in this dialog?"

如果只需要读取图片并让模型基于图片内容回答后续问题,也可以只传路径:

read_image image="diagram.png"

适用场景与注意

适合需要让 DSH 智能体直接查看工作区图片的场景,例如读取截图、图表或照片中的内容,并围绕该图片回答问题。

使用前注意以下几点:

  • 该插件尚未对真实 live vision endpoint 完成端到端验证。本地测试覆盖了 mock fetch 的请求/响应逻辑,但依赖真实视觉服务前,建议先用真实 VISION_API_KEY 做一次 smoke test。
  • 插件会运行在当前 DSH 进程权限内。安装前建议检查源码和 MIT 许可证。
  • API key 每次调用时从环境变量读取,不保存在配置中。
  • 输入路径会通过 realpath 解析到 workspace 和 allowedDirs 内,symbolic link 不能绕出允许目录。
  • 图片上传前会进行大小限制和扩展名检查。
  • 安装后需要重启正在运行的 Web profile。
  • 需要满足 Node engines:^22.19.0 || >=24.0.0,以及 peer dependencies:@deepseek-ai/cordis ^4.0.1@deepseek-ai/dsh-tools ^0.0.1-rc.1

结尾

dsh-image-reader 的价值很集中:给只能处理文本的 DeepSeek Harness 智能体增加一个 read_image 工具,使其可以通过 OpenAI-compatible vision endpoint 读取工作区图片并回答问题。它通过 dsh plugin 安装,配置重点是 provider.baseUrlprovider.model 和 API key 环境变量。

仓库地址:

https://github.com/zcXie777/dsh-image-reader

DSH 社区目录是独立站点,可用来发现此类插件;不要把目录页理解为 DeepSeek 或幻方的官方应用商店。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜