Lobster बहु-चरणीय टूल पाइपलाइनों को एक नियतात्मक टूल कॉल के रूप में चलाता है, जिसमें
स्पष्ट अनुमोदन चेकपॉइंट और फिर से शुरू करने के टोकन होते हैं। यह अलग किए गए बैकग्राउंड कार्य से
एक स्तर ऊपर स्थित है: कई अलग किए गए कार्यों में प्रवाहों को व्यवस्थित करने के लिए,
Task Flow (openclaw tasks flow) देखें; कार्य
गतिविधि लेजर के लिए, बैकग्राउंड कार्य देखें।
क्यों
Lobster के बिना, बहु-चरणीय कार्य में कई राउंड-ट्रिप टूल कॉल लगते हैं, जिनमें
मॉडल प्रत्येक चरण को व्यवस्थित करता है। Lobster इस व्यवस्था को टाइप किए गए
रनटाइम में ले जाता है:
- कई के बजाय एक कॉल: एक Lobster टूल कॉल पूरी पाइपलाइन के लिए संरचित
परिणाम लौटाता है।
- अंतर्निहित अनुमोदन: दुष्प्रभाव (भेजना, पोस्ट करना, हटाना) कार्यप्रवाह को
तब तक रोक देते हैं, जब तक स्पष्ट रूप से अनुमोदन न दिया जाए।
- फिर से शुरू करने योग्य: रोका गया कार्यप्रवाह एक टोकन लौटाता है; पहले के
चरणों को दोबारा चलाए बिना अनुमोदन दें और फिर से शुरू करें।
Lobster एक सामान्य स्क्रिप्टिंग भाषा के बजाय एक छोटा, सीमित DSL है:
अनुमोदन/फिर से शुरू करना एक टिकाऊ, अंतर्निहित प्रिमिटिव है; पाइपलाइनें डेटा हैं (जिन्हें
लॉग करना, अंतर देखना, फिर से चलाना और समीक्षा करना आसान है); छोटा व्याकरण “रचनात्मक” कोड पथों को सीमित करता है, जिससे
सत्यापन व्यावहारिक बना रहता है; टाइमआउट, आउटपुट सीमाएँ, सैंडबॉक्स जाँच और
अनुमति-सूचियाँ प्रत्येक स्क्रिप्ट के बजाय रनटाइम द्वारा लागू की जाती हैं। प्रत्येक चरण फिर भी
किसी भी CLI या स्क्रिप्ट को कॉल कर सकता है—यदि आप अधिक समृद्ध लेखन भाषा चाहते हैं, तो अन्य टूलिंग से
.lobster फ़ाइलें जनरेट करें।
Lobster के बिना, बार-बार होने वाली ईमेल छँटाई इस तरह दिखती है:
Lobster के साथ, वही कार्य एक कॉल है जो अनुमोदन के लिए रुकता है और फिर से शुरू होता है:
यह कैसे काम करता है
OpenClaw बंडल किए गए
@clawdbot/lobster पैकेज को एम्बेडेड रनर के रूप में उपयोग करके Lobster कार्यप्रवाहों को इन-प्रोसेस चलाता है। कोई बाहरी lobster
सबप्रोसेस शुरू नहीं किया जाता; टूल कॉल सीधे JSON एनवेलप लौटाता है। यदि
पाइपलाइन अनुमोदन के लिए रुकती है, तो एनवेलप में फिर से शुरू करने का टोकन (या छोटा
अनुमोदन ID) होता है, ताकि आप बाद में जारी रख सकें।
सक्षम करना
Lobster एक वैकल्पिक Plugin टूल है, जो डिफ़ॉल्ट रूप से सक्षम नहीं होता। यह
बंडल रूप में आता है, इसलिए अलग स्थापना चरण की आवश्यकता नहीं है—बस टूल को अनुमति दें:
या प्रत्येक एजेंट के लिए:
alsoAllow अन्य मुख्य टूलों को प्रतिबंधित किए बिना सक्रिय टूल प्रोफ़ाइल के ऊपर
lobster जोड़ता है। केवल तभी tools.allow का उपयोग करें, जब आप इसके बजाय प्रतिबंधात्मक
अनुमति-सूची मोड चाहते हों।
सैंडबॉक्स किए गए टूल संदर्भों के लिए यह टूल पूरी तरह अक्षम होता है।
यदि आपको विकास या बाहरी पाइपलाइनों के लिए स्टैंडअलोन Lobster CLI चाहिए
(एम्बेडेड Gateway रनर के बाहर), तो इसे
Lobster रिपॉज़िटरी से स्थापित करें और lobster को
PATH पर रखें।
पैटर्न: छोटा CLI + JSON पाइप + अनुमोदन
JSON में संचार करने वाले छोटे कमांड बनाएँ, फिर उन्हें एक Lobster कॉल में शृंखलाबद्ध करें।
(नीचे दिए गए उदाहरण कमांड नामों को अपने नामों से बदलें।)
यदि पाइपलाइन अनुमोदन माँगती है, तो टोकन के साथ फिर से शुरू करें:
उदाहरण: इनपुट आइटम को टूल कॉल में मैप करें:
केवल-JSON LLM चरण (llm-task)
किसी कार्यप्रवाह के भीतर संरचित LLM चरण के लिए, वैकल्पिक
llm-task Plugin टूल को सक्षम करें और उसे Lobster से कॉल करें:
महत्वपूर्ण सीमा: एम्बेडेड Lobster बनाम openclaw.invoke
बंडल किया गया Lobster Plugin Gateway के भीतर कार्यप्रवाहों को इन-प्रोसेस चलाता है।
इस एम्बेडेड मोड में, नेस्ट किए गए OpenClaw CLI टूल कॉल के लिए openclaw.invoke को
Gateway URL/प्रमाणीकरण संदर्भ स्वचालित रूप से प्राप्त नहीं होता।
इसका अर्थ है कि यह पैटर्न वर्तमान में एम्बेडेड रनर में विश्वसनीय नहीं है:
नीचे दिए गए उदाहरण का उपयोग केवल तब करें, जब आप ऐसे परिवेश में स्टैंडअलोन Lobster CLI चला रहे हों
जहाँ openclaw.invoke पहले से सही
Gateway/प्रमाणीकरण संदर्भ के साथ कॉन्फ़िगर हो।
यदि आप आज एम्बेडेड Lobster Plugin का उपयोग कर रहे हैं, तो इनमें से किसी को प्राथमिकता दें:
- Lobster के बाहर सीधे
llm-task टूल कॉल को, या
- समर्थित एम्बेडेड ब्रिज जोड़े जाने तक Lobster पाइपलाइन के भीतर गैर-
openclaw.invoke
चरणों को।
विवरण और कॉन्फ़िगरेशन विकल्पों के लिए LLM कार्य देखें।
कार्यप्रवाह फ़ाइलें (.lobster)
Lobster name, args, steps, env,
condition और approval फ़ील्ड वाली YAML/JSON कार्यप्रवाह फ़ाइलें चला सकता है। टूल
कॉल में pipeline को फ़ाइल पथ पर सेट करें।
टिप्पणियाँ:
stdin: $step.stdout और stdin: $step.json पिछले चरण का आउटपुट पास करते हैं।
condition (या when) $step.approved के आधार पर चरणों को नियंत्रित कर सकता है।
इंजेक्ट किए गए परिवेश चर
प्रत्येक चरण का शेल पैरेंट परिवेश के साथ Lobster द्वारा इंजेक्ट किए गए इन
चरों को इनहेरिट करता है, ताकि कमांड कच्चे मानों को कमांड स्ट्रिंग में एम्बेड किए बिना
समाधान किए गए कार्यप्रवाह आर्ग्युमेंट का संदर्भ दे सकें:
LOBSTER_ARG_<NAME>—प्रत्येक कार्यप्रवाह आर्ग्युमेंट के लिए एक। नाम को अपरकेस किया जाता है और
गैर-अल्फ़ान्यूमेरिक वर्णों की प्रत्येक शृंखला को _ में समेट दिया जाता है, इसलिए आर्ग्युमेंट user-id
LOBSTER_ARG_USER_ID बन जाता है।
LOBSTER_ARGS_JSON—सभी समाधान किए गए आर्ग्युमेंट एकल JSON स्ट्रिंग के रूप में।
इंजेक्ट किया गया पूरा सेट यही है। LOBSTER_STEP_<id>_STDOUT या LOBSTER_STEP_<id>_JSON_<field> जैसे
प्रत्येक चरण के आउटपुट चर नहीं होते; शेल
इन नामों को अनसेट मानते हैं, इसलिए पैरामीटर-विस्तार डिफ़ॉल्ट त्रुटि को छिपा सकते हैं।
इसके बजाय चरण संदर्भों—$step.stdout,
$step.json या $step.json.<field>—के माध्यम से पिछले चरण का आउटपुट किसी stdin:, env: या condition:
मान में पढ़ें। (LOBSTER_STATE_DIR स्थिति
डायरेक्टरी के लिए अलग रनटाइम सेटिंग है, प्रत्येक रन का आर्ग्युमेंट नहीं।)
टूल पैरामीटर
run
आर्ग्युमेंट के साथ कार्यप्रवाह फ़ाइल चलाएँ:
resume
resume या तो token (requiresApproval से मिला पूरा फिर से शुरू करने का टोकन)
या approvalId (उसी ऑब्जेक्ट से मिली छोटी ID) स्वीकार करता है—रुके हुए
रन ने जो लौटाया हो उसका उपयोग करें। approve आवश्यक है।
प्रबंधित Task Flow मोड
run पर flowControllerId और flowGoal (या resume पर flowId और
flowExpectedRevision) पास करने से कॉल साधारण एनवेलप लौटाने के बजाय Plugin
रनटाइम के प्रबंधित Task Flow API से संचालित होती है:
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—कार्यप्रवाह को रद्द करके अंतिम रूप दें
कस्टम jq/heredoc संयोजन के बिना अनुमोदन अनुरोधों में JSON पूर्वावलोकन संलग्न करने के लिए
approve --preview-from-stdin --limit N का उपयोग करें। फिर से शुरू करने की स्थिति Lobster स्थिति डायरेक्टरी में
छोटी JSON फ़ाइलों के रूप में संग्रहीत होती है (डिफ़ॉल्ट रूप से ~/.lobster/state,
LOBSTER_STATE_DIR से ओवरराइड करें); टोकन स्वयं केवल उस स्थिति का
पॉइंटर एन्कोड करता है, पूरी पाइपलाइन स्थिति नहीं।
OpenProse
OpenProse, Lobster के साथ अच्छी तरह काम करता है: बहु-एजेंट
तैयारी को व्यवस्थित करने के लिए /prose का उपयोग करें, फिर नियतात्मक अनुमोदनों के लिए Lobster पाइपलाइन चलाएँ। यदि किसी Prose
प्रोग्राम को Lobster चाहिए, तो tools.subagents.tools के माध्यम से उप-एजेंटों के लिए
lobster टूल की अनुमति दें। OpenProse देखें।
सुरक्षा
- केवल स्थानीय इन-प्रोसेस - वर्कफ़्लो Gateway प्रोसेस के भीतर निष्पादित होते हैं; Plugin स्वयं कोई
नेटवर्क कॉल नहीं करता।
- कोई सीक्रेट नहीं - Lobster OAuth प्रबंधित नहीं करता; यह उन OpenClaw टूल्स को कॉल करता है
जो ऐसा करते हैं।
- सैंडबॉक्स-जागरूक - टूल संदर्भ सैंडबॉक्स किए जाने पर अक्षम रहता है।
- सुदृढ़ - एम्बेडेड रनर द्वारा टाइमआउट और आउटपुट सीमाएँ लागू की जाती हैं।
समस्या निवारण
अधिक जानें
केस स्टडी: सामुदायिक वर्कफ़्लो
एक सार्वजनिक उदाहरण: एक “सेकंड ब्रेन” CLI + Lobster पाइपलाइनें, जो तीन
Markdown वॉल्ट (व्यक्तिगत, पार्टनर, साझा) प्रबंधित करती हैं। CLI आँकड़ों,
इनबॉक्स सूचियों और पुराने आइटम के स्कैन के लिए JSON उत्सर्जित करता है; Lobster उन कमांडों को
weekly-review, inbox-triage, memory-consolidation, और
shared-task-sync जैसे वर्कफ़्लो में श्रृंखलाबद्ध करता है, जिनमें से प्रत्येक में अनुमोदन गेट होते हैं। उपलब्ध होने पर AI
निर्णय (वर्गीकरण) संभालता है और उपलब्ध न होने पर
नियतात्मक नियमों का उपयोग करता है।
संबंधित