不会写prompt也能出大片:我用OpenClaw搭了一套5-Agent协作的ComfyUI出图系统
一天时间,从零到ClawHub发布。本文记录完整搭建过程、踩坑实录和架构思考。
先看效果
在Telegram里说一句"昭和风格的东京街头少女",16秒后收到图片。
没写过一行prompt。没打开过ComfyUI界面。没手动选过checkpoint。
五个AI Agent在后台协作完成了一切——理解需求、匹配风格、选模型、组参数、调API、出图、评分。
这篇文章讲的就是怎么搭这套东西。
痛点
玩ComfyUI的人都知道这几个问题:
第一,prompt太难写。 英文、加权重、加负向、还得配合不同checkpoint的调性。我写中文需求都够呛,还要我翻译成(masterpiece:1.2), (best quality), 1girl, school uniform, neon lights, (cinematic lighting:1.3)这种东西?
第二,节点太复杂。 每次出图都要打开界面、连线、改参数。想换个风格?重新配一遍。想批量出?手动改seed循环。
第三,选模型靠经验。 DreamShaper擅长什么、Juggernaut擅长什么、Animagine擅长什么——这些知识全在脑子里,每次都要人工判断。
第四,出图质量随缘。 出完不满意,自己看不出哪里不对,改prompt全靠试。
我想要的很简单:说中文就能出图,质量不好能自动诊断改进。
架构
不是一个agent干所有事,而是五个agent各司其职:
用户说中文
↓
[Prompt Agent] 理解需求 → 匹配风格模板 → 生成带权重的英文prompt
↓
[Workflow Agent] 根据风格选checkpoint → 调整CFG/步数/分辨率 → 组装workflow JSON
↓
[Render Agent] 调用ComfyUI API → 提交任务 → 等待结果 → 保存图片
↓
[Critic Agent] 5维度评分 → 缺陷诊断 → 修复建议 → (低于6分自动重试)
↓
[Memory Agent] 记录用户偏好 → 下次更准
为什么要拆成5个?因为每个agent的能力边界不同。Prompt Agent只需要懂语言和美学,不需要知道ComfyUI的API格式。Render Agent只需要会调API,不需要理解什么是"电影感"。拆开之后每个skill的复杂度降低,出错率也降低。
技术栈
| 组件 | 用途 | 为什么选它 |
|---|---|---|
| OpenClaw | Agent编排 | 开源、多平台、skill系统成熟 |
| ComfyUI | 图像渲染 | 本地运行、API友好、生态好 |
| SDXL系列 | 基础模型 | 开源、质量够用、checkpoint丰富 |
| Docker | 容器化 | 和现有agent共存不冲突 |
| MPS/Metal | GPU加速 | M5 Max原生支持,不需要NVIDIA |
硬件:MacBook Pro M5 Max 64GB。一张1024x1024的图大约16秒。
搭建过程
1. ComfyUI安装
git clone https://github.com/comfyanonymous/ComfyUI.git ~/ai-studio/comfyui
python3 -m venv ~/ai-studio/comfyui-venv
source ~/ai-studio/comfyui-venv/bin/activate
pip install torch torchvision torchaudio
pip install -r ~/ai-studio/comfyui/requirements.txt
启动:
cd ~/ai-studio/comfyui
python main.py --listen 0.0.0.0 --port 8188 --highvram
踩坑1:GitHub克隆太慢。用ghfast.top镜像站解决。 踩坑2:HuggingFace下载模型太慢。用hf-mirror.com镜像站。 踩坑3:Flux VAE需要先在HuggingFace网页同意license才能下载。
2. 模型下载
核心模型4个,按风格分工:
| 模型 | 风格 | 大小 |
|---|---|---|
| SDXL Base 1.0 | 通用 | 6.5GB |
| DreamShaper XL | 电影感 | ~6.5GB |
| Juggernaut XL v9 | 写实 | ~6.5GB |
| Animagine XL v3.1 | 动漫 | ~6.5GB |
自动选择规则很简单:
- 用户说"写实""照片""photo" → Juggernaut
- 用户说"动漫""二次元""anime" → Animagine
- 用户说"电影感""cinematic" → DreamShaper
- 无明确风格 → SDXL Base
3. Docker容器配置
关键点:ComfyUI跑宿主机(GPU加速需要),OpenClaw跑Docker。容器通过host.docker.internal:8188访问宿主机的ComfyUI API。
# docker-compose.creative.yml
services:
creative-workshop:
image: ghcr.io/openclaw/openclaw:latest
extra_hosts:
- "host.docker.internal:host-gateway"
environment:
- COMFYUI_API_URL=http://host.docker.internal:8188
踩坑4:macOS不支持Docker GPU passthrough,所以ComfyUI必须跑宿主机。这不是bug,是macOS的限制。
4. API客户端
纯Python标准库实现,不引入任何第三方依赖:
# comfyui-client.py 核心逻辑
def health_check(base_url):
"""检查ComfyUI是否在线"""
resp = urllib.request.urlopen(f"{base_url}/system_stats", timeout=10)
return json.loads(resp.read())
def submit_workflow(base_url, workflow_json):
"""提交workflow到ComfyUI队列"""
data = json.dumps({"prompt": workflow_json}).encode()
req = urllib.request.Request(f"{base_url}/prompt", data=data)
req.add_header("Content-Type", "application/json")
resp = urllib.request.urlopen(req)
return json.loads(resp.read())["prompt_id"]
def wait_for_result(base_url, prompt_id, timeout=120):
"""轮询等待结果"""
for _ in range(timeout):
resp = urllib.request.urlopen(f"{base_url}/history/{prompt_id}")
history = json.loads(resp.read())
if prompt_id in history:
return history[prompt_id]
time.sleep(1)
raise TimeoutError("生成超时")
为什么不用requests?因为OpenClaw的Docker环境里不一定有第三方库。标准库最稳。
5. Prompt Agent的核心逻辑
v1.1.0升级后,收到用户需求先拆成6个维度:
主体(subject):画面中心是什么
环境(environment):什么场景
风格(style):什么画风
光影(lighting):什么光线
镜头(camera):什么景别角度
情绪(mood):什么氛围
比如用户说"昭和风格的东京街头少女",拆解后:
主体:日本高中女生,水手服
环境:东京歌舞伎町,霓虹灯街道,雨夜
风格:1980年代昭和美学,复古胶片质感
光影:霓虹灯散射光,湿漉地面反射
镜头:中景,街拍角度
情绪:怀旧、孤独、都市感
然后组合成带权重的prompt,自动匹配负向prompt模板。
6. Critic Agent的评分系统
5个维度打分,每项1-10分:
构图(composition):主体位置、画面平衡
色彩(color):色调、饱和度、对比度
风格匹配(style_match):是否符合用户要求的风格
细节(detail):清晰度、纹理、五官完整度
氛围(mood):是否传达出要求的情感
v1.1.0新增:如果总分低于6分,自动诊断缺陷类型并给出修复方案:
| 缺陷 | 修复动作 |
|---|---|
| STYLE_MISMATCH | 换checkpoint或加风格权重 |
| SUBJECT_MISSING | 提高主体权重到1.4 |
| ANATOMY_ERROR | 加负向prompt |
| DETAIL_LACKING | 增加步数到35-40 |
最多自动重试2次。
一键安装
已开源到ClawHub和GitHub:
clawhub install visual-muse
bash ~/.openclaw/workspace/skills/visual-muse/scripts/setup.sh
setup脚本会自动:安装ComfyUI → 下载SDXL模型 → 配置环境 → 初始化工具。
GitHub:github.com/baobaodawan…
和现有方案的区别
ClawHub上已有几个ComfyUI相关的skill:
| skill | 能做什么 | 不能做什么 |
|---|---|---|
| comfyui-imagegen | 单一Flux2工作流出图 | 没有风格匹配、没有评分 |
| comfyui-request | API转发 | 没有任何智能逻辑 |
| comfyui(官方) | 跑workflow+下模型 | 没有prompt生成、没有评分 |
| Visual Muse | 全链路:理解→匹配→渲染→评分→记忆 | 还在迭代中 |
核心区别:其他方案是"工具",Visual Muse是"团队"。 五个agent协作,覆盖从需求理解到质量把控的完整链路。
下一步
- ControlNet接入(控制构图和姿势)
- IP-Adapter(保持角色一致性)
- Wan2.1视频生成
- Critic Agent接入多模态LLM(真正看图评分)
写在最后
Peter Steinberger说"你的挫败感就是产品"。我对ComfyUI的挫败感——不会写prompt、看不懂节点、选不对模型——变成了Visual Muse。
一个人、一台Mac、一天。2026年,这就是搭建产品的速度。
不是因为我技术多强——说实话大部分代码是AI帮我写的。而是因为现在的工具栈已经成熟到一个人可以做到以前需要一个团队才能做的事。
如果你也在用OpenClaw,或者对ComfyUI自动化感兴趣,欢迎交流。
项目地址:github.com/baobaodawan… ClawHub:clawhub install visual-muse