名称: lobster-jobs
描述: 将 OpenClaw 定时任务转换为 Lobster 工作流。分析、检查并验证任务迁移。适用于将自动化任务转换为具备确定性、审批门控和可恢复执行能力的工作流。
元数据:
openclaw:
emoji: 🦞
requires:
bins: ["openclaw", "python3"]
将 OpenClaw 定时任务转换为具备审批门控和可恢复执行能力的 Lobster 工作流。
OpenClaw 定时任务分为两类:
- systemEvent:简单的 Shell 命令(完全确定性)
- agentTurn:生成 AI 代理的自然语言指令(灵活但消耗大量 Token)
Lobster 工作流提供:
- 确定性执行:每个步骤无需 LLM 重新规划
- 审批门控:需要用户明确批准的硬性停止点
- 状态化执行:记录游标/检查点
- 可恢复性:可从暂停处精确恢复执行
本技能用于分析现有的定时任务,并将其转换为 Lobster 工作流。
lobster-jobs list列出所有定时任务及其 Lobster 迁移就绪度评分。
输出分类:
- ✅ 完全可迁移:简单的 Shell 命令(systemEvent)
- 🟡 部分可迁移:混合了确定性步骤和 LLM 步骤(agentTurn)
- ❌ 不可迁移:需要大量 LLM 推理
lobster-jobs inspect <job-id>检查指定的定时任务,提供详细的迁移评估。
显示内容:
- 任务元数据(计划、目标、负载类型)
- Lobster 迁移状态及原因
- 负载预览
- 迁移建议
lobster-jobs validate <workflow-file>根据模式验证 Lobster 工作流 YAML 文件。
检查项:
- 必填字段(名称、步骤)
- 步骤结构(id、command)
- 审批门控语法
- 条件语法
lobster-jobs convert <job-id>将定时任务转换为 Lobster 工作流。
lobster-jobs convert 17fe68ca
lobster-jobs convert 17fe68ca --output-dir ~/workflows
lobster-jobs convert 17fe68ca --force # 覆盖现有文件
生成内容:
- .lobster 工作流文件,位于 ~/.lobster/workflows/
- 从 systemEvent 或 agentTurn 负载中提取命令
- 自动验证生成的工作流
选项:
- --output-dir, -o:自定义输出目录
- --force, -f:覆盖现有工作流
- --keep-on-error:即使验证失败也保留文件
lobster-jobs new <name>使用模板从头创建新的 Lobster 工作流。
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:包含游标/状态跟踪的工作流
# 添加到 PATH
export PATH="$PATH:/home/art/niemand/skills/lobster-jobs/bin"
# 或创建符号链接
ln -s /home/art/niemand/skills/lobster-jobs/bin/lobster-jobs ~/.local/bin/
# 查看所有定时任务及其迁移状态
lobster-jobs list
# 检查特定任务
lobster-jobs inspect 17fe68ca
# 将任务转换为 Lobster 工作流
lobster-jobs convert 17fe68ca
# 使用模板创建新工作流
lobster-jobs new my-workflow --template with-approval
# 验证工作流文件
lobster-jobs validate ~/.lobster/workflows/my-workflow.lobster
名称: my-workflow
**描述:** 可选描述
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 "发送通知?"
approval: required
- id: send
command: message.send --channel telegram --text "完成!"
condition: $approve_send.approved
保留 cron 作为调度器,将负载修改为调用 Lobster:
{
"payload": {
"kind": "systemEvent",
"text": "lobster run ~/.lobster/workflows/my-workflow.lobster"
}
}
优点:
- 回滚简单(恢复负载即可)
- 支持增量迁移
- 已有的 cron 调度机制保持不变
对于需要确定性步骤和 LLM 推理的任务:
steps:
- id: gather
command: gh issue list --json title,body
- id: triage
command: clawd.invoke
prompt: "根据紧急程度对这些问题进行分类"
- id: notify
command: telegram-send
工作流本身是确定性的;LLM 步骤被视为一个黑盒。
| 问题 | 处理方式 |
|---|---|
| 幂等性 | 工作流跟踪步骤完成状态;重启安全 |
| 审批超时 | 可配置超时时间及默认操作 |
| 密钥处理 | 使用环境变量或 1Password 引用 |
| 部分失败 | convert 命令在写入前会进行验证 |