Messages and delivery

स्ट्रीमिंग और खंडन

OpenClaw में दो स्वतंत्र स्ट्रीमिंग परतें हैं, और आज चैनल संदेशों के लिए कोई वास्तविक टोकन-डेल्टा स्ट्रीमिंग नहीं है:

  • ब्लॉक स्ट्रीमिंग (चैनल): सहायक के लिखते समय पूर्ण ब्लॉक भेजें। ये सामान्य चैनल संदेश हैं, टोकन डेल्टा नहीं।
  • पूर्वावलोकन स्ट्रीमिंग (Telegram/Discord/Slack/Matrix/Mattermost/MS Teams): जनरेट करते समय एक अस्थायी पूर्वावलोकन संदेश अपडेट करें (भेजना + संपादन/जोड़ना)।

Control UI स्टार्टअप स्थिति

जब chat.send किसी सक्रिय रन की पुष्टि करता है, तो सहायक टेक्स्ट या टूल गतिविधि दिखाई देने से पहले Gateway एक टाइप की हुई, स्थूल स्टार्टअप स्थिति भेज सकता है। Control UI इस स्थिति को कार्य संकेतक के पास दिखाता है, जिसमें कार्यस्थान तैयारी, परिवेश प्रावधान, संदर्भ तैयारी और मॉडल स्टार्टअप के चरण होते हैं।

पहला सहायक डेल्टा या टूल प्रारंभ उस रन की स्टार्टअप स्थिति को स्थायी रूप से बदल देता है। जब कोई टूल ऑपरेटर की कार्रवाई की प्रतीक्षा कर रहा हो, तब अनुमोदन स्थिति को प्राथमिकता मिलती है। वर्कट्री निर्माण और आरंभिक क्लाउड डिस्पैच चैट रन के अस्तित्व में आने से पहले होते हैं, इसलिए उनकी रन-पूर्व RPC प्रगति को रन स्टार्टअप स्थिति के रूप में प्रस्तुत नहीं किया जाता; परिवेश प्रावधान यहाँ केवल तब दिखाई देता है, जब कोई सक्रिय रन पुनः प्राप्त किए गए वर्कर का दोबारा प्रावधान करता है।

ब्लॉक स्ट्रीमिंग (चैनल संदेश)

ब्लॉक स्ट्रीमिंग उपलब्ध होते ही सहायक आउटपुट को बड़े खंडों में भेजती है।

text
मॉडल आउटपुट  └─ text_delta/events       ├─ (blockStreamingBreak=text_end)       │    └─ बफ़र बढ़ने पर चंकर ब्लॉक भेजता है       └─ (blockStreamingBreak=message_end)            └─ चंकर message_end पर फ़्लश करता है                   └─ चैनल प्रेषण (ब्लॉक उत्तर)
  • text_delta/events: मॉडल स्ट्रीम इवेंट (गैर-स्ट्रीमिंग मॉडल के लिए विरल हो सकते हैं)।
  • chunker: न्यूनतम/अधिकतम सीमाएँ + ब्रेक प्राथमिकता लागू करने वाला EmbeddedBlockChunker
  • channel send: वास्तविक आउटबाउंड संदेश (ब्लॉक उत्तर)।

नियंत्रण (जब तक अन्यथा उल्लेख न हो, सभी agents.defaults के अंतर्गत):

कुंजी मान / स्वरूप डिफ़ॉल्ट
blockStreamingDefault "on" / "off" "off"
blockStreamingBreak "text_end" / "message_end" -
blockStreamingChunk { minChars, maxChars, breakPreference? } -
blockStreamingCoalesce { minChars?, maxChars?, idleMs? } (भेजने से पहले स्ट्रीम किए गए ब्लॉक मर्ज करें) -
*.streaming.block.enabled (चैनल ओवरराइड) true / false, प्रति चैनल (और प्रति अकाउंट) ब्लॉक स्ट्रीमिंग बाध्य करता है -
*.textChunkLimit (जैसे channels.whatsapp.textChunkLimit) संख्या, कठोर सीमा 4000
*.streaming.chunkMode "length" / "newline" "length"
channels.discord.maxLinesPerMessage संख्या, UI क्लिपिंग से बचने के लिए लंबे उत्तरों को विभाजित करने वाली नरम पंक्ति सीमा 17

streaming.chunkMode: "newline" सीमा पार होने पर लंबाई के अनुसार खंडित करने से पहले, हर नई पंक्ति पर नहीं बल्कि रिक्त पंक्तियों (अनुच्छेद सीमाओं) पर विभाजित करता है।

बंडल किए गए चैनल इन ओवरराइड को channels.<id>.streaming.{chunkMode,block.enabled,block.coalesce} के रूप में लिखते हैं। समतल *.chunkMode / *.blockStreaming / *.blockStreamingCoalesce वर्तन प्रत्येक बंडल किए गए चैनल पर पुराने हैं: openclaw doctor --fix उन्हें नेस्टेड स्वरूप में माइग्रेट करता है, और चैनल स्कीमा उन्हें अस्वीकार करते हैं। अब भी समतल वर्तन इस्तेमाल करने वाले बाहरी SDK plugin कॉन्फ़िगरेशन अगले रिलीज़ चक्र तक पदावनत फ़ॉलबैक (रनटाइम चेतावनी सहित) के माध्यम से काम करते रहेंगे।

blockStreamingBreak के लिए सीमा अर्थ-विज्ञान:

  • text_end: चंकर के भेजते ही ब्लॉक स्ट्रीम करें; प्रत्येक text_end पर फ़्लश करें।
  • message_end: सहायक संदेश समाप्त होने तक प्रतीक्षा करें, फिर बफ़र किया गया आउटपुट फ़्लश करें। यदि बफ़र किया गया टेक्स्ट maxChars से अधिक हो, तो भी चंकर का उपयोग होता है, इसलिए यह अंत में कई खंड भेज सकता है।

ब्लॉक स्ट्रीमिंग के साथ मीडिया डिलीवरी

स्ट्रीमिंग मीडिया को mediaUrl या mediaUrls जैसे संरचित पेलोड फ़ील्ड का उपयोग करना चाहिए; स्ट्रीम किए गए टेक्स्ट को अटैचमेंट कमांड के रूप में पार्स नहीं किया जाता। जब ब्लॉक स्ट्रीमिंग मीडिया को जल्दी भेजती है, तो OpenClaw उस टर्न के लिए डिलीवरी याद रखता है। यदि अंतिम सहायक पेलोड वही मीडिया URL दोहराता है, तो अंतिम डिलीवरी अटैचमेंट को दोबारा भेजने के बजाय डुप्लिकेट मीडिया हटा देती है।

बिल्कुल समान अंतिम पेलोड दबा दिए जाते हैं। यदि अंतिम पेलोड पहले से स्ट्रीम किए गए मीडिया के आसपास अलग टेक्स्ट जोड़ता है, तो OpenClaw मीडिया को केवल एक बार डिलीवर करते हुए भी नया टेक्स्ट भेजता है। इससे Telegram जैसे चैनलों पर डुप्लिकेट वॉइस नोट या फ़ाइलें रोकी जाती हैं।

खंडीकरण एल्गोरिदम (निम्न/उच्च सीमाएँ)

ब्लॉक खंडीकरण EmbeddedBlockChunker द्वारा कार्यान्वित किया जाता है:

  • निम्न सीमा: बफ़र >= minChars होने तक न भेजें (जब तक बाध्य न हो)।
  • उच्च सीमा: maxChars से पहले विभाजन को प्राथमिकता दें; बाध्य होने पर maxChars पर विभाजित करें।
  • ब्रेक प्राथमिकता शृंखला: paragraph -> newline -> sentence -> रिक्त स्थान -> कठोर ब्रेक।
  • कोड फ़ेंस: फ़ेंस के भीतर कभी विभाजित न करें; maxChars पर बाध्य होने पर, Markdown को मान्य रखने के लिए फ़ेंस बंद करके दोबारा खोलें।

maxChars को चैनल की textChunkLimit तक सीमित किया जाता है, इसलिए आप प्रति-चैनल सीमाओं से अधिक नहीं जा सकते।

सहयोजन (स्ट्रीम किए गए ब्लॉक मर्ज करना)

ब्लॉक स्ट्रीमिंग सक्षम होने पर, OpenClaw लगातार आने वाले ब्लॉक खंडों को मर्ज करके भेज सकता है, जिससे प्रगतिशील आउटपुट देते हुए भी एक-पंक्ति संदेशों की भरमार कम होती है।

  • सहयोजन फ़्लश करने से पहले निष्क्रिय अंतराल (idleMs) की प्रतीक्षा करता है।
  • बफ़र maxChars तक सीमित होते हैं और इससे अधिक होने पर फ़्लश हो जाते हैं।
  • minChars पर्याप्त टेक्स्ट जमा होने तक छोटे अंशों को भेजे जाने से रोकता है (अंतिम फ़्लश हमेशा बचा हुआ टेक्स्ट भेजता है)।
  • जोड़क blockStreamingChunk.breakPreference से प्राप्त होता है: paragraph -> \n\n, newline -> \n, sentence -> रिक्त स्थान।
  • चैनल ओवरराइड *.streaming.block.coalesce के माध्यम से उपलब्ध हैं (प्रति-अकाउंट कॉन्फ़िगरेशन सहित)।
  • Discord, Signal और Slack में डिफ़ॉल्ट सहयोजन { minChars: 1500, idleMs: 1000 } होता है, जब तक इसे ओवरराइड न किया जाए।

ब्लॉक के बीच मानव-जैसी गति

ब्लॉक स्ट्रीमिंग सक्षम होने पर, पहले ब्लॉक के बाद ब्लॉक उत्तरों के बीच यादृच्छिक विराम जोड़ें, ताकि बहु-बबल उत्तर अधिक स्वाभाविक लगें।

agents.defaults.humanDelay.mode व्यवहार
off (डिफ़ॉल्ट) कोई विराम नहीं
natural 800-2500ms यादृच्छिक विराम
custom minMs/maxMs

प्रति एजेंट agents.entries.*.humanDelay के माध्यम से ओवरराइड करें। केवल ब्लॉक उत्तरों पर लागू होता है, अंतिम उत्तरों या टूल सारांशों पर नहीं।

"खंड या सब कुछ स्ट्रीम करें"

  • खंड स्ट्रीम करें: blockStreamingDefault: "on" + blockStreamingBreak: "text_end" (आगे बढ़ते हुए भेजें)। गैर-Telegram चैनलों को *.streaming.block.enabled: true की भी आवश्यकता होती है।
  • अंत में सब कुछ स्ट्रीम करें: blockStreamingBreak: "message_end" (एक बार फ़्लश करें, बहुत लंबा होने पर संभवतः कई खंड)।
  • कोई ब्लॉक स्ट्रीमिंग नहीं: blockStreamingDefault: "off" (केवल अंतिम उत्तर)।

ब्लॉक स्ट्रीमिंग तब तक बंद रहती है जब तक *.streaming.block.enabled को स्पष्ट रूप से true पर सेट न किया जाए (अपवाद: QQ Bot में कोई streaming.block कुंजी नहीं है और जब तक channels.qqbot.streaming.mode को "off" पर सेट न किया जाए, वह ब्लॉक उत्तर स्ट्रीम करता है)। चैनल ब्लॉक उत्तरों के बिना लाइव पूर्वावलोकन (channels.<channel>.streaming.mode) स्ट्रीम कर सकते हैं। blockStreaming* डिफ़ॉल्ट agents.defaults के अंतर्गत होते हैं, कॉन्फ़िगरेशन रूट में नहीं।

पूर्वावलोकन स्ट्रीमिंग मोड

कैनोनिकल कुंजी: channels.<channel>.streaming (नेस्टेड { mode, ... }; पुराने शीर्ष-स्तरीय बूलियन/स्ट्रिंग वर्तन openclaw doctor --fix द्वारा दोबारा लिखे जाते हैं)।

मोड व्यवहार
off पूर्वावलोकन स्ट्रीमिंग अक्षम करें
partial एकल पूर्वावलोकन को नवीनतम टेक्स्ट से बदलें
block पूर्वावलोकन को खंडित/जोड़े गए चरणों में अपडेट करें
progress जनरेशन के दौरान प्रगति/स्थिति पूर्वावलोकन, पूर्ण होने पर अंतिम उत्तर

streaming.mode: "block" Discord और Telegram जैसे संपादन-सक्षम चैनलों के लिए पूर्वावलोकन-स्ट्रीमिंग मोड है; यह वहाँ अपने आप चैनल ब्लॉक डिलीवरी सक्षम नहीं करता। सामान्य ब्लॉक उत्तरों के लिए streaming.block.enabled का उपयोग करें। Microsoft Teams इसका अपवाद है: इसमें ड्राफ़्ट-पूर्वावलोकन ब्लॉक ट्रांसपोर्ट नहीं है, इसलिए streaming.mode: "block" नेटिव स्ट्रीमिंग को पूरी तरह अक्षम करता है और उत्तर नेटिव आंशिक/प्रगति स्ट्रीमिंग के बजाय नियमित ब्लॉक डिलीवरी के रूप में पहुँचता है। Mattermost भी अलग है: block मोड में यह पूर्ण टेक्स्ट और टूल-गतिविधि ब्लॉक के बीच पूर्वावलोकन को बदलता रहता है, इसलिए पहले के ब्लॉक एक संपादन योग्य ड्राफ़्ट में ओवरराइट होने के बजाय अलग-अलग पोस्ट के रूप में दिखाई देते रहते हैं।

चैनल मैपिंग

चैनल off partial block progress
Telegram हाँ हाँ हाँ संपादन योग्य प्रगति ड्राफ़्ट
Discord हाँ हाँ हाँ संपादन योग्य प्रगति ड्राफ़्ट
Slack हाँ हाँ हाँ हाँ
Mattermost हाँ हाँ हाँ हाँ
MS Teams हाँ हाँ हाँ नेटिव प्रगति स्ट्रीम

पूर्वावलोकन खंड कॉन्फ़िगरेशन (streaming.preview.chunk.*, जैसे channels.discord.streaming या channels.telegram.streaming के अंतर्गत) के डिफ़ॉल्ट minChars: 200, maxChars: 800 (चैनल की textChunkLimit तक सीमित), और breakPreference: "paragraph" हैं।

केवल Slack:

  • channels.slack.streaming.nativeTransport, channels.slack.streaming.mode="partial" होने पर Slack नेटिव स्ट्रीमिंग API कॉल (chat.startStream/chat.appendStream/chat.stopStream) को टॉगल करता है (डिफ़ॉल्ट: true)।
  • Slack नेटिव स्ट्रीमिंग और Slack सहायक थ्रेड स्थिति के लिए उत्तर थ्रेड लक्ष्य आवश्यक है। शीर्ष-स्तरीय DM उस थ्रेड-शैली पूर्वावलोकन को नहीं दिखाते, लेकिन फिर भी Slack ड्राफ़्ट पूर्वावलोकन पोस्ट और संपादनों का उपयोग कर सकते हैं।

पुरानी कुंजी का माइग्रेशन

चैनल लीगेसी कुंजियाँ स्थिति
Telegram streamMode, स्केलर/बूलियन streaming openclaw doctor --fix द्वारा streaming.mode में पुनर्लिखित; रनटाइम पर नहीं पढ़ा जाता
Discord streamMode, बूलियन streaming openclaw doctor --fix द्वारा streaming.mode में पुनर्लिखित; रनटाइम पर नहीं पढ़ा जाता
Slack streamMode; बूलियन streaming; लीगेसी nativeStreaming openclaw doctor --fix द्वारा streaming.mode में पुनर्लिखित (और बूलियन/लीगेसी रूपों के लिए streaming.nativeTransport); रनटाइम पर नहीं पढ़ा जाता
Matrix स्केलर/बूलियन streaming openclaw doctor --fix द्वारा streaming.mode में पुनर्लिखित (Matrix का "quiet" मोड भी शामिल); रनटाइम पर नहीं पढ़ा जाता
Feishu बूलियन streaming openclaw doctor --fix द्वारा streaming.mode में पुनर्लिखित; रनटाइम पर नहीं पढ़ा जाता
QQ Bot बूलियन streaming; streaming.c2cStreamApi openclaw doctor --fix द्वारा streaming.mode में पुनर्लिखित (और बूलियन/c2cStreamApi रूपों के लिए streaming.nativeTransport); रनटाइम पर नहीं पढ़ा जाता

रनटाइम व्यवहार

Telegram

  • DM और समूह/टॉपिक में sendMessage + editMessageText पूर्वावलोकन अपडेट का उपयोग करता है; अंतिम टेक्स्ट सक्रिय पूर्वावलोकन को उसी स्थान पर संपादित करता है। उत्तर स्ट्रीमिंग के लिए Telegram के अस्थायी 30-सेकंड के "typing" ड्राफ़्ट (sendMessageDraft) का उपयोग नहीं किया जाता।
  • छोटे आरंभिक पूर्वावलोकनों को पुश-सूचना UX के लिए अब भी डिबाउंस किया जाता है, लेकिन वे एक सीमित विलंब के बाद दिखाई देते हैं, ताकि सक्रिय रन दृश्य रूप से मौन न रहें।
  • लंबे अंतिम उत्तर पहले खंड के लिए पूर्वावलोकन संदेश का पुनः उपयोग करते हैं और केवल शेष खंड भेजते हैं।
  • block मोड streaming.preview.chunk.maxChars पर पूर्वावलोकन को एक नए संदेश में घुमाता है (डिफ़ॉल्ट 800, Telegram की 4096 संपादन सीमा तक सीमित); अन्य मोड एक पूर्वावलोकन को 4096 वर्णों तक बढ़ाते हैं।
  • progress मोड टूल की प्रगति को संपादन योग्य स्थिति ड्राफ़्ट में रखता है, उत्तर स्ट्रीमिंग सक्रिय होने पर लेकिन कोई टूल पंक्ति अभी उपलब्ध न होने पर स्थिति लेबल दिखाता है, पूर्ण होने पर ड्राफ़्ट साफ़ करता है और अंतिम उत्तर सामान्य डिलीवरी के माध्यम से भेजता है।
  • यदि पूर्ण टेक्स्ट की पुष्टि होने से पहले अंतिम संपादन विफल हो जाता है, तो OpenClaw सामान्य अंतिम डिलीवरी का उपयोग करता है और पुराने पूर्वावलोकन को साफ़ करता है।
  • दोहरी स्ट्रीमिंग से बचने के लिए, Telegram ब्लॉक स्ट्रीमिंग स्पष्ट रूप से सक्षम होने पर पूर्वावलोकन स्ट्रीमिंग छोड़ दी जाती है।
  • /reasoning stream तर्क-विचार को एक क्षणिक पूर्वावलोकन में लिख सकता है, जिसे अंतिम डिलीवरी के बाद हटा दिया जाता है।
  • Telegram में चुने गए उद्धरण वाले उत्तर एक अपवाद हैं: जब replyToMode, "off" नहीं है और चुना गया उद्धरण टेक्स्ट मौजूद है, तो OpenClaw उस टर्न के लिए उत्तर पूर्वावलोकन स्ट्रीम को छोड़ देता है (अंतिम उत्तर को नेटिव उद्धरण-उत्तर पथ से जाना आवश्यक है), इसलिए टूल-प्रगति पूर्वावलोकन पंक्तियाँ रेंडर नहीं हो सकतीं। चुने गए उद्धरण टेक्स्ट के बिना वर्तमान-संदेश उत्तरों में पूर्वावलोकन स्ट्रीमिंग बनी रहती है। विवरण के लिए Telegram चैनल दस्तावेज़ देखें।

Discord

  • भेजें + संपादित करें पूर्वावलोकन संदेशों का उपयोग करता है।
  • block मोड ड्राफ़्ट खंडन (draftChunk) का उपयोग करता है।
  • Discord ब्लॉक स्ट्रीमिंग स्पष्ट रूप से सक्षम होने पर पूर्वावलोकन स्ट्रीमिंग छोड़ दी जाती है।
  • progress मोड अंतिम उत्तर में एक छोटी -# गतिविधि रसीद (विचार/टूल-कॉल की संख्या और बीता हुआ समय) जोड़ता है और उत्तर डिलीवर होते ही स्थिति ड्राफ़्ट हटा देता है, ताकि व्यस्त चैनलों में उत्तर के ऊपर कोई अनाथ टूल लॉग न रहे। त्रुटि वाले अंतिम उत्तर विफल टर्न के रिकॉर्ड के रूप में ड्राफ़्ट बनाए रखते हैं।
  • अंतिम मीडिया, त्रुटि और स्पष्ट-उत्तर पेलोड नया ड्राफ़्ट फ़्लश किए बिना लंबित पूर्वावलोकनों को रद्द करते हैं, फिर सामान्य डिलीवरी का उपयोग करते हैं।

Slack

  • partial उपलब्ध होने पर Slack की नेटिव स्ट्रीमिंग (chat.startStream/append/stop) का उपयोग कर सकता है।
  • block जोड़ने की शैली वाले ड्राफ़्ट पूर्वावलोकनों का उपयोग करता है।
  • progress स्थिति पूर्वावलोकन टेक्स्ट, फिर अंतिम उत्तर का उपयोग करता है।
  • उत्तर थ्रेड के बिना शीर्ष-स्तरीय DM, Slack की नेटिव स्ट्रीमिंग के बजाय ड्राफ़्ट पूर्वावलोकन पोस्ट और संपादनों का उपयोग करते हैं।
  • नेटिव और ड्राफ़्ट पूर्वावलोकन स्ट्रीमिंग उस टर्न के लिए ब्लॉक उत्तरों को दबाती है, ताकि Slack उत्तर केवल एक डिलीवरी पथ से स्ट्रीम हो।
  • अंतिम मीडिया/त्रुटि पेलोड और प्रगति वाले अंतिम उत्तर अस्थायी ड्राफ़्ट संदेश नहीं बनाते; केवल वे टेक्स्ट/ब्लॉक अंतिम उत्तर, जो पूर्वावलोकन संपादित कर सकते हैं, लंबित ड्राफ़्ट टेक्स्ट को फ़्लश करते हैं।

Mattermost

  • partial मोड में, विचार और आंशिक उत्तर टेक्स्ट को एक ही ड्राफ़्ट पूर्वावलोकन पोस्ट में स्ट्रीम करता है, जो अंतिम उत्तर भेजना सुरक्षित होने पर उसी स्थान पर अंतिम रूप लेता है।
  • progress मोड में, विचार और टूल गतिविधि को एक ही स्थिति पूर्वावलोकन में स्ट्रीम करता है, जो अंतिम उत्तर भेजना सुरक्षित होने पर उसी स्थान पर अंतिम रूप लेता है।
  • block मोड में, पूर्ण टेक्स्ट और टूल-गतिविधि पोस्ट के बीच घुमाता है; समानांतर और लगातार टूल अपडेट वर्तमान टूल-गतिविधि पोस्ट साझा करते हैं।
  • यदि अंतिम रूप देते समय पूर्वावलोकन पोस्ट हटा दी गई हो या अन्यथा अनुपलब्ध हो, तो नया अंतिम पोस्ट भेजने पर फ़ॉलबैक करता है।
  • अंतिम मीडिया/त्रुटि पेलोड अस्थायी पूर्वावलोकन पोस्ट फ़्लश करने के बजाय सामान्य डिलीवरी से पहले लंबित पूर्वावलोकन अपडेट रद्द करते हैं।

Matrix

  • जब अंतिम टेक्स्ट पूर्वावलोकन इवेंट का पुनः उपयोग कर सकता है, तो ड्राफ़्ट पूर्वावलोकन उसी स्थान पर अंतिम रूप लेते हैं।
  • केवल-मीडिया, त्रुटि और उत्तर-लक्ष्य-असंगति वाले अंतिम उत्तर सामान्य डिलीवरी से पहले लंबित पूर्वावलोकन अपडेट रद्द करते हैं; पहले से दिखाई दे रहा पुराना पूर्वावलोकन संशोधित कर हटाया जाता है।

टूल-प्रगति पूर्वावलोकन अपडेट

पूर्वावलोकन स्ट्रीमिंग में टूल-प्रगति अपडेट भी शामिल हो सकते हैं: "वेब पर खोज की जा रही है", "फ़ाइल पढ़ी जा रही है" या "टूल कॉल किया जा रहा है" जैसी छोटी स्थिति पंक्तियाँ, जो अंतिम उत्तर से पहले टूल चलने के दौरान उसी पूर्वावलोकन संदेश में दिखाई देती हैं। Codex ऐप-सर्वर मोड में, Codex की प्रस्तावना/टिप्पणी संदेश इसी पूर्वावलोकन पथ का उपयोग करते हैं, इसलिए "मैं जाँच कर रहा हूँ..." जैसी छोटी प्रगति सूचनाएँ अंतिम उत्तर का भाग बने बिना संपादन योग्य ड्राफ़्ट में स्ट्रीम हो सकती हैं। इससे बहु-चरणीय टूल टर्न पहले विचार पूर्वावलोकन और अंतिम उत्तर के बीच मौन रहने के बजाय दृश्य रूप से सक्रिय रहते हैं।

लंबे समय तक चलने वाले टूल लौटने से पहले टाइप की गई प्रगति भेज सकते हैं। उदाहरण के लिए, web_fetch आरंभ होने पर पाँच-सेकंड का टाइमर सक्रिय करता है: यदि फ़ेच अब भी लंबित है, तो पूर्वावलोकन Fetching page content... दिखाता है; यदि फ़ेच उससे पहले पूर्ण हो जाता है या रद्द कर दिया जाता है, तो कोई प्रगति पंक्ति नहीं भेजी जाती। बाद का अंतिम टूल परिणाम फिर भी मॉडल को सामान्य रूप से डिलीवर किया जाता है।

समर्थित सतहें:

  • पूर्वावलोकन स्ट्रीमिंग सक्रिय होने पर Discord, Slack, Telegram, और Matrix डिफ़ॉल्ट रूप से टूल-प्रगति तथा Codex प्रस्तावना अपडेट को लाइव पूर्वावलोकन संपादन में स्ट्रीम करते हैं। Microsoft Teams व्यक्तिगत चैट में अपनी नेटिव प्रगति स्ट्रीम का उपयोग करता है।
  • Telegram में v2026.4.22 से टूल-प्रगति पूर्वावलोकन अपडेट सक्षम रूप में जारी किए गए हैं; उन्हें सक्षम रखना उस जारी व्यवहार को बनाए रखता है।
  • Mattermost, partial और progress मोड में टूल गतिविधि को एक पूर्वावलोकन पोस्ट में, या block मोड में टेक्स्ट ब्लॉक के बीच एक टूल-गतिविधि पोस्ट में समाहित करता है (ऊपर देखें)।
  • टूल-प्रगति संपादन सक्रिय पूर्वावलोकन स्ट्रीमिंग मोड का अनुसरण करते हैं; पूर्वावलोकन स्ट्रीमिंग off होने पर या ब्लॉक स्ट्रीमिंग द्वारा संदेश संभाल लिए जाने पर उन्हें छोड़ दिया जाता है। Telegram पर, streaming.mode: "off" केवल-अंतिम है: सामान्य प्रगति वार्तालाप को भी अलग स्थिति संदेशों के रूप में डिलीवर करने के बजाय दबा दिया जाता है, जबकि अनुमोदन प्रॉम्प्ट, मीडिया पेलोड और त्रुटियाँ अब भी सामान्य रूप से रूट होती हैं।
  • पूर्वावलोकन स्ट्रीमिंग बनाए रखते हुए टूल-प्रगति पंक्तियाँ छिपाने के लिए, उस चैनल हेतु streaming.preview.toolProgress को false पर सेट करें (डिफ़ॉल्ट true)। कमांड/निष्पादन टेक्स्ट छिपाते हुए टूल-प्रगति पंक्तियाँ दृश्यमान रखने के लिए, streaming.preview.commandText को "status" पर या streaming.progress.commandText को "status" पर सेट करें; जारी व्यवहार बनाए रखने के लिए डिफ़ॉल्ट "raw" है। यह नीति OpenClaw के संक्षिप्त प्रगति रेंडरर का उपयोग करने वाले ड्राफ़्ट/प्रगति चैनलों द्वारा साझा की जाती है, जिनमें Discord, Matrix, Microsoft Teams, Mattermost, Slack ड्राफ़्ट पूर्वावलोकन और Telegram शामिल हैं। पूर्वावलोकन संपादनों को पूरी तरह अक्षम करने के लिए, streaming.mode को off पर सेट करें।

प्रगति ड्राफ़्ट रेंडरिंग

प्रगति-मोड ड्राफ़्ट (streaming.progress.*) सीमित होते हैं और प्रत्येक चैनल के लिए कॉन्फ़िगर किए जा सकते हैं:

कुंजी डिफ़ॉल्ट व्यवहार
streaming.progress.maxLines 8 ड्राफ़्ट लेबल के नीचे रखी जाने वाली संक्षिप्त प्रगति पंक्तियों की अधिकतम संख्या
streaming.progress.maxLineChars 120 काटने से पहले प्रत्येक संक्षिप्त पंक्ति में अधिकतम वर्ण (शब्द-सचेत)
streaming.progress.label "auto" ड्राफ़्ट शीर्षक; कस्टम स्ट्रिंग, या इसे छिपाने के लिए false
streaming.progress.labels अंतर्निहित पूल label: "auto" होने पर उपयोग किए जाने वाले संभावित लेबल

टिप्पणी प्रगति लेन

टूल-प्रगति के अतिरिक्त, संक्षिप्त प्रगति रेंडरर ड्राफ़्ट में एक और लेन दिखा सकता है:

  • streaming.progress.commentary - मॉडल की टूल-पूर्व टिप्पणी (संक्षिप्त "मैं जाँच करूँगा... फिर..." वर्णन) को प्रगति ड्राफ़्ट में टूल पंक्तियों के बीच रेंडर करें। प्रगति मोड में Discord और Telegram पर, यह वैकल्पिक लेन बंद होने पर भी वही प्रस्तावना स्थिति शीर्षक प्रदान करती है; अन्य चैनल अपना मौजूदा प्रगति व्यवहार बनाए रखते हैं। देखें प्रगति ड्राफ़्ट
json
{  "channels": {    "discord": {      "streaming": { "mode": "progress", "progress": { "commentary": true } }    }  }}

प्रगति पंक्तियाँ दृश्यमान रखें, लेकिन अपरिष्कृत कमांड/निष्पादन टेक्स्ट छिपाएँ:

json
{  "channels": {    "telegram": {      "streaming": {        "mode": "partial",        "preview": {          "toolProgress": true,          "commandText": "status"        }      }    }  }}

किसी अन्य संक्षिप्त प्रगति चैनल कुंजी के अंतर्गत इसी संरचना का उपयोग करें, उदाहरण के लिए channels.discord, channels.matrix, channels.msteams, channels.mattermost, या Slack ड्राफ़्ट पूर्वावलोकन। प्रगति-ड्राफ़्ट मोड के लिए, इसी नीति को streaming.progress के अंतर्गत रखें:

json
{  "channels": {    "telegram": {      "streaming": {        "mode": "progress",        "progress": {          "toolProgress": true,          "commandText": "status"        }      }    }  }}

संबंधित

Was this useful?
On this page

On this page