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 倉庫進行安裝和配置。

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

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

小夜