Tools

Langosta

Lobster es una consola de flujos de trabajo que permite a OpenClaw ejecutar secuencias de herramientas de varios pasos como una sola operación determinista con puntos de aprobación explícitos.

Lobster es una capa de autoría por encima del trabajo en segundo plano desacoplado. Para la orquestación de flujos por encima de tareas individuales, consulta Task Flow (openclaw tasks flow). Para el registro de actividad de tareas, consulta openclaw tasks.

Hook

Tu asistente puede crear las herramientas que lo administran a sí mismo. Pide un flujo de trabajo y, 30 minutos después, tendrás una CLI más pipelines que se ejecutan como una sola llamada. Lobster es la pieza que falta: pipelines deterministas, aprobaciones explícitas y estado reanudable.

Por qué

Hoy, los flujos de trabajo complejos requieren muchas llamadas de herramientas de ida y vuelta. Cada llamada cuesta tokens, y el LLM tiene que orquestar cada paso. Lobster mueve esa orquestación a un runtime tipado:

  • Una llamada en lugar de muchas: OpenClaw ejecuta una llamada de herramienta Lobster y obtiene un resultado estructurado.
  • Aprobaciones integradas: Los efectos secundarios (enviar correo electrónico, publicar comentario) detienen el flujo de trabajo hasta que se aprueban 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 normales?

Lobster es intencionalmente pequeño. El objetivo no es "un lenguaje nuevo", sino una especificación de pipeline predecible y compatible con IA, con aprobaciones de primera clase y tokens de reanudación.

  • Aprobar/reanudar está integrado: Un programa normal puede pedir confirmación a un humano, pero no puede pausarse y reanudarse con un token duradero sin que tú inventes ese runtime.
  • Determinismo + auditabilidad: Los pipelines son datos, por lo que son fáciles de registrar, comparar, reproducir y revisar.
  • Superficie restringida para IA: Una gramática mínima + canalización JSON reduce las rutas de código "creativas" y hace realista la validación.
  • Política de seguridad incorporada: Los tiempos de espera, límites de salida, comprobaciones de sandbox y allowlists los aplica el runtime, no cada script.
  • Sigue siendo programable: Cada paso puede llamar a cualquier CLI o script. Si quieres JS/TS, genera archivos .lobster desde código.

Cómo funciona

OpenClaw ejecuta flujos de trabajo Lobster en proceso usando un ejecutor integrado. No se genera ningún subproceso CLI externo; el motor de flujo de trabajo se ejecuta dentro del proceso del Gateway y devuelve directamente un sobre JSON. Si el pipeline se pausa para aprobación, la herramienta devuelve un resumeToken para que puedas continuar más tarde.

Patrón: CLI pequeña + pipes JSON + aprobaciones

Crea comandos pequeños que hablen JSON y luego encadénalos en una sola llamada Lobster. (Los nombres de comandos de ejemplo aparecen abajo; sustitúyelos por los tuyos.)

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
}

Si el pipeline 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: asignar elementos de entrada a llamadas de herramientas:

gog.gmail.search --query 'newer_than:1d' \
  | openclaw.invoke --tool message --action send --each --item-key message --args-json '{"provider":"telegram","to":"..."}'

Pasos LLM solo JSON (llm-task)

Para flujos de trabajo que necesitan un paso LLM estructurado, habilita la herramienta de plugin opcional llm-task y llámala desde Lobster. Esto mantiene el flujo de trabajo determinista y, al mismo tiempo, te permite clasificar/resumir/redactar con un modelo.

Habilita la herramienta:

{
  "plugins": {
    "entries": {
      "llm-task": { "enabled": true }
    }
  },
  "agents": {
    "list": [
      {
        "id": "main",
        "tools": { "alsoAllow": ["llm-task"] }
      }
    ]
  }
}

Úsala en un pipeline:

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
  }
}'

Consulta LLM Task para ver detalles y opciones de configuración.

Archivos de flujo de trabajo (.lobster)

Lobster puede ejecutar archivos de flujo de trabajo YAML/JSON con campos name, args, steps, env, condition y approval. En las llamadas de herramienta de OpenClaw, establece pipeline en la ruta del archivo.

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

Notas:

  • stdin: $step.stdout y stdin: $step.json pasan la salida de un paso anterior.
  • condition (o when) puede condicionar pasos según $step.approved.

Instalar Lobster

Los flujos de trabajo Lobster incluidos se ejecutan en proceso; no se requiere un binario lobster separado. El ejecutor integrado se distribuye con el plugin Lobster.

Si necesitas la CLI independiente de Lobster para desarrollo o pipelines externos, instálala desde el repositorio de Lobster y asegúrate de que lobster esté en PATH.

Habilitar la herramienta

Lobster es una herramienta de plugin opcional (no habilitada de forma predeterminada).

Recomendado (aditivo, seguro):

{
  "tools": {
    "alsoAllow": ["lobster"]
  }
}

O por agente:

{
  "agents": {
    "list": [
      {
        "id": "main",
        "tools": {
          "alsoAllow": ["lobster"]
        }
      }
    ]
  }
}

Evita usar tools.allow: ["lobster"] salvo que tengas intención de ejecutar en modo restrictivo de allowlist.

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 herramienta

run

Ejecuta un pipeline en modo 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\"}"
}

resume

Continúa un flujo de trabajo detenido después de la aprobación.

{
  "action": "resume",
  "token": "<resumeToken>",
  "approve": true
}

Entradas opcionales

  • cwd: Directorio de trabajo relativo para el pipeline (debe permanecer dentro del directorio de trabajo del Gateway).
  • timeoutMs: Aborta el flujo de trabajo si supera esta duración (predeterminado: 20000).
  • maxStdoutBytes: Aborta el flujo de trabajo si la salida supera este tamaño (predeterminado: 512000).
  • argsJson: Cadena JSON pasada a lobster run --args-json (solo archivos de flujo de trabajo).

Sobre de salida

Lobster devuelve un sobre JSON con uno de tres estados:

  • ok → finalizó correctamente
  • needs_approval → pausado; se requiere requiresApproval.resumeToken para reanudar
  • cancelled → denegado o cancelado explícitamente

La herramienta expone el sobre tanto en content (JSON legible) como en details (objeto sin procesar).

Aprobaciones

Si requiresApproval está presente, inspecciona el prompt y decide:

  • approve: true → reanudar y continuar con los efectos secundarios
  • approve: false → cancelar y finalizar el flujo de trabajo

Usa approve --preview-from-stdin --limit N para adjuntar una vista previa JSON a las solicitudes de aprobación sin 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

OpenProse combina bien con Lobster: usa /prose para orquestar la preparación multiagente y luego ejecuta un pipeline Lobster para aprobaciones deterministas. Si un programa Prose necesita Lobster, permite la herramienta lobster para subagentes mediante tools.subagents.tools. Consulta OpenProse.

Seguridad

  • Solo local en proceso - los flujos de trabajo se ejecutan dentro del proceso del Gateway; no hay llamadas de red desde el propio plugin.
  • Sin secretos - Lobster no administra OAuth; llama a las herramientas de OpenClaw que sí lo hacen.
  • Consciente del sandbox - deshabilitado cuando el contexto de herramienta está en sandbox.
  • Reforzado - tiempos de espera y límites de salida aplicados por el ejecutor integrado.

Solución de problemas

  • lobster timed out → aumenta timeoutMs o divide un pipeline largo.
  • lobster output exceeded maxStdoutBytes → aumenta maxStdoutBytes o reduce el tamaño de la salida.
  • lobster returned invalid JSON → asegúrate de que el pipeline se ejecute en modo herramienta e imprima solo JSON.
  • lobster failed → revisa los registros del Gateway para ver los detalles del error del ejecutor integrado.

Más información

Caso práctico: flujos de trabajo de la comunidad

Un ejemplo público: una CLI de "segundo cerebro" + pipelines Lobster que administran tres bóvedas Markdown (personal, pareja, compartida). La CLI emite JSON para estadísticas, listados de bandeja de entrada y análisis de contenido obsoleto; 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 se encarga del criterio (categorización) cuando está disponible y recurre a reglas deterministas cuando no.

Relacionado