阅读路线
这套文档既可以顺读,也可以按问题切入。推荐先花十分钟读完系统总览,再选择一条主线。
路线 A:第一次理解 ComfyUI
适合知道“节点图能出图”,但还没建立后端心智模型的读者。
读完后应该能独立回答:
- 为什么后端收到的 JSON 与保存的 Workflow 不同?
- 为什么没有连接到输出的节点不会执行?
- 为什么队列是优先级堆,而节点执行顺序又不是简单的节点 ID 顺序?
- 一次点击 Queue Prompt 后,WebSocket 进度从哪里产生?
路线 B:编写可靠的自定义节点
顺序建议:
这一条线的关键不是“会写 execute”,而是理解你的节点怎样参与验证、签名计算、列表映射、生命周期管理和错误报告。
路线 C:研究推理运行时与显存
顺序建议:
重点观察三个“分离”:
- 模型结构识别与权重驻留设备分离;
- 基础权重对象与LoRA / hook / options 等补丁视图分离;
- 采样算法、sigma 调度与CFG 引导分离。
这三处分离让 ComfyUI 能在不同模型、设备和工作流之间复用同一套骨架。
问题到章节的速查
| 你遇到的问题 | 先读 |
|---|---|
| 点击执行后一直显示 queued | 服务与传输、队列与工作线程 |
| 改了一个节点却重跑很多节点 | 缓存与增量重算 |
| 节点只在某个分支需要输入 | 动态执行:懒输入 |
| 想让节点运行时生成更多节点 | 动态执行:expand 子图 |
| 模型明明能放进显存仍频繁搬运 | 设备、显存与卸载策略 |
| LoRA 叠加后模型行为异常 | ModelPatcher |
API 提交返回 node_errors | 输入与图验证 |
| 自定义节点没有出现在菜单 | 节点发现与装载 |
| 输出文件能否直接由 HTTP 打开 | 文件与安全边界 |
一次真实请求贯穿全书
后续章节反复使用一个最小文生图 Prompt:CheckpointLoader → CLIPTextEncode(正/负)→ EmptyLatentImage → KSampler → VAEDecode → SaveImage。
它足够小,却覆盖了:
- 模型、CLIP、VAE 三类重量级对象;
- 常量输入和节点连接;
- 一个明确的输出节点;
- 缓存可复用的文本编码与模型加载;
- 多步采样与进度预览;
- 文件输出、历史记录与 WebSocket 消息。
当章节讨论懒输入、异步或运行时子图时,会在这条主链路上加一个假想节点,而不会偷偷改变基础模型。
Last updated on