dsh-read-image-view:在 DSH Web 界面直接显示 read_image 生成的本地图片

在 DeepSeek Harness 中开发工具时,如果使用 read_image 读取本地文件,生成的工具卡通常会显示文件名和大小,但没有视觉反馈。这需要人工去打开图片。下面介绍的插件直接在 Web 界面的工具卡中渲染这些图片。

插件定位

这是一个纯客户端插件,用于在 DSH Web 聊天界面中内联显示 read_image 生成的图片,支持缩略图和 Lightbox。它由 dblate 维护,使用 MIT 许可证。

核心功能

  • 内联缩略图:工具卡内联显示图片缩略图(长边 240px,宽高比钳制、不放大),附带格式、尺寸、体积摘要行。
  • Lightbox 查看:点击缩略图打开全屏 Lightbox,支持通过 Esc 键、点击遮罩或关闭按钮退出。
  • 错误处理:加载失败显示可重试的错误行;工具失败显示错误摘要。
  • 纯客户端实现:不修改宿主代码、不新增会话事件、不影响模型上下文。渲染完全来自已记录的 tool/result 事件,支持会话 resume / fork 后图片依然显示。
  • 格式支持:仅支持 PNG / JPEG / WebP / GIF(SVG 被拒绝)。
  • 工具卡接管:工具卡是 keyed read_image 的接管式注册。如果官方未来内置了 read_image 的图片卡片,两者互为替换(后加载者生效)。

安装与启用

使用官方提供的命令安装:

dsh plugin --profile web add github:dblate/dsh-read-image-view

安装后重启 dsh web 生效。仅 patch 层支持热重载。

开发与热重载

从源码构建时,需先安装依赖并运行构建脚本:

pnpm install
pnpm run build

如果从源码安装,pnpm 默认会拒绝执行构建脚本。需要在 profile 的 pnpm-workspace.yaml 中允许构建脚本:

# $DSH_HOME/profiles/web/pnpm-workspace.yaml
allowBuilds:
  dsh-read-image-view: true

注意:pnpm 不同版本打印的键格式不同。pnpm 10 使用裸包名,pnpm 11 使用带 codeload URL 的完整键。

免安装的挂载方式(web profile 支持 patch 热重载):

# 追加到 $DSH_HOME/profiles/web/cordis.patch.yml
- insert:
    - id: read-image-view
      name: /absolute/path/to/dsh-read-image-view/lib/index.js

使用边界

  • 路由模型要求:当前会话的路由模型必须声明支持图片输入。这是 read_image 工具自身的既有门禁(纯文本模型路由下该工具会拒绝执行,本插件无能为力)。
  • 格式限制:仅支持 PNG / JPEG / WebP / GIF(附件管道只接受光栅图;SVG 被拒绝)。
  • 大小限制:图片大小/尺寸/像素上限跟随部署的 attachment imageLimits 配置。
  • 日志隐私:图片字节不进入会话日志(事件里只有附件引用),浏览器通过会话授权通道读取。

兼容性说明

DeepSeek Harness 目前处于 developer preview 阶段,破坏性变更多。本插件依赖上游扩展面:

  • tool.call.toolview keyed slot(按 wire 工具名注册工具卡)
  • ctx.uiConversation.imageUrl / peekImageUrl(会话授权的附件图片 URL 服务)
  • @deepseek-ai/dsh-client-ui-primitives 基线共享模块(Modal / StateDot / 图标)

在这些扩展面上游发生不兼容变更时需要跟进适配。

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

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

小夜