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: สตรีมบล็อกทันทีที่ตัวแบ่งก้อนส่งออกมา; ล้างบัฟเฟอร์ในแต่ละtext_endmessage_end: รอจนข้อความผู้ช่วยเสร็จ แล้วจึงล้างเอาต์พุตที่บัฟเฟอร์ไว้
message_end ยังคงใช้ตัวแบ่งก้อนหากข้อความในบัฟเฟอร์เกิน maxChars ดังนั้นจึงสามารถส่งออกหลายก้อนในตอนท้ายได้
การส่งสื่อพร้อมการสตรีมแบบบล็อก
สื่อที่สตรีมต้องใช้ฟิลด์เพย์โหลดแบบมีโครงสร้าง เช่น mediaUrl หรือ
mediaUrls; ข้อความที่สตรีมจะไม่ถูกแยกวิเคราะห์เป็นคำสั่งแนบไฟล์ เมื่อการสตรีมแบบบล็อก
ส่งสื่อก่อนกำหนด OpenClaw จะจดจำการส่งนั้นไว้สำหรับรอบดังกล่าว หาก
เพย์โหลดสุดท้ายของผู้ช่วยทำซ้ำ URL สื่อเดิม การส่งสุดท้ายจะ
ตัดสื่อที่ซ้ำออกแทนการส่งไฟล์แนบอีกครั้ง
เพย์โหลดสุดท้ายที่ซ้ำกันทุกประการจะถูกระงับ หากเพย์โหลดสุดท้ายเพิ่ม ข้อความอื่นรอบสื่อที่สตรีมไปแล้ว OpenClaw จะยังส่ง ข้อความใหม่โดยคงสื่อให้ถูกส่งเพียงครั้งเดียว วิธีนี้ป้องกันการซ้ำของโน้ตเสียง หรือไฟล์บนช่องทางอย่าง Telegram
อัลกอริทึมการแบ่งก้อน (ขอบเขตต่ำ/สูง)
การแบ่งก้อนแบบบล็อกถูกใช้งานโดย EmbeddedBlockChunker:
- ขอบเขตต่ำ: อย่าส่งออกจนกว่าบัฟเฟอร์ >=
minChars(เว้นแต่ถูกบังคับ) - ขอบเขตสูง: ให้ความสำคัญกับการแยกก่อน
maxChars; หากถูกบังคับ ให้แยกที่maxChars - ค่ากำหนดการตัด:
paragraph→newline→sentence→whitespace→ การตัดแบบแข็ง - รั้วโค้ด: ไม่แยกภายในรั้วโค้ด; เมื่อถูกบังคับที่
maxCharsให้ปิด + เปิดรั้วใหม่เพื่อให้ Markdown ยังคงถูกต้อง
maxChars ถูกจำกัดไว้ที่ textChunkLimit ของช่องทาง ดังนั้นคุณจะไม่สามารถเกินขีดจำกัดต่อช่องทางได้
การรวมก้อน (รวมบล็อกที่สตรีม)
เมื่อเปิดใช้การสตรีมแบบบล็อก OpenClaw สามารถ รวมก้อนบล็อกที่ต่อเนื่องกัน ก่อนส่งออกไปได้ วิธีนี้ลด “สแปมบรรทัดเดียว” แต่ยังคงให้ เอาต์พุตแบบคืบหน้า
- การรวมก้อนจะรอ ช่วงว่างที่ไม่ได้ใช้งาน (
idleMs) ก่อนล้างบัฟเฟอร์ - บัฟเฟอร์ถูกจำกัดด้วย
maxCharsและจะล้างบัฟเฟอร์หากเกินค่านั้น minCharsป้องกันไม่ให้ส่วนย่อยเล็ก ๆ ถูกส่งจนกว่าจะมีข้อความสะสมเพียงพอ (การล้างบัฟเฟอร์ครั้งสุดท้ายจะส่งข้อความที่เหลือเสมอ)- ตัวเชื่อมได้มาจาก
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"(ล้างบัฟเฟอร์ครั้งเดียว อาจเป็นหลายก้อนหากยาวมาก) - ไม่มีการสตรีมแบบบล็อก:
blockStreamingDefault: "off"(ตอบกลับสุดท้ายเท่านั้น)
หมายเหตุช่องทาง: การสตรีมแบบบล็อกจะ ปิดอยู่ เว้นแต่
จะตั้งค่า *.blockStreaming เป็น true อย่างชัดเจน ช่องทางสามารถสตรีมตัวอย่างแสดงผลสด
(channels.<channel>.streaming) ได้โดยไม่มีการตอบกลับแบบบล็อก
คำเตือนตำแหน่งคอนฟิก: ค่าเริ่มต้น blockStreaming* อยู่ภายใต้
agents.defaults ไม่ใช่คอนฟิกราก
โหมดการสตรีมตัวอย่างแสดงผล
คีย์มาตรฐาน: 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สลับการเรียก Slack native streaming API เมื่อchannels.slack.streaming.mode="partial"(ค่าเริ่มต้น:true)- Slack native streaming และสถานะเธรดผู้ช่วยของ Slack ต้องมีเป้าหมายเธรดตอบกลับ DM ระดับบนสุดจะไม่แสดงตัวอย่างแสดงผลแบบเธรดนั้น แต่ยังสามารถใช้โพสต์ตัวอย่างร่างและการแก้ไขของ Slack ได้
การย้ายคีย์เดิม:
- Telegram: ค่าเดิม
streamModeและค่าstreamingแบบสเกลาร์/บูลีนจะถูกตรวจพบและย้ายโดยเส้นทางความเข้ากันได้ของ doctor/config ไปยังstreaming.mode - Discord:
streamMode+streamingแบบบูลีนยังคงเป็นนามแฝงรันไทม์สำหรับ enumstreaming; รันopenclaw doctor --fixเพื่อเขียนคอนฟิกที่บันทึกไว้ใหม่ - Slack:
streamModeยังคงเป็นนามแฝงรันไทม์สำหรับstreaming.mode;streamingแบบบูลีนยังคงเป็นนามแฝงรันไทม์สำหรับstreaming.modeรวมถึงstreaming.nativeTransport;nativeStreamingเดิมยังคงเป็นนามแฝงรันไทม์สำหรับstreaming.nativeTransportรันopenclaw doctor --fixเพื่อเขียนคอนฟิกที่บันทึกไว้ใหม่
พฤติกรรมรันไทม์
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 อย่างชัดเจน
- เพย์โหลดสื่อสุดท้าย ข้อผิดพลาด และการตอบกลับแบบชัดเจนจะยกเลิกตัวอย่างแสดงผลที่ค้างอยู่โดยไม่ล้างเป็นร่างใหม่ จากนั้นใช้การส่งปกติ
Slack:
partialสามารถใช้ Slack native streaming (chat.startStream/append/stop) เมื่อพร้อมใช้งานblockใช้ตัวอย่างร่างแบบต่อท้ายprogressใช้ข้อความตัวอย่างแสดงผลสถานะ แล้วตามด้วยคำตอบสุดท้าย- DM ระดับบนสุดที่ไม่มีเธรดตอบกลับจะใช้โพสต์ตัวอย่างร่างและการแก้ไขแทน Slack native streaming
- Native และการสตรีมตัวอย่างร่างจะระงับการตอบกลับแบบบล็อกสำหรับรอบนั้น ดังนั้นคำตอบของ Slack จะถูกสตรีมผ่านเส้นทางการส่งเพียงเส้นทางเดียว
- เพย์โหลดสื่อ/ข้อผิดพลาดสุดท้ายและผลสุดท้ายของความคืบหน้าจะไม่สร้างข้อความร่างชั่วคราว; เฉพาะผลสุดท้ายแบบข้อความ/บล็อกที่แก้ไขตัวอย่างแสดงผลได้เท่านั้นที่จะล้างข้อความร่างที่ค้างอยู่
Mattermost:
- สตรีมความคิด กิจกรรมเครื่องมือ และข้อความตอบกลับบางส่วนลงในโพสต์ตัวอย่างร่างเดียวที่สรุปผลในตำแหน่งเดิมเมื่อคำตอบสุดท้ายพร้อมส่งอย่างปลอดภัย
- ถอยกลับไปส่งโพสต์สุดท้ายใหม่หากโพสต์ตัวอย่างแสดงผลถูกลบหรือไม่พร้อมใช้งานในเวลาสรุปผล
- เพย์โหลดสื่อ/ข้อผิดพลาดสุดท้ายจะยกเลิกการอัปเดตตัวอย่างแสดงผลที่ค้างอยู่ก่อนการส่งปกติ แทนการล้างเป็นโพสต์ตัวอย่างแสดงผลชั่วคราว
Matrix:
- ตัวอย่างร่างจะสรุปผลในตำแหน่งเดิมเมื่อข้อความสุดท้ายสามารถใช้เหตุการณ์ตัวอย่างแสดงผลซ้ำได้
- ผลสุดท้ายที่เป็นสื่อเท่านั้น ข้อผิดพลาด และเป้าหมายตอบกลับไม่ตรงกันจะยกเลิกการอัปเดตตัวอย่างแสดงผลที่ค้างอยู่ก่อนการส่งปกติ; ตัวอย่างแสดงผลเก่าที่มองเห็นแล้วจะถูกปกปิด
การอัปเดตตัวอย่างแสดงผลความคืบหน้าของเครื่องมือ
การสตรีมตัวอย่างแสดงผลยังสามารถรวมการอัปเดต ความคืบหน้าของเครื่องมือ ได้ด้วย - บรรทัดสถานะสั้น ๆ เช่น "กำลังค้นหาเว็บ", "กำลังอ่านไฟล์" หรือ "กำลังเรียกเครื่องมือ" - ซึ่งปรากฏในข้อความตัวอย่างแสดงผลเดียวกันขณะที่เครื่องมือกำลังทำงาน ก่อนคำตอบสุดท้าย ในโหมด Codex app-server ข้อความ preamble/commentary ของ Codex ใช้เส้นทางตัวอย่างแสดงผลเดียวกันนี้ ดังนั้นบันทึกความคืบหน้าสั้น ๆ อย่าง "ฉันกำลังตรวจสอบ..." จึงสามารถสตรีมเข้าไปในร่างที่แก้ไขได้โดยไม่กลายเป็นส่วนหนึ่งของคำตอบสุดท้าย วิธีนี้ทำให้รอบเครื่องมือหลายขั้นตอนยังมีความเคลื่อนไหวทางสายตา แทนที่จะเงียบระหว่างตัวอย่างแสดงผลความคิดแรกกับคำตอบสุดท้าย
เครื่องมือที่ทำงานนานอาจส่งความคืบหน้าแบบมีชนิดก่อนส่งผลกลับ ตัวอย่างเช่น
web_fetch ตั้งตัวจับเวลาห้าวินาทีเมื่อเริ่มทำงาน: หากการดึงข้อมูลยัง
ค้างอยู่ ตัวอย่างแสดงผลสามารถแสดง Fetching page content...; หากการดึงข้อมูลเสร็จ
หรือถูกยกเลิกก่อนหน้านั้น จะไม่มีการส่งบรรทัดความคืบหน้า ผลลัพธ์เครื่องมือสุดท้าย
ในภายหลังยังคงถูกส่งไปยังโมเดลตามปกติ
พื้นผิวที่รองรับ:
- 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
เลนความคืบหน้าของความเห็นประกอบ
นอกเหนือจากความคืบหน้าของเครื่องมือ ตัวเรนเดอร์ความคืบหน้าแบบกะทัดรัดสามารถแสดงอีกหนึ่งเลนในแบบร่างได้:
streaming.progress.commentary— เรนเดอร์ ความเห็นประกอบ ก่อนใช้เครื่องมือของโมเดล (💬) — คำบรรยายสั้น ๆ แบบ "ฉันจะตรวจสอบ… จากนั้น…" — แทรกสลับกับบรรทัดเครื่องมือในแบบร่างความคืบหน้า
{ "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" } } } }}ที่เกี่ยวข้อง
- การปรับโครงสร้างวงจรชีวิตข้อความ - เป้าหมายการออกแบบตัวอย่าง การแก้ไข การสตรีม และการสรุปผลร่วมกัน
- แบบร่างความคืบหน้า - ข้อความงานที่กำลังดำเนินอยู่ซึ่งมองเห็นได้และอัปเดตระหว่างรอบยาว
- ข้อความ - วงจรชีวิตและการส่งข้อความ
- ลองใหม่ - พฤติกรรมการลองใหม่เมื่อการส่งล้มเหลว
- ช่องทาง - การรองรับการสตรีมรายช่องทาง