给 DeepSeek Harness 写了个生图插件,补上了原生对话生图能力

最近在折腾 DeepSeek Harness。

用了一段时间之后,我发现一个挺明显的问题:它现在作为 Agent 框架已经可以调各种工具、执行任务了,但如果我在对话里直接说:

帮我画一张雨夜霓虹街头的赛博朋克猫咪。

它没办法像 ChatGPT 那样,直接把图片生成出来放在当前对话里。

想生图的话,还是得自己跑到 Gemini、豆包或者其他生图网站,再把 Prompt 复制过去。

感觉差了那么一点。

所以这两天干脆自己写了一个插件:

dsh-image-gen

GitHub:

github.com/shanliuling...

目前已经开源


最终效果很简单

安装好插件以后,在 DeepSeek Harness 里直接说:

复制代码
帮我画一张雨夜霓虹街头的赛博朋克猫咪。

Agent 会自己识别这是一个生图请求,然后调用插件提供的:

复制代码
generate_image

图片生成完成以后,不是只返回一个 URL,也不是让你自己去本地找文件,而是直接显示在当前聊天记录里。

也就是说,实际体验基本就是:

markdown 复制代码
你:帮我画一张极简主义的现代建筑客厅插画

DeepSeek Harness
        ↓
generate_image
        ↓
Gemini / OpenAI / Seedream
        ↓
图片直接出现在对话里

我想做的其实就这么简单。

不是重新做一个生图网站,而是把生图变成 DeepSeek Harness 本身的一项工具能力。


安装也尽量做简单了

在 DeepSeek Harness 项目目录执行:

arduino 复制代码
pnpm dsh plugin --profile web add dsh-image-gen

如果你已经全局安装了 dsh

arduino 复制代码
dsh plugin --profile web add dsh-image-gen

也可以直接从 GitHub 安装:

csharp 复制代码
pnpm dsh plugin --profile web add git+https://github.com/shanliuling/dsh-image-gen.git

装完以后打开 DSH Web。

进入:

复制代码
Settings
→ Plugins
→ Image generation

填自己的 API Key 就可以用了。

不需要去改源码,也不需要自己手写配置文件。


这个插件其实没用什么特别玄学的技术

整个实现比我一开始想象得简单。

核心就是给 DeepSeek Harness 注册一个 Tool:

复制代码
generate_image

这个 Tool 接收的主要参数就是:

arduino 复制代码
prompt
aspect_ratio
image_size
size

当 Agent 判断用户确实想生成图片的时候,就会调用它。

插件再根据用户设置选择对应 Provider:

复制代码
Google
OpenAI
OpenAI Compatible
Seedream

然后请求对应的生图接口。

真正比较关键的地方反而不是"怎么调生图 API"。

而是:

怎么让生成出来的图片真正进入 DeepSeek Harness 的对话体系。


图片不是单独丢在本地

一开始我其实考虑过最简单的实现:

复制代码
生成图片
→ 保存到本地
→ 返回文件路径

后来感觉这么做体验很割裂。

比如 Agent 回复:

bash 复制代码
图片已生成:
/tmp/generated-123.png

这跟真正的对话生图还是差很多。

所以最后接的是 DeepSeek Harness 自己的 Attachment 体系。

图片生成以后:

markdown 复制代码
Provider 返回图片
        ↓
转换成图片数据
        ↓
ctx.attachments.saveImage()
        ↓
保存成 DSH Attachment
        ↓
挂到当前 Conversation
        ↓
前端直接显示图片

这样有两个好处。

第一是图片可以直接出现在聊天消息里。

第二是重新打开历史会话以后,之前生成的图片还在。

它不是一次性的临时文件。


API Key 也没有直接塞配置文件

另外一个我比较在意的是 API Key。

这种插件如果最后要求大家:

ini 复制代码
API_KEY=xxxx

写进某个项目配置甚至源码里,其实挺难受的。

所以现在直接用了 DeepSeek Harness 自己的 credentials 服务。

设置界面里填写 Key,插件运行的时候再通过 credentials 读取。

前端不用一直拿着明文 Key。

这也是为什么我最后选择把它做成真正的 DSH 插件,而不是简单写个脚本。


为什么没直接做成一个独立生图网站?

因为生图网站真的已经太多了。

现在缺的不是:

再来一个输入 Prompt 然后点"生成"的网页。

我更想要的是这种体验:

复制代码
我正在和 Agent 聊一个项目

突然需要一张图

直接说:
"顺便帮我画一张这个项目的封面图"

Agent 自己调用工具

图片出来

继续聊天

这样生图只是整个任务过程中的一步。

以后如果 DeepSeek Harness 里面的工具越来越多:

复制代码
搜索
代码
浏览器
文件
图片
视频

用户其实不需要关心背后到底调了哪个网站。

只需要告诉 Agent:

我要什么。

剩下的交给工具处理。

我觉得这种体验才比较像真正的 Agent。


目前还比较早期

项目现在还属于刚做出来的阶段。

目前我的目标不是一下子做一个特别复杂的"AI 绘图工作台",而是先把最核心的事情做好:

让 DeepSeek Harness 能稳定地在对话里生成图片。

后面如果继续有人用,我会考虑再加一些东西,例如:

  • 更多图片 Provider
  • 更完整的尺寸和参数支持
  • 图生图
  • 图片编辑
  • 多图生成
  • 更好的生成结果展示
  • 更多 OpenAI Compatible 服务适配

但这些都可以慢慢补。

第一版能做到:

vbnet 复制代码
安装
→ 配 Key
→ 对话里说一句话
→ 出图

我觉得就够了。


最后

如果你也正在玩 DeepSeek Harness,可以装一下试试。

安装命令:

arduino 复制代码
pnpm dsh plugin --profile web add dsh-image-gen

GitHub:

github.com/shanliuling...

项目目前完全开源,MIT License。

如果遇到不兼容的模型、接口或者安装问题,可以直接提 Issue。

如果刚好对你有用,也欢迎顺手点个 Star。

相关推荐
AI刀刀1 小时前
Kimi 文档导出格式错乱、排版丢失、导出报错?AI 导出鸭一键智能适配,稳定输出规范 Word、PDF,高效解决各类导出难题
人工智能·pdf·word·ai导出鸭
love530love1 小时前
虚拟显示驱动导致 Photoshop / Camera Raw 卡死?OrayIddDriver 的锅
运维·人工智能·ui·photoshop·orayidddriver·hags 调度
shepherd1111 小时前
国产模型越来越强了:DeepSeek V4、Kimi K3 与 GLM 最新进展
人工智能·llm·ai编程
星火10241 小时前
【LangChain4j系列08】Agentic AI 多智能体协作
人工智能·后端
烟雨江南7851 小时前
离线语音识别为什么一到本地部署,准确率反而会变?
人工智能·语音识别
科技云报道1 小时前
【重磅】瑞数信息发布《2026Bots & Agents自动化威胁报告》,重构AI Agent时代安全认知
人工智能·重构·自动化
星火10241 小时前
【LangChain4j系列07】结构化输出与类型安全
人工智能·后端
用户298698530141 小时前
3 种方法,轻松将 PowerPoint 转换为 PDF 格式
人工智能·后端·c#
安逸sgr1 小时前
视觉 Token 是什么?图片是怎么送进大模型的?
人工智能·ai·大模型·agent·智能体