Tools
Омар
Lobster — это оболочка рабочих процессов, которая позволяет OpenClaw выполнять многошаговые последовательности инструментов как одну детерминированную операцию с явными контрольными точками утверждения.
Lobster — это авторский слой на уровень выше отсоединенной фоновой работы. Для оркестрации потоков поверх отдельных задач см. TaskFlow (openclaw tasks flow). Журнал активности задач см. в openclaw tasks.
Hook
Ваш ассистент может создавать инструменты, которые управляют им самим. Попросите рабочий процесс, и через 30 минут у вас будет CLI плюс конвейеры, запускающиеся одним вызовом. Lobster — недостающая часть: детерминированные конвейеры, явные утверждения и возобновляемое состояние.
Зачем
Сегодня сложные рабочие процессы требуют множества встречных вызовов инструментов. Каждый вызов расходует токены, а LLM должна оркестрировать каждый шаг. Lobster переносит эту оркестрацию в типизированную среду выполнения:
- Один вызов вместо множества: OpenClaw выполняет один вызов инструмента Lobster и получает структурированный результат.
- Утверждения встроены: Побочные эффекты (отправить письмо, опубликовать комментарий) останавливают рабочий процесс до явного утверждения.
- Возобновляемость: Остановленные рабочие процессы возвращают токен; утвердите и возобновите без повторного выполнения всего процесса.
Почему DSL, а не обычные программы?
Lobster намеренно невелик. Цель — не «новый язык», а предсказуемая, удобная для ИИ спецификация конвейеров с первоклассными утверждениями и токенами возобновления.
- Утверждение/возобновление встроено: Обычная программа может запросить решение у человека, но она не может приостановиться и возобновиться с долговечным токеном, если вы сами не создадите такую среду выполнения.
- Детерминизм + проверяемость: Конвейеры являются данными, поэтому их легко логировать, сравнивать, воспроизводить и ревьюить.
- Ограниченная поверхность для ИИ: Небольшая грамматика + JSON-конвейеризация сокращают «творческие» пути кода и делают валидацию реалистичной.
- Политика безопасности встроена: Тайм-ауты, лимиты вывода, проверки песочницы и списки разрешений применяются средой выполнения, а не каждым скриптом.
- По-прежнему программируемо: Каждый шаг может вызвать любой CLI или скрипт. Если вам нужны JS/TS, генерируйте файлы
.lobsterиз кода.
Как это работает
OpenClaw запускает рабочие процессы Lobster внутри процесса с помощью встроенного раннера. Внешний подпроцесс CLI не запускается; движок рабочего процесса выполняется внутри процесса gateway и напрямую возвращает JSON-конверт.
Если конвейер приостанавливается для утверждения, инструмент возвращает resumeToken, чтобы вы могли продолжить позже.
Паттерн: небольшой CLI + JSON-каналы + утверждения
Создавайте небольшие команды, которые говорят на JSON, затем связывайте их в один вызов Lobster. (Имена команд ниже приведены как пример — замените их своими.)
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}Если конвейер запрашивает утверждение, возобновите его с токеном:
{ "action": "resume", "token": "<resumeToken>", "approve": true}ИИ запускает рабочий процесс; Lobster выполняет шаги. Шлюзы утверждения сохраняют побочные эффекты явными и проверяемыми.
Пример: сопоставление входных элементов с вызовами инструментов:
gog.gmail.search --query 'newer_than:1d' \ | openclaw.invoke --tool message --action send --each --item-key message --args-json '{"provider":"telegram","to":"..."}'LLM-шаги только с JSON (llm-task)
Для рабочих процессов, которым нужен структурированный LLM-шаг, включите опциональный
инструмент plugin llm-task и вызывайте его из Lobster. Это сохраняет рабочий процесс
детерминированным, но все равно позволяет классифицировать, резюмировать и составлять черновики с помощью модели.
Включите инструмент:
{ "plugins": { "entries": { "llm-task": { "enabled": true } } }, "agents": { "list": [ { "id": "main", "tools": { "alsoAllow": ["llm-task"] } } ] }}Важное ограничение: встроенный Lobster и openclaw.invoke
Встроенный plugin Lobster запускает рабочие процессы внутри процесса в gateway. В этом встроенном режиме openclaw.invoke не наследует автоматически URL gateway или контекст аутентификации для вложенных вызовов инструментов OpenClaw CLI.
Это означает, что такой паттерн сейчас ненадежен во встроенном раннере:
openclaw.invoke --tool llm-task --action json --args-json '{ ... }'Используйте пример ниже только при запуске автономного Lobster CLI в окружении, где openclaw.invoke уже настроен с правильным контекстом gateway и аутентификации.
Используйте его в автономном конвейере Lobster CLI:
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 }}'Если сегодня вы используете встроенный plugin Lobster, предпочитайте один из вариантов:
- прямой вызов инструмента
llm-taskвне Lobster, или - шаги без
openclaw.invokeвнутри конвейера Lobster, пока не будет добавлен поддерживаемый встроенный мост.
Подробности и параметры конфигурации см. в LLM Task.
Файлы рабочих процессов (.lobster)
Lobster может запускать YAML/JSON-файлы рабочих процессов с полями name, args, steps, env, condition и approval. В вызовах инструментов OpenClaw задайте pipeline равным пути к файлу.
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.approvedПримечания:
stdin: $step.stdoutиstdin: $step.jsonпередают вывод предыдущего шага.condition(илиwhen) может ограничивать выполнение шагов на основе$step.approved.
Установка Lobster
Встроенные рабочие процессы Lobster выполняются внутри процесса; отдельный бинарный файл lobster не требуется. Встроенный раннер поставляется с plugin Lobster.
Если вам нужен автономный Lobster CLI для разработки или внешних конвейеров, установите его из репозитория Lobster и убедитесь, что lobster находится в PATH.
Включение инструмента
Lobster — опциональный инструмент plugin (по умолчанию не включен).
Рекомендуемый вариант (аддитивный, безопасный):
{ "tools": { "alsoAllow": ["lobster"] }}Или для отдельного агента:
{ "agents": { "list": [ { "id": "main", "tools": { "alsoAllow": ["lobster"] } } ] }}Избегайте использования tools.allow: ["lobster"], если вы не собираетесь работать в ограничительном режиме списка разрешений.
Пример: сортировка почты
Без 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)С Lobster:
{ "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": "workspace", "timeoutMs": 30000, "maxStdoutBytes": 512000}Запуск файла рабочего процесса с аргументами:
{ "action": "run", "pipeline": "/path/to/inbox-triage.lobster", "argsJson": "{\"tag\":\"family\"}"}resume
Продолжает остановленный рабочий процесс после утверждения.
{ "action": "resume", "token": "<resumeToken>", "approve": true}Опциональные входные данные
cwd: Относительный рабочий каталог для конвейера (должен оставаться внутри рабочего каталога gateway).timeoutMs: Прервать рабочий процесс, если он превышает эту длительность (по умолчанию: 20000).maxStdoutBytes: Прервать рабочий процесс, если вывод превышает этот размер (по умолчанию: 512000).argsJson: JSON-строка, передаваемая вlobster run --args-json(только для файлов рабочих процессов).
Конверт вывода
Lobster возвращает JSON-конверт с одним из трех статусов:
ok→ успешно завершеноneeds_approval→ приостановлено; для возобновления требуетсяrequiresApproval.resumeTokencancelled→ явно отклонено или отменено
Инструмент предоставляет конверт как в content (форматированный JSON), так и в details (сырой объект).
Утверждения
Если присутствует requiresApproval, проверьте приглашение и примите решение:
approve: true→ возобновить и продолжить побочные эффектыapprove: false→ отменить и финализировать рабочий процесс
Используйте approve --preview-from-stdin --limit N, чтобы прикрепить JSON-предпросмотр к запросам утверждения без пользовательской связки jq/heredoc. Токены возобновления теперь компактны: Lobster хранит состояние возобновления рабочего процесса в своем каталоге состояния и возвращает небольшой ключ-токен.
OpenProse
OpenProse хорошо сочетается с Lobster: используйте /prose для оркестрации подготовки несколькими агентами, затем запускайте конвейер Lobster для детерминированных утверждений. Если программе Prose нужен Lobster, разрешите инструмент lobster для субагентов через tools.subagents.tools. См. OpenProse.
Безопасность
- Только локально внутри процесса - рабочие процессы выполняются внутри процесса gateway; сам plugin не выполняет сетевых вызовов.
- Без секретов - Lobster не управляет OAuth; он вызывает инструменты OpenClaw, которые это делают.
- Учитывает песочницу - отключается, когда контекст инструмента находится в песочнице.
- Усиленная защита - встроенный раннер применяет тайм-ауты и лимиты вывода.
Устранение неполадок
lobster timed out→ увеличьтеtimeoutMsили разделите длинный конвейер.lobster output exceeded maxStdoutBytes→ увеличьтеmaxStdoutBytesили уменьшите размер вывода.lobster returned invalid JSON→ убедитесь, что конвейер запускается в режиме инструмента и печатает только JSON.lobster failed→ проверьте логи gateway для подробностей ошибки встроенного раннера.
Подробнее
Пример использования: рабочие процессы сообщества
Один публичный пример: CLI «второго мозга» + конвейеры Lobster, которые управляют тремя Markdown-хранилищами (личным, партнерским, общим). CLI выводит JSON для статистики, списков входящих и сканирования устаревших материалов; Lobster связывает эти команды в рабочие процессы вроде weekly-review, inbox-triage, memory-consolidation и shared-task-sync, каждый со шлюзами утверждения. ИИ выполняет оценочные задачи (категоризацию), когда доступен, и возвращается к детерминированным правилам, когда недоступен.
- Обсуждение: https://x.com/plattenschieber/status/2014508656335770033
- Репозиторий: https://github.com/bloomedai/brain-cli
Связанные разделы
- Автоматизация - планирование рабочих процессов Lobster
- Обзор автоматизации - все механизмы автоматизации
- Обзор инструментов - все доступные инструменты агента