---
read_when:
    - การกำหนดค่าการอัปเดตความคืบหน้าที่มองเห็นได้สำหรับรอบการแชทที่ใช้เวลานาน
    - การเลือกระหว่างโหมดการสตรีมแบบบางส่วน แบบบล็อก และแบบความคืบหน้า
    - อธิบายวิธีที่ OpenClaw อัปเดตข้อความในช่องทางหนึ่งขณะที่งานกำลังดำเนินอยู่
    - การแก้ไขปัญหาร่างความคืบหน้า ข้อความความคืบหน้าแบบแยกเดี่ยว หรือกลไกสำรองสำหรับการสรุปผล
summary: 'ข้อความร่างความคืบหน้า: ข้อความแสดงงานที่กำลังดำเนินการที่มองเห็นได้เพียงข้อความเดียว ซึ่งอัปเดตระหว่างที่เอเจนต์ทำงาน'
title: ร่างความคืบหน้า
x-i18n:
    generated_at: "2026-05-10T19:35:43Z"
    model: gpt-5.5
    provider: openai
    source_hash: 3d84027a412a2c62ea9a5698d015c7aeb8a7f27d9db79112bb2c1c10f97ebd88
    source_path: concepts/progress-drafts.md
    workflow: 16
---

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

เมื่อเปิดใช้ฉบับร่างความคืบหน้า 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 ใช้

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

- [การสตรีมและการแบ่งชิ้น](/th/concepts/streaming)
- [ข้อความ](/th/concepts/messages)
- [การกำหนดค่าช่องทาง](/th/gateway/config-channels)
- [Discord](/th/channels/discord)
- [Matrix](/th/channels/matrix)
- [Microsoft Teams](/th/channels/msteams)
- [Slack](/th/channels/slack)
- [Telegram](/th/channels/telegram)
