Messages and delivery

प्रगति के प्रारूप

प्रगति ड्राफ़्ट किसी एजेंट के काम करते समय एक चैनल संदेश को लाइव स्थिति पंक्ति में बदल देते हैं, बजाय अस्थायी "अभी भी काम जारी है" उत्तरों के ढेर के। channels.<channel>.streaming.mode: "progress" सेट करें और वास्तविक काम शुरू होते ही OpenClaw संदेश बनाता है, एजेंट के पढ़ने, योजना बनाने, टूल कॉल करने या अनुमोदन की प्रतीक्षा करने पर उसे संपादित करता है, फिर उसे अंतिम उत्तर में बदल देता है।

text
काम जारी है...📖 docs/concepts/progress-drafts.md से🔎 वेब खोज: "discord edit message" के लिए🛠️ Bash: परीक्षण चलाएँ

त्वरित शुरुआत

json5
{  channels: {    discord: {      streaming: {        mode: "progress",      },    },  },}

यहाँ से डिफ़ॉल्ट हैं: 5 सेकंड की आरंभिक देरी, उपयोगी काम होने के दौरान संक्षिप्त प्रगति पंक्तियाँ, और उस टर्न के लिए पुराने अलग-अलग प्रगति संदेशों का दमन। रॉ टूल-पंक्ति ड्राफ़्ट स्वचालित एक-शब्द लेबल का उपयोग करते हैं; स्थिति शीर्षक उस अनावश्यक शीर्षक को छोड़ देता है, जब तक कि आप उसे स्पष्ट रूप से कॉन्फ़िगर न करें।

यह पृष्ठ प्रगति-ड्राफ़्ट अनुभव और उसके कॉन्फ़िगरेशन विकल्पों को समझाता है। पूर्ण स्ट्रीमिंग-मोड मैट्रिक्स, चैनल-वार रनटाइम टिप्पणियों और पुरानी कुंजी के माइग्रेशन के लिए स्ट्रीमिंग और चंकिंग देखें।

उपयोगकर्ताओं को क्या दिखाई देता है

भाग उद्देश्य
स्थिति शीर्षक Discord और Telegram पर मॉडल की प्रस्तावना; Discord एक उपयोगिता पूरक जोड़ता है।
लेबल वैकल्पिक आरंभिक/स्थिति पंक्ति, जैसे Working
प्रगति पंक्तियाँ /verbose जैसे समान टूल आइकन और विवरण फ़ॉर्मैटर का उपयोग करने वाले संक्षिप्त रन अपडेट।

रॉ टूल प्रगति के लिए, जब एजेंट सार्थक काम शुरू करता है और आरंभिक देरी तक व्यस्त रहता है, तब लेबल दिखाई देता है। यह क्रमिक प्रगति-पंक्ति सूची के शीर्ष पर रहता है, इसलिए पर्याप्त ठोस कार्य पंक्तियाँ दिखाई देने पर स्क्रॉल होकर हट जाता है। स्थिति शीर्षक केवल एजेंट की सरल भाषा वाली स्थिति दिखाता है, जब तक कि कोई लेबल स्पष्ट रूप से कॉन्फ़िगर न किया गया हो। केवल साधारण टेक्स्ट वाले उत्तर कभी प्रगति ड्राफ़्ट नहीं दिखाते; पंक्ति केवल वास्तविक कार्य अपडेट के लिए दिखाई देती है, उदाहरण के लिए 🛠️ Bash: run tests, 🔎 Web Search: for "discord edit message", या ✍️ Write: to /tmp/file

जब चैनल सुरक्षित रूप से ऐसा कर सकता है, तब अंतिम उत्तर उसी स्थान पर ड्राफ़्ट को बदल देता है; अन्यथा OpenClaw सामान्य डिलीवरी के माध्यम से अंतिम उत्तर भेजता है और ड्राफ़्ट को साफ़ करता है या उसे अपडेट करना बंद कर देता है (अंतिमीकरण देखें)।

मोड चुनें

channels.<channel>.streaming.mode काम जारी रहने के दौरान दिखाई देने वाले व्यवहार को नियंत्रित करता है:

मोड इनके लिए सर्वोत्तम चैट में क्या दिखाई देता है
off शांत चैनल केवल अंतिम उत्तर।
partial उत्तर का टेक्स्ट प्रकट होते देखना नवीनतम उत्तर टेक्स्ट के साथ संपादित किया गया एक ड्राफ़्ट।
block उत्तर-पूर्वावलोकन के बड़े चंक बड़े चंक में अपडेट या जोड़ा गया एक पूर्वावलोकन।
progress अधिक टूल वाले या लंबे समय तक चलने वाले टर्न एक स्थिति ड्राफ़्ट, फिर अंतिम उत्तर।

जब उपयोगकर्ताओं के लिए उत्तर टेक्स्ट को टोकन-दर-टोकन स्ट्रीम होते देखने के बजाय "क्या हो रहा है" अधिक महत्वपूर्ण हो, तब progress चुनें; जब उत्तर का टेक्स्ट ही प्रगति संकेत हो, तब partial; बड़े पूर्वावलोकन चंक के लिए block। Discord और Telegram पर, streaming.mode: "block" अभी भी पूर्वावलोकन स्ट्रीमिंग है, सामान्य ब्लॉक-उत्तर डिलीवरी नहीं — उसके लिए streaming.block.enabled का उपयोग करें।

लेबल कॉन्फ़िगर करें

प्रगति लेबल channels.<channel>.streaming.progress के अंतर्गत होते हैं। डिफ़ॉल्ट रॉ टूल-पंक्ति लेबल "auto" है, जो साधारण अंतर्निहित Working लेबल का उपयोग करता है। स्थिति शीर्षक उस निहित लेबल को छिपाता है; यदि आप उसके ऊपर भी लेबल चाहते हैं, तो label: "auto" को स्पष्ट रूप से सेट करें:

text
काम जारी है

एक निश्चित लेबल का उपयोग करें:

json5
{  channels: {    discord: {      streaming: {        mode: "progress",        progress: {          label: "जाँच जारी है",        },      },    },  },}

अपने लेबल समूह का उपयोग करें (label: "auto" होने पर भी यादृच्छिक रूप से/सीड द्वारा चुना जाता है):

json5
{  channels: {    discord: {      streaming: {        mode: "progress",        progress: {          label: "auto",          labels: ["जाँच", "पठन", "परीक्षण", "समापन"],        },      },    },  },}

लेबल छिपाएँ और केवल प्रगति पंक्तियाँ दिखाएँ:

json5
{  channels: {    discord: {      streaming: {        mode: "progress",        progress: {          label: false,        },      },    },  },}

प्रगति पंक्तियाँ नियंत्रित करें

प्रगति पंक्तियाँ वास्तविक रन इवेंट से आती हैं: टूल आरंभ, आइटम अपडेट, कार्य योजनाएँ, अनुमोदन, कमांड आउटपुट, पैच सारांश और इसी तरह की एजेंट गतिविधि। वे डिफ़ॉल्ट रूप से सक्षम होती हैं (progress.toolProgress, डिफ़ॉल्ट true)।

एकल कॉल के अभी भी चलने के दौरान टूल टाइप की गई प्रगति भी उत्सर्जित कर सकते हैं। इसी तरह धीमा फ़ेच या खोज, टूल द्वारा अंतिम परिणाम लौटाने से पहले दृश्यमान ड्राफ़्ट को अपडेट करता है। प्रगति अपडेट एक आंशिक टूल परिणाम होता है जिसमें मॉडल सामग्री खाली और सार्वजनिक चैनल मेटाडेटा स्पष्ट होता है:

json
{  "content": [],  "progress": {    "text": "पृष्ठ सामग्री प्राप्त की जा रही है...",    "visibility": "channel",    "privacy": "public",    "id": "web_fetch:fetching"  }}

OpenClaw चैनल प्रगति UI में केवल progress.text रेंडर करता है। सामान्य टूल परिणाम बाद में भी content/details के रूप में आता है और केवल वही भाग मॉडल को लौटाया जाता है।

किसी टूल में प्रगति जोड़ते समय, एक छोटा, सामान्य संदेश उत्सर्जित करें और उसे तब तक विलंबित रखें, जब तक ऑपरेशन उपयोगी होने लायक पर्याप्त समय से लंबित न हो। web_fetch 5-सेकंड की देरी के साथ ठीक यही करता है:

typescript
const clearProgressTimer = scheduleToolProgress(  onUpdate,  { text: "Fetching page content...", id: "web_fetch:fetching" },  5_000,  { signal },); try {  return await runToolWork();} finally {  clearProgressTimer();}

तेज़ कॉल कोई प्रगति पंक्ति नहीं दिखाते; लंबे कॉल लंबित रहने के दौरान एक पंक्ति दिखाते हैं; रद्द किए गए कॉल पुरानी प्रगति दिखाई देने से पहले टाइमर साफ़ कर देते हैं। प्रगति टेक्स्ट एक सार्वजनिक UI साइड चैनल है, इसलिए इसमें कभी भी सीक्रेट, रॉ आर्ग्युमेंट, प्राप्त सामग्री, कमांड आउटपुट या पृष्ठ टेक्स्ट शामिल नहीं होना चाहिए।

विवरण मोड

OpenClaw प्रगति ड्राफ़्ट और /verbose के लिए समान फ़ॉर्मैटर का उपयोग करता है:

json5
{  agents: {    defaults: {      toolProgressDetail: "explain", // explain | raw    },  },}

"explain" डिफ़ॉल्ट है और संक्षिप्त लेबल के साथ ड्राफ़्ट को स्थिर रखता है। "raw" उपलब्ध होने पर अंतर्निहित कमांड जोड़ता है, जो डीबगिंग के दौरान उपयोगी है लेकिन चैट में अधिक शोर करता है। उदाहरण के लिए, node --check /tmp/app.js कॉल मोड के अनुसार अलग-अलग रेंडर होती है:

मोड प्रगति पंक्ति
explain 🛠️ check js syntax for /tmp/app.js
raw 🛠️ check js syntax for /tmp/app.js · node --check /tmp/app.js

कमांड/एक्ज़ेक टेक्स्ट

streaming.progress.commandText (डिफ़ॉल्ट "raw") नियंत्रित करता है कि ऊपर दिए गए विवरण मोड से स्वतंत्र रूप से, एक्ज़ेक/Bash प्रगति पंक्तियों के साथ कितना कमांड विवरण दिखाई देता है। कमांड टेक्स्ट को पूरी तरह छिपाते हुए टूल-प्रगति पंक्ति दृश्यमान रखने के लिए इसे "status" पर सेट करें:

json5
{  channels: {    discord: {      streaming: {        mode: "progress",        progress: {          commandText: "status",        },      },    },  },}

टिप्पणी लेन

streaming.progress.commentary (डिफ़ॉल्ट false) मॉडल के टूल-पूर्व टिप्पणी/प्रस्तावना वर्णन (💬, उदाहरण के लिए "मैं जाँच करूँगा... फिर ...") को ड्राफ़्ट में टूल पंक्तियों के साथ मिला देता है। चैनलों में साझा कॉन्फ़िगरेशन संरचना के लिए स्ट्रीमिंग और चंकिंग देखें।

टिप्पणी लेन सक्षम होने पर, प्रस्तावनाएँ केवल उन मिली-जुली 💬 पंक्तियों के रूप में रेंडर होती हैं; नीचे दिया स्थिति शीर्षक रास्ते से हटकर रहता है, ताकि लेन अपना दस्तावेजीकृत स्वरूप बनाए रखे।

स्थिति शीर्षक

प्रगति मोड में Discord और Telegram पर, उपलब्ध होने पर मॉडल की टाइप की गई टूल-पूर्व प्रस्तावना ड्राफ़्ट का स्थिति शीर्षक बन जाती है। अन्य प्रगति-मोड चैनल अपना मौजूदा स्थिति व्यवहार बनाए रखते हैं। शीर्षक डिफ़ॉल्ट रूप से चालू रहता है और छोटे टर्न के लिए सामान्य गतिविधि गेट को बायपास नहीं करता; streaming.progress.commentary सक्षम करने पर प्रस्तावनाएँ इसके बजाय मिली-जुली टिप्पणी लेन को सौंप दी जाती हैं।

Discord पर, जब एजेंट के लिए कोई उपयोगिता मॉडल निर्धारित होता है — स्पष्ट utilityModel, या प्राथमिक प्रदाता का घोषित छोटा-मॉडल डिफ़ॉल्ट (OpenAI → gpt-5.6-luna, Anthropic → claude-haiku-4-5) — तब मॉडल द्वारा कोई प्रस्तावना उत्सर्जित न करने या लगभग 20 सेकंड तक शांत रहने पर वह सरल भाषा में एक छोटा पूरक प्रदान करता है (Telegram का शीर्षक आज केवल प्रस्तावना पर आधारित है):

text
आपके कॉन्फ़िगरेशन में डिफ़ॉल्ट मॉडल अपडेट किया जा रहा है, फिर उसे लागू करने के लिए Gatewayपुनः आरंभ किया जा रहा है। एक एजेंट सूचीकरण कॉल विफल हुई और उसका पुनः प्रयास किया जा रहा है।

उपयोगिता वर्णन डिफ़ॉल्ट रूप से चालू है (streaming.progress.narration, डिफ़ॉल्ट true) और कभी भी प्राथमिक मॉडल पर फ़ॉलबैक नहीं करता: यह केवल स्पष्ट utilityModel या एजेंट के प्राथमिक प्रदाता के लिए प्रदाता-घोषित डिफ़ॉल्ट के साथ चलता है। उपयोगिता रूटिंग को पूरी तरह अक्षम करने के लिए utilityModel: "" सेट करें। टूल पंक्तियाँ नीचे एकत्रित होती रहती हैं और दोनों स्थिति स्रोत रुकने पर वापस आ जाती हैं। ड्राफ़्ट संपादन अब भी सामान्य गतिविधि गेट और वास्तविक टेक्स्ट परिवर्तन की प्रतीक्षा करते हैं, जिससे तेज़ टर्न में क्षणिक झलक से बचाव होता है और व्यस्त चैनलों में संपादन की अनावश्यक पुनरावृत्ति घटती है। केवल उपयोगिता-मॉडल पूरक को अक्षम करने के लिए narration: false सेट करें; मॉडल प्रस्तावना शीर्षक सक्षम रहते हैं:

json5
{  channels: {    discord: {      streaming: {        mode: "progress",        progress: {          narration: false,        },      },    },  },}

वर्णन इनपुट सीमित और संपादित होता है: उपयोगिता मॉडल को आने वाले अनुरोध का टेक्स्ट और वही संक्षिप्त, संपादित टूल सारांश प्राप्त होते हैं जिन्हें ड्राफ़्ट रेंडर करेगा — रॉ कमांड आउटपुट या टूल परिणाम कभी नहीं। commandText: "status" के साथ, वर्णन इनपुट एक्ज़ेक/Bash कमांड टेक्स्ट को भी छोड़ देता है, जो ड्राफ़्ट में दिखाई देने वाले स्वरूप से मेल खाता है।

पंक्ति सीमाएँ

कितनी पंक्तियाँ दृश्यमान रहें, इसकी सीमा तय करें (डिफ़ॉल्ट 8):

json5
{  channels: {    discord: {      streaming: {        mode: "progress",        progress: {          maxLines: 4,        },      },    },  },}

ड्राफ़्ट संपादित होने के दौरान चैट-बबल रिफ़्लो कम करने के लिए प्रगति पंक्तियाँ स्वचालित रूप से संक्षिप्त की जाती हैं, और OpenClaw लंबी पंक्तियों को छोटा करता है, ताकि बार-बार किए गए ड्राफ़्ट संपादन हर अपडेट पर अलग तरह से रैप न हों। डिफ़ॉल्ट प्रति-पंक्ति सीमा 120 वर्ण है; गद्य शब्द की सीमा पर काटा जाता है, जबकि पाथ या रॉ कमांड जैसे लंबे विवरणों को मध्य में एलिप्सिस लगाकर छोटा किया जाता है, ताकि प्रत्यय दृश्यमान रहे।

प्रति-पंक्ति सीमा समायोजित करें:

json5
{  channels: {    discord: {      streaming: {        mode: "progress",        progress: {          maxLineChars: 160,        },      },    },  },}

समृद्ध रेंडरिंग (Slack)

Slack प्रगति पंक्तियों को साधारण टेक्स्ट के बजाय संरचित Block Kit फ़ील्ड के रूप में रेंडर कर सकता है:

json5
{  channels: {    slack: {      streaming: {        mode: "progress",        progress: {          render: "rich",        },      },    },  },}

समृद्ध रेंडरिंग हमेशा Block Kit फ़ील्ड के साथ वही साधारण-टेक्स्ट बॉडी भेजती है, इसलिए जो क्लाइंट अधिक समृद्ध संरचना रेंडर नहीं कर सकते, वे भी संक्षिप्त प्रगति टेक्स्ट दिखाते हैं।

टूल/कार्य पंक्तियाँ छिपाएँ

एकल प्रगति ड्राफ़्ट बनाए रखें लेकिन टूल और कार्य पंक्तियाँ छिपाएँ:

json5
{  channels: {    discord: {      streaming: {        mode: "progress",        progress: {          toolProgress: false,        },      },    },  },}

toolProgress: false के साथ, OpenClaw उस टर्न के लिए पुराने अलग-अलग टूल-प्रगति संदेशों को अब भी दबाता है — अंतिम उत्तर आने तक चैनल दृश्य रूप से शांत रहता है, सिवाय लेबल के, यदि कोई कॉन्फ़िगर किया गया हो।

चैनल व्यवहार

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

सुरक्षित संपादन समर्थन के बिना चैनल टाइपिंग संकेतकों या केवल-अंतिम डिलीवरी पर वापस आते हैं। प्रत्येक चैनल के संपूर्ण रनटाइम-व्यवहार विवरण के लिए स्ट्रीमिंग और चंकिंग देखें।

अंतिम रूप देना

अंतिम उत्तर तैयार होने पर, OpenClaw चैट को साफ़ रखने की कोशिश करता है:

  • Discord पर progress मोड में, अंतिम उत्तर एक नए संदेश के रूप में भेजा जाता है, जिसके अंत में एक छोटी -# गतिविधि रसीद जोड़ी जाती है (उदाहरण के लिए -# 🧠 2 thoughts · 🛠️ 5 tool calls · ⏱️ 12s), और उस उत्तर की डिलीवरी होने के बाद स्थिति ड्राफ़्ट हटा दिया जाता है। व्यस्त चैनलों में उत्तर के ऊपर कोई अनाथ टूल लॉग नहीं रहता; त्रुटि वाले अंतिम उत्तर विफल टर्न के दृश्य रिकॉर्ड के रूप में ड्राफ़्ट को बनाए रखते हैं।
  • यदि ड्राफ़्ट सुरक्षित रूप से अंतिम उत्तर बन सकता है (partial/block मोड), तो OpenClaw उसे उसी स्थान पर संपादित करता है।
  • यदि चैनल मूल प्रगति स्ट्रीमिंग का उपयोग करता है, तो मूल परिवहन द्वारा अंतिम टेक्स्ट स्वीकार किए जाने पर OpenClaw उस स्ट्रीम को अंतिम रूप देता है।
  • अन्यथा (मीडिया, अनुमोदन प्रॉम्प्ट, स्पष्ट उत्तर लक्ष्य, बहुत अधिक चंक, या विफल संपादन/भेजना) OpenClaw ड्राफ़्ट को अधिलेखित करने के बजाय सामान्य चैनल डिलीवरी पथ से अंतिम उत्तर भेजता है।

यह फ़ॉलबैक जानबूझकर है: नया अंतिम उत्तर भेजना टेक्स्ट खोने, उत्तर को गलत थ्रेड में डालने, या ड्राफ़्ट को ऐसे पेलोड से अधिलेखित करने से बेहतर है जिसे चैनल सुरक्षित रूप से प्रस्तुत नहीं कर सकता।

समस्या निवारण

मुझे केवल अंतिम उत्तर दिखाई देता है।

जाँचें कि संदेश संभालने वाले अकाउंट या चैनल के लिए channels.<channel>.streaming.mode, progress है। कुछ समूह या उद्धरण-उत्तर पथ किसी टर्न के लिए ड्राफ़्ट पूर्वावलोकन अक्षम कर देते हैं, जब चैनल सही संदेश को सुरक्षित रूप से संपादित नहीं कर सकता।

मुझे लेबल दिखाई देता है, लेकिन टूल पंक्तियाँ नहीं।

streaming.progress.toolProgress जाँचें। यदि यह false है, तो OpenClaw एकल ड्राफ़्ट व्यवहार बनाए रखता है, लेकिन टूल और कार्य प्रगति पंक्तियाँ छिपा देता है।

मुझे संपादित ड्राफ़्ट के बजाय नया अंतिम संदेश दिखाई देता है।

यह अंतिम रूप देना में वर्णित सुरक्षा फ़ॉलबैक है। ऐसा मीडिया उत्तरों, लंबे उत्तरों, स्पष्ट उत्तर लक्ष्यों, पुराने Telegram ड्राफ़्ट, अनुपस्थित Slack थ्रेड लक्ष्यों, हटाए गए पूर्वावलोकन संदेशों या विफल मूल स्ट्रीम अंतिमीकरण के कारण हो सकता है।

मुझे अब भी अलग-अलग प्रगति संदेश दिखाई देते हैं।

ड्राफ़्ट सक्रिय होने पर प्रगति मोड डिफ़ॉल्ट अलग-अलग टूल-प्रगति संदेशों को दबाता है। यदि अलग-अलग संदेश अब भी दिखाई देते हैं, तो पुष्टि करें कि टर्न वास्तव में progress मोड का उपयोग कर रहा है, न कि streaming.mode: "off" या ऐसे चैनल पथ का जो उस संदेश के लिए ड्राफ़्ट नहीं बना सकता।

Teams, Discord या Telegram से अलग व्यवहार करता है।

Microsoft Teams सामान्य भेजें-और-संपादित-करें पूर्वावलोकन परिवहन के बजाय व्यक्तिगत चैट में मूल स्ट्रीम का उपयोग करता है, और streaming.mode: "block" को Teams ब्लॉक डिलीवरी से मैप करता है, क्योंकि उसमें Discord और Telegram जैसा ड्राफ़्ट-पूर्वावलोकन ब्लॉक मोड नहीं है।

संबंधित

Was this useful?
On this page

On this page