Skip to main content
स्ट्रीमिंग आउटपुट, Gateway पुनरावृत्ति और स्टार्टअप प्रोफ़ाइलिंग के लिए डीबगिंग सहायक।

रनटाइम डीबग ओवरराइड

/debug केवल-रनटाइम कॉन्फ़िग ओवरराइड (मेमोरी में, डिस्क पर नहीं) सेट करता है। डिफ़ॉल्ट रूप से अक्षम; commands.debug: true से सक्षम करें।
/debug reset सभी ओवरराइड साफ़ करता है और डिस्क पर मौजूद कॉन्फ़िग पर वापस जाता है।

सेशन ट्रेस आउटपुट

/trace पूर्ण वर्बोज़ मोड सक्षम किए बिना एक सेशन के लिए Plugin-स्वामित्व वाली ट्रेस/डीबग पंक्तियाँ दिखाता है। Active Memory डीबग सारांश जैसे Plugin डायग्नोस्टिक्स के लिए इसका उपयोग करें; सामान्य स्थिति/टूल आउटपुट के लिए /verbose का उपयोग करें।

Plugin जीवनचक्र ट्रेस

Plugin मेटाडेटा, खोज, रजिस्ट्री, रनटाइम मिरर, कॉन्फ़िग परिवर्तन और रीफ़्रेश कार्य का चरण-दर-चरण विश्लेषण पाने के लिए OPENCLAW_PLUGIN_LIFECYCLE_TRACE=1 सेट करें। यह stderr पर लिखता है, इसलिए JSON कमांड आउटपुट पार्स करने योग्य रहता है। यह ट्रेस सक्षम होने पर Plugin लोड विफलताओं में उनका स्टैक ट्रेस शामिल होता है।
CPU प्रोफ़ाइलर का सहारा लेने से पहले इसका उपयोग करें। स्रोत चेकआउट से, pnpm build के बाद node dist/entry.js ... के साथ निर्मित रनटाइम को मापें; pnpm openclaw ... स्रोत-रनर ओवरहेड भी मापता है। सिंक्रोनस मॉड्यूल-लोड समय मापने के लिए अलग केवल-Plugin एनवायरनमेंट स्विच के बजाय साझा डायग्नोस्टिक्स सतह का उपयोग करें:

CLI स्टार्टअप और कमांड प्रोफ़ाइलिंग

चेक-इन किए गए स्टार्टअप बेंचमार्क:
सामान्य स्रोत रनर के माध्यम से एकबारगी प्रोफ़ाइलिंग के लिए OPENCLAW_RUN_NODE_CPU_PROF_DIR सेट करें:
स्रोत रनर Node CPU प्रोफ़ाइल फ़्लैग जोड़ता है और कमांड के लिए एक .cpuprofile लिखता है। कमांड कोड में अस्थायी इंस्ट्रुमेंटेशन जोड़ने से पहले इसका उपयोग करें। ऐसे स्टार्टअप अवरोधों के लिए जो सिंक्रोनस फ़ाइलसिस्टम या मॉड्यूल-लोडर कार्य जैसे लगते हैं, स्रोत रनर के माध्यम से Node का सिंक I/O ट्रेस फ़्लैग जोड़ें:
pnpm gateway:watch देखे जा रहे Gateway चाइल्ड के लिए इस फ़्लैग को डिफ़ॉल्ट रूप से अक्षम रखता है; वॉच मोड में भी सिंक I/O ट्रेस आउटपुट पाने के लिए OPENCLAW_TRACE_SYNC_IO=1 सेट करें।

Gateway वॉच मोड

डिफ़ॉल्ट रूप से यह openclaw-gateway-watch-<profile> नामक tmux सेशन (उदाहरण के लिए openclaw-gateway-watch-main) शुरू या पुनः आरंभ करता है। OPENCLAW_GATEWAY_PORT के डिफ़ॉल्ट पोर्ट 18789 से भिन्न होने पर ही openclaw-gateway-watch-dev-19001 जैसा पोर्ट प्रत्यय जोड़ा जाता है। यह इंटरैक्टिव टर्मिनलों से स्वतः अटैच होता है; गैर-इंटरैक्टिव शेल, CI और एजेंट exec कॉल अलग रहते हैं और इसके बजाय अटैच निर्देश प्रिंट करते हैं:
पेन tmux remain-on-exit का उपयोग करता है, इसलिए स्टार्टअप विफलताएँ सेशन हटाने के बजाय अटैच या कैप्चर के लिए उपलब्ध रहती हैं। pnpm gateway:watch को दोबारा चलाने पर वह पेन पुनः उत्पन्न होता है। tmux पेन रॉ वॉचर चलाता है:
कॉन्फ़िगर किए गए/डिफ़ॉल्ट पोर्ट को देखने से पहले, tmux रैपर सक्रिय प्रोफ़ाइल की इंस्टॉल की गई Gateway सेवा रोकता है। इससे launchd, systemd या Scheduled Task द्वारा दोबारा शुरू करके उसे बदलने के बिना पोर्ट स्रोत वॉचर को मिल जाता है। सेवा इंस्टॉल रहती है; वॉच सेशन के बाद इसे इससे पुनर्स्थापित करें:
जब स्पष्ट --port या OPENCLAW_GATEWAY_PORT इंस्टॉल की गई सेवा के प्रभावी पोर्ट से अलग होता है, तो रैपर सेवा को चालू छोड़ देता है ताकि दोनों Gateway साथ-साथ चल सकें। tmux के बिना फ़ोरग्राउंड मोड:
रॉ मोड इंस्टॉल की गई सेवा को प्रबंधित नहीं करता। जब वह समान पोर्ट का उपयोग करती हो, तो पहले pnpm openclaw gateway stop चलाएँ। tmux प्रबंधन बनाए रखें लेकिन ऑटो-अटैच अक्षम करें:
स्टार्टअप/रनटाइम हॉटस्पॉट डीबग करते समय देखे जा रहे Gateway के CPU समय की प्रोफ़ाइल बनाएँ:
वॉच रैपर Gateway को शुरू करने से पहले --benchmark का उपयोग करता है और .artifacts/gateway-watch-profiles/ के अंतर्गत प्रत्येक Gateway चाइल्ड निकास पर एक V8 .cpuprofile लिखता है। वर्तमान प्रोफ़ाइल फ़्लश करने के लिए देखे जा रहे Gateway को रोकें या पुनः आरंभ करें, फिर उसे Chrome DevTools या Speedscope से खोलें:
  • --benchmark-dir <path>: प्रोफ़ाइल कहीं और लिखें।
  • --benchmark-no-force: डिफ़ॉल्ट --force पोर्ट क्लीनअप छोड़ें और Gateway पोर्ट पहले से उपयोग में होने पर तुरंत विफल हों।
बेंचमार्क मोड डिफ़ॉल्ट रूप से सिंक-I/O ट्रेस स्पैम दबाता है। CPU प्रोफ़ाइल और सिंक-I/O स्टैक ट्रेस दोनों पाने के लिए --benchmark के साथ OPENCLAW_TRACE_SYNC_IO=1 सेट करें; बेंचमार्क मोड में वे ट्रेस ब्लॉक बेंचमार्क डायरेक्टरी के अंतर्गत gateway-watch-output.log में जाते हैं (टर्मिनल पेन से फ़िल्टर किए जाते हैं), जबकि सामान्य Gateway लॉग दिखाई देते रहते हैं। tmux रैपर सामान्य गैर-गोपनीय रनटाइम चयनकर्ताओं को पेन में ले जाता है, जिनमें OPENCLAW_PROFILE, OPENCLAW_CONFIG_PATH, OPENCLAW_STATE_DIR, OPENCLAW_GATEWAY_PORT और OPENCLAW_SKIP_CHANNELS शामिल हैं। प्रदाता क्रेडेंशियल अपने सामान्य प्रोफ़ाइल/कॉन्फ़िग में रखें, या एकबारगी अल्पकालिक सीक्रेट के लिए रॉ फ़ोरग्राउंड मोड का उपयोग करें। यदि देखा जा रहा Gateway स्टार्टअप के दौरान बंद हो जाता है, तो वॉचर openclaw doctor --fix --non-interactive को एक बार चलाता है और Gateway चाइल्ड को पुनः आरंभ करता है। केवल-विकास सुधार चरण के बिना मूल स्टार्टअप विफलता देखने के लिए OPENCLAW_GATEWAY_WATCH_AUTO_DOCTOR=0 सेट करें। प्रबंधित tmux पेन डिफ़ॉल्ट रूप से रंगीन Gateway लॉग का उपयोग करता है; ANSI आउटपुट अक्षम करने के लिए pnpm gateway:watch शुरू करते समय FORCE_COLOR=0 सेट करें। वॉचर src/ के अंतर्गत बिल्ड-संबंधित फ़ाइलों, एक्सटेंशन स्रोत फ़ाइलों, एक्सटेंशन package.json और openclaw.plugin.json मेटाडेटा, tsconfig.json, package.json और tsdown.config.ts में बदलाव होने पर पुनः आरंभ होता है। एक्सटेंशन मेटाडेटा परिवर्तन पुनर्निर्माण को बाध्य किए बिना Gateway को पुनः आरंभ करते हैं; स्रोत और कॉन्फ़िग परिवर्तन अब भी पहले dist का पुनर्निर्माण करते हैं। gateway:watch के बाद Gateway CLI फ़्लैग जोड़ें और वे प्रत्येक पुनः आरंभ पर पास हो जाते हैं। समान वॉच कमांड दोबारा चलाने पर नामित tmux पेन पुनः उत्पन्न होता है; रॉ वॉचर एकल-वॉचर लॉक बनाए रखता है ताकि डुप्लिकेट वॉचर पैरेंट जमा होने के बजाय बदल दिए जाएँ।

डेवलपमेंट प्रोफ़ाइल + डेवलपमेंट Gateway (—dev)

दो अलग-अलग --dev फ़्लैग:
  • वैश्विक --dev (प्रोफ़ाइल): स्थिति को ~/.openclaw-dev के अंतर्गत पृथक करता है और Gateway पोर्ट को डिफ़ॉल्ट रूप से 19001 पर सेट करता है (व्युत्पन्न पोर्ट भी इसके साथ बदलते हैं)।
  • gateway --dev: Gateway को अनुपस्थित होने पर डिफ़ॉल्ट कॉन्फ़िग + वर्कस्पेस स्वतः बनाने (और बूटस्ट्रैप छोड़ने) का निर्देश देता है।
अनुशंसित प्रवाह (डेवलपमेंट प्रोफ़ाइल + डेवलपमेंट बूटस्ट्रैप):
वैश्विक इंस्टॉल के बिना, CLI को pnpm openclaw ... के माध्यम से चलाएँ। यह क्या करता है:
  1. प्रोफ़ाइल पृथक्करण (वैश्विक --dev)
    • OPENCLAW_PROFILE=dev
    • OPENCLAW_STATE_DIR=~/.openclaw-dev
    • OPENCLAW_CONFIG_PATH=~/.openclaw-dev/openclaw.json
    • OPENCLAW_GATEWAY_PORT=19001 (ब्राउज़र/कैनवास पोर्ट तदनुसार बदलते हैं)
  2. डेवलपमेंट बूटस्ट्रैप (gateway --dev)
    • अनुपस्थित होने पर न्यूनतम कॉन्फ़िग लिखता है (gateway.mode=local, लूपबैक से बाइंड)।
    • agents.defaults.workspace को डेवलपमेंट वर्कस्पेस और agents.defaults.skipBootstrap=true पर सेट करता है।
    • अनुपस्थित होने पर वर्कस्पेस फ़ाइलें सीड करता है: AGENTS.md, SOUL.md, TOOLS.md, IDENTITY.md, USER.md
    • डिफ़ॉल्ट पहचान: C3-PO (प्रोटोकॉल ड्रॉइड)।
    • pnpm gateway:dev चैनल प्रदाताओं को छोड़ने के लिए OPENCLAW_SKIP_CHANNELS=1 भी सेट करता है।
डेवलपमेंट Gateway डिफ़ॉल्ट रूप से परिवेशी चैनल एनवायरनमेंट ट्रिगर अनदेखे करते हैं, इसलिए आपके शेल से प्राप्त क्रेडेंशियल डेवलपमेंट इंस्टेंस को वास्तविक चैनल सेवाओं से नहीं जोड़ते। स्पष्ट channels.<id> कॉन्फ़िगरेशन फिर भी काम करता है। उस रन के लिए परिवेशी चैनल ऑटो-कॉन्फ़िगरेशन पुनर्स्थापित करने हेतु --dev के साथ --dev-ambient-channels पास करें। रीसेट प्रवाह (नई शुरुआत):
--dev एक वैश्विक प्रोफ़ाइल फ़्लैग है और कुछ रनर इसे हटा देते हैं। यदि आपको इसे स्पष्ट रूप से लिखना हो, तो एनवायरनमेंट वेरिएबल रूप का उपयोग करें:
--reset कॉन्फ़िग, क्रेडेंशियल, सेशन और डेवलपमेंट वर्कस्पेस मिटाता है (हटाए नहीं जाते, ट्रैश में भेजे जाते हैं), फिर डिफ़ॉल्ट डेवलपमेंट सेटअप पुनः बनाता है।
यदि कोई गैर-डेवलपमेंट Gateway पहले से चल रहा है (launchd या systemd), तो पहले उसे रोकें:

रॉ स्ट्रीम लॉगिंग

OpenClaw किसी भी फ़िल्टरिंग/फ़ॉर्मेटिंग से पहले रॉ असिस्टेंट स्ट्रीम लॉग कर सकता है। यह देखने का सर्वोत्तम तरीका है कि रीजनिंग सादा टेक्स्ट डेल्टा के रूप में आ रही है या अलग थिंकिंग ब्लॉक के रूप में। इसे CLI के माध्यम से सक्षम करें:
वैकल्पिक पथ ओवरराइड:
समतुल्य एनवायरनमेंट वेरिएबल:
डिफ़ॉल्ट फ़ाइल: ~/.openclaw/logs/raw-stream.jsonl

सुरक्षा नोट्स

  • रॉ स्ट्रीम लॉग में पूर्ण प्रॉम्प्ट, टूल आउटपुट और उपयोगकर्ता डेटा शामिल हो सकते हैं।
  • लॉग स्थानीय रखें और डीबगिंग के बाद उन्हें हटा दें।
  • यदि आप लॉग साझा करते हैं, तो पहले सीक्रेट और PII हटा दें।

VSCode में डीबगिंग

स्रोत मैप आवश्यक हैं क्योंकि बिल्ड जनरेट किए गए फ़ाइल नामों को हैश करता है। शामिल launch.json Gateway सेवा को लक्षित करता है:
  1. Gateway पुनर्निर्मित और डीबग करें - Gateway शुरू करने से पहले /dist हटाता है और डीबगिंग सक्षम करके पुनर्निर्माण करता है।
  2. Gateway डीबग करें - /dist को बदले बिना मौजूदा बिल्ड डीबग करता है।

सेटअप

  1. Run and Debug खोलें (Activity Bar या Ctrl+Shift+D)।
  2. Gateway पुनर्निर्मित और डीबग करें चुनें और Start Debugging दबाएँ।
इसके बजाय बिल्ड/डीबग चक्र को मैन्युअल रूप से प्रबंधित करने के लिए:
  1. टर्मिनल में स्रोत मैप सक्षम करें:
    • Linux/macOS: export OUTPUT_SOURCE_MAPS=1
    • Windows (PowerShell): $env:OUTPUT_SOURCE_MAPS="1"
    • Windows (CMD): set OUTPUT_SOURCE_MAPS=1
  2. पुनर्निर्माण करें: pnpm clean:dist && pnpm build
  3. Gateway डीबग करें चुनें और Start Debugging दबाएँ।
src/ TypeScript फ़ाइलों में ब्रेकपॉइंट सेट करें; डीबगर स्रोत मैप के माध्यम से उन्हें कंपाइल किए गए JavaScript पर मैप करता है।

नोट्स

  • Gateway पुनर्निर्मित और डीबग करें प्रत्येक लॉन्च पर /dist हटाता है और स्रोत मैप के साथ पूर्ण pnpm build चलाता है।
  • Gateway डीबग करें /dist को प्रभावित किए बिना शुरू/बंद हो सकता है, लेकिन बिल्ड चक्र को आप अलग टर्मिनल में प्रबंधित करते हैं।
  • अन्य CLI उपकमांड डीबग करने के लिए launch.json args संपादित करें।
  • अन्य कार्यों के लिए निर्मित CLI का उपयोग करने हेतु (उदाहरण के लिए dashboard --no-open, यदि आपका डीबग सेशन नया प्रमाणीकरण टोकन उत्पन्न करता है), इसे दूसरे टर्मिनल से चलाएँ: node ./openclaw.mjs या alias openclaw-build="node $(pwd)/openclaw.mjs" जैसा उपनाम।

संबंधित