Gateway

बैकग्राउंड निष्पादन और प्रक्रिया टूल

OpenClaw, exec टूल के माध्यम से शेल कमांड चलाता है और लंबे समय तक चलने वाले कार्यों को मेमोरी में रखता है। process टूल उन बैकग्राउंड सत्रों को प्रबंधित करता है।

exec टूल

पैरामीटर:

पैरामीटर विवरण
command आवश्यक। चलाने के लिए शेल कमांड।
workdir कार्यशील डायरेक्टरी; डिफ़ॉल्ट cwd का उपयोग करने के लिए इसे छोड़ दें।
env कमांड के लिए अतिरिक्त एनवायरनमेंट वेरिएबल।
yieldMs बैकग्राउंड में भेजने से पहले प्रतीक्षा का समय मिलीसेकंड में (डिफ़ॉल्ट 10000)।
background तुरंत बैकग्राउंड में चलाएँ।
timeout टाइमआउट सेकंड में (डिफ़ॉल्ट tools.exec.timeoutSeconds); समय समाप्त होने पर प्रोसेस को बंद कर देता है। उस कॉल के लिए exec प्रोसेस टाइमआउट अक्षम करने हेतु timeout: 0 सेट करें।
pty उपलब्ध होने पर स्यूडो-टर्मिनल में चलाएँ (TTY की आवश्यकता वाले CLI, कोडिंग एजेंट)।
elevated यदि एलिवेटेड मोड सक्षम/अनुमत है, तो सैंडबॉक्स के बाहर चलाएँ (डिफ़ॉल्ट रूप से gateway, या exec लक्ष्य के node होने पर node)।
host Exec लक्ष्य: auto, sandbox, gateway, या node
node Node आईडी/नाम, जिसका उपयोग host: "node" के साथ होता है।

व्यवहार:

  • फ़ोरग्राउंड रन सीधे आउटपुट लौटाते हैं।
  • बैकग्राउंड में भेजे जाने पर (स्पष्ट रूप से या yieldMs टाइमआउट के माध्यम से), टूल status: "running" + sessionId और आउटपुट का एक छोटा अंतिम अंश लौटाता है।
  • बैकग्राउंड और yieldMs रन tools.exec.timeoutSeconds इनहेरिट करते हैं, जब तक कॉल में स्पष्ट timeout न दिया गया हो।
  • सत्र को पोल या साफ़ किए जाने तक आउटपुट मेमोरी में रहता है।
  • यदि process टूल की अनुमति नहीं है, तो exec रन सिंक्रोनस रूप से चलता है और yieldMs/background को अनदेखा करता है।
  • शुरू किए गए exec कमांड को संदर्भ-संवेदी शेल/प्रोफ़ाइल नियमों के लिए OPENCLAW_SHELL=exec मिलता है।
  • अब शुरू होने वाले लंबे कार्य के लिए: इसे एक बार शुरू करें और कमांड के आउटपुट देने या विफल होने पर स्वचालित पूर्णता वेक (सक्षम होने पर) पर निर्भर रहें।
  • यदि स्वचालित पूर्णता वेक उपलब्ध नहीं है, या बिना आउटपुट के सफलतापूर्वक समाप्त होने वाले कमांड की मौन-सफलता की पुष्टि चाहिए, तो process से पोल करें।
  • रिमाइंडर या विलंबित फ़ॉलो-अप का अनुकरण sleep लूप या बार-बार पोल करके न करें — भविष्य के कार्य के लिए Cron का उपयोग करें।

एनवायरनमेंट ओवरराइड

वेरिएबल प्रभाव
OPENCLAW_BASH_YIELD_MS बैकग्राउंड में भेजने से पहले डिफ़ॉल्ट यील्ड (ms)। डिफ़ॉल्ट 10000, सीमा 10-120000।
OPENCLAW_BASH_MAX_OUTPUT_CHARS मेमोरी में आउटपुट की सीमा (वर्ण)।
OPENCLAW_BASH_PENDING_MAX_OUTPUT_CHARS प्रत्येक स्ट्रीम के लंबित stdout/stderr की सीमा (वर्ण)।
OPENCLAW_BASH_JOB_TTL_MS पूर्ण सत्रों के लिए TTL (ms), 1m-3h तक सीमित।
OPENCLAW_PROCESS_INPUT_WAIT_IDLE_MS लिखने योग्य बैकग्राउंड सत्रों को इनपुट की प्रतीक्षा में होने की संभावना के रूप में चिह्नित करने से पहले निष्क्रिय आउटपुट सीमा। डिफ़ॉल्ट 15000।

कॉन्फ़िगरेशन (एनवायरनमेंट ओवरराइड की तुलना में वरीय)

कुंजी डिफ़ॉल्ट प्रभाव
tools.exec.backgroundMs 10000 OPENCLAW_BASH_YIELD_MS के समान।
tools.exec.timeoutSeconds 1800 प्रत्येक कॉल का डिफ़ॉल्ट टाइमआउट।
tools.exec.cleanupMs 1800000 OPENCLAW_BASH_JOB_TTL_MS के समान।
tools.exec.notifyOnExit true बैकग्राउंड exec के समाप्त होने पर सिस्टम इवेंट कतारबद्ध करें + Heartbeat का अनुरोध करें।
tools.exec.notifyOnExitEmptySuccess false बिना आउटपुट वाले सफल बैकग्राउंड रन के लिए भी पूर्णता इवेंट कतारबद्ध करें।

चाइल्ड प्रोसेस ब्रिजिंग

exec/process टूल के बाहर लंबे समय तक चलने वाले चाइल्ड प्रोसेस (CLI का पुनः शुरू होना, Gateway सहायक) शुरू करते समय, चाइल्ड-प्रोसेस ब्रिज सहायक जोड़ें, ताकि समाप्ति सिग्नल आगे भेजे जाएँ और निकास/त्रुटि पर लिसनर अलग हो जाएँ। इससे systemd पर अनाथ प्रोसेस बनने से बचते हैं और सभी प्लेटफ़ॉर्म पर शटडाउन सुसंगत रहता है।

process टूल

क्रियाएँ:

क्रिया प्रभाव
list चल रहे + पूर्ण सत्र।
poll किसी सत्र का नया आउटपुट निकालें (निकास स्थिति भी बताता है)।
log एकत्रित आउटपुट और इनपुट-पुनर्प्राप्ति संकेत पढ़ें। offset + limit का समर्थन करता है।
write stdin भेजें (data, वैकल्पिक eof)।
send-keys PTY-समर्थित सत्र को स्पष्ट कुंजी टोकन या बाइट भेजें।
submit PTY-समर्थित सत्र को Enter/कैरिज रिटर्न भेजें।
paste शाब्दिक टेक्स्ट भेजें, जिसे वैकल्पिक रूप से ब्रैकेटेड पेस्ट मोड में लपेटा जा सकता है।
kill बैकग्राउंड सत्र समाप्त करें।
clear पूर्ण सत्र को मेमोरी से हटाएँ।
remove चल रहा हो तो बंद करें, अन्यथा पूर्ण हो चुका हो तो साफ़ करें।

टिप्पणियाँ:

  • केवल बैकग्राउंड सत्र सूचीबद्ध/संग्रहित होते हैं — केवल मेमोरी में, डिस्क पर नहीं। प्रोसेस पुनः शुरू होने पर सत्र खो जाते हैं।
  • लाइव बैकग्राउंड सत्र सहयोगात्मक होस्ट निलंबन और सुरक्षित Gateway पुनः आरंभ को तब तक रोकता है, जब तक प्रोसेस स्वामी उसके वास्तविक निकास की पुष्टि न कर दे।
  • process remove समाप्ति का अनुरोध करने के तुरंत बाद चल रहे सत्र को छिपा सकता है; निकास की पुष्टि होने तक निलंबन और पुनः आरंभ अवरुद्ध रहते हैं।
  • सत्र लॉग चैट इतिहास में केवल तभी सहेजे जाते हैं, जब आप process poll/log चलाते हैं और टूल परिणाम रिकॉर्ड किया जाता है।
  • process प्रत्येक एजेंट के दायरे में है; यह केवल उस एजेंट द्वारा शुरू किए गए सत्र देखता है।
  • स्वचालित पूर्णता वेक उपलब्ध न होने पर स्थिति, लॉग या पूर्णता पुष्टि के लिए poll/log का उपयोग करें।
  • इंटरैक्टिव CLI को पुनर्प्राप्त करने से पहले log का उपयोग करें, ताकि वर्तमान ट्रांसक्रिप्ट, stdin स्थिति और इनपुट-प्रतीक्षा संकेत एक साथ दिखाई दें।
  • जब इनपुट या हस्तक्षेप की आवश्यकता हो, तब write/send-keys/submit/paste/kill का उपयोग करें।
  • process list में त्वरित स्कैन के लिए व्युत्पन्न name (कमांड क्रिया + लक्ष्य) शामिल होता है।
  • process list, poll, और log केवल तभी waitingForInput रिपोर्ट करते हैं, जब सत्र में अभी भी लिखने योग्य stdin हो और वह इनपुट-प्रतीक्षा सीमा से अधिक समय तक निष्क्रिय रहा हो (डिफ़ॉल्ट 15000 ms, OPENCLAW_PROCESS_INPUT_WAIT_IDLE_MS)।
  • process log पंक्ति-आधारित offset/limit का उपयोग करता है। दोनों को छोड़ने पर, यह पेजिंग संकेत के साथ अंतिम 200 पंक्तियाँ लौटाता है। जब offset सेट हो और limit न हो, तो यह offset से अंत तक लौटाता है (200 तक सीमित नहीं)।
  • poll का timeout लौटने से पहले उतने मिलीसेकंड तक प्रतीक्षा करता है; 30000 से अधिक मान 30000 तक सीमित किए जाते हैं।
  • पोलिंग माँग पर स्थिति जानने के लिए है, प्रतीक्षा-लूप शेड्यूलिंग के लिए नहीं। यदि कार्य बाद में होना चाहिए, तो Cron का उपयोग करें।

उदाहरण

कोई लंबा कार्य चलाएँ और बाद में पोल करें:

json
{ "tool": "exec", "command": "sleep 5 && echo done", "yieldMs": 1000 }
json
{ "tool": "process", "action": "poll", "sessionId": "<id>" }

इनपुट भेजने से पहले किसी इंटरैक्टिव सत्र का निरीक्षण करें:

json
{ "tool": "process", "action": "log", "sessionId": "<id>" }

तुरंत बैकग्राउंड में शुरू करें:

json
{ "tool": "exec", "command": "npm run build", "background": true }

stdin भेजें:

json
{ "tool": "process", "action": "write", "sessionId": "<id>", "data": "y\n" }

PTY कुंजियाँ भेजें:

json
{ "tool": "process", "action": "send-keys", "sessionId": "<id>", "keys": ["C-c"] }

वर्तमान पंक्ति सबमिट करें:

json
{ "tool": "process", "action": "submit", "sessionId": "<id>" }

शाब्दिक टेक्स्ट पेस्ट करें:

json
{ "tool": "process", "action": "paste", "sessionId": "<id>", "text": "line1\nline2\n" }

संबंधित

Was this useful?
On this page

On this page