ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

用智能体一键生成ComfyUI工作流并配置局域网访问指南

用智能体一键生成ComfyUI工作流并配置局域网访问指南 做 ComfyUI 应用的同学应该都遇到过这类场景本地手工拖节点能跑通一套工作流但换个机器、换个模型路径整个 JSON 就乱掉想让团队其他成员通过局域网访问出图服务又发现别人根本打不开页面。更麻烦的是每次调整一道复杂的图生图或视频生成流程都要在节点面板里反复找节点、连线、填参数非常费时间。现在智能体工具越来越多像 Workbuddy、Codex 这类“AI 智能体”完全可以用一句话替我们生成 ComfyUI 工作流再由我们做人工校验。本文就围绕这条主线完整拆解如何用智能体生成 ComfyUI 工作流 JSON以及如何配置 ComfyUI 局域网访问让团队内网可以共用出图能力。文章会从概念讲起再给环境准备、核心配置、代码示例、常见排错适合刚接触 ComfyUI 的入门读者也适合想把 ComfyUI 接入内部工具链的开发者。1. 背景与核心概念1.1 什么是 ComfyUI 工作流ComfyUI 是一款基于节点图Node Graph的 Stable Diffusion 图形化工具。它的核心特点是每一个“生成图片”的操作本质上都是一张图上的节点连接关系。例如一个最简单的文生图流程至少包含以下节点加载模型CheckpointLoaderSimple正面提示词CLIPTextEncode负面提示词CLIPTextEncode潜空间图像生成EmptyLatentImage采样器KSampler解码VAEDecode保存图片SaveImage在界面上我们靠拖拽节点完成连线在文件层面ComfyUI 把这张“节点连接图”保存为 JSON 文件里面包含每个节点的坐标、类型、参数以及节点之间的连线数据。这就是“一句话生成 ComfyUI 工作流”的基础既然工作流就是结构化 JSON那么智能体只要理解 ComfyUI 的节点规范就能帮我们生成或修改 JSON。1.2 什么是 WorkbuddyWorkbuddy 是近段时间热度较高的智能体工具。它更像一个“智能体操作台”通过 Skill 和自定义指令让 AI 能执行一些相对固定的任务例如读取本地文件、调用外部 API、写代码、整理数据等。很多人在搜索“workbuddy 使用教程”“workbuddy skill”“workbuddy 自定义指令应如何写”核心就是希望让 Workbuddy 按自己的私有流程工作。在本文场景里可以把 Workbuddy 当作一个“入口”用户说一句话帮我把 512x768、采样器 Euler、步数 20 的文生图工作流生成出来。Workbuddy 内部调用 Codex 或后端模型根据指令生成 ComfyUI 工作流 JSON。再把 JSON 写入 ComfyUI 指定目录刷新页面后就可以直接加载使用。由于 Workbuddy 版本迭代比较快不同版本的安装方式和界面入口可能有差异因此本文不会写死某个下载地址而是重点讲思路和配置逻辑你在使用时按实际产品界面调整即可。1.3 什么是 CodexCodex 是 OpenAI 推出的命令行编码智能体可以在终端里用自然语言完成编程任务。它的工作方式类似“一个会写代码的 AI 助手”你给它一个任务描述它会读取当前项目文件、修改代码、执行命令、逐步验证结果。在 ComfyUI 工作流场景中Codex 的价值在于自动生成工作流 JSON 模板。批量修改工作流中的参数例如把所有节点的“步数”统一改成 30。根据需求写出提交 ComfyUI 任务节点的 Python 脚本。校验 JSON 结构是否合法。要注意的是Codex 本身是编码智能体而不是 ComfyUI 专用插件所以它并不直接理解 ComfyUI 的内部 UI 状态。我们需要给它提供足够明确的模板和上下文它才能生成“可用”的工作流文件。1.4 为什么要把它们组合起来直接手工拖节点其实不难难的是维护和批量生成工作流。如果你只有 1 套工作流手工拖没问题但如果有 10 套、20 套并且要求统一参数风格、统一输出目录再手工去一个个改就非常痛苦。“Workbuddy Codex ComfyUI”的组合可以做到用自然语言描述需求智能体生成工作流 JSON。用模板批量生成同一系列的工作流。通过局域网把工作流和出图服务共享给团队其他人不接触节点图也能使用。这种模式很适合团队内部做 AI 出图平台、自动化测试、批量素材生成等场景。2. 环境准备与版本说明先说明一下ComfyUI、Codex、Workbuddy 的版本更新速度都比较快本文不写死具体版本号。你应当按照自己的系统环境和依赖版本进行调整。2.1 安装 ComfyUIComfyUI 官方仓库提供了多种安装方式。最传统的方式是git clone https://github.com/comfyanonymous/ComfyUI.git cd ComfyUI接着创建虚拟环境并安装依赖python -m venv venv source venv/bin/activate # Windows 下使用 venv\Scripts\activate pip install -r requirements.txtWindows 用户也可以直接使用一键整合包这类整合包通常已经包含 Python 环境和常用插件解压后运行run_nvidia_gpu.bat即可。启动 ComfyUI 的默认命令是python main.py默认访问地址为http://127.0.0.1:8188。2.2 安装 Codex CLICodex CLI 的安装方式建议以官方 README 为准。比较常见的安装方式是通过 npm 安装npm install -g openai/codex如果你的环境还没有 Node.js需要先安装 Node.js 18 以上的版本。安装完成后还需要登录授权codex login登录成功后Codex 才能调用模型接口。如果登录接口访问不稳定通常会提示网络或服务不可用这时需要检查设备网络、登录状态和模型服务可用性。如果公司网络有限制应联系管理员配置合规访问方式不要私自修改系统网络配置。2.3 准备 WorkbuddyWorkbuddy 一般是桌面端或网页端应用。建议先安装官方最新版然后重点完成两件事配置 Skill把“ComfyUI 工作流生成”作为一个 Skill定义它可以访问的模板目录和输出目录。配置自定义指令告诉 Workbuddy生成工作流时使用 ComfyUI API 格式而不是前端 UI 格式。自定义指令示例这里只做示意你是一个 ComfyUI 工作流工程师。 当你收到用户的画图需求时先提取以下关键信息 - 基础模型如 SD1.5、SDXL - 正面关键词、负面关键词 - 采样器、步数、CFG - 图片宽高 - 输出格式API JSON 然后参考模板文件中的节点结构生成 ComfyUI API 格式的 JSON 文件。 不要把前端坐标字段写到 API 格式里。实际编写时要根据你使用的 Workbuddy 版本调整指令字段因为“自定义指令”通常只是系统提示词并不直接影响文件写入真正写入文件还需要配置 Skill 或动作脚本。2.4 项目目录结构为了方便后续管理建议统一项目结构comfyui-agent-demo/ ├── workflows/ │ ├── template_api.json │ └── minimal_txt2img.json ├── scripts/ │ ├── generate_workflow.py │ └── submit_prompt.py ├── output/ └── README.mdworkflows存放工作流 JSON。scripts存放辅助脚本。output存放生成图片。3. 理解 ComfyUI 工作流一张图就是一份 JSON3.1 API 格式与前端格式的区别ComfyUI 工作流 JSON 有两种常见形式前端完整格式包含nodes、links、groups、version等字段里面记录了节点在画布上的坐标和视觉信息。这种格式适合“重新加载到画布里继续拖拽编辑”。API 格式更精简直接映射到/prompt接口的 prompt 结构。每个节点以 ID 为 key包含class_type和inputs。这种格式适合程序调用以及智能体生成。在让 AI 生成工作流时默认要输出 API 格式因为结构简单AI 不易出错。可以直接通过 HTTP 接口提交任务。便于版本对比和参数批量替换。3.2 最小文生图工作流 JSON 拆解下面是一个最小文生图的 API 格式示例为了便于理解我在注释中说明每个节点的作用。{ 1: { class_type: CheckpointLoaderSimple, inputs: { ckpt_name: v1-5-pruned-emaonly.safetensors } }, 2: { class_type: CLIPTextEncode, inputs: { text: a cute cat, masterpiece, clip: [1, 1] } }, 3: { class_type: CLIPTextEncode, inputs: { text: blurry, low quality, clip: [1, 1] } }, 4: { class_type: EmptyLatentImage, inputs: { width: 512, height: 768, batch_size: 1 } }, 5: { class_type: KSampler, inputs: { seed: 42, steps: 20, cfg: 7, sampler_name: euler, scheduler: normal, denoise: 1, model: [1, 0], positive: [2, 0], negative: [3, 0], latent_image: [4, 0] } }, 6: { class_type: VAEDecode, inputs: { samples: [5, 0], vae: [1, 2] } }, 7: { class_type: SaveImage, inputs: { filename_prefix: agent_output, images: [6, 0] } } }这里有几个容易理解错的地方数组[1, 1]表示连接节点的输出。第一个数字是节点 ID第二个数字是输出索引。CheckpointLoaderSimple 有三个输出model 是输出 0CLIP 是输出 1VAE 是输出 2。KSampler 中的positive和negative接收的是 CLIP 文本编码结果而不是直接接文本字符串。智能体如果不知道这些规则生成的 JSON 很可能“看起来像工作流但跑不通”。3.3 工作流文件放到哪里ComfyUI 默认会扫描user/default/workflows目录下的工作流 JSON 文件在页面左侧的“Workflow”菜单里可以加载。也就是说智能体生成 JSON 后只要把它复制到该目录刷新页面就能在 ComfyUI 界面里看到这份工作流。如果你只想通过程序提交任务不希望在界面上展示也可以直接把 JSON 通过/prompt接口提交。4. 一句话生成 ComfyUI 工作流4.1 给智能体输入什么智能体不能凭空气生成可用工作流它至少需要以下信息目标模型名称例如v1-5-pruned-emaonly.safetensors。正面/负面提示词。采样器与步数。图片尺寸。输出格式API JSON。模板最好给一个最小可跑通的模板让 AI 在此基础上改参数。例如一句话需求帮我生成一个 txt2img 的 ComfyUI API 格式工作流。 模型SD1.5 正面a cute cat, masterpiece, best quality 负面blurry, low quality, bad anatomy 采样器euler 步数25 CFG7 尺寸512x768 输出保存为 workflows/txt2img_cat.json4.2 用 Codex 生成工作流 JSON在项目目录下执行codex然后在 Codex 交互面板中输入同样的一段需求。Codex 会读取当前目录下已有的template_api.json理解节点结构然后生成新的工作流文件。需要提醒的是Codex 生成 JSON 属于“辅助编码”节点之间的连接关系仍需人工确认。因为 ComfyUI 节点版本、自定义节点不同同一个class_type在不同环境中的输入输出可能不同。如果 Codex 提示模型不支持例如The gpt-5.6-sol model is not supported when using Codex with a...这类报错通常是配置文件中填写的模型名称不对或者当前账号/网关不支持该模型。排查思路检查 Codex 配置中的模型名是否正确。检查是否使用了官方支持模型列表内的名称。如果接入了第三方兼容接口要确认接口支持该模型。4.3 用 Python 脚本校验生成结果生成 JSON 后最简单的校验是写一个 Python 脚本检查 JSON 语法合法性并输出节点信息。# 文件路径scripts/validate_workflow.py import json import sys def validate(path): with open(path, r, encodingutf-8) as f: data json.load(f) print(f工作流文件: {path}) print(f节点数量: {len(data)}) for node_id, node in data.items(): print(f节点 {node_id}: {node.get(class_type)}) # 检查关键节点 required [CheckpointLoaderSimple, KSampler, CLIPTextEncode] class_types {node.get(class_type) for node in data.values()} for cls in required: if cls in class_types: print(f[OK] 包含 {cls}) else: print(f[WARN] 缺少 {cls}) if __name__ __main__: validate(sys.argv[1])运行python scripts/validate_workflow.py workflows/txt2img_cat.json如果输出节点数量正常并且包含关键节点说明基本结构没问题。但这并不代表能直接出图最终要在 ComfyUI 里实际跑一次。4.4 在 Workbuddy 里配置自定义指令Workbuddy 的作用是把这一系列操作包装成“一句话任务”。自定义指令可以写成当收到“生成 ComfyUI 工作流”的口令时执行以下步骤 1. 解析用户描述中的模型、提示词、采样器、尺寸。 2. 读取 workflows/template_api.json 作为基准。 3. 按需求修改节点参数。 4. 将结果保存到 workflows/ 目录。 5. 运行 python scripts/validate_workflow.py 校验文件。 6. 输出文件路径和使用说明。这样团队成员不需要会写 JSON也不需要懂节点连线只要告诉 Workbuddy“生成一个 512x768 的猫图工作流”就能得到一份可加载的 JSON 文件。要注意的是Workbuddy 具体如何执行外部脚本取决于它是否配置了命令行执行权限和文件系统访问权限。在初始配置时建议先手动跑通一遍再交给智能体自动执行。5. 通过 ComfyUI 接口提交工作流智能体生成 JSON 后最终目标是让 ComfyUI 执行这份工作流并出图。有两种方式将 JSON 放进user/default/workflows在界面上手动加载运行。直接把 API 格式 JSON 提交到 ComfyUI 的/prompt接口。第二种更适合自动化。5.1 获取 API 格式工作流如果你在 ComfyUI 界面里手工搭好了工作流想把它转成 API 格式可以用界面里的“Save (API Format)”功能保存下来的 JSON 就是程序可调用的结构。拿到 API 格式 JSON 后保存到项目workflows目录即可。5.2 使用 Python 提交任务下面是一个提交 prompt 的完整示例# 文件路径scripts/submit_prompt.py import json import urllib.request def queue_prompt(prompt, client_idlocal-client): payload json.dumps({ prompt: prompt, client_id: client_id }).encode(utf-8) req urllib.request.Request( http://127.0.0.1:8188/prompt, datapayload, headers{Content-Type: application/json} ) with urllib.request.urlopen(req, timeout30) as resp: result json.loads(resp.read()) print(提交成功prompt_id:, result.get(prompt_id)) return result if __name__ __main__: with open(workflows/txt2img_cat.json, r, encodingutf-8) as f: workflow json.load(f) queue_prompt(workflow)运行前确保 ComfyUI 已经在本地启动并且工作流 JSON 里的模型名称真实存在。运行后ComfyUI 会在后台排队执行任务最终在前端界面或输出目录中看到图片。5.3 自动生成到指定文件为了把“一句话生成工作流”和“提交任务”串联起来可以写一个总控脚本# 文件路径scripts/run_pipeline.py import json import subprocess import sys # 1. 读取用户需求这里简化为命令行参数 prompt_text sys.argv[1] # 2. 调用 Codex 或智能体生成工作流示意 # 真实场景中可以调用 codex 命令行或调用 Workbuddy 的接口 subprocess.run([ codex, exec, f根据需求生成 ComfyUI 工作流 JSON{prompt_text} ]) # 3. 提交到 ComfyUI 接口 with open(workflows/generated.json, r, encodingutf-8) as f: workflow json.load(f) # 这里省略 queue_prompt 的重复代码 print(工作流已生成请检查后提交)注意codex exec只是示意不同版本 Codex 的自动化参数不同。如果你使用的是 Workbuddy应该调用它提供的自动化接口或按键模拟功能。这里重点展示流程不是写死某一个具体命令。6. ComfyUI 局域网连接配置很多场景下我们不想只在自己电脑上使用 ComfyUI而是希望局域网内其他人也能打开页面提交任务。这时就需要配置局域网访问。6.1 为什么局域网无法访问ComfyUI 默认只监听本机回环地址127.0.0.1意味着只有同一台电脑上的浏览器可以访问。局域网内其他设备即使知道你的 IP也无法打开页面。出现“电脑能够连接互联网但是连不了局域网”类问题时不要急着改 ComfyUI 配置先确认本机能否 ping 通网关其他设备与本机是否在同一网段路由器是否开启了 AP 隔离如果本机连网关都 ping 不通说明网络链路本身有问题和 ComfyUI 无关。6.2 修改监听地址要让局域网访问启动 ComfyUI 时加上--listen参数python main.py --listen 0.0.0.0 --port 81880.0.0.0表示监听本机所有网卡 IP启动后本机依然可以通过http://127.0.0.1:8188访问其他设备则通过http://本机局域网IP:8188访问。查看本机局域网 IPWindowsipconfigLinuxhostname -I或ip addrmacOSifconfig | grep inet假设你的 IP 是192.168.1.100启动成功后同一局域网内的设备访问http://192.168.1.100:8188就能看到 ComfyUI 界面。6.3 防火墙与端口检查即使监听地址改成了0.0.0.0系统防火墙也可能拦截局域网访问。Windows 系统打开“Windows Defender 防火墙”。选择“高级设置”。添加入站规则允许 TCP 端口 8188。Linux 系统如果使用 ufwsudo ufw allow 8188/tcp如果使用 firewalldsudo firewall-cmd --permanent --add-port8188/tcp sudo firewall-cmd --reload注意放行端口要注意安全边界只在内网环境使用避免将 8188 端口直接暴露到公网。6.4 局域网访问的验证流程建议按以下步骤验证本机执行python main.py --listen 0.0.0.0 --port 8188。在本机浏览器访问http://127.0.0.1:8188确认服务正常。查看本机局域网 IP。用另一台局域网设备访问http://IP:8188。如果无法访问在 ComfyUI 所在机器上执行端口监听检查。Linux 下检查端口监听ss -lntp | grep 8188预期输出中会包含0.0.0.0:8188或*:8188如果只有127.0.0.1:8188说明启动参数没有生效。6.5 局域网连接常见故障排查在局域网连接过程中常见的故障点包括 IP 配置、ARP 解析、防火墙、路由器隔离等。问题现象常见原因解决思路本机能上网但 ping 不通局域网其他设备网段不一致、AP 隔离、IP 冲突检查 IP 和掩码确认同一网段能 ping 通 IP但打不开 8188 页面防火墙拦截端口、ComfyUI 未监听 0.0.0.0检查监听地址和防火墙入站规则手机能连 Wi-Fi但访问不了电脑路由器开启 AP/客户端隔离登录路由器关闭隔离访问时提示连接超时服务未启动、端口被占用查看 8188 端口占用情况局域网 TCP 连接不稳定ARP 缓存异常或目的 MAC 不对执行arp -a检查目标 IP 的 MAC 地址这里特别说一句“目的 MAC 地址”的问题。局域网内两台设备通信时TCP 连接虽然以 IP 为依据建立但实际链路层靠 MAC 地址转发。如果 ARP 缓存错误比如目标 IP 对应了错误的 MACTCP 连接就可能失败。遇到这种情况可以在两端设备上刷新 ARP 缓存Windowsarp -d *Linuxsudo ip neigh flush all刷新后重新 ping 测试。7. 实战完整串联案例下面把前面的内容串成一个完整案例。7.1 需求描述团队需要一套“文生图 局域网访问”的临时服务要求输入一句话就能生成工作流。工作流里使用 SD1.5 模型。默认尺寸 512x768。局域网内其他同事可以通过浏览器访问 ComfyUI。7.2 操作步骤第一步准备模板文件workflows/template_api.json使用前面第 3 节的最小结构。第二步启动 ComfyUIpython main.py --listen 0.0.0.0 --port 8188第三步在 Codex 中输入读取 workflows/template_api.json把正面提示词改成 a cute cat, masterpiece 负面提示词改成 blurry, low quality 采样器改为 euler步数改为 25尺寸保持 512x768。 保存到 workflows/txt2img_cat.json。第四步校验生成文件python scripts/validate_workflow.py workflows/txt2img_cat.json第五步提交任务python scripts/submit_prompt.py第六步在输出目录或 ComfyUI 界面中查看图片。第七步其他同事访问http://192.168.1.100:8188在这里192.168.1.100要替换成运行 ComfyUI 的机器 IP。8. 常见问题与排查思路8.1 Codex 生成的工作流跑不通这是最高频的问题。智能体生成 JSON 时如果模板不清晰很容易出现节点 ID 重复。class_type名称拼写错误。输入输出索引对错。自定义节点类型不存在。解决思路先提供一份本机能跑通的模板再让智能体基于模板修改。不要从零生成一个全新建模。8.2 Workbuddy 没有按指令输出 JSON自定义指令只是提示词不代表 Workbuddy 一定会执行文件写入操作。你需要确认Workbuddy 是否具备文件系统写入权限。是否配置了对应的 Skill。输出内容是不是被界面截断。建议先在 Workbuddy 里测试一次“读取文件 输出 JSON”的最小任务再逐步增加复杂度。8.3 ComfyUI 局域网能打开页面但提交任务报错能打开页面说明端口通了报错可能是模型名称不存在。输出目录权限不足。插件没有安装。排查方式是先在本机本地模式跑同一份工作流确认能成功出图后再通过局域网访问。8.4 Codex 调用模型接口失败这类问题通常表现为Codex endpoint /responses request failed可能原因很多包括网络状态、登录态过期、模型服务不可用等。处理顺序检查网络是否正常。检查登录状态必要时重新登录。检查模型配置是否被修改。如果是第三方兼容接口查看接口服务状态。不要一遇到网络失败就盲目改系统代理或改 hosts容易引入更多问题。9. 最佳实践与工程建议9.1 工作流 JSON 尽量走 Git 管理API 格式 JSON 比较干净适合放进 Git。每次修改都记录变更方便回滚。前端完整格式因为包含画布坐标多人协作容易产生大量 diff不建议作为唯一版本管理对象。9.2 模板先行智能体后改不要直接让 AI 凭空生成一个完整工作流。应该先准备一份经过验证的最小模板再让 Codex 或 Workbuddy 做参数替换和节点增删。这样可以大幅降低生成错误。9.3 模型路径与环境隔离工作流 JSON 中的ckpt_name是模型文件名。不同机器上的模型目录可能不同建议团队统一目录结构或在脚本中做动态替换而不是把绝对路径写死在 JSON 里。9.4 局域网访问要控制暴露范围--listen 0.0.0.0只适合可信内网环境。如果需要跨网段访问建议通过带认证的反向代理方式并遵循最小权限原则不要让未授权人员直接访问管理界面。9.5 自定义指令模板化把常用的正向词、负面词、采样器、尺寸写成一个模板放在项目里。这样每次让 Workbuddy 或 Codex 生成工作流时只需要传“模板 ID”和少量个性化参数输出更稳定。9.6 生成后必须做人工验证智能体可以提高效率但不能完全代替人工验证。每次生成工作流后至少做一次“节点数量检查 关键节点检查 实际运行”。涉及生产环境变更时更要在测试环境验证完毕后再上线。10. 总结与后续学习建议到这里我们已经把“用 Workbuddy、Codex 智能体一句话生成 ComfyUI 工作流”和“ComfyUI 局域网连接配置”两条主线讲完了。核心要点可以归纳为ComfyUI 工作流本质上是一份结构化 JSONAPI 格式最适合智能体生成和程序调用。Workbuddy 通过 Skill 和自定义指令可以把“生成工作流”变成一句话任务。Codex 擅长读取模板、修改参数、写出提交脚本适合做工作流自动生成。局域网访问的关键是--listen 0.0.0.0同时要注意防火墙、ARP、路由器隔离等问题。下一步你可以继续研究ComfyUI 自定义节点开发把团队内部接口封装成节点。Workbuddy 的 Skill 深入配置让它可以读取数据库、调用内部平台。在局域网内搭建简单的任务队列避免多人同时提交导致资源冲突。研究 ComfyUI 的 WebSocket 事件实现“任务完成后自动通知”的效果。如果本文对你有帮助可以收藏备用。实际动手时建议先准备好最小可运行模板再逐步把智能体接入流程每一步都做校验这样能少踩很多坑。
返回列表