본문으로 건너뛰기
A

dsh-image-studio

aa1355721445-lgtm/dsh-image-studio

참조 이미지를 고르는 `image_generate`와 `image_library` 도구를 추가합니다. 캐릭터, 의상, 장면, 소품의 로컬 라이브러리 4개에서 선택하고 상황·표정·포즈·샷·조명 키워드 프리셋을 프롬프트로 확장해 65535 비동기 작업 API 또는 OpenAI 호환 이미지 API를 호출하고 결과를 대화에 표시합니다. 설정 페이지에서 라이브러리를 관리하고 업로드 이미지나 텍스트 설명으로 3면 참조 시트를 만듭니다. dsh-daily-schedule이 설치되어 있으면 의상이 지정되지 않은 이미지는 현재 일정 항목의 캐릭터 복장을 사용합니다.

설치

dsh plugin --profile web add github:aa1355721445-lgtm/dsh-image-studio

README

dsh-image-studio · 生图工作室

给 DeepSeek Harness 加一个会「看场合发图」的生图能力:本地四个参考库(人物 / 服饰 / 场景 / 道具), 模型判断该出图时,插件按画面描述把对应的参考图组合起来,一起交给生图 API,保证角色和设定一致。

v0.5.1 起,走 65535 时图片数据直接从你选的线路返回,国内用「大陆优化线路」不用开代理也能拿到图。

它做了什么

部分说明
image_generate 工具模型调用:prompt(画面)+ 关键词(situation / expression / pose / shot / light)+ 库条目(characters / outfits / scene / props)→ 组合参考图 → 生图 → 存本地,聊天里显示成图片卡片
image_library 工具模型调用:库很大、系统提示里的目录没列全时,按关键词或 id 查条目(含人设、神态特点、情境穿搭)
系统提示注入「什么时候发图」三档策略 + 自定义规则 + 主动发图冷却 + 关键词清单 + 参考库目录
设置 → 生图工作室素材库(含「从图片导入」)、关键词、试生成、生成记录、设置

安装

需要:DeepSeek Harness 桌面版,以及一个生图接口(65535 的异步任务接口,或任何 OpenAI 兼容的 /v1/images 接口)。

方式一:在 DSH 里装(推荐)

  1. 打开 DSH 侧栏的 插件 → 添加插件(或点箭头选「安装第三方插件」)。

  2. 把本仓库地址粘进输入框,点 安装:

    https://github.com/aa1355721445-lgtm/dsh-image-studio
    
  3. 装好后点 立即启用。设置里没出现「生图工作室」的话,完全退出 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 刷新页面即可)。

第一次用

  1. 打开 设置 → 生图工作室 → 设置,选接口类型、填 Base URL 和 API Key,点「测试连接」。
  2. 「识图」默认用 DSH 自带的看图模型(如 deepseek-flash),不用另填 Key;没有的话可以换成 OpenAI 兼容接口。
  3. 到 素材库,顶部的「添加」区写一句描述(用文字生成)或者丢几张图(从图片生成三视图),建几个人物、服饰、场景,就可以在对话里让模型出图了。
  4. 「关键词」里自带一套默认情境,其中的场景 / 服饰名(卧室、居家针织服等)只是例子,改成你库里实际有的名字即可;库里没有时会只按文字描述。

添加素材(v0.5)

素材库每个分类顶部都有「添加人物 / 服饰 / 场景 / 道具」区,AI 生成放在最前面:

方式怎么用结果
用文字生成(推荐)在框里写几句描述,点「生成」或 Ctrl + Enter扩写成完整设定(名字、标签、外观描述),再画一张三视图 / 设定图
从图片生成三视图把 1–4 张图拖进来或点击选择识别外观写好描述,再画一张标准三视图
手动新建「想自己填?手动新建」或网格里的「手动新建」卡片自己填名字、描述,上传参考图
  • 把图片拖到素材库页面的任何地方,也会直接开始「从图片生成」;
  • 生成完都会停在「确认」这一步,名字、描述可以先改,不满意可以写要求重画,确认后才存进库;
  • 进了手动新建也不用退回去:页面顶部可以把已经填的描述、加的图直接交给 AI 生成;
  • 不常用的话点「收起」,会缩成一行三个按钮(记在本机浏览器里)。

参考库

默认目录在 <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 张图进去:

  1. 识图:整理出名字、别名、标签和外观描述(只写长相 / 设计,不写表情和姿势)。默认用 DSH 自带的看图模型(deepseek-flash),不用另填 Key;也可以在设置里换成任意 OpenAI 兼容接口。
  2. 生成三视图:以原图为参考画一张标准设定图—— 人物:正 / 侧 / 背三视图,中性 A 字站姿、平静表情、白底; 服饰:穿在无脸素体人台上的正 / 侧 / 背三视图(不带模特长相); 道具:正 / 侧 / 背 + 45° 斜侧; 场景:主视角全景 + 反向视角 + 俯视布局的设定图(去掉人物)。
  3. 确认入库:结果都能改,不满意可以写点要求重新生成;存成新条目或加到已有条目,三视图设为封面。

已有条目在编辑页也能「生成三视图」(以封面为参考)和「识别补全」描述与标签。拿三视图当参考,生图时更不容易照抄某个姿势。

文字生成(v0.3)

素材库顶部「用文字生成」的框里写一句话(或在导入面板切到「用文字描述」),就能生成新素材:

  1. 扩写:模型把描述扩写成适合生图的详细外观描述(你提到的点一个不改,没提到的合理补全),并起好名字、标签。用的是设置里「识图」那条通道,纯文字任务用 DSH 里任意模型都行。
  2. 画三视图:没有参考图,按描述原创设计——人物是 A 字站姿三视图,服饰穿在素体人台上,道具三视图加斜侧,场景是设定图;提示词里同时带上扩写结果和你的原话,原话里的要求必须满足。
  3. 确认入库:和图片导入一样可以改、可以写要求重新画;生图失败时也能先存一个只有文字描述的条目,之后再补图。

跟着全天日程穿衣服(v0.4)

同时装了每日日程插件 dsh-daily-schedule 并打开了它的「联动生图工作室 → 穿搭」时,日程里每一段都记着她穿什么。生图时人物是日程里的「她」、又没指定服饰,就直接沿用她此刻那一段的穿着:

  • 库里有的那套(如「JK短裙」)作为服饰参考图,日程里写的细节(「外面加了件开衫」)写进【搭配】;
  • 库里没有的(如「睡衣」)只按文字描述,不再套默认服饰;
  • 这次指定了场景、而且和日程此刻的场景不同(画的不是「现在」),或显式指定了服饰,就不跟;
  • 只读日程插件的数据文件(.dsh\daily-schedule\),没装、没生成今天的日程都不影响出图。

设置 → 参考图组合 →「跟着『全天日程』穿衣服」可以关掉。

组合规则

一次出图时:

  1. 解析模型给的条目(id、名字、别名都认);打开「自动识别」时,画面描述里提到的库名字也会被带上;
  2. 服饰没指定时按「日程此刻的穿着 > 人物的情境穿搭 > 情境默认 > 场景默认 > 人物默认」自动搭配;
  3. 按优先级挑参考图:上一张生成图(extra_images)> 人物 > 服饰 > 场景 > 道具,总数不超过上限(默认 8);
  4. 给每张参考图编号,写一段「图 N 是什么、怎么用」拼进提示词,例如:
【画面】窝在床上玩手机
【情境】在家休息:放松慵懒的居家氛围,周围有生活感的小物件
【神态】脸颊泛起红晕,眼神躲闪、微微低头,嘴角含着不好意思的笑
【镜头】手机自拍视角:人物一只手臂伸向镜头举着手机(手机在画面外),轻微俯拍
【光线氛围】午后温暖的阳光从窗户斜照进来,有柔和的光斑,整体暖色调
【人物神态特点】小鱼:开心时尾巴会左右摇摆

【参考图说明(按上传顺序编号)】
图1:人物「小鱼」——只用来确定长相:脸型五官、发型发色、瞳色、体型比例和标志性特征。参考图里的姿势、表情、视角和背景都不要照搬。
图2:服饰「睡衣」——只参考服装设计(款式、颜色、材质、细节),穿在「小鱼」身上,随动作自然起褶变形。
图3:场景「卧室」——只参考空间、陈设、配色与风格;镜头角度和取景按上面的描述重新安排。

要求:画一张全新的画面……构图、视角、景别、姿势、动作、表情……一律按上面的文字重新安排,不要沿用任何一张参考图里的站姿、坐姿、表情或取景。

参考图默认「只还原长相和服装设计」:说明里写清每张图只取什么,姿势、表情、视角、构图按文字重新安排(设置里可以关掉,改回严格贴近参考图)。实际发出去的提示词在「生成记录」和「试生成」里都能看到。

接口

  • 65535 原生异步任务(默认):POST /v1/tasks 提交,GET /v1/tasks/{id} 轮询;参考图以 data URI 放进 input.image_urls;带 Idempotency-Key,网络抖动重试不会重复扣费。提交时带 response_format: "b64_json", 图片数据随查询结果从当前线路一起返回,存到本地;没带回数据时才去下载 result_urls(这些链接在海外节点上, 国内部分网络连不上,链接也有有效期)。超时或下载失败的任务会记成「等待取回」,可在生成记录里一键取回。
  • 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-schedule-link.mjs  # 跟着全天日程此刻的穿搭出图
node tests/smoke-client.mjs   # 浏览器半:把设置页每个页签、导入各步骤和聊天卡片的各状态渲染一遍
node --check lib/client.js

宿主端(lib/*.js 除 client.js)改了要重启 DSH;只改 lib/client.js 刷新页面即可。

许可

MIT

관련 플러그인