前言¶
DeepSeek Harness(DSH)的插件生态旨在通过插件扩展功能。在对话中生成图片通常需要配置复杂的后端或持有 API Key。Stellight 维护的 dsh-imggen 是一个静态 dual-face 插件,它为 DSH 提供文生图输出能力。该插件采用与 dsh-deepseek-balance 相同的 profile bundle 机制,这意味着配置写入 bundle 后重启不丢失,且无需每次批准。
核心功能¶
dsh-imggen 提供了一套完整的工具链,用于在对话中渲染和生成图片。
generate_image模型工具:从文本提示生成图片,并在对话工具卡片中直接渲染。- 后端支持:
- 默认使用 Pollinations(免费、无需 API Key)。
- 支持 OpenAI(DALL·E 3),需要配置
OPENAI_API_KEY或DSH_OPENAI_API_KEY。
- 工具卡片功能:
- 下载按钮:支持一键下载生成的图片。如果浏览器跨域 fetch 失败,会自动回退到新标签页打开。
- 历史画廊:点击
🖼 历史按钮打开悬浮画廊,以网格形式展示图片、提示词,并支持删除或清空。历史记录存于浏览器 localStorage,跨重启保留。
- API 选择选项卡:在输入框工具行右侧提供分段控件,支持在
🎨 Pollinations和✨ OpenAI之间切换。选择后,通过systemPrompt变量注入提示词,Host 侧会根据选项调用对应的后端。
安装与启用¶
安装该插件需要将包放入 profile 的 node_modules 并在 package.json 中配置 bundle。
- 使用插件命令:
dsh plugin --profile web add <本包路径>
- 手动安装:
将本包复制到 profile 的node_modules目录,例如:
~/.dsh/profiles/web/node_modules/dsh-imggen/ - 配置 profile:
编辑 profile 的package.json,添加依赖和 bundles 配置:
{
"dependencies": { "dsh-imggen": "1.0.0" },
"dsh": { "profile": { "bundles": ["...", "dsh-imggen"] } }
}
- 重启 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 查看。