---
read_when:
    - คุณต้องการคำแนะนำแบบทีละขั้นตอนอย่างละเอียดเกี่ยวกับลูปของเอเจนต์หรือเหตุการณ์ในวงจรชีวิต
    - คุณกำลังเปลี่ยนแปลงการจัดคิวเซสชัน การเขียนทรานสคริปต์ หรือลักษณะการทำงานของล็อกการเขียนเซสชัน
summary: วงจรชีวิตของลูปเอเจนต์ สตรีม และความหมายของการรอ
title: วงรอบเอเจนต์
x-i18n:
    generated_at: "2026-07-20T05:56:52Z"
    model: gpt-5.6
    postprocess_version: locale-links-v1
    prompt_version: 32
    provider: openai
    source_hash: 40633a772563988b38e3b1f9e7d7a69b7080bda51db28aef527c6878e7c85907
    source_path: concepts/agent-loop.md
    workflow: 16
---

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

## จุดเริ่มต้น

- Gateway RPC: `agent` และ `agent.wait`
- CLI: `openclaw agent`

## ลำดับการทำงาน

1. `agent` RPC ตรวจสอบพารามิเตอร์ แก้ไขเซสชัน (`sessionKey`/`sessionId`) คงข้อมูลเมตาของเซสชัน และส่งคืน `{ runId, acceptedAt }` ทันที
2. `agentCommand` ดำเนินรอบการทำงาน: แก้ไขค่าเริ่มต้นของโมเดล + การคิด/ความละเอียด/การติดตาม โหลดสแนปช็อต Skills เรียก `runEmbeddedAgent` และส่งเหตุการณ์สำรอง **สิ้นสุดวงจรชีวิต/ข้อผิดพลาด** หากลูปที่ฝังอยู่ยังไม่ได้ส่งเหตุการณ์ดังกล่าว
3. `runEmbeddedAgent`: จัดลำดับการทำงานแบบอนุกรมผ่านคิวต่อเซสชันและคิวส่วนกลาง แก้ไขโมเดล + โปรไฟล์การยืนยันตัวตน สร้างเซสชัน OpenClaw สมัครรับเหตุการณ์รันไทม์ สตรีมเดลตาของผู้ช่วย/เครื่องมือ บังคับใช้ระยะหมดเวลาของการทำงาน (ยกเลิกเมื่อหมดเวลา) และส่งคืนเพย์โหลดพร้อมข้อมูลเมตาการใช้งาน สำหรับรอบการทำงานของ Codex app-server ยังยกเลิกรอบที่ยอมรับแล้วด้วย หากหยุดสร้างความคืบหน้าของ app-server ก่อนเกิดเหตุการณ์สิ้นสุด
4. `subscribeEmbeddedAgentSession` เชื่อมเหตุการณ์รันไทม์เข้ากับสตรีม `agent`: เหตุการณ์เครื่องมือไปยัง `stream: "tool"` เดลตาของผู้ช่วยไปยัง `stream: "assistant"` และเหตุการณ์วงจรชีวิตไปยัง `stream: "lifecycle"` (`phase: "start" | "end" | "error"`)
5. `agent.wait` (`waitForAgentRun`) รอ **สิ้นสุดวงจรชีวิต/ข้อผิดพลาด** บน `runId` และส่งคืน `{ status: ok|error|timeout, startedAt, endedAt, error? }`

## การเข้าคิวและภาวะพร้อมกัน

การทำงานจะถูกจัดลำดับแบบอนุกรมตามคีย์เซสชัน (เลนเซสชัน) และอาจผ่านเลนส่วนกลางด้วย เพื่อป้องกันสภาวะแข่งขันของเครื่องมือ/เซสชัน ช่องทางการรับส่งข้อความจะเลือกโหมดคิว (steer/followup/collect/interrupt) ที่ป้อนเข้าสู่ระบบเลนนี้ โปรดดู [คิวคำสั่ง](/th/concepts/queue)

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

โดยค่าเริ่มต้น ล็อกการเขียนเซสชันไม่รองรับการกลับเข้าซ้ำ ตัวช่วยที่ตั้งใจซ้อนการขอล็อกเดียวกันโดยยังคงผู้เขียนเชิงตรรกะเพียงรายเดียวไว้ ต้องเลือกใช้ `allowReentrant: true`

## การเตรียมเซสชันและพื้นที่ทำงาน

- พื้นที่ทำงานได้รับการแก้ไขและสร้างขึ้น การทำงานในแซนด์บ็อกซ์อาจเปลี่ยนเส้นทางไปยังรากพื้นที่ทำงานของแซนด์บ็อกซ์
- โหลด Skills (หรือนำกลับมาใช้จากสแนปช็อต) และแทรกลงในสภาพแวดล้อมและพรอมต์
- แก้ไขไฟล์บูตสแตรป/บริบทและแทรกลงในพรอมต์ระบบ
- ขอล็อกการเขียนเซสชันและเตรียมเป้าหมายทรานสคริปต์ของเซสชันก่อนเริ่มสตรีม เส้นทางที่เขียนทรานสคริปต์ใหม่ ทำ Compaction หรือตัดทอนในภายหลัง ต้องขอล็อกเดียวกันก่อนแก้ไขแถวทรานสคริปต์ใน SQLite

## การประกอบพรอมต์

พรอมต์ระบบสร้างขึ้นจากพรอมต์พื้นฐานของ OpenClaw พรอมต์ Skills บริบทบูตสแตรป และค่าที่แทนที่สำหรับแต่ละการทำงาน โดยบังคับใช้ขีดจำกัดเฉพาะโมเดลและโทเค็นสำรองสำหรับ Compaction โปรดดู [พรอมต์ระบบ](/th/concepts/system-prompt) สำหรับสิ่งที่โมเดลมองเห็น

## ฮุก

OpenClaw มีระบบฮุกสองระบบ:

- **ฮุกภายใน** (ฮุก Gateway): สคริปต์ที่ขับเคลื่อนด้วยเหตุการณ์สำหรับคำสั่งและเหตุการณ์วงจรชีวิต
- **ฮุก Plugin**: จุดขยายภายในวงจรชีวิตของเอเจนต์/เครื่องมือและไปป์ไลน์ Gateway

### ฮุกภายใน (ฮุก Gateway)

- **`agent:bootstrap`**: ทำงานขณะสร้างไฟล์บูตสแตรปก่อนพรอมต์ระบบเสร็จสมบูรณ์ ใช้เพื่อเพิ่มหรือลบไฟล์บริบทบูตสแตรป
- **ฮุกคำสั่ง**: `/new`, `/reset`, `/stop` และเหตุการณ์คำสั่งอื่น ๆ (ดูเอกสารฮุก)

โปรดดู [ฮุก](/th/automation/hooks) สำหรับการตั้งค่าและตัวอย่าง

### ฮุก Plugin

ฮุกเหล่านี้ทำงานภายในลูปเอเจนต์หรือไปป์ไลน์ Gateway:

| ฮุก                                                    | ทำงาน                                                                                                                                                                                                                                                                                        |
| ------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `before_model_resolve`                                  | ก่อนเซสชัน (ไม่มี `messages`) เพื่อแทนที่ผู้ให้บริการ/โมเดลอย่างกำหนดแน่นอนก่อนการแก้ไข                                                                                                                                                                                                |
| `before_prompt_build`                                   | หลังโหลดเซสชัน (พร้อม `messages`) เพื่อแทรก `prependContext`, `systemPrompt`, `prependSystemContext` หรือ `appendSystemContext` ก่อนส่ง ใช้ `prependContext` สำหรับข้อความแบบไดนามิกต่อรอบ และใช้ฟิลด์บริบทระบบสำหรับคำแนะนำที่เสถียรซึ่งควรอยู่ในพื้นที่พรอมต์ระบบ |
| `before_agent_reply`                                    | หลังการดำเนินการแบบอินไลน์ ก่อนเรียก LLM ช่วยให้ Plugin รับช่วงรอบการทำงานและส่งคืนคำตอบสังเคราะห์หรือระงับคำตอบทั้งหมดได้                                                                                                                                                                |
| `agent_end`                                             | หลังเสร็จสิ้น พร้อมรายการข้อความสุดท้ายและข้อมูลเมตาการทำงาน                                                                                                                                                                                                                             |
| `before_compaction` / `after_compaction`                | สังเกตหรือใส่คำอธิบายประกอบวงจร Compaction                                                                                                                                                                                                                                                      |
| `before_tool_call` / `after_tool_call`                  | สกัดกั้นพารามิเตอร์/ผลลัพธ์ของเครื่องมือ                                                                                                                                                                                                                                                              |
| `before_install`                                        | หลังนโยบายการติดตั้งของผู้ปฏิบัติงานทำงาน บนวัสดุการติดตั้ง Skills/Plugin ที่จัดเตรียมไว้ เมื่อโหลดฮุก Plugin ในกระบวนการปัจจุบันแล้ว                                                                                                                                                           |
| `tool_result_persist`                                   | แปลงผลลัพธ์ของเครื่องมือแบบซิงโครนัสก่อนเขียนลงในทรานสคริปต์เซสชันที่ OpenClaw เป็นเจ้าของ                                                                                                                                                                                      |
| `message_received` / `message_sending` / `message_sent` | ฮุกข้อความขาเข้าและขาออก                                                                                                                                                                                                                                                         |
| `session_start` / `session_end`                         | ขอบเขตวงจรชีวิตของเซสชัน                                                                                                                                                                                                                                                               |
| `gateway_start` / `gateway_stop`                        | เหตุการณ์วงจรชีวิตของ Gateway                                                                                                                                                                                                                                                                   |

กฎการตัดสินใจของฮุกสำหรับตัวป้องกันขาออก/เครื่องมือ:

- `before_tool_call`: `{ block: true }` เป็นผลลัพธ์สิ้นสุดและหยุดตัวจัดการที่มีลำดับความสำคัญต่ำกว่า `{ block: false }` ไม่ดำเนินการใด ๆ และไม่ล้างการบล็อกก่อนหน้า
- `before_install`: มีความหมายด้านการสิ้นสุด/ไม่ดำเนินการเช่นเดียวกับด้านบน ใช้ `security.installPolicy` ไม่ใช่ `before_install` สำหรับการตัดสินใจอนุญาต/บล็อกการติดตั้งที่ผู้ปฏิบัติงานเป็นเจ้าของ ซึ่งต้องครอบคลุมเส้นทางการติดตั้งและอัปเดตผ่าน CLI
- `message_sending`: `{ cancel: true }` เป็นผลลัพธ์สิ้นสุดและหยุดตัวจัดการที่มีลำดับความสำคัญต่ำกว่า `{ cancel: false }` ไม่ดำเนินการใด ๆ และไม่ล้างการยกเลิกก่อนหน้า

โปรดดู [ฮุก Plugin](/th/plugins/hooks) สำหรับ API ของฮุกและรายละเอียดการลงทะเบียน

ฮาร์เนสสามารถปรับใช้ฮุกเหล่านี้ได้ ฮาร์เนส Codex app-server ใช้ฮุก Plugin ของ OpenClaw เป็นสัญญาความเข้ากันได้สำหรับพื้นผิวที่ทำสำเนาตามเอกสาร ส่วนฮุกเนทีฟของ Codex เป็นกลไก Codex ระดับต่ำที่แยกต่างหาก

## การสตรีม

- เดลตาของผู้ช่วยสตรีมจากรันไทม์เอเจนต์เป็นเหตุการณ์ `assistant`
- การสตรีมแบบบล็อกสามารถส่งคำตอบบางส่วนบน `text_end` หรือ `message_end`
- การสตรีมกระบวนการให้เหตุผลอาจเป็นสตรีมแยกต่างหากหรือเป็นคำตอบแบบบล็อก
- โปรดดู [การสตรีม](/th/concepts/streaming) สำหรับลักษณะการแบ่งส่วนและคำตอบแบบบล็อก

## การเรียกใช้เครื่องมือ

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

## การจัดรูปแบบคำตอบ

เพย์โหลดสุดท้ายประกอบขึ้นจากข้อความของผู้ช่วย (รวมกระบวนการให้เหตุผลที่เลือกเปิดใช้ได้) สรุปเครื่องมือแบบอินไลน์ (เมื่อเปิดโหมดละเอียดและได้รับอนุญาต) และข้อความข้อผิดพลาดของผู้ช่วยเมื่อโมเดลเกิดข้อผิดพลาด

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

## Compaction และการลองใหม่

Compaction อัตโนมัติจะส่งเหตุการณ์สตรีม `compaction` และสามารถกระตุ้นการลองใหม่ เมื่อมีการลองใหม่ บัฟเฟอร์ในหน่วยความจำและสรุปเครื่องมือจะถูกรีเซ็ตเพื่อหลีกเลี่ยงผลลัพธ์ซ้ำ โปรดดู [Compaction](/th/concepts/compaction)

## สตรีมเหตุการณ์

- `lifecycle`: ส่งโดย `subscribeEmbeddedAgentSession` (และส่งเป็นเหตุการณ์สำรองโดย `agentCommand`)
- `assistant`: เดลตาที่สตรีมจากรันไทม์เอเจนต์
- `tool`: เหตุการณ์เครื่องมือที่สตรีมจากรันไทม์เอเจนต์

Gateway ฉายเหตุการณ์วงจรชีวิตและเหตุการณ์เริ่มต้น/สิ้นสุดของเครื่องมือไปยัง
[บัญชีแยกประเภทการตรวจสอบ](/th/cli/audit) ที่มีขอบเขตจำกัดและเก็บเฉพาะข้อมูลเมตา การฉายนี้บันทึกที่มาและ
รหัสผลลัพธ์โดยไม่คัดลอกพรอมต์ ข้อความ อาร์กิวเมนต์ของเครื่องมือ ผลลัพธ์ของเครื่องมือ
หรือข้อผิดพลาดดิบออกจากเส้นทางทรานสคริปต์/รันไทม์

## การจัดการช่องทางแชต

เดลตาของผู้ช่วยจะถูกบัฟเฟอร์ลงในข้อความแชต `delta` ระบบจะส่งแชต `final` เมื่อเกิด **สิ้นสุดวงจรชีวิต/ข้อผิดพลาด**

## การหมดเวลา

| การหมดเวลา                                          | ค่าเริ่มต้น                                | หมายเหตุ                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| ------------------------------------------------ | -------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `agent.wait`                                     | 30s                                    | รอเท่านั้น; พารามิเตอร์ `timeoutMs` จะเขียนทับค่านี้ โดยจะไม่หยุดการทำงานเบื้องหลัง                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| รันไทม์ของเอเจนต์ (`agents.defaults.timeoutSeconds`) | 172800s (48h)                          | บังคับใช้โดยตัวจับเวลายกเลิกของ `runEmbeddedAgent` ตั้งค่า `0` เพื่อให้งบเวลาการทำงานไม่จำกัด; ตัวเฝ้าระวังความพร้อมทำงานของสตรีมโมเดลยังคงมีผล                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| ตัวเฝ้าระวังกรณีแบ็กเอนด์ CLI ไม่มีเอาต์พุต                   | คำนวณใหม่สำหรับการทำงานของ CLI แต่ละครั้งที่เริ่มใหม่/ทำต่อ     | แยกจากรันไทม์ของเอเจนต์ กำหนดค่า `agents.defaults.cliBackends.<id>.reliability.watchdog.{fresh,resume}` สำหรับ CLI ที่อาจไม่มีเอาต์พุตระหว่างทำงาน งานเบื้องหลังภายใน CLI ใช้โปรเซสย่อยร่วมกับโปรเซสหลักและไม่สามารถทำงานต่อหลังจากการหมดเวลาโดยรวมของเอเจนต์                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| รอบการทำงานของเอเจนต์แบบแยกของ Cron                         | ควบคุมโดย Cron                          | ตัวกำหนดตารางเวลาเริ่มตัวจับเวลาของตนเองเมื่อการดำเนินการเริ่มขึ้น ยกเลิกการทำงานเมื่อถึงเส้นตายที่กำหนด จากนั้นดำเนินการล้างข้อมูลแบบมีขอบเขตก่อนบันทึกการหมดเวลา เพื่อไม่ให้เซสชันลูกที่ค้างทำให้เลนติดขัดต่อไป                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| การหมดเวลาเมื่อโมเดลไม่มีการตอบสนอง                               | คลาวด์ 120s; โฮสต์เอง 300s           | OpenClaw ยกเลิกคำขอโมเดลเมื่อไม่มีส่วนข้อมูลการตอบกลับมาถึงก่อนสิ้นสุดช่วงเวลาที่ไม่มีการตอบสนอง `models.providers.<id>.timeoutSeconds` ขยายเวลาของตัวเฝ้าระวังนี้สำหรับผู้ให้บริการภายในเครื่อง/ที่โฮสต์เองซึ่งทำงานช้า แต่ยังถูกจำกัดด้วย `agents.defaults.timeoutSeconds` แบบมีขอบเขตที่ต่ำกว่าหรือการหมดเวลาเฉพาะการทำงาน เนื่องจากค่าเหล่านั้นควบคุมการทำงานทั้งหมดของเอเจนต์ งบเวลาการทำงานแบบไม่จำกัดยังคงใช้ตัวเฝ้าระวังตามประเภทผู้ให้บริการ การทำงานของโมเดลคลาวด์ที่ Cron ทริกเกอร์โดยไม่ได้กำหนดการหมดเวลาของโมเดล/เอเจนต์อย่างชัดเจนจะใช้ค่าเริ่มต้นเดียวกัน; เมื่อกำหนดการหมดเวลาของ Cron อย่างชัดเจน การหยุดชะงักของสตรีมโมเดลคลาวด์จะถูกจำกัดไว้ที่ 60s เพื่อให้โมเดลสำรองที่กำหนดค่าไว้ยังสามารถทำงานก่อนถึงเส้นตายภายนอกของ Cron การทำงานที่ Cron ทริกเกอร์บนปลายทางภายในเครื่องจริง (loopback/baseUrl ส่วนตัว) ยังคงสามารถปิดใช้การหมดเวลาเมื่อไม่มีการตอบสนองภายในเครื่องได้; ผู้ให้บริการที่โฮสต์เองบน baseUrl ของเครือข่ายจะใช้ตัวเฝ้าระวังโดยปริยายที่ 300s เมื่อกำหนดการหมดเวลาของ Cron อย่างชัดเจน การหยุดชะงักภายในเครื่อง/ที่โฮสต์เองจะถูกจำกัดไว้ตามการหมดเวลานั้น ตั้งค่า `models.providers.<id>.timeoutSeconds` สำหรับผู้ให้บริการภายในเครื่องที่ทำงานช้า |
| การหมดเวลาของคำขอ HTTP ของผู้ให้บริการ                    | `models.providers.<id>.timeoutSeconds` | ครอบคลุมการเชื่อมต่อ ส่วนหัว เนื้อหา การหมดเวลาของคำขอ SDK การจัดการการยกเลิกของ guarded-fetch และตัวเฝ้าระวังเมื่อสตรีมโมเดลของผู้ให้บริการนั้นไม่มีการตอบสนอง ใช้สำหรับผู้ให้บริการภายในเครื่อง/ที่โฮสต์เองซึ่งทำงานช้า (เช่น Ollama) ก่อนเพิ่มการหมดเวลารันไทม์ทั้งหมดของเอเจนต์; กำหนดให้การหมดเวลาของเอเจนต์/รันไทม์มีค่าอย่างน้อยเท่ากันเมื่อคำขอโมเดลต้องทำงานนานกว่า                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |

### การวินิจฉัยเซสชันที่ค้าง

เมื่อเปิดใช้การวินิจฉัย เกณฑ์สองนาทีในตัวจะจำแนกเซสชัน `processing` ที่ทำงานนานโดยไม่พบความคืบหน้าของการตอบกลับ เครื่องมือ สถานะ บล็อก หรือ ACP:

- การทำงานแบบฝัง การเรียกโมเดล และการเรียกเครื่องมือที่ยังทำงานอยู่จะรายงานเป็น `session.long_running` การเรียกโมเดลที่อยู่ภายใต้การควบคุมและไม่มีเอาต์พุตจะยังคงเป็น `session.long_running` จนถึงเกณฑ์การยกเลิก เพื่อไม่ให้ผู้ให้บริการที่ทำงานช้าหรือไม่ใช้สตรีมถูกระบุว่าหยุดชะงักเร็วเกินไป
- งานที่ยังทำงานอยู่แต่ไม่มีความคืบหน้าล่าสุดจะรายงานเป็น `session.stalled` การเรียกโมเดลที่อยู่ภายใต้การควบคุมจะเปลี่ยนเป็น `session.stalled` เมื่อถึงหรือผ่านเกณฑ์การยกเลิก; กิจกรรมโมเดล/เครื่องมือที่ค้างและไม่มีเจ้าของจะไม่ถูกซ่อนไว้ว่าเป็นงานที่ทำงานยาวนาน
- `session.stuck` สงวนไว้สำหรับข้อมูลการจัดการเซสชันที่ค้างซึ่งกู้คืนได้ รวมถึงเซสชันในคิวที่ไม่มีการทำงานแต่ยังมีกิจกรรมโมเดล/เครื่องมือที่ค้างและไม่มีเจ้าของ

เกณฑ์การยกเลิกมีค่าอย่างน้อย 5 นาทีและเป็น 3 เท่าของเกณฑ์การเตือน การจัดการเซสชันที่ค้างจะปล่อยเลนของเซสชันที่ได้รับผลกระทบทันทีหลังผ่านเกณฑ์การกู้คืน; การทำงานแบบฝังที่หยุดชะงักจะถูกยกเลิกและระบายออกหลังจากผ่านเกณฑ์การยกเลิกเท่านั้น เพื่อให้งานในคิวกลับมาทำงานต่อได้โดยไม่ตัดการทำงานที่เพียงแค่ช้า การกู้คืนจะส่งผลลัพธ์แบบมีโครงสร้างสำหรับสถานะที่ร้องขอ/เสร็จสมบูรณ์; สถานะการวินิจฉัยจะถูกทำเครื่องหมายว่าไม่มีการทำงานก็ต่อเมื่อรุ่นการประมวลผลเดียวกันยังเป็นรุ่นปัจจุบัน และการวินิจฉัย `session.stuck` ซ้ำจะเพิ่มช่วงเว้นระยะขณะที่เซสชันยังคงไม่เปลี่ยนแปลง

## จุดที่การทำงานอาจสิ้นสุดก่อนกำหนด

- เอเจนต์หมดเวลา (ยกเลิก)
- AbortSignal (ยกเลิก)
- Gateway ตัดการเชื่อมต่อหรือ RPC หมดเวลา
- `agent.wait` หมดเวลา (รอเท่านั้น ไม่หยุดเอเจนต์)

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

- [เครื่องมือ](/th/tools) - เครื่องมือที่เอเจนต์ใช้ได้
- [ฮุก](/th/automation/hooks) - สคริปต์ที่ขับเคลื่อนด้วยเหตุการณ์ซึ่งทริกเกอร์โดยเหตุการณ์ในวงจรชีวิตของเอเจนต์
- [Compaction](/th/concepts/compaction) - วิธีสรุปบทสนทนาที่ยาว
- [การอนุมัติการดำเนินการ](/th/tools/exec-approvals) - ด่านการอนุมัติสำหรับคำสั่งเชลล์
- [การคิด](/th/tools/thinking) - การกำหนดค่าระดับการคิด/การให้เหตุผล
