---
read_when:
    - คุณต้องการทำความเข้าใจการกำหนดเส้นทางเซสชันและการแยกเซสชัน
    - คุณต้องการกำหนดค่าขอบเขตข้อความส่วนตัวสำหรับการตั้งค่าแบบผู้ใช้หลายคน
    - คุณกำลังดีบักการรีเซ็ตเซสชันรายวันหรือเมื่อไม่ได้ใช้งาน
summary: วิธีที่ OpenClaw จัดการเซสชันการสนทนา
title: การจัดการเซสชัน
x-i18n:
    generated_at: "2026-05-07T13:15:43Z"
    model: gpt-5.5
    provider: openai
    source_hash: 4e5ec741a33262ce5c42caf021ad81892e89b3315db31ac7b141d5a13e8b22a2
    source_path: concepts/session.md
    workflow: 16
---

OpenClaw จัดระเบียบการสนทนาเป็น **เซสชัน** ข้อความแต่ละรายการจะถูกกำหนดเส้นทางไปยังเซสชันตามแหล่งที่มา เช่น DM, แชตกลุ่ม, งาน Cron เป็นต้น

## วิธีการกำหนดเส้นทางข้อความ

| แหล่งที่มา       | พฤติกรรม                         |
| --------------- | ------------------------- |
| ข้อความโดยตรง | ใช้เซสชันร่วมกันโดยค่าเริ่มต้น |
| แชตกลุ่ม     | แยกตามแต่ละกลุ่ม        |
| ห้อง/ช่อง  | แยกตามแต่ละห้อง         |
| งาน Cron       | เซสชันใหม่ต่อการรันแต่ละครั้ง     |
| Webhooks        | แยกตามแต่ละ hook         |

## การแยก DM

โดยค่าเริ่มต้น DM ทั้งหมดจะใช้เซสชันเดียวร่วมกันเพื่อความต่อเนื่อง วิธีนี้เหมาะสำหรับการตั้งค่าแบบผู้ใช้คนเดียว

<Warning>
หากมีหลายคนที่สามารถส่งข้อความถึง agent ของคุณได้ ให้เปิดใช้การแยก DM หากไม่เปิด ผู้ใช้ทั้งหมดจะใช้บริบทการสนทนาเดียวกัน ข้อความส่วนตัวของ Alice จะมองเห็นได้โดย Bob
</Warning>

**วิธีแก้:**

```json5
{
  session: {
    dmScope: "per-channel-peer", // isolate by channel + sender
  },
}
```

ตัวเลือกอื่น:

- `main` (ค่าเริ่มต้น) -- DM ทั้งหมดใช้เซสชันเดียวร่วมกัน
- `per-peer` -- แยกตามผู้ส่ง (ข้ามช่อง)
- `per-channel-peer` -- แยกตามช่อง + ผู้ส่ง (แนะนำ)
- `per-account-channel-peer` -- แยกตามบัญชี + ช่อง + ผู้ส่ง

<Tip>
หากบุคคลคนเดียวกันติดต่อคุณจากหลายช่อง ให้ใช้ `session.identityLinks` เพื่อเชื่อมโยงตัวตนของพวกเขาเพื่อให้ใช้เซสชันเดียวร่วมกัน
</Tip>

### ช่องที่ dock แล้ว

คำสั่ง Dock อนุญาตให้ผู้ใช้ย้ายเส้นทางตอบกลับของเซสชันแชตโดยตรงปัจจุบันไปยังช่องอื่นที่เชื่อมโยงไว้ได้โดยไม่ต้องเริ่มเซสชันใหม่ ดูตัวอย่าง การกำหนดค่า และการแก้ไขปัญหาได้ที่ [การ dock ช่อง](/th/concepts/channel-docking)

ตรวจสอบการตั้งค่าของคุณด้วย `openclaw security audit`

## วงจรชีวิตของเซสชัน

เซสชันจะถูกนำกลับมาใช้ซ้ำจนกว่าจะหมดอายุ:

- **รีเซ็ตรายวัน** (ค่าเริ่มต้น) -- เซสชันใหม่เวลา 4:00 AM ตามเวลาท้องถิ่นบนโฮสต์ Gateway ความสดใหม่รายวันอิงจากเวลาที่ `sessionId` ปัจจุบันเริ่มต้น ไม่ใช่จากการเขียน metadata ภายหลัง
- **รีเซ็ตเมื่อว่าง** (ไม่บังคับ) -- เซสชันใหม่หลังจากไม่มีการใช้งานเป็นระยะเวลาหนึ่ง ตั้งค่า `session.reset.idleMinutes` ความสดใหม่เมื่อว่างอิงจากการโต้ตอบจริงล่าสุดของผู้ใช้/ช่อง ดังนั้นเหตุการณ์ระบบอย่าง Heartbeat, Cron และ exec จะไม่ทำให้เซสชันยังคงอยู่
- **รีเซ็ตด้วยตนเอง** -- พิมพ์ `/new` หรือ `/reset` ในแชต `/new <model>` จะสลับ model ด้วย

เมื่อกำหนดค่าทั้งการรีเซ็ตรายวันและการรีเซ็ตเมื่อว่าง รายการที่หมดอายุก่อนจะมีผล Heartbeat, Cron, exec และเทิร์นเหตุการณ์ระบบอื่นๆ อาจเขียน metadata ของเซสชันได้ แต่การเขียนเหล่านั้นจะไม่ยืดความสดใหม่ของการรีเซ็ตรายวันหรือการรีเซ็ตเมื่อว่าง เมื่อการรีเซ็ตเปลี่ยนเซสชัน การแจ้งเหตุการณ์ระบบที่อยู่ในคิวสำหรับเซสชันเก่าจะถูกทิ้ง เพื่อไม่ให้อัปเดตพื้นหลังที่ล้าสมัยถูกนำหน้า prompt แรกในเซสชันใหม่

เซสชันที่มีเซสชัน CLI ที่ provider เป็นเจ้าของซึ่งยังใช้งานอยู่จะไม่ถูกตัดโดยค่าเริ่มต้นรายวันแบบ implicit ใช้ `/reset` หรือกำหนดค่า `session.reset` อย่างชัดเจนเมื่อควรให้เซสชันเหล่านั้นหมดอายุตามเวลา

## ตำแหน่งที่เก็บสถานะ

สถานะเซสชันทั้งหมดเป็นของ **Gateway** ไคลเอ็นต์ UI จะ query Gateway เพื่อขอข้อมูลเซสชัน

- **Store:** `~/.openclaw/agents/<agentId>/sessions/sessions.json`
- **Transcripts:** `~/.openclaw/agents/<agentId>/sessions/<sessionId>.jsonl`

`sessions.json` เก็บ timestamp ของวงจรชีวิตแยกกัน:

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

แถวเก่าที่ไม่มี `sessionStartedAt` จะถูกแก้จาก header เซสชันใน transcript JSONL เมื่อมี หากแถวเก่ายังไม่มี `lastInteractionAt` ด้วย ความสดใหม่เมื่อว่างจะ fallback ไปยังเวลาเริ่มต้นเซสชันนั้น ไม่ใช่การเขียน bookkeeping ภายหลัง

## การบำรุงรักษาเซสชัน

OpenClaw จำกัดขนาดพื้นที่จัดเก็บเซสชันโดยอัตโนมัติตามเวลา โดยค่าเริ่มต้นจะทำงานในโหมด `warn` (รายงานสิ่งที่จะถูกล้าง) ตั้งค่า `session.maintenance.mode` เป็น `"enforce"` สำหรับการล้างอัตโนมัติ:

```json5
{
  session: {
    maintenance: {
      mode: "enforce",
      pruneAfter: "30d",
      maxEntries: 500,
    },
  },
}
```

สำหรับขีดจำกัด `maxEntries` ระดับ production การเขียนของ runtime Gateway จะใช้บัฟเฟอร์ high-water ขนาดเล็กและล้างกลับลงไปถึง cap ที่กำหนดค่าไว้เป็น batch การอ่าน session store จะไม่ prune หรือ cap รายการระหว่างการเริ่มต้น Gateway วิธีนี้หลีกเลี่ยงการรันการล้าง store แบบเต็มทุกครั้งที่เริ่มต้นหรือมีเซสชัน Cron แบบแยก `openclaw sessions cleanup --enforce` จะใช้ cap ทันที

การบำรุงรักษาจะรักษา pointer การสนทนาภายนอกที่คงทน รวมถึงเซสชันกลุ่มและเซสชันแชตที่มีขอบเขตตาม thread ขณะเดียวกันยังอนุญาตให้รายการ Cron, hook, Heartbeat, ACP และ sub-agent แบบสังเคราะห์หมดอายุได้

หากคุณเคยใช้การแยกข้อความโดยตรงมาก่อน แล้วภายหลังเปลี่ยน `session.dmScope` กลับเป็น `main` ให้ preview แถว DM ที่ keyed ตาม peer ซึ่งล้าสมัยด้วย `openclaw sessions cleanup --dry-run --fix-dm-scope` การใช้ flag เดียวกันจะเลิกใช้แถว direct-DM เก่าเหล่านั้นและเก็บ transcript ของแถวเหล่านั้นไว้เป็น archive ที่ถูกลบ

Preview ด้วย `openclaw sessions cleanup --dry-run`

## การตรวจสอบเซสชัน

- `openclaw status` -- path ของ session store และกิจกรรมล่าสุด
- `openclaw sessions --json` -- เซสชันทั้งหมด (กรองด้วย `--active <minutes>`)
- `/status` ในแชต -- การใช้บริบท, model และ toggle
- `/context list` -- สิ่งที่อยู่ใน system prompt

## อ่านเพิ่มเติม

- [Session Pruning](/th/concepts/session-pruning) -- การตัดผลลัพธ์ของเครื่องมือ
- [Compaction](/th/concepts/compaction) -- การสรุปบทสนทนายาว
- [Session Tools](/th/concepts/session-tool) -- เครื่องมือ agent สำหรับงานข้ามเซสชัน
- [Session Management Deep Dive](/th/reference/session-management-compaction) --
  schema ของ store, transcript, policy การส่ง, metadata ต้นทาง และการกำหนดค่าขั้นสูง
- [Multi-Agent](/th/concepts/multi-agent) — การกำหนดเส้นทางและการแยกเซสชันข้าม agent
- [Background Tasks](/th/automation/tasks) — วิธีที่งานแบบ detached สร้างบันทึก task พร้อมการอ้างอิงเซสชัน
- [Channel Routing](/th/channels/channel-routing) — วิธีที่ข้อความขาเข้าถูกกำหนดเส้นทางไปยังเซสชัน

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

- [Session pruning](/th/concepts/session-pruning)
- [Session tools](/th/concepts/session-tool)
- [Command queue](/th/concepts/queue)
