Lobster
Lobster
Sección titulada «Lobster»Lobster es un shell de flujo de trabajo que permite a OpenClaw ejecutar secuencias de herramientas de varios pasos como una única operación determinista con puntos de control de aprobación explícitos.
Lobster es una capa de autorización por encima del trabajo en segundo plano desacoplado. Si te encuentras con una terminología antigua de ClawFlow, trátala como una nomenclatura histórica sobre la misma área de tiempo de ejecución orientada a tareas; la superficie de CLI actual orientada al operador es openclaw tasks.
Tu asistente puede construir las herramientas que se gestionan a sí mismas. Pide un flujo de trabajo y 30 minutos después tendrás una CLI más canalizaciones que se ejecutan en una sola llamada. Lobster es la pieza que faltaba: canalizaciones deterministas, aprobaciones explícitas y estado reanudable.
Por qué
Sección titulada «Por qué»Hoy en día, los flujos de trabajo complejos requieren muchas llamadas a herramientas de ida y vuelta. Cada llamada cuesta tokens y el LLM tiene que orquestar cada paso. Lobster traslada esa orquestación a un tiempo de ejecución tipado:
- Una llamada en lugar de muchas: OpenClaw ejecuta una llamada a la herramienta Lobster y obtiene un resultado estructurado.
- Aprobaciones integradas: Los efectos secundarios (enviar correo, publicar comentario) detienen el flujo de trabajo hasta que se aprueben explícitamente.
- Reanudable: Los flujos de trabajo detenidos devuelven un token; aprueba y reanuda sin volver a ejecutar todo.
¿Por qué un DSL en lugar de programas simples?
Sección titulada «¿Por qué un DSL en lugar de programas simples?»Lobster es intencionalmente pequeño. El objetivo no es “un nuevo lenguaje”, es una especificación de canalización predecible y amigable para la IA con aprobaciones y tokens de reanudación de primera clase.
- Aprobar/reanudar está integrado: Un programa normal puede solicitar a un humano, pero no puede pausar y reanudar con un token duradero sin que inventes ese tiempo de ejecución tú mismo.
- Determinismo + auditoría: Las canalizaciones son datos, por lo que son fáciles de registrar, comparar, reproducir y revisar.
- Superficie restringida para la IA: Una gramática tiny + tuberías JSON reduce las rutas de código “creativas” y hace que la validación sea realista.
- Política de seguridad integrada: Los tiempos de espera, los límites de salida, las comprobaciones de sandbox y las listas de permitidos son impuestas por el tiempo de ejecución, no por cada script.
- Todavía programable: Cada paso puede llamar a cualquier CLI o script. Si quieres JS/TS, genera archivos
.lobsterdesde el código.
Cómo funciona
Sección titulada «Cómo funciona»OpenClaw lanza la CLI local de lobster en modo de herramienta y analiza un sobre JSON desde stdout.
Si la canalización se pausa para aprobación, la herramienta devuelve un resumeToken para que puedas continuar más tarde.
Patrón: pequeña CLI + tuberías JSON + aprobaciones
Sección titulada «Patrón: pequeña CLI + tuberías JSON + aprobaciones»Construye pequeños comandos que hablen JSON, luego encadénalos en una sola llamada a Lobster. (Nombres de comandos de ejemplo a continuación — sustitúyelos por los tuyos).
inbox list --jsoninbox categorize --jsoninbox 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}Si la canalización solicita aprobación, reanuda con el token:
{ "action": "resume", "token": "<resumeToken>", "approve": true}La IA activa el flujo de trabajo; Lobster ejecuta los pasos. Las puertas de aprobación mantienen los efectos secundarios explícitos y auditables.
Ejemplo: mapear elementos de entrada en llamadas a herramientas:
gog.gmail.search --query 'newer_than:1d' \ | openclaw.invoke --tool message --action send --each --item-key message --args-json '{"provider":"telegram","to":"..."}'Pasos de LLM solo JSON (llm-task)
Sección titulada «Pasos de LLM solo JSON (llm-task)»Para los flujos de trabajo que necesitan un paso de LLM estructurado, habilita la herramienta de complemento opcional
llm-task y llámala desde Lobster. Esto mantiene el flujo de trabajo
determinista mientras te permite clasificar/resumir/borrar con un modelo.
Habilita la herramienta:
{ "plugins": { "entries": { "llm-task": { "enabled": true } } }, "agents": { "list": [ { "id": "main", "tools": { "allow": ["llm-task"] } } ] }}Úsala en una canalización:
openclaw.invoke --tool llm-task --action json --args-json '{ "prompt": "Given the input email, return intent and draft.", "thinking": "low", "input": { "subject": "Hello", "body": "Can you help?" }, "schema": { "type": "object", "properties": { "intent": { "type": "string" }, "draft": { "type": "string" } }, "required": ["intent", "draft"], "additionalProperties": false }}'Consulte LLM Task para obtener detalles y opciones de configuración.
Archivos de flujo de trabajo (.lobster)
Sección titulada «Archivos de flujo de trabajo (.lobster)»Lobster puede ejecutar archivos de flujo de trabajo YAML/JSON con los campos name, args, steps, env, condition y approval. En las llamadas a herramientas de OpenClaw, establece pipeline en la ruta del archivo.
name: inbox-triageargs: 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.approvedNotas:
stdin: $step.stdoutystdin: $step.jsonpasan la salida de un paso anterior.condition(owhen) pueden bloquear pasos en$step.approved.
Instalar Lobster
Sección titulada «Instalar Lobster»Instale la CLI de Lobster en el mismo host que ejecuta OpenClaw Gateway (consulte el repositorio de Lobster) y asegúrese de que lobster esté en PATH.
Habilitar la herramienta
Sección titulada «Habilitar la herramienta»Lobster es una herramienta de complemento opcional (no habilitada por defecto).
Recomendado (aditivo, seguro):
{ "tools": { "alsoAllow": ["lobster"] }}O por agente:
{ "agents": { "list": [ { "id": "main", "tools": { "alsoAllow": ["lobster"] } } ] }}Evite usar tools.allow: ["lobster"] a menos que tenga la intención de ejecutarse en modo de lista de permitidos restrictiva.
Nota: las listas de permitidos son optativas para complementos opcionales. Si su lista de permitidos solo nombra
herramientas de complemento (como lobster), OpenClaw mantiene las herramientas principales habilitadas. Para restringir las herramientas
principales, incluya también las herramientas principales o grupos que desee en la lista de permitidos.
Ejemplo: triaje de correo electrónico
Sección titulada «Ejemplo: triaje de correo electrónico»Sin Lobster:
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)Con Lobster:
{ "action": "run", "pipeline": "email.triage --limit 20", "timeoutMs": 30000}Devuelve un sobre JSON (truncado):
{ "ok": true, "status": "needs_approval", "output": [{ "summary": "5 need replies, 2 need action" }], "requiresApproval": { "type": "approval_request", "prompt": "Send 2 draft replies?", "items": [], "resumeToken": "..." }}El usuario aprueba → reanudar:
{ "action": "resume", "token": "<resumeToken>", "approve": true}Un flujo de trabajo. Determinista. Seguro.
Parámetros de la herramienta
Sección titulada «Parámetros de la herramienta»Ejecuta una canalización en modo de herramienta.
{ "action": "run", "pipeline": "gog.gmail.search --query 'newer_than:1d' | email.triage", "cwd": "workspace", "timeoutMs": 30000, "maxStdoutBytes": 512000}Ejecuta un archivo de flujo de trabajo con argumentos:
{ "action": "run", "pipeline": "/path/to/inbox-triage.lobster", "argsJson": "{\"tag\":\"family\"}"}Continúa un flujo de trabajo detenido después de la aprobación.
{ "action": "resume", "token": "<resumeToken>", "approve": true}Entradas opcionales
Sección titulada «Entradas opcionales»cwd: Directorio de trabajo relativo para la canalización (debe mantenerse dentro del directorio de trabajo del proceso actual).timeoutMs: Matar el subproceso si excede esta duración (predeterminado: 20000).maxStdoutBytes: Matar el subproceso si la salida estándar excede este tamaño (predeterminado: 512000).argsJson: Cadena JSON pasada alobster run --args-json(solo archivos de flujo de trabajo).
Sobre de salida
Sección titulada «Sobre de salida»Lobster devuelve un sobre JSON con uno de tres estados:
ok→ finalizado correctamenteneeds_approval→ en pausa; se requiererequiresApproval.resumeTokenpara reanudarcancelled→ denegado explícitamente o cancelado
La herramienta expone el sobre tanto en content (JSON bonito) como en details (objeto sin procesar).
Aprobaciones
Sección titulada «Aprobaciones»Si requiresApproval está presente, inspeccione el mensaje y decida:
approve: true→ reanudar y continuar los efectos secundariosapprove: false→ cancelar y finalizar el flujo de trabajo
Use approve --preview-from-stdin --limit N para adjuntar una vista previa JSON a las solicitudes de aprobación sin necesidad de pegamento personalizado de jq/heredoc. Los tokens de reanudación ahora son compactos: Lobster almacena el estado de reanudación del flujo de trabajo en su directorio de estado y devuelve una pequeña clave de token.
OpenProse
Sección titulada «OpenProse»OpenProse se combina bien con Lobster: use /prose para orquestar la preparación multiagente, luego ejecute una canalización Lobster para aprobaciones deterministas. Si un programa Prose necesita Lobster, permita la herramienta lobster para subagentes a través de tools.subagents.tools. Consulte OpenProse.
Seguridad
Sección titulada «Seguridad»- Solo subproceso local — sin llamadas a la red desde el complemento en sí.
- Sin secretos — Lobster no gestiona OAuth; llama a herramientas de OpenClaw que sí lo hacen.
- Consciente del entorno limitado (sandbox) — deshabilitado cuando el contexto de la herramienta está en un entorno limitado.
- Endurecido — nombre de ejecutable fijo (
lobster) enPATH; se aplican tiempos de espera y límites de salida.
Solución de problemas
Sección titulada «Solución de problemas»lobster subprocess timed out→ aumentatimeoutMso divide una canalización larga.lobster output exceeded maxStdoutBytes→ aumentamaxStdoutByteso reduce el tamaño de la salida.lobster returned invalid JSON→ asegúrate de que la canalización se ejecute en modo herramienta e imprima solo JSON.lobster failed (code …)→ ejecuta la misma canalización en una terminal para inspeccionar stderr.
Más información
Sección titulada «Más información»Estudio de caso: flujos de trabajo de la comunidad
Sección titulada «Estudio de caso: flujos de trabajo de la comunidad»Un ejemplo público: una CLI de “segundo cerebro” + canalizaciones de Lobster que gestionan tres bóvedas de Markdown (personal, pareja, compartida). La CLI emite JSON para estadísticas, listados de bandeja de entrada y escaneos de elementos obsoletos; Lobster encadena esos comandos en flujos de trabajo como weekly-review, inbox-triage, memory-consolidation y shared-task-sync, cada uno con puertas de aprobación. La IA maneja el juicio (categorización) cuando está disponible y recurre a reglas deterministas cuando no.
- Hilo: https://x.com/plattenschieber/status/2014508656335770033
- Repositorio: https://github.com/bloomedai/brain-cli
Relacionado
Sección titulada «Relacionado»- Cron vs Heartbeat — programación de flujos de trabajo de Lobster
- Información general de automatización — todos los mecanismos de automatización
- Información general de herramientas — todas las herramientas de agente disponibles