1. 为什么要在 ComfyUI 里折腾 Kolors + GLM3 这套组合
如果你最近在刷 AI 绘画社区,大概率会看到 Kolors 这个名字反复出现。它是快手可图团队开源的一套文生图大模型,训练数据规模在十亿级图文对,最直观的差异点在于:它对中文提示词的理解是原生级别的,不需要你先在脑子里把「一个穿汉服的女孩站在雪地里」翻译成英文再喂给模型。这一点对国内创作者来说,省掉的不只是翻译步骤,还有翻译过程中丢失的语义细节。
但真正让这套方案在 ComfyUI 里值得单独写一篇的,是 GLM3 的加入。Kolors 本身自带一个文本编码器,可当你在提示词里写「木牌上写着‘我爱你中国’」这种需要精确文字渲染的需求时,纯 CLIP 编码往往会把文字糊成一团。GLM3 作为大语言模型介入后,它负责把中文提示词做深层语义拆解,再交给扩散模型去画,文字渲染和复杂语义理解的准确率会有肉眼可见的提升。我实测下来,同一句中文提示词,挂上 GLM3 节点后木牌上的字从「大概能看出是汉字」变成了「能认出来写的是什么」。
这套组合适合谁?三类人:一是做中文内容配图的运营和自媒体,需要模型直接吃中文提示词;二是想对比国产模型和 SD3 差异的技术玩家;三是已经在用 ComfyUI 但还没试过 LLM 加持工作流的人。整个搭建过程不复杂,核心是三件事:装对插件、放对模型路径、配好统一 Key 的 API 接入。下面按可复现的顺序拆开讲。
2. TaoToken 统一 Key 前置准备与 ComfyUI 环境检查
在动手装 Kolors 之前,先把 API 这一层理顺,不然后面调试工作流时容易分不清是模型问题还是鉴权问题。TaoToken 在这里的角色是一个统一入口,你用它生成一个 Key,就能在 ComfyUI 的 API 节点、Cline、Codex 这些工具里复用同一套凭证,不用每个工具单独去申请。官网地址是 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,API 端点固定为 https://taotoken.net/api ,注意这个地址后面不加任何 UTM 参数。
第一步,去控制台创建 Key。打开 https://taotoken.net/console?utm_source=taotoken_aicg_blog_end&utm_content=console&utm_campaign=rewrite ,登录后在 API Keys 页面点新建,复制那串以 sk- 开头的字符串。这个 Key 只显示一次,建议先粘到本地一个临时文本里。如果你后面还要接 Claude Code 或 Cline,同一个 Key 可以直接用,不用重复申请。
第二步,检查 ComfyUI 版本。Kolors 的社区封装插件对 ComfyUI 主版本有要求,太老的版本会出现节点加载失败。在 ComfyUI 根目录执行:
cd ComfyUI git log --oneline -1如果提交日期在最近三个月内基本没问题。太旧的话先更新:
git pull pip install -r requirements.txt第三步,确认 Python 环境和显存。GLM3 的 4bit 量化版本大约占 4-5GB 显存,Kolors 的 UNet 加文本编码器在 fp16 下约 8-10GB。也就是说,8GB 显存的卡跑 4bit GLM3 + Kolors 会比较紧张,建议 12GB 起步。用下面命令看当前显存:
nvidia-smi --query-gpu=memory.total,memory.used --format=csv第四步,把 API Key 写进环境变量,方便后续节点读取。Linux/macOS:
export TAOTOKEN_API_KEY="sk-你的Key"Windows PowerShell:
$env:TAOTOKEN_API_KEY="sk-你的Key"这一步不是必须的,但把 Key 放环境变量比硬编码在 JSON 里安全,后面配 settings 片段时可以直接引用。到这里前置就绪,接下来进正题。
3. ComfyUI 中 Kolors + GLM3 的节点配置与模型加载路径
这一节是全文技术密度最高的部分,我会把插件安装、模型目录结构、以及可复制的 settings 片段都给全。先装插件。社区封装是 ComfyUI-KwaiKolorsWrapper,通过 ComfyUI Manager 搜索安装,或者手动 clone:
cd ComfyUI/custom_nodes git clone https://github.com/kijai/ComfyUI-KwaiKolorsWrapper cd ComfyUI-KwaiKolorsWrapper pip install -r requirements.txt装完重启 ComfyUI,在节点搜索里输入 Kolors 应该能看到 KwaiKolors 相关节点。如果搜不到,检查 custom_nodes 目录下有没有这个文件夹,以及启动日志里有没有 import 报错。
接下来是模型文件。GLM3 量化模型放到ComfyUI/models/LLM/checkpoints,Kolors 主模型放到ComfyUI/models/diffusers/Kolors。完整目录结构如下:
ComfyUI/models/ ├── LLM/ │ └── checkpoints/ │ └── chatglm3-4bit.safetensors └── diffusers/ └── Kolors/ ├── model_index.json ├── scheduler/ │ └── scheduler_config.json ├── text_encoder/ │ ├── config.json │ ├── pytorch_model-00001-of-00007.bin │ ├── ... │ └── pytorch_model.bin.index.json ├── tokenizer/ │ ├── tokenizer.model │ ├── tokenizer_config.json │ └── vocab.txt └── unet/ ├── config.json └── diffusion_pytorch_model.fp16.safetensorsGLM3 的 safetensors 有 4bit、8bit、fp16 三个版本,显存小于 12GB 直接选chatglm3-4bit.safetensors。Kolors 的 diffusers 目录首次运行会自动下载,但国内网络环境下建议手动从镜像站拉全量文件再放进去,避免跑到一半断流。
然后是 API 接入的 settings 片段。ComfyUI 本身不直接读这个文件,但如果你用 Cline 或 Codex 做辅助调试,或者想把 Kolors 的提示词优化环节交给外部 LLM,就需要在对应工具的配置里写清楚 Base URL、Key、Model ID 三件套。以 Cline 的 MCP 配置为例,在cline_mcp_settings.json里加:
{ "mcpServers": { "taotoken": { "command": "npx", "args": ["-y", "@taotoken/mcp-server"], "env": { "TAOTOKEN_BASE_URL": "https://taotoken.net/api", "TAOTOKEN_API_KEY": "sk-你的Key", "TAOTOKEN_MODEL_ID": "glm-4-plus" } } } }如果你用的是 Codex,配置写在~/.codex/auth.json:
{ "base_url": "https://taotoken.net/api", "api_key": "sk-你的Key", "model": "glm-4-plus" }注意 Base URL 是https://taotoken.net/api,不要加 UTM 后缀,加了会 404。Model ID 按你实际要调的模型填,这里用 glm-4-plus 只是示例。三件套缺一不可,只填 Key 不填 Base URL 会走到默认端点,报 401 或连接超时。
工作流层面,核心节点链路是:KwaiKolorsTextEncode接收中文提示词 →ChatGLM3Loader加载 GLM3 做语义增强 →KwaiKolorsSampler采样 →VAEDecode出图。把 GLM3 节点接在文本编码之前,它的输出作为增强后的 embedding 喂给采样器。这套链路搭好后,中文提示词的还原度比裸 Kolors 高一个档次。
4. 验证请求与生成效果对比:Kolors vs SD3 实测
配置写完必须验证,不然你不知道是模型没加载还是 Key 没生效。先做一次最小请求验证 API 连通性,用 curl 打模型对话端点:
curl -X POST https://taotoken.net/api/v1/chat/completions \ -H "Authorization: Bearer sk-你的Key" \ -H "Content-Type: application/json" \ -d '{ "model": "glm-4-plus", "messages": [{"role": "user", "content": "把这句话改写成适合文生图的提示词:一个中国女孩举着木牌"}] }'返回里如果有choices字段且内容正常,说明 Key 和 Base URL 都对。如果返回 401,检查 Key 有没有复制全;如果返回local proxy failed,说明 Base URL 写错了或者网络层有问题,确认地址是https://taotoken.net/api不带多余路径。
API 通了之后,在 ComfyUI 里跑第一张图。提示词用中文:「一个中国女孩,手举木牌,木牌上写着‘我爱你中国’,身穿淡黄色汉服,18岁,年轻貌美」。Kolors + GLM3 的输出里,木牌上的字基本能认出来,汉服的颜色和形制也对得上。同一句提示词直接喂给 SD3,木牌上的字会变成乱码或者干脆没有文字,因为 SD3 的文本编码器对中文没有原生支持。
再测一组复杂语义:「3个时尚年轻女模特,动态姿势,照片级真实,8k分辨率,模特1穿蓝色衬衫红色裤子回头看,模特2穿红色紧身短裙头发飘动,模特3穿蓝色牛仔裤红色短上衣双手叉腰」。这组提示词里有三个人物、各自的服装和动作,属于典型的多主体复杂语义。Kolors 在 GLM3 加持下能把三个人物分开画,服装颜色基本对应;SD3 在这组上容易出现人物融合或者服装串色。
显存占用验证用下面命令在生成过程中采样:
nvidia-smi --query-gpu=memory.used --format=csv -l 1实测 4bit GLM3 + Kolors fp16,生成 1024x1024 图片时峰值显存约 11GB。如果爆显存,把 GLM3 换成 4bit 版本,或者把图片分辨率降到 768x768。SD3 在同分辨率下峰值约 9GB,比 Kolors 略低,但中文能力差距明显。
文字渲染这块单独说。Kolors 在中文文字生成上领先是公认的,尤其是木牌、招牌、标语这类场景。SD3 在英文文字上表现不错,但中文基本放弃。如果你做的是中文内容配图,这个差异直接决定选型。
5. 本篇常见报错排查:401、local proxy failed、reading choices、OAuth
搭建过程中最容易卡住的几个报错,我按出现频率排一下,每个都给定位方法和修复步骤。
401 Unauthorized。这个最常见,九成是 Key 问题。先确认 Key 有没有复制完整,sk- 开头后面那串有没有漏字符。然后确认请求头格式是Authorization: Bearer sk-xxx,Bearer 和 Key 之间有一个空格。如果 Key 确认没问题还是 401,检查是不是把 Key 写进了错误的配置文件,比如 Cline 和 Codex 的配置路径不一样,写错地方等于没配。
local proxy failed。这个报错通常出现在 Base URL 配置错误时。检查你的配置里 Base URL 是不是https://taotoken.net/api,有没有多写/v1或者少写/api。有些工具默认会自己在后面拼/v1/chat/completions,你如果 Base URL 里已经带了/v1,就会变成/v1/v1/...导致失败。另外确认没有在 URL 后面加 UTM 参数,加了会走到错误的路由。
reading choices 报错。这个一般出现在 API 返回结构不符合预期时。可能是 Model ID 填错了,比如填了一个不存在的模型名,服务端返回的错误结构里没有choices字段,客户端解析就报错。去控制台确认你账号下可用的 Model ID 列表,填一个确定存在的。也可能是请求体格式不对,messages字段必须是数组,每条消息要有role和content。
OAuth 相关报错。如果你在 Claude Code 或类似工具里看到 OAuth 失败,通常是因为工具默认走 OAuth 流程,但你用的是 API Key 模式。需要在配置里显式指定用 API Key 鉴权,把 OAuth 相关字段关掉。以 Claude Code 为例,配置里要写清楚ANTHROPIC_BASE_URL和ANTHROPIC_API_KEY,Base URL 指向https://taotoken.net/api,这样它就不会去走 OAuth。
节点加载失败。ComfyUI 里搜不到 Kolors 节点,先看启动日志有没有ImportError。常见原因是插件依赖没装全,进custom_nodes/ComfyUI-KwaiKolorsWrapper目录重新pip install -r requirements.txt。如果报的是某个包版本冲突,用pip install 包名==版本号锁定。
模型加载报错。Kolors 的 diffusers 目录如果文件不全,加载时会报缺文件。对照第 3 节的目录结构逐个核对,尤其是model_index.json和unet目录下的 safetensors。GLM3 的 safetensors 如果放错目录,节点里下拉框会是空的,确认放在models/LLM/checkpoints下。
6. 长期使用建议与统一 Key 的接入入口
跑通一次之后,如果你打算把这套工作流长期用下去,有几个点值得提前规划。第一是把 API Key 统一管理,不要每个工具单独存一份,TaoToken 的一个 Key 可以同时用在 ComfyUI 的外部 LLM 节点、Cline 的 MCP、Codex 的 auth.json 里,改一处全生效。第二是模型文件做本地备份,Kolors 的 diffusers 目录加起来十几个 GB,重新下载成本高,备份到移动硬盘或者 NAS 上。第三是工作流存成模板,ComfyUI 的 workflow JSON 导出后下次直接拖进去,不用重新连节点。
如果你后面要接 Claude Code 做代码辅助,配置入口在 https://taotoken.net/doc/claudecode?utm_source=taotoken_aicg_blog_end&utm_content=claudecode&utm_campaign=rewrite ,里面有完整的 Base URL 和 Key 填写说明。要调模型对话做提示词优化,用 https://taotoken.net/models?utm_source=taotoken_aicg_blog_end&utm_content=models&utm_campaign=rewrite 这个入口。长期做编码和 Agent 任务的话,Coding Plan 在 https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=codingplan&utm_campaign=rewrite 。API Key 管理统一在 https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=apikeys&utm_campaign=rewrite 。
最后说一个实测技巧:GLM3 的语义增强不是越强越好。如果你把增强强度拉满,模型会过度解读提示词,加进去很多你没写的细节,反而偏离原意。建议从默认强度开始,出图不满意再微调。另外 Kolors 对负面提示词的处理比较敏感,负面词写太多会压制画面丰富度,控制在三到五个关键词就够。这套组合我用了大概两周,中文场景下确实比 SD3 省心,尤其是需要精确文字渲染的配图任务,基本一次出图就能用。