Skip to main content
OpenClaw एक अंतर्निहित एजेंट रनटाइम के साथ आता है: एक बिल्ट-इन एजेंट लूप, टूल वायरिंग और प्रॉम्प्ट असेंबली, जो टर्न को किसी बाहरी हार्नेस प्रोसेस को सौंपने से अलग है। प्रत्येक कॉन्फ़िगर किए गए एजेंट (कई एजेंट चलाने के लिए मल्टी-एजेंट रूटिंग देखें) का अपना वर्कस्पेस, बूटस्ट्रैप फ़ाइलें और सेशन स्टोर होता है। यह पृष्ठ उस रनटाइम अनुबंध को समझाता है: वर्कस्पेस में क्या होना आवश्यक है, कौन-सी फ़ाइलें इंजेक्ट की जाती हैं और सेशन उसके आधार पर कैसे बूटस्ट्रैप होते हैं।

वर्कस्पेस (आवश्यक)

प्रत्येक एजेंट टूल और संदर्भ के लिए एक वर्कस्पेस डायरेक्टरी (agents.defaults.workspace, या प्रति एजेंट agents.entries.*.workspace) को अपनी एकमात्र कार्यशील डायरेक्टरी (cwd) के रूप में उपयोग करता है। अनुशंसित: यदि ~/.openclaw/openclaw.json मौजूद नहीं है, तो उसे बनाने और वर्कस्पेस फ़ाइलें आरंभ करने के लिए openclaw setup का उपयोग करें। वर्कस्पेस का पूरा लेआउट + बैकअप मार्गदर्शिका: एजेंट वर्कस्पेस यदि agents.defaults.sandbox सक्षम है, तो गैर-मुख्य सेशन इसे agents.defaults.sandbox.workspaceRoot के अंतर्गत प्रति-सेशन वर्कस्पेस से ओवरराइड कर सकते हैं ( Gateway कॉन्फ़िगरेशन देखें)।

बूटस्ट्रैप फ़ाइलें (इंजेक्ट की गईं)

वर्कस्पेस के भीतर, OpenClaw इन उपयोगकर्ता-संपादन योग्य फ़ाइलों की अपेक्षा करता है: नए सेशन के पहले टर्न पर, OpenClaw इन फ़ाइलों की सामग्री को सिस्टम प्रॉम्प्ट के प्रोजेक्ट संदर्भ में इंजेक्ट करता है। MEMORY.md केवल तभी इंजेक्ट होती है, जब वह वर्कस्पेस रूट पर मौजूद हो। खाली फ़ाइलों को छोड़ दिया जाता है। बड़ी फ़ाइलों को एक मार्कर के साथ छोटा और ट्रंकेट किया जाता है, ताकि प्रॉम्प्ट संक्षिप्त रहें (पूरी सामग्री के लिए फ़ाइल पढ़ें)। किसी अनुपलब्ध फ़ाइल (MEMORY.md के अतिरिक्त) के स्थान पर एकल “फ़ाइल अनुपलब्ध” मार्कर पंक्ति इंजेक्ट की जाती है; openclaw setup उसके लिए एक सुरक्षित डिफ़ॉल्ट टेम्पलेट बनाता है। BOOTSTRAP.md केवल पूरी तरह नए वर्कस्पेस के लिए बनाई जाती है (जब कोई अन्य बूटस्ट्रैप फ़ाइल मौजूद न हो)। इसके लंबित रहने तक, OpenClaw इसे प्रोजेक्ट संदर्भ में रखता है और इसे उपयोगकर्ता संदेश में कॉपी करने के बजाय प्रारंभिक प्रक्रिया के लिए सिस्टम-प्रॉम्प्ट बूटस्ट्रैप मार्गदर्शन जोड़ता है। यदि आप प्रक्रिया पूरी करने के बाद इसे हटा देते हैं, तो बाद के रीस्टार्ट पर इसे दोबारा नहीं बनाया जाता। वर्कस्पेस देखे जाने के बाद, OpenClaw उसकी सेटअप स्थिति और सत्यापन को साझा SQLite डेटाबेस ~/.openclaw/state/openclaw.sqlite में संग्रहीत करता है। यदि हाल ही में सत्यापित वर्कस्पेस गायब हो जाता है या मिटा दिया जाता है, तो स्टार्टअप चुपचाप BOOTSTRAP.md को फिर से सीड करने से मना कर देता है; वर्कस्पेस पुनर्स्थापित करें या पूर्ण ऑनबोर्ड रीसेट का उपयोग करें, ताकि वर्कस्पेस और उसकी डेटाबेस स्थिति एक साथ साफ़ हों। पुराने रिलीज़ वर्कस्पेस JSON और .attested साइडकार फ़ाइलों का उपयोग करते थे। रनटाइम उन फ़ाइलों को नहीं पढ़ता। उन्हें सत्यापित करने, उनकी स्थिति SQLite में आयात करने और आयात की गई पंक्तियों के सत्यापन के बाद प्रत्येक स्रोत को हटाने के लिए openclaw doctor --fix चलाएँ। बूटस्ट्रैप फ़ाइल निर्माण को पूरी तरह अक्षम करने के लिए (पहले से सीड किए गए वर्कस्पेस हेतु), यह सेट करें:

बिल्ट-इन टूल

मुख्य टूल (read/exec/edit/write और संबंधित सिस्टम टूल) टूल नीति के अधीन, हमेशा उपलब्ध रहते हैं। OpenAI मॉडल के लिए apply_patch डिफ़ॉल्ट रूप से चालू है और tools.exec.applyPatch (enabled, workspaceOnly, allowModels) द्वारा नियंत्रित होता है। TOOLS.md यह नियंत्रित नहीं करता कि कौन-से टूल मौजूद हैं; यह इस बात का मार्गदर्शन है कि आप उनका उपयोग कैसे करवाना चाहते हैं।

Skills

OpenClaw इन स्थानों से Skills लोड करता है (सर्वोच्च प्राथमिकता पहले):
  • वर्कस्पेस: <workspace>/skills
  • प्रोजेक्ट एजेंट Skills: <workspace>/.agents/skills
  • व्यक्तिगत एजेंट Skills: ~/.agents/skills
  • प्रबंधित/स्थानीय: ~/.openclaw/skills
  • बंडल किए गए (इंस्टॉलेशन के साथ आते हैं)
  • अतिरिक्त Skill फ़ोल्डर: skills.load.extraDirs
Skill रूट में <workspace>/skills/personal/foo/SKILL.md जैसे समूहबद्ध फ़ोल्डर हो सकते हैं; फिर भी Skill अपने समतल फ्रंटमैटर नाम से उपलब्ध होता है, उदाहरण के लिए foo Skills को कॉन्फ़िगरेशन/पर्यावरण द्वारा नियंत्रित किया जा सकता है (Gateway कॉन्फ़िगरेशन में skills देखें)।

रनटाइम सीमाएँ

अंतर्निहित एजेंट रनटाइम का स्वामित्व OpenClaw के पास है: मॉडल खोज, टूल वायरिंग, प्रॉम्प्ट असेंबली, सेशन प्रबंधन और चैनल डिलीवरी एक एकीकृत रनटाइम सतह साझा करते हैं।

सेशन

सेशन पंक्तियाँ प्रति-एजेंट SQLite डेटाबेस में संग्रहीत होती हैं:
  • ~/.openclaw/agents/<agentId>/agent/openclaw-agent.sqlite
ट्रांसक्रिप्ट JSONL फ़ाइलें अब भी ~/.openclaw/agents/<agentId>/sessions/ के अंतर्गत विरासत माइग्रेशन इनपुट, हटाए गए या रीसेट किए गए आर्काइव, आयात, निर्यात और सहायता आर्टिफ़ैक्ट के रूप में रह सकती हैं। सक्रिय एजेंट इतिहास सेशन पंक्तियों के साथ SQLite में संग्रहीत होता है। सेशन ID स्थिर होती है और OpenClaw द्वारा चुनी जाती है। OpenClaw अन्य टूल के सेशन फ़ोल्डर नहीं पढ़ता।

स्ट्रीमिंग के दौरान संचालन

रन के बीच में आने वाले इनबाउंड प्रॉम्प्ट डिफ़ॉल्ट रूप से वर्तमान रन में निर्देशित किए जाते हैं। संचालन वर्तमान असिस्टेंट टर्न द्वारा अपने टूल कॉल निष्पादित करना समाप्त करने के बाद, अगले LLM कॉल से पहले पहुँचाया जाता है और अब वर्तमान असिस्टेंट संदेश के शेष टूल कॉल को नहीं छोड़ता। /queue steer सक्रिय रन का डिफ़ॉल्ट व्यवहार है। /queue followup और /queue collect संदेशों को निर्देशित करने के बजाय बाद के टर्न की प्रतीक्षा करवाते हैं। /queue interrupt इसके बजाय सक्रिय रन को निरस्त करता है। कतार और सीमा व्यवहार के लिए कतार और संचालन कतार देखें। ब्लॉक स्ट्रीमिंग पूर्ण हो चुके असिस्टेंट ब्लॉक को समाप्त होते ही भेज देती है; यह डिफ़ॉल्ट रूप से बंद है (agents.defaults.blockStreamingDefault: "off")। agents.defaults.blockStreamingBreak के माध्यम से सीमा समायोजित करें (text_end बनाम message_end; डिफ़ॉल्ट text_end)। agents.defaults.blockStreamingChunk से सॉफ्ट ब्लॉक खंडन नियंत्रित करें (डिफ़ॉल्ट 800-1200 वर्ण; पहले अनुच्छेद विराम, फिर नई पंक्तियाँ; वाक्य सबसे अंत में)। एकल-पंक्ति स्पैम कम करने के लिए स्ट्रीम किए गए खंडों को agents.defaults.blockStreamingCoalesce से संयोजित करें (भेजने से पहले निष्क्रियता-आधारित विलय)। गैर-Telegram चैनलों में ब्लॉक उत्तर सक्षम करने के लिए स्पष्ट *.streaming.block.enabled: true आवश्यक है (QQ Bot इसके बजाय ब्लॉक उत्तर स्ट्रीम करता है, जब तक कि channels.qqbot.streaming.mode, "off" न हो)। विस्तृत टूल सारांश टूल के आरंभ पर उत्सर्जित होते हैं (कोई डिबाउंस नहीं); उपलब्ध होने पर Control UI एजेंट इवेंट के माध्यम से टूल आउटपुट स्ट्रीम करता है। अधिक विवरण: स्ट्रीमिंग + खंडन

मॉडल संदर्भ

कॉन्फ़िगरेशन में मॉडल संदर्भ (उदाहरण के लिए agents.defaults.model और agents.defaults.models) को पहले / पर विभाजित करके पार्स किया जाता है।
  • मॉडल कॉन्फ़िगर करते समय provider/model का उपयोग करें।
  • यदि मॉडल ID में स्वयं / (OpenRouter शैली) है, तो प्रदाता प्रीफ़िक्स शामिल करें (उदाहरण: openrouter/moonshotai/kimi-k2)।
  • यदि आप प्रदाता छोड़ देते हैं, तो OpenClaw पहले किसी उपनाम को आज़माता है, फिर उस सटीक मॉडल ID के लिए किसी अद्वितीय कॉन्फ़िगर किए गए प्रदाता मिलान को और उसके बाद ही कॉन्फ़िगर किए गए डिफ़ॉल्ट प्रदाता पर वापस जाता है। यदि वह प्रदाता अब कॉन्फ़िगर किया गया डिफ़ॉल्ट मॉडल उपलब्ध नहीं कराता, तो OpenClaw पुराने हटाए गए-प्रदाता डिफ़ॉल्ट को दिखाने के बजाय पहले कॉन्फ़िगर किए गए प्रदाता/मॉडल पर वापस जाता है।

कॉन्फ़िगरेशन (न्यूनतम)

कम-से-कम यह सेट करें:
  • agents.defaults.workspace
  • channels.whatsapp.allowFrom (दृढ़ता से अनुशंसित)

संबंधित