---
name: structured-orchestrate
description: 结构化编排工作流示例 - 演示多Agent协同工作
version: "1.0"
author: "Foliko Team"
steps:
  - type: sequential
    name: 规划阶段
    steps:
      - type: agent
        name: 项目规划
        agentName: project-planner
        inputTemplate: |
          请为以下任务创建详细的项目计划：

          任务：{{task}}

          要求：
          1. 创建 docs/PLAN.md 文件
          2. 包含技术栈选择
          3. 包含实施步骤
          4. 包含时间估算
        outputVariable: planResult

      - type: condition
        name: 检查计划是否存在
        condition: "ctx.variables.planResult && ctx.variables.planResult.output && ctx.variables.planResult.output.includes('PLAN.md')"
        trueSteps:
          - type: agent
            name: 请求用户批准
            agentName: product-owner
            inputTemplate: |
              计划已创建：docs/PLAN.md

              计划摘要：
              {{vars.planResult.output}}

              请确认是否批准执行？(Y/N)
            outputVariable: approvalResult

  - type: condition
    name: 检查用户批准
    condition: "ctx.variables.approvalResult && ctx.variables.approvalResult.output && ctx.variables.approvalResult.output.includes('Y')"
    trueSteps:
      - type: parallel
        name: 并行实施阶段
        steps:
          - type: agent
            name: 前端开发
            agentName: frontend-specialist
            inputTemplate: |
              基于以下计划实施前端部分：

              任务：{{task}}
              计划：{{vars.planResult.output}}

              请开始前端实现。
            outputVariable: frontendResult

          - type: agent
            name: 后端开发
            agentName: backend-specialist
            inputTemplate: |
              基于以下计划实施后端部分：

              任务：{{task}}
              计划：{{vars.planResult.output}}

              请开始后端实现。
            outputVariable: backendResult

          - type: agent
            name: 数据库设计
            agentName: database-architect
            inputTemplate: |
              基于以下计划设计数据库：

              任务：{{task}}
              计划：{{vars.planResult.output}}

              请设计数据库 schema。
            outputVariable: dbResult

      - type: sequential
        name: 测试和验证
        steps:
          - type: skill
            name: 运行安全扫描
            skillName: vulnerability-scanner
            scriptName: security_scan.py
            args: "."
            outputVariable: securityScanResult

          - type: skill
            name: 运行代码检查
            skillName: lint-and-validate
            scriptName: lint_runner.py
            args: "."
            outputVariable: lintResult

          - type: agent
            name: 测试工程师
            agentName: test-engineer
            inputTemplate: |
              请执行测试验证：

              前端结果：{{vars.frontendResult ? '完成' : '未完成'}}
              后端结果：{{vars.backendResult ? '完成' : '未完成'}}
              数据库结果：{{vars.dbResult ? '完成' : '未完成'}}

              安全扫描：{{vars.securityScanResult ? '完成' : '未完成'}}
              代码检查：{{vars.lintResult ? '完成' : '未完成'}}

              请执行全面的测试。
            outputVariable: testResult

  - type: agent
    name: 生成最终报告
    agentName: product-owner
    inputTemplate: |
      请生成最终项目报告：

      任务：{{task}}

      执行结果：
      - 规划：{{vars.planResult ? '完成' : '未完成'}}
      - 前端：{{vars.frontendResult ? '完成' : '未完成'}}
      - 后端：{{vars.backendResult ? '完成' : '未完成'}}
      - 数据库：{{vars.dbResult ? '完成' : '未完成'}}
      - 安全扫描：{{vars.securityScanResult ? '完成' : '未完成'}}
      - 代码检查：{{vars.lintResult ? '完成' : '未完成'}}
      - 测试：{{vars.testResult ? '完成' : '未完成'}}

      请提供项目总结和下一步建议。
    outputVariable: finalReport

variables:
  defaultTask: "开发一个简单的任务管理应用"
parameters:
  - name: task
    description: 项目任务描述
    required: true
    default: "开发一个简单的任务管理应用"
timeout: 600000
---

# 结构化编排工作流

这是一个结构化工作流示例，演示如何使用工作流引擎协调多个Agent。

## 工作流说明

此工作流模拟完整的软件开发流程：
1. **规划阶段**：使用 project-planner 创建项目计划
2. **用户批准**：请求用户确认计划
3. **并行实施**：前端、后端、数据库同时开发
4. **测试验证**：运行安全检查、代码检查、综合测试
5. **报告生成**：生成最终项目报告

## 使用方法

通过Agent的`executeWorkflow`方法调用：

```javascript
await agent.executeWorkflow('structured-orchestrate', {
  task: '开发一个用户认证系统'
});
```

## 技术要点

- 使用结构化JSON步骤定义
- 支持条件分支
- 支持并行执行
- 变量传递和模板渲染
- 技能调用集成

## 向后兼容

此文件同时包含结构化步骤（在frontmatter中）和传统的Markdown描述，确保与现有系统兼容。