dsh-image-studio · 生图工作室
给 DeepSeek Harness 加一个会「看场合发图」的生图能力:本地四个参考库(人物 / 服饰 / 场景 / 道具), 模型判断该出图时,插件按画面描述把对应的参考图组合起来,一起交给生图 API,保证角色和设定一致。
它做了什么
| 部分 | 说明 |
|---|---|
image_generate 工具 |
模型调用:prompt(画面)+ 关键词(situation / expression / pose / shot / light)+ 库条目(characters / outfits / scene / props)→ 组合参考图 → 生图 → 存本地,聊天里显示成图片卡片 |
image_library 工具 |
模型调用:库很大、系统提示里的目录没列全时,按关键词或 id 查条目(含人设、神态特点、情境穿搭) |
| 系统提示注入 | 「什么时候发图」三档策略 + 自定义规则 + 主动发图冷却 + 关键词清单 + 参考库目录 |
| 设置 → 生图工作室 | 素材库(含「从图片导入」)、关键词、试生成、生成记录、设置 |
安装
需要:DeepSeek Harness 桌面版,以及一个生图接口(65535 的异步任务接口,或任何 OpenAI 兼容的 /v1/images 接口)。
方式一:在 DSH 里装(推荐)
打开 DSH 侧栏的 插件 → 添加插件(或点箭头选「安装第三方插件」)。
把本仓库地址粘进输入框,点 安装:
https://github.com/aa1355721445-lgtm/dsh-image-studio装好后点 立即启用。设置里没出现「生图工作室」的话,完全退出 DSH 再打开一次。
方式二:命令行
先完全退出 DSH(托盘里也退出),然后在 PowerShell 里:
dsh plugin --profile desktop add https://github.com/aa1355721445-lgtm/dsh-image-studio
dsh 不在 PATH 上时,用 DSH 安装目录里的完整路径:& "<DSH 安装目录>\resources\runtime\cli\bin\dsh.cmd" plugin --profile desktop add https://github.com/aa1355721445-lgtm/dsh-image-studio。
升级:DSH 里第三方插件通过「卸载 → 重新安装」升级;素材库、关键词和配置都存在 <DSH_HOME>\image-studio\,卸载不会删掉。
本地开发:git clone 下来后用 dsh plugin --profile desktop add link:<克隆目录> 安装,改代码直接生效(宿主端改动需重启 DSH,只改 lib/client.js 刷新页面即可)。
第一次用
- 打开 设置 → 生图工作室 → 设置,选接口类型、填 Base URL 和 API Key,点「测试连接」。
- 「识图」默认用 DSH 自带的看图模型(如 deepseek-flash),不用另填 Key;没有的话可以换成 OpenAI 兼容接口。
- 到 素材库 用「从图片导入」或「文字生成」建几个人物、服饰、场景,就可以在对话里让模型出图了。
- 「关键词」里自带一套默认情境,其中的场景 / 服饰名(卧室、居家针织服等)只是例子,改成你库里实际有的名字即可;库里没有时会只按文字描述。
参考库
默认目录在 <DSH_HOME>\image-studio\library\{characters,outfits,scenes,props},每个库都能在设置页单独改到别处
(比如你已有的素材文件夹)。目录约定对手工整理也友好:
人物库目录\
小鱼\ ← 一个子文件夹 = 一个条目
entry.json ← 名字、别名、标签、外观描述、人设、默认服饰、封面(设置页会自动写)
front.png side.png ...
阿星.png ← 散图也算一条(名字 = 文件名),在设置页编辑时会自动收进同名文件夹
- 外观描述会写进生图提示词;人设只给对话模型看,不会发给生图 API。
- 第一张(封面)会被优先当作参考图。人物可以设一套默认服饰。
- 设置页里的「删除」是挪进
image-studio\.trash,不做硬删除。
关键词(v0.2)
为了不让每张图都照抄参考图的姿势和表情,神态、动作、取景交给文字决定。模型先判断角色此刻的状态,再填关键词名字,插件把它展开成具体描写:
| 分组 | 例子 | 说明 |
|---|---|---|
| 情境 situation | 在家休息、睡前、刚睡醒、工作学习、外出 | 一组搭配:自带场景、默认服饰、光线和氛围描写 |
| 神态 expression | 开心、害羞、困倦、委屈、得意 | 按对话里的心情选 |
| 动作 pose | 抱膝坐、趴着、托腮、伸懒腰 | |
| 镜头 shot | 自拍、近景、全身、俯视、第一人称 | |
| 光线 light | 午后暖阳、夜晚台灯、黄昏逆光 | 不填时用情境的默认光线 |
关键词存在 image-studio\presets.json,第一次运行写入一套默认值,在设置页「关键词」里增删改。没收录的词也能用,会原样当描述。
人物条目多了两项:神态特点(如「开心时尾巴会摇」,会写进提示词)和情境穿搭(在家穿什么、上班穿什么)。服饰的选择顺序:
显式指定 > 人物的情境穿搭 > 情境默认服饰 > 场景默认服饰 > 人物默认服饰
从图片导入 / 三视图(v0.2)
素材库里点「从图片导入」,丢 1–4 张图进去:
- 识图:整理出名字、别名、标签和外观描述(只写长相 / 设计,不写表情和姿势)。默认用 DSH 自带的看图模型(deepseek-flash),不用另填 Key;也可以在设置里换成任意 OpenAI 兼容接口。
- 生成三视图:以原图为参考画一张标准设定图—— 人物:正 / 侧 / 背三视图,中性 A 字站姿、平静表情、白底; 服饰:穿在无脸素体人台上的正 / 侧 / 背三视图(不带模特长相); 道具:正 / 侧 / 背 + 45° 斜侧; 场景:主视角全景 + 反向视角 + 俯视布局的设定图(去掉人物)。
- 确认入库:结果都能改,不满意可以写点要求重新生成;存成新条目或加到已有条目,三视图设为封面。
已有条目在编辑页也能「生成三视图」(以封面为参考)和「识别补全」描述与标签。拿三视图当参考,生图时更不容易照抄某个姿势。
文字生成(v0.3)
素材库里点「文字生成」(或在导入面板切到「用文字描述」),写一句话就能生成新素材:
- 扩写:模型把描述扩写成适合生图的详细外观描述(你提到的点一个不改,没提到的合理补全),并起好名字、标签。用的是设置里「识图」那条通道,纯文字任务用 DSH 里任意模型都行。
- 画三视图:没有参考图,按描述原创设计——人物是 A 字站姿三视图,服饰穿在素体人台上,道具三视图加斜侧,场景是设定图;提示词里同时带上扩写结果和你的原话,原话里的要求必须满足。
- 确认入库:和图片导入一样可以改、可以写要求重新画;生图失败时也能先存一个只有文字描述的条目,之后再补图。
组合规则
一次出图时:
- 解析模型给的条目(id、名字、别名都认);打开「自动识别」时,画面描述里提到的库名字也会被带上;
- 服饰没指定时按「人物的情境穿搭 > 情境默认 > 场景默认 > 人物默认」自动搭配;
- 按优先级挑参考图:上一张生成图(
extra_images)> 人物 > 服饰 > 场景 > 道具,总数不超过上限(默认 8); - 给每张参考图编号,写一段「图 N 是什么、怎么用」拼进提示词,例如:
【画面】窝在床上玩手机
【情境】在家休息:放松慵懒的居家氛围,周围有生活感的小物件
【神态】脸颊泛起红晕,眼神躲闪、微微低头,嘴角含着不好意思的笑
【镜头】手机自拍视角:人物一只手臂伸向镜头举着手机(手机在画面外),轻微俯拍
【光线氛围】午后温暖的阳光从窗户斜照进来,有柔和的光斑,整体暖色调
【人物神态特点】小鱼:开心时尾巴会左右摇摆
【参考图说明(按上传顺序编号)】
图1:人物「小鱼」——只用来确定长相:脸型五官、发型发色、瞳色、体型比例和标志性特征。参考图里的姿势、表情、视角和背景都不要照搬。
图2:服饰「睡衣」——只参考服装设计(款式、颜色、材质、细节),穿在「小鱼」身上,随动作自然起褶变形。
图3:场景「卧室」——只参考空间、陈设、配色与风格;镜头角度和取景按上面的描述重新安排。
要求:画一张全新的画面……构图、视角、景别、姿势、动作、表情……一律按上面的文字重新安排,不要沿用任何一张参考图里的站姿、坐姿、表情或取景。
参考图默认「只还原长相和服装设计」:说明里写清每张图只取什么,姿势、表情、视角、构图按文字重新安排(设置里可以关掉,改回严格贴近参考图)。实际发出去的提示词在「生成记录」和「试生成」里都能看到。
接口
- 65535 原生异步任务(默认):
POST /v1/tasks提交,GET /v1/tasks/{id}轮询;参考图以 data URI 放进input.image_urls;带Idempotency-Key,网络抖动重试不会重复扣费。完成后立刻把结果下载到本地 (平台的结果链接有有效期)。超时的任务会记成「等待取回」,可在生成记录里一键取回。 - OpenAI 兼容:无参考图走
/v1/images/generations,有参考图走/v1/images/edits(multipart)。
API Key 只存在本机 image-studio\config.json,网页上只显示末四位。
数据目录
<DSH_HOME>\image-studio\
config.json 配置
presets.json 关键词
staging\ 导入时暂存的原图(入库后清掉,两天没用自动清理)
library\ 四个库的默认目录
outputs\YYYY-MM\ 生成的图片(img-日期-时间-随机.png)
history.jsonl 生成记录
.trash\ 删除的素材与图片
开发与自检
node tests/smoke-host.mjs # 宿主半:模拟 ctx + 假 65535 接口,跑组合 / 冷却 / 失败 / HTTP 全流程
node tests/smoke-host-v2.mjs # 关键词 / 情境搭配 / 识图(模拟 DSH 模型 + OpenAI 兼容)/ 导入三视图
node tests/smoke-host-v3.mjs # 文字生成:扩写 / 无参考图三视图 / 失败兜底 / 只存文字条目
node tests/smoke-client.mjs # 浏览器半:把设置页每个页签、导入各步骤和聊天卡片的各状态渲染一遍
node --check lib/client.js
宿主端(lib/*.js 除 client.js)改了要重启 DSH;只改 lib/client.js 刷新页面即可。
许可
MIT
No comments yet. Be the first to write one.