dsh-imagegen:在 DSH 對話裏用 generate_image 生圖與改圖

前言

在 DeepSeek Harness(DSH)裏做智能體,常見需求是讓模型「畫出一張圖」或「按參考圖改一版」,而不是把用戶趕到瀏覽器或單獨腳本里。若用 MCP 再包一層生圖服務,往往多一個進程、多一套運維。下面介紹社區插件 dsh-imagegen(維護者 Lujinan991,分類:模型推理):它是 DSH 原生 Cordis 插件,不依賴 MCP 包裝,也不需要單獨啓動生圖服務;智能體通過工具 generate_image 完成文生圖、參考圖改圖和 PNG 蒙版局部編輯,結果寫入 DSH 持久附件並在對話中預覽。

這是什麼

dsh-imagegen(npm 包名 @local/dsh-imagegen,當前資料版本 0.2.0,MIT 許可證)面向 OpenAI 兼容的 Images API:配置 baseUrl、apiKey(或環境變量)與模型等參數後,由 Host 側調用遠程 HTTPS 接口(本機 localhost/127.0.0.1 可用 HTTP)。插件在 package.json 中聲明 DSH 兼容區間:

"engines": { "dsh": ">=0.2.0-rc.2 <0.3.0" }

DSH 僅按 engines.dsh 判定兼容性;出現 0.3.0 邊界版本時需再覈對插件是否仍適用。

目錄頁:SkillHub - dsh-imagegen
源碼與說明:GitHub - Lujinan991/dsh-imagegen

核心功能

生圖與編輯模式

  • 文生圖:通過 prompt 等參數提交生成請求。
  • 改圖(edit):傳入 image_paths,用自然語言說明保留項與修改項;多張圖可分工(例如產品圖 + 色調參考)。
  • 局部編輯:在 edit 模式下額外提供 mask_path;PNG 蒙版須與首張輸入圖尺寸一致,透明區域表示要修改的區域。

同一提示詞要多個版本時使用參數 n;不同素材應分次調用,避免在一次請求裏混用無關圖片。

配置與運行特性

在「插件」頁面進入 @local/dsh-imagegen 詳情,下半部分爲「生圖接口」表單;保存後寫入當前 profile 的 cordis.patch.yml,下次調用 generate_image 即生效,無需重啓。配置項包括 API 根地址(須含 /v1 等根路徑)、密鑰、默認模型(默認 gpt-image-2)、尺寸、質量、異步提交模式等;完整字段表見倉庫 README。

  • size: adaptive:從提示詞中的方向詞推斷豎版 / 橫版 / 方圖尺寸;無方向詞時退回 auto。
  • submitMode: async:適用於返回 task_id 而非直接返回圖片的服務商;插件帶 ?async=true 提交併輪詢任務接口。
  • fallbackEndpoints:僅在前端點確定未成交(如連接失敗、429、502/503/504)時按順序切換,避免對已可能計費的請求重試。

圖片如何回到對話裏

原始位圖經 ctx.attachments.saveFile 保存;預覽經 ctx.attachments.saveImages 成爲 DSH 原生持久引用。工具結果含 image content,會話 log 可保留;對話中有加載狀態、預覽重試與「打開原圖」。插件不直接向工作區寫入二進制;需要項目資產時由智能體用授權文件工具從附件路徑複製。

參考 Codex 的生圖提示原則已通過獨立 system prompt section 註冊(不復制其內置工具或腳本)。

安裝與啓用

在 DSH 左側「插件」頁的安裝入口填入倉庫地址:

git+https://github.com/Lujinan991/dsh-imagegen.git

若會話啓用了官方 plugin_manager 工具,也可請求安裝:

{
  "action": "install_bundle",
  "target": "git+https://github.com/Lujinan991/dsh-imagegen.git"
}

本地開發時可改爲插件目錄絕對路徑,或以 link: 依賴安裝,源碼改動在下次啓動生效:

/absolute/path/to/dsh-imagegen

安裝後確認插件行 dsh-imagegen 已啓用。安裝結果裏 application 爲 applied 表示已應用,restart-required 表示需重啓。修改插件代碼後須完全退出應用再打開(文檔示例爲 ⌘Q 後重啓);僅在插件頁切換開關不會重建瀏覽器側模塊表。

從 git 安裝沒有自動更新;升級可執行(資料原文):

dsh plugin --profile desktop add github:Lujinan991/dsh-imagegen

然後完全退出再打開;配置保存在 profile 的 cordis.patch.yml 中,按插件 id dsh-imagegen 存儲,重裝不丟配置。

典型用法

在對話中描述畫面需求,智能體調用 generate_image。文生圖示例:

{
  "prompt": "產品攝影:白色陶瓷杯放在灰色桌面,柔和側光,保留自然材質細節,無文字、無標誌。",
  "size": "1536x1024",
  "n": 1
}

參考圖改圖示例:

{
  "mode": "edit",
  "prompt": "僅將背景替換爲海邊日落;保持第一張圖中的產品、外形、顏色、標誌與邊緣不變。第二張圖僅作色調參考。",
  "image_paths": ["product.png", "style-reference.png"]
}

輸入文件經 DSH ctx.fs 讀取,不繞過文件權限。配置爲空時插件仍可加載;僅在真正調用且缺少接口地址或密鑰時返回可執行提示。

若部署上配置表單不可編輯(缺少設置 UI 或未掛載 dsh-settings),可按插件頁給出的 YAML 片段寫入 cordis.patch.yml 並重啓;三種情況下 generate_image 仍可正常生圖,缺的是界面編輯能力。

適用場景與注意

適合誰:已在 DSH 0.2.x(>=0.2.0-rc.2)上跑智能體、且具備 OpenAI 兼容生圖 API(或自建網關)的開發者;希望生圖與改圖留在同一會話、同一套附件體系裏,而不是外接 MCP 服務。

使用前請自行覈對:

  • 插件以當前 DSH 進程權限運行;安裝前閱讀源碼與 MIT 許可證,確認 API 密鑰與 downloadHosts 等配置符合你的安全策略。
  • baseUrl 填錯(例如缺少 /v1)可能拿到 HTML 而非 JSON,插件會指出這一點;密鑰不應寫進提示詞、工具參數或倉庫。
  • 默認模型 gpt-image-2 在資料中說明不支持與透明背景參數的原生組合時,插件會拒絕該組合,不會靜默換模型。
  • 遠程 API 需 HTTPS;URL 結果僅從 downloadHosts 允許的 HTTPS 主機下載,且不攜帶 API 密鑰。

倉庫 README 記載:在 DSH 0.2.0-rc.2 隔離運行時,37 項測試全部通過,且 image-api.test.js 使用本地 mock、不調用真實生圖接口。

結尾

dsh-imagegen 把 OpenAI 兼容的生圖與編輯收進 DSH 原生 Cordis 插件:一條 generate_image 工具鏈、持久附件與對話預覽,並覆蓋異步任務制服務商與備用端點等工程細節。社區插件與 DeepSeek / 幻方無官方從屬關係;SkillHub 目錄便於發現,事實與用法以 GitHub README 爲準。

  • 目錄頁:https://www.skillhub.cn/plugins/Lujinan991/dsh-imagegen
  • GitHub:https://github.com/Lujinan991/dsh-imagegen
羽毛球分组比赛记分
小程序二维码

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

小夜