介绍
# lobster-jobs
将 OpenClaw cron 作业转换为具有审批门控和可恢复执行的 Lobster 工作流。
## 目的
OpenClaw cron 作业分为两种: - **systemEvent**:简单的 Shell 命令(完全确定性) - **agentTurn**:生成 AI 代理的自然语言指令(灵活但消耗大量 Token)
Lobster 工作流提供: - **确定性执行**:每一步无需 LLM 重新规划 - **审批门控**:需要显式用户批准的硬性停止 - **有状态执行**:记住游标/检查点 - **可恢复性**:暂停并从中断处准确恢复
此技能有助于分析现有的 cron 作业并将其转换为 Lobster 工作流。
## 命令
### 第一层(现已可用)
#### `lobster-jobs list` 列出所有 cron 作业及其 Lobster 就绪评分。
输出类别: - ✅ **完全可迁移**:简单的 Shell 命令(systemEvent) - 🟡 **部分可迁移**:混合确定性 + LLM 步骤(agentTurn) - ❌ **不可迁移**:需要繁重的 LLM 推理
#### `lobster-jobs inspect <job-id>` 检查特定的 cron 作业,提供详细的迁移评估。
显示内容: - 作业元数据(计划、目标、负载类型) - Lobster 迁移状态及原因 - 负载预览 - 迁移建议
#### `lobster-jobs validate <workflow-file>` 根据架构验证 Lobster 工作流 YAML 文件。
检查项: - 必填字段(名称、步骤) - 步骤结构(id、命令) - 审批门控语法 - 条件语法
### 第二层(现已可用)
#### `lobster-jobs convert <job-id>` 将 cron 作业转换为 Lobster 工作流。
```bash lobster-jobs convert 17fe68ca lobster-jobs convert 17fe68ca --output-dir ~/workflows lobster-jobs convert 17fe68ca --force # Overwrite existing ```
生成内容: - `~/.lobster/workflows/` 中的 `.lobster` 工作流文件 - 从 systemEvent 或 agentTurn 负载中提取命令 - 自动验证生成的工作流
选项: - `--output-dir, -o`:自定义输出目录 - `--force, -f`:覆盖现有工作流 - `--keep-on-error`:即使验证失败也保留文件
#### `lobster-jobs new <name>` 使用模板从头创建新的 Lobster 工作流。
```bash lobster-jobs new my-workflow lobster-jobs new my-workflow --template with-approval lobster-jobs new my-workflow --template stateful ```
模板: - `simple-shell`:基本命令执行 - `with-approval`:带有审批门控的工作流 - `stateful`:带有游标/状态跟踪的工作流
## 安装
```bash # Add to PATH export PATH="$PATH:/home/art/niemand/skills/lobster-jobs/bin"
# Or create symlink ln -s /home/art/niemand/skills/lobster-jobs/bin/lobster-jobs ~/.local/bin/ ```
## 快速开始
```bash # See all your cron jobs and their migration status lobster-jobs list
# Inspect a specific job lobster-jobs inspect 17fe68ca
# Convert a job to Lobster workflow lobster-jobs convert 17fe68ca
# Create a new workflow from template lobster-jobs new my-workflow --template with-approval
# Validate a workflow file lobster-jobs validate ~/.lobster/workflows/my-workflow.lobster ```
## 工作流文件格式
```yaml name: my-workflow description: Optional description
steps: - id: fetch_data command: some-cli fetch --json - id: process command: some-cli process stdin: $fetch_data.stdout - id: approve_send command: approve --prompt "Send notification?" approval: required - id: send command: message.send --channel telegram --text "Done!" condition: $approve_send.approved ```
## 迁移策略
### 包装器方法(推荐) 保留 cron 作为调度器,将负载更改为调用 Lobster:
```json { "payload": { "kind": "systemEvent", "text": "lobster run ~/.lobster/workflows/my-workflow.lobster" } } ```
优势: - 回滚很容易(恢复负载) - 增量式迁移 - Cron 调度已经生效
## 处理 LLM 判断
对于需要确定性步骤和 LLM 推理的作业:
```yaml steps: - id: gather command: gh issue list --json title,body - id: triage command: clawd.invoke prompt: "Classify these issues by urgency" - id: notify command: telegram-send ```
工作流是确定性的;LLM 是一个黑盒步骤。
## 边缘情况
| 问题 | 处理方式 | |-------|----------| | **幂等性** | 工作流跟踪步骤完成情况;重启安全 | | **审批超时** | 可配置超时及默认操作 | | **密钥处理** | 环境变量或 1Password 引用 | | **部分失败** | `convert` 在写入前进行验证 |
## 参考
- Lobster: https://github.com/openclaw/lobster - Lobster VISION: https://github.com/openclaw/lobster/blob/main/VISION.md