dsh-show-picture:让 Agent 在对话中直接展示图片

在 DSH(DeepSeek Harness)的插件生态中,Agent 经常需要向用户展示文件或图片。通常的做法是让 Agent 在对话中描述图片内容,或者将图片 URL 提供给用户去浏览器打开,这会导致对话体验割裂。dsh-show-picture 插件解决了这个问题,它为 Agent 提供了一个名为 show_picture 的工具,能直接在聊天流中渲染图片卡片。

插件介绍

这是一个 DSH Cordis 插件,作者为 Yaing-Yan。它的核心作用是在 DSH 对话中展示图片,支持本地文件和远程 URL。

核心功能

  • 新增工具:为模型提供一个名为 show_picture 的工具。
  • 直接渲染:工具返回的结果会直接显示为图片卡片,而不是纯文本描述。
  • 本地文件支持:支持读取本地文件(最大 10 MiB),通过 base64 data URL 传输,无需额外的文件服务器。
  • 远程 URL 支持:支持通过 <img> 标签直接加载网络图片。
  • 架构分离:Host 端注册工具和 HTTP 路由,Client 端注册卡片进行渲染。

安装与启用

推荐将插件作为全局静态插件安装,这样每次会话都会自动拥有该工具,且重启后依然保留。

  1. 进入 DSH 的 web 配置目录(默认为 ~/.dsh/profiles/web):
    cd "$DSH_HOME/profiles/web"
  1. 使用 pnpm 加载本地插件包:
    pnpm add file:/path/to/dsh-show-picture
  1. 修改该目录下的 package.json,在 dsh.profile.bundles 数组中添加 "dsh-show-picture"。
  2. 重启 DSH 应用以应用更改:
    dsh --profile web

典型用法

Agent 在处理用户请求时,会调用 show_picture 工具。调用时需要传入参数:

参数 类型 必填 说明
path string 二选一 本地图片文件路径(绝对路径或工作区相对路径),支持 png, jpg, gif, webp, svg, bmp, ico, avif, tif/tiff。
url string 二选一 图片的 http(s) 地址。
alt string 否 图片下方的简短说明文字。

调用示例:

// 展示本地图表
show_picture({ path: "/workspace/chart.png" })

// 展示远程照片
show_picture({ url: "https://example.com/photo.webp", alt: "a photo" })

工具返回的 JSON 结构通常如下:

{ "ok": true, "kind": "path", "path": "...", "size": 1234, "mime": "image/png", "alt": "..." }

或

{ "ok": false, "error": "..." }

限制与注意事项

  • 文件大小限制:本地文件超过 10 MiB 时会报错 FS_TOO_LARGE。建议压缩或调整图片大小后再展示。
  • MIME 类型检测:仅基于扩展名检测 MIME 类型,不支持嗅探。
  • 网络限制:远程 URL 图片必须能在浏览器中正常加载,否则无法显示(受 CSP、网络可用性或鉴权影响)。
  • 客户端存活:图片卡片仅在 Client 端处于激活状态且模型调用工具循环正常运行时才渲染。

总结

dsh-show-picture 通过将图片渲染能力集成到 DSH 的工具调用流程中,消除了用户查看图片时的跳转操作。如果你需要构建一个能直观展示视觉信息的 Agent,可以参考其 GitHub 仓库进行安装和配置。

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

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

小夜