Messages and delivery
การสตรีมและการแบ่งเป็นชิ้น
OpenClaw มีเลเยอร์การสตรีมแยกกันสองชั้น:
- การสตรีมบล็อก (ช่องทาง): ส่ง บล็อก ที่เสร็จแล้วขณะที่ผู้ช่วยเขียนอยู่ สิ่งเหล่านี้คือข้อความช่องทางปกติ (ไม่ใช่เดลตาโทเคน)
- การสตรีมตัวอย่างก่อนส่ง (Telegram/Discord/Slack): อัปเดต ข้อความตัวอย่างก่อนส่ง ชั่วคราวระหว่างการสร้าง
ปัจจุบัน ยังไม่มีการสตรีมเดลตาโทเคนจริง ไปยังข้อความช่องทาง การสตรีมตัวอย่างก่อนส่งทำงานแบบอิงข้อความ (ส่ง + แก้ไข/ต่อท้าย)
การสตรีมบล็อก (ข้อความช่องทาง)
การสตรีมบล็อกจะส่งเอาต์พุตของผู้ช่วยเป็นชิ้นใหญ่แบบหยาบเมื่อพร้อมใช้งาน
Model output └─ text_delta/events ├─ (blockStreamingBreak=text_end) │ └─ chunker emits blocks as buffer grows └─ (blockStreamingBreak=message_end) └─ chunker flushes at message_end └─ channel send (block replies)คำอธิบาย:
text_delta/events: เหตุการณ์สตรีมของโมเดล (อาจเบาบางสำหรับโมเดลที่ไม่ใช่แบบสตรีม)chunker:EmbeddedBlockChunkerที่ใช้ขอบเขตต่ำสุด/สูงสุด + ค่ากำหนดจุดแบ่งchannel send: ข้อความขาออกจริง (การตอบกลับแบบบล็อก)
ตัวควบคุม:
agents.defaults.blockStreamingDefault:"on"/"off"(ค่าเริ่มต้นคือปิด)- การแทนที่รายช่องทาง:
*.blockStreaming(และรูปแบบรายบัญชี) เพื่อบังคับ"on"/"off"ต่อช่องทาง agents.defaults.blockStreamingBreak:"text_end"หรือ"message_end"agents.defaults.blockStreamingChunk:{ minChars, maxChars, breakPreference? }agents.defaults.blockStreamingCoalesce:{ minChars?, maxChars?, idleMs? }(รวมบล็อกที่สตรีมก่อนส่ง)- เพดานตายตัวของช่องทาง:
*.textChunkLimit(เช่นchannels.whatsapp.textChunkLimit) - โหมดแบ่งชิ้นของช่องทาง:
*.chunkMode(ค่าเริ่มต้นlength,newlineจะแบ่งตามบรรทัดว่าง (ขอบเขตย่อหน้า) ก่อนการแบ่งตามความยาว) - เพดานแบบยืดหยุ่นของ Discord:
channels.discord.maxLinesPerMessage(ค่าเริ่มต้น 17) แบ่งการตอบกลับที่สูงเกินไปเพื่อหลีกเลี่ยงการถูกตัดใน UI
ความหมายของขอบเขต:
text_end: สตรีมบล็อกทันทีเมื่อ chunker ส่งออก; flush ในแต่ละtext_endmessage_end: รอจนข้อความผู้ช่วยจบ แล้วจึง flush เอาต์พุตที่บัฟเฟอร์ไว้
message_end ยังคงใช้ chunker หากข้อความที่บัฟเฟอร์ไว้เกิน maxChars ดังนั้นจึงสามารถส่งออกหลายชิ้นในตอนท้ายได้
การส่งสื่อพร้อมการสตรีมบล็อก
สื่อที่สตรีมต้องใช้ฟิลด์เพย์โหลดแบบมีโครงสร้าง เช่น mediaUrl หรือ
mediaUrls; ข้อความที่สตรีมจะไม่ถูกแยกวิเคราะห์เป็นคำสั่งแนบไฟล์ เมื่อการสตรีมบล็อก
ส่งสื่อตั้งแต่เนิ่น ๆ OpenClaw จะจดจำการส่งนั้นสำหรับรอบสนทนานั้น หาก
เพย์โหลดสุดท้ายของผู้ช่วยทำซ้ำ URL สื่อเดียวกัน การส่งครั้งสุดท้าย
จะตัดสื่อที่ซ้ำออกแทนที่จะส่งไฟล์แนบอีกครั้ง
เพย์โหลดสุดท้ายที่ซ้ำกันทุกประการจะถูกระงับ หากเพย์โหลดสุดท้ายเพิ่ม ข้อความที่แตกต่างรอบสื่อที่สตรีมไปแล้ว OpenClaw จะยังคงส่ง ข้อความใหม่โดยคงให้สื่อถูกส่งเพียงครั้งเดียว วิธีนี้ป้องกันการส่งโน้ตเสียง หรือไฟล์ซ้ำในช่องทาง เช่น Telegram
อัลกอริทึมการแบ่งชิ้น (ขอบเขตต่ำ/สูง)
การแบ่งชิ้นบล็อกดำเนินการโดย EmbeddedBlockChunker:
- ขอบเขตต่ำ: อย่าส่งออกจนกว่าบัฟเฟอร์ >=
minChars(เว้นแต่ถูกบังคับ) - ขอบเขตสูง: เลือกแบ่งก่อน
maxChars; หากถูกบังคับ ให้แบ่งที่maxChars - ค่ากำหนดจุดแบ่ง:
paragraph→newline→sentence→whitespace→ การแบ่งแบบแข็ง - รั้วโค้ด: ไม่แบ่งภายในรั้วโค้ด; เมื่อถูกบังคับที่
maxCharsให้ปิด + เปิดรั้วใหม่เพื่อให้ Markdown ยังถูกต้อง
maxChars จะถูกจำกัดไม่ให้เกิน textChunkLimit ของช่องทาง ดังนั้นคุณจึงไม่สามารถเกินเพดานรายช่องทางได้
การรวมชิ้น (รวมบล็อกที่สตรีม)
เมื่อเปิดใช้การสตรีมบล็อก OpenClaw สามารถ รวมชิ้นบล็อกที่ต่อเนื่องกัน ก่อนส่งออกได้ วิธีนี้ลด "สแปมบรรทัดเดียว" ในขณะที่ยังคงให้ เอาต์พุตแบบคืบหน้า
- การรวมชิ้นจะรอ ช่วงว่างที่ไม่มีการทำงาน (
idleMs) ก่อน flush - บัฟเฟอร์ถูกจำกัดด้วย
maxCharsและจะ flush หากเกินค่านี้ minCharsป้องกันไม่ให้ส่งเศษข้อความเล็ก ๆ จนกว่าจะมีข้อความสะสมเพียงพอ (การ flush สุดท้ายจะส่งข้อความที่เหลือเสมอ)- ตัวเชื่อมจะอิงจาก
blockStreamingChunk.breakPreference(paragraph→\n\n,newline→\n,sentence→ เว้นวรรค) - มีการแทนที่รายช่องทางผ่าน
*.blockStreamingCoalesce(รวมถึงการกำหนดค่ารายบัญชี) - ค่าเริ่มต้นของการรวมชิ้น
minCharsถูกเพิ่มเป็น 1500 สำหรับ Signal/Slack/Discord เว้นแต่ถูกแทนที่
จังหวะระหว่างบล็อกแบบคล้ายมนุษย์
เมื่อเปิดใช้การสตรีมบล็อก คุณสามารถเพิ่ม การหยุดแบบสุ่ม ระหว่าง การตอบกลับแบบบล็อก (หลังบล็อกแรก) ได้ วิธีนี้ทำให้การตอบกลับแบบหลายบับเบิล รู้สึกเป็นธรรมชาติมากขึ้น
- การกำหนดค่า:
agents.defaults.humanDelay(แทนที่ต่อเอเจนต์ผ่านagents.list[].humanDelay) - โหมด:
off(ค่าเริ่มต้น),natural(800-2500ms),custom(minMs/maxMs) - ใช้เฉพาะกับ การตอบกลับแบบบล็อก ไม่ใช่การตอบกลับสุดท้ายหรือสรุปเครื่องมือ
"สตรีมชิ้นข้อความหรือทั้งหมด"
สิ่งนี้แมปเป็น:
- สตรีมชิ้นข้อความ:
blockStreamingDefault: "on"+blockStreamingBreak: "text_end"(ส่งออกไปเรื่อย ๆ) ช่องทางที่ไม่ใช่ Telegram ต้องตั้ง*.blockStreaming: trueด้วย - สตรีมทั้งหมดตอนท้าย:
blockStreamingBreak: "message_end"(flush หนึ่งครั้ง อาจเป็นหลายชิ้นหากยาวมาก) - ไม่มีการสตรีมบล็อก:
blockStreamingDefault: "off"(เฉพาะการตอบกลับสุดท้าย)
หมายเหตุช่องทาง: การสตรีมบล็อกจะ ปิด เว้นแต่
ตั้งค่า *.blockStreaming เป็น true อย่างชัดเจน ช่องทางสามารถสตรีมตัวอย่างก่อนส่งแบบสด
(channels.<channel>.streaming) ได้โดยไม่มีการตอบกลับแบบบล็อก
เตือนตำแหน่งการกำหนดค่า: ค่าเริ่มต้น blockStreaming* อยู่ภายใต้
agents.defaults ไม่ใช่ config ราก
โหมดการสตรีมตัวอย่างก่อนส่ง
คีย์แบบบัญญัติ: channels.<channel>.streaming
โหมด:
off: ปิดการสตรีมตัวอย่างก่อนส่งpartial: ตัวอย่างก่อนส่งเดียวที่ถูกแทนที่ด้วยข้อความล่าสุดblock: ตัวอย่างก่อนส่งอัปเดตเป็นขั้นตอนแบบแบ่งชิ้น/ต่อท้ายprogress: ตัวอย่างก่อนส่งสถานะ/ความคืบหน้าระหว่างการสร้าง คำตอบสุดท้ายเมื่อเสร็จสิ้น
streaming.mode: "block" เป็นโหมดการสตรีมตัวอย่างก่อนส่งสำหรับช่องทางที่แก้ไขได้
เช่น Discord และ Telegram มันไม่ได้เปิดใช้การส่งบล็อกผ่านช่องทางนั้น
ใช้ streaming.block.enabled หรือคีย์ช่องทางเดิม blockStreaming เมื่อ
คุณต้องการการตอบกลับแบบบล็อกปกติ Microsoft Teams เป็นข้อยกเว้น: ไม่มี
ทรานสปอร์ตบล็อกแบบร่างตัวอย่างก่อนส่ง ดังนั้น streaming.mode: "block" จะแมปไปยังการส่งบล็อกของ Teams
แทนการสตรีมบางส่วน/ความคืบหน้าแบบเนทีฟ
การแมปช่องทาง
| ช่องทาง | off |
partial |
block |
progress |
|---|---|---|---|---|
| Telegram | ✅ | ✅ | ✅ | แบบร่างความคืบหน้าที่แก้ไขได้ |
| Discord | ✅ | ✅ | ✅ | แบบร่างความคืบหน้าที่แก้ไขได้ |
| Slack | ✅ | ✅ | ✅ | ✅ |
| Mattermost | ✅ | ✅ | ✅ | ✅ |
| MS Teams | ✅ | ✅ | ✅ | สตรีมความคืบหน้าแบบเนทีฟ |
เฉพาะ Slack:
channels.slack.streaming.nativeTransportสลับการเรียก API สตรีมมิงแบบเนทีฟของ Slack เมื่อchannels.slack.streaming.mode="partial"(ค่าเริ่มต้น:true)- การสตรีมแบบเนทีฟของ Slack และสถานะเธรดผู้ช่วยของ Slack ต้องมีเป้าหมายเธรดตอบกลับ DM ระดับบนสุดไม่แสดงตัวอย่างก่อนส่งแบบเธรดนั้น แต่ยังสามารถใช้โพสต์ตัวอย่างก่อนส่งแบบร่างของ Slack และการแก้ไขได้
การย้ายคีย์เดิม:
- Telegram: ค่าเดิม
streamModeและค่าstreamingแบบสเกลาร์/บูลีนจะถูกตรวจพบและย้ายโดยเส้นทางความเข้ากันได้ของ doctor/config ไปยังstreaming.mode - Discord:
streamMode+streamingแบบบูลีนยังคงเป็นนามแฝง runtime สำหรับ enumstreaming; รันopenclaw doctor --fixเพื่อเขียน config ที่บันทึกไว้ใหม่ - Slack:
streamModeยังคงเป็นนามแฝง runtime สำหรับstreaming.mode;streamingแบบบูลีนยังคงเป็นนามแฝง runtime สำหรับstreaming.modeรวมถึงstreaming.nativeTransport;nativeStreamingเดิมยังคงเป็นนามแฝง runtime สำหรับstreaming.nativeTransportรันopenclaw doctor --fixเพื่อเขียน config ที่บันทึกไว้ใหม่
พฤติกรรม runtime
Telegram:
- ใช้
sendMessage+editMessageTextสำหรับการอัปเดตตัวอย่างก่อนส่งทั้งใน DM และกลุ่ม/หัวข้อ - ตัวอย่างก่อนส่งเริ่มต้นสั้น ๆ ยังคงถูก debounce เพื่อ UX การแจ้งเตือนแบบพุช แต่ตอนนี้ Telegram จะทำให้มองเห็นได้หลังจากดีเลย์ที่มีขอบเขต เพื่อให้รันที่กำลังทำงานอยู่ไม่เงียบทางภาพ
- ข้อความสุดท้ายจะแก้ไขตัวอย่างก่อนส่งที่ใช้งานอยู่แทนที่; ข้อความสุดท้ายที่ยาวจะใช้ข้อความนั้นซ้ำสำหรับชิ้นแรก และส่งเฉพาะชิ้นที่เหลือ
- โหมด
blockจะหมุนตัวอย่างก่อนส่งเป็นข้อความใหม่ที่streaming.preview.chunk.maxChars(ค่าเริ่มต้น 800, จำกัดด้วยขีดจำกัดการแก้ไข 4096 ของ Telegram); โหมดอื่น ๆ จะขยายตัวอย่างก่อนส่งหนึ่งรายการได้สูงสุด 4096 อักขระ - โหมด
progressจะเก็บความคืบหน้าของเครื่องมือไว้ในแบบร่างสถานะที่แก้ไขได้ ทำให้ป้ายสถานะมองเห็นได้เมื่อการสตรีมคำตอบทำงานอยู่แต่ยังไม่มีบรรทัดเครื่องมือ ล้างแบบร่างนั้นเมื่อเสร็จสิ้น และส่งคำตอบสุดท้ายผ่านการส่งปกติ - หากการแก้ไขสุดท้ายล้มเหลวก่อนยืนยันข้อความที่เสร็จสมบูรณ์ OpenClaw จะใช้การส่งคำตอบสุดท้ายแบบปกติและล้างตัวอย่างก่อนส่งที่ค้างอยู่
- การสตรีมตัวอย่างก่อนส่งจะถูกข้ามเมื่อเปิดใช้การสตรีมบล็อกของ Telegram อย่างชัดเจน (เพื่อหลีกเลี่ยงการสตรีมซ้ำ)
/reasoning streamสามารถเขียนเหตุผลไปยังตัวอย่างก่อนส่งชั่วคราวที่จะถูกลบหลังการส่งสุดท้าย
Discord:
- ใช้การส่ง + แก้ไขข้อความตัวอย่างก่อนส่ง
- โหมด
blockใช้การแบ่งชิ้นแบบร่าง (draftChunk) - การสตรีมตัวอย่างก่อนส่งจะถูกข้ามเมื่อเปิดใช้การสตรีมบล็อกของ Discord อย่างชัดเจน
- สื่อสุดท้าย ข้อผิดพลาด และเพย์โหลดตอบกลับแบบชัดเจนจะยกเลิกตัวอย่างก่อนส่งที่รออยู่โดยไม่ flush แบบร่างใหม่ จากนั้นใช้การส่งปกติ
Slack:
partialสามารถใช้การสตรีมแบบเนทีฟของ Slack (chat.startStream/append/stop) เมื่อพร้อมใช้งานblockใช้ตัวอย่างก่อนส่งแบบร่างลักษณะต่อท้ายprogressใช้ข้อความตัวอย่างก่อนส่งสถานะ แล้วจึงเป็นคำตอบสุดท้าย- DM ระดับบนสุดที่ไม่มีเธรดตอบกลับจะใช้โพสต์ตัวอย่างก่อนส่งแบบร่างและการแก้ไขแทนการสตรีมแบบเนทีฟของ Slack
- การสตรีมตัวอย่างก่อนส่งทั้งแบบเนทีฟและแบบร่างจะระงับการตอบกลับแบบบล็อกสำหรับรอบสนทนานั้น ดังนั้นการตอบกลับของ Slack จะถูกสตรีมผ่านเส้นทางการส่งเพียงเส้นทางเดียว
- เพย์โหลดสื่อ/ข้อผิดพลาดสุดท้ายและผลลัพธ์สุดท้ายของความคืบหน้าจะไม่สร้างข้อความแบบร่างชั่วคราว; เฉพาะผลลัพธ์สุดท้ายแบบข้อความ/บล็อกที่แก้ไขตัวอย่างก่อนส่งได้เท่านั้นที่จะ flush ข้อความแบบร่างที่รออยู่
Mattermost:
- สตรีมการคิด กิจกรรมเครื่องมือ และข้อความตอบกลับบางส่วนเข้าไปในโพสต์ตัวอย่างก่อนส่งแบบร่างเดียว ซึ่งจะ finalizes แทนที่เมื่อส่งคำตอบสุดท้ายได้อย่างปลอดภัย
- ถอยกลับไปส่งโพสต์สุดท้ายใหม่หากโพสต์ตัวอย่างก่อนส่งถูกลบหรือไม่พร้อมใช้งานเมื่อถึงเวลาจบ
- เพย์โหลดสื่อ/ข้อผิดพลาดสุดท้ายจะยกเลิกการอัปเดตตัวอย่างก่อนส่งที่รออยู่ก่อนการส่งปกติ แทนที่จะ flush โพสต์ตัวอย่างก่อนส่งชั่วคราว
Matrix:
- ตัวอย่างก่อนส่งแบบร่างจะ finalizes แทนที่เมื่อข้อความสุดท้ายสามารถใช้เหตุการณ์ตัวอย่างก่อนส่งซ้ำได้
- ผลลัพธ์สุดท้ายแบบมีสื่ออย่างเดียว ข้อผิดพลาด และเป้าหมายตอบกลับไม่ตรงกันจะยกเลิกการอัปเดตตัวอย่างก่อนส่งที่รออยู่ก่อนการส่งปกติ; ตัวอย่างก่อนส่งที่ค้างซึ่งมองเห็นแล้วจะถูก redact
การอัปเดตตัวอย่างก่อนส่งความคืบหน้าเครื่องมือ
การสตรีมตัวอย่างก่อนส่งยังสามารถรวมการอัปเดต ความคืบหน้าเครื่องมือ ได้ด้วย - บรรทัดสถานะสั้น ๆ เช่น "กำลังค้นหาเว็บ", "กำลังอ่านไฟล์" หรือ "กำลังเรียกเครื่องมือ" - ซึ่งปรากฏในข้อความตัวอย่างก่อนส่งเดียวกันขณะที่เครื่องมือกำลังทำงาน ก่อนการตอบกลับสุดท้าย ในโหมดเซิร์ฟเวอร์แอป Codex ข้อความ preamble/commentary ของ Codex ใช้เส้นทางตัวอย่างก่อนส่งเดียวกันนี้ ดังนั้นโน้ตความคืบหน้าสั้น ๆ อย่าง "กำลังตรวจสอบ..." สามารถสตรีมเข้าสู่แบบร่างที่แก้ไขได้โดยไม่กลายเป็นส่วนหนึ่งของคำตอบสุดท้าย วิธีนี้ทำให้รอบสนทนาเครื่องมือหลายขั้นตอนมีความเคลื่อนไหวทางภาพ แทนที่จะเงียบระหว่างตัวอย่างก่อนส่งการคิดครั้งแรกและคำตอบสุดท้าย
เครื่องมือที่ทำงานนานอาจส่งความคืบหน้าแบบ typed ก่อนคืนค่า ตัวอย่างเช่น
web_fetch จะตั้งตัวจับเวลาห้าวินาทีเมื่อเริ่มทำงาน: หากการ fetch ยัง
รออยู่ ตัวอย่างก่อนส่งสามารถแสดง Fetching page content...; หากการ fetch เสร็จ
หรือถูกยกเลิกก่อนหน้านั้น จะไม่มีการส่งบรรทัดความคืบหน้า ผลลัพธ์เครื่องมือสุดท้ายในภายหลัง
ยังคงถูกส่งไปยังโมเดลตามปกติ
พื้นผิวที่รองรับ:
- Discord, Slack, Telegram และ Matrix จะสตรีมความคืบหน้าของเครื่องมือและการอัปเดตคำนำของ Codex เข้าไปในการแก้ไขตัวอย่างสดตามค่าเริ่มต้นเมื่อการสตรีมตัวอย่างทำงานอยู่ Microsoft Teams ใช้สตรีมความคืบหน้าแบบเนทีฟในแชทส่วนตัว
- Telegram เปิดใช้การอัปเดตตัวอย่างความคืบหน้าของเครื่องมือมาตั้งแต่
v2026.4.22; การเปิดใช้ต่อไปจะรักษาพฤติกรรมที่เผยแพร่แล้วนั้นไว้ - Mattermost รวมกิจกรรมของเครื่องมือไว้ในโพสต์ตัวอย่างแบบร่างเดียวของตัวเองอยู่แล้ว (ดูด้านบน)
- การแก้ไขความคืบหน้าของเครื่องมือจะตามโหมดการสตรีมตัวอย่างที่ใช้งานอยู่; จะถูกข้ามเมื่อการสตรีมตัวอย่างเป็น
offหรือเมื่อการสตรีมแบบบล็อกเข้าควบคุมข้อความแล้ว บน Telegram,streaming.mode: "off"เป็นแบบผลลัพธ์สุดท้ายเท่านั้น: ข้อความความคืบหน้าทั่วไปจะถูกระงับด้วย แทนที่จะส่งเป็นข้อความสถานะแยกต่างหาก ขณะที่พรอมป์อนุมัติ เพย์โหลดสื่อ และข้อผิดพลาดยังคงถูกส่งตามเส้นทางปกติ - หากต้องการคงการสตรีมตัวอย่างไว้แต่ซ่อนบรรทัดความคืบหน้าของเครื่องมือ ให้ตั้งค่า
streaming.preview.toolProgressเป็นfalseสำหรับช่องทางนั้น หากต้องการให้บรรทัดความคืบหน้าของเครื่องมือยังมองเห็นได้แต่ซ่อนข้อความคำสั่ง/การรัน ให้ตั้งค่าstreaming.preview.commandTextเป็น"status"หรือstreaming.progress.commandTextเป็น"status"; ค่าเริ่มต้นคือ"raw"เพื่อรักษาพฤติกรรมที่เผยแพร่แล้ว นโยบายนี้ใช้ร่วมกันโดยช่องทางแบบร่าง/ความคืบหน้าที่ใช้ตัวเรนเดอร์ความคืบหน้าแบบกะทัดรัดของ OpenClaw รวมถึง Discord, Matrix, Microsoft Teams, Mattermost, ตัวอย่างแบบร่างของ Slack และ Telegram หากต้องการปิดการแก้ไขตัวอย่างทั้งหมด ให้ตั้งค่าstreaming.modeเป็นoff - การตอบกลับคำพูดที่เลือกบน Telegram เป็นข้อยกเว้น: เมื่อ
replyToModeไม่ใช่"off"และมีข้อความคำพูดที่เลือกอยู่ OpenClaw จะข้ามสตรีมตัวอย่างคำตอบสำหรับรอบนั้น เพื่อไม่ให้บรรทัดตัวอย่างความคืบหน้าของเครื่องมือเรนเดอร์ได้ การตอบกลับข้อความปัจจุบันที่ไม่มีข้อความคำพูดที่เลือกยังคงใช้การสตรีมตัวอย่างต่อไป ดูรายละเอียดใน เอกสารช่องทาง Telegram
คงบรรทัดความคืบหน้าให้มองเห็นได้ แต่ซ่อนข้อความคำสั่ง/การรันแบบดิบ:
{ "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" } } } }}ที่เกี่ยวข้อง
- การปรับโครงสร้างวงจรชีวิตข้อความ - การออกแบบเป้าหมายที่ใช้ร่วมกันสำหรับตัวอย่าง การแก้ไข สตรีม และการสรุปผล
- แบบร่างความคืบหน้า - ข้อความงานที่กำลังดำเนินการซึ่งมองเห็นได้และอัปเดตระหว่างรอบที่ใช้เวลานาน
- ข้อความ - วงจรชีวิตและการส่งข้อความ
- ลองใหม่ - พฤติกรรมการลองใหม่เมื่อส่งไม่สำเร็จ
- ช่องทาง - การรองรับการสตรีมรายช่องทาง