Comfyui-dsh
非官方社区插件,不代表 Comfy Org 或 DeepSeek。ComfyUI 名称和 Logo 属于 Comfy Org;本项目的 MIT 许可证不覆盖 Logo,详见 NOTICE。
把本地 ComfyUI 变成 DeepSeek Harness(DSH)左侧栏里的一个工作台:
- 一键启动 / 关闭 / 后台运行
- 在 DSH 面板内嵌 ComfyUI,不用来回切浏览器
- 独立的「释放显存」按钮:只卸载模型、清空缓存,不关闭 ComfyUI
- 自动检测本机配置:显卡、显存、驱动、温度、CPU、内存、磁盘、Python / PyTorch
- 下载入口:国内平台优先,Civitai / Hugging Face 作为补充
- 模型体检:按你的实际显存估算模型能不能跑,跑不动给出降级方案
- 自动创建工作区:第一次安装自动生成左侧栏「ComfyUI」工作区;里面的所有对话都会读取
AGENTS.md,可以让 AI 画画、看日志、释放显存、下载模型 - 自动识别安装:不用手改路径;找不到 ComfyUI 时使用
<DSH_HOME>/comfyui,不会写到插件目录 - 内置
comfyui-tutor技能,让 DSH 里的 AI 按你的真实路径教学和排错
这个插件不是 ComfyUI 发行版,也不替代 ComfyUI。它会自动识别一个已经安装好的本地 ComfyUI;找不到时只准备一个 DSH 默认目录和说明,不会自动下载几个 GB 的 ComfyUI / Python / PyTorch。
功能
| 功能 | 说明 |
|---|---|
| 启动 / 关闭 | 在 DSH 内启动独立端口的 ComfyUI;关闭时结束进程树并释放显存 |
| 接管已有进程 | 插件重载或 DSH 重启后,自动接管仍在端口上运行的 ComfyUI,避免“显示已停止、显存仍被占用” |
| 后台运行 | 收起面板,ComfyUI 继续跑 |
| 新窗口 | 单独打开 http://127.0.0.1:<port> |
| 释放显存 | 调用 ComfyUI 的 POST /free,卸载模型、释放缓存,不停止服务 |
| 本机配置 | 自动读取 GPU / 显存 / CPU / 内存 / 磁盘 / Python / PyTorch |
| 下载模型 | LiblibAI、ModelScope、hf-mirror 国内优先;Civitai、Hugging Face、GitHub Releases 补充 |
| 存放路径 | 大模型 / LoRA / VAE / ControlNet 一键打开对应文件夹 |
| 模型体检 | 按模型类型 + 精度估算显存,给出“可以跑 / 勉强 / 不建议”的结论 |
| AI 教师 | 运行时注册 comfyui-tutor 技能,路径来自当前配置,不写死 |
| 自动创建工作区 | 首次安装创建 <DSH_HOME>/workspaces/ComfyUI,注册为左侧栏「ComfyUI」工作区 |
| 工作区助手 | 工作区内置 tools/comfyui.mjs,所有对话可让 AI 执行 status / logs / generate / download / free |
| 自动识别安装 | 检查环境变量、常见安装位置、DSH 默认目录;路径无效时自动回退,不阻断新用户 |
环境要求
- Windows 10/11(主要在 Windows 上开发和测试;macOS / Linux 的 host 代码做了兼容,但未完整验证)
- DSH,支持 bundle / Cordis 插件
- 一个可用的 ComfyUI 安装,以及它对应的 Python 环境(需要
torch) - NVIDIA 显卡推荐;没有
nvidia-smi时硬件卡会降级显示,不影响启动 - Node.js >= 20(DSH 自带环境即可)
安装
0. 从 DSH 插件市场安装(推荐)
仓库:https://github.com/Clover-RHL/comfyui-dsh
在 DSH 里添加一次索引源:
DSH → 插件 → 发现 → 添加索引源
https://clover-rhl.github.io/comfyui-dsh/market/index.json
然后搜索 Comfyui-dsh → 安装。当前索引使用 GitHub Git source,不需要 npm 账号;DSH 市场暂不支持自动升级,更新时卸载重装即可。
目前 DSH 没有官方集中市场,「发现」需要先添加索引源。想不添加索引直接装,可在 DSH 里执行
plugin_manager action=install_bundle target=git+https://github.com/Clover-RHL/comfyui-dsh.git#095bcf2919c629afb01e8d0c7053dedbd898d210。
1. 准备 ComfyUI(可跳过)
插件会先自动找现成的 ComfyUI;第一次安装不需要手动改路径。
按顺序检查:
COMFYUI_DIR/COMFYUI_PATH/COMFYUI_HOME环境变量cordis.patch.yml里显式写的comfyDir/installDir- 常见位置:
C:/D:/E:/F:/ComfyUI、ComfyUI_windows_portable/ComfyUI、ComfyUI-DSH/ComfyUI、AI/ComfyUI、秋叶/绘世整合包目录 - 用户目录、
Downloads、Desktop下的 ComfyUI - 仍找不到:使用
<DSH_HOME>/comfyui/ComfyUI
Python 也按同样逻辑找:<installDir>/python、python_embeded、venv,以及 COMFYUI_PYTHON。模型目录优先读取 ComfyUI 的 extra_model_paths.yaml,其次 <comfyDir>/models。
如果自动找错了,再在配置里显式指定即可。
2. 放进 DSH workspace
git clone https://github.com/Clover-RHL/comfyui-dsh.git comfyui-dsh
把 comfyui-dsh 放到 DSH 的 workspace 下,例如:
<workspace>/comfyui-dsh
3. 配置(可选)
cordis.patch.yml 里默认不写死任何人的绝对路径,只保留端口和工作区开关:
config:
port: 8199
host: '127.0.0.1'
startupTimeoutMs: 240000
autoStopOnExit: true
allowEmbedding: true
autoWorkspace: true
extraArgs: []
如果自动识别不对,再追加自己的路径:
installDir: 'D:/ComfyUI-DSH'
comfyDir: 'D:/ComfyUI-DSH/ComfyUI'
pythonPath: 'D:/ComfyUI-DSH/python/python.exe'
modelsRoot: 'D:/AI/ComfyUI/models'
显式配置优先;路径不存在时自动回退到探测结果,不会因为作者示例路径而启动失败。
4. 安装 bundle
在 DSH 会话里:
plugin_manager action=install_bundle target=<workspace>/comfyui-dsh
安装后刷新 DSH 页面,左侧栏会出现官方 Comfy 标记图标。
5. 首次启动
点「启动 ComfyUI」,等待 15–60 秒。首次加载自定义节点和模型索引会慢一些。
6. 第一次安装还会创建 ComfyUI 工作区
安装后左侧栏会多一个 ComfyUI 工作区,默认路径 <DSH_HOME>/workspaces/ComfyUI,它里面自带:
AGENTS.md # 告诉 AI 这个工作区绑定 ComfyUI,先 status / logs
tools/comfyui.mjs # AI 可直接运行的助手
这个工作区里的所有对话都会自动读取 AGENTS.md,因此可以直接说:
- “帮我看看 ComfyUI 为什么没启动” → AI 跑
logs - “画一只戴红围巾的橘猫” → AI 跑
generate - “把显存清一下” → AI 跑
free - “帮我下载这个 LoRA” → AI 跑
download
工作区只创建一次;之后即使删除也不会在每次启动时重复创建。需要重建时删除
<DSH_HOME>/comfyui/.workspace-created再重载插件。
工作区为什么默认在 C 盘?
因为 DSH 默认把工作区注册信息放在 DSH_HOME(通常是 C:\Users\<用户>\.dsh)。这个目录里只有 AGENTS.md 和 tools/comfyui.mjs,大约十几 KB,不是模型、不是出图、也不是 ComfyUI 本体;ComfyUI、Python、模型和输出仍然在你自己的 ComfyUI 所在盘。
如果想把对话工作区也放到 E 盘,在 cordis.patch.yml 里加一行即可:
workspaceDir: 'E:/ComfyUI-DSH/workspace'
再重载插件;插件会新建并注册这个路径,旧的 C 盘工作区不会被删除(需要的话可以手动从 DSH 侧边栏移除)。
配置项
| 键 | 默认 / 示例 | 说明 |
|---|---|---|
installDir |
自动探测,找不到时 <DSH_HOME>/comfyui |
插件运行根目录(日志、Python、ComfyUI 的父目录) |
comfyDir |
自动探测,找不到时 <DSH_HOME>/comfyui/ComfyUI |
ComfyUI 核心目录,必须包含 main.py |
pythonPath |
自动探测 | 运行 ComfyUI 的 Python;找不到时界面会提示补环境 |
modelsRoot |
优先读 extra_model_paths.yaml,否则 <comfyDir>/models |
插件统计/展示/打开的模型库;建议只读共享 |
port |
8199 |
独立端口,避免和原有 ComfyUI 冲突 |
host |
127.0.0.1 |
只监听本机;不要随意改成 0.0.0.0 |
startupTimeoutMs |
240000 |
启动超时 |
autoStopOnExit |
true |
DSH 退出时停止 ComfyUI |
allowEmbedding |
true |
加 --enable-cors-header,允许 iframe 内嵌 |
autoWorkspace |
true |
首次安装自动创建并注册「ComfyUI」工作区 |
workspaceDir |
<DSH_HOME>/workspaces/ComfyUI |
工作区目录;可改成 E:/ComfyUI-DSH/workspace 等任意可写目录 |
extraArgs |
[] |
追加给 ComfyUI 的启动参数,例如 --lowvram |
关于 allowEmbedding 和黑屏
ComfyUI 默认的 origin_only_middleware 会检查 Host 和 Origin。DSH 页面和 ComfyUI 端口不同,iframe 请求会被 403,表现为黑屏。
插件在 allowEmbedding: true 时给 ComfyUI 加官方参数:
--enable-cors-header
该参数会跳过这个来源校验,并加上 Access-Control-Allow-Origin: *。因为服务仍然只绑定 127.0.0.1,只在本机使用是可接受的;如果你把 host 改成 0.0.0.0,请自行评估风险,或改成反向代理同源方案。
隔离部署示例
D:\ComfyUI-DSH
├─ python\ # 从现有环境复制的 Python + PyTorch
├─ ComfyUI\ # ComfyUI 核心 + 自定义节点
│ ├─ extra_model_paths.yaml # 只读挂载外部模型库
│ ├─ output\ # 新图写这里
│ └─ user\ # 独立设置
└─ logs\ # 启动日志
外部模型库(例如 D:\AI\ComfyUI\models)只作为只读共享,不移动、不删除、不改写。示例 extra_model_paths.yaml:
comfui_shared:
base_path: D:/AI/ComfyUI
checkpoints: models/checkpoints
loras: models/loras
vae: models/vae
controlnet: models/controlnet
text_encoders: models/text_encoders
diffusion_models: models/diffusion_models
不要设置
is_default: true,否则 ComfyUI 下载的新模型可能写进原模型库。
AI 在 ComfyUI 工作区里能做什么
工作区内的 tools/comfyui.mjs 不依赖第三方包,直接调用插件和 ComfyUI:
node tools/comfyui.mjs status
node tools/comfyui.mjs logs --lines 80
node tools/comfyui.mjs models --type all
node tools/comfyui.mjs start
node tools/comfyui.mjs free
node tools/comfyui.mjs open --kind checkpoints
node tools/comfyui.mjs generate --prompt "一只戴红围巾的橘猫,电影感" --width 1024 --height 1024
node tools/comfyui.mjs download --url "https://..." --type loras
generate使用CheckpointLoaderSimple + KSampler + VAEDecode + SaveImage的最小 txt2img 工作流,默认 1024×1024 / 20 步 / CFG 7;出图后打印绝对路径。download只允许 Civitai、Hugging Face、hf-mirror、ModelScope、LiblibAI、GitHub 这些域名,按类型写入<modelsRoot>/checkpoints|loras|vae|controlnet,不会覆盖已有文件(除非加--force)。- 所有命令都先读插件
/status,所以路径和端口始终以实际配置为准。
工作区里的 AI 仍然受 DSH 的工具权限约束;涉及删除、覆盖、改系统设置时,先让用户确认。
接口
Host 侧提供同源 JSON 接口,只允许本机 DSH 页面访问:
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /api/dsh-comfyui/status |
运行状态、端口、路径、模型计数 |
| POST | /api/dsh-comfyui/start |
启动 |
| POST | /api/dsh-comfyui/stop |
停止并释放 |
| GET | /api/dsh-comfyui/logs |
最近日志 |
| GET | /api/dsh-comfyui/hardware |
硬件检测;?refresh=1 强制刷新 |
| POST | /api/dsh-comfyui/free-vram |
调用 ComfyUI /free,卸载模型、释放显存 |
| POST | /api/dsh-comfyui/open-folder |
打开白名单目录,body { "kind": "checkpoints" } |
修改类接口(start / stop / free-vram / open-folder)还要求请求头 X-DSH-ComfyUI: 1,用于阻止跨站请求伪造。
open-folder 只接受这些 kind:
models, checkpoints, loras, vae, controlnet, output, input, temp, comfy, install, workspace
模型下载
国内优先(打不开国外站点时先走这里):
- LiblibAI 哩布哩布 — 国内友好,中文界面,部分模型免费
- ModelScope 魔搭 — 国内模型平台
- hf-mirror — Hugging Face 国内镜像
国外 / 补充:
- Civitai(C站) — 模型最全,需科学上网
- Hugging Face — 官方开源模型主来源
- GitHub Releases — 个别 ControlNet / Flux 配套文件
ComfyUI 内下载:在 ComfyUI-Manager 里搜索 ComfyUI-Model-Downloader 或 CivitaiManager。
存放位置(以 modelsRoot 为准):
| 类型 | 目录 |
|---|---|
| 大模型 / Checkpoint | <modelsRoot>/checkpoints |
| LoRA | <modelsRoot>/loras |
| VAE | <modelsRoot>/vae |
| ControlNet | <modelsRoot>/controlnet |
下载后文件名不要改;刷新模型列表或重启 ComfyUI。
模型体检
面板里的“模型体检”是一个保守估算:
- 显存需求 ≤ 85%:可以跑
- 85%–130%:勉强,建议 fp8/量化 +
--lowvram+ 降低分辨率 130%:不建议直跑,换 fp8/GGUF Q4,或用云端 / 更大显存机器
实际还受分辨率、批量、自定义节点影响。把模型链接发给 DSH AI,comfyui-tutor 技能会按真实参数再算。
故障排查
| 现象 | 处理 |
|---|---|
| 面板黑屏 / iframe 空白 | 确认 allowEmbedding: true;ComfyUI 启动参数应包含 --enable-cors-header;仍不行点「新窗口」 |
| 启动失败 | 看日志末尾;检查 pythonPath、comfyDir/main.py、端口占用、显卡驱动 |
| 端口被占用 | Get-NetTCPConnection -LocalPort 8199;换 port 或关掉占用程序 |
| 显示已停止但显存仍占用 | 插件重载后会自动接管端口上的 ComfyUI;若界面还没刷新,点一次「启动」让它接管,或点「关闭」结束残留进程 |
| 模型列表为空 | 检查 modelsRoot、extra_model_paths.yaml,以及 ComfyUI 是否有读权限 |
| 爆显存 | SDXL 控制在 1024×1024;Flux 用 fp8;加 --lowvram;关掉其他 GPU 程序 |
| 释放显存按钮无变化 | 没有加载模型时释放量可能为 0;加载模型后再试;或直接「关闭」 |
ComfyUI-Manager 报 raw.githubusercontent.com |
它联网检查失败,不影响启动和画图,可忽略 |
开发
没有构建步骤,源码即产物:
comfyui-dsh/
├─ src/index.js # Host:进程管理、自动探测、工作区注册、HTTP 接口、技能
├─ src/client.js # Client:左侧栏入口、面板 UI、iframe
├─ assets/comfyui.mjs # 工作区助手,首次安装复制到 <DSH_HOME>/workspaces/ComfyUI/tools
├─ cordis.patch.yml # bundle 配置
├─ locale/ # 元数据国际化
└─ icon.svg
检查语法:
npm run check
CI 也会在 Node 20 / 22 上跑同样的语法检查。
修改后重新安装 bundle 并刷新 DSH 页面。
安全
- Host 接口只接受 loopback 且
Host为 localhost 的请求。 - 修改类接口要求
X-DSH-ComfyUI: 1请求头,阻止本地网页跨站调用。 open-folder只允许白名单目录,不接受任意路径。- 不做遥测,不上传任何本地数据;外部链接只在用户点击时打开。
- 模型库只读共享;不删除、不移动用户原文件。
--enable-cors-header会放宽 ComfyUI 同源限制,服务请保持绑定127.0.0.1。
更多见 SECURITY.md。媒体/隐私边界见 PRIVACY.md,Logo 与商标说明见 NOTICE。
开源与发布
仓库已开源:https://github.com/Clover-RHL/comfyui-dsh。当前发布方式为 Git source + GitHub Pages 索引,不依赖 npm;索引地址:
https://clover-rhl.github.io/comfyui-dsh/market/index.json
更完整的发布、npm 可选发布、隐私检查说明见 PUBLISHING.md:
- 发布前的隐私/密钥检查(
npm run check:secrets); - 如何托管
market/index.json,让用户在 DSH 的「发现」里添加索引源后搜索安装; - 为什么目前没有官方插件市场,以及进入官方目录需要 DSH 团队收录。
Comfyui-dsh 是非官方社区插件。ComfyUI 名称和 Logo 属于 Comfy Org,Logo 仅用于标识被集成的应用,不代表官方背书;详见 NOTICE。
License
MIT。ComfyUI 名称/Logo 不包含在 MIT 授权范围内。
English
Comfyui-dsh is an unofficial DSH sidebar workbench for local ComfyUI: start/stop/background, embedded iframe, a dedicated Free VRAM button, automatic hardware detection, China-first model download links, and a model-fit estimator. On first install it also creates a ComfyUI workspace whose conversations can drive the workbench through tools/comfyui.mjs (status, logs, generate, download, free VRAM). It auto-detects an existing ComfyUI installation; when none is found it prepares <DSH_HOME>/comfyui instead of writing into the plugin folder. It never modifies your model library.
See the Chinese sections above for installation, privacy, and publishing. For distribution, see PUBLISHING.md; for the logo/trademark notice, see NOTICE.
No comments yet. Be the first to write one.