WeKnora
Tencent
Open-source LLM knowledge platform: turn raw documents into a queryable RAG, an autonomous reasoning agent, and a self-maintaining Wiki.
PROJECT TOPICS
INSTALL REFERENCE
dsh plugin --profile web add github:muze63096/dsh-draw-plugin
该命令指向仓库当前默认分支;尚无绑定当前 commit 的完整验证结果。
PROJECT README
给 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 | 支持(面板下拉选 + 权重) | 支持(提示词里写 <lora:名字:0.8>) |
| 生态 | 完整 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。
/images/generations 端点/本机引擎(ComfyUI 或轻量版 SD.cpp)。.jpg/.png/.webp),Content-Type 也如实返回。$DSH_HOME/dsh-draw),填过就记住;行配置也能改默认值。$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_HOME/profiles/<profile>/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 就绪之前跑,路由注册不上。
.dsh-draw-key.txt,面板里就不用每次填。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 两种都支持。
想精确复刻某种画风(尤其二次元),LoRA 是最有效的办法——而 LoRA 只能在你自己的推理端加载,所以这个模式连的是你本机的 ComfyUI。
前提:本机装好 ComfyUI 并启动(默认 http://127.0.0.1:8188)。
面板里的用法:
/object_info,把底模与 LoRA 列表拉进下拉框两种工作流来源:
| 方式 | 说明 |
|---|---|
| 自动(默认) | 用你选的模型/LoRA 现拼一个标准 txt2img 工作流:CheckpointLoader →(LoraLoader)→ CLIPTextEncode ×2 → KSampler → VAEDecode → SaveImage |
| 自定义 | 把 ComfyUI 里「导出(API 格式)」的 JSON 粘进「自定义工作流」。提示词自动注入: ① 工作流里写了 {{prompt}} / {{negative}} / %prompt% → 直接替换占位符② 没写占位符 → 自动沿 KSampler 的 positive/negative 连线找到文本节点再替换 |
出图后结果区会显示一行「工作流:…」,告诉你这次是怎么注进去的。
注意:
选了 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 |
前提与限制:
nvidia-smi 检测,没有 N 卡就直接告诉你,不会装到一半才失败。$DSH_HOME/comfyui,面板里可改。两档各自的「画风词」放在提示词最前面,高级设置里可以直接改。默认值:
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,
实测经验(都用免费引擎跑过):
chibi / super deformed 这类超变形词足够强。坐在堆满泡面的房间里 这类具体场景会把画面拉向写实;只写角色 + 白底最容易保住 2D。flux-anime / flux-pro / anime 都是无效名,服务端会静默回退)。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-<seed>-<ts>.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)。deepseek-flash)默认 reasoningEffort=high,思考会把 maxTokens 吃光,一个字的译文都不吐、finish 是 max-tokens。现在翻译调用显式关掉思考(off),失败也会把原因显示在面板上。pout, angry, blush)。(blue hair:1.3), (whale tail:1.2),负面里排掉不想要的 cat ears, animal ears。出来的图是写实照片,不是我写的画风? 两种原因:中文提示词没翻译(检查「中文自动译成英文」是否勾上,生成结果下方会显示"实际发送"的提示词),或者提示词里场景描述压过了画风词。
图存哪了?想换地方? 看面板「保存到」下面那行灰字——它显示的是实际落盘目录。要换就在输入框里填,下次生成即生效,并且会被记住。
ComfyUI 读取不到模型 / 出图超时?
http://127.0.0.1:8188):浏览器打开它应该能看到 ComfyUI 界面。没在跑就先点面板上的「启动」(或双击安装目录里的 启动ComfyUI.bat)。"D:\...\python.exe" "...\main.py" --listen ...),PowerShell 会把 --listen 里的 -- 当成运算符,直接 ParserError 秒退,面板却报"已启动"。现在改成 & "…python.exe" "…main.py" --listen …。models/checkpoints)或 LoRA(应放 models/loras)。ComfyUI 装在别的盘(不在 $DSH_HOME/comfyui)?
在面板的「目录」里填它所在的文件夹(例如 D:\AI\ComfyUI),或者直接点检测结果里给出的候选目录。v0.5.2 起这个目录会被记住,DSH 重启后不用重填。
「启动失败:这个目录里没有装好的 ComfyUI」? 插件认这两种布局:
<目录>\python\python.exe + <目录>\ComfyUI\main.py<目录>\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 服务实际提供的方法名列出来——把那句话发给插件作者即可。
面板不出现 / 点了没反应?
.dsh-draw-init-error.txt,里面有失败原因;cordis.patch.yml 里的 inject 写了 fs/shell/webServer;升级插件后,面板报「检测失败:提示词是空的」?
宿主半边是进程启动时加载进内存的(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 时它才在磁盘上。
/dsh-draw/api 与 /dsh-draw/img/* 没有鉴权,只应暴露在本机(DSH 默认监听 127.0.0.1)。若你把 DSH 暴露到公网,请自行加访问控制——否则任何人都能用你的 Key 出图、也能读到本次进程内缓存的图片。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 generated, saved to your workspace and shown inline.
window.__ModuleLoader__ CJS unit)..dsh-draw-key.txt.dsh plugin --profile web add dsh-draw-plugin
# then restart the DSH web app
MIT licensed.
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: image-generation、text-to-image。