dsh-imggen:为 DeepSeek Harness 提供文生图输出能力的静态插件

前言

DeepSeek Harness(DSH)的插件生态旨在通过插件扩展功能。在对话中生成图片通常需要配置复杂的后端或持有 API Key。Stellight 维护的 dsh-imggen 是一个静态 dual-face 插件,它为 DSH 提供文生图输出能力。该插件采用与 dsh-deepseek-balance 相同的 profile bundle 机制,这意味着配置写入 bundle 后重启不丢失,且无需每次批准。

核心功能

dsh-imggen 提供了一套完整的工具链,用于在对话中渲染和生成图片。

  1. generate_image 模型工具:从文本提示生成图片,并在对话工具卡片中直接渲染。
  2. 后端支持:
    • 默认使用 Pollinations(免费、无需 API Key)。
    • 支持 OpenAI(DALL·E 3),需要配置 OPENAI_API_KEY 或 DSH_OPENAI_API_KEY。
  3. 工具卡片功能:
    • 下载按钮:支持一键下载生成的图片。如果浏览器跨域 fetch 失败,会自动回退到新标签页打开。
    • 历史画廊:点击 🖼 历史 按钮打开悬浮画廊,以网格形式展示图片、提示词,并支持删除或清空。历史记录存于浏览器 localStorage,跨重启保留。
  4. API 选择选项卡:在输入框工具行右侧提供分段控件,支持在 🎨 Pollinations 和 ✨ OpenAI 之间切换。选择后,通过 systemPrompt 变量注入提示词,Host 侧会根据选项调用对应的后端。

安装与启用

安装该插件需要将包放入 profile 的 node_modules 并在 package.json 中配置 bundle。

  1. 使用插件命令:
    dsh plugin --profile web add <本包路径>
  1. 手动安装:
    将本包复制到 profile 的 node_modules 目录,例如:
    ~/.dsh/profiles/web/node_modules/dsh-imggen/
  2. 配置 profile:
    编辑 profile 的 package.json,添加依赖和 bundles 配置:
    {
      "dependencies": { "dsh-imggen": "1.0.0" },
      "dsh": { "profile": { "bundles": ["...", "dsh-imggen"] } }
    }
  1. 重启 Harness:
    运行 dsh web 重启,工具卡片、画廊和选项卡将自动生效。

典型用法

  • 默认生成:直接在对话中调用 generate_image。默认使用 Pollinations 后端,无需额外配置即可生成图片。
  • 切换后端:在输入框右侧的选项卡中选择 OpenAI,并确保环境变量或 DSH 凭证库中配置了相应的 Key。
  • 管理历史:点击工具卡片上的 🖼 历史 按钮查看生成的图片列表。列表保存在浏览器 localStorage 中,刷新或重启浏览器不会丢失。

架构与安全

  • 架构:采用 dual-face 架构,无构建步骤。
    • dsh/index.js(Host):注册 generate_image 工具、systemPrompt 变量/节、同源路由 /dsh-imggen/pref。OpenAI 调用与 Pollinations 验证走 Node 原生 fetch。
    • dsh/client.js(Client):手写 lazy-CJS bundle,负责工具卡片、历史画廊 overlay、生图 API 选项卡。
  • 安全:仓库代码不包含任何 API Key。OpenAI Key 仅在本地进程内用于官方接口调用,通过 credentials 服务按 OPENAI_API_KEY 或 DSH_OPENAI_API_KEY 环境变量顺序解析。

结语

dsh-imggen 简化了 DSH 中的图片生成流程,利用静态 bundle 机制保证了配置的稳定性。项目代码开源,可在 GitHub 查看。

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

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

小夜