后端与接口
需要连接 ComfyUI 排队执行工作流…
适用于有或需要连接 ComfyUI 实例的场景,用于执行、轮询、校验工作流并获取输出。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 59/100 ×0.15
适用场景
需要连接 ComfyUI 排队执行工作流特定
解决思路
- 配置默认 URL:`http://127.0.0.1:8188`;自定义 URL 在项目 manifest 中设置或作为参数传入。
- 配置超时:API 调用为 30s,生成轮询不设超时。
- 在线模式:先测试连接 `GET /system_stats`。
- 在线模式:使用 `comfyui-inventory` skill 发现可用能力。
- 在线模式:通过 `POST /prompt` 排队工作流。
- 在线模式:每 5 秒轮询 `GET /history/{prompt_id}` 获取结果。
- 在线模式:通过 `GET /view?filename=...` 取回输出。
- 离线模式:按 ComfyUI 格式生成 workflow JSON。
- 离线模式:保存到 `projects/{project}/workflows/{name}.json`。
- 离线模式:指导用户将 JSON 拖拽到 ComfyUI 中加载。
- 检查服务器状态:`curl http://127.0.0.1:8188/system_stats`。
- 读取服务器状态响应字段:`system.os` 为操作系统,`system.comfyui_version` 为版本字符串,`devices[0].name` 为 GPU 名称,`devices[0].vram_total` 为总 VRAM 字节数,`devices[0].vram_free` 为空闲 VRAM 字节数。
- 排队工作流:`curl -X POST http://127.0.0.1:8188/prompt -H "Content-Type: application/json" -d '{"prompt": WORKFLOW_JSON, "client_id": "video-agent"}'`。
- 构造 WORKFLOW_JSON:每个节点以字符串 ID 为键;inputs 用 `["{node_id}", {output_index}]` 引用其他节点。
- WORKFLOW_JSON 示例节点:`"1": {"class_type": "LoadCheckpoint", "inputs": {"ckpt_name": "flux1-dev.safetensors"}}`,`"2": {"class_type": "CLIPTextEncode", "inputs": {"text": "photorealistic portrait...", "clip": ["1", 1]}}`。
- 排队响应包含 `{"prompt_id": "abc-123-def", "number": 1}`。
- 轮询完成:`curl http://127.0.0.1:8188/history/abc-123-def`;未完成返回 `{}`,完成后返回执行数据与 outputs。
- 完成后响应示例:`{"abc-123-def": {"outputs": {"9": {"images": [{"filename": "ComfyUI_00001.png", "subfolder": "", "type": "output"}]}}, "status": {"completed": true}}}`。
- 取回输出图片:`curl "http://127.0.0.1:8188/view?filename=ComfyUI_00001.png&subfolder=&type=output" -o output.png`。
- 上传参考图片:`curl -X POST http://127.0.0.1:8188/upload/image -F "image=@reference.png" -F "subfolder=input" -F "type=input"`。
- 取消当前生成:`curl -X POST http://127.0.0.1:8188/interrupt`。
- 释放 VRAM:`curl -X POST http://127.0.0.1:8188/free -H "Content-Type: application/json" -d '{"unload_models": true}'`。
- CLI 场景不支持 WebSocket,使用 REST 轮询:先通过 `POST /prompt` 排队并获得 `prompt_id`。
- 轮询策略:每 5 秒请求一次 `GET /history/{prompt_id}`。
- 轮询策略:若响应为空,表示生成进行中,继续轮询。
- 轮询策略:若响应有数据,检查 `status.completed`。
- 轮询策略:若 `completed: true`,提取 outputs。
- 轮询策略:若 status 中有错误,转到 `comfyui-troubleshooter`。
- 轮询超时:轮询 10 分钟后警告用户;视频生成(Wan 14B)可能耗时 15-30 分钟。
- 排队前校验工作流:通过 `comfyui-inventory` 读取 `state/inventory.json`。
- 校验每个节点:确认 workflow 中的 `class_type` 存在于已安装节点中。
- 校验每个模型引用:确认文件存在于已安装模型中。
- 标记缺失项:缺节点时建议使用 `ComfyUI-Manager` 安装命令。
- 标记缺失项:缺模型时从 `references/models.md` 提供下载链接。
- 标记缺失项:版本不匹配时建议更新。
- 错误处理 Connection refused:ComfyUI 未运行,切换到离线模式并保存 JSON。
- 错误处理 400 Bad Request:workflow JSON 无效,校验节点连接。
- 错误处理 500 Internal Error:ComfyUI 崩溃,建议重启并检查日志。
- 错误处理 Timeout(无响应):服务器过载,等待后重试一次。
- 参考完整 API 文档:`foundation/api-quick-ref.md`。
适用边界 · 注意事项
- 需要 WebSocket 或实时推送生成进度时,因为 CLI 场景不支持 WebSocket,只能 REST 轮询。
- 没有 ComfyUI 实例且需要实际执行生成时,只能离线导出 JSON 并让用户手动加载。
- 工作流与 ComfyUI 无关或只需通用 HTTP API 调用时。