Messages and delivery
استریم و قطعهبندی
OpenClaw دو لایهٔ مستقل برای استریم دارد و در حال حاضر هیچ استریم واقعی تفاضل توکن به پیامهای کانال وجود ندارد:
- استریم بلوکی (کانالها): همزمان با نوشتن دستیار، بلوکهای تکمیلشده را منتشر میکند. اینها پیامهای عادی کانالاند، نه تفاضلهای توکن.
- استریم پیشنمایش (Telegram/Discord/Slack/Matrix/Mattermost/MS Teams): هنگام تولید، یک پیام پیشنمایش موقت را بهروزرسانی میکند (ارسال + ویرایشها/افزودنها).
وضعیت راهاندازی رابط کاربری کنترل
پس از آنکه chat.send یک اجرای فعال را تأیید میکند، Gateway میتواند پیش از
نمایانشدن متن دستیار یا فعالیت ابزار، یک وضعیت راهاندازی سطحبالا و نوعدار ارسال کند.
رابط کاربری کنترل این وضعیت را در کنار نشانگر کار نمایش میدهد و شامل مراحلی برای
آمادهسازی فضای کاری، تأمین محیط، آمادهسازی زمینه و
راهاندازی مدل است.
اولین تفاضل دستیار یا شروع ابزار، وضعیت راهاندازی آن اجرا را برای همیشه جایگزین میکند. تا زمانی که ابزاری منتظر اقدام اپراتور است، وضعیت تأیید اولویت دارد. ایجاد درخت کاری و اعزام اولیه به ابر پیش از وجود یک اجرای چت رخ میدهند؛ بنابراین پیشرفت RPC پیش از اجرای آنها بهعنوان وضعیت راهاندازی اجرا نمایش داده نمیشود؛ تأمین محیط تنها زمانی در اینجا ظاهر میشود که یک اجرای فعال، کارگر بازیابیشدهای را دوباره تأمین کند.
استریم بلوکی (پیامهای کانال)
استریم بلوکی، خروجی دستیار را همزمان با دردسترسقرارگرفتن در قطعههای درشت ارسال میکند.
خروجی مدل └─ text_delta/رویدادها ├─ (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 |
عدد، سقف نرم خطوط که پاسخهای بلند را برای جلوگیری از بریدهشدن در رابط کاربری تقسیم میکند | 17 |
streaming.chunkMode: "newline" پیش از بازگشت به قطعهبندی بر اساس طول، متن را در خطوط خالی
(مرز پاراگرافها)، نه در هر خط جدید، تقسیم میکند؛ این بازگشت زمانی رخ میدهد که متن
از محدودیت فراتر رود.
کانالهای همراه این بازنویسیها را بهشکل
channels.<id>.streaming.{chunkMode,block.enabled,block.coalesce} مینویسند. شکلهای مسطح
*.chunkMode / *.blockStreaming / *.blockStreamingCoalesce در
همهٔ کانالهای همراه قدیمیاند: openclaw doctor --fix آنها را به
ساختار تودرتو مهاجرت میدهد و طرحوارههای کانال آنها را رد میکنند. پیکربندیهای Plugin
خارجی SDK که همچنان از شکلهای مسطح استفاده میکنند، تا چرخهٔ انتشار بعدی از طریق
یک مسیر جایگزین منسوخشده (همراه با هشدار زمان اجرا) به کار خود ادامه میدهند.
معنای مرزها برای 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فراخوانیهای API استریم بومی Slack (chat.startStream/chat.appendStream/chat.stopStream) را هنگامی تغییر وضعیت میدهد کهchannels.slack.streaming.mode="partial"باشد (پیشفرض:true).- استریم بومی Slack و وضعیت رشتهٔ دستیار Slack به یک هدف رشتهٔ پاسخ نیاز دارند. پیامهای خصوصی سطح بالا آن پیشنمایش رشتهمانند را نشان نمیدهند، اما همچنان میتوانند از پستها و ویرایشهای پیشنویس پیشنمایش 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 (شامل حالت "quiet" متعلق به Matrix) بازنویسی میشود؛ در زمان اجرا خوانده نمیشود |
| Feishu | streaming بولی |
توسط openclaw doctor --fix به streaming.mode بازنویسی میشود؛ در زمان اجرا خوانده نمیشود |
| QQ Bot | streaming بولی؛ streaming.c2cStreamApi |
توسط openclaw doctor --fix به streaming.mode (و برای شکلهای بولی/c2cStreamApi به streaming.nativeTransport) بازنویسی میشود؛ در زمان اجرا خوانده نمیشود |
رفتار زمان اجرا
Telegram
- از بهروزرسانیهای پیشنمایش
sendMessage+editMessageTextدر پیامهای خصوصی و گروهها/موضوعها استفاده میکند؛ متن نهایی، پیشنمایش فعال را در همان محل ویرایش میکند. پیشنویسهای موقت ۳۰ثانیهای «در حال تایپ» Telegram (sendMessageDraft) برای استریم پاسخ استفاده نمیشوند. - پیشنمایشهای اولیه کوتاه همچنان برای تجربه کاربری اعلانهای فشاری با تأخیر کنترل میشوند، اما پس از تأخیری محدود ظاهر میشوند تا اجراهای فعال از نظر بصری ساکت نمانند.
- خروجیهای نهایی طولانی برای قطعه نخست از پیام پیشنمایش دوباره استفاده میکنند و فقط قطعههای باقیمانده را میفرستند.
- حالت
blockدرstreaming.preview.chunk.maxCharsپیشنمایش را به پیامی جدید منتقل میکند (پیشفرض 800، با سقف محدودیت ویرایش 4096 در Telegram)؛ حالتهای دیگر یک پیشنمایش را تا 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ابتدا از متن پیشنمایش وضعیت و سپس از پاسخ نهایی استفاده میکند.- پیامهای خصوصی سطحبالا که رشته پاسخی ندارند، بهجای استریم بومی Slack از پستهای پیشنمایش پیشنویس و ویرایش آنها استفاده میکنند.
- استریم بومی و پیشنمایش پیشنویس، پاسخهای بلوکی را برای آن نوبت سرکوب میکنند تا یک پاسخ Slack تنها از یک مسیر تحویل استریم شود.
- بارهای نهایی رسانهای/خطا و خروجیهای نهایی پیشرفت، پیامهای پیشنویس یکبارمصرف ایجاد نمیکنند؛ فقط خروجیهای نهایی متنی/بلوکی که میتوانند پیشنمایش را ویرایش کنند، متن پیشنویس در انتظار را تخلیه میکنند.
Mattermost
- در حالت
partial، تفکر و متن جزئی پاسخ را در یک پست پیشنمایش پیشنویس استریم میکند که وقتی ارسال پاسخ نهایی ایمن باشد، در همان محل نهایی میشود. - در حالت
progress، تفکر و فعالیت ابزار را در یک پیشنمایش وضعیت واحد استریم میکند که وقتی ارسال پاسخ نهایی ایمن باشد، در همان محل نهایی میشود. - در حالت
block، میان متن تکمیلشده و پستهای فعالیت ابزار جابهجا میشود؛ بهروزرسانیهای موازی و متوالی ابزار، پست فعلی فعالیت ابزار را بهاشتراک میگذارند. - اگر پست پیشنمایش حذف شده یا هنگام نهاییسازی به هر دلیل دیگری در دسترس نباشد، به ارسال یک پست نهایی تازه برمیگردد.
- بارهای نهایی رسانهای/خطا، بهجای تخلیه یک پست پیشنمایش موقت، بهروزرسانیهای پیشنمایش در انتظار را پیش از تحویل عادی لغو میکنند.
Matrix
- وقتی متن نهایی بتواند از رویداد پیشنمایش دوباره استفاده کند، پیشنمایشهای پیشنویس در همان محل نهایی میشوند.
- خروجیهای نهایی فقطرسانهای، خطا و دارای عدم تطابق مقصد پاسخ، بهروزرسانیهای پیشنمایش در انتظار را پیش از تحویل عادی لغو میکنند؛ پیشنمایش کهنهای که از قبل قابلمشاهده است، حذف محتوایی میشود.
بهروزرسانیهای پیشنمایش پیشرفت ابزار
استریم پیشنمایش میتواند شامل بهروزرسانیهای پیشرفت ابزار نیز باشد: خطوط وضعیت کوتاهی مانند «در حال جستوجوی وب»، «در حال خواندن فایل» یا «در حال فراخوانی ابزار» که هنگام اجرای ابزارها، پیش از پاسخ نهایی در همان پیام پیشنمایش ظاهر میشوند. در حالت app-server برنامه 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 در حالت پیشرفت، همان مقدمه حتی وقتی این مسیر اختیاری خاموش است، عنوان وضعیت را تأمین میکند؛ کانالهای دیگر رفتار پیشرفت موجود خود را حفظ میکنند. به پیشنویسهای پیشرفت مراجعه کنید.
{ "channels": { "discord": { "streaming": { "mode": "progress", "progress": { "commentary": true } } } }}خطوط پیشرفت را قابلمشاهده نگه دارید، اما متن خام فرمان/اجرا را پنهان کنید:
{ "channels": { "telegram": { "streaming": { "mode": "partial", "preview": { "toolProgress": true, "commandText": "status" } } } }}از همین ساختار زیر کلید کانال فشرده پیشرفت دیگری استفاده کنید، برای نمونه
channels.discord، channels.matrix، channels.msteams،
channels.mattermost یا پیشنمایشهای پیشنویس Slack. برای حالت پیشنویس پیشرفت،
همین سیاست را زیر streaming.progress قرار دهید:
{ "channels": { "telegram": { "streaming": { "mode": "progress", "progress": { "toolProgress": true, "commandText": "status" } } } }}مرتبط
- بازآرایی چرخه عمر پیام - طراحی مشترک هدف برای پیشنمایش، ویرایش، استریم و نهاییسازی
- پیشنویسهای پیشرفت - پیامهای قابلمشاهده کار در حال انجام که طی نوبتهای طولانی بهروزرسانی میشوند
- پیامها - چرخه عمر و تحویل پیام
- تلاش مجدد - رفتار تلاش مجدد هنگام شکست تحویل
- کانالها - پشتیبانی استریم برای هر کانال