写提示词即出图,可选画风与出图引擎
30.8/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/9/30 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
自动兼容检查有告警:未发布到 npm registry,仅可从源码安装。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add muze63096/dsh-draw-plugin该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · vision
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 34 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查⚠ 装前注意未发布到 npm registry,仅可从源码安装
展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✗npm 包dsh-draw-plugin(未发布到 npm,仅可源码安装)
✓Node 引擎要求 >=18 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/14 10:17:20
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 88 处,展示前 41 条)
- 读取本地文件lib/index.js:51
SETUP_SOURCE = readFileSync(new URL('./setup.mjs', import.meta.url), 'utf8') - 读取本地文件lib/index.js:52
SETUP_SDCPP_SOURCE = readFileSync(new URL('./setup-sdcpp.mjs', import.meta.url), 'utf8') - 发起网络请求lib/client.js:137
return fetch(API, { - 写入本地文件lib/setup-sdcpp.mjs:76
for (const d of [root, MODELS, LORAS, TMP, DL]) mkdirSync(d, { recursive: true }) - 写入本地文件lib/setup-sdcpp.mjs:81
try { writeFileSync(STATUS, JSON.stringify(status, null, 2), 'utf8') } catch (error) { } - 执行外部命令来自配置/变量lib/setup-sdcpp.mjs:95
const result = spawnSync(command, args, { cwd: options.cwd || root, stdio: ['ignore', outFd, logFd] }) - 读取本地文件lib/setup-sdcpp.mjs:97
if (capturePath) { try { stdout = readFileSync(capturePath, 'utf8') } catch (error) { stdout = '' } } - 删除本地文件lib/setup-sdcpp.mjs:103
if (capturePath) { try { unlinkSync(capturePath) } catch (error) { } } - 写入本地文件lib/setup-sdcpp.mjs:121
mkdirSync(dirname(out), { recursive: true }) - 写入本地文件lib/setup-sdcpp.mjs:122
mkdirSync(partDir, { recursive: true }) - 发起网络请求lib/setup-sdcpp.mjs:124
const head = await fetch(url, { headers: { Range: 'bytes=0-0' }, redirect: 'follow', signal: AbortSignal.timeout(30000) }) - 读取本地文件lib/setup-sdcpp.mjs:135
for (const p of parts) if (existsSync(p.path)) progress[p.index] = statSync(p.path).size - 读取本地文件lib/setup-sdcpp.mjs:135
for (const p of parts) if (existsSync(p.path)) progress[p.index] = statSync(p.path).size - 读取本地文件lib/setup-sdcpp.mjs:143
const done = existsSync(part.path) ? statSync(part.path).size : 0 - 读取本地文件lib/setup-sdcpp.mjs:143
const done = existsSync(part.path) ? statSync(part.path).size : 0 - 发起网络请求lib/setup-sdcpp.mjs:146
const res = await fetch(url, { headers: { Range: 'bytes=' + (part.from + done) + '-' + part.to }, redirect: 'follow', signal: AbortSignal.timeout(3000 - 写入本地文件lib/setup-sdcpp.mjs:148
const handle = createWriteStream(part.path, { flags: done > 0 ? 'a' : 'w' }) - 读取本地文件lib/setup-sdcpp.mjs:181
const size = statSync(part.path).size - 删除本地文件lib/setup-sdcpp.mjs:192
try { unlinkSync(part.path) } catch (error) { } - 发起网络请求lib/setup-sdcpp.mjs:201
const res = await fetch(url, { redirect: 'follow', signal: AbortSignal.timeout(300000) }) - 写入本地文件lib/setup-sdcpp.mjs:210
mkdirSync(dirname(out), { recursive: true }) - 写入本地文件lib/setup.mjs:99
for (const d of [root, TMP, DL, CACHE]) mkdirSync(d, { recursive: true }) - 写入本地文件lib/setup.mjs:118
try { writeFileSync(STATUS, JSON.stringify(status, null, 2), 'utf8') } catch (error) { } - 执行外部命令来自配置/变量lib/setup.mjs:140
const result = spawnSync(command, args, { - 读取本地文件lib/setup.mjs:152
if (capturePath) { try { stdout = readFileSync(capturePath, 'utf8') } catch (error) { stdout = '' } } - 删除本地文件lib/setup.mjs:158
if (capturePath) { try { unlinkSync(capturePath) } catch (error) { } } - 读取本地文件lib/setup.mjs:164
const size = statSync(LOG).size - 发起网络请求lib/setup.mjs:176
const res = await fetch(url, { signal: AbortSignal.timeout(30000) }) - 发起网络请求lib/setup.mjs:182
const res = await fetch(url, { signal: AbortSignal.timeout(30000), redirect: 'follow' }) - 写入本地文件lib/setup.mjs:189
mkdirSync(dirname(out), { recursive: true }) - 写入本地文件lib/setup.mjs:190
mkdirSync(partDir, { recursive: true }) - 发起网络请求lib/setup.mjs:194
const head = await fetch(url, { headers: { Range: 'bytes=0-0' }, redirect: 'follow', signal: AbortSignal.timeout(30000) }) - 读取本地文件lib/setup.mjs:210
for (const p of parts) if (existsSync(p.path)) progress[p.index] = statSync(p.path).size - 读取本地文件lib/setup.mjs:210
for (const p of parts) if (existsSync(p.path)) progress[p.index] = statSync(p.path).size - 读取本地文件lib/setup.mjs:218
const done = existsSync(part.path) ? statSync(part.path).size : 0 - 读取本地文件lib/setup.mjs:218
const done = existsSync(part.path) ? statSync(part.path).size : 0 - 发起网络请求lib/setup.mjs:221
const res = await fetch(url, { - 写入本地文件lib/setup.mjs:227
const handle = createWriteStream(part.path, { flags: done > 0 ? 'a' : 'w' }) - 删除本地文件lib/setup.mjs:274
try { unlinkSync(part.path) } catch (error) { } - 发起网络请求lib/setup.mjs:284
const res = await fetch(url, { redirect: 'follow', signal: AbortSignal.timeout(300000) }) - 写入本地文件lib/setup.mjs:293
mkdirSync(dirname(out), { recursive: true })
扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 写提示词即出图
- Q版与正常画风
- 三引擎可选
展开完整介绍(150 字)↓
DeepSeek Harness 画图插件:侧边栏整页面板,写提示词即出图,Q版/正常两档画风,三引擎可选(免费 Pollinations / 硅基流动 Kolors / 任意 OpenAI 兼容)。A text-to-image panel plugin for DeepSeek Harness.
README
由 DeepSeek 最新模型翻译生成dsh-draw-plugin
给 DeepSeek Harness 用的画图插件:侧边栏多一个「画图」面板,写句提示词就出图,Q版/正常两档画风,三个出图引擎随便挑。
零运行时依赖,不需要构建——宿主半边是普通 ESM,客户端半边是加载器直接可用的 CJS 单元。
两个版本,按需选一个
两个包的代码完全相同,区别只在「默认引擎」和文档——所以随时能切换,不用重装。
| | 完整版(ComfyUI) | 轻量版(SD.cpp) |
| 一键安装要下多少 | ~5 GB(含 CUDA 版 PyTorch)+ 2 GB 模型 | 29 MB 引擎 + 2 GB 模型 |
| 磁盘占用 | ~12 GB | ~2.5 GB |
| 首次安装耗时 | 10~20 分钟 | 1~3 分钟 |
| 出图速度(RTX 4050 / 512×512 / 20 步) | ~10 秒 | ~9.5 秒 |
| 显卡要求 | Windows + N 卡(CUDA) | Windows + 任意支持 Vulkan 的显卡(N / A / 核显都行) |
| LoRA | 支持(面板下拉选 + 权重) | 支持(提示词里写 ) |
| 生态 | 完整 ComfyUI:自定义节点、别人分享的工作流 | 只有基础文生图 |
展开完整文档(README 剩余 1 节)
dsh-draw-plugin
给 DeepSeek Harness 用的画图插件:侧边栏多一个「画图」面板,写句提示词就出图,Q版/正常两档画风,三个出图引擎随便挑。
零运行时依赖,不需要构建——宿主半边是普通 ESM,客户端半边是加载器直接可用的 CJS 单元。
两个版本,按需选一个
两个包的代码完全相同,区别只在「默认引擎」和文档——所以随时能切换,不用重装。
| | 完整版(ComfyUI) | 轻量版(SD.cpp) |
| 一键安装要下多少 | ~5 GB(含 CUDA 版 PyTorch)+ 2 GB 模型 | 29 MB 引擎 + 2 GB 模型 |
| 磁盘占用 | ~12 GB | ~2.5 GB |
| 首次安装耗时 | 10~20 分钟 | 1~3 分钟 |
| 出图速度(RTX 4050 / 512×512 / 20 步) | ~10 秒 | ~9.5 秒 |
| 显卡要求 | Windows + N 卡(CUDA) | Windows + 任意支持 Vulkan 的显卡(N / A / 核显都行) |
| LoRA | 支持(面板下拉选 + 权重) | 支持(提示词里写 ) |
| 生态 | 完整 ComfyUI:自定义节点、别人分享的工作流 | 只有基础文生图 |
| 适合谁 | 想用 ComfyUI 生态、要各种节点插件 | 只想装上就能画、硬盘或网速有限 |
轻量版用的是 stable-diffusion.cpp:一个纯 C++ 推理器, sd-server.exe 自带 OpenAI 兼容 + A1111 兼容接口,所以插件接它几乎不用额外代码。
长什么样
左侧边栏底部多一个铅笔图标「画图」,点开是一个整页面板:
┌ 画图 ─────────────────────────────────────────┐ │ 提示词 [ 坐在桌前打游戏,回头惊讶地看着镜头 ] │ │ 固定角色[ 蓝发鲸鱼女仆娘,白色蕾丝女仆装… ] │ │ 画风 (●)Q版 ( )正常 尺寸 [1:1][3:4][16:9] │
│ [ 生成 ] │
├───────────────────────────────────────────────┤
│ 引擎 (●)免费 Pollinations ( )硅基流动 ( )自定义│ │ 模型 (●)Turbo ( )FLUX │ │ ☑纯白背景 ☑中文自动译成英文 高级设置 │ ├───────────────────────────────────────────────┤ │ ┌────────────┐ │ │ │ 出图预览 │ │ │ └────────────┘ │
│ [新窗口打开] [再来一张] 已保存: │
├───────────────────────────────────────────────┤
│ 本次历史 ▢ ▢ ▢ ▢ │ └───────────────────────────────────────────────┘
截图占位:欢迎 PR 补一张 docs/screenshot.png。
特性
- 四个引擎可选,Key 由使用者自己填:免费 Pollinations(无需 Key)/硅基流动(Kolors 等)/任意 OpenAI 兼容的 /images/generations 端点/本机引擎(ComfyUI 或轻量版 SD.cpp)。
- 本机引擎一键安装:没有环境的点一下按钮就自动装好;完整版装 ComfyUI(~5GB),轻量版装 stable-diffusion.cpp(29MB)。两者都支持 LoRA。
- Q版 / 正常两档画风,画风词前置(实测:放句尾会被稀释成 3D 写实风)。
- 中文提示词自动译成英文(可关)。实测免费引擎吃到中文会整体切到写实路线并丢掉画风词,所以默认开启翻译,并会把你实际发送的提示词显示出来。
- 限流自动重试:免费引擎的 402/429/500 会退避重试 4 次,不是一撞就死。
- 按真实格式落盘:引擎返回什么类型就存什么后缀(.jpg/.png/.webp),Content-Type 也如实返回。
- 历史缩略图、真实耗时/体积、一键新窗口打开。
- 自定义保存位置:面板「保存到」直接填(默认 $DSH_HOME/dsh-draw),填过就记住;行配置也能改默认值。
- 不写死任何路径:脚本、设置、Key 文件都在 $DSH_HOME,出图目录由使用者指定。
安装
从 npm(发布之后)
dsh plugin --profile web add dsh-draw-plugin
从本地目录 / GitHub clone / 解压的 ZIP:注意 -w 不能省
dsh plugin --profile web add -w "D:\path\to\dsh-draw-plugin"
-w 是必须的。 profile 目录本身就是 pnpm 的 workspace root,不加 -w 会报 ERR_PNPM_ADDING_TO_ROOT。(-w 只是 pnpm 的 --workspace-root 缩写,不会改变装到哪个 profile。)
dsh plugin … add 会通过包自带的 dsh.bundle.patch 自动挂载插件行,不需要手动改 profile。
然后重启 DSH 的 web app(客户端 bundle 在启动时组图)。
手动安装(不走 dsh plugin)
把包目录放进 $DSH_HOME/profiles//node_modules/,并确保该 profile 的 cordis.patch.yml 里有:
- insert:
- id: dsh-draw
name: 'dsh-draw-plugin'
inject: [fs, shell, webServer]
config:
outDir: 'dsh-draw'
inject 不能少——少了它,apply 可能在 fs/shell/webServer 就绪之前跑,路由注册不上。
使用
1. 点侧边栏的铅笔图标「画图」。
2. 免费引擎开箱可用,不需要任何配置:写提示词 → 点生成。
3. 要用别的引擎:切到「硅基流动」或「自定义接口」,填 API Key。
- Key 也可以放到工作区的 .dsh-draw-key.txt,面板里就不用每次填。
4. 「固定角色」里写一段固定描述(如某个角色的外形),每张图都会带上——适合反复画同一个角色。
5. 一键预设(v0.5.6 起):提示词框上方有预设按钮,点一下就把画风、尺寸、提示词、负面一起填好。
- Q版鲸鱼娘:Q 版贴纸风 + 蓝发鲸鱼女仆(含加权与负面),本机引擎上实测可用
- Q版贴纸(任意角色):只套画风和"排掉文字/气泡/写实"的负面,提示词自己写
- 预设里带的底模只在当前模型列表里匹配得到时才自动选中(比如 NoobAI),匹配不到就只填提示词,不会把你的选择改坏
引擎
| 引擎 | 需要 Key | 默认端点 | 常用模型 |
| 免费 Pollinations | 否 | image.pollinations.ai | turbo(二次元更好)、flux(写实更好) |
| 硅基流动 | 是 | https://api.siliconflow.cn/v1 | Kwai-Kolors/Kolors、Tongyi-MAI/Z-Image-Turbo、Qwen/Qwen-Image |
| 自定义接口 | 是 | 你自己填 | 任何 OpenAI 兼容的 /images/generations 模型(dall-e-3 等) |
| ComfyUI(本机) | 否 | http://127.0.0.1:8188 | 你本机装的任何底模 + LoRA |
Key 在硅基流动控制台创建(siliconflow.cn)。它和 DeepSeek 的 API Key 是两家公司、两套余额,互不通用。
自定义接口会先发 image_size(硅基流动的写法),若对方返回 400/422 再自动改用 size(OpenAI 的写法)重发;返回体里的 url 和 b64_json 两种都支持。
ComfyUI 模式(本机出图 + LoRA)
想精确复刻某种画风(尤其二次元),LoRA 是最有效的办法——而 LoRA 只能在你自己的推理端加载,所以这个模式连的是你本机的 ComfyUI。
前提:本机装好 ComfyUI 并启动(默认 http://127.0.0.1:8188)。
面板里的用法:
1. 引擎选 ComfyUI(本机)
2. 点 读取模型 / LoRA —— 插件去问 ComfyUI 的 /object_info,把底模与 LoRA 列表拉进下拉框
3. 选底模、选 LoRA、调权重(默认 0.8)/ 步数 / CFG
4. 生成
两种工作流来源:
| 方式 | 说明 |
| 自动(默认) | 用你选的模型/LoRA 现拼一个标准 txt2img 工作流:CheckpointLoader →(LoraLoader)→ CLIPTextEncode ×2 → KSampler → VAEDecode → SaveImage |
| 自定义 | 把 ComfyUI 里「导出(API 格式)」的 JSON 粘进「自定义工作流」。提示词自动注入:① 工作流里写了 {{prompt}} / {{negative}} / %prompt% → 直接替换占位符② 没写占位符 → 自动沿 KSampler 的 positive/negative 连线找到文本节点再替换 |
出图后结果区会显示一行「工作流:…」,告诉你这次是怎么注进去的。
注意:
- 出图速度取决于显卡,可能几十秒到几分钟(插件最多等 240 秒)。
- 插件不代管 ComfyUI——它得先跑着。
- 中文提示词默认会译成英文再送(多数 SD/SDXL 的文本编码器对英文更友好);底模如果吃中文,把「中文自动译成英文」关掉即可。
一键安装 ComfyUI(给没有环境的用户)
选了 ComfyUI 引擎后,面板里会出现一张「环境」卡片:
| 按钮 | 作用 |
| 一键安装 ComfyUI | 全自动装好整套环境:嵌入式 Python + ComfyUI + CUDA 版 PyTorch + 默认二次元底模 |
| 启动 ComfyUI | 启动服务;同时会在安装目录生成 启动ComfyUI.bat,以后双击即可 |
| 重新检测 | 立刻刷新状态(平时每 2 秒自动刷新一次) |
安装过程显示进度(第几步 / 百分比 / 当前在做什么),断了可以重来——已装好的步骤会自动跳过。
它会下载什么(全部走国内可达的源,GitHub 直连在很多网络下是断的):
| 组件 | 来源 | 体积 |
| 嵌入式 Python 3.12 | 华为云镜像 | ~11 MB |
| pip | 清华 PyPI | ~2 MB |
| ComfyUI 源码 | Gitee 镜像 | ~12 MB |
| PyTorch(CUDA 12.8)+ torchvision/audio | pytorch 官方源,16 线程下载 | ~2.7 GB |
| 其余依赖 | 清华 PyPI | ~300 MB |
| 默认底模(SD1.5 二次元) | ModelScope | ~2 GB |
前提与限制:
- 目前只支持 Windows + NVIDIA。脚本会先用 nvidia-smi 检测,没有 N 卡就直接告诉你,不会装到一半才失败。
- 需要 ~12 GB 磁盘,首次约 10~20 分钟(16 线程下载,实测能跑满带宽)。
- 安装位置默认 $DSH_HOME/comfyui,面板里可改。
- 已经有 ComfyUI 的用户不用重装:把它的目录填进「安装位置」→ 点「重新检测」,插件会直接接管(检测到别处的现成安装时,卡片还会给出「用检测到的那个」按钮)。
画风:Q版 / 正常
两档各自的「画风词」放在提示词最前面,高级设置里可以直接改。默认值:
Q版 :flat 2D anime illustration, chibi, super deformed, big head small body, thick black outlines, flat cel shading, sticker art, large expressive eyes, blush, 正常 :2D Japanese anime illustration, clean line art, soft cel shading, detailed, anime screencap quality,
实测经验(都用免费引擎跑过):
- Q版能压住 2D:chibi / super deformed 这类超变形词足够强。
- 正常档会滑向 3D/CG:正常比例的角色,免费模型的引力井就是"漂亮 3D 二次元",换 4 套强制 2D 的措辞也压不住。想要贴合 2D 插画风格,换硅基流动的 Kolors。
- 场景词越多越写实:坐在堆满泡面的房间里 这类具体场景会把画面拉向写实;只写角色 + 白底最容易保住 2D。
- 免费引擎没有二次元专用模型(flux-anime / flux-pro / anime 都是无效名,服务端会静默回退)。
- 不要给 Pollinations 加 negative_prompt:实测会让服务端把不同模型的请求返回成同一张图。
保存位置
面板上的「保存到」输入框就是它,填过就记住(存在 $DSH_HOME/dsh-draw.config.json):
| 你填的 | 结果 |
| 留空 | $DSH_HOME/dsh-draw |
| my-pics | $DSH_HOME/my-pics(相对路径按 $DSH_HOME 解析) |
| D:\pics\draw | 原样使用(绝对路径) |
| ~/pics | 家目录下的 pics |
生成时会把该目录的父目录作为本次的 workspace-write 边界,所以自定义到别处也能落盘(沙箱只在写盘时按边界校验)。
行配置(cordis.patch.yml 里的 config:)改的是默认值(面板里还没设过时生效):
| 键 | 默认 | 说明 |
| outDir | 空 | 默认保存位置,留空 = $DSH_HOME/dsh-draw。 |
| comfyDir | 空 | ComfyUI 安装目录,留空 = $DSH_HOME/comfyui。面板里可临时覆盖。 |
文件落在哪
| 位置 | 文件 | 说明 |
| 保存目录(默认 $DSH_HOME/dsh-draw) | img--.jpg | 生成的图片(后缀随真实格式) |
| $DSH_HOME | .dsh-draw-gen.mjs | 生成脚本。无依赖、可直接读;出网、重试、落盘都在它里面 |
| $DSH_HOME | dsh-draw.config.json | 记住的保存位置 |
| $DSH_HOME | .dsh-draw-key.txt | 可选,你自己创建。面板没填 Key 时从这里读 |
| $DSH_HOME | .dsh-draw-init-error.txt | 仅在初始化失败时出现,内容是失败原因 |
$DSH_HOME 默认是 ~/.dsh(Windows:C:\Users\\.dsh)。
常见问题
一直报 HTTP 402 / 429?
免费引擎的限流很紧(上游有每分钟额度)。插件已经自动退避重试 4 次,还是失败就隔半分钟再点一次。想稳定出图就换硅基流动。
出来的图跟我写的中文提示词差很远?
本机 ComfyUI / SD.cpp 用的底模是按 Danbooru 英文标签训练的,它看不懂中文——中文进去等于一堆无意义的 token,头发颜色、服装、物种全靠模型瞎猜(实测:"蓝色长发鲸鱼女仆"会出来银白长发 + 和服)。
- 勾上「中文自动译成英文」,或干脆用英文标签写(1girl, solo, blue long hair, whale tail, white lace maid dress, arms crossed, pout, blush)。
- 生成结果下方会显示实际发送的提示词,先看那一行是不是中文——是中文就是翻译这一步没成功,下面会直接写出原因。
- v0.5.4 修了一个会导致翻译静默失败的坑:宿主的推理模型(如 deepseek-flash)默认 reasoningEffort=high,思考会把 maxTokens 吃光,一个字的译文都不吐、finish 是 max-tokens。现在翻译调用显式关掉思考(off),失败也会把原因显示在面板上。
- 别在提示词里写"说 XXX"这种要画面出字的要求:扩散模型不会写字,只会糊出一坨假字(想要情绪就用 pout, angry, blush)。
- 想更稳:给关键属性加权重 (blue hair:1.3), (whale tail:1.2),负面里排掉不想要的 cat ears, animal ears。
出来的图是写实照片,不是我写的画风?
两种原因:中文提示词没翻译(检查「中文自动译成英文」是否勾上,生成结果下方会显示"实际发送"的提示词),或者提示词里场景描述压过了画风词。
图存哪了?想换地方?
看面板「保存到」下面那行灰字——它显示的是实际落盘目录。要换就在输入框里填,下次生成即生效,并且会被记住。
ComfyUI 读取不到模型 / 出图超时?
- 确认 ComfyUI 在跑、地址对(默认 http://127.0.0.1:8188):浏览器打开它应该能看到 ComfyUI 界面。没在跑就先点面板上的「启动」(或双击安装目录里的 启动ComfyUI.bat)。
- 报「请先拉取并选一个模型」= 面板还没拿到底模列表:先让 ComfyUI 跑起来。v0.5.5 起只要服务在跑,面板会自己把模型列表拉回来(不用再手点「读取模型 / LoRA」),并且会记住你上次选的底模。
- 从 v0.5.5 起,「启动」按钮真的能用了:以前拼出来的命令以带引号的路径开头("D:\...\python.exe" "...\main.py" --listen ...),PowerShell 会把 --listen 里的 -- 当成运算符,直接 ParserError 秒退,面板却报“已启动”。现在改成 & "…python.exe" "…main.py" --listen …。
- 列表是空的 → ComfyUI 里没放底模(应放 models/checkpoints)或 LoRA(应放 models/loras)。
- 超时 → 显卡慢,或任务还堵在 ComfyUI 队列里;去 ComfyUI 界面看队列。
- 报「自定义工作流不是合法 JSON」→ 你粘的可能是「导出」,要的是「导出(API 格式)」。
ComfyUI 装在别的盘(不在 $DSH_HOME/comfyui)?
在面板的「目录」里填它所在的文件夹(例如 D:\AI\ComfyUI),或者直接点检测结果里给出的候选目录。从 v0.5.2 起这个目录会被记住,DSH 重启后不用重填。
「启动失败:这个目录里没有装好的 ComfyUI」?
插件认这两种布局:
- 自装版 / 插件一键装的:\python\python.exe + \ComfyUI\main.py
- ComfyUI 官方便携包:\python_embeded\python.exe + \ComfyUI\main.py(目录填到最外层那个文件夹)
如果你用的是 ComfyUI Desktop(桌面包) 或整合包,不用在这里填目录:直接打开那个应用,它自己就监听 8188,然后回面板点「读取模型 / LoRA」。面板出图只认「服务地址」,安装位置只服务于「一键安装 / 启动」。
面板报「检测失败:shell.run is not a function」?
插件要借宿主的 ctx.shell 跑一个 Node 探活脚本,而不同 DSH 版本给的方法名不一样。从 v0.5.3 起会自动退回 start(先起进程、等它结束、读输出),多数版本都能干活。要是还报错,面板会把宿主 shell 服务实际提供的方法名列出来——把那句话发给插件作者即可。
面板不出现 / 点了没反应?
1. 看工作区有没有 .dsh-draw-init-error.txt,里面有失败原因;
2. 确认 cordis.patch.yml 里的 inject 写了 fs/shell/webServer;
3. 装完必须重启 web app。
升级插件后,面板报「检测失败:提示词是空的」?
宿主半边是进程启动时加载进内存的(Node 的模块缓存),之后你改磁盘上的 lib/ 它也不会重载;而浏览器页面刷新后拿到的是新的面板代码。两边版本一错位,面板发来的 action 宿主不认识,请求就掉进了「出图」分支——没有提示词,于是报「提示词是空的」。
关掉 DSH 进程重新启动即可(只刷新浏览器页面不够)。从 v0.5.1 起,宿主对不认识的 action 会直接回一句「宿主不认识动作……」,不会再伪装成“提示词是空的”;同时兼容旧面板发出的 comfyui-status 写法。
为什么要写一个 .mjs 脚本再跑,宿主不直接请求?
宿主运行在受限求值环境里没有 fetch;而 Windows 沙箱下 curl、PowerShell 的 .NET 走的是系统 TLS(schannel),会被拒绝并报 SEC_E_NO_CREDENTIALS。Node 自带 OpenSSL,出网正常。所以出网这件事交给 Node 脚本做。
Key 会被写进文件吗?
不会。面板里填的 Key 只存在浏览器内存里,随请求以 stdin 传给子进程(不进命令行、不出现在进程列表),用完即弃。只有你自己创建 .dsh-draw-key.txt 时它才在磁盘上。
安全与隐私
- 出图请求由服务器直连你选的引擎,提示词会发送给该第三方(Pollinations / 硅基流动 / 你自定义的端点)。
- /dsh-draw/api 与 /dsh-draw/img/* 没有鉴权,只应暴露在本机(DSH 默认监听 127.0.0.1)。若你把 DSH 暴露到公网,请自行加访问控制——否则任何人都能用你的 Key 出图、也能读到本次进程内缓存的图片。
- 图片只缓存在内存里(最多 24 张)供页面显示;进程重启即失效,但磁盘上的图不会被删。
开发
dsh-draw-plugin/
├── package.json # dsh.bundle.patch + dsh.client 声明 ├── cordis.patch.yml # 挂载行(inject + config) ├── lib/ │ ├── index.js # 宿主半边(ESM):写脚本、跑脚本、挂路由、翻译 │ └── client.js # 客户端半边:__ModuleLoader__ 封装 + 面板 UI ├── test/ │ ├── smoke.mjs # 冒烟测试:stub 服务,验证导出/初始化/两个路由/出图链路/保存位置 │ ├── mock-comfyui.mjs # 假 ComfyUI(/object_info、/prompt、/history、/view) │ └── comfyui.test.mjs # 拿假 ComfyUI 真跑生成脚本:探活、LoRA、轮询、取图、提示词注入 └── LICENSE
npm run check # 语法检查
npm test # 冒烟 + ComfyUI 集成测试(都不需要联网、不需要显卡)
改画风词不用改代码——面板「高级设置」里当场就能改。
A text-to-image panel plugin for DeepSeek Harness. Adds a brush icon to the sidebar and a
full-page panel: type a prompt, pick a style (chibi / normal), pick an engine
(free Pollinations / SiliconFlow Kolors / any OpenAI-compatible endpoint), and the image is
已生成、保存到你的工作区,并以内联方式显示。
- 零运行时依赖,无需构建步骤(宿主端是纯 ESM,客户端是 window.__ModuleLoader__ CJS 单元)。
- API 密钥由用户提供,保存在浏览器内存中,并通过 stdin 传递给生成器子进程——除非你创建 .dsh-draw-key.txt,否则绝不会写入磁盘。
- 中文提示词会在发送到免费引擎之前自动翻译成英文,因为该引擎在遇到中文时会静默切换到照片写实风格。
dsh plugin --profile web add dsh-draw-plugin
然后重启 DSH Web 应用
MIT 许可。
许可证
MIT预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
muze63096/dsh-draw-plugin
写提示词即出图,可选画风与出图引擎
相关插件 · 视觉能力
智能体工作台Devin-AXIS/iPolloWork
企业级、本地优先的智能体工作台,面向个人和智能体团队——一个工作区,容纳多个智能体引擎;一套统一体系,管理插件和技能;支…
★ 7,359已汉化DSH
72
开源设计工作台nexu-io/open-design
OpenDesign:首个协作式 AI 设计智能体工作区
★ 105,514已汉化DSH
71.8
多智能体编码工作区spacering-net/codeg
多智能体协作的 AI 编程工作区:汇总 Claude Code、Codex、OpenCode、Pi、Grok Build 等来源的会话。支持桌面应用、自托管服务器或 Docker。
★ 4,289已汉化DSH
71.6
GPT 图像提示词库freestylefly/awesome-gpt-image-2
Prompt as Code | GPT Image 2 / 2.5 提示词与案例库,530+ 个案例、20+…
★ 34,534已汉化DSH
71.5
架构图生成器tt-a1i/archify
把你想理解、规划或分享的事,变成可以互动的可视化作品。
★ 92,675已汉化DSH
71.2
AI 用量桌面小部件Javis603/token-monitor
EN | 简 | 繁 | KO | JA | PT
★ 3,522已汉化DSH
71
这是你的仓库?认领条目