랍스터
Lobster는 OpenClaw가 명시적인 승인 체크포인트가 있는 단일 결정론적 작업으로 다단계 도구 시퀀스를 실행할 수 있게 해주는 워크플로 셸입니다.
후크
당신의 어시스턴트는 스스로 관리하는 도구를 만들 수 있습니다. 워크플로를 요청하면 30분 후에 한 번의 호출로 실행되는 CLI와 파이프라인이 생성됩니다. 랍스터는 결정론적 파이프라인, 명시적 승인, 재개 가능한 상태 등 누락된 부분입니다.
왜?
오늘날 복잡한 워크플로우에는 도구 호출이 많이 필요합니다. 각 호출에는 토큰이 필요하며 LLM은 모든 단계를 조정해야 합니다. Lobster는 해당 오케스트레이션을 형식화된 런타임으로 이동합니다.
- 다수 호출 대신 단일 호출: OpenClaw는 Lobster 도구 호출을 한 번 실행하고 구조화된 결과를 얻습니다.
- 승인 내장: 부작용(이메일 보내기, 댓글 게시)으로 인해 명시적으로 승인될 때까지 워크플로가 중단됩니다.
- 재개 가능: 중단된 워크플로는 토큰을 반환합니다. 모든 것을 다시 실행하지 않고 승인하고 재개합니다.
일반 프로그램 대신 DSL을 사용하는 이유는 무엇입니까?
랍스터는 의도적으로 작습니다. 목표는 "새로운 언어"가 아니라, 일류 승인 및 이력서 토큰을 갖춘 예측 가능하고 AI 친화적인 파이프라인 사양입니다.
- 승인/재개 기능 내장: 일반 프로그램은 사람에게 메시지를 표시할 수 있지만 런타임을 직접 개발하지 않으면 내구성 있는 토큰을 사용하여 일시 중지 및 재개할 수 없습니다.
- 결정성 + 감사 가능성: 파이프라인은 데이터이므로 기록, 비교, 재생 및 검토가 쉽습니다.
- AI를 위한 제한된 표면: 작은 문법 + JSON 파이핑은 "창의적인" 코드 경로를 줄이고 검증을 현실적으로 만듭니다.
- 내장된 안전 정책: 시간 초과, 출력 제한, 샌드박스 검사 및 허용 목록은 각 스크립트가 아닌 런타임에 의해 시행됩니다.
- 여전히 프로그래밍 가능: 각 단계에서 모든 CLI 또는 스크립트를 호출할 수 있습니다. JS/TS를 원한다면 코드에서
.lobster파일을 생성하세요.
작동 방식
OpenClaw는 도구 모드에서 로컬 lobster CLI를 시작하고 stdout에서 JSON 봉투를 구문 분석합니다. 승인을 위해 파이프라인이 일시 중지되면 도구는 resumeToken를 반환하므로 나중에 계속할 수 있습니다.
패턴: 소형 CLI + JSON 파이프 + 승인
JSON을 말하는 작은 명령을 작성한 다음 단일 Lobster 호출로 연결합니다. (아래 명령 이름의 예 - 직접 바꾸십시오.)
inbox list --json
inbox categorize --json
inbox apply --json{
"action": "run",
"pipeline": "exec --json --shell 'inbox list --json' | exec --stdin json --shell 'inbox categorize --json' | exec --stdin json --shell 'inbox apply --json' | approve --preview-from-stdin --limit 5 --prompt 'Apply changes?'",
"timeoutMs": 30000
}파이프라인이 승인을 요청하면 토큰을 사용하여 재개합니다.
{
"action": "resume",
"token": "<resumeToken>",
"approve": true
}AI가 워크플로를 트리거합니다. 랍스터가 단계를 실행합니다. 승인 게이트는 부작용을 명시적이고 감사 가능하게 유지합니다.
예: 입력 항목을 도구 호출에 매핑:
gog.gmail.search --query 'newer_than:1d' \
| openclaw.invoke --tool message --action send --each --item-key message --args-json '{"provider":"telegram","to":"..."}'JSON 전용 LLM 단계(llm-task)
구조화된 LLM 단계가 필요한 워크플로의 경우 옵션을 활성화하세요. llm-task 플러그인 도구를 사용하여 Lobster에서 호출합니다. 이렇게 하면 작업 흐름이 유지됩니다. 모델을 분류/요약/초안화하는 동시에 결정적입니다.
도구를 활성화합니다:
{
"plugins": {
"entries": {
"llm-task": { "enabled": true }
}
},
"agents": {
"list": [
{
"id": "main",
"tools": { "allow": ["llm-task"] }
}
]
}
}파이프라인에서 사용합니다.
openclaw.invoke --tool llm-task --action json --args-json '{
"prompt": "Given the input email, return intent and draft.",
"input": { "subject": "Hello", "body": "Can you help?" },
"schema": {
"type": "object",
"properties": {
"intent": { "type": "string" },
"draft": { "type": "string" }
},
"required": ["intent", "draft"],
"additionalProperties": false
}
}'자세한 내용 및 구성 옵션은 LLM 작업을 참조하세요.
워크플로 파일(.lobster)
Lobster는 name, args, steps, env, condition 및 approval 필드를 사용하여 YAML/JSON 워크플로 파일을 실행할 수 있습니다. OpenClaw 도구 호출에서 pipeline를 파일 경로로 설정합니다.
name: inbox-triage
args:
tag:
default: "family"
steps:
- id: collect
command: inbox list --json
- id: categorize
command: inbox categorize --json
stdin: $collect.stdout
- id: approve
command: inbox apply --approve
stdin: $categorize.stdout
approval: required
- id: execute
command: inbox apply --execute
stdin: $categorize.stdout
condition: $approve.approved참고:
stdin: $step.stdout및stdin: $step.json는 이전 단계의 출력을 전달합니다.condition(또는when)는$step.approved에서 단계를 제어할 수 있습니다.
랍스터 설치
OpenClaw Gateway를 실행하는 동일한 호스트에 Lobster CLI를 설치하고(Lobster repo 참조), lobster가 PATH에 있는지 확인하세요. 사용자 정의 바이너리 위치를 사용하려면 도구 호출에 절대 lobsterPath를 전달하세요.
도구 활성화
Lobster는 선택 플러그인 도구입니다(기본적으로 활성화되어 있지 않음).
권장사항(첨가물, 안전함):
{
"tools": {
"alsoAllow": ["lobster"]
}
}또는 에이전트별:
{
"agents": {
"list": [
{
"id": "main",
"tools": {
"alsoAllow": ["lobster"]
}
}
]
}
}제한적인 허용 목록 모드에서 실행하려는 경우가 아니면 tools.allow: ["lobster"]를 사용하지 마세요.
참고: 허용 목록은 선택적 플러그인에 대해 선택적으로 제공됩니다. 허용 목록에 이름만 있는 경우 플러그인 도구(예: lobster), OpenClaw는 핵심 도구를 활성화된 상태로 유지합니다. 코어를 제한하려면 도구를 사용하려면 원하는 핵심 도구나 그룹도 허용 목록에 포함하세요.
예: 이메일 분류
랍스터 제외:
User: "Check my email and draft replies"
→ openclaw calls gmail.list
→ LLM summarizes
→ User: "draft replies to #2 and #5"
→ LLM drafts
→ User: "send #2"
→ openclaw calls gmail.send
(repeat daily, no memory of what was triaged)랍스터 포함:
{
"action": "run",
"pipeline": "email.triage --limit 20",
"timeoutMs": 30000
}JSON 봉투(잘림)를 반환합니다.
{
"ok": true,
"status": "needs_approval",
"output": [{ "summary": "5 need replies, 2 need action" }],
"requiresApproval": {
"type": "approval_request",
"prompt": "Send 2 draft replies?",
"items": [],
"resumeToken": "..."
}
}사용자 승인 → 재개:
{
"action": "resume",
"token": "<resumeToken>",
"approve": true
}하나의 워크플로. 결정적. 안전한.
도구 매개변수
run
도구 모드에서 파이프라인을 실행합니다.
{
"action": "run",
"pipeline": "gog.gmail.search --query 'newer_than:1d' | email.triage",
"cwd": "/path/to/workspace",
"timeoutMs": 30000,
"maxStdoutBytes": 512000
}인수를 사용하여 워크플로 파일을 실행합니다.
{
"action": "run",
"pipeline": "/path/to/inbox-triage.lobster",
"argsJson": "{\"tag\":\"family\"}"
}resume
승인 후 중단된 워크플로를 계속합니다.
{
"action": "resume",
"token": "<resumeToken>",
"approve": true
}선택적 입력
lobsterPath: Lobster 바이너리의 절대 경로입니다(PATH사용 생략).cwd: 파이프라인의 작업 디렉터리(기본값은 현재 프로세스 작업 디렉터리)timeoutMs: 이 기간(기본값: 20000)을 초과하면 하위 프로세스를 종료합니다.maxStdoutBytes: stdout이 이 크기를 초과하면 하위 프로세스를 종료합니다(기본값: 512000).argsJson:lobster run --args-json에 전달된 JSON 문자열(워크플로 파일에만 해당)
출력 봉투
Lobster는 다음 세 가지 상태 중 하나로 JSON 봉투를 반환합니다.
ok→ 성공적으로 완료됨needs_approval→ 일시중지됨; 재개하려면requiresApproval.resumeToken가 필요합니다.cancelled→ 명시적으로 거부 또는 취소됨
이 도구는 content(예쁜 JSON) 및 details(원시 개체) 모두에서 봉투를 표면화합니다.
승인
requiresApproval가 있는 경우 프롬프트를 검사하고 다음을 결정합니다.
approve: true→ 부작용 재개 및 계속approve: false→ 작업 흐름을 취소하고 마무리합니다.
사용자 정의 jq/heredoc 글루 없이 승인 요청에 JSON 미리보기를 첨부하려면 approve --preview-from-stdin --limit N를 사용하세요. 이제 이력서 토큰이 간결해졌습니다. Lobster는 워크플로 재개 상태를 해당 상태 디렉토리에 저장하고 작은 토큰 키를 돌려줍니다.
오픈프로즈
OpenProse는 Lobster와 잘 어울립니다. /prose를 사용하여 다중 에이전트 준비를 조정한 다음 결정론적 승인을 위해 Lobster 파이프라인을 실행합니다. Prose 프로그램에 Lobster가 필요한 경우 tools.subagents.tools를 통해 하위 에이전트에 lobster 도구를 허용하세요. OpenProse를 참조하세요.
안전
- 로컬 하위 프로세스만 — 플러그인 자체에서는 네트워크 호출이 없습니다.
- 비밀 없음 — Lobster는 OAuth를 관리하지 않습니다. 이를 수행하는 OpenClaw 도구를 호출합니다.
- 샌드박스 인식 — 도구 컨텍스트가 샌드박스화되면 비활성화됩니다.
- 강화됨 —
lobsterPath는 지정된 경우 절대적이어야 합니다. 시간 초과 및 출력 제한이 적용되었습니다.
문제 해결
lobster subprocess timed out→timeoutMs를 늘리거나 긴 파이프라인을 분할합니다.lobster output exceeded maxStdoutBytes→maxStdoutBytes를 높이거나 출력 크기를 줄입니다.lobster returned invalid JSON→ 파이프라인이 도구 모드에서 실행되고 JSON만 인쇄하는지 확인합니다.lobster failed (code …)→ 터미널에서 동일한 파이프라인을 실행하여 stderr을 검사합니다.
자세히 알아보기
사례 연구: 커뮤니티 워크플로
한 가지 공개 예: 3개의 Markdown 저장소(개인, 파트너, 공유)를 관리하는 "두 번째 두뇌" CLI + Lobster 파이프라인입니다. CLI는 통계, 받은 편지함 목록 및 오래된 스캔에 대해 JSON을 내보냅니다. Lobster는 이러한 명령을 각각 승인 게이트가 있는 weekly-review, inbox-triage, memory-consolidation 및 shared-task-sync와 같은 워크플로에 연결합니다. AI는 가능한 경우 판단(분류)을 처리하고 그렇지 않은 경우 결정론적 규칙으로 돌아갑니다.