最近在折腾 DeepSeek Harness。
用了一段时间之后,我发现一个挺明显的问题:它现在作为 Agent 框架已经可以调各种工具、执行任务了,但如果我在对话里直接说:
帮我画一张雨夜霓虹街头的赛博朋克猫咪。
它没办法像 ChatGPT 那样,直接把图片生成出来放在当前对话里。
想生图的话,还是得自己跑到 Gemini、豆包或者其他生图网站,再把 Prompt 复制过去。
感觉差了那么一点。
所以这两天干脆自己写了一个插件:
dsh-image-gen
GitHub:
目前已经开源
最终效果很简单
安装好插件以后,在 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:
项目目前完全开源,MIT License。
如果遇到不兼容的模型、接口或者安装问题,可以直接提 Issue。
如果刚好对你有用,也欢迎顺手点个 Star。