取代传统的“人类拖拽 UI 导出拖放脚本再由 Agent 无脑转发”的低级模式。本技能旨在赋能 Agent 拥有“直接面向目标编写 ComfyUI底层计算流 (API JSON)”的设计与执行能力,做到从0到1的全自动生图闭环。
class_type 及其 inputs 参数,再提交给 API!FLUX1/flux1-dev-fp8, Juggernaut_X 等)和 150+个主流 LoRA。这意味着只要你手写的图纸调用这些标准大类,将享有 0 报错、秒过审的 VIP 丝滑度。ExpressionEditor 或复杂的 IPAdapter 组接节点),立刻转向使用复合型 LoRA 平替架构! 例如,利用 refcontrol_pose.safetensors 结合 ImageConcanate 节点,在一张 LoRA 里直接完成双图结构的合并控参,实现优雅兼容!Agent 要实现一个全新的复杂生图任务,应严格遵循以下步骤:
判断用户的需求。如果是绝对顶级真实感或多条件复合控制,首选 FLUX.1 架构。
UNETLoader -> 加载主模型 (flux1-dev-kontext_fp8_scaled.safetensors)VAELoader -> 加载 VAE (ae.safetensors)DualCLIPLoader -> 加载文本编码器 (clip_l.safetensors & t5xxl_fp8_e4m3fn_scaled.safetensors)不再试图盲猜云端有没有奇葩的 Custom Note,而是全盘使用最高效的组件组装:
LoadImage 节点读取远端服务器图片名。ImageConcanate(方向 down / right)。LoraLoader 加载 refcontrol_pose.safetensors ,将模型流从 UNET 转入强化通道。FluxKontextImageScale 控制图幅后,用 VAEEncode 将它编码给 ReferenceLatent。用纯 Python 面向对象重构计算流,而不是修改字符串模板。这将确保 ID 不起冲突且连线 100% 精确。
class AgentWorkflowBuilder:
def __init__(self):
self.nodes = {}
self.node_counter = 1
def add(self, class_type, inputs):
node_id = str(self.node_counter)
self.nodes[node_id] = {"class_type": class_type, "inputs": inputs}
self.node_counter += 1
return node_id
def auto_generate():
wf = AgentWorkflowBuilder()
# 【加载器】
unet = wf.add("UNETLoader", {"unet_name": "flux1-dev-kontext_fp8_scaled.safetensors", "weight_dtype": "default"})
vae = wf.add("VAELoader", {"vae_name": "ae.safetensors"})
clip = wf.add("DualCLIPLoader", {"clip_name1": "clip_l.safetensors", "clip_name2": "t5xxl_fp8_e4m3fn_scaled.safetensors", "type": "flux", "device": "default"})
# 【加载控制 LoRA】
lora = wf.add("LoraLoader", {"lora_name": "refcontrol_pose.safetensors", "strength_model": 1, "strength_clip": 1, "model": [unet, 0], "clip": [clip, 0]})
# 【咒语与调度】
pos_prompt = wf.add("CLIPTextEncode", {"text": "A beautiful cinematic shot, ultra detailed", "clip": [lora, 1]})
neg_prompt = wf.add("ConditioningZeroOut", {"conditioning": [pos_prompt, 0]})
# 【采样打图】
sampler = wf.add("KSampler", {
"seed": 1234567, "steps": 25, "cfg": 1, "sampler_name": "euler",
"scheduler": "simple", "denoise": 1,
"model": [lora, 0], "positive": [pos_prompt, 0], "negative": [neg_prompt, 0],
"latent_image": ["EmptyLatentImageNodeID", 0] # 根据需求连线
})
# 【解码并保存】
decoded = wf.add("VAEDecode", {"samples": [sampler, 0], "vae": [vae, 0]})
final_output = wf.add("SaveImage", {"filename_prefix": "AgentGen", "images": [decoded, 0]})
return wf.nodes
有了组装好的 wf.nodes 纯纯字典:
runcomfy_workflow_executor.upload_file_from_base64() 把用户给的图推到云服务器上。prompt key,发起 POST /prompt 到你的机器实例(如 deddf65f...)。wait_for_completion(),并在成功后下载图像返给人类。.json UI 文件里的长串内容(存在巨量隐藏 ID 和坐标参数干扰)!唯一方案是从 0 开始用 Python 对象写入。missing_node_type 报错导致不执行,立即检查该节点是否是必须品。如果是花里胡哨的外挂节点,立刻用基础模型/LoRA写一套平替逻辑绕过!object_info.json 里的 ckpt_name / lora_name 确认该白板机上是否含有此预置权重。