---
read_when:
    - चैनलों पर स्ट्रीमिंग या खंडों में विभाजन कैसे काम करता है, इसकी व्याख्या करना
    - ब्लॉक स्ट्रीमिंग या चैनल चंकिंग व्यवहार बदलना
    - डुप्लिकेट/समय-पूर्व ब्लॉक उत्तरों या चैनल प्रीव्यू स्ट्रीमिंग की डीबगिंग
summary: स्ट्रीमिंग + चंकिंग व्यवहार (ब्लॉक उत्तर, चैनल पूर्वावलोकन स्ट्रीमिंग, मोड मैपिंग)
title: स्ट्रीमिंग और खंडन
x-i18n:
    generated_at: "2026-07-27T17:50:29Z"
    model: gpt-5.6
    postprocess_version: locale-links-v1
    prompt_version: 32
    provider: openai
    source_hash: a498f2e490ae6f2ecdebba92f0b992f2e16d212eae6a437eb3a0ef8a59354e13
    source_path: concepts/streaming.md
    workflow: 16
---

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 चैनल दस्तावेज़](/hi/channels/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 पर,
  यह वैकल्पिक लेन बंद होने पर भी वही प्रस्तावना स्थिति शीर्षक प्रदान करती है;
  अन्य चैनल अपना मौजूदा प्रगति व्यवहार बनाए रखते हैं। देखें
  [प्रगति ड्राफ़्ट](/hi/concepts/progress-drafts#status-headline)।

```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"
        }
      }
    }
  }
}
```

## संबंधित

- [संदेश जीवनचक्र रीफ़ैक्टर](/hi/concepts/message-lifecycle-refactor) - साझा पूर्वावलोकन, संपादन, स्ट्रीम और अंतिम रूप देने की लक्षित डिज़ाइन
- [प्रगति ड्राफ़्ट](/hi/concepts/progress-drafts) - लंबे टर्न के दौरान अपडेट होने वाले दृश्यमान कार्य-प्रगति संदेश
- [संदेश](/hi/concepts/messages) - संदेश जीवनचक्र और डिलीवरी
- [पुनः प्रयास](/hi/concepts/retry) - डिलीवरी विफलता पर पुनः प्रयास का व्यवहार
- [चैनल](/hi/channels) - प्रत्येक चैनल के लिए स्ट्रीमिंग समर्थन
