OpenProse 工作流编排教程

advanced
## 什么是 OpenProse OpenProse 是 OpenClaw 的**Markdown 优先工作流编排系统**。它让你用简单的 Markdown 文件定义多步骤的自动化工作流,而不需要写代码。 > ⚠️ OpenProse 目前是**实验性功能**,API 和格式可能在未来版本中变化。 ### 设计理念 传统的工作流编排工具(如 Airflow、n8n)需要写代码或拖拽节点。OpenProse 的理念是: - **Markdown 优先**:用人类可读的 Markdown 定义工作流 - **LLM 原生**:每个步骤可以直接调用 AI 模型 - **可恢复**:支持中断和恢复,包括人工审批环节 - **类型安全**:步骤之间的数据传递有类型约束 ``` 传统工作流:代码/JSON → 引擎执行 → 结果 OpenProse:Markdown → LLM 理解 → 智能执行 → 结果 ``` ## 工作流定义格式 OpenProse 工作流是一个 Markdown 文件,使用特定的格式定义步骤: ### 基本结构 ```markdown # 工作流:每日新闻摘要 ## 步骤 1:收集新闻 搜索今天的科技新闻,收集 10 条最重要的新闻标题和摘要。 ## 步骤 2:分析趋势 基于收集到的新闻,分析今天的科技趋势,找出 3 个关键主题。 ## 步骤 3:生成报告 将新闻和趋势分析整理成一份简洁的中文报告,包含: - 今日要闻(5 条) - 趋势分析(3 个主题) - 一句话总结 ## 步骤 4:发送报告 将报告发送给用户。 ``` ### 步骤依赖 步骤默认按顺序执行,每个步骤可以引用前面步骤的输出: ```markdown ## 步骤 1:获取数据 从 API 获取最新的销售数据。 ## 步骤 2:分析数据 基于【步骤 1】获取的销售数据,计算以下指标: - 本月总销售额 - 环比增长率 - Top 5 畅销产品 ## 步骤 3:生成图表描述 基于【步骤 2】的分析结果,生成适合在报告中使用的图表描述。 ``` ## 步骤编排 ### 顺序执行 最简单的编排方式——步骤按顺序依次执行: ```markdown # 代码审查工作流 ## 步骤 1:读取代码 读取 src/ 目录下最近修改的文件。 ## 步骤 2:静态分析 对代码进行静态分析,检查: - 语法错误 - 类型问题 - 未使用的变量 ## 步骤 3:安全检查 检查代码中是否存在: - 硬编码的密钥 - SQL 注入风险 - XSS 漏洞 ## 步骤 4:生成报告 汇总所有发现,生成代码审查报告。 ``` ### 条件分支 使用条件语句控制流程: ```markdown ## 步骤 2:判断严重程度 根据【步骤 1】的分析结果判断问题严重程度。 ### 如果发现严重问题 立即通知用户,列出所有严重问题,并建议暂停部署。 ### 如果只有轻微问题 记录问题列表,继续执行后续步骤。 ### 如果没有问题 输出"代码检查通过 ✅"。 ``` ### 人工审批 工作流可以在关键步骤暂停,等待人工确认: ```markdown ## 步骤 3:等待审批 将分析报告展示给用户,等待确认后再继续。 > 🔒 此步骤需要人工审批。工作流将暂停,直到用户确认。 ## 步骤 4:执行操作 用户确认后,执行数据库迁移操作。 ``` 审批机制是 OpenProse 的重要特性——它让自动化工作流在关键节点保留人工控制。 ## Lobster 工作流运行时 Lobster 是 OpenProse 的底层工作流运行时引擎,提供: ### 核心特性 | 特性 | 说明 | |------|------| | 类型化工作流 | 步骤之间的数据传递有类型约束 | | 可恢复执行 | 工作流中断后可以从断点恢复 | | 审批门控 | 支持人工审批暂停/恢复 | | 状态持久化 | 工作流状态保存到磁盘 | | 超时控制 | 每个步骤可以设置超时时间 | ### 工作流状态 ``` 创建 → 运行中 → [等待审批] → 运行中 → 完成 ↓ 超时/取消 ``` | 状态 | 说明 | |------|------| | `created` | 工作流已创建,尚未开始 | | `running` | 正在执行步骤 | | `waiting` | 等待人工审批或外部事件 | | `completed` | 所有步骤执行完成 | | `failed` | 某个步骤执行失败 | | `cancelled` | 被用户取消 | ### 恢复机制 当工作流因审批、超时或 Gateway 重启而中断时,Lobster 可以从上次的断点恢复: ``` 工作流执行到步骤 3 → Gateway 重启 → 自动从步骤 3 恢复继续 ``` 这对长时间运行的工作流特别重要——你不需要从头开始。 ## LLM Task 工具 LLM Task 是 OpenProse 中的一个特殊工具,用于在工作流步骤中调用 AI 模型并获取**结构化输出**。 ### 什么是 LLM Task 普通的 AI 对话返回自由文本,而 LLM Task 返回**结构化的 JSON 数据**: ``` 普通对话: 输入:"分析这段代码的问题" 输出:"这段代码有几个问题:首先..."(自由文本) LLM Task: 输入:"分析这段代码的问题" 输出:{ "issues": [...], "severity": "medium", "suggestions": [...] } ``` ### 使用场景 LLM Task 适合需要程序化处理 AI 输出的场景: ```markdown ## 步骤 2:分类邮件 使用 LLM Task 对每封邮件进行分类: 输出格式: ```json { "category": "工作|个人|广告|垃圾", "priority": "高|中|低", "summary": "一句话摘要", "actionRequired": true/false } ``` ### 与普通步骤的区别 | 对比 | 普通步骤 | LLM Task | |------|---------|----------| | 输出格式 | 自由文本 | 结构化 JSON | | 后续处理 | 需要 AI 理解 | 可以程序化处理 | | 适用场景 | 生成报告、回答问题 | 数据提取、分类、评分 | ## Diffs 工具 Diffs 是 OpenProse 提供的差异查看工具,用于在工作流中展示文件或数据的变更。 ### 使用场景 ```markdown ## 步骤 3:展示变更 使用 Diffs 工具展示代码修改前后的差异,让用户审核。 ``` Diffs 工具会生成类似 Git diff 的可视化输出: ```diff - const port = 3000 + const port = process.env.PORT || 3000 - app.listen(port) + app.listen(port, '0.0.0.0', () => { + console.log(`Server running on port ${port}`) + }) ``` 这在代码审查和配置变更的工作流中特别有用。 ## 实用场景示例 ### 场景一:多步骤研究 → 总结 ```markdown # 工作流:技术调研报告 ## 步骤 1:搜索资料 搜索关于"WebAssembly 在服务端的应用"的最新资料,收集 5-10 篇相关文章。 ## 步骤 2:提取要点 从每篇文章中提取: - 核心观点 - 技术方案 - 优缺点 ## 步骤 3:对比分析 对比不同方案的优缺点,形成对比表格。 ## 步骤 4:生成报告 整理成一份 2000 字以内的中文调研报告,包含: - 背景介绍 - 方案对比 - 推荐方案 - 参考链接 ``` ### 场景二:代码审查流程 ```markdown # 工作流:PR 代码审查 ## 步骤 1:获取变更 读取最近的代码变更文件列表。 ## 步骤 2:逐文件审查 对每个变更文件进行审查,检查: - 代码风格一致性 - 潜在的 bug - 性能问题 - 安全隐患 ## 步骤 3:生成审查意见 汇总所有发现,按严重程度排序。 ## 步骤 4:等待确认 > 🔒 展示审查结果,等待用户确认是否需要修改。 ## 步骤 5:应用修复 根据用户确认的审查意见,自动修复可以自动处理的问题。 ``` ### 场景三:数据处理管道 ```markdown # 工作流:CSV 数据清洗 ## 步骤 1:读取数据 读取 data/raw.csv 文件。 ## 步骤 2:数据清洗(LLM Task) 使用 LLM Task 识别并修复数据问题: - 缺失值处理 - 格式统一 - 异常值标记 输出格式: { "cleanedRows": 数量, "issues": [{"row": 行号, "column": 列名, "issue": "问题描述"}] } ## 步骤 3:展示变更 使用 Diffs 展示清洗前后的数据差异。 ## 步骤 4:保存结果 将清洗后的数据保存到 data/cleaned.csv。 ``` ## 创建和运行工作流 ### 创建工作流文件 将工作流定义保存为 Markdown 文件: ```bash # 保存到工作区 ~/.openclaw/workspace/workflows/daily-report.md ``` ### 运行工作流 在聊天中触发: ``` 你:运行"每日新闻摘要"工作流 智能体:开始执行工作流... ✅ 步骤 1:收集新闻 — 完成 ✅ 步骤 2:分析趋势 — 完成 ✅ 步骤 3:生成报告 — 完成 ✅ 步骤 4:发送报告 — 完成 工作流执行完成! ``` ### 定时运行 结合 Cron 定时任务自动运行工作流: ```bash openclaw cron add --schedule "0 9 * * *" --message "运行每日新闻摘要工作流" ``` ## 注意事项 1. **实验性功能**:OpenProse 仍在积极开发中,格式和 API 可能变化 2. **Token 消耗**:多步骤工作流会消耗较多 Token,注意成本控制 3. **超时处理**:长时间运行的步骤建议设置超时 4. **错误恢复**:利用 Lobster 的恢复机制处理中断 5. **审批节点**:在关键操作前添加人工审批,避免自动化失控 ## 小结 - OpenProse 用 Markdown 定义工作流,简单直观 - Lobster 运行时提供可恢复执行和审批门控 - LLM Task 获取结构化 JSON 输出,便于程序化处理 - 适合多步骤研究、代码审查、数据处理等场景 - 目前是实验性功能,持续关注更新 #OpenProse #工作流编排 #Lobster #实验性功能 #龙虾技能库