Asosiy tarkibga o'tish

Lobster

Lobster — OpenClaw’ga aniq tasdiqlash nuqtalari bilan ko‘p bosqichli asboblar ketma-ketligini yagona, deterministik operatsiya sifatida bajarishga imkon beruvchi ish jarayoni qobig‘i.

Ilgak

Yordamchingiz o‘zini boshqaradigan asboblarni yaratishi mumkin. Ish jarayonini so‘rang, va 30 daqiqadan so‘ng sizda bitta chaqiruvda ishlaydigan CLI hamda quvurlar bo‘ladi. Lobster — yetishmayotgan bo‘lak: deterministik quvurlar, aniq tasdiqlar va qayta tiklanadigan holat.

Nega

Bugun murakkab ish jarayonlari ko‘plab oldinga-orqaga asbob chaqiruvlarini talab qiladi. Har bir chaqiruv tokenlarga tushadi va LLM har bir qadamni orkestratsiya qilishi kerak. Lobster bu orkestratsiyani tiplangan runtime’ga ko‘chiradi:
  • Ko‘p chaqiruvlar o‘rniga bitta: OpenClaw bitta Lobster asbob chaqiruvini bajaradi va tuzilgan natijani oladi.
  • Tasdiqlar ichiga qurilgan: Yon ta’sirlar (email yuborish, izoh joylash) aniq tasdiqlanmaguncha ish jarayonini to‘xtatadi.
  • Qayta tiklanadigan: To‘xtatilgan ish jarayonlari token qaytaradi; tasdiqlang va hammasini qayta ishga tushirmasdan davom eting.

Nega oddiy dasturlar o‘rniga DSL?

Lobster ataylab kichik. Maqsad “yangi til” emas, balki birinchi darajali tasdiqlar va davom ettirish tokenlari bilan bashorat qilinadigan, AI’ga qulay quvur spetsifikatsiyasidir.
  • Tasdiqlash/davom ettirish ichiga qurilgan: Oddiy dastur odamdan so‘rashi mumkin, ammo siz o‘zingiz alohida runtime ixtiro qilmasdan mustahkam token bilan to‘xtab davom eta olmaydi.
  • Deterministiklik + auditlanish: Quvurlar ma’lumotdir, shuning uchun ularni yozib olish, farqlash, qayta ijro etish va ko‘rib chiqish oson.
  • AI uchun cheklangan sirt: Kichik grammatika + JSON quvurlash “ijodiy” kod yo‘llarini kamaytiradi va tekshiruvni real qiladi.
  • Xavfsizlik siyosati ichiga singdirilgan: Timeoutlar, chiqish cheklovlari, sandbox tekshiruvlari va allowlistlar har bir skript emas, balki runtime tomonidan majburlanadi.
  • Hali ham dasturlanadigan: Har bir qadam istalgan CLI yoki skriptni chaqirishi mumkin. Agar JS/TS xohlasangiz, .lobster fayllarini koddan yarating.

Qanday ishlaydi

OpenClaw lokal lobster CLI’ni asbob rejimida ishga tushiradi va stdout’dan JSON konvertini tahlil qiladi. Agar quvur tasdiqlash uchun to‘xtasa, asbob keyinroq davom ettirish uchun resumeToken qaytaradi.

1. Naqsh: kichik CLI + JSON quvurlari + tasdiqlashlar

  1. JSON bilan gaplashadigan juda kichik buyruqlarni yarating, so‘ng ularni bitta Lobster chaqiruviga zanjirlab ulang. 3. (Quyida buyruq nomlariga misollar — o‘zingiznikiga almashtiring.)
4. inbox list --json
inbox categorize --json
inbox apply --json
5. {
  "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
}
  1. Agar quvur tasdiqlashni so‘rasa, token bilan davom ettiring:
46. {
  "action": "resume",
  "token": "<resumeToken>",
  "approve": true
}
  1. AI ish jarayonini ishga tushiradi; Lobster bosqichlarni bajaradi. 9. Tasdiqlash darvozalari yon ta’sirlarni aniq va audit qilinadigan holatda saqlaydi.
  2. Misol: kirish elementlarini asbob chaqiruvlariga moslash:
11. gog.gmail.search --query 'newer_than:1d' \
  | openclaw.invoke --tool message --action send --each --item-key message --args-json '{"provider":"telegram","to":"..."}'

12. Faqat JSON bo‘lgan LLM bosqichlari (llm-task)

  1. Tuzilgan LLM bosqichi kerak bo‘lgan ish jarayonlari uchun ixtiyoriy llm-task plagin asbobini yoqing va uni Lobster’dan chaqiring. 14. Bu ish jarayonini deterministik holatda saqlaydi, shu bilan birga model yordamida tasniflash/xulosa qilish/qoralama yozishga imkon beradi.
  2. Vositanı yoqing:
18. openclaw.invoke --tool llm-task --action json --args-json '{
  "prompt": "Given the input email, return intent and draft.",
  "input": { "subject": "Hello", "body": "Can you help?" },
  "schema": {
    "type": "object",
    "properties": {
      "intent": { "type": "string" },
      "draft": { "type": "string" }
    },
    "required": ["intent", "draft"],
    "additionalProperties": false
  }
}'
  1. Uni quvurda ishlating:
18. openclaw.invoke --tool llm-task --action json --args-json '{
  "prompt": "Given the input email, return intent and draft.",
  "input": { "subject": "Hello", "body": "Can you help?" },
  "schema": {
    "type": "object",
    "properties": {
      "intent": { "type": "string" },
      "draft": { "type": "string" }
    },
    "required": ["intent", "draft"],
    "additionalProperties": false
  }
}'
  1. Tafsilotlar va sozlash variantlari uchun LLM Task ga qarang.

50. Workflow fayllari (.lobster)

  1. Lobster name, args, steps, env, condition va approval maydonlariga ega YAML/JSON ish jarayoni fayllarini ishga tushira oladi. 22. OpenClaw asbob chaqiruvlarida pipeline ni fayl yo‘liga o‘rnating.
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
  1. Eslatmalar:
  • OpenClaw Gateway ishlaydigan xuddi shu xostga Lobster CLI’ni o‘rnating (Lobster repozitoriyasiga qarang) va lobster PATHda ekanini ta’minlang.
  • Agar maxsus binar joylashuvdan foydalanmoqchi bo‘lsangiz, asbob chaqiruvida mutlaq lobsterPath ni bering.

27. Lobster’ni o‘rnating

  1. OpenClaw Gateway ishlaydigan xuddi shu xostga Lobster CLI’ni o‘rnating (Lobster repozitoriyasiga qarang) va lobster PATHda ekanini ta’minlang.
  2. Agar maxsus binar joylashuvdan foydalanmoqchi bo‘lsangiz, asbob chaqiruvida mutlaq lobsterPath ni bering.

30. Asbobni yoqing

  1. Lobster — ixtiyoriy plagin asbob (sukut bo‘yicha yoqilmagan).
  2. Tavsiya etiladi (qo‘shimcha, xavfsiz):
33. {
  "tools": {
    "alsoAllow": ["lobster"]
  }
}
  1. Yoki agent bo‘yicha:
35. {
  "agents": {
    "list": [
      {
        "id": "main",
        "tools": {
          "alsoAllow": ["lobster"]
        }
      }
    ]
  }
}
  1. Cheklovchi allowlist rejimida ishlashni ko‘zlamagan bo‘lsangiz, tools.allow: ["lobster"] dan foydalanishdan saqlaning.
  2. Eslatma: allowlistlar ixtiyoriy plaginlar uchun opt-in hisoblanadi. 38. Agar allowlistingiz faqat lobster kabi plagin asboblarini nomlasa, OpenClaw asosiy asboblarni yoqilgan holda qoldiradi. 39. Asosiy asboblarni cheklash uchun allowlistga xohlagan asosiy asboblar yoki guruhlarni ham kiriting.

40. Misol: Email saralash

  1. Lobster’siz:
46. {
  "ok": true,
  "status": "needs_approval",
  "output": [{ "summary": "5 need replies, 2 need action" }],
  "requiresApproval": {
    "type": "approval_request",
    "prompt": "Send 2 draft replies?",
    "items": [],
    "resumeToken": "..."
  }
}
  1. Lobster bilan:
48. {
  "action": "resume",
  "token": "<resumeToken>",
  "approve": true
}
  1. JSON konvertini qaytaradi (qisqartirilgan):
46. {
  "ok": true,
  "status": "needs_approval",
  "output": [{ "summary": "5 need replies, 2 need action" }],
  "requiresApproval": {
    "type": "approval_request",
    "prompt": "Send 2 draft replies?",
    "items": [],
    "resumeToken": "..."
  }
}
  1. Foydalanuvchi tasdiqlaydi → davom ettirish:
48. {
  "action": "resume",
  "token": "<resumeToken>",
  "approve": true
}
  1. Bitta ish jarayoni. 50. Deterministik. 1. Xavfsiz.

2. Asbob parametrlari

3. run

  1. Asbob rejimida pipeline-ni ishga tushiring.
5. {
  "action": "run",
  "pipeline": "gog.gmail.search --query 'newer_than:1d' | email.triage",
  "cwd": "/path/to/workspace",
  "timeoutMs": 30000,
  "maxStdoutBytes": 512000
}
  1. Argumentlar bilan workflow faylini ishga tushiring:
7. {
  "action": "run",
  "pipeline": "/path/to/inbox-triage.lobster",
  "argsJson": "{\"tag\":\"family\"}"
}

8. resume

  1. Tasdiqlangandan so‘ng to‘xtatilgan workflow-ni davom ettiring.
10. {
  "action": "resume",
  "token": "<resumeToken>",
  "approve": true
}

11. Ixtiyoriy kirishlar

  • Asbob konvertni ham content (chiroyli JSON), ham details (xom obyekt) da ko‘rsatadi.
    1. cwd: Pipeline uchun ishchi katalog (standart bo‘yicha joriy jarayonning ishchi katalogi).
    1. timeoutMs: Agar subprocess bu davomiylikdan oshsa, uni to‘xtatadi (standart: 20000).
    1. maxStdoutBytes: Agar stdout bu hajmdan oshsa, subprocess-ni to‘xtatadi (standart: 512000).
    1. argsJson: lobster run --args-json ga uzatiladigan JSON satri (faqat workflow fayllari uchun).

17. Chiqish konverti

  1. Lobster uchta holatdan biri bilan JSON konvertini qaytaradi:
    1. ok → muvaffaqiyatli yakunlandi
    1. needs_approval → pauza qilingan; davom ettirish uchun requiresApproval.resumeToken talab qilinadi
    1. cancelled → ochiqchasiga rad etilgan yoki bekor qilingan
  1. Asbob konvertni ham content (chiroyli JSON), ham details (xom obyekt) da ko‘rsatadi.

23. Tasdiqlar

  1. Agar requiresApproval mavjud bo‘lsa, so‘rovni ko‘rib chiqing va qaror qabul qiling:
    1. approve: true → davom ettiring va yon ta’sirlarni davom ettiring
    1. approve: false → bekor qiling va workflow-ni yakunlang
  1. Maxsus jq/heredoc bog‘lovchisiz tasdiq so‘rovlariga JSON ko‘rinishini biriktirish uchun approve --preview-from-stdin --limit N dan foydalaning. 28. Resume tokenlari endi ixcham: Lobster workflow-ni davom ettirish holatini o‘zining state katalogida saqlaydi va kichik token kalitini qaytaradi.

29. OpenProse

  1. OpenProse Lobster bilan yaxshi ishlaydi: ko‘p-agentli tayyorgarlikni boshqarish uchun /prose dan foydalaning, so‘ng deterministik tasdiqlar uchun Lobster pipeline-ni ishga tushiring. 31. Agar Prose dasturiga Lobster kerak bo‘lsa, sub-agentlar uchun tools.subagents.tools orqali lobster asbobiga ruxsat bering. 32. OpenProse ni ko‘ring.

33. Xavfsizlik

    1. Faqat mahalliy subprocess — plagin o‘zi tarmoq chaqiruvlarini qilmaydi.
    1. Maxfiy ma’lumotlar yo‘q — Lobster OAuth-ni boshqarmaydi; u buni qiladigan OpenClaw asboblarini chaqiradi.
    1. Sandbox-ga mos — asbob konteksti sandbox qilingan bo‘lsa, o‘chiriladi.
    1. Mustahkamlangan — agar ko‘rsatilsa, lobsterPath mutlaq bo‘lishi shart; timeout va chiqish cheklovlari majburiy.

38. Muammolarni bartaraf etish

    1. lobster subprocess timed outtimeoutMs ni oshiring yoki uzun pipeline-ni bo‘ling.
    1. lobster output exceeded maxStdoutBytesmaxStdoutBytes ni oshiring yoki chiqish hajmini kamaytiring.
    1. lobster returned invalid JSON → pipeline asbob rejimida ishlashini va faqat JSON chop etishini ta’minlang.
    1. lobster failed (code …) → stderr-ni ko‘rish uchun xuddi shu pipeline-ni terminalda ishga tushiring.

43. Batafsil ma’lumot

46. Amaliy tadqiqot: hamjamiyat workflow-lari

  1. Bitta ommaviy misol: uchta Markdown omborini (shaxsiy, hamkor, umumiy) boshqaradigan “ikkinchi miya” CLI + Lobster pipeline-lari. 48. CLI statistika, inbox ro‘yxatlari va eskirganlarni skanerlash uchun JSON chiqaradi; Lobster esa bu buyruqlarni weekly-review, inbox-triage, memory-consolidation va shared-task-sync kabi, har biri tasdiqlash darvozalari bilan workflow-larga zanjirlaydi. 49. AI mavjud bo‘lganda hukm chiqarishni (toifalashni) bajaradi va mavjud bo‘lmaganda deterministik qoidalarga tayanadi.