Tools

Лобстер

Lobster виконує багатоетапні конвеєри інструментів як один детермінований виклик інструмента з явними контрольними точками схвалення та токенами відновлення. Він розташований на один рівень вище відокремленої фонової роботи: для оркестрації потоків між багатьма відокремленими завданнями див. Task Flow (openclaw tasks flow); журнал активності завдань див. у розділі Фонові завдання.

Навіщо

Без Lobster багатоетапна робота потребує численних циклів викликів інструментів, а модель оркеструє кожен етап. Lobster переносить цю оркестрацію до типізованого середовища виконання:

  • Один виклик замість багатьох: один виклик інструмента Lobster повертає структурований результат для всього конвеєра.
  • Вбудовані схвалення: побічні дії (надсилання, публікація, видалення) призупиняють робочий процес до явного схвалення.
  • Можливість відновлення: призупинений робочий процес повертає токен; схваліть і відновіть його без повторного виконання попередніх етапів.

Lobster — це невелика обмежена DSL, а не універсальна мова сценаріїв: схвалення та відновлення є надійною вбудованою примітивною операцією; конвеєри представлені даними (їх легко журналювати, порівнювати, відтворювати й перевіряти); компактна граматика обмежує «творчі» шляхи виконання коду, тож перевірка залишається реалістичною; обмеження часу, обсягу виведення, перевірки пісочниці та списки дозволів застосовує середовище виконання, а не кожен сценарій. Кожен етап усе одно може викликати будь-який CLI або сценарій — створюйте файли .lobster за допомогою інших інструментів, якщо вам потрібна функціональніша мова опису.

Без Lobster регулярне опрацювання електронної пошти має такий вигляд:

text
Користувач: "Перевір мою пошту та підготуй чернетки відповідей"→ openclaw викликає gmail.list→ LLM створює підсумок→ Користувач: "підготуй чернетки відповідей на №2 та №5"→ LLM створює чернетки→ Користувач: "надішли №2"→ openclaw викликає gmail.send(повторюється щодня, без пам’яті про вже опрацьоване)

З Lobster та сама робота виконується одним викликом, який призупиняється для схвалення та відновлюється:

json
{ "action": "run", "pipeline": "email.triage --limit 20", "timeoutMs": 30000 }
json
{  "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, який типово не ввімкнено. Він постачається в комплекті, тому окреме встановлення не потрібне — просто дозвольте інструмент:

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

Або для окремого агента:

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

Інструмент повністю вимкнений у контекстах інструментів із пісочницею.

Якщо вам потрібен автономний CLI Lobster для розробки або зовнішніх конвеєрів (поза вбудованим засобом виконання gateway), установіть його з репозиторію Lobster і додайте lobster до PATH.

Шаблон: невеликий CLI + канали JSON + схвалення

Створюйте невеликі команди, що працюють із JSON, а потім об’єднуйте їх у один виклик Lobster. (Наведені нижче назви команд є прикладами — замініть їх власними.)

bash
inbox list --jsoninbox categorize --jsoninbox apply --json
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}

Якщо конвеєр запитує схвалення, відновіть його за допомогою токена:

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

Приклад: перетворення вхідних елементів на виклики інструментів:

bash
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:

json
{  "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.

Це означає, що цей шаблон наразі ненадійний у вбудованому засобі виконання:

lobster
openclaw.invoke --tool llm-task --action json --args-json '{ ... }'

Використовуйте наведений нижче приклад лише під час запуску автономного CLI Lobster у середовищі, де openclaw.invoke вже налаштовано з правильним контекстом gateway та автентифікації.

lobster
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 шлях до файлу.

yaml
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

json
{  "action": "run",  "pipeline": "gog.gmail.search --query 'newer_than:1d' | email.triage",  "cwd": "workspace",  "timeoutMs": 30000,  "maxStdoutBytes": 512000}

Запуск файлу робочого процесу з аргументами:

json
{  "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

json
{  "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, кожен із контрольними точками затвердження. ШІ виконує завдання, що потребують судження (категоризацію), коли він доступний, а коли ні — переходить до детермінованих правил.

Пов’язані матеріали

Was this useful?
On this page

On this page