14 KiB
14 KiB
ComfyUI SDK 完全重写集成计划
📋 项目概述
目标: 完全基于 cargos/comfyui-sdk 重新实现 MixVideo 项目的 ComfyUI 集成,构建现代化、高性能的 AI 工作流管理系统。
核心优势:
- 🚀 充分利用 SDK 的所有高级功能
- 🔄 WebSocket 实时通信和进度跟踪
- 📝 强大的模板系统和参数验证
- 🛡️ 类型安全和错误处理
- ⚡ 连接池和性能优化
- 🎯 统一的架构设计
预计工期: 3-4 周 风险等级: 中等 (需要充分测试)
🏗️ 架构设计
新架构概览
Frontend (React + TypeScript)
↓ Tauri Invoke
Backend (Rust + ComfyUI SDK)
├── Presentation Layer (Commands)
├── Business Layer (Services)
├── Data Layer (Models + Database)
└── Infrastructure Layer (ComfyUI SDK)
核心组件
- ComfyUIManager: 统一的 SDK 管理器
- TemplateEngine: 工作流模板引擎
- ExecutionEngine: 工作流执行引擎
- RealtimeMonitor: 实时状态监控
- CacheManager: 智能缓存管理
📅 详细开发计划
第一阶段: 基础架构重构 (第1周)
🎯 目标
建立全新的基于 SDK 的基础架构,替换现有的传统实现。
📋 任务清单
1.1 数据模型重新设计 (2天)
- 删除旧模型: 移除
apps/desktop/src-tauri/src/data/models/comfyui.rs - 创建新模型: 基于 SDK 类型创建统一数据模型
WorkflowModel: 工作流数据模型TemplateModel: 模板数据模型ExecutionModel: 执行记录模型QueueModel: 队列状态模型
- 数据库迁移: 设计新的数据库表结构
comfyui_workflows表comfyui_templates表comfyui_executions表comfyui_queue_history表
1.2 核心服务重构 (3天)
- 删除旧服务: 移除现有的 ComfyUI 服务实现
- 删除
comfyui_service.rs - 删除
comfyui_sdk_service.rs
- 删除
- 创建 ComfyUIManager: 统一的 SDK 管理器
- 连接管理和健康检查
- 配置管理和验证
- 错误处理和重试机制
- 创建 TemplateEngine: 模板管理引擎
- 模板加载和验证
- 参数解析和验证
- 模板实例化
- 创建 ExecutionEngine: 执行引擎
- 工作流执行管理
- 队列管理
- 结果处理
1.3 配置系统重构 (1天)
- 统一配置结构: 基于 SDK 配置重新设计
- 配置验证: 添加配置有效性检查
- 环境适配: 支持开发/生产环境配置
1.4 错误处理系统 (1天)
- 统一错误类型: 基于 SDK 错误类型设计
- 错误映射: SDK 错误到应用错误的映射
- 错误恢复: 自动重试和降级策略
🧪 测试要求
- 单元测试覆盖率 > 80%
- 集成测试验证基础功能
- 性能基准测试
第二阶段: 命令层重写 (第2周)
🎯 目标
重新实现所有 Tauri 命令,提供完整的前端 API 接口。
📋 任务清单
2.1 基础命令重写 (2天)
- 连接管理命令
comfyui_connect: 连接到 ComfyUI 服务comfyui_disconnect: 断开连接comfyui_health_check: 健康检查comfyui_get_system_info: 获取系统信息
2.2 工作流管理命令 (2天)
- 工作流 CRUD 命令
comfyui_list_workflows: 获取工作流列表comfyui_get_workflow: 获取单个工作流comfyui_create_workflow: 创建工作流comfyui_update_workflow: 更新工作流comfyui_delete_workflow: 删除工作流
2.3 模板管理命令 (2天)
- 模板系统命令
comfyui_list_templates: 获取模板列表comfyui_get_template: 获取模板详情comfyui_validate_template: 验证模板comfyui_create_template_instance: 创建模板实例
2.4 执行管理命令 (1天)
- 执行控制命令
comfyui_execute_workflow: 执行工作流comfyui_execute_template: 执行模板comfyui_cancel_execution: 取消执行comfyui_get_execution_status: 获取执行状态
🧪 测试要求
- 每个命令的单元测试
- 命令集成测试
- 错误场景测试
第三阶段: 实时通信与高级功能 (第3周)
🎯 目标
实现 WebSocket 实时通信和高级功能,提供完整的用户体验。
📋 任务清单
3.1 WebSocket 实时通信 (3天)
- 实时监控服务
- WebSocket 连接管理
- 事件订阅和分发
- 进度更新推送
- 前端实时更新
- 实时状态显示
- 进度条更新
- 错误实时提醒
3.2 队列管理系统 (2天)
- 队列监控
- 队列状态实时更新
- 任务优先级管理
- 队列统计信息
- 批量操作
- 批量提交任务
- 批量取消任务
- 批量状态查询
3.3 缓存和性能优化 (2天)
- 智能缓存
- 工作流结果缓存
- 模板缓存
- 连接池管理
- 性能监控
- 执行时间统计
- 资源使用监控
- 性能指标收集
🧪 测试要求
- WebSocket 连接稳定性测试
- 高并发场景测试
- 性能压力测试
第四阶段: 前端重构与UI优化 (第4周)
🎯 目标
重构前端代码,提供现代化的用户界面和交互体验。
📋 任务清单
4.1 类型定义更新 (1天)
- TypeScript 类型重写
- 基于新后端 API 更新类型定义
- 添加 SDK 特有的类型
- 类型安全验证
4.2 服务层重构 (2天)
- 前端服务重写
- 重写
ComfyuiService类 - 添加实时通信支持
- 错误处理优化
- 重写
- 状态管理优化
- Zustand store 重构
- 实时状态同步
- 缓存策略实现
4.3 UI 组件优化 (3天)
- 核心组件重构
- 工作流管理界面
- 模板选择器
- 执行监控面板
- 实时进度显示
- 用户体验优化
- 加载状态优化
- 错误提示改进
- 响应式设计完善
4.4 高级功能界面 (1天)
- 新功能界面
- 模板编辑器
- 批量操作界面
- 性能监控面板
- 队列管理界面
🧪 测试要求
- 组件单元测试
- E2E 测试覆盖
- 用户体验测试
🗂️ 文件结构规划
后端文件结构
apps/desktop/src-tauri/src/
├── business/
│ ├── services/
│ │ ├── comfyui_manager.rs # 核心管理器
│ │ ├── template_engine.rs # 模板引擎
│ │ ├── execution_engine.rs # 执行引擎
│ │ └── realtime_monitor.rs # 实时监控
│ └── models/
│ └── comfyui/ # 新的数据模型
├── data/
│ ├── repositories/
│ │ └── comfyui_repository.rs # 数据访问层
│ └── migrations/
│ └── comfyui_tables.sql # 数据库迁移
├── presentation/
│ └── commands/
│ └── comfyui_commands.rs # 重写的命令
└── infrastructure/
└── comfyui/ # SDK 集成层
前端文件结构
apps/desktop/src/
├── services/
│ └── comfyuiService.ts # 重写的服务
├── types/
│ └── comfyui.ts # 更新的类型定义
├── components/
│ ├── ComfyUI/ # ComfyUI 相关组件
│ │ ├── WorkflowManager.tsx
│ │ ├── TemplateSelector.tsx
│ │ ├── ExecutionMonitor.tsx
│ │ └── RealtimeProgress.tsx
│ └── common/ # 通用组件
├── pages/
│ ├── ComfyUIManagement.tsx # 重构的管理页面
│ └── ComfyUIWorkflowTest.tsx # 重构的测试页面
└── store/
└── comfyuiStore.ts # 重构的状态管理
⚠️ 风险评估与应对策略
高风险项
-
数据迁移风险
- 风险: 现有数据丢失或损坏
- 应对: 完整的数据备份和迁移脚本测试
-
功能兼容性风险
- 风险: 新实现与现有功能不兼容
- 应对: 详细的功能对比测试
-
性能回退风险
- 风险: 新实现性能不如旧版本
- 应对: 性能基准测试和优化
中等风险项
-
开发周期延长
- 风险: 复杂度超出预期
- 应对: 分阶段交付,及时调整计划
-
用户体验变化
- 风险: 用户不适应新界面
- 应对: 渐进式界面更新,保留熟悉元素
应对措施
- 每周进行风险评估
- 建立回滚机制
- 充分的测试覆盖
- 用户反馈收集
📊 成功指标
技术指标
- 代码覆盖率 > 85%
- API 响应时间 < 200ms
- WebSocket 连接稳定性 > 99%
- 内存使用优化 > 20%
功能指标
- 支持所有现有功能
- 新增实时监控功能
- 新增模板管理功能
- 新增批量操作功能
用户体验指标
- 界面响应速度提升 > 30%
- 错误率降低 > 50%
- 用户操作步骤减少 > 20%
🚀 开始执行
立即行动项
- 确认开发计划和时间安排
- 备份现有代码和数据
- 创建开发分支
feature/comfyui-sdk-rewrite - 开始第一阶段开发
每日检查项
- 代码提交和备份
- 测试执行和结果记录
- 进度更新和风险评估
- 团队沟通和问题解决
📝 实施细节补充
关键技术决策
1. 数据库设计
-- 工作流表
CREATE TABLE comfyui_workflows (
id TEXT PRIMARY KEY,
name TEXT NOT NULL,
description TEXT,
workflow_data TEXT NOT NULL, -- JSON
version TEXT DEFAULT '1.0',
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
-- 模板表
CREATE TABLE comfyui_templates (
id TEXT PRIMARY KEY,
name TEXT NOT NULL,
category TEXT,
description TEXT,
template_data TEXT NOT NULL, -- JSON
parameter_schema TEXT NOT NULL, -- JSON
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
-- 执行记录表
CREATE TABLE comfyui_executions (
id TEXT PRIMARY KEY,
workflow_id TEXT,
template_id TEXT,
prompt_id TEXT,
status TEXT NOT NULL, -- pending, running, completed, failed
parameters TEXT, -- JSON
results TEXT, -- JSON
error_message TEXT,
execution_time INTEGER, -- milliseconds
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
completed_at DATETIME
);
2. 核心服务接口设计
// ComfyUIManager 核心接口
pub trait ComfyUIManagerTrait {
async fn connect(&mut self) -> Result<()>;
async fn disconnect(&mut self) -> Result<()>;
async fn is_connected(&self) -> bool;
async fn get_system_info(&self) -> Result<SystemInfo>;
async fn health_check(&self) -> Result<HealthStatus>;
}
// TemplateEngine 接口
pub trait TemplateEngineTrait {
async fn load_template(&self, id: &str) -> Result<WorkflowTemplate>;
async fn validate_parameters(&self, template_id: &str, params: &ParameterValues) -> Result<ValidationResult>;
async fn create_instance(&self, template_id: &str, params: ParameterValues) -> Result<WorkflowInstance>;
}
// ExecutionEngine 接口
pub trait ExecutionEngineTrait {
async fn execute_workflow(&self, workflow: &WorkflowInstance) -> Result<ExecutionResult>;
async fn execute_template(&self, template_id: &str, params: ParameterValues) -> Result<ExecutionResult>;
async fn cancel_execution(&self, execution_id: &str) -> Result<()>;
async fn get_execution_status(&self, execution_id: &str) -> Result<ExecutionStatus>;
}
3. 错误处理策略
#[derive(Debug, thiserror::Error)]
pub enum ComfyUIError {
#[error("Connection error: {0}")]
Connection(String),
#[error("Template error: {0}")]
Template(String),
#[error("Execution error: {0}")]
Execution(String),
#[error("Validation error: {0}")]
Validation(String),
#[error("SDK error: {0}")]
Sdk(#[from] comfyui_sdk::error::ComfyUIError),
}
开发环境准备
必需工具
- Rust 1.70+
- Node.js 18+
- PNPM 8+
- SQLite 3
- ComfyUI 服务器 (用于测试)
开发配置
# Cargo.toml 依赖更新
[dependencies]
comfyui-sdk = { path = "../../../cargos/comfyui-sdk", features = ["websocket", "templates"] }
tokio = { version = "1.0", features = ["full"] }
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
anyhow = "1.0"
thiserror = "1.0"
tracing = "0.1"
sqlx = { version = "0.7", features = ["runtime-tokio-rustls", "sqlite", "chrono"] }
测试策略
单元测试
#[cfg(test)]
mod tests {
use super::*;
#[tokio::test]
async fn test_comfyui_manager_connect() {
// 测试连接功能
}
#[tokio::test]
async fn test_template_validation() {
// 测试模板验证
}
#[tokio::test]
async fn test_workflow_execution() {
// 测试工作流执行
}
}
集成测试
- 端到端工作流测试
- WebSocket 连接测试
- 数据库操作测试
- 错误恢复测试
部署和发布
发布检查清单
- 所有测试通过
- 性能指标达标
- 文档更新完成
- 用户反馈收集
- 回滚方案准备
发布策略
- Alpha 版本: 内部测试 (第2周末)
- Beta 版本: 小范围用户测试 (第3周末)
- 正式版本: 全量发布 (第4周末)
📞 联系和支持
技术支持
- 开发问题: 查看项目 Issues
- SDK 问题: 参考
cargos/comfyui-sdk/README.md - 架构问题: 联系架构师
文档资源
- API 文档:
docs/api/comfyui.md - 开发指南:
docs/development/comfyui-integration.md - 故障排除:
docs/troubleshooting/comfyui.md
最后更新: 2025-01-08 负责人: 开发团队 审核人: 项目经理 版本: v1.0
💡 提示: 这是一个完全重写的计划,需要充分的准备和测试。建议在开始前进行详细的技术评审和团队讨论。
⚠️ 重要: 开始开发前请务必备份现有代码和数据,并创建独立的开发分支。