Messages and delivery

การสตรีมและการแบ่งเป็นชิ้น

OpenClaw มีเลเยอร์การสตรีมแยกกันสองเลเยอร์:

  • การสตรีมแบบบล็อก (ช่องทาง): ส่ง บล็อก ที่เสร็จสมบูรณ์ออกไปขณะที่ผู้ช่วยเขียนอยู่ ข้อความเหล่านี้เป็นข้อความช่องทางปกติ (ไม่ใช่เดลตาของโทเค็น)
  • การสตรีมตัวอย่างแสดงผล (Telegram/Discord/Slack): อัปเดต ข้อความตัวอย่างแสดงผล ชั่วคราวระหว่างการสร้างคำตอบ

ปัจจุบันยัง ไม่มีการสตรีมเดลตาของโทเค็นจริง ไปยังข้อความช่องทาง การสตรีมตัวอย่างแสดงผลทำงานบนฐานข้อความ (ส่ง + แก้ไข/ต่อท้าย)

การสตรีมแบบบล็อก (ข้อความช่องทาง)

การสตรีมแบบบล็อกส่งเอาต์พุตของผู้ช่วยเป็นก้อนหยาบ ๆ เมื่อพร้อมใช้งาน

Code
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_end
  • message_end: รอจนข้อความผู้ช่วยเสร็จ แล้วจึงล้างเอาต์พุตที่บัฟเฟอร์ไว้

message_end ยังคงใช้ตัวแบ่งก้อนหากข้อความในบัฟเฟอร์เกิน maxChars ดังนั้นจึงสามารถส่งออกหลายก้อนในตอนท้ายได้

การส่งสื่อพร้อมการสตรีมแบบบล็อก

สื่อที่สตรีมต้องใช้ฟิลด์เพย์โหลดแบบมีโครงสร้าง เช่น mediaUrl หรือ mediaUrls; ข้อความที่สตรีมจะไม่ถูกแยกวิเคราะห์เป็นคำสั่งแนบไฟล์ เมื่อการสตรีมแบบบล็อก ส่งสื่อก่อนกำหนด OpenClaw จะจดจำการส่งนั้นไว้สำหรับรอบดังกล่าว หาก เพย์โหลดสุดท้ายของผู้ช่วยทำซ้ำ URL สื่อเดิม การส่งสุดท้ายจะ ตัดสื่อที่ซ้ำออกแทนการส่งไฟล์แนบอีกครั้ง

เพย์โหลดสุดท้ายที่ซ้ำกันทุกประการจะถูกระงับ หากเพย์โหลดสุดท้ายเพิ่ม ข้อความอื่นรอบสื่อที่สตรีมไปแล้ว OpenClaw จะยังส่ง ข้อความใหม่โดยคงสื่อให้ถูกส่งเพียงครั้งเดียว วิธีนี้ป้องกันการซ้ำของโน้ตเสียง หรือไฟล์บนช่องทางอย่าง Telegram

อัลกอริทึมการแบ่งก้อน (ขอบเขตต่ำ/สูง)

การแบ่งก้อนแบบบล็อกถูกใช้งานโดย EmbeddedBlockChunker:

  • ขอบเขตต่ำ: อย่าส่งออกจนกว่าบัฟเฟอร์ >= minChars (เว้นแต่ถูกบังคับ)
  • ขอบเขตสูง: ให้ความสำคัญกับการแยกก่อน maxChars; หากถูกบังคับ ให้แยกที่ maxChars
  • ค่ากำหนดการตัด: paragraphnewlinesentencewhitespace → การตัดแบบแข็ง
  • รั้วโค้ด: ไม่แยกภายในรั้วโค้ด; เมื่อถูกบังคับที่ 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 แบบบูลีนยังคงเป็นนามแฝงรันไทม์สำหรับ enum streaming; รัน 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 — เรนเดอร์ ความเห็นประกอบ ก่อนใช้เครื่องมือของโมเดล (💬) — คำบรรยายสั้น ๆ แบบ "ฉันจะตรวจสอบ… จากนั้น…" — แทรกสลับกับบรรทัดเครื่องมือในแบบร่างความคืบหน้า
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"        }      }    }  }}

ที่เกี่ยวข้อง

Was this useful?
On this page

On this page