READMESource: main@d48a7c7b
dsh-session-gallery
DSH 桌面版右栏的图片插件:会话图片 + 工作台 + 图片库,内建 AI 出图。
把 AI 出的图、对话里出现的图、你自己攒的图统一放在一个磁盘目录里管理, 按会话看、按分组看、按时间看,并且能直接在插件里调中转站出图。
功能
会话图片
- 当前会话里的图(图片库中
sessionId匹配的子集) - 顶部「未归档区」:进过对话但还没存进图片库的图,点开大图可「存入图片库」或「忽略」
- 支持多选、收藏、删除、放入工作台
工作台
- 自绘画布:把多张图摆在一起对比 / 圈选 / 涂蒙版
- 排版:自动网格(4 张以内横排)、横排、竖排、重叠对比
- 「生成改图请求」:导出一张蒙版图 + 一段请求文本,交给 AI 做局部重绘
图片库
- 扫描磁盘目录,按子目录分组
- 来源筛选(多选):用户发的 / 工具产物 / 脚本产物 / 手动导入 / 素材库 / 未知
- 时间筛选:今天、近 7 天、近 30 天、按月
- 搜索(文件名 / 提示词 / 模型)、收藏、缩略图大小调节
- 并排对比:选 2~4 张并排看,底部参数对照表,滚轮同步缩放、拖动同步平移
- 删除默认进回收站,永久删除需勾选
出图
- 内建
generate_image工具,任何会话都能调,不需要写脚本、不需要指定输出路径 - 出图直接落进图片库,同时出现在「会话图片」里
- 支持参考图(垫图)、多张并发、
quality档位、mask局部重绘 - 兼容「提交后轮询」的异步中转站和 OpenAI 兼容的同步接口
出图日志
- 每次出图的完整记录(请求 / 轮询轨迹 / 响应 / 失败原因),按天存 JSONL
- 图片库工具栏「出图日志」查看,可按失败筛选、复制原始 JSON
安装
dsh plugin --profile desktop add dsh-session-gallery
装完完全退出 DSH 再启动(不是关窗口)。
从源码装:把本仓库以
link:方式加进~/.dsh/profiles/desktop/package.json的dependencies,并在dsh.profile.bundles里加上dsh-session-gallery, 然后npm install && npm run build,再重启 DSH。
配置
点右栏的 ⚙ 设置。
图片库
| 项 | 说明 |
|---|---|
| 图片库根目录 | 图片放在哪,例如 D:\Pictures\DSH图片库。目录不存在会自动创建 |
| 旧图目录 | 额外扫描的目录,一行一个,可留空 |
出图
| 项 | 说明 |
|---|---|
| 中转站地址 | 例如 https://api.example.com(要问你的供应商) |
| 协议 | apimart-async(提交后轮询任务)或 openai-compat(同步返回图片) |
| 代理 | 需要代理才能访问时填,例如 http://127.0.0.1:7897;不需要就留空 |
| 凭据名 | 密钥存在哪。填环境变量名,或 ~/.dsh/.credentials.yaml 里的键名 |
| 默认模型 | AI 没指定模型时用哪个。可以先点「检测」拉取可用模型列表 |
API Key 怎么填:二选一
- 环境变量:
setx YOUR_KEY_NAME "sk-..." - 或写进
~/.dsh/.credentials.yaml:
YOUR_KEY_NAME: sk-...
密钥不会写进插件的配置文件,也不会进图片库。
数据
图片库就是一个普通目录,图片和元数据放在一起:
<图片库目录>\
├─ 脚本产出\<哈希12>.png + .json ← generate_image 直出
├─ 会话导入\<会话短id>\<时间>-<哈希12>.png + .json
├─ 手动导入\<时间>-<哈希12>.png + .json
├─ .workbench\ ← 工作台导出(不参与扫描)
└─ .dshsg-trash\ ← 删除的图(不参与扫描)
每张图旁边有一个同名 .json(sidecar),记录提示词、模型、参数、花费、时间等:
{
"schemaVersion": 2,
"origin": "script",
"sessionId": "session-…",
"prompt": "…",
"model": "gpt-image-2",
"size": "9:16",
"resolution": "1k",
"quality": "high",
"width": 941,
"height": 1672,
"bytes": 3009263,
"hash": "30b4ff9c7f6d",
"costUsd": 0.0085,
"createdAt": "…",
"importedAt": "…"
}
sessionId是「会话图片」栏认领这张图的唯一依据hash是内容 sha256 的前 12 位,用于跨路径去重和收藏(换目录不丢)- 没有 sidecar 的旧图也能显示,只是没有参数
删掉 .json 不影响看图,只是大图里看不到参数了。
开发
npm install
npm run build # 产出 lib/index.js(宿主)与 lib/client.js(客户端)
npx tsc --noEmit # esbuild 不做类型检查,这步能提前抓错
改动生效规则:
| 改了什么 | 要做 |
|---|---|
src/client/**(界面) |
重新 build,刷新面板即可(客户端插件是热加载的) |
src/index.ts(路由、工具、出图) |
重新 build,完全退出 DSH 再启动 |
详细设计约束、踩过的坑、中转站协议实测数据见 docs/维护笔记.md。
许可
MIT
No comments yet. Be the first to write one.