☰
WorkBuddy 连接本地 ComfyUI:从零到出图的保姆级教程(TaoToken 统一 Key 版)
2026/10/3 11:54:49 网站建设 项目流程

1. 为什么要在本地跑 WorkBuddy + ComfyUI 这条链路

WorkBuddy 连接本地 ComfyUI 这件事,本质上是把「自然语言描述」直接翻译成「一张真实存在的图片文件」。你对着 WorkBuddy 说一句“画一只戴宇航头盔的橘猫,漂浮在太空里”,它通过 MCP 协议把这句话拆成 ComfyUI 能读懂的工作流 JSON,提交给本机 8188 端口的 ComfyUI 服务,最后在 output 目录里落下一张 PNG。整个过程不需要你把图片上传到任何云端,也不需要为每次生成单独付费。

这套方案适合三类人:一是本地已经有显卡、装好了 ComfyUI 但懒得每次手动搭节点的人;二是希望把模型调用凭证统一管理、不想在多个工具里反复填 Key 的人;三是想用自然语言驱动出图、把精力放在提示词而不是连线上的创作者。核心检索词就是 WorkBuddy、ComfyUI、MCP、本地部署这四个,本文围绕它们把链路走通。

我试过纯手动在 ComfyUI 界面里拖节点,也试过让 AI 助手直接调 API,最后发现 MCP 这条路的平衡点最好:AI 负责理解意图和拼工作流,ComfyUI 负责真正的推理,两边通过一个独立的 Node.js 进程通信,互不侵入。下面从环境准备讲到首次出图,每一步都有可复制的命令和配置。

2. TaoToken 统一 Key 与 API 通道的前置准备

在讲 MCP 配置之前,先把「凭证从哪来」这件事理清楚。WorkBuddy 这类 AI 助手在调用模型时需要一个 API 通道,而 ComfyUI 本地推理本身不消耗外部额度。真正需要统一管理的是 WorkBuddy 侧调用大模型理解你意图时用的 Key。TaoToken 在这里扮演的角色是统一凭证入口:你在一处生成 Key,WorkBuddy、Coding Plan、以及后续可能接入的其他工具都复用同一个通道,不用每个工具单独申请。

访问官网 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 注册后,进入控制台创建 API Key。控制台地址是 https://taotoken.net/console?utm_source=taotoken_aicg_blog_end&utm_content=console&utm_campaign=rewrite ,Key 管理页在 https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api-keys&utm_campaign=rewrite 。生成后你会拿到一串以特定前缀开头的密钥,把它存到环境变量里,不要硬编码进任何会提交到 Git 的文件。

API 基础地址统一用 https://taotoken.net/api ,注意这个地址不带任何查询参数,是纯净的接口根路径。WorkBuddy 在配置模型通道时,Base URL 填这个,Key 填你刚生成的,Model ID 按你实际要用的模型名填。这三件套(Base URL + Key + Model ID)是后面所有配置的基础,缺一不可。

如果你后续要用 Coding Plan 做长期编码或 Agent 任务,入口在 https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding-plan&utm_campaign=rewrite 。模型对话验证入口在 https://taotoken.net/chat?utm_source=taotoken_aicg_blog_end&utm_content=chat&utm_campaign=rewrite ,接入文档在 https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite 。Claude Code 相关配置参考 https://taotoken.net/claude-code?utm_source=taotoken_aicg_blog_end&utm_content=claudecode&utm_campaign=rewrite 。

把 Key 写进系统环境变量的方式,Windows 下用 setx,macOS/Linux 下写进 shell 配置文件:

# Windows CMD(永久写入用户环境变量) setx TAOTOKEN_API_KEY "你的Key" # macOS / Linux(写入 ~/.zshrc 或 ~/.bashrc) export TAOTOKEN_API_KEY="你的Key"

验证环境变量是否生效:

# Windows echo %TAOTOKEN_API_KEY% # macOS / Linux echo $TAOTOKEN_API_KEY

这一步做完,WorkBuddy 侧调用模型时就能读到统一 Key,后面 MCP 配置里只需要引用这个变量名,不用把明文 Key 写进 mcp.json。这是凭证管理的第一层隔离。

3. 可复制的 MCP 配置:mcp.json 与 ComfyUI 启动参数

这一节是整篇的核心,所有片段都可以直接复制。先确认你的 ComfyUI 能正常启动。进入 ComfyUI 目录,激活虚拟环境,用你自己的启动参数跑起来:

cd H:\PythonProjects3\Win_ComfyUI .venv\Scripts\activate python main.py --enable-manager --enable-assets --enable-triton-backend --async-offload --use-flash-attention --enable-dynamic-vram

看到To see the GUI go to: http://127.0.0.1:8188就说明 ComfyUI 就绪。这个终端窗口不要关,关了 ComfyUI 就停了。MCP 服务不关心你传了什么启动参数,它只通过 REST API 和 8188 端口通信,只要 ComfyUI 跑起来就行。

接着开第二个终端,启动 MCP 服务器:

npx -y comfyui-mcp --http --port 9100

首次运行 npx 会自动下载 comfyui-mcp 包,大约 1 到 2 分钟。下载完成后看到这两行就成功了:

[comfyui-mcp] Found ComfyUI on port 8188 [INFO] ComfyUI MCP server running on http://127.0.0.1:9100/mcp

如果你的 ComfyUI 不在默认端口,用环境变量指定:

set COMFYUI_URL=http://127.0.0.1:8188 npx -y comfyui-mcp --http --port 9100

想加一层访问令牌防止局域网内其他设备调用:

set COMFYUI_MCP_HTTP_TOKEN=your_secret_token npx -y comfyui-mcp --http --port 9100

现在配置 WorkBuddy 的 mcp.json。文件位置在C:\Users\<你的用户名>\.workbuddy\mcp.json,即~/.workbuddy/mcp.json。最简配置如下:

{ "mcpServers": { "comfyui-local": { "url": "http://127.0.0.1:9100/mcp", "disabled": false } } }

如果你同时保留了 Comfy Cloud MCP,两个都写进去:

{ "mcpServers": { "comfy": { "url": "https://cloud.comfy.org/mcp", "headers": { "X-API-Key": "comfyui-你的API密钥" }, "disabled": false }, "comfyui-local": { "url": "http://127.0.0.1:9100/mcp", "disabled": false } } }

如果你给 MCP 服务器设了访问令牌,headers 里补上:

{ "mcpServers": { "comfyui-local": { "url": "http://127.0.0.1:9100/mcp", "headers": { "X-API-Key": "your_secret_token" }, "disabled": false } } }

字段说明:url是 MCP 服务器的 HTTP 端点,本地固定为http://127.0.0.1:9100/mcp;disabled为 false 表示启用,true 表示禁用;headers可选,只有设了 Token 才需要。绑定 127.0.0.1 意味着只有本机能访问,局域网内其他设备无法连接,这是默认的安全状态。

保存 mcp.json 后,回到 WorkBuddy,点击右上角的连接器图标进入管理页面,找到comfyui-local,状态应该是「未信任」或「待确认」。点击「信任」按钮,WorkBuddy 会连接 MCP 服务器并加载所有工具。信任成功后你会看到类似comfyui-local: 113/113 个工具已可用的提示。工具数量超过 80 个时 WorkBuddy 会警告可能影响 AI 回复质量,如果后续发现调用质量下降,可以暂时禁用 comfy(Cloud 版),只保留 comfyui-local。

4. 验证请求与首次出图:从 system_stats 到 PNG 落盘

配置完成后先做最小验证。在 WorkBuddy 对话框里说:

帮我查看本地 ComfyUI 的系统状态

WorkBuddy 应该会调用mcp__comfyui-local__get_system_stats工具,返回 GPU 信息、显存状态等。如果工具索引还没刷新,直接用 curl 验证:

# 检查 ComfyUI 是否在线 curl -sS http://127.0.0.1:8188/system_stats # 检查 MCP 服务器是否在线 curl -sS -o /dev/null -w "HTTP %{http_code}" http://127.0.0.1:9100/mcp # 列出可用的 checkpoint 模型 curl -sS http://127.0.0.1:8188/object_info/CheckpointLoaderSimple

检查端口占用:

netstat -ano | findstr :9100

看到LISTENING状态说明 MCP 服务器在正常运行。

接下来是首次出图。我用的是一个 7 节点的 txt2img 工作流,提交到http://127.0.0.1:8188/prompt。工作流 JSON 如下,可以直接复用:

{ "3": { "class_type": "KSampler", "inputs": { "seed": 456, "steps": 20, "cfg": 7.5, "sampler_name": "dpmpp_2m", "scheduler": "karras", "denoise": 1.0, "model": ["4", 0], "positive": ["6", 0], "negative": ["7", 0], "latent_image": ["5", 0] } }, "4": { "class_type": "CheckpointLoaderSimple", "inputs": { "ckpt_name": "sd_xl_base_1.0.safetensors" } }, "5": { "class_type": "EmptyLatentImage", "inputs": { "width": 1024, "height": 1024, "batch_size": 1 } }, "6": { "class_type": "CLIPTextEncode", "inputs": { "text": "masterpiece, best quality, a red vintage sports car parked on a coastal highway at sunset, ocean waves in background, golden hour lighting, cinematic, highly detailed, 8k uhd", "clip": ["4", 1] } }, "7": { "class_type": "CLIPTextEncode", "inputs": { "text": "low quality, blurry, deformed, ugly, watermark, text, bad anatomy, worst quality, jpeg artifacts", "clip": ["4", 1] } }, "8": { "class_type": "VAEDecode", "inputs": { "samples": ["3", 0], "vae": ["4", 2] } }, "9": { "class_type": "SaveImage", "inputs": { "images": ["8", 0], "filename_prefix": "workbuddy_mcp_test" } } }

用 Python 提交这个工作流:

import json, urllib.request workflow = { ... } # 上面的 JSON data = json.dumps({"prompt": workflow}).encode("utf-8") req = urllib.request.Request( "http://127.0.0.1:8188/prompt", data=data, headers={"Content-Type": "application/json"} ) resp = json.loads(urllib.request.urlopen(req, timeout=30).read()) prompt_id = resp["prompt_id"] print(f"Workflow submitted! prompt_id: {prompt_id}")

提交后 ComfyUI 日志会显示Prompt executed in ~25 seconds,文件保存在output/workbuddy_mcp_test3_sdxl_base_00001_.png。我实测下来,标准 SDXL Base 模型配 dpmpp_2m + karras + CFG 7.5 + 20 步,25 秒左右出一张 1024x1024 的图,基本贴合汽车和黄昏主题。

这里有个关键对比值得说。我一开始用的是 SDXL Lightning 4-step 蒸馏模型,参数是 dpmpp_2m_sde + karras + CFG 1.5 + 4 步,结果出来是白图。改成 euler + normal + CFG 1.0 后不再白图,但输出了维多利亚式房屋,完全偏离「海边跑车」的提示词。换成标准 SDXL Base 才成功。蒸馏模型(Lightning/Turbo/LCM)对采样器和 CFG 极其敏感,适合快速预览,不适合精确跟随提示词。给 WorkBuddy 调用本地 ComfyUI 生成时,优先选稳定非蒸馏模型。

5. 本篇常见报错排查:401、端口占用与工具索引

这一节按真实报错来。第一个高频问题是EADDRINUSE: address already in use 127.0.0.1:9100,原因是 9100 端口被占用,通常是上一个 MCP 服务器实例还在跑。解决:

# 查看占用 9100 端口的进程 netstat -ano | findstr :9100 # 找到 LISTENING 行的 PID(如 106208) # 杀掉该进程 taskkill /PID 106208 /F # 重新启动 npx -y comfyui-mcp --http --port 9100

或者换端口:

npx -y comfyui-mcp --http --port 9101

同时把 mcp.json 里的 URL 改成http://127.0.0.1:9101/mcp。

第二个问题:日志显示Found ComfyUI on port 8188但随后报错退出。原因是 ComfyUI 没有正常运行,或者端口不是 8188。先确认:

curl -sS http://127.0.0.1:8188/system_stats

如果 ComfyUI 用了别的端口:

set COMFYUI_URL=http://127.0.0.1:8888 npx -y comfyui-mcp --http --port 9100

第三个问题:WorkBuddy 中 ToolSearch 找不到 comfyui-local 工具。原因是重启 MCP 服务器后,WorkBuddy 的工具索引需要刷新。去连接器管理页面把 comfyui-local 开关关掉等几秒,再打开。如果还不行,重启 WorkBuddy。

第四个问题:出图是白图或噪声。原因是模型参数不匹配,尤其是蒸馏模型。对照表如下:

模型类型正确参数
SDXL Lightning 4-stepeuler + normal + CFG 1.0 + 4 步
SDXL Lightning 8-stepeuler + normal + CFG 1.5 + 8 步
SDXL Turboeuler_ancestral + normal + CFG 0.5 + 1-4 步
SDXL Base(标准)dpmpp_2m + karras + CFG 7.5 + 20-30 步
SD 1.5(标准)dpmpp_2m + karras + CFG 7.0 + 20-30 步

第五个问题:ComfyUI 日志显示Cannot connect to comfyregistry。这是 ComfyUI-Manager 启动时尝试连接官方注册表服务器,网络不通导致的。不影响本地生成,只是 Manager 的在线功能(搜索/安装插件)不可用,忽略即可。

第六个问题:npx 首次运行很慢。首次需要从 npm 下载 comfyui-mcp 包,耐心等 1 到 2 分钟。后续启动会用缓存,几秒内完成。如果太慢可以设镜像:

npm config set registry https://registry.npmmirror.com npx -y comfyui-mcp --http --port 9100

第七个问题:WorkBuddy 提示工具太多影响回复质量。comfyui-local(113 工具)加 comfyCloud(36 工具)等于 149 个,超过 80 个的建议上限。禁用其中一个:

{ "mcpServers": { "comfy": { "url": "https://cloud.comfy.org/mcp", "disabled": true }, "comfyui-local": { "url": "http://127.0.0.1:9100/mcp", "disabled": false } } }

第八个问题:关闭终端窗口后 MCP 服务器就停了。MCP 服务器是前台进程,终端关闭等于进程终止。解决办法是写一个一键启动脚本,同时拉起 ComfyUI 和 MCP 两个进程:

@echo off REM start_comfy_with_mcp.bat - 同时启动 ComfyUI 和 MCP 服务器 setlocal set "COMFYUI_DIR=H:\PythonProjects3\Win_ComfyUI" set "PYTHON=%COMFYUI_DIR%\.venv\Scripts\python.exe" echo [1/2] Starting ComfyUI... start "ComfyUI" cmd /k "cd /d %COMFYUI_DIR% && "%PYTHON%" main.py --enable-manager --enable-assets --enable-triton-backend --async-offload --use-flash-attention --enable-dynamic-vram" echo [2/2] Starting MCP Server (waiting 10s for ComfyUI to boot)... timeout /t 10 /nobreak >nul start "ComfyUI-MCP" cmd /k "cd /d %COMFYUI_DIR% && npx -y comfyui-mcp --http --port 9100" echo Both processes started in separate windows. echo - ComfyUI: http://127.0.0.1:8188 echo - MCP Server: http://127.0.0.1:9100/mcp pause endlocal

双击这个 bat 文件会弹出两个终端窗口,一个跑 ComfyUI,一个跑 MCP 服务器,关闭两个窗口即停止所有服务。

关于安全边界,MCP 工具按风险分级:get_system_stats、get_queue、list_local_models、view_image是纯只读,放心用;download_model、add_extra_path、clear_vram、cancel_job可控但影响显存,知情即可;install_custom_node、stop_comfyui、restart_comfyui、download_civitai_model可能改变环境,不要随意让 Agent 执行。不要给 CivitAI API Token,不要对 Agent 说“帮我装插件”,Agent 可能直接 git clone 加 pip install,绕过你的手动安装准则。需要装插件时按自己的步骤手动操作,MCP 工具只用于生成和管理。

6. 把统一 Key 通道用起来:模型对话验证与长期编码入口

链路跑通之后,回到凭证管理这条线。WorkBuddy 通过 MCP 驱动本地 ComfyUI 出图,这条链路本身不消耗外部额度,但 WorkBuddy 理解你意图、拆解工作流、决定调用哪个工具,这些动作背后是模型调用,走的是 TaoToken 的统一 Key 通道。你可以在模型对话入口 https://taotoken.net/chat?utm_source=taotoken_aicg_blog_end&utm_content=chat&utm_campaign=rewrite 先验证 Key 是否可用,发一条简单消息看是否正常返回。

如果你打算把这条链路长期用下去,比如每天用自然语言批量出图、或者让 Agent 自动迭代提示词,Coding Plan 入口在 https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding-plan&utm_campaign=rewrite ,适合长期编码和 Agent 任务。接入文档在 https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite ,里面有完整的 Base URL、Key、Model ID 三件套配置说明。API Key 管理页在 https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api-keys&utm_campaign=rewrite ,需要轮换或新增 Key 时在这里操作。

关键文件与路径速查:

文件/路径说明
C:\Users\<用户名>\.workbuddy\mcp.jsonWorkBuddy MCP 配置文件
H:\PythonProjects3\Win_ComfyUI\main.pyComfyUI 启动入口
H:\PythonProjects3\Win_ComfyUI\.venv\Python 虚拟环境
H:\PythonProjects3\Win_ComfyUI\output\生成图片输出目录
http://127.0.0.1:8188ComfyUI Web 界面
http://127.0.0.1:8188/promptComfyUI 工作流提交 API
http://127.0.0.1:9100/mcpMCP 服务器端点

常用命令速查:

# 启动 ComfyUI cd H:\PythonProjects3\Win_ComfyUI .venv\Scripts\activate python main.py --enable-manager --enable-assets --enable-triton-backend --async-offload --use-flash-attention --enable-dynamic-vram # 启动 MCP 服务器 npx -y comfyui-mcp --http --port 9100 # 检查 ComfyUI 是否在线 curl -sS http://127.0.0.1:8188/system_stats # 检查端口占用 netstat -ano | findstr :9100 # 杀掉占用端口的进程 taskkill /PID <PID号> /F # 列出可用 checkpoint 模型 curl -sS http://127.0.0.1:8188/object_info/CheckpointLoaderSimple # 列出可用采样器 curl -sS http://127.0.0.1:8188/object_info/KSampler

最后说一个实际经验:本地 ComfyUI 跑图时显存会吃满,RTX 3090 24GB 跑 SDXL 没问题,但同时开其他 GPU 任务会卡。深夜挂机批量跑是个好选择。output 目录会累积大量图片,定期归档或删除。MCP 服务器是纯外部 API 消费者,不修改 ComfyUI 任何文件,两个终端窗口分别运行 ComfyUI 和 MCP 服务器,互不侵入。蒸馏模型参数敏感,建议用标准模型测试。不要让 Agent 通过 MCP 工具安装插件,遵守手动安装准则。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询