Workflow shell(Lobster)
- 原始链接:https://github.com/openclaw/lobster
- 来源章节:7. 官方仓库与生态仓库
- 来源小节:无
- 抓取方式:jina:https://r.jina.ai/http://github.com/openclaw/lobster
- 抓取时间:2026-04-05 13:47:10
- 状态:ok
中文内容
OpenClaw 原生工作流程 shell:类型化(JSON 优先)管道、作业和审批门。
龙虾工作示例
OpenClaw(或任何其他人工智能代理)可以使用“lobster”作为工作流引擎,并避免重新规划每一步——节省令牌,同时提高确定性和可恢复性。
观看尚未更改的 PR
节点 bin/lobster.js "workflows.run --name github.pr.monitor --args-json '{\"repo\":\"openclaw/openclaw\",\"pr\":1152}'"
[
{
"kind": "github.pr.monitor",
"repo": "openclaw/openclaw",
“pr编号”:1152,
"key": "github.pr:openclaw/openclaw#1152",
“改变”:假,
“摘要”:{
“更改字段”:[],
“更改”:{}
},
“pr快照”:{
“作者”:{
“id”:“MDQ6VXNlcjE0MzY4NTM =”,
“is_bot”:假,
“登录”:“vignesh07”,
“名称”:“维涅什”
},
"baseRefName": "主要",
"headRefName": "壮举/龙虾插件",
“isDraft”:假,
“可合并”:“可合并”,
“数量”:1152,
“审查决定”:“”,
“状态”:“打开”,
"title": "feat: 添加可选的龙虾插件工具(类型化工作流程、批准/简历)",
"更新时间": "2026-01-18T20:16:56Z",
“网址”:“https://github.com/openclaw/openclaw/pull/1152”
}
}
]以及状态发生更改的 PR(在本例中为已批准的 PR)
节点 bin/lobster.js "workflows.run --name github.pr.monitor --args-json '{\"repo\":\"openclaw/openclaw\",\"pr\":1200}'"
[
{
"kind": "github.pr.monitor",
"repo": "openclaw/openclaw",
“prNumber”:1200,
"key": "github.pr:openclaw/openclaw#1200",
“改变”:真实,
“摘要”:{
“更改字段”:[
“数字”,
“标题”,
“网址”,
“状态”,
"是草稿",
“可合并”,
“审查决定”,
“更新时间”,
"baseRefName",
“头参考名称”
],
“变化”:{
“数量”:{
“来自”:空,
“至”:1200
},
“标题”:{
“来自”:空,
"to": "feat(tui):为代码块添加语法突出显示"
},
“网址”:{
“来自”:空,
“至”:“https://github.com/openclaw/openclaw/pull/1200”
},
“状态”:{
“来自”:空,
“至”:“合并”
},
“是草稿”:{
“来自”:空,
“至”:假
},
“可合并”:{
“来自”:空,
“至”:“未知”
},
“审查决定”:{
“来自”:空,
“至”:“”
},
“更新时间”:{
“来自”:空,
“至”:“2026-01-19T05:06:09Z”
},
“baseRefName”:{
“来自”:空,
“至”:“主要”
},
“headRefName”:{
“来自”:空,
"to": "feat/tui-语法高亮"
}
}
},
“pr快照”:{
“作者”:{
“id”:“MDQ6VXNlcjE0MzY4NTM =”,
“is_bot”:假,
“登录”:“vignesh07”,
“名称”:“维涅什”
},
"baseRefName": "主要",
"headRefName": "feat/tui-syntax-highlighting",
“isDraft”:假,
“可合并”:“未知”,
“数量”:1200,
“审查决定”:“”,
“状态”:“合并”,
"title": "feat(tui):为代码块添加语法高亮",
“更新时间”:“2026-01-19T05:06:09Z”,
“网址”:“https://github.com/openclaw/openclaw/pull/1200”
}
}
]目标
- 类型管道(对象/数组),而不是文本管道。
- 本地优先执行。
- 没有新的身份验证表面:Lobster 不得拥有 OAuth/令牌。
- OpenClaw(或任何代理)可以一步调用以保存令牌的可组合宏。
快速开始
pnpm 安装pnpm 测试pnpm lint节点./bin/lobster.js --help节点./bin/lobster.js 医生node ./bin/lobster.js "exec --json --shell 'echo [1,2,3]' | where '0>=0' | json"
注释
pnpm test运行tsc,然后针对dist/执行测试。bin/lobster.js更喜欢dist/中存在的已编译入口点。
命令
exec: 运行操作系统命令exec --stdin raw|json|jsonl:将管道输入馈送到子进程 stdinwhere,pick,head: 数据整形json,table: 渲染器approve:批准门(TTY 提示或用于 OpenClaw 集成的--emit)
后续步骤
- OpenClaw 集成:作为可选 OpenClaw 插件工具提供。
工作流程文件
run:或command:用于确定性 shell/CLI 步骤pipeline:用于原生 Lobster 阶段,如llm.invoke*“批准:”用于步骤之间的硬工作流程门stdin: $step.stdout或stdin: $step.json向前传递数据
龙虾运行路径/to/workflow.lobster
龙虾运行 --file path/to/workflow.lobster --args-json '{"tag":"family"}'示例文件:
名称:夹克建议 参数: 地点: 默认:凤凰城 步骤:
-
id:获取 运行:天气--json ${位置}
-
id: 确认 批准:需要法学硕士的夹克建议吗? 标准输入:$fetch.json
-
ID:建议 管道:> llm.invoke --prompt “鉴于此天气数据,我应该穿夹克吗? 简洁并返回 JSON。” 标准输入:$fetch.json 时间:$confirm.approved
注意事项:
run:和command:是等价的; “run:”是新文件的首选拼写。pipeline:与 shell 步骤共享相同的 args/env/results 模型,因此后面的步骤仍然可以引用$step.stdout或$step.json。- 如果您在 LLM 调用之前需要人工检查点,请在工作流程文件中使用专用的“approval:”步骤,而不是在嵌套管道内使用“approve”。
cwd、env、stdin、when和condition适用于 shell 和管道步骤。
从工作流程中调用 LLM
使用本机“pipeline:”步骤中的“llm.invoke”进行模型支持的工作:
llm.invoke --prompt '总结此差异' llm.invoke --provider openclaw --prompt '总结此差异' llm.invoke --provider pi --prompt '总结此差异'
提供商解析顺序:
--提供者LOBSTER_LLM_PROVIDER- 自动检测环境
如今的内置提供程序:
- 通过“OPENCLAW_URL”/“OPENCLAW_TOKEN”的“openclaw”
- 通过“LOBSTER_PI_LLM_ADAPTER_URL”的“pi”(通常由 Pi 扩展提供)
- 通过“LOBSTER_LLM_ADAPTER_URL”的“http”
llm_task.invoke 仍然可用作 OpenClaw 提供程序的向后兼容别名。
从工作流程中调用 OpenClaw 工具
Shell run: 步骤在您的系统 shell 中执行,因此 OpenClaw 工具调用必须有真正的可执行文件。
如果您通过 npm/pnpm 安装 Lobster,它会安装一个名为的小型 shim 可执行文件:
openclaw.invoke(首选)clawd.invoke(别名)
这些垫片转发到同名的 Lobster 管道命令。
示例:调用 llm-task
OPENCLAW_URL指向正在运行的 OpenClaw 网关- 如果启用了身份验证,可选“OPENCLAW_TOKEN”
导出 OPENCLAW_URL=http://127.0.0.1:18789
导出 OPENCLAW_TOKEN=...
在工作流程中:
名称:你好世界 步骤:
- ID:问候语 运行:> openclaw.invoke --tool llm-task --action json --args-json '{"prompt":"Hello"}'
在步骤之间传递数据(无临时文件)
[](http://github.com/openclaw/lobster#passing-data- Between-steps-no-temp-files) 使用“stdin: $stepId.stdout”将输出从一个步骤传送到下一个步骤。
参数和 shell 安全
${arg} 替换是将原始字符串替换为 shell 命令文本。
对于任何可能包含引号、“$”、反引号或换行符的内容,最好使用环境变量:
- 每个解析的工作流程参数都公开为“LOBSTER_ARG_”(大写,非alnum→“_”)
- 完整的 args 对象也可以作为“LOBSTER_ARGS_JSON”使用
示例:
参数: 文字: 默认值:“” 步骤:
- ID:安全 环境: 文本:“$LOBSTER_ARG_TEXT” 命令:| jq -n --arg 文本 "$TEXT" '{"结果": $text}'