返回 Skill 列表
extension
分类: 其它无需 API Key

comfyui-interactive-image-generator

提示:使用该技能前,需要确保桌面端 comfyui正常运行,并开启8000端口。 详情:ComfyUI 分步交互式图像生成器。 当用户说「生成图片」「画图」「文生图」「生图」「我要画…」等意图创建图像时, 或用户想通过聊天引导的方式一步一步配置图像生成参数时,触发本技能。

person作者: user_99514c20hubcommunity

ComfyUI 交互式图像生成器

核心原则

原则 1:环境自适应(Skill Environment Adaptation)

技能运行后,必须学习用户环境并缓存,下次运行直接使用,避免重复检测浪费时间。

所有使用此技能的 Agent 必须遵循

  1. 首次运行 → 检测环境(路径、API、配置等)
  2. 检测结果 → 写入 memory/comfyui-env.json 缓存文件
  3. 后续运行 → 先读取缓存,路径有效则直接使用,无效才重新检测
  4. 技能更新 → 将环境特定的经验写入 SKILL.md 或 MEMORY.md

目标:减少 50%+ 的重复 API 调用和路径检测,提升用户体验。


原则 2:完整交互流程

每次生图必须走完整的5步对话流程,绝不能跳过交互直接生成。

用户说"生成图片" → 立即进入 Step 1,禁止跳过交互步骤直接提交到 ComfyUI。

5步对话流程

Step 0 - 模板选择(必做,动态扫描)

用户说"生成图片"后,必须先动态扫描本地模板,然后显示以下固定格式,不得使用默认回复或硬编码模板列表:

🎨 图片生成助手已就绪!

第一步:选择工作流模板(直接输入编号)

你有 N 个本地模板可用:

编号 模板名称
0 不用模板,从零开始
1 模板A.json
2 模板B.json
...

也可以直接说类型开始:

1️⃣ 文生图 / 2️⃣ 图生图 / 3️⃣ 线稿上色

请输入编号:

模板扫描规则

  • 扫描路径:C:\Users\<user>\Documents\ComfyUI\user\default\workflows\
  • 只扫描根目录下的 .json 文件(不递归进入子目录)
  • 模板数量 ≤10 个时:全部列出
  • 模板数量 >10 个时:列出前 10 个,末尾加一行 ... 还有 X 个模板,不再一一列出,用户说"更多"时才分批显示或让用户指定编号
  • 每个模板名称显示文件全名(如 生图模板1.json),不截断

判断规则

  • 用户输入 0 / 跳过 / 不用 → 不加载模板,进入 Step 1
  • 用户输入 1~N → 加载对应模板,读取 JSON 提取参数预填到 Step 3,向用户展示模板参数并允许逐个修改
  • 用户直接说「文生图」等 → 跳过模板选择,进入 Step 1
  • 即使选了模板,也要逐个询问参数(见 Step 3 模板加载规则)

Step 2 - 收集创意参数(主题/风格)

主题+风格收集

| 参数 | 说明 | 默认 | |------|------|------| | 🎯 主题 | 生成什么内容?人物/风景/动物/建筑/UI设计... | 询问 | | 🎨 风格 | 视觉风格?写实/动漫/油画/水彩/赛博朋克/国风/扁平UI... | 询问 |

请告诉我:主题是什么?想要什么风格?

判断规则

  • 用户只给一个词(如「动漫」「风景」)→ 判断是主题还是风格,缺的那个追问一句即可,不要啰嗦
  • 用户给组合词(如「动漫风景」「UI设计」「赛博朋克城市」)→ 自动拆分为主题+风格,直接进入下一步
  • 组合词包含风格关键词(动漫/写实/油画/水彩/赛博朋克/国风/扁平UI…)→ 第一个为风格,第二个为主题
  • 组合词不包含风格关键词(如「海边日落」)→ 整体为主题,风格追问
  • 单个词是风格关键词 → 主题追问
  • 单个词是主题关键词(风景/人物/动物/建筑/UI设计…)→ 风格追问

图生图额外参数:

请上传原图,并告诉我您想要怎么改造它?

等待用户提供主题和风格后,进入 Step 3。


Step 3 - 逐步引导参数调节(向导模式)

两种入口:

  • 从模板加载:已提取模板中的参数值,逐个展示给用户确认/修改
  • 从零开始:按默认值逐个询问

收集完创意参数后,逐个询问生成参数,每次只问一个,用户可以回复具体值或「默认」跳过。

逐个引导顺序:

| 顺序 | 参数 | 问题示例 | 默认值(根据主题或模板) | |------|------|----------|--------------------------| | ① | 尺寸 | 📐 图片尺寸有要求吗?快捷键:1:1 3:4 4:3 9:16 16:9,也可自定义如 1024x768 | 模板值 > 主题推荐 | | ② | 步数 | ✨ 采样步数?步数越高越精细但越慢 | 模板值 > 20 | | ③ | CFG | 🎛️ CFG(提示词引导强度 1-30)?数值越高越贴近提示词 | 模板值 > 7.0 | | ④ | 种子 | 🎲 种子(随机数起点)?相同种子+相同提示词=几乎相同的图 | 模板值 > 随机(-1) | | ⑤ | 采样器 | ⚙️ 采样算法有偏好吗? | 模板值 > euler_ancestral |

每轮对话格式(以尺寸为例,从模板加载时):

📐 图片尺寸(①/⑤) 模板预置:512×512 默认使用模板值,如需修改请输入新值 快捷键:1:1 3:4 4:3 9:16 16:9,也可自定义如 1024x768 回复「默认」使用模板值,「跳过」进入下一步

每轮对话格式(从零开始时):

📐 图片尺寸(①/⑤) 默认:16:9(768×512)(风景推荐横版) 快捷键:1:1 3:4 4:3 9:16 16:9 也可自定义,如 1024x768 回复「默认」或「下一步」跳过

其余参数的从零开始提示模板:

步数:

采样步数(②/⑤) 默认:20(步数越高越精细但越慢,建议 10-50) 回复「默认」或「下一步」跳过

CFG:

🎛️ CFG(提示词引导强度)(③/⑤) 默认:7.0(数值越高越贴近提示词,建议 5-15,过高会过饱和) 回复「默认」或「下一步」跳过

种子:

🎲 种子(随机数起点)(④/⑤) 默认:-1(随机),每次出图结果不同 输入固定数值(如 42888)→ 相同种子+相同提示词 ≈ 相同图片,方便微调复现 回复「默认」或「下一步」跳过

采样器:

⚙️ 采样算法(⑤/⑤) 默认:euler_ancestral(色彩丰富,适合动漫/创意风格) 常用:euler(稳定)/ dpm++_2m(精细)/ dpm++_sde(质感) 回复「默认」或「下一步」跳过

其余参数的从模板加载提示模板:

步数:

采样步数(②/⑤) 模板预置:20 默认使用模板值,步数越高越精细但越慢(建议 10-50) 回复「默认」使用模板值,「跳过」进入下一步

CFG:

🎛️ CFG(提示词引导强度)(③/⑤) 模板预置:7.0 默认使用模板值,数值越高越贴近提示词(建议 5-15) 回复「默认」使用模板值,「跳过」进入下一步

种子:

🎲 种子(随机数起点)(④/⑤) 模板预置:888(固定种子) 固定数值可复现同一张图(相同种子+相同提示词 ≈ 相同结果) 回复「随机」改为 -1(每次不同),「默认」使用模板值,「跳过」进入下一步 如需其他固定种子,直接输入数值(如 42

采样器:

⚙️ 采样算法(⑤/⑤) 模板预置:euler 默认使用模板值 常用:euler(稳定)/ euler_ancestral(色彩丰富)/ dpm++_2m(精细) 回复「默认」使用模板值,「跳过」进入下一步

规则

  • 用户回复具体值 → 设置该参数,自动进入下一个参数
  • 用户回复「默认」「跳过」→ 使用当前显示的默认值,进入下一个
  • 用户回复「上一步」→ 返回修改前一个参数(第一个参数时返回主题/风格)
  • 用户一次性回复多个值(如 16:9,30,8.5)→ 按顺序依次设置,快速跳过后续询问
  • 所有问题回答完后,自动进入 Step 4

主题 → 默认尺寸映射表

| 主题 | 默认尺寸 | 理由 | |------|----------|------| | UI设计 / 手机App | 9:16 (512×768) | 竖版更接近手机屏幕 | | 横幅 / 海报 / 风景 / 壁纸 | 16:9 (768×512) | 横版更自然 | | Logo / 头像 / 图标 | 1:1 (512×512) | 方形构图 | | 人物 / 动漫角色 | 3:4 (384×512) | 竖版适合人物 | | 其他 | 1:1 (512×512) | 通用 |


高级用法:批量修改语法(Agent 侧解析规则)

Agent 需解析用户输入,支持以下格式:

| 格式 | 示例 | 含义 | |------|------|------| | 尺寸快捷键 | 16:9 | 宽768 高512 | | 自定义尺寸 | 1024x768 | 宽1024 高768 | | 编号:值 | 3:30 | 第3项参数改为 30 | | 编号,编号:值,值 | 4,5:8.5,-1 | 第4项=8.5,第5项=-1 | | 组合 | 16:9,3:30,4:8.5 | 尺寸+步数+CFG 同时修改 | | 上一步 | - | 返回前一个参数(或返回主题/风格) |

解析优先级:先检查尺寸快捷键/自定义尺寸,再按编号修改。

尺寸快捷键映射表

| 快捷键 | 宽×高 | 适用场景 | |--------|-------|----------| | 1:1 | 512×512 | 头像、Logo、图标 | | 3:4 | 384×512 | 竖版小幅 | | 4:3 | 512×384 | 横版小幅 | | 9:16 | 512×768 | 手机UI、竖版海报 | | 16:9 | 768×512 | 横幅、壁纸、桌面 |


Step 4 - 提示词收集

第一阶段:收集用户描述

参数确认后,主动询问用户想要的具体画面内容:

🖼️ 请描述您想要的画面细节: 比如:画面中有什么?什么动作?什么场景?什么氛围? 可以用中文自由描述,也可以直接提供英文 prompt 回复「默认」我会根据主题和风格自动生成

用户回复后,Agent 需要做:

  1. 保留用户原始描述
  2. 基于主题+风格+用户描述,整理出英文提示词(SD 常用格式)
  3. 自动补充质量词(如 masterpiece, best quality, highres)和负面提示词
  4. 进入第二阶段确认

第二阶段:确认预览

展示完整配置供用户最终确认:

📋 请确认您的生成需求:

配置:

  • 类型:文生图
  • 主题:人物 | 风格:动漫
  • 尺寸:512×512 | 步数:20 | CFG:7.0

您的描述: 一个可爱的动漫女孩,蓝色的长发,穿着校服,站在樱花树下

正向提示词:

masterpiece, best quality, highres, anime style, beautiful girl, long blue hair, school uniform, standing under cherry blossom tree, pink petals falling, soft lighting, detailed eyes, cel shading

负面提示词:

lowres, bad anatomy, bad hands, text, error, missing fingers, cropped, worst quality, low quality, jpeg artifacts

✅ 确认无误请回复「确认」或「开始生成」 🔄 如需修改提示词请直接告诉我 ⬆️ 输入「上一步」返回修改参数

规则:

  • 用户可以修改提示词(如「加上日落背景」「去掉校服」)→ 更新提示词后重新展示
  • 用户可以返回修改参数 → 回到 Step 3 对应参数
  • 只有用户明确确认后才进入 Step 5 执行

Step 5 - 执行生成

用户确认后,执行 ComfyUI 生成:

  1. 检查 ComfyUI 服务状态
  2. 检测可用模型(自动)
  3. 构建工作流 JSON
  4. 提交到 ComfyUI API
  5. 轮询等待完成

回复格式:

⚙️ 正在生成中,请稍候... 🔄 已提交任务,等待完成...

生成完成后回复:

图片生成完成! 📐 尺寸:512×512 | 步数:20 | 模型:SD 1.5

然后发送图片:

MEDIA: <输出文件路径>


Step 6 - 结果与迭代

图片发送后,询问后续操作:

🐱 图片已送达!

  • ✅ 满意的话可以继续生成
  • 🔄 想换风格/参数?告诉我
  • 📐 想换尺寸?比如横版或竖版
  • 🎨 想加特效?比如加LoRA

ComfyUI 执行脚本

当用户确认后,调用 scripts/generate.py 执行生成。

脚本用法

# Windows PowerShell
python scripts/generate.py --prompt "一只可爱的小猫" --style "写实摄影" --size "512x512" --steps 20

模型检测逻辑

脚本自动检测可用模型,优先级:

  1. SD 1.5 checkpoint (*.safetensors in checkpoints/)
  2. SDXL checkpoint
  3. 其他可用模型

若检测失败,回退到 SD 1.5 默认路径:

  • C:\Users\<user>\Documents\ComfyUI\models\checkpoints\

工作流构建

根据检测到的模型类型自动选择:

SD 1.5 工作流字段:

  • CheckpointLoaderSimple → clip, model, vae
  • CLIPTextEncode → positive/negative
  • EmptyLatentImage → latent
  • KSampler → sampling
  • VAEDecode → decode
  • SaveImage → output

输出路径

图片保存到 C:\Users\<user>\Documents\ComfyUI\output\

环境自适应(首次运行检测)

首次使用时,Agent 必须检测并缓存以下环境信息:

0. ComfyUI API 地址(固定)

⚠️ 重要:ComfyUI 桌面端默认端口是 8000,不要尝试其他端口!

固定配置

  • API 地址:http://127.0.0.1:8000
  • 端口:8000(不是 8188 或其他)

检查服务状态

# 检查 ComfyUI 是否运行
Invoke-RestMethod -Uri "http://127.0.0.1:8000/system_stats" -TimeoutSec 2
  • 成功 → ComfyUI 已运行,继续生成
  • 失败 → 提示用户启动 ComfyUI 桌面版

禁止行为

  • ❌ 不要尝试 8188、7860 等其他端口
  • ❌ 不要循环尝试多个端口
  • ❌ 不要猜测端口号

1. 检测 ComfyUI 安装路径

ComfyUI 可能在以下位置:

  • 用户目录:C:\Users\<user>\Documents\ComfyUI\
  • 安装目录:C:\software\ComfyUI\resources\ComfyUI\

检测逻辑

检查 1: C:\Users\<user>\Documents\ComfyUI\output\ 是否存在
检查 2: C:\software\ComfyUI\resources\ComfyUI\output\ 是否存在
→ 优先使用存在的路径
→ 如果都存在,检查哪个目录有更新的文件
→ 缓存结果到 memory/comfyui-env.json

2. 输出目录缓存

关键发现:ComfyUI 可能有多个输出目录,API 返回的文件名可能在任一目录。

检测流程

  1. 先检查用户目录输出
  2. 再检查安装目录输出
  3. 缓存实际输出路径

3. 环境缓存文件格式

保存到 memory/comfyui-env.json

{
  "comfyui_url": "http://127.0.0.1:8000",
  "comfyui_port": 8000,
  "output_dir": "C:\\software\\ComfyUI\\resources\\ComfyUI\\output\\",
  "workflows_dir": "C:\\Users\\<user>\\Documents\\ComfyUI\\user\\default\\workflows\\",
  "checkpoints_dir": "C:\\Users\\<user>\\Documents\\ComfyUI\\models\\checkpoints\\",
  "default_checkpoint": "v1-5-pruned-emaonly.safetensors",
  "detected_at": "2026-04-20T18:05:00+08:00"
}

重要提示

  • comfyui_urlcomfyui_port 是固定值,无需检测
  • 只需检测路径相关配置

每次生成前检查缓存

  • 缓存存在且路径有效 → 直接使用,跳过检测
  • 缓存过期或路径无效 → 重新检测并更新缓存

执行优化(避免重复 API 调用)

1. API 请求格式规范

正确格式(ComfyUI API 要求):

{
  "5": {
    "class_type": "KSampler",
    "inputs": {
      "model": ["1", 0],        // ← 必须是数组 [节点ID, 输出索引]
      "positive": ["3", 0],
      "latent_image": ["2", 0]
    }
  }
}

错误格式(会导致 'str' object has no attribute 'shape'):

{
  "model": "1 0",    // ❌ 字符串格式,ComfyUI 无法解析
  "positive": "3 0"
}

Agent 构建工作流时必须确保节点连接格式正确!

2. 利用执行缓存

ComfyUI 有内置缓存机制:

  • 相同的 checkpoint + 相同的参数 → 自动缓存,跳过重复计算
  • 首次加载 checkpoint 后,后续生成会复用缓存

优化策略

  • 生成前不重复检测已缓存的节点
  • 查看 /history 接口确认缓存命中(execution_cached 消息)

3. 状态检查合并

一次请求获取完整状态

# 同时检查队列和历史(避免多次 API 调用)
$queue = Invoke-RestMethod -Uri "http://127.0.0.1:8000/queue"
$history = Invoke-RestMethod -Uri "http://127.0.0.1:8000/history"

4. 轮询优化

生成任务提交后,避免频繁轮询

  • CPU 模式:每 30 秒检查一次(10 步约需 2-3 分钟)
  • GPU 模式:每 5 秒检查一次

5. 输出文件检查

生成完成后,优先检查缓存目录

# 先读取缓存确定输出目录
$env = Get-Content memory/comfyui-env.json | ConvertFrom-Json
$outputFile = Join-Path $env.output_dir $filename

错误处理

| 错误 | 处理方式 | |------|----------| | ComfyUI 未运行 | 提示用户启动 ComfyUI 桌面版 | | 模型未找到 | 提示检查模型路径,列出可用模型 | | 生成失败 | 重试一次,失败则说明具体错误 | | 显存不足 | 建议降低分辨率或质量 | | API 格式错误 | 检查节点连接格式,确保使用数组而非字符串 | | 输出文件找不到 | 检查缓存目录 vs 用户目录,更新环境缓存 |

注意事项

  • 必须交互:禁止跳过 Step 1-3 直接生成
  • 参数完整:每个参数都要确认,不能假设
  • 跨平台兼容:脚本必须在任何 QClaw 环境下运行
  • Windows 编码:Python 脚本避免 emoji 输出,使用纯 ASCII 日志
  • 模型路径:使用用户本地的 ComfyUI 模型目录,不要硬编码固定路径

给其他用户的说明

这个技能会自动学习您的环境

当您首次使用此技能时,Agent 会:

  1. 自动检测 ComfyUI 的安装位置
  2. 自动找到输出目录和模型目录
  3. 将检测结果保存到 memory/comfyui-env.json

下次使用时,Agent 会直接读取缓存,无需重复检测,为您节省时间。

如果您换了电脑或重新安装了 ComfyUI

删除 memory/comfyui-env.json 文件,技能会重新检测并更新缓存。

常见问题

Q: 为什么输出目录不在用户文档目录? A: ComfyUI 便携版可能将输出目录放在安装路径下。技能会自动检测正确的位置。

Q: 生成速度很慢怎么办? A: 如果您使用 CPU 模式,建议减少步数(如 10-15 步)或使用更小的分辨率。GPU 模式会快很多。

Q: 如何使用自定义模型? A: 将模型文件(.safetensors)放到 ComfyUI 的 models/checkpoints/ 目录下,技能会自动检测并列出可用模型。


技能版本历史

| 版本 | 日期 | 更新内容 | |------|------|----------| | 1.1.0 | 2026-04-20 | 添加环境自适应机制,缓存检测结果,减少重复调用 | | 1.0.0 | - | 初始版本,5步交互式生图流程 |