Skip to Content
附录B · 源码地图

B · 源码地图

所有链接固定到提交 7d11ec31cb700d881fdf2d73731ecde0093b9540。行号是阅读入口,不表示整个行为只存在于这一段。

项目规模

区域Python 文件Python 行数主要职责
comfy/284109,673模型、采样、设备、张量与格式核心
comfy_api_nodes/8450,054Partner / 远端 API nodes
comfy_extras/13640,855内建扩展节点与模型能力
app/369,954DB、用户、Assets、Managers
comfy_api/366,562V3 节点与内部 API 协议
comfy_execution/92,305动态图、缓存、进度、执行辅助
api_server/7180内部 API server 辅助
tests*11425,574执行、单元、推理、安全与资产测试
总计739254,241当前快照静态统计

顶层入口

问题源码入口
进程怎样启动?main.pyL501-593start_comfyui 与直接入口
worker 怎样循环?main.pyL329-424prompt_worker
进度怎样接服务?main.pyL435-464global progress hook
Server 怎样构造?server.pyL215-327PromptServer + WebSocket
Prompt 怎样入队?server.pyL1072-1144POST /prompt
路由怎样汇总?server.pyL1220-1281add_routes

执行引擎

对象 / 函数角色源码
validate_prompt / validate_inputs结构、类型、值、环、输出根execution.pyL846-1247
PromptQueuewaiting/running/history/flagsexecution.pyL1251-1411
PromptExecutor.execute_async请求级执行生命周期execution.pyL730-844
execute单节点状态机execution.pyL438-662
get_input_data链接、常量、hidden、V3 输入execution.pyL159-227
_async_map_node_over_listlist / V1 / V3 / async 调用execution.pyL243-319
get_output_from_returnsresult/UI/expand/blocker 归一execution.pyL351-414
DynamicPrompt原始与临时节点统一视图comfy_execution/graph.pyL21-62
TopologicalSort动态依赖基础结构comfy_execution/graph.pyL106-191
ExecutionListstage/unstage/complete 与启发式comfy_execution/graph.pyL193-342
GraphBuilder运行时子图构建与序列化comfy_execution/graph_utils.pyL13-114
ExecutionBlocker领域级阻断值comfy_execution/graph_utils.pyL140-155

缓存

对象读什么源码
IsChangedCacheV1/V3 外部状态 fingerprintexecution.pyL60-101
CacheSetoutputs 与 objects 策略组合execution.pyL104-149
CacheKeySetInputSignature祖先、常量、slot 的完整签名comfy_execution/caching.pyL82-149
BasicCacheprompt key set、读写、清理comfy_execution/caching.pyL151-286
HierarchicalCacheexpand 子图的父子生命周期comfy_execution/caching.pyL288-421
LRUCachegeneration 近似 LRUcomfy_execution/caching.pyL430-502
RAMPressureCacheCPU tensor 估算与压力淘汰comfy_execution/caching.pyL522-602

节点协议与扩展

对象源码
V1 CLIPTextEncode 样例nodes.pyL56-77
核心 NODE_CLASS_MAPPINGSnodes.pyL2058-2140
自定义模块 loadernodes.pyL2236-2330
自定义目录扫描nodes.pyL2332-2380
V3 Schemacomfy_api/latest/_io.pyL1643-1745
V3 ComfyNode / NodeOutputcomfy_api/latest/_io.pyL2233-2305
V3 完整小例子comfy_extras/nodes_color.pyL1-55

模型装载

阶段源码
safetensors / torch 文件读取comfy/utils.pyL122-200
checkpoint wrappercomfy/sd.pyL1955-2021
state dict → MODEL/CLIP/VAEcomfy/sd.pyL2022-2122
key/shape → model configcomfy/model_detection.pyL1247-1331
diffusers UNet configcomfy/model_detection.pyL1332-1510
supported model registrycomfy/supported_models.pyL2418-2515

ModelPatcher 与内存

对象 / 动作源码
PromptModelTrackercomfy/model_patcher.pyL50-96
ModelPatcher statecomfy/model_patcher.pyL340-429
clonecomfy/model_patcher.pyL430-504
add patchescomfy/model_patcher.pyL834-856
patch a weightcomfy/model_patcher.pyL891-920
classic loadcomfy/model_patcher.pyL974-1104
patch / unpatchcomfy/model_patcher.pyL1105-1161
partial unload/loadcomfy/model_patcher.pyL1163-1274
Dynamic Patchercomfy/model_patcher.pyL1741-2118
LoadedModelcomfy/model_management.pyL733-824
free_memorycomfy/model_management.pyL855-900
load_models_gpucomfy/model_management.pyL901-1016
dtype policycomfy/model_management.pyL1098-1165

采样

阶段源码
KSampler 节点入口nodes.pyL1564-1587
noise 与 sample wrappercomfy/sample.pyL1-80
conditioning batchcomfy/samplers.pyL208-608
CFG 公式入口comfy/samplers.pyL609-627
CFGGuidercomfy/samplers.pyL1188-1346
scheduler / sampler factorycomfy/samplers.pyL1378-1398
KSamplercomfy/samplers.pyL1399-1463

文件、数据库与 Assets

主题源码
annotated path 与 MIME 安全folder_paths.pyL257-369
upload / maskserver.pyL389-515
/viewserver.pyL516-650
user profile / pathapp/user_manager.pyL25-100
database setupapp/database/db.pyL65-190
Asset / Reference modelsapp/assets/database/models.pyL26-169
asset APIapp/assets/api/routes.pyL208-827
background seederapp/assets/seeder.pyL76-200

按问题最快跳转

Prompt 为什么被拒? execution.py validate_inputs 节点为什么不执行? output roots → ExecutionList → cache 为什么执行顺序和画布不同? graph.py ux_friendly_pick_node 为什么只重算了一半? caching.py input signature 为什么节点执行两次? list mapping / pending resume / cache fingerprint 模型为何不是按文件名识别? model_detection.py LoRA 为什么不复制模型? model_patcher.py clone + add_patches 为什么 GPU 还有空间却 offload? minimum inference memory + lowvram budget cfg=1 为什么更快? samplers.py sampling_function 文件为何强制下载? dangerous content type / stored XSS 重启后 history 为什么没了? PromptQueue in-memory history
Last updated on