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

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

## เครื่องมือที่มีให้ใช้

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

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

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

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

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

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

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

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

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

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

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

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

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

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

`subagents` คือ helper ฝั่ง control-plane สำหรับ OpenClaw
sub-agent ที่ถูกสร้างขึ้นแล้ว มันรองรับ:

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

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

`sessions_spawn` จะสร้างเซสชัน isolated สำหรับงานเบื้องหลังเป็นค่าเริ่มต้น
มันเป็นแบบ non-blocking เสมอ -- จะคืนค่าทันทีพร้อม `runId` และ
`childSessionKey`

ตัวเลือกหลัก:

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

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

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

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

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

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

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

ค่าเริ่มต้นคือ `tree` เซสชันที่ sandboxed จะถูกจำกัดไว้ที่ `tree` โดยไม่ขึ้นกับ
config

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

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

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

- [การจัดการเซสชัน](/th/concepts/session)
- [Session pruning](/th/concepts/session-pruning)
