---
read_when:
    - การเปลี่ยนพฤติกรรมหรือค่าเริ่มต้นของตัวบ่งชี้การกำลังพิมพ์
summary: เมื่อใดที่ OpenClaw จะแสดงตัวบ่งชี้การกำลังพิมพ์ และวิธีปรับแต่ง դրանք
title: ตัวบ่งชี้การกำลังพิมพ์
x-i18n:
    generated_at: "2026-04-24T09:08:13Z"
    model: gpt-5.4
    provider: openai
    source_hash: 80f5c3bb79cf87f79db5336978b877f4a01025f59c9e822ab66198f00907123f
    source_path: concepts/typing-indicators.md
    workflow: 15
---

ระบบจะส่งตัวบ่งชี้การกำลังพิมพ์ไปยังช่องทางแชตขณะที่การรันกำลังทำงาน ใช้
`agents.defaults.typingMode` เพื่อควบคุมว่า **จะเริ่มพิมพ์เมื่อใด** และใช้ `typingIntervalSeconds`
เพื่อควบคุมว่า **จะรีเฟรชบ่อยแค่ไหน**

## ค่าปริยาย

เมื่อ **ไม่ได้ตั้งค่า** `agents.defaults.typingMode` OpenClaw จะคงพฤติกรรมเดิมไว้:

- **แชตส่วนตัว**: เริ่มแสดงสถานะกำลังพิมพ์ทันทีเมื่อ model loop เริ่มทำงาน
- **แชตกลุ่มที่มีการ mention**: เริ่มแสดงสถานะกำลังพิมพ์ทันที
- **แชตกลุ่มที่ไม่มีการ mention**: เริ่มแสดงสถานะกำลังพิมพ์เมื่อข้อความเริ่มสตรีมเท่านั้น
- **การรัน Heartbeat**: เริ่มแสดงสถานะกำลังพิมพ์เมื่อการรัน Heartbeat เริ่มทำงาน หาก
  เป้าหมาย Heartbeat ที่ resolve แล้วเป็นแชตที่รองรับการแสดงสถานะกำลังพิมพ์และไม่ได้ปิดการใช้งานไว้

## โหมด

ตั้งค่า `agents.defaults.typingMode` เป็นค่าใดค่าหนึ่งต่อไปนี้:

- `never` — ไม่มีตัวบ่งชี้การกำลังพิมพ์เลย
- `instant` — เริ่มแสดงสถานะกำลังพิมพ์ **ทันทีที่ model loop เริ่มทำงาน** แม้ว่าภายหลังการรัน
  จะคืนมาเพียงโทเค็นคำตอบแบบเงียบเท่านั้น
- `thinking` — เริ่มแสดงสถานะกำลังพิมพ์เมื่อมี **reasoning delta แรก** (ต้องใช้
  `reasoningLevel: "stream"` สำหรับการรันนั้น)
- `message` — เริ่มแสดงสถานะกำลังพิมพ์เมื่อมี **text delta แรกที่ไม่ใช่แบบเงียบ** (ไม่รวม
  โทเค็นเงียบ `NO_REPLY`)

ลำดับ “ยิงเร็วแค่ไหน”:
`never` → `message` → `thinking` → `instant`

## การกำหนดค่า

```json5
{
  agent: {
    typingMode: "thinking",
    typingIntervalSeconds: 6,
  },
}
```

คุณสามารถ override โหมดหรือจังหวะการรีเฟรชเป็นรายเซสชันได้:

```json5
{
  session: {
    typingMode: "message",
    typingIntervalSeconds: 4,
  },
}
```

## หมายเหตุ

- โหมด `message` จะไม่แสดงสถานะกำลังพิมพ์สำหรับคำตอบที่เป็นแบบเงียบล้วน เมื่อ
  payload ทั้งหมดเป็นโทเค็นเงียบแบบตรงตัว (เช่น `NO_REPLY` / `no_reply`
  โดยจับคู่แบบไม่สนตัวพิมพ์ใหญ่เล็ก)
- `thinking` จะทำงานก็ต่อเมื่อการรันสตรีม reasoning (`reasoningLevel: "stream"`)
  หากโมเดลไม่ปล่อย reasoning delta สถานะกำลังพิมพ์จะไม่เริ่ม
- การแสดงสถานะกำลังพิมพ์ของ Heartbeat เป็นสัญญาณ liveness สำหรับเป้าหมายการส่งที่ resolve แล้ว โดย
  จะเริ่มตั้งแต่เริ่มการรัน Heartbeat แทนที่จะอิงตามจังหวะสตรีมของ `message` หรือ `thinking`
  ตั้งค่า `typingMode: "never"` เพื่อปิดใช้งาน
- Heartbeat จะไม่แสดงสถานะกำลังพิมพ์เมื่อ `target: "none"` เมื่อไม่สามารถ
  resolve เป้าหมายได้ เมื่อปิดการส่งแชตสำหรับ Heartbeat หรือเมื่อ
  ช่องทางนั้นไม่รองรับการแสดงสถานะกำลังพิมพ์
- `typingIntervalSeconds` ควบคุม **จังหวะการรีเฟรช** ไม่ใช่เวลาเริ่มต้น
  ค่าปริยายคือ 6 วินาที

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

- [Presence](/th/concepts/presence)
- [Streaming and chunking](/th/concepts/streaming)
