6.2 KiB
6.2 KiB
🎨 ComfyUI 工作流管理功能 - 实现完成
✅ 已完成的功能
1. 后端实现
文件结构
backend/
├── data/
│ └── comfyui_workflows/
│ └── default_txt2img.json # 默认文生图工作流
├── services/
│ └── comfyui_workflow_manager.py # 工作流管理服务
└── api/routes/
└── apiConfigRoute.py # 添加了4个新端点
API 端点
-
GET
/api/api-config/comfyui/workflows- 获取所有可用的工作流列表
- 返回:
[{filename, name, nodes_count, size}, ...]
-
POST
/api/api-config/comfyui/workflows/upload- 上传工作流 JSON 文件
- 验证: JSON格式、包含KSampler节点
- 自动备份已存在的文件
-
DELETE
/api/api-config/comfyui/workflows/{filename}- 删除工作流文件
- 保护: 不允许删除
default_txt2img.json
-
GET
/api/api-config/comfyui/workflows/{filename}- 获取指定工作流的详细内容
核心功能
- ✅ 工作流文件管理(增删查)
- ✅ JSON 格式验证
- ✅ ComfyUI 工作流有效性检查
- ✅ 自动备份机制
- ✅ 路径安全保护(防止遍历攻击)
- ✅ 提示词替换功能(
replace_prompt_in_workflow)
2. 前端实现
新增组件
frontend/src/components/SideBarLeft/tabs/ApiConfig/
├── ComfyUIWorkflowManager.jsx # 工作流管理器组件
└── ApiConfig.css # 添加了工作流管理器样式
组件功能
ComfyUIWorkflowManager.jsx:
- ✅ 显示工作流列表(文件名、节点数、大小)
- ✅ 上传按钮(导入 JSON 文件)
- ✅ 删除按钮(每个工作流项)
- ✅ 刷新按钮
- ✅ 默认工作流标记
- ✅ 空状态提示
- ✅ 使用说明
UI 特性:
- 紧凑的卡片式布局
- 悬停效果
- 加载状态
- 错误提示
- 响应式设计
3. 数据结构更新
前端 formData.imageModel 新结构
imageModel: {
mode: 'local', // 'local' | 'cloud'
local: {
apiUrl: 'http://comfyui:8188',
websocketEnabled: true,
queueTimeout: 300,
defaultWorkflow: 'default_txt2img.json'
},
cloud: {
provider: 'dall-e',
apiUrl: 'https://api.openai.com/v1/images/generations',
apiKey: '',
model: 'dall-e-3'
}
}
📋 待完成的工作
1. 前端 UI 完善 ⚠️
当前 ApiConfig.jsx 中:
- ✅ 已导入
ComfyUIWorkflowManager组件 - ✅ 已在适当位置插入组件
- ❌ 需要添加模式切换 UI(本地/云端 Radio 卡片)
- ❌ 需要添加本地配置表单(apiUrl、websocket、timeout)
- ❌ 需要添加云端配置表单(provider、apiKey、model)
- ❌ 需要修改
handleChange支持嵌套结构
2. Store 更新 ⚠️
ApiConfigSlice.jsx 需要:
- ❌ 更新
saveProfile以支持新的imageModel结构 - ❌ 添加
testComfyUIConnection方法 - ❌ 添加
testCloudConnection方法
3. 后端生图服务 ⚠️
需要创建:
- ❌
backend/services/image_generator.py- 统一的生图服务generate_image(prompt, config)- 主函数call_comfyui(prompt, local_config)- 调用 ComfyUIcall_cloud_api(prompt, cloud_config)- 调用云端 API- 工作流加载和提示词替换逻辑
4. 聊天集成 ⚠️
需要在聊天接口中:
- ❌ 检测用户想要生图的意图
- ❌ 提取提示词
- ❌ 读取 imageModel 配置
- ❌ 调用生图服务
- ❌ 返回图片 URL 或 base64
🎯 下一步建议
优先级 1: 完善前端 UI
- 在
ApiConfig.jsx中添加模式切换 Radio 卡片 - 根据模式动态显示不同的配置表单
- 修改
handleChange支持嵌套路径 - 测试上传/删除工作流功能
优先级 2: 创建生图服务
- 创建
image_generator.py - 实现 ComfyUI 调用逻辑
- 实现云端 API 调用逻辑
- 添加错误处理和重试
优先级 3: 集成到聊天
- 在聊天路由中添加生图端点
- 实现意图识别(可选,或使用命令如
/imagine) - 测试完整流程
🔧 测试清单
后端测试
# 1. 测试列出工作流
curl http://localhost:8000/api/api-config/comfyui/workflows
# 2. 测试上传工作流
curl -X POST http://localhost:8000/api/api-config/comfyui/workflows/upload \
-F "file=@my_workflow.json"
# 3. 测试删除工作流
curl -X DELETE http://localhost:8000/api/api-config/comfyui/workflows/my_workflow.json
# 4. 测试获取工作流详情
curl http://localhost:8000/api/api-config/comfyui/workflows/default_txt2img.json
前端测试
- 打开 API 配置页面
- 切换到"🎨 生图"标签
- 看到工作流管理器
- 点击"导入工作流"上传 JSON
- 看到上传的工作流出现在列表中
- 点击删除按钮删除工作流
- 确认默认工作流不可删除
📝 使用说明
用户上传工作流
- 在 ComfyUI Web UI 中设计工作流
- 点击菜单 → "Save (API Format)"
- 保存为
.json文件 - 在本项目中点击"+ 导入工作流"
- 选择导出的 JSON 文件
- 上传成功后可在列表中看到
默认工作流
- 文件:
backend/data/comfyui_workflows/default_txt2img.json - 类型: 标准文生图
- 参数: 512x512, 20 steps, CFG 7, Euler sampler
- 不可删除
运行时提示词替换
后端会自动:
- 加载选定的工作流 JSON
- 找到第一个
CLIPTextEncode节点 - 将其
text字段替换为用户输入的提示词 - 发送到 ComfyUI
🎊 总结
已完成
- ✅ 后端工作流管理服务和 API
- ✅ 默认文生图工作流
- ✅ 前端工作流管理器组件
- ✅ 完整的 CRUD 功能
- ✅ 数据结构设计
待完成
- ⚠️ 前端模式切换 UI
- ⚠️ 生图服务实现
- ⚠️ 聊天集成
架构优势
- ✅ 前后端分离清晰
- ✅ 工作流由后端统一管理
- ✅ 前端只需配置连接信息
- ✅ 易于扩展新的工作流
- ✅ 安全性好(验证、备份、路径保护)
当前状态: 🟡 基础框架完成,等待 UI 完善和服务集成