## 什么是 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 #实验性功能 #龙虾技能库