---
read_when:
    - คุณต้องการทำความเข้าใจว่าเอเจนต์มีเครื่องมือเซสชันใดบ้าง
    - คุณต้องการกำหนดค่าการเข้าถึงข้ามเซสชันหรือการสร้างเอเจนต์ย่อย
    - คุณต้องการตรวจสอบสถานะหรือควบคุมเอเจนต์ย่อยที่สร้างขึ้น
summary: เครื่องมือเอเจนต์สำหรับสถานะ การเรียกคืน การส่งข้อความ และการประสานงานเอเจนต์ย่อยข้ามเซสชัน
title: เครื่องมือของเซสชัน
x-i18n:
    generated_at: "2026-05-11T20:28:35Z"
    model: gpt-5.5
    provider: openai
    source_hash: e91f1f956ff882cabf7df51bd8c08836398decfb185c56c42db4052f24b3f716
    source_path: concepts/session-tool.md
    workflow: 16
---

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

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

| เครื่องมือ          | สิ่งที่ทำ                                                                  |
| ------------------ | --------------------------------------------------------------------------- |
| `sessions_list`    | แสดงรายการเซสชันพร้อมตัวกรองเสริม (ชนิด, ป้ายกำกับ, เอเจนต์, ความใหม่, ตัวอย่าง) |
| `sessions_history` | อ่านทรานสคริปต์ของเซสชันที่ระบุ                                             |
| `sessions_send`    | ส่งข้อความไปยังเซสชันอื่นและเลือกได้ว่าจะรอหรือไม่                           |
| `sessions_spawn`   | สร้างเซสชันเอเจนต์ย่อยแบบแยกสำหรับงานเบื้องหลัง                              |
| `sessions_yield`   | จบเทิร์นปัจจุบันและรอผลลัพธ์ติดตามจากเอเจนต์ย่อย                              |
| `subagents`        | แสดงรายการ ควบคุมทิศทาง หรือหยุดเอเจนต์ย่อยที่สร้างไว้สำหรับเซสชันนี้          |
| `session_status`   | แสดงการ์ดแบบ `/status` และเลือกตั้งค่าการแทนที่โมเดลรายเซสชันได้             |

เครื่องมือเหล่านี้ยังคงอยู่ภายใต้โปรไฟล์เครื่องมือที่ใช้งานอยู่และนโยบายอนุญาต/ปฏิเสธ
`tools.profile: "coding"` รวมชุดประสานงานเซสชันครบถ้วน
รวมถึง `sessions_spawn`, `sessions_yield` และ `subagents`
`tools.profile: "messaging"` รวมเครื่องมือส่งข้อความข้ามเซสชัน
(`sessions_list`, `sessions_history`, `sessions_send`, `session_status`) แต่
ไม่รวมการสร้างเอเจนต์ย่อย หากต้องการคงโปรไฟล์การส่งข้อความไว้และยังคง
อนุญาตการมอบหมายงานแบบเนทีฟ ให้เพิ่ม:

```json5
{
  tools: {
    profile: "messaging",
    alsoAllow: ["sessions_spawn", "sessions_yield", "subagents"],
  },
}
```

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

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

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

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

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

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

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

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

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

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

เซสชันแชทที่จำกัดตามเธรด เช่น key ของ Slack หรือ Discord ที่ลงท้ายด้วย
`:thread:<id>` ไม่ใช่เป้าหมาย `sessions_send` ที่ถูกต้อง ให้ใช้ key ของเซสชันช่องทางหลัก
สำหรับการประสานงานระหว่างเอเจนต์ เพื่อไม่ให้ข้อความที่ส่งผ่านเครื่องมือปรากฏ
ภายในเธรดที่กำลังโต้ตอบกับมนุษย์อยู่

ข้อความและคำตอบติดตาม A2A จะถูกทำเครื่องหมายเป็นข้อมูลระหว่างเซสชันใน
พรอมป์ฝั่งรับ (`[Inter-session message ... isUser=false]`) และในแหล่งที่มาของทรานสคริปต์
เอเจนต์ฝั่งรับควรปฏิบัติต่อข้อมูลเหล่านี้เป็นข้อมูลที่ส่งผ่านเครื่องมือ ไม่ใช่
คำสั่งโดยตรงที่ผู้ใช้ปลายทางเขียนขึ้น

หลังจากเป้าหมายตอบกลับ OpenClaw สามารถรัน **ลูปตอบกลับไปมา** ซึ่ง
เอเจนต์จะสลับกันส่งข้อความ (สูงสุด `session.agentToAgent.maxPingPongTurns`, ช่วง
0-20, ค่าเริ่มต้น 5) เอเจนต์เป้าหมายสามารถตอบ
`REPLY_SKIP` เพื่อหยุดก่อนกำหนด

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

`session_status` เป็นเครื่องมือเทียบเท่า `/status` แบบเบาสำหรับเซสชันปัจจุบัน
หรือเซสชันอื่นที่มองเห็นได้ เครื่องมือนี้รายงานการใช้งาน เวลา สถานะโมเดล/รันไทม์ และ
บริบทงานเบื้องหลังที่เชื่อมโยงเมื่อมีอยู่ เช่นเดียวกับ `/status` เครื่องมือนี้สามารถเติมย้อนหลัง
ตัวนับโทเคน/แคชที่มีข้อมูลเบาบางจากรายการการใช้งานล่าสุดในทรานสคริปต์ได้ และ
`model=default` จะล้างการแทนที่รายเซสชัน ใช้ `sessionKey="current"` สำหรับ
เซสชันปัจจุบันของผู้เรียก ป้ายกำกับไคลเอนต์ที่มองเห็นได้ เช่น `openclaw-tui` ไม่ใช่
session key

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

`subagents` เป็นตัวช่วย control-plane สำหรับเอเจนต์ย่อย OpenClaw
ที่สร้างไว้แล้ว รองรับ:

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

## การสร้างเอเจนต์ย่อย

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

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

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

เอเจนต์ย่อย leaf ค่าเริ่มต้นจะไม่ได้รับเครื่องมือเซสชัน เมื่อ
`maxSpawnDepth >= 2` เอเจนต์ย่อย orchestrator ระดับความลึก 1 จะได้รับ
`sessions_spawn`, `subagents`, `sessions_list` และ `sessions_history` เพิ่มเติม เพื่อให้
สามารถจัดการลูกของตนเองได้ การรัน leaf ยังคงไม่ได้รับเครื่องมือ
การประสานงานแบบเรียกซ้ำ

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

สำหรับพฤติกรรมเฉพาะ ACP โปรดดู [เอเจนต์ ACP](/th/tools/acp-agents)

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

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

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

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

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

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

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

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