---
name: canvas_workflow
description: 画布工作流的高级模式和最佳实践，用于创建复杂的多节点工作流
---

# 画布工作流技能

本技能提供创建复杂画布工作流的高级模式和最佳实践。

## 📚 知识资源

本技能配备了详细的参考文档和模板。请查看下方的 "Available Knowledge Resources" 列表（由系统自动生成），并根据需要使用 `read_file` 获取详情。

💡 **最佳实践**: 在构建复杂工作流前，建议先读取 `reference.md` 以掌握最新的节点类型和连接规则。

## 何时使用此技能

当你需要：
- 创建多步骤视频制作工作流
- 构建角色展示管道
- 设计分镜生成流程
- 实现批量内容生成
- 管理复杂的节点关系和布局

## 可用工具

### 工作流创建
- `create_workflow_chain` - 创建线性工作流链
- `duplicate_workflow` - 复制现有工作流

### 节点管理
- `create_node_group` - 创建节点组
- `update_node_properties` - 更新节点属性
- `connect_nodes` - 连接节点
- `delete_nodes` - 删除节点

### 画布查询
- `get_canvas_state` - 获取画布状态
- `find_nodes_by_type` - 按类型查找节点

### 高级操作
- `batch_generate` - 批量生成内容
- `apply_template` - 应用模板
- `auto_layout_nodes` - 自动布局节点

## 节点类型

### PROMPT_INPUT（提示词输入）
**用途**：接收用户输入的文本提示词

**典型配置**：
```json
{
  "type": "PROMPT_INPUT",
  "data": {
    "prompt": "用户输入的提示词",
    "label": "提示词输入"
  }
}
```

**使用场景**：
- 工作流的起点
- 接收用户描述
- 作为后续节点的输入源

### PROMPT_GENERATOR（提示词生成器）
**用途**：优化和扩展提示词

**典型配置**：
```json
{
  "type": "PROMPT_GENERATOR",
  "data": {
    "style": "anime",
    "quality_keywords": true,
    "label": "提示词优化"
  }
}
```

**使用场景**：
- 提示词优化
- 添加质量关键词
- 风格转换

### IMAGE_GENERATOR（图像生成器）
**用途**：生成图像

**典型配置**：
```json
{
  "type": "IMAGE_GENERATOR",
  "data": {
    "model": "z-image",
    "size": "1024x1024",
    "steps": 30,
    "label": "图像生成"
  }
}
```

**使用场景**：
- 角色设计
- 场景背景
- 概念图生成

### VIDEO_GENERATOR（视频生成器）
**用途**：生成视频

**典型配置**：
```json
{
  "type": "VIDEO_GENERATOR",
  "data": {
    "model": "wan2.6-video",
    "duration": 6,
    "size": "1280x720",
    "mode": "text_to_video",
    "label": "视频生成"
  }
}
```

**使用场景**：
- 文生视频
- 图生视频
- 动画制作

### VIDEO_ANALYZER（视频分析器）
**用途**：分析视频内容

**典型配置**：
```json
{
  "type": "VIDEO_ANALYZER",
  "data": {
    "analysis_type": "content",
    "label": "视频分析"
  }
}
```

**使用场景**：
- 视频质量检查
- 内容理解
- 元数据提取

### AUDIO_GENERATOR（音频生成器）
**用途**：生成音频/语音

**典型配置**：
```json
{
  "type": "AUDIO_GENERATOR",
  "data": {
    "voice": "female_01",
    "text": "要转换的文本",
    "label": "语音合成"
  }
}
```

**使用场景**：
- 配音生成
- 旁白制作
- 音效添加

### INFO_DISPLAY（信息展示）
**用途**：显示信息和结果

**典型配置**：
```json
{
  "type": "INFO_DISPLAY",
  "data": {
    "content": "显示的信息",
    "label": "结果展示"
  }
}
```

**使用场景**：
- 工作流输出
- 中间结果展示
- 状态信息

### IMAGE_EDITOR（图像编辑器）
**用途**：编辑和处理图像

**典型配置**：
```json
{
  "type": "IMAGE_EDITOR",
  "data": {
    "operation": "resize",
    "params": {"width": 1024, "height": 1024},
    "label": "图像处理"
  }
}
```

**使用场景**：
- 图像调整
- 滤镜应用
- 图像合成

## 工作流模式

### 模式 1: 文生图工作流
```
PROMPT_INPUT → PROMPT_GENERATOR → IMAGE_GENERATOR → INFO_DISPLAY
```

**适用场景**：
- 单张图像生成
- 快速概念验证
- 角色/场景设计

**示例调用**：
```python
create_workflow_chain(
    workflow_type="text_to_image",
    start_prompt="一位年轻的魔法师",
    style="anime",
    image_model="z-image"
)
```

### 模式 2: 文生视频工作流
```
PROMPT_INPUT → PROMPT_GENERATOR → VIDEO_GENERATOR → INFO_DISPLAY
```

**适用场景**：
- 直接从文本生成视频
- 动画短片制作
- 快速原型

**示例调用**：
```python
create_workflow_chain(
    workflow_type="text_to_video",
    start_prompt="一只小猫在草地上玩耍",
    video_model="wan2.6-video",
    duration=6
)
```

### 模式 3: 图生视频工作流
```
PROMPT_INPUT → IMAGE_GENERATOR → VIDEO_GENERATOR → INFO_DISPLAY
```

**适用场景**：
- 静态图转动画
- 角色动起来
- 场景添加动态

**示例调用**：
```python
create_workflow_chain(
    workflow_type="image_to_video",
    start_prompt="一位站立的女性角色",
    image_model="z-image",
    video_model="wan2.6-video",
    video_prompt="角色微笑并挥手"
)
```

### 模式 4: 角色展示工作流
```
PROMPT_INPUT → PROMPT_GENERATOR → [多个 IMAGE_GENERATOR] → INFO_DISPLAY
```

**适用场景**：
- 角色多角度展示
- 表情包生成
- 设计方案对比

**示例调用**：
```python
# 创建基础工作流
create_workflow_chain(workflow_type="character_showcase", ...)

# 添加多个图像生成节点
create_node_group(
    nodes=[
        {"type": "IMAGE_GENERATOR", "data": {"prompt": "正面"}},
        {"type": "IMAGE_GENERATOR", "data": {"prompt": "侧面"}},
        {"type": "IMAGE_GENERATOR", "data": {"prompt": "背面"}}
    ]
)
```

### 模式 5: 分镜制作工作流
```
PROMPT_INPUT → [多个 PROMPT_GENERATOR] → [多个 IMAGE_GENERATOR] → [多个 VIDEO_GENERATOR]
```

**适用场景**：
- 视频分镜设计
- 故事板制作
- 多场景视频

**特点**：
- 多个并行分支
- 复杂的节点关系
- 需要精细的布局管理

## 节点连接规则

### 有效连接

✅ **PROMPT_INPUT → PROMPT_GENERATOR**
- 提示词输入到优化

✅ **PROMPT_GENERATOR → IMAGE_GENERATOR**
- 优化后的提示词生成图像

✅ **PROMPT_GENERATOR → VIDEO_GENERATOR**
- 优化后的提示词生成视频

✅ **IMAGE_GENERATOR → VIDEO_GENERATOR**
- 图像转视频

✅ **IMAGE_GENERATOR → IMAGE_EDITOR**
- 图像编辑处理

✅ **任何节点 → INFO_DISPLAY**
- 显示结果

### 无效连接

❌ **VIDEO_GENERATOR → IMAGE_GENERATOR**
- 不能从视频直接生成图像

❌ **INFO_DISPLAY → 其他节点**
- 展示节点应该是终点

❌ **循环连接**
- 避免创建循环依赖

## 批量操作最佳实践

### 批量生成图像

**场景**：需要生成多个相似的图像

**方法**：
```python
batch_generate(
    node_ids=["img_gen_1", "img_gen_2", "img_gen_3"],
    batch_size=3,
    parallel=True
)
```

**优势**：
- 并行处理，速度快
- 统一管理
- 结果一致性

### 批量更新节点

**场景**：需要修改多个节点的相同属性

**方法**：
```python
# 先查找节点
nodes = find_nodes_by_type("IMAGE_GENERATOR")

# 批量更新
for node in nodes:
    update_node_properties(
        node_id=node["id"],
        properties={"model": "wan2.6-image"}
    )
```

## 布局管理

### 自动布局

**何时使用**：
- 节点数量多
- 关系复杂
- 需要快速整理

**调用方式**：
```python
auto_layout_nodes(
    layout_type="hierarchical",  # 或 "grid", "force"
    direction="TB"  # Top to Bottom
)
```

**布局类型**：
- `hierarchical` - 层次布局（推荐用于工作流）
- `grid` - 网格布局（推荐用于展示）
- `force` - 力导向布局（推荐用于复杂关系）

### 手动布局

**何时使用**：
- 需要精确控制位置
- 特殊的视觉需求
- 小规模工作流

**方法**：
```python
update_node_properties(
    node_id="node_1",
    properties={
        "position": {"x": 100, "y": 100}
    }
)
```

## 模板使用

### 应用模板

**可用模板**：
- `character_sheet` - 角色设定表
- `scene_breakdown` - 场景分解
- `video_production` - 视频制作
- `asset_library` - 资产库

**使用方式**：
```python
apply_template(
    template_name="character_sheet",
    parameters={
        "character_name": "艾莉丝",
        "style": "anime"
    }
)
```

**模板优势**：
- 快速启动
- 标准化流程
- 最佳实践内置

## 工作流复制和修改

### 复制工作流

**场景**：
- 创建相似的工作流
- 测试不同参数
- 版本管理

**方法**：
```python
duplicate_workflow(
    source_workflow_id="workflow_1",
    modifications={
        "style": "realistic",
        "model": "wan2.6-image"
    }
)
```

### 增量修改

**场景**：
- 在现有工作流基础上扩展
- 添加新的处理步骤
- 优化现有流程

**方法**：
1. 获取当前状态：`get_canvas_state()`
2. 添加新节点：`create_node_group(...)`
3. 连接节点：`connect_nodes(...)`
4. 重新布局：`auto_layout_nodes(...)`

## 常见问题处理

### 问题 1: 节点连接失败

**原因**：
- 连接类型不兼容
- 节点 ID 不存在
- 创建了循环依赖

**解决方案**：
1. 检查节点类型是否支持连接
2. 使用 `get_canvas_state()` 确认节点存在
3. 避免循环连接

### 问题 2: 工作流执行卡住

**原因**：
- 节点配置错误
- 缺少必要的输入
- 模型服务不可用

**解决方案**：
1. 检查每个节点的配置
2. 确保所有必需字段都已填写
3. 测试模型服务可用性

### 问题 3: 布局混乱

**原因**：
- 节点位置重叠
- 连接线交叉
- 缺少层次结构

**解决方案**：
1. 使用 `auto_layout_nodes()` 自动整理
2. 选择合适的布局类型
3. 手动调整关键节点位置

### 问题 4: 批量操作失败

**原因**：
- 某个节点配置错误
- 资源限制
- 并发冲突

**解决方案**：
1. 逐个测试节点
2. 减少并行数量
3. 添加错误处理

## 性能优化建议

### 1. 合理使用并行

**推荐**：
- 独立的图像生成可以并行
- 视频生成建议串行（资源密集）

**示例**：
```python
# 好：并行生成多张图像
batch_generate(
    node_ids=["img1", "img2", "img3"],
    parallel=True
)

# 避免：并行生成多个视频（可能导致资源不足）
```

### 2. 复用节点

**推荐**：
- 相同配置的节点可以复用
- 使用 `duplicate_workflow` 而不是重新创建

### 3. 延迟加载

**推荐**：
- 先创建工作流结构
- 需要时再执行生成
- 避免一次性生成所有内容

### 4. 清理无用节点

**推荐**：
- 定期删除测试节点
- 保持画布整洁
- 使用 `delete_nodes()` 批量清理

## 高级技巧

### 技巧 1: 条件分支

虽然没有直接的条件节点，但可以通过创建多个并行分支实现：

```python
# 创建两个分支
create_node_group([
    {"type": "IMAGE_GENERATOR", "data": {"style": "anime"}},
    {"type": "IMAGE_GENERATOR", "data": {"style": "realistic"}}
])
```

### 技巧 2: 迭代优化

创建反馈循环（通过手动操作）：

1. 生成初始结果
2. 查看结果
3. 调整参数
4. 重新生成
5. 比较结果

### 技巧 3: 模块化设计

将复杂工作流分解为多个小模块：

```python
# 模块 1: 角色生成
create_workflow_chain(workflow_type="character_generation", ...)

# 模块 2: 场景生成
create_workflow_chain(workflow_type="scene_generation", ...)

# 模块 3: 合成
create_workflow_chain(workflow_type="composition", ...)
```

### 技巧 4: 版本管理

使用复制功能管理不同版本：

```python
# 创建版本 1
workflow_v1 = create_workflow_chain(...)

# 创建版本 2（基于 v1）
workflow_v2 = duplicate_workflow(
    source_workflow_id=workflow_v1,
    modifications={...}
)
```

## 与其他技能协作

### 与 creative_generation 协作

画布工作流提供结构，creative_generation 提供生成指导：

```
1. 使用 canvas_workflow 创建工作流结构
2. 使用 creative_generation 的提示词优化建议
3. 使用 creative_generation 的参数选择建议
4. 在画布上执行生成
```

### 与 project_management 协作

将工作流与项目资产关联：

```
1. 使用 project_management 创建项目
2. 使用 canvas_workflow 创建生成工作流
3. 将生成的内容添加到项目资产库
4. 使用项目管理功能组织和分类
```

## 工作流示例

### 示例 1: 角色设计流程

```
目标：设计一个动漫角色的多个版本

步骤：
1. create_workflow_chain(workflow_type="character_showcase")
2. 输入基础描述："年轻女性魔法师"
3. 生成 3 个不同风格的版本
4. 选择最佳版本
5. 基于选择的版本生成细节图
```

### 示例 2: 视频分镜制作

```
目标：制作一个 3 镜头的短视频

步骤：
1. 创建 3 个并行的文生视频工作流
2. 每个工作流对应一个镜头
3. 配置不同的提示词和参数
4. 批量生成
5. 在画布上预览和调整
```

### 示例 3: 场景探索

```
目标：探索一个场景的不同时间和天气

步骤：
1. 创建基础场景提示词
2. 创建多个图像生成节点
3. 每个节点添加不同的时间/天气描述
4. 使用网格布局展示所有变体
5. 选择最佳方案进行视频化
```
