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

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

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

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

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

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

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

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

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

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

- ข้อความของ assistant จะถูกปรับให้เป็นมาตรฐานก่อนเรียกคืน:
  - แท็ก 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`

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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