Messages and delivery

ร่างความคืบหน้า

ฉบับร่างความคืบหน้าทำให้เทิร์นของเอเจนต์ที่ใช้เวลานานรู้สึกมีความเคลื่อนไหวในแชตโดยไม่เปลี่ยน การสนทนาให้กลายเป็นกองข้อความสถานะชั่วคราว

เมื่อเปิดใช้ฉบับร่างความคืบหน้า OpenClaw จะสร้างข้อความงานที่กำลังดำเนินอยู่ซึ่งมองเห็นได้ เพียงหนึ่งข้อความหลังจากเทิร์นนั้นพิสูจน์แล้วว่ากำลังทำงานจริง อัปเดตข้อความนั้นขณะที่ เอเจนต์อ่าน วางแผน เรียกใช้เครื่องมือ หรือรอการอนุมัติ แล้วเปลี่ยนฉบับร่างนั้น ให้เป็นคำตอบสุดท้ายเมื่อช่องทางทำได้อย่างปลอดภัย

text
Shelling...📖 from docs/concepts/progress-drafts.md🔎 Web Search: for "discord edit message"🛠️ Bash: run tests

ใช้ฉบับร่างความคืบหน้าเมื่อคุณต้องการข้อความสถานะที่เรียบร้อยเพียงข้อความเดียวระหว่างงานที่ใช้เครื่องมือจำนวนมาก และคำตอบสุดท้ายเมื่อเทิร์นเสร็จสิ้น

เริ่มต้นอย่างรวดเร็ว

เปิดใช้ฉบับร่างความคืบหน้าแยกตามช่องทางด้วย streaming.mode: "progress":

json5
{  channels: {    discord: {      streaming: {        mode: "progress",      },    },  },}

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

สิ่งที่ผู้ใช้เห็น

ฉบับร่างความคืบหน้ามีสองส่วน:

ส่วน วัตถุประสงค์
ป้ายกำกับ บรรทัดเริ่มต้น/สถานะสั้นๆ เช่น Thinking... หรือ Shelling...
บรรทัดความคืบหน้า อัปเดตการทำงานแบบกะทัดรัดโดยใช้ไอคอนเครื่องมือและตัวจัดรูปแบบรายละเอียดเดียวกับเอาต์พุตแบบละเอียด

ป้ายกำกับจะปรากฏหลังจากเอเจนต์เริ่มทำงานที่มีความหมาย และยังคงยุ่งอยู่ เป็นเวลาห้าวินาทีหรือปล่อยเหตุการณ์งานครั้งที่สอง ป้ายกำกับเป็นส่วนหนึ่งของรายการบรรทัด ความคืบหน้าแบบเลื่อนต่อเนื่อง ดังนั้นสถานะเริ่มต้นจะเลื่อนหายไปเมื่อมีงานจริงที่ชัดเจนมากพอ คำตอบแบบข้อความล้วนเท่านั้นจะไม่แสดงฉบับร่างความคืบหน้า บรรทัดความคืบหน้าจะถูกเพิ่ม เฉพาะเมื่อเอเจนต์ปล่อยการอัปเดตงานที่เป็นประโยชน์ เช่น 🛠️ Bash: run tests, 🔎 Web Search: for "discord edit message" หรือ ✍️ Write: to /tmp/file โดยค่าเริ่มต้นจะใช้โหมดอธิบายแบบกะทัดรัดเดียวกับ /verbose; ตั้งค่า agents.defaults.toolProgressDetail: "raw" เมื่อกำลังดีบักและคุณต้องการให้แนบ คำสั่ง/รายละเอียดดิบด้วย คำตอบสุดท้ายจะแทนที่ฉบับร่างเมื่อเป็นไปได้ มิฉะนั้น OpenClaw จะส่งคำตอบสุดท้ายตามปกติ และล้างหรือหยุดอัปเดต ฉบับร่างตามการขนส่งของช่องทาง

เลือกโหมด

channels.<channel>.streaming.mode ควบคุมพฤติกรรมระหว่างดำเนินงานที่มองเห็นได้:

โหมด เหมาะที่สุดสำหรับ สิ่งที่ปรากฏในแชต
off ช่องทางที่ต้องการความเงียบ เฉพาะคำตอบสุดท้าย
partial การดูข้อความคำตอบค่อยๆ ปรากฏ ฉบับร่างหนึ่งข้อความที่แก้ไขด้วยข้อความคำตอบล่าสุด
block ชิ้นส่วนพรีวิวคำตอบที่ใหญ่ขึ้น พรีวิวหนึ่งรายการที่อัปเดตหรือแนบต่อเป็นชิ้นใหญ่ขึ้น
progress เทิร์นที่ใช้เครื่องมือจำนวนมากหรือใช้เวลานาน ฉบับร่างสถานะหนึ่งข้อความ แล้วตามด้วยคำตอบสุดท้าย

เลือก progress เมื่อผู้ใช้ใส่ใจกับ “สิ่งที่กำลังเกิดขึ้น” มากกว่าการดู ข้อความคำตอบสตรีมทีละโทเค็น

เลือก partial เมื่อคำตอบเองคือสัญญาณความคืบหน้า

เลือก block เมื่อคุณต้องการอัปเดตพรีวิวฉบับร่างเป็นชิ้นข้อความที่ใหญ่ขึ้น บน Discord และ Telegram, streaming.mode: "block" ยังคงเป็นการสตรีมพรีวิว ไม่ใช่ การส่งแบบบล็อกปกติ ใช้ streaming.block.enabled หรือ blockStreaming แบบเดิมเมื่อคุณต้องการคำตอบแบบบล็อกปกติ

กำหนดค่าป้ายกำกับ

ป้ายกำกับความคืบหน้าอยู่ภายใต้ channels.<channel>.streaming.progress

ป้ายกำกับเริ่มต้นคือ auto ซึ่งจะเลือกจากพูลป้ายกำกับแบบ หนึ่งคำพร้อมจุดไข่ปลาที่มีใน OpenClaw:

text
Thinking...Shelling...Scuttling...Clawing...Pinching...Molting...Bubbling...Tiding...Reefing...Cracking...Sifting...Brining...Nautiling...Krilling...Barnacling...Lobstering...Tidepooling...Pearling...Snapping...Surfacing...

ใช้ป้ายกำกับคงที่:

json5
{  channels: {    discord: {      streaming: {        mode: "progress",        progress: {          label: "Investigating",        },      },    },  },}

ใช้พูลป้ายกำกับอัตโนมัติของคุณเอง:

json5
{  channels: {    discord: {      streaming: {        mode: "progress",        progress: {          label: "auto",          labels: ["Checking", "Reading", "Testing", "Finishing"],        },      },    },  },}

ซ่อนป้ายกำกับและแสดงเฉพาะบรรทัดความคืบหน้า:

json5
{  channels: {    discord: {      streaming: {        mode: "progress",        progress: {          label: false,        },      },    },  },}

ควบคุมบรรทัดความคืบหน้า

บรรทัดความคืบหน้าถูกเปิดใช้โดยค่าเริ่มต้นในโหมดความคืบหน้า บรรทัดเหล่านี้มาจากเหตุการณ์การทำงานจริง: การเริ่มใช้เครื่องมือ การอัปเดตรายการ แผนงาน การอนุมัติ เอาต์พุตคำสั่ง สรุปแพตช์ และกิจกรรมของเอเจนต์ในลักษณะคล้ายกัน

OpenClaw ใช้ตัวจัดรูปแบบเดียวกันสำหรับฉบับร่างความคืบหน้าและ /verbose:

json5
{  agents: {    defaults: {      toolProgressDetail: "explain", // explain | raw    },  },}

"explain" เป็นค่าเริ่มต้นและช่วยให้ฉบับร่างคงที่ด้วยป้ายกำกับที่กระชับ เช่น 🛠️ check JS syntax for /tmp/app.js "raw" จะแนบ คำสั่ง/รายละเอียดพื้นฐานเมื่อมีอยู่ ซึ่งมีประโยชน์ระหว่างดีบักแต่ทำให้แชตมีเสียงรบกวนมากกว่า

ตัวอย่างเช่น คำสั่งเดียวกันจะแสดงแตกต่างกันตามโหมดรายละเอียด:

โหมด บรรทัดความคืบหน้า
explain 🛠️ check JS syntax for /tmp/app.js
raw 🛠️ check JS syntax for /tmp/app.js, node --check /tmp/app.js

จำกัดจำนวนบรรทัดที่ยังคงมองเห็นได้:

json5
{  channels: {    discord: {      streaming: {        mode: "progress",        progress: {          maxLines: 4,        },      },    },  },}

บรรทัดความคืบหน้าจะถูกบีบอัดโดยอัตโนมัติเพื่อลดการจัดวางฟองแชตใหม่ขณะที่แก้ไขฉบับร่าง

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

Slack สามารถเรนเดอร์บรรทัดความคืบหน้าเป็นฟิลด์ Block Kit แบบมีโครงสร้างแทน เนื้อความข้อความเดี่ยวได้:

json5
{  channels: {    slack: {      streaming: {        mode: "progress",        progress: {          render: "rich",        },      },    },  },}

การเรนเดอร์แบบ rich ยังคงมี fallback แบบข้อความล้วนเดียวกัน เพื่อให้ช่องทางและไคลเอนต์ที่ ไม่รองรับรูปแบบที่สมบูรณ์กว่า ยังคงแสดงข้อความความคืบหน้าแบบกะทัดรัดได้

คงฉบับร่างความคืบหน้าเดียวไว้ แต่ซ่อนบรรทัดเครื่องมือและงาน:

json5
{  channels: {    discord: {      streaming: {        mode: "progress",        progress: {          toolProgress: false,        },      },    },  },}

เมื่อใช้ toolProgress: false, OpenClaw ยังคงระงับข้อความ ความคืบหน้าเครื่องมือแบบเดี่ยวเดิมสำหรับเทิร์นนั้น ช่องทางจะยังคงเงียบทางสายตาจนถึง คำตอบสุดท้าย ยกเว้นป้ายกำกับหากมีการกำหนดค่าไว้

พฤติกรรมของช่องทาง

แต่ละช่องทางใช้การขนส่งที่สะอาดที่สุดที่รองรับ:

ช่องทาง การขนส่งความคืบหน้า หมายเหตุ
Discord ส่งข้อความหนึ่งข้อความ แล้วแก้ไขข้อความนั้น ข้อความสุดท้ายถูกแก้ไขในตำแหน่งเดิมเมื่อพอดีกับข้อความพรีวิวที่ปลอดภัยหนึ่งข้อความ
Matrix ส่งเหตุการณ์หนึ่งรายการ แล้วแก้ไขเหตุการณ์นั้น การกำหนดค่าสตรีมมิงระดับบัญชีควบคุมฉบับร่างระดับบัญชี
Microsoft Teams สตรีม Teams แบบเนทีฟในแชตส่วนตัว streaming.mode: "block" แมปไปยังการส่งแบบบล็อกของ Teams
Slack สตรีมเนทีฟหรือโพสต์ฉบับร่างที่แก้ไขได้ ความพร้อมใช้งานของเธรดมีผลต่อว่าจะใช้สตรีมมิงเนทีฟได้หรือไม่
Telegram ส่งข้อความหนึ่งข้อความ แล้วแก้ไขข้อความนั้น ฉบับร่างเก่าที่มองเห็นได้อาจถูกแทนที่ เพื่อให้เวลาประทับสุดท้ายยังมีประโยชน์
Mattermost โพสต์ฉบับร่างที่แก้ไขได้ กิจกรรมของเครื่องมือถูกพับรวมเข้าในโพสต์รูปแบบฉบับร่างเดียวกัน

ช่องทางที่ไม่มีการรองรับการแก้ไขอย่างปลอดภัยมัก fallback ไปใช้ตัวบอกสถานะกำลังพิมพ์หรือ การส่งเฉพาะคำตอบสุดท้าย

การจบงาน

เมื่อคำตอบสุดท้ายพร้อมแล้ว OpenClaw จะพยายามรักษาแชตให้สะอาด:

  • หากฉบับร่างสามารถกลายเป็นคำตอบสุดท้ายได้อย่างปลอดภัย OpenClaw จะแก้ไขในตำแหน่งเดิม
  • หากช่องทางใช้สตรีมมิงความคืบหน้าแบบเนทีฟ OpenClaw จะจบสตรีมนั้น เมื่อการขนส่งเนทีฟยอมรับข้อความสุดท้าย
  • หากคำตอบสุดท้ายมีสื่อ พรอมป์อนุมัติ เป้าหมายการตอบกลับที่ระบุชัดเจน มีชิ้นส่วนมากเกินไป หรือการแก้ไข/ส่งล้มเหลว OpenClaw จะส่งคำตอบสุดท้ายผ่าน เส้นทางการส่งของช่องทางตามปกติ

เส้นทาง fallback เป็นสิ่งที่ตั้งใจไว้ การส่งคำตอบสุดท้ายใหม่ดีกว่า การทำข้อความหาย ส่งคำตอบผิดเธรด หรือเขียนทับฉบับร่างด้วยเพย์โหลดที่ช่องทาง ไม่สามารถแสดงได้อย่างปลอดภัย

การแก้ไขปัญหา

ฉันเห็นเฉพาะคำตอบสุดท้ายเท่านั้น

ตรวจสอบว่า channels.<channel>.streaming.mode ถูกตั้งเป็น progress สำหรับ บัญชีหรือช่องทางที่จัดการข้อความนั้น บางเส้นทางของกลุ่มหรือการตอบกลับแบบอ้างอิงอาจ ปิดใช้พรีวิวฉบับร่างสำหรับเทิร์นหนึ่ง เมื่อช่องทางไม่สามารถแก้ไขข้อความที่ถูกต้องได้อย่างปลอดภัย

ฉันเห็นป้ายกำกับแต่ไม่มีบรรทัดเครื่องมือ

ตรวจสอบ streaming.progress.toolProgress หากเป็น false, OpenClaw จะคง พฤติกรรมฉบับร่างเดี่ยวไว้ แต่ซ่อนบรรทัดความคืบหน้าของเครื่องมือและงาน

ฉันเห็นข้อความสุดท้ายใหม่แทนฉบับร่างที่ถูกแก้ไข

นั่นคือ fallback เพื่อความปลอดภัย อาจเกิดขึ้นกับคำตอบที่มีสื่อ คำตอบยาว เป้าหมายการตอบกลับที่ระบุชัดเจน ฉบับร่าง Telegram เก่า เป้าหมายเธรด Slack ที่ขาดหาย ข้อความพรีวิวที่ถูกลบ หรือการจบสตรีมเนทีฟที่ล้มเหลว

ฉันยังเห็นข้อความความคืบหน้าแบบเดี่ยว

โหมดความคืบหน้าจะระงับข้อความความคืบหน้าเครื่องมือแบบเดี่ยวตามค่าเริ่มต้นเมื่อมีฉบับร่าง ทำงานอยู่ หากข้อความเดี่ยวยังคงปรากฏ ให้ตรวจสอบว่าเทิร์นนั้นกำลัง ใช้โหมดความคืบหน้าจริง และไม่ใช่ streaming.mode: "off" หรือเส้นทางช่องทางที่ ไม่สามารถสร้างฉบับร่างสำหรับข้อความนั้นได้

Teams มีพฤติกรรมต่างจาก Discord หรือ Telegram

Microsoft Teams ใช้สตรีมเนทีฟในแชตส่วนตัว แทนการขนส่งพรีวิวแบบ ส่งแล้วแก้ไขทั่วไป Teams ยังถือว่า streaming.mode: "block" เป็น การส่งแบบบล็อกของ Teams เพราะไม่มีโหมดบล็อกแบบพรีวิวฉบับร่างเดียวกับที่ Discord และ Telegram ใช้

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

Was this useful?