Concept internals
ตัวบ่งชี้การพิมพ์
ตัวบ่งชี้การพิมพ์จะถูกส่งไปยังช่องทางแชทระหว่างที่การรันยังทำงานอยู่ ใช้
agents.defaults.typingMode เพื่อควบคุมว่าเริ่มแสดงการพิมพ์ เมื่อใด และใช้ typingIntervalSeconds
เพื่อควบคุมว่าจะรีเฟรช บ่อยเพียงใด
ค่าเริ่มต้น
เมื่อไม่ได้ตั้งค่า agents.defaults.typingMode OpenClaw จะคงพฤติกรรมแบบเดิมไว้:
- แชทโดยตรง: การพิมพ์จะเริ่มทันทีเมื่อ model loop เริ่มทำงาน
- แชทกลุ่มที่มีการกล่าวถึง: การพิมพ์จะเริ่มทันที
- แชทกลุ่มที่ไม่มีการกล่าวถึง: การพิมพ์จะเริ่มเฉพาะเมื่อข้อความเริ่มสตรีม
- การรัน 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
การกำหนดค่า
ตั้งค่าเริ่มต้นระดับ agent:
{ agents: { defaults: { typingMode: "thinking", typingIntervalSeconds: 6, }, },}Override โหมดหรือจังหวะต่อ session:
{ session: { typingMode: "message", typingIntervalSeconds: 4, },}หมายเหตุ
- โหมด
messageจะไม่แสดงการพิมพ์สำหรับการตอบกลับที่มีเฉพาะแบบเงียบ เมื่อ payload ทั้งหมด เป็นโทเค็นเงียบตรงตัว (เช่นNO_REPLY/no_reply, จับคู่โดยไม่สนใจตัวพิมพ์ใหญ่เล็ก) thinkingจะทำงานเฉพาะเมื่อการรันสตรีม reasoning (reasoningLevel: "stream") หากโมเดลไม่ส่ง reasoning deltas การพิมพ์จะไม่เริ่ม- การพิมพ์ของ Heartbeat เป็นสัญญาณ liveness สำหรับเป้าหมายการส่งที่ resolve แล้ว โดยจะ
เริ่มตั้งแต่การรัน Heartbeat เริ่มขึ้น แทนที่จะตามเวลา stream ของ
messageหรือthinkingตั้งค่าtypingMode: "never"เพื่อปิดใช้งาน - Heartbeats จะไม่แสดงการพิมพ์เมื่อ
target: "none", เมื่อไม่สามารถ resolve เป้าหมายได้, เมื่อปิดใช้งานการส่งผ่านแชทสำหรับ Heartbeat, หรือเมื่อช่องทางไม่รองรับการพิมพ์ typingIntervalSecondsควบคุม จังหวะการรีเฟรช ไม่ใช่เวลาเริ่มต้น ค่าเริ่มต้นคือ 6 วินาที