在 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 端註冊卡片進行渲染。
安裝與啓用¶
推薦將插件作爲全局靜態插件安裝,這樣每次會話都會自動擁有該工具,且重啓後依然保留。
- 進入 DSH 的 web 配置目錄(默認爲
~/.dsh/profiles/web):
cd "$DSH_HOME/profiles/web"
- 使用 pnpm 加載本地插件包:
pnpm add file:/path/to/dsh-show-picture
- 修改該目錄下的
package.json,在dsh.profile.bundles數組中添加"dsh-show-picture"。 - 重啓 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 倉庫進行安裝和配置。