工作流定义示例
本文档提供LingFlow工作流定义的详细示例和最佳实践。
目录
基础工作流
最小工作流
完整工作流
name: "完整CI/CD流程"
description: "从代码检查到部署的完整流程"
version: "1.0"
# 全局参数
params:
project_root: "."
timeout: 3600
# 任务定义
tasks:
- name: "代码检查"
agent: "code_reviewer"
skill: "static_analysis"
params:
target: "{{ params.project_root }}/src"
severity: "warning"
- name: "运行测试"
agent: "tester"
skill: "run_tests"
depends_on: ["代码检查"]
params:
test_path: "{{ params.project_root }}/tests"
coverage: true
- name: "构建"
agent: "builder"
skill: "build"
depends_on: ["运行测试"]
params:
output: "{{ params.project_root }}/dist"
- name: "部署"
agent: "deployer"
skill: "deploy"
depends_on: ["构建"]
params:
environment: "production"
任务依赖
串行依赖
name: "串行执行"
tasks:
- name: "步骤1"
agent: "agent1"
skill: "skill1"
- name: "步骤2"
agent: "agent2"
skill: "skill2"
depends_on: ["步骤1"]
- name: "步骤3"
agent: "agent3"
skill: "skill3"
depends_on: ["步骤2"]
多重依赖
name: "多重依赖"
tasks:
- name: "基础构建"
agent: "builder"
skill: "build"
params:
target: "core"
- name: "前端构建"
agent: "builder"
skill: "build"
params:
target: "frontend"
depends_on: ["基础构建"]
- name: "后端构建"
agent: "builder"
skill: "build"
params:
target: "backend"
depends_on: ["基础构建"]
- name: "集成测试"
agent: "tester"
skill: "integration_test"
depends_on: ["前端构建", "后端构建"]
并行执行
独立并行任务
name: "并行测试"
tasks:
- name: "单元测试"
agent: "tester"
skill: "run_tests"
params:
test_path: "tests/unit/"
- name: "集成测试"
agent: "tester"
skill: "run_tests"
params:
test_path: "tests/integration/"
- name: "E2E测试"
agent: "tester"
skill: "run_tests"
params:
test_path: "tests/e2e/"
并行后汇聚
name: "并行处理"
tasks:
- name: "数据处理A"
agent: "processor"
skill: "process"
params:
input: "data_a.csv"
- name: "数据处理B"
agent: "processor"
skill: "process"
params:
input: "data_b.csv"
- name: "数据合并"
agent: "merger"
skill: "merge"
depends_on: ["数据处理A", "数据处理B"]
params:
sources: ["result_a.json", "result_b.json"]
output: "merged.json"
条件执行
基于结果的条件
name: "条件执行"
tasks:
- name: "代码检查"
agent: "code_reviewer"
skill: "static_analysis"
params:
target: "src/"
metadata:
continue_on_failure: true
- name: "修复警告"
agent: "fixer"
skill: "auto_fix"
depends_on: ["代码检查"]
condition: "{{ tasks.代码检查.issues | length > 0 }}"
params:
issues: "{{ tasks.代码检查.issues }}"
- name: "运行测试"
agent: "tester"
skill: "run_tests"
depends_on: ["代码检查", "修复警告"]
环境条件
name: "环境相关"
tasks:
- name: "开发部署"
agent: "deployer"
skill: "deploy"
condition: "{{ environment == 'development' }}"
params:
environment: "dev"
- name: "生产部署"
agent: "deployer"
skill: "deploy"
condition: "{{ environment == 'production' }}"
params:
environment: "prod"
approval: true
错误处理
失败重试
name: "带重试的工作流"
tasks:
- name: "API调用"
agent: "api_client"
skill: "call_api"
retry:
max_attempts: 3
backoff: exponential
initial_delay: 1
params:
endpoint: "https://api.example.com"
失败继续
name: "容错工作流"
tasks:
- name: "可选检查"
agent: "checker"
skill: "optional_check"
continue_on_failure: true
params:
target: "src/"
- name: "必需测试"
agent: "tester"
skill: "run_tests"
depends_on: ["可选检查"]
params:
test_path: "tests/"
回滚机制
name: "带回滚的部署"
tasks:
- name: "部署"
agent: "deployer"
skill: "deploy"
on_failure: "回滚"
params:
environment: "production"
- name: "验证"
agent: "validator"
skill: "validate_deployment"
depends_on: ["部署"]
on_failure: "回滚"
params:
timeout: 300
- name: "回滚"
agent: "deployer"
skill: "rollback"
run_if: "any_parent_failed"
params:
backup: true
高级特性
循环和批处理
name: "批处理"
tasks:
- name: "获取文件列表"
agent: "scanner"
skill: "scan_files"
params:
directory: "src/"
pattern: "*.py"
- name: "批量审查"
agent: "code_reviewer"
skill: "batch_review"
depends_on: ["获取文件列表"]
params:
files: "{{ tasks.获取文件列表.files }}"
batch_size: 10
参数传递
name: "参数传递"
tasks:
- name: "生成配置"
agent: "config_generator"
skill: "generate"
params:
environment: "production"
- name: "使用配置"
agent: "deployer"
skill: "deploy"
depends_on: ["生成配置"]
params:
config: "{{ tasks.生成配置.output }}"
- name: "验证"
agent: "validator"
skill: "validate"
depends_on: ["使用配置"]
params:
deployment_id: "{{ tasks.使用配置.deployment_id }}"
动态任务生成
name: "动态任务"
tasks:
- name: "发现测试"
agent: "discoverer"
skill: "discover_tests"
params:
test_directory: "tests/"
- name: "运行发现的测试"
agent: "tester"
skill: "run_test"
depends_on: ["发现测试"]
dynamic: true
params:
test: "{{ item }}"
items: "{{ tasks.发现测试.tests }}"
实际场景示例
场景1: 微服务部署
name: "微服务部署流水线"
description: "部署多个微服务并验证"
tasks:
# 准备阶段
- name: "构建所有服务"
agent: "builder"
skill: "build_all"
params:
services: ["auth", "api", "worker", "frontend"]
# 部署阶段(并行)
- name: "部署认证服务"
agent: "deployer"
skill: "deploy_service"
depends_on: ["构建所有服务"]
params:
service: "auth"
replicas: 3
- name: "部署API服务"
agent: "deployer"
skill: "deploy_service"
depends_on: ["构建所有服务"]
params:
service: "api"
replicas: 5
- name: "部署Worker服务"
agent: "deployer"
skill: "deploy_service"
depends_on: ["构建所有服务"]
params:
service: "worker"
replicas: 10
# 验证阶段
- name: "健康检查"
agent: "monitor"
skill: "health_check"
depends_on: ["部署认证服务", "部署API服务", "部署Worker服务"]
params:
services: ["auth", "api", "worker"]
timeout: 300
- name: "集成测试"
agent: "tester"
skill: "integration_test"
depends_on: ["健康检查"]
params:
test_suite: "microservice"
场景2: 数据处理管道
name: "ETL数据管道"
description: "提取、转换、加载数据"
tasks:
# 提取
- name: "提取源数据A"
agent: "extractor"
skill: "extract"
params:
source: "database_a"
query: "SELECT * FROM users"
- name: "提取源数据B"
agent: "extractor"
skill: "extract"
params:
source: "api_b"
endpoint: "/data/export"
# 转换(并行)
- name: "清洗数据A"
agent: "transformer"
skill: "clean"
depends_on: ["提取源数据A"]
params:
input: "{{ tasks.提取源数据A.output }}"
rules: "cleaning_rules_a.yaml"
- name: "清洗数据B"
agent: "transformer"
skill: "clean"
depends_on: ["提取源数据B"]
params:
input: "{{ tasks.提取源数据B.output }}"
rules: "cleaning_rules_b.yaml"
# 合并
- name: "合并数据"
agent: "merger"
skill: "merge"
depends_on: ["清洗数据A", "清洗数据B"]
params:
sources:
- "{{ tasks.清洗数据A.output }}"
- "{{ tasks.清洗数据B.output }}"
strategy: "full_outer_join"
output: "merged_data.parquet"
# 加载
- name: "加载数据仓库"
agent: "loader"
skill: "load"
depends_on: ["合并数据"]
params:
source: "{{ tasks.合并数据.output }}"
destination: "data_warehouse"
table: "unified_data"
# 验证
- name: "数据质量检查"
agent: "validator"
skill: "validate_data"
depends_on: ["加载数据仓库"]
params:
table: "unified_data"
checks: "quality_rules.yaml"
场景3: 机器学习训练流程
name: "ML训练流程"
description: "数据准备、模型训练、评估和部署"
tasks:
# 数据准备
- name: "数据预处理"
agent: "data_engineer"
skill: "preprocess"
params:
raw_data: "data/raw/"
output: "data/processed/"
features: ["feature1", "feature2", "feature3"]
- name: "数据分割"
agent: "data_engineer"
skill: "split_data"
depends_on: ["数据预处理"]
params:
input: "{{ tasks.数据预处理.output }}"
train_ratio: 0.7
val_ratio: 0.15
test_ratio: 0.15
# 模型训练
- name: "超参数优化"
agent: "ml_engineer"
skill: "hyperparameter_tuning"
depends_on: ["数据分割"]
params:
train_data: "{{ tasks.数据分割.train }}"
val_data: "{{ tasks.数据分割.val }}"
n_trials: 100
timeout: 3600
- name: "训练最终模型"
agent: "ml_engineer"
skill: "train_model"
depends_on: ["超参数优化"]
params:
train_data: "{{ tasks.数据分割.train }}"
val_data: "{{ tasks.数据分割.val }}"
hyperparameters: "{{ tasks.超参数优化.best_params }}"
# 评估和部署
- name: "模型评估"
agent: "ml_engineer"
skill: "evaluate"
depends_on: ["训练最终模型"]
params:
model: "{{ tasks.训练最终模型.model }}"
test_data: "{{ tasks.数据分割.test }}"
metrics: ["accuracy", "precision", "recall", "f1"]
- name: "模型部署"
agent: "mlops"
skill: "deploy_model"
depends_on: ["模型评估"]
condition: "{{ tasks.模型评估.accuracy > 0.9 }}"
params:
model: "{{ tasks.训练最终模型.model }}"
environment: "production"
- name: "监控设置"
agent: "mlops"
skill: "setup_monitoring"
depends_on: ["模型部署"]
params:
model_id: "{{ tasks.模型部署.model_id }}"
metrics: ["prediction_latency", "model_drift"]
最佳实践
1. 模块化设计
# base.yaml - 基础检查
tasks:
- name: "预检查"
agent: "guard"
skill: "pre_check"
# tests.yaml - 测试套件
tasks:
- name: "单元测试"
agent: "tester"
skill: "unit_tests"
- name: "集成测试"
agent: "tester"
skill: "integration_tests"
# deploy.yaml - 部署流程
tasks:
- name: "部署"
agent: "deployer"
skill: "deploy"
2. 参数化
name: "参数化工作流"
params:
environment: "{{ env | default('development') }}"
version: "{{ version | default('latest') }}"
tasks:
- name: "部署"
agent: "deployer"
skill: "deploy"
params:
environment: "{{ params.environment }}"
version: "{{ params.version }}"
3. 版本控制
4. 文档化
name: "文档化的工作流"
description: |
这是一个完整的工作流示例,包含:
1. 代码检查
2. 测试执行
3. 构建
4. 部署
作者: DevOps团队
最后更新: 2026-03-31