dsh-image-tools:爲 DeepSeek Harness 提供統一的多服務商圖片生成與編輯

前言

在 DeepSeek Harness(下稱 DSH)裏做智能體開發,遲早會碰到圖片生成或編輯的需求。麻煩在於各家服務商的接口並不一致:OpenAI 系的服務走 Images 兼容接口,Google Gemini 走 Interactions API,鑑權方式和參數體系各不相同。如果讓智能體直接綁定某一家,之後想換服務商、做故障轉移,就得重新折騰一遍。

dsh-image-tools 的思路是把這件事收攏成兩個工具:image-generateimage-edit。對模型暴露的是 provider 中立的統一參數,背後可以掛多個服務商,按優先級依次嘗試。下面介紹它的功能、安裝和典型用法。

這是什麼

dsh-image-tools 是一個 DSH 插件,通過 provider 中立的 image-generate / image-edit 工具,提供統一的多服務商圖片生成與編輯能力,覆蓋 OpenAI Images 兼容服務與 Google Gemini Interactions API 兩類後端。由 JuneLearn 維護,許可證爲 MIT,當前版本 0.1.0。

核心功能

有序的多服務商管理

插件管理一組有序的圖片服務,每個服務使用獨立的 API key,並各自配置一個模型。服務按從高到低的優先級排列,可以在設置裏上下調整故障轉移順序。新增服務時從三類協議/預設中選擇:OpenAI Images、OpenAI Compatible、Google Gemini(Interactions API)。

生成與編輯參數

image-generate 的參數如下:

  • prompt:必填,圖片提示詞;
  • profile:可選,指定服務 ID,省略即啓用順序故障轉移;
  • count:1–8,默認 1;
  • sizeaspect_ratioresolution(Gemini 支持 auto / 0.5K / 1K / 2K / 4K)、qualityoutput_formatcompressionbackground:模型支持時生效。

image-edit 的參數:

  • refs:必填,本地路徑或 asset:image-* 引用的數組;
  • mask:可選,alpha PNG,模型支持蒙版時可用。

參數在請求前校驗,而不是靜默丟棄不支持的值。構圖比例建議只傳 aspect_ratio;如果模型同時傳了同向的冗餘參數(如 portrait3:4),顯式比例優先,真實方向衝突仍會被拒絕。

結果預覽與資產引用

生成結果會在會話內預覽,並保存到 outputs/images/ 目錄,文件形如 image-YYYYMMDD-HHMMSS-xxxxxxxx.png,互斥寫入與隨機後綴防止覆蓋。每個輸出附帶同名的脫敏 JSON 元數據 sidecar,不含 API key、完整響應體或 headers。結果可以通過穩定的 asset:image-* 引用複用,進程重啓後仍可解析。

故障轉移與計費安全

插件只在連接類故障時做順序故障轉移,避免對計費情況不明確的請求自動重試。對 Gemini 的請求始終設置 store=false,不依賴廠商的會話狀態。

同時掛載 Host 與 Web 客戶端

包內的 dsh.bundle 聲明會同時掛載 Host 與 Web 客戶端,不需要手動修改 profile。

安裝與啓用

運行要求:

  • Node.js 20 或更新(推薦 Node.js 24 LTS);
  • Git;
  • pnpm;
  • DeepSeek Harness 0.1.0-rc.6。

從 GitHub 直接安裝:

npx --yes -p @deepseek-ai/dsh dsh plugin --profile web add github:JuneLearn/dsh-image-tools

安裝完成後啓動 Web UI:

npx --yes -p @deepseek-ai/dsh dsh web

Web UI 默認監聽 http://127.0.0.1:3080

配置圖片服務

先啓動 Web UI,再按下面的步驟添加服務:

  1. 打開 Settings > Plugins > Configurable plugins > Image Tools;
  2. 點擊 Add service,在專用編輯器裏選擇 OpenAI、OpenAI Compatible 或 Google Gemini;
  3. 填入服務名、端點、API key 和模型,保存;
  4. 可選:測試已保存的 URL、key 和模型的連通性,測試不會生成圖片。

API key 通過 DSH credentials 存儲,常規設置狀態不會返回密鑰。設置列表會顯示每個服務的名稱、類型、模型、key 狀態和行操作。需要注意,沒有模型列表端點的 OpenAI 兼容中轉會被報告爲可達但無法驗證。

典型用法

配置好服務之後,在會話裏不需要指定工具、模型或參數,直接描述需求即可:

Create a cute moe-style image of a blue whale maid.

DSH 會自動調用 image-generate,並按順序嘗試已配置的服務。數量、構圖、質量也可以用自然語言表達:

Create two high-quality 16:9 cinematic concept images of a futuristic city.

編輯同樣在會話內繼續:

Change the background of the previous image to an underwater castle, but keep the character unchanged.

DSH 會自動引用上一個結果並調用 image-edit,也可以上傳當前會話工作目錄內的本地圖片作爲參考。遠程引用 URL 與會話工作目錄之外的路徑會被拒絕。

適用場景與注意事項

這個插件適合需要在 DSH 智能體裏接入圖片生成/編輯能力、又不想綁死單一服務商的場景。多服務商有序故障轉移對可用性敏感的會話流程比較有用;僅對連接類故障轉移的設計,則把計費風險控制在明確範圍內。

安裝前有幾點需要確認:

  • 插件以當前 dsh 進程的權限運行,安裝前應檢查源碼與許可證(本項目爲 MIT);
  • README 中包含 WPIronman API Relay 的推廣(affiliate)鏈接及優惠碼 99F509ABC6C38F77,插件聲明獨立於該中轉,不要求使用任何特定中轉,選擇服務時請自行評估價格、可靠性與隱私政策;
  • 如果之前用過 dsh-image2-draw,需要先移除舊包再安裝,兩者使用不同的設置命名空間,舊設置、密鑰、工具和結果卡片不會被導入,API key 也不會自動複製:
npx --yes -p @deepseek-ai/dsh dsh plugin --profile web remove dsh-image2-draw
npx --yes -p @deepseek-ai/dsh dsh plugin --profile web add github:JuneLearn/dsh-image-tools

移除後需要在 Image Tools 設置裏重新創建服務。

結尾

dsh-image-tools 把多服務商圖片生成與編輯統一到兩個工具之下,用有序服務和剋制的故障轉移策略換取靈活性,同時通過參數校驗、脫敏 sidecar 和 credentials 存儲把安全邊界交代清楚。如果你在 DSH 裏需要圖片能力,值得一試。

  • 社區目錄頁:https://www.skillhub.cn/plugins/JuneLearn/dsh-image-tools
  • GitHub 倉庫:https://github.com/JuneLearn/dsh-image-tools
羽毛球分组比赛记分
小程序二维码

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

小夜