skill.md 4.7 KB

Agent Skill: RunComfy Workflow Builder

本工具是一个 HTTP API 服务,外部 Agent 通过 /run_tool 调用,内部按 action 参数分发到不同功能。

调用方式

POST /run_tool
{
  "tool_id": "runcomfy_workflow_builder",
  "params": {
    "action": "...",
    ...其他参数
  }
}

支持的 action

action 参数 说明
read_skill 返回本文档内容,Agent 首次使用时应先调用此 action 学习规则
search_models category, keyword 查询环境中可用的模型文件
get_node_schema class_type 获取指定 ComfyUI 节点的必填/选填参数
list_examples category, keyword 浏览/搜索示例工作流库
load_example name 加载一个具体的示例工作流 JSON
verify_workflow workflow 验证手写的 API JSON 是否合法

参数说明

  • category: 模型搜索时为 checkpoints/loras/vaes/controlnets;示例搜索时为子目录名如 flux/controlnet/inpaint
  • keyword: 模糊匹配关键词(大小写不敏感)
  • class_type: ComfyUI 节点类型名,如 KSamplerControlNetApplySD3
  • name: 示例名,支持精确 stem(flux_dev_example)、相对路径(flux/flux_dev_example_api.json)、部分关键词(flux_dev
  • workflow: 完整的 API JSON 字典

🎯 推荐工作流程

① action=read_skill          → 学习本文档规则(首次)
② action=list_examples       → 搜索相关示例
③ action=load_example        → 加载骨架 JSON
④ action=search_models       → 确认环境有哪些模型
⑤ action=get_node_schema     → 确认不确定的节点参数
⑥ 修改 workflow dict
⑦ action=verify_workflow     → 验证 → 有错就修 → 再验证
⑧ 调用 runcomfy_workflow_executor 执行(注:executor 已支持通过 `url` 传入 CDN 图片)

📐 API JSON 格式核心规则

节点结构

{
    "节点ID(字符串)": {
        "class_type": "节点类型名",
        "inputs": { ... }
    }
}

节点间连接

"model": ["源节点ID", 输出索引]   # 例: ["4", 0]
  • ID 必须是字符串 "4" 而非整数
  • 连接必须是列表 ["4", 0] 而非元组
  • CheckpointLoaderSimple: [id, 0]→MODEL, [id, 1]→CLIP, [id, 2]→VAE
  • 布尔值用 Python bool(False"false"
  • _metais_changed 字段可省略

🧠 架构差异速查

SD 1.5 SDXL Flux (UNET) Flux (Checkpoint)
分辨率 512 1024 1024 1024
模型加载 CheckpointLoaderSimple CheckpointLoaderSimple UNETLoader+DualCLIPLoader+VAELoader CheckpointLoaderSimple
采样器 KSampler KSamplerAdvanced SamplerCustomAdvanced KSampler
CFG 6~8 6~8 1.0 1.0
引导 cfg 参数 cfg 参数 FluxGuidance 节点 FluxGuidance 节点
潜空间 EmptyLatentImage EmptyLatentImage EmptySD3LatentImage EmptySD3LatentImage
负向提示 正常写 正常写 空字符串 "" 空字符串 ""

不确定细节?直接 action=load_example, name=flux_dev_example 看原文。

Flux 变体

模型 FluxGuidance 特殊节点
dev 3.5 ModelSamplingFlux
schnell 不需要 无(4步直出)
fill (inpaint) 30.0 DifferentialDiffusion + InpaintModelConditioning
canny/depth 30.0 InstructPixToPixConditioning
kontext 2.5 FluxKontextImageScale + ReferenceLatent
redux 3.5 CLIPVisionLoader + StyleModelApply

🔌 功能模块连接思路

不需要背模板,碰到具体需求直接 load_example 看真实 JSON:

功能 找哪个示例
LoRA lora / lora_multiple
ControlNet (SD1.5) controlnet_example / mixing_controlnets
ControlNet (Flux) flux_controlnet_example / flux_canny_model_example
Img2Img img2img_workflow
Inpaint inpaint_example / flux_fill_inpaint_example
Outpaint yosemite_outpaint_example / flux_fill_outpaint_example
超分 esrgan_example / 2_pass_pose_worship
风格迁移 flux_redux_model_example
图像编辑 flux_kontext_example

🚨 最易犯的错

  1. Flux 写了 cfg: 8.0 → 应为 1.0,引导靠 FluxGuidance
  2. 编造不存在的模型文件名 → 先 search_models
  3. 节点 ID 写成整数 → 必须是字符串
  4. 分辨率不匹配架构 → SD1.5=512, SDXL/Flux=1024,且必须是 8 的倍数
  5. 凭记忆写节点参数 → 不确定就 get_node_schemaload_example
  6. 提交执行前不主动做检查 → 组装图表后必须先 action=verify_workflow 筛查死链和遗漏!