---
read_when:
    - คุณต้องการทำความเข้าใจว่าเอเจนต์มี Session Tools อะไรบ้าง
    - คุณต้องการกำหนดค่าการเข้าถึงข้ามเซสชันหรือการสร้าง sub-agent
    - คุณต้องการตรวจสอบสถานะหรือควบคุม sub-agent ที่ถูกสร้างขึ้น
summary: Tools ของเอเจนต์สำหรับสถานะข้ามเซสชัน การเรียกคืน การส่งข้อความ และการประสานงาน sub-agent
title: Session Tools
x-i18n:
    generated_at: "2026-04-23T10:17:34Z"
    model: gpt-5.4
    provider: openai
    source_hash: cd8b545429726d0880e6086ba7190497861bf3f3e1e88d53cb38ef9e5e4468c6
    source_path: concepts/session-tool.md
    workflow: 15
---

# Session Tools

OpenClaw มีเครื่องมือให้เอเจนต์ใช้ทำงานข้ามเซสชัน ตรวจสอบสถานะ และ
ประสานงาน sub-agent

## Tools ที่มีให้ใช้

| Tool               | สิ่งที่ทำได้                                                                |
| ------------------ | --------------------------------------------------------------------------- |
| `sessions_list`    | แสดงรายการเซสชันพร้อมตัวกรองเสริม (kind, label, agent, recency, preview) |
| `sessions_history` | อ่านทรานสคริปต์ของเซสชันที่ระบุ                                           |
| `sessions_send`    | ส่งข้อความไปยังอีกเซสชันหนึ่งและเลือกได้ว่าจะรอหรือไม่                     |
| `sessions_spawn`   | สร้างเซสชัน sub-agent แบบแยกสำหรับงานเบื้องหลัง                           |
| `sessions_yield`   | จบเทิร์นปัจจุบันและรอผลลัพธ์ติดตามจาก sub-agent                            |
| `subagents`        | แสดงรายการ ควบคุมทิศทาง หรือหยุด sub-agent ที่ถูกสร้างสำหรับเซสชันนี้     |
| `session_status`   | แสดงการ์ดแบบ `/status` และตั้งค่า model override รายเซสชันได้ตามต้องการ   |

## การแสดงรายการและการอ่านเซสชัน

`sessions_list` จะคืนค่าเซสชันพร้อม key, agentId, kind, channel, model,
จำนวนโทเค็น และเวลา ใช้ตัวกรองตาม kind (`main`, `group`, `cron`, `hook`,
`node`), `label` แบบตรงตัว, `agentId` แบบตรงตัว, ข้อความค้นหา หรือความล่าสุด
(`activeMinutes`) ได้ เมื่อต้องการการคัดกรองแบบกล่องข้อความ ก็ยังสามารถขอ
derived title ที่อยู่ภายใต้ขอบเขตการมองเห็น, snippet preview ของข้อความล่าสุด
หรือข้อความล่าสุดจำนวนจำกัดในแต่ละแถวได้ Derived title และ preview จะถูกสร้าง
เฉพาะสำหรับเซสชันที่ผู้เรียกมีสิทธิ์มองเห็นอยู่แล้วภายใต้นโยบายการมองเห็นของ
session tool ที่กำหนดไว้ ดังนั้นเซสชันที่ไม่เกี่ยวข้องจะยังคงถูกซ่อนไว้

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

- ข้อความของ assistant จะถูก normalize ก่อนเรียกคืน:
  - ลบแท็ก thinking
  - ลบบล็อก scaffolding ของ `<relevant-memories>` / `<relevant_memories>`
  - ลบบล็อก payload XML ของการเรียก tool แบบข้อความล้วน เช่น `<tool_call>...</tool_call>`,
    `<function_call>...</function_call>`, `<tool_calls>...</tool_calls>` และ
    `<function_calls>...</function_calls>` รวมถึง payload ที่ถูกตัดและปิดไม่สมบูรณ์
  - ลบ scaffolding ของการเรียก/ผลลัพธ์ tool ที่ถูกลดระดับ เช่น `[Tool Call: ...]`,
    `[Tool Result ...]` และ `[Historical context ...]`
  - ลบ model control token ที่รั่วออกมา เช่น `<|assistant|>`, token ASCII
    รูปแบบ `<|...|>` อื่น ๆ และรูปแบบ full-width `<｜...｜>`
  - ลบ XML ของการเรียก tool ของ MiniMax ที่ผิดรูปแบบ เช่น `<invoke ...>` /
    `</minimax:tool_call>`
- ข้อความที่คล้าย credential/token จะถูกปกปิดก่อนส่งกลับ
- บล็อกข้อความยาวจะถูกตัดทอน
- ประวัติที่ใหญ่มากอาจตัดแถวเก่าออก หรือแทนที่แถวที่ใหญ่เกินไปด้วย
  `[sessions_history omitted: message too large]`
- tool จะรายงานแฟล็กสรุป เช่น `truncated`, `droppedMessages`,
  `contentTruncated`, `contentRedacted` และ `bytes`

ทั้งสอง tool รับได้ทั้ง **session key** (เช่น `"main"`) หรือ **session ID**
จากการเรียกรายการก่อนหน้า

หากคุณต้องการทรานสคริปต์แบบตรงตามไบต์ทุกประการ ให้ตรวจสอบไฟล์ทรานสคริปต์บนดิสก์
แทนการใช้ `sessions_history` เป็น raw dump

## การส่งข้อความข้ามเซสชัน

`sessions_send` ส่งข้อความไปยังอีกเซสชันหนึ่งและเลือกได้ว่าจะรอคำตอบหรือไม่:

- **ส่งแล้วจบเลย:** ตั้ง `timeoutSeconds: 0` เพื่อเข้าคิวแล้วส่งกลับทันที
- **รอคำตอบ:** ตั้ง timeout แล้วรับคำตอบกลับมาแบบอินไลน์

หลังจากเป้าหมายตอบแล้ว OpenClaw สามารถรัน **reply-back loop** ที่ให้
เอเจนต์ผลัดกันส่งข้อความได้ (สูงสุด 5 เทิร์น) เอเจนต์เป้าหมายสามารถตอบ
`REPLY_SKIP` เพื่อหยุดก่อนกำหนดได้

## ตัวช่วยด้านสถานะและการประสานงาน

`session_status` คือ tool แบบเทียบเท่า `/status` ที่มีน้ำหนักเบาสำหรับเซสชันปัจจุบัน
หรืออีกเซสชันหนึ่งที่มองเห็นได้ โดยจะรายงานการใช้งาน เวลา สถานะ model/runtime
และบริบทของงานเบื้องหลังที่ลิงก์ไว้เมื่อมี เช่นเดียวกับ `/status` มันสามารถเติมค่า
token/cache counter ที่มีข้อมูลไม่ครบจาก usage entry ล่าสุดในทรานสคริปต์ได้ และ
`model=default` จะล้าง override รายเซสชัน

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

`subagents` เป็นตัวช่วย control plane สำหรับ sub-agent ของ OpenClaw
ที่ถูกสร้างไว้แล้ว โดยรองรับ:

- `action: "list"` เพื่อตรวจสอบงานที่กำลังทำงาน/ล่าสุด
- `action: "steer"` เพื่อส่งแนวทางติดตามผลไปยัง child ที่กำลังทำงาน
- `action: "kill"` เพื่อหยุด child หนึ่งตัวหรือ `all`

## การสร้าง sub-agent

`sessions_spawn` สร้างเซสชันแบบแยกสำหรับงานเบื้องหลัง โดยจะ
ไม่บล็อกเสมอ — ส่งกลับทันทีพร้อม `runId` และ `childSessionKey`

ตัวเลือกสำคัญ:

- `runtime: "subagent"` (ค่าเริ่มต้น) หรือ `"acp"` สำหรับเอเจนต์ harness ภายนอก
- `model` และ `thinking` override สำหรับเซสชัน child
- `thread: true` เพื่อผูกการสร้างเข้ากับเธรดแชต (Discord, Slack เป็นต้น)
- `sandbox: "require"` เพื่อบังคับให้ child อยู่ใน sandbox

leaf sub-agent ค่าเริ่มต้นจะไม่ได้รับ session tools เมื่อ
`maxSpawnDepth >= 2` sub-agent ระดับ depth-1 ที่ทำหน้าที่ประสานงานจะได้รับ
`sessions_spawn`, `subagents`, `sessions_list` และ `sessions_history` เพิ่มเติม
เพื่อให้จัดการ child ของตัวเองได้ แต่ leaf run จะยังไม่ได้รับ tool สำหรับ
การประสานงานแบบเรียกซ้ำ

หลังทำงานเสร็จ ขั้นตอน announce จะโพสต์ผลลัพธ์ไปยังช่องทางของผู้ร้องขอ
การส่งมอบผลลัพธ์เมื่อเสร็จจะคงการกำหนดเส้นทางตามเธรด/หัวข้อที่ผูกไว้เมื่อมี และหาก
ต้นทางของการเสร็จงานระบุได้เพียงช่องทาง OpenClaw ก็ยังสามารถใช้ route ที่เก็บไว้ของ
เซสชันผู้ร้องขอ (`lastChannel` / `lastTo`) เพื่อส่งตรงได้

สำหรับพฤติกรรมเฉพาะของ ACP ดู [ACP Agents](/th/tools/acp-agents)

## การมองเห็น

Session Tools มีการกำหนดขอบเขตเพื่อจำกัดสิ่งที่เอเจนต์มองเห็นได้:

| Level   | ขอบเขต                                 |
| ------- | -------------------------------------- |
| `self`  | เฉพาะเซสชันปัจจุบัน                    |
| `tree`  | เซสชันปัจจุบัน + sub-agent ที่สร้างขึ้น |
| `agent` | ทุกเซสชันสำหรับเอเจนต์นี้              |
| `all`   | ทุกเซสชัน (ข้ามเอเจนต์หากกำหนดค่าไว้)  |

ค่าเริ่มต้นคือ `tree` เซสชันแบบ sandbox จะถูกจำกัดเป็น `tree`
ไม่ว่าคอนฟิกจะตั้งไว้อย่างไร

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

- [การจัดการเซสชัน](/th/concepts/session) -- การกำหนดเส้นทาง วงจรชีวิต การดูแลรักษา
- [ACP Agents](/th/tools/acp-agents) -- การสร้าง external harness
- [Multi-agent](/th/concepts/multi-agent) -- สถาปัตยกรรมหลายเอเจนต์
- [การกำหนดค่า Gateway](/th/gateway/configuration) -- ตัวเลือกคอนฟิกของ session tool
