Tools
Лобстер
Lobster виконує багатоетапні конвеєри інструментів як один детермінований виклик інструмента з
явними контрольними точками схвалення та токенами відновлення. Він розташований на один рівень вище
відокремленої фонової роботи: для оркестрації потоків між багатьма відокремленими завданнями
див. Task Flow (openclaw tasks flow); журнал активності завдань
див. у розділі Фонові завдання.
Навіщо
Без Lobster багатоетапна робота потребує численних циклів викликів інструментів, а модель оркеструє кожен етап. Lobster переносить цю оркестрацію до типізованого середовища виконання:
- Один виклик замість багатьох: один виклик інструмента Lobster повертає структурований результат для всього конвеєра.
- Вбудовані схвалення: побічні дії (надсилання, публікація, видалення) призупиняють робочий процес до явного схвалення.
- Можливість відновлення: призупинений робочий процес повертає токен; схваліть і відновіть його без повторного виконання попередніх етапів.
Lobster — це невелика обмежена DSL, а не універсальна мова сценаріїв:
схвалення та відновлення є надійною вбудованою примітивною операцією; конвеєри представлені даними (їх легко
журналювати, порівнювати, відтворювати й перевіряти); компактна граматика обмежує «творчі» шляхи виконання коду, тож
перевірка залишається реалістичною; обмеження часу, обсягу виведення, перевірки пісочниці та
списки дозволів застосовує середовище виконання, а не кожен сценарій. Кожен етап усе одно може
викликати будь-який CLI або сценарій — створюйте файли .lobster за допомогою інших інструментів, якщо
вам потрібна функціональніша мова опису.
Без Lobster регулярне опрацювання електронної пошти має такий вигляд:
Користувач: "Перевір мою пошту та підготуй чернетки відповідей"→ openclaw викликає gmail.list→ LLM створює підсумок→ Користувач: "підготуй чернетки відповідей на №2 та №5"→ LLM створює чернетки→ Користувач: "надішли №2"→ openclaw викликає gmail.send(повторюється щодня, без пам’яті про вже опрацьоване)З Lobster та сама робота виконується одним викликом, який призупиняється для схвалення та відновлюється:
{ "action": "run", "pipeline": "email.triage --limit 20", "timeoutMs": 30000 }{ "ok": true, "status": "needs_approval", "output": [{ "summary": "5 потребують відповіді, 2 потребують дії" }], "requiresApproval": { "type": "approval_request", "prompt": "Надіслати 2 чернетки відповідей?", "items": [], "resumeToken": "..." }}Як це працює
OpenClaw запускає робочі процеси Lobster у межах процесу, використовуючи вбудований
пакет @clawdbot/lobster як інтегрований засіб виконання. Зовнішній підпроцес lobster
не запускається; виклик інструмента безпосередньо повертає конверт JSON. Якщо
конвеєр призупиняється для схвалення, конверт містить токен відновлення (або короткий
ідентифікатор схвалення), щоб ви могли продовжити пізніше.
Увімкнення
Lobster — це необов’язковий інструмент Plugin, який типово не ввімкнено. Він постачається в комплекті, тому окреме встановлення не потрібне — просто дозвольте інструмент:
{ "tools": { "alsoAllow": ["lobster"] }}Або для окремого агента:
{ "agents": { "list": [ { "id": "main", "tools": { "alsoAllow": ["lobster"] } } ] }}Інструмент повністю вимкнений у контекстах інструментів із пісочницею.
Якщо вам потрібен автономний CLI Lobster для розробки або зовнішніх конвеєрів
(поза вбудованим засобом виконання gateway), установіть його з
репозиторію Lobster і додайте lobster до
PATH.
Шаблон: невеликий 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}Приклад: перетворення вхідних елементів на виклики інструментів:
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 або контекст автентифікації для вкладених викликів інструментів CLI OpenClaw.
Це означає, що цей шаблон наразі ненадійний у вбудованому засобі виконання:
openclaw.invoke --tool llm-task --action json --args-json '{ ... }'Використовуйте наведений нижче приклад лише під час запуску автономного CLI Lobster у
середовищі, де openclaw.invoke вже налаштовано з правильним
контекстом gateway та автентифікації.
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.
Файли робочих процесів (.lobster)
Lobster може запускати файли робочих процесів YAML/JSON із полями name, args, steps, env,
condition та approval. У виклику інструмента задайте для 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.
Параметри інструмента
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\"}"}| Поле | Типове значення | Примітки |
|---|---|---|
pipeline |
обов’язкове | Рядок вбудованого конвеєра або шлях із закінченням .lobster/.yaml/.yml/.json до файлу робочого процесу. |
cwd |
cwd gateway | Відносний робочий каталог; має визначатися всередині робочого каталогу gateway (абсолютні шляхи відхиляються). |
timeoutMs |
20000 |
Перериває виконання в разі перевищення. |
maxStdoutBytes |
512000 |
Перериває виконання, якщо перехоплені stdout або stderr перевищують цей розмір. |
argsJson |
- | Рядок JSON з аргументами для файлу робочого процесу (ігнорується для вбудованих конвеєрів). |
resume
{ "action": "resume", "token": "<resumeToken>", "approve": true}resume приймає token (повний токен відновлення з requiresApproval)
або approvalId (короткий ідентифікатор із того самого об’єкта) — використовуйте те, що повернув призупинений
запуск. approve є обов’язковим.
Режим керованого Task Flow
Передавання flowControllerId і flowGoal до run (або flowId і
flowExpectedRevision до resume) спрямовує виклик через керований API
Task Flow середовища виконання Plugin замість повернення
простого конверта: OpenClaw створює або відновлює постійний запис потоку, застосовує до нього
конверт Lobster (waiting під час очікування схвалення, succeeded/failed після
завершення) і повертає { ok, envelope, flow, mutation }. Для цього режиму потрібне
прив’язане середовище виконання Task Flow; він призначений для коду Plugin або контролера, якому потрібен
постійний стан потоку після перезапусків gateway, а не для звичайного разового використання агентом.
Конверт виведення
Lobster повертає конверт JSON з одним із трьох статусів:
ok— успішно завершеноneeds_approval— призупинено;requiresApprovalміститьresumeTokenі короткийapprovalId, кожен із яких може відновити виконанняcancelled— явно відхилено або скасовано
Інструмент надає конверт і в content (відформатований JSON), і в details
(необроблений об’єкт).
Схвалення
Якщо наявне requiresApproval, перегляньте запит і вирішіть:
approve: true— відновити й продовжити побічні діїapprove: false— скасувати та завершити робочий процес
Використовуйте approve --preview-from-stdin --limit N, щоб додати попередній перегляд JSON до
запитів на схвалення без спеціальних зв’язок jq/heredoc. Стан відновлення зберігається у вигляді
невеликих файлів JSON у каталозі стану Lobster (типово ~/.lobster/state,
можна змінити через LOBSTER_STATE_DIR); сам токен кодує лише
вказівник на цей стан, а не повний стан конвеєра.
OpenProse
OpenProse добре поєднується з Lobster: використовуйте /prose для оркестрації багатоагентної
підготовки, а потім запускайте конвеєр Lobster для детермінованих схвалень. Якщо програмі Prose
потрібен Lobster, дозвольте інструмент lobster для підагентів через
tools.subagents.tools. Див. OpenProse.
Безпека
- Лише локально в межах процесу — робочі процеси виконуються всередині процесу gateway; сам Plugin не здійснює мережевих викликів.
- Без секретів — Lobster не керує OAuth; він викликає інструменти OpenClaw, які це роблять.
- З урахуванням пісочниці — вимикається, коли контекст інструмента працює в пісочниці.
- Посилений захист — обмеження часу й обсягу виведення застосовує вбудований засіб виконання.
Усунення несправностей
| Помилка | Причина / виправлення |
|---|---|
lobster runtime timed out |
Конвеєр перевищив timeoutMs. Збільште значення або розділіть конвеєр. |
lobster stdout exceeded maxStdoutBytes (або stderr) |
Перехоплене виведення перевищило обмеження. Збільште maxStdoutBytes або скоротіть виведення. |
run --args-json must be valid JSON |
Не вдалося розібрати argsJson (під час запуску файлу робочого процесу). Виправте рядок JSON. |
lobster runtime failed (або інше повідомлення runtime_error) |
Вбудоване середовище виконання повернуло конверт помилки. Перевірте журнали 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
Пов’язані матеріали
- Автоматизація — усі механізми автоматизації
- Огляд інструментів — усі доступні інструменти агента