dsh-openai-image:爲 DSH 接入 OpenAI 文字生圖

前言

在 DeepSeek Harness(DSH)裏做智能體時,聊天模型擅長推理與編排,卻通常不具備可直接落盤的繪圖能力。若再把圖像服務單獨接一套密鑰與代理,配置和維護成本會明顯上升。

下面介紹社區插件 dsh-openai-image(維護者 flytangyu)。它在 DSH 中註冊 generate_image 與 list_image_models 工具,調用 OpenAI 圖像 API,把生成結果寫入本地文件,供網頁展示或通過 QQ 發圖。思路是「聊天用 DeepSeek,畫圖用 OpenAI」:繪圖與聊天模型分離,並默認複用 DSH 已保存的 OPENAI_API_KEY。

這是什麼

dsh-openai-image 是 DSH 的 OpenAI 圖像生成插件,分類爲模型推理。倉庫見 GitHub,社區目錄頁見 SkillHub。當前實現以文字生圖爲主;參考圖編輯、局部重繪、圖片理解不在此插件範圍內。圖像額度與聊天模型額度分別計費。

插件爲零運行時 npm 依賴的 ES Module,無需編譯。版本以倉庫 package.json 爲準(資料抓取時爲 1.1.0,許可證 MIT)。

核心功能

經過上面的定位,可以把已覈實的能力歸納爲以下幾項。

  1. 文字生圖:照片、插畫、海報、封面等;提示詞支持中文。
  2. 動態模型:list_image_models 用當前 Key 實時查詢 OpenAI /v1/models,返回 gpt-image-* 與 chatgpt-image-latest;單次調用可通過 generate_image.model 指定模型,優先級爲本次 model > 插件配置 model > 默認 gpt-image-2。
  3. 生成參數:默認 gpt-image-2、1024x1024、medium 質量、PNG、每次一張;支持橫豎圖、質量檔位、透明背景、PNG/JPEG/WebP,以及一次 1–4 張。
  4. 與 DSH 集成:沿用 DSH 網絡代理;經憑據服務讀取 Key,支持密鑰熱更新;成功時返回圖片 file_path,默認目錄爲 $DSH_HOME/generated-images(未設置 DSH_HOME 時爲 ~/.dsh/generated-images)。
  5. QQ 發圖:出圖後配合 dsh-qqbot 與 qqbot_send_file 等工具發送;需在 cordis.patch.yml 中爲 sendFile.extraRoots 配置圖片目錄的絕對路徑。

安裝與啓用

需要:能運行 dsh web、Node.js 22.19 或以上,以及可調用圖像模型的 OpenAI API Key。README 記載已在 macOS、Node.js 24.14.0、DSH 0.2.1-rc.5 下實測;其他 DSH 版本請先確認工具是否註冊成功。

本倉庫尚未發佈 npm 包,請從源碼安裝(安裝命令來自倉庫 README,不是 dsh plugin add github:... 形式的臆測命令)。

1. 克隆並加入 web profile

git clone https://github.com/flytangyu/dsh-openai-image.git
cd dsh-openai-image
dsh plugin --profile web add "$PWD"

無需 npm install 或構建。請保留克隆目錄,本地安裝可能通過鏈接引用該路徑。

2. 配置 OpenAI Key

在 DSH 網頁的模型設置中保存 OPENAI_API_KEY。插件通過 ctx.credentials.resolve('OPENAI_API_KEY') 複用憑據;也可使用 DSH 支持的環境變量方式。配置中只寫憑據名稱,不要把真實 Key 提交到倉庫或聊天。

3. 啓動

dsh web

若安裝後未見工具,重啓 DSH。需要代理時,在啓動前設置 HTTP_PROXY / HTTPS_PROXY 等,或寫入 ~/.dsh/.env(詳見倉庫 README「網絡與代理」一節)。

可選:在 ~/.dsh/profiles/web/cordis.patch.yml 中覆蓋插件配置,例如默認模型、尺寸、超時:

- id: tool-openai-image
  name: dsh-openai-image
  config:
    model: gpt-image-2
    apiKeyRef: OPENAI_API_KEY
    quality: medium
    size: 1024x1024
    timeoutMs: 600000

典型用法

網頁對話

直接在聊天中描述需求,例如:

幫我畫一隻在海邊看日落的小鯨魚,水彩風格,橫圖。

或顯式提到工具:

用 generate_image 生成一張透明背景的可愛機器人貼紙,PNG 格式。

支持工具調用的 DeepSeek、OpenAI 等聊天模型均可調用 generate_image。

查詢並指定模型(v1.1.0)

先讓模型列出賬號可見的繪圖模型(調用 list_image_models,不生成圖片、不緩存列表):

列出我現在可以使用的 OpenAI 繪圖模型。

再指定模型出圖,例如:

用 gpt-image-2.6-flare 畫一隻水彩鯨魚,橫圖。

調用參數示例:

{
  "prompt": "一隻在海邊看日落的小鯨魚,水彩插畫",
  "model": "gpt-image-2.6-flare",
  "size": "1536x1024",
  "quality": "high"
}

常用字段包括:prompt(必填,1–32000 字符)、size、quality、n(1–4)、output_format、background(透明背景不能使用 JPEG)。成功時工具返回模型名與各文件的 file_path、mime_type、bytes。

QQ 側發圖

本插件只負責生成文件。QQ 場景需另行安裝並配置 @tencent-connect/dsh-qqbot,並在 im-qqbot 的 sendFile.extraRoots 中加入圖片輸出目錄的絕對路徑。生成後由模型調用 qqbot_send_file 等工具發送;單獨回覆本機 Markdown 圖片路徑不會被 QQ 自動上傳。

適用場景與注意

適合誰:已在 DSH 中使用 DeepSeek 等模型做對話編排,同時希望用同一套 OpenAI Key 做文生圖,並在網頁或 QQ 中交付圖片文件的開發者。

使用注意:

  • 插件在當前 dsh 進程權限下運行;安裝前應自行審閱源碼與 MIT 許可證。
  • API 報錯時插件不會自動換模型或自動重試收費請求;超時也不代表服務端未執行,重試可能再次計費。
  • 社區目錄 SkillHub 與 DeepSeek / 幻方無官方從屬關係;DSH 生態強調「一切皆插件」,本介紹以倉庫 README 與 package.json 爲準。

本地開發與驗證可使用 npm test(不請求外網)、npm run smoke(查模型目錄)、npm run smoke -- --generate(真實出圖,消耗額度)。常見問題對照表見倉庫 README。

結尾

dsh-openai-image 把 OpenAI 文生圖收成 DSH 的兩個工具,複用憑據與代理,輸出可展示的本地文件,並可與 QQ 機器人串聯。進一步瞭解請查閱 SkillHub 目錄頁 與 GitHub 倉庫。

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

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

小夜