给 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。

相关推荐
康实训5 小时前
2026数字化AI智慧实训建设方案
大数据·人工智能·实训室·实训室建设
染指11105 小时前
128.Agent-LangChain核心组件-中间件-调用模型的时候
人工智能·windows·中间件·langchain·agent
布吉岛的石头5 小时前
Java 程序员第 49 阶段5:BERT 预训练目标 MLM+NSP 的工程含义
java·人工智能·深度学习·bert·transformer
玫瑰互动GEO5 小时前
开发者学GEO优化:从算法基础到CoT推理链
大数据·人工智能·ai·geo·ai搜索·geo优化
Zentceh5 小时前
安防监控夜视方案2026:AI全彩+边缘计算+云平台
图像处理·人工智能·科技·计算机视觉·车载系统·无人机·边缘计算
voipmaker6 小时前
AI 赋能安防系统演进:从硬件单品到场景化融合调度架构
人工智能·ai·架构
做cv的小昊6 小时前
【World Model】π0.5:a Vision-Language-Action Model with Open-World Generalization
人工智能·算法·机器学习·大模型·多模态·vla·世界模型
光锥智能6 小时前
具身智能数据,众包时代来了?
人工智能
大嘴皮猴儿6 小时前
2026年9月行业洞察:适合亚马逊跨境卖家的免费自动图片翻译平台
大数据·人工智能·跨境电商ai跨境翻译网站哪个好·ai图片翻译网站推荐·ai图片翻译工具哪个好
莪_幻尘6 小时前
Skill 体检:30 个 Skill 全凭感觉?体检器先自曝了 8 个“假 0 分
前端·人工智能·llm