Sessions and memory
เครื่องมือเซสชัน
OpenClaw มอบเครื่องมือให้เอเจนต์ทำงานข้ามเซสชัน ตรวจสอบสถานะ และประสานการทำงานของเอเจนต์ย่อย
เครื่องมือที่พร้อมใช้งาน
| เครื่องมือ | หน้าที่ |
|---|---|
sessions |
แก้ไขการตั้งค่าเซสชันที่มองเห็นและจัดการแค็ตตาล็อกกลุ่มเซสชันส่วนกลาง |
sessions_list |
แสดงรายการเซสชันพร้อมตัวกรองเสริม (ชนิด ป้ายกำกับ เอเจนต์ คลังเก็บ ตัวอย่าง) |
sessions_search |
ค้นหาบันทึกบทสนทนาของเซสชันที่มองเห็นและส่งคืนข้อความส่วนที่ตรงกัน |
sessions_history |
อ่านบันทึกบทสนทนาของเซสชันที่ระบุ |
sessions_send |
เรียกใช้เซสชันอื่นบน Gateway เดียวกันและเลือกที่จะรอได้ |
conversations_list |
แสดงรายการที่อยู่การสนทนาภายนอกที่คงที่ |
conversations_send |
ส่งไปยังการสนทนาภายนอกหนึ่งรายการที่ระบุอย่างแน่นอนโดยไม่เรียกใช้เซสชันภายใน |
conversations_turn |
ส่งไปยังการสนทนาภายนอกหนึ่งรายการที่ระบุอย่างแน่นอนและรอการตอบกลับที่เชื่อมโยงกัน |
sessions_spawn |
สร้างเซสชันเอเจนต์ย่อยแบบแยกอิสระสำหรับงานเบื้องหลัง |
sessions_yield |
สิ้นสุดรอบปัจจุบันและรอผลลัพธ์ติดตามจากเอเจนต์ย่อย |
subagents |
แสดงรายการหรือยกเลิกงานเบื้องหลังในโครงสร้างเซสชันนี้ |
session_status |
แสดงการ์ดรูปแบบ /status และเลือกตั้งค่าการแทนที่โมเดลสำหรับแต่ละเซสชัน |
เครื่องมือเหล่านี้ยังคงอยู่ภายใต้โปรไฟล์เครื่องมือที่ใช้งานอยู่และนโยบายอนุญาต/ปฏิเสธ tools.profile: "coding" มีชุดการประสานงานเซสชันทั้งหมด tools.profile: "messaging" มีบริการเซสชันแบบบริการตนเอง การค้นหา การเรียกคืน การส่งข้อความข้ามเซสชัน เครื่องมือการสนทนาภายนอก และวงจรการสร้างทั้งหมด (sessions_spawn, sessions_yield และ subagents) เครื่องมือแนะนำงานเฉพาะ UI ได้แก่ spawn_task และ dismiss_task ยังคงเป็นเครื่องมือในโปรไฟล์การเขียนโค้ด
นโยบายระดับกลุ่ม ผู้ให้บริการ แซนด์บ็อกซ์ และแต่ละเอเจนต์ยังสามารถนำเครื่องมือเหล่านั้นออกหลังขั้นตอนโปรไฟล์ได้ ใช้ /tools จากเซสชันที่ได้รับผลกระทบเพื่อตรวจสอบรายการเครื่องมือที่มีผลจริง
การแสดงรายการและการอ่านเซสชัน
sessions_list ส่งคืนแถวข้อมูลสำหรับการค้นหาที่มุ่งเน้น ได้แก่ คีย์เซสชัน เอเจนต์ ชนิด ช่องทาง ป้ายกำกับ/ชื่อเรื่อง/ช่องตัวอย่าง ความสัมพันธ์ระหว่างแม่และลูก การอัปเดตล่าสุด สถานะคลังเก็บ/ปักหมุด เวอร์ชันสถานะ โมเดล จำนวนโทเค็นบริบท/ทั้งหมด สถานะการทำงาน และระบุว่าการทำงานล่าสุดถูกยกเลิกหรือไม่ กรองด้วย kinds (อาร์เรย์; ค่าที่ยอมรับ: main, group, cron, hook, node, other) ค่า label ที่ตรงกัน ค่า agentId ที่ตรงกัน ข้อความ search หรือความใหม่ล่าสุด (activeMinutes) โดยค่าเริ่มต้นจะส่งคืนเซสชันที่ใช้งานอยู่ ให้ส่ง archived: true เพื่อตรวจสอบเซสชันที่เก็บถาวรแทน ตั้งค่า includeDerivedTitles, includeLastMessage หรือ messageLimit (จำกัดสูงสุดที่ 20) เมื่อต้องการคัดแยกแบบกล่องจดหมาย ได้แก่ ชื่อเรื่องที่อนุมานภายในขอบเขตการมองเห็น ตัวอย่างข้อความล่าสุด หรือข้อความล่าสุดจำนวนจำกัดในแต่ละแถว การกำหนดเส้นทางส่งมอบ ID เซสชันภายใน เวลา/การตั้งค่าต่อการทำงาน การประมาณค่าใช้จ่าย และพาธบันทึกบทสนทนาจะถูกละไว้โดยเจตนา ให้ใช้ session_status เครื่องมือการสนทนา และ sessions_history สำหรับรายละเอียดเฉพาะของเจ้าของเหล่านั้น ชื่อเรื่องและตัวอย่างที่อนุมานจะสร้างขึ้นเฉพาะเซสชันที่ผู้เรียกมองเห็นได้อยู่แล้วตามนโยบายการมองเห็นของเครื่องมือเซสชันที่กำหนดไว้ ดังนั้นเซสชันที่ไม่เกี่ยวข้องจึงยังคงถูกซ่อน เมื่อจำกัดการมองเห็น sessions_list จะส่งคืนข้อมูลเมตา visibility ซึ่งเป็นทางเลือก โดยแสดงโหมดที่มีผลจริงและคำเตือนว่าผลลัพธ์อาจถูกจำกัดตามขอบเขต
sessions_history ดึงบันทึกบทสนทนาสำหรับเซสชันที่ระบุ โดยค่าเริ่มต้นจะไม่รวมผลลัพธ์ของเครื่องมือ ให้ส่ง includeTools: true เพื่อดูผลลัพธ์เหล่านั้น ใช้ limit สำหรับส่วนท้ายล่าสุดที่มีขอบเขตจำกัด ส่ง offset: 0 เมื่อต้องการข้อมูลเมตาสำหรับการแบ่งหน้า จากนั้นส่งค่า nextOffset ที่ได้รับกลับมาเพื่อเลื่อนย้อนหลังผ่านช่วงบันทึกบทสนทนา OpenClaw ที่เก่ากว่าโดยไม่ต้องอ่านไฟล์บันทึกบทสนทนาดิบ หน้าการชดเชยที่ระบุชัดเจนจะไม่รวมการนำเข้าทางเลือกจาก CLI ภายนอก ให้ใช้มุมมองส่วนท้ายล่าสุดตามค่าเริ่มต้น (ไม่มี offset) เมื่อต้องการประวัติการแสดงผลที่รวมแล้ว
มุมมองที่ส่งคืนมีขอบเขตจำกัดและผ่านการกรองเพื่อความปลอดภัยโดยเจตนา:
- ข้อความของ assistant จะถูกทำให้เป็นมาตรฐานก่อนเรียกคืน:
- แท็ก thinking จะถูกนำออก
- บล็อกโครงสร้าง
<relevant-memories>/<relevant_memories>จะถูกนำออก - บล็อกเพย์โหลด XML สำหรับการเรียกเครื่องมือแบบข้อความล้วน เช่น
<tool_call>...</tool_call>,<function_call>...</function_call>,<tool_calls>...</tool_calls>และ<function_calls>...</function_calls>จะถูกนำออก รวมถึงเพย์โหลดที่ถูกตัดทอนและปิดไม่สมบูรณ์ - โครงสร้างการเรียกเครื่องมือ/ผลลัพธ์ที่ถูกลดรูป เช่น
[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และข้อมูลเมตาสำหรับการแบ่งหน้า
ใช้ คีย์เซสชัน ที่ส่งคืน (เช่น "main") กับ sessions_history, sessions_send และ session_status เครื่องมือเป้าหมายเหล่านั้นยังสามารถระบุ ID เซสชันที่ทราบได้ แต่ sessions_list จะไม่เปิดเผย ID ภายใน
หากต้องการบันทึกบทสนทนาดิบที่ตรงทั้งหมด ให้ตรวจสอบแถวบันทึกบทสนทนา SQLite ภายในขอบเขตแทนการถือว่า sessions_history เป็นข้อมูลดิบที่ไม่ผ่านการกรอง
ใช้ sessions_search เพื่อเรียกคืนข้อความฉบับเต็มที่ตรงกันจากข้อความบันทึกบทสนทนาของผู้ใช้และ assistant ที่มองเห็นได้ ผลลัพธ์มี sessionKey สำหรับการเรียก sessions_history ต่อเนื่อง โดยการกรองการมองเห็น การปกปิดข้อความตัวอย่าง และขอบเขตผลลัพธ์จะตรงกับขอบเขตของประวัติ
การจัดการการตั้งค่าและกลุ่มเซสชัน
เครื่องมือ sessions ที่จำกัดสิทธิ์เฉพาะเจ้าของเปิดเผยพื้นผิวบริการตนเองที่มีขอบเขตจำกัดสองส่วน:
action: "patch"เปลี่ยนเซสชันปัจจุบันโดยค่าเริ่มต้น หรือเซสชันอื่นที่มองเห็นได้ซึ่งเลือกด้วยsessionKeyโดยสามารถตั้งค่าป้ายกำกับ ไอคอนแถบด้านข้าง สถานะปักหมุด/เก็บถาวร โมเดล และระดับการคิดได้ แต่ไม่เปิดเผยการดำเนินการรีเซ็ต ลบ หรือบีบอัดgroup_list,group_set,group_renameและgroup_deleteจัดการแค็ตตาล็อกกลุ่มเซสชันส่วนกลางที่เรียงลำดับแล้วgroup_setจะแทนที่รายการชื่อที่เรียงลำดับทั้งหมดแทนการแก้ไขเพียงหนึ่งรายการ
แพตช์โมเดลที่เอเจนต์เลือกยังคงย้อนกลับได้จนกว่าการเลือกนั้นจะทำงานสำเร็จเสร็จสมบูรณ์ หากยืนยันได้ว่าโมเดลที่เลือกใช้งานไม่ได้เนื่องจากความล้มเหลวด้านการยืนยันตัวตน การเรียกเก็บเงิน หรือไม่พบโมเดล OpenClaw จะคืนค่าโมเดลก่อนหน้าและเขียนหมายเหตุระบบที่มองเห็นได้ ความล้มเหลวชั่วคราวจากการจำกัดอัตรา โหลดเกิน การหมดเวลา เครือข่าย และเซิร์ฟเวอร์จะไม่ยกเลิกการเลือก
เซสชันเทียบกับการสนทนา
เซสชัน คือบริบทของโมเดลภายในระบบ การสนทนา คือที่อยู่ภายนอกที่ระบุแน่นอน เช่น คู่สนทนาหนึ่งราย ช่องทางหนึ่งช่อง หรือเธรดหนึ่งรายการ ทั้งสองเชื่อมโยงกันแต่ใช้แทนกันไม่ได้ โดยข้อความโดยตรงสามารถใช้เซสชัน main ร่วมกันได้ในขณะที่ยังคงมีที่อยู่การสนทนาแยกกัน
conversations_list ส่งคืนค่า conversationRef แบบทึบสำหรับเอเจนต์ที่ใช้งานอยู่ เมื่อระบุ channel อย่างชัดเจน Gateway จะรีเฟรชที่อยู่จากไดเรกทอรีภายในของช่องทางนั้นด้วย เช่น เพียร์ Reef ที่ได้รับอนุมัติ ให้ใช้ query เพื่อค้นหาเพียร์ที่ระบุนอกเหนือจากหน้าผลลัพธ์ปัจจุบัน การค้นพบจะลงทะเบียนที่อยู่ในแค็ตตาล็อกโดยไม่สร้างเซสชันบริบทโมเดล เซสชันรองรับจะถูกสร้างขึ้นเมื่อการส่งมอบหรือบริบทขาเข้าต้องใช้เท่านั้น การค้นหาและการส่งมอบการสนทนาจำกัดเฉพาะเจ้าของ เนื่องจากใช้ข้อมูลประจำตัวของช่องทางใน Gateway ใช้ conversations_send สำหรับการส่งแบบไม่รอผล ใช้ conversations_turn เมื่อการตอบกลับจากระยะไกลเป็นส่วนหนึ่งของรอบโมเดลปัจจุบัน โดย Gateway จะสำรอง ID ข้อความของการขนส่งหนึ่งรายการ บันทึกการดำเนินการส่งมอบและความตั้งใจเข้าคิวก่อน I/O ของการขนส่ง และส่งคืนการตอบกลับที่เชื่อมโยงกันจากเครื่องมือแทนการเริ่มรอบเอเจนต์ภายในครั้งที่สอง การดำเนินการส่งมอบอยู่นอกบันทึกบทสนทนาของโมเดล ส่วนการตอบกลับที่เก็บได้จะถูกเก็บไว้เป็นเพียงอาร์ติแฟกต์ประกอบ ขณะที่ผลลัพธ์ของเครื่องมือเป็นเจ้าของบริบทโมเดล หาก Gateway เริ่มใหม่หลังการเข้าคิว การส่งมอบสามารถกู้คืนได้ แต่การตอบกลับภายหลังจะดำเนินตามการจัดส่งขาเข้าปกติ เนื่องจากตัวรอภายในโปรเซสหายไปแล้ว ข้อความขาเข้าที่ไม่ได้ร้องขอจะดำเนินต่อผ่านเส้นทางการจัดส่งช่องทางปกติเสมอ
ใช้เครื่องมือ message ที่ใช้ร่วมกันเมื่อมีเป้าหมายช่องทางดิบที่ระบุอย่างชัดเจนอยู่แล้ว หรือต้องการการดำเนินการเฉพาะช่องทาง การอ้างอิงการสนทนาถูกจำกัดขอบเขตไว้กับเอเจนต์ที่ใช้งานอยู่และควรรับผ่าน conversations_list ไม่ใช่สร้างขึ้นจากคีย์เซสชัน
ในโหมดโค้ด เครื่องมือการสนทนาจะใช้สัญญาเอาต์พุต Gateway ที่ตรงกันซ้ำ เซลล์ exec หนึ่งเซลล์สามารถแสดงรายการที่อยู่ เลือก conversationRef ที่ส่งคืน และเรียก conversations_send หรือ conversations_turn โดยนโยบายเครื่องมือและการอนุมัติตามปกติยังคงมีผลกับการเรียกที่ซ้อนอยู่
การส่งข้อความข้ามเซสชัน
sessions_send เรียกใช้เซสชันอื่นบน Gateway เดียวกันและเลือกที่จะรอการตอบกลับได้ ค่า sessionKey, label หรือ agentId ของเครื่องมือนี้ใช้เลือกบริบทโมเดลภายใน ไม่ใช่ปลายทางภายนอก การตอบกลับที่ได้ยังคงประกาศผ่านบริบทการส่งมอบของผู้ร้องขอหรือเป้าหมายที่กำหนดไว้ได้ โดยลักษณะการทำงานเดิมนี้ไม่เปลี่ยนแปลง สำหรับการส่งมอบภายนอกที่ระบุแน่นอน ให้ใช้เครื่องมือการสนทนาหรือ message พร้อมช่องทางและเป้าหมายที่ระบุอย่างชัดเจน
- ส่งแล้วไม่รอผล: ตั้งค่า
timeoutSeconds: 0เพื่อเข้าคิวและส่งคืนทันที - รอการตอบกลับ: ตั้งค่าการหมดเวลาและรับการตอบกลับในตำแหน่งเดิม
เซสชันแชตที่จำกัดขอบเขตตามเธรด เช่น คีย์ที่ลงท้ายด้วย :thread:<id> ไม่ใช่เป้าหมาย sessions_send ที่ใช้ได้ ให้ใช้คีย์เซสชันของช่องทางแม่สำหรับการประสานงานระหว่างเอเจนต์ เพื่อไม่ให้ข้อความที่กำหนดเส้นทางผ่านเครื่องมือปรากฏภายในเธรดที่มีผู้ใช้กำลังใช้งานอยู่
ข้อความและการตอบกลับติดตาม A2A จะถูกทำเครื่องหมายเป็นข้อมูลระหว่างเซสชันในพรอมต์ที่รับ ([Inter-session message ... isUser=false]) และในที่มาของบันทึกบทสนทนา เอเจนต์ที่รับควรถือว่าข้อมูลเหล่านี้เป็นข้อมูลที่กำหนดเส้นทางผ่านเครื่องมือ ไม่ใช่คำสั่งที่ผู้ใช้ปลายทางเขียนโดยตรง
หลังจากเป้าหมายตอบกลับ OpenClaw สามารถเรียกใช้ วงจรตอบกลับ ซึ่งเอเจนต์จะสลับกันส่งข้อความ (สูงสุด session.agentToAgent.maxPingPongTurns, ช่วง 0-20, ค่าเริ่มต้น 5) เอเจนต์เป้าหมายสามารถตอบ REPLY_SKIP เพื่อหยุดก่อนกำหนด
ส่ง watch: true เพื่อลงทะเบียนผู้ส่งเป็นผู้เฝ้าดูการเปลี่ยนแปลงสถานะของเป้าหมายด้วย เมื่อผู้ดำเนินการรายอื่นส่งข้อความจากมนุษย์โดยตรงไปยังเป้าหมายหรือเปลี่ยนเป้าหมายของเป้าหมายในภายหลัง ผู้ส่งจะได้รับการแจ้งเตือนจากระบบที่ชี้ไปยัง session_status changesSince การลงทะเบียนจะเกิดขึ้นหลังจากจัดส่งสำเร็จ โดยกำหนดเป้าหมายเป็นเซสชันที่ได้รับข้อความจริง และเริ่มต้นที่เวอร์ชันสถานะปัจจุบัน ดังนั้นจึงมีเพียงการเปลี่ยนแปลงภายหลังเท่านั้นที่ทำให้เกิดการแจ้งเตือน ผลลัพธ์จะรายงาน watched: true เมื่อลงทะเบียนสำเร็จ ดู การรับรู้สถานะเซสชัน
ตัวช่วยสถานะและการประสานงาน
session_status เป็นเครื่องมือน้ำหนักเบาที่เทียบเท่ากับ /status สำหรับเซสชันปัจจุบันหรือเซสชันอื่นที่มองเห็นได้ เครื่องมือนี้รายงานการใช้งาน เวลา สถานะโมเดล/รันไทม์ และบริบทงานเบื้องหลังที่เชื่อมโยงอยู่เมื่อมี เช่นเดียวกับ /status เครื่องมือนี้สามารถเติมค่าตัวนับโทเค็น/แคชที่มีข้อมูลไม่ครบจากรายการการใช้งานล่าสุดในทรานสคริปต์ และ model=default จะล้างค่าที่เขียนทับเฉพาะเซสชัน ใช้ sessionKey="current" สำหรับเซสชันปัจจุบันของผู้เรียก ป้ายกำกับไคลเอนต์ที่มองเห็นได้ เช่น openclaw-tui ไม่ใช่คีย์เซสชัน
เมื่อมีเมทาดาทาเส้นทาง session_status จะรวมบล็อก JSON Route context ที่มองเห็นได้และฟิลด์แบบมีโครงสร้าง details ที่ตรงกันด้วย ฟิลด์เหล่านี้ช่วยแยกคีย์เซสชันออกจากเส้นทางที่กำลังจัดการการทำงานสดในขณะนี้อย่างชัดเจน:
originคือตำแหน่งที่สร้างเซสชัน หรือผู้ให้บริการที่อนุมานจากคำนำหน้าคีย์เซสชันที่ส่งมอบได้เมื่อสถานะเก่าไม่มีเมทาดาทาต้นทางที่จัดเก็บไว้activeคือเส้นทางการทำงานสดปัจจุบัน ระบบจะรายงานเฉพาะสำหรับเซสชันสดหรือเซสชันปัจจุบันที่กำลังจัดการอยู่ในขณะนี้เท่านั้นdeliveryContextคือเส้นทางการส่งมอบที่คงอยู่ซึ่งจัดเก็บไว้ในเซสชัน โดย OpenClaw สามารถนำกลับมาใช้ในการส่งมอบภายหลังได้ แม้ว่าพื้นผิวที่ใช้งานอยู่จะแตกต่างกัน
การเปลี่ยนแปลงสถานะเซสชัน
OpenClaw เก็บบันทึกสัญญาณแบบคงทนของการเปลี่ยนแปลงสถานะเซสชันที่สำคัญ (ข้อความจากมนุษย์โดยตรงถึงเซสชันที่เฝ้าดู ผลลัพธ์การทำงานของเซสชันลูก การเปลี่ยนแปลงเป้าหมาย Compaction) แถว sessions_list และ session_status เปิดเผย stateVersion ของเซสชัน และ session_status ยอมรับ changesSince: <version> เพื่อส่งคืนเหตุการณ์ที่มีชนิดหลังจากเวอร์ชันนั้น โดยมีการส่งสัญญาณ historyGap อย่างชัดเจนเมื่อเวอร์ชันที่ร้องขอเก่ากว่าประวัติที่เก็บรักษาไว้ ผู้เฝ้าดู — เซสชันแม่ที่สร้างเซสชันลูกโดยอัตโนมัติ และ sessions_send watch: true โดยชัดแจ้ง — จะได้รับการแจ้งเตือนสถานะล้าสมัยแบบรวมหนึ่งครั้งเมื่อผู้กระทำรายอื่นเปลี่ยนแปลงเซสชันที่เฝ้าดู
เหตุการณ์การเปลี่ยนแปลงสถานะจะละเว้น ID เซสชัน/เอเจนต์ที่ซ้ำกัน และเปิดเผยเฉพาะฟิลด์เพย์โหลดที่เป็นประโยชน์ต่อโมเดล (outcome, channel หรือ turns) สรุปเหตุการณ์และตัวระบุผู้กระทำ/การทำงานยังคงพร้อมใช้งานสำหรับการกระทบยอด
ดูโมเดลฉบับเต็มที่ การรับรู้สถานะเซสชัน: ชนิดเหตุการณ์ การลงทะเบียนผู้เฝ้าดู โปรโตคอลการแจ้งเตือนป้องกันสแปม ขั้นตอนการกระทบยอด และข้อจำกัดปัจจุบัน
sessions_yield จะจบเทิร์นปัจจุบันโดยตั้งใจ เพื่อให้ข้อความถัดไปเป็นเหตุการณ์ติดตามผลที่กำลังรออยู่ ใช้หลังจากสร้างเอเจนต์ย่อยเมื่อต้องการให้ผลลัพธ์การทำงานเสร็จสิ้นมาถึงเป็นข้อความถัดไป แทนการสร้างลูปสำรวจสถานะ
subagents คือมุมมองแบบต้นไม้ของเซสชันสำหรับการทำงานของเอเจนต์ย่อยแบบเนทีฟและบัญชีแยกประเภทงานเบื้องหลังที่ใช้ร่วมกัน action: "list" รายงานเอเจนต์ย่อยที่ใช้งานอยู่/ล่าสุด รวมถึงงาน ACP, CLI/สื่อ และ Cron ที่จำกัดขอบเขตไว้ action: "cancel" ยอมรับ taskId ที่ส่งคืนมา และสามารถหยุดได้เฉพาะงานภายในต้นไม้เซสชันที่ผู้เรียกควบคุมเท่านั้น เอเจนต์ย่อยปลายทางไม่สามารถยกเลิกงานของเซสชันอื่นได้
การสร้างเอเจนต์ย่อย
โดยค่าเริ่มต้น sessions_spawn จะสร้างเซสชันแยกสำหรับงานเบื้องหลัง โดยไม่บล็อกเสมอ และส่งคืน runId กับ childSessionKey ทันที การทำงานของเอเจนต์ย่อยแบบเนทีฟจะได้รับงานที่มอบหมายในข้อความ [Subagent Task] แรกที่มองเห็นได้ของเซสชันลูก ขณะที่พรอมต์ระบบมีเฉพาะกฎรันไทม์และบริบทการกำหนดเส้นทางของเอเจนต์ย่อย
ตัวเลือกสำคัญ:
runtime: "subagent"(ค่าเริ่มต้น) หรือ"acp"สำหรับเอเจนต์ของฮาร์เนสภายนอก- ค่าที่เขียนทับ
modelและthinkingสำหรับเซสชันลูก thread: trueเพื่อผูกการสร้างเข้ากับเธรดแชต (Discord, Slack เป็นต้น)sandbox: "require"เพื่อบังคับใช้แซนด์บ็อกซ์กับเซสชันลูกcontext: "fork"สำหรับเอเจนต์ย่อยแบบเนทีฟเมื่อเซสชันลูกต้องใช้ทรานสคริปต์ของผู้ร้องขอปัจจุบัน ให้ละเว้นหรือใช้context: "isolated"เพื่อสร้างเซสชันลูกเปล่าcontext: "fork"ใช้ได้เฉพาะกับruntime: "subagent"เท่านั้น เอเจนต์ย่อยแบบเนทีฟที่ผูกกับเธรดจะใช้context: "fork"โดยค่าเริ่มต้น เว้นแต่threadBindings.defaultSpawnContextจะระบุไว้เป็นอย่างอื่นvisible: trueเพื่อสร้างเซสชันแดชบอร์ดแบบคงอยู่แทนเซสชันเอเจนต์ย่อยที่ซ่อนอยู่ การสร้างเซสชันที่มองเห็นได้รองรับการระบุโมเดลอย่างชัดเจน ไดเรกทอรีทำงาน การฟอร์กทรานสคริปต์ของเอเจนต์เดียวกัน และ เวิร์กทรีที่มีการจัดการ ซึ่งเป็นตัวเลือก ดูข้อจำกัดด้านความเข้ากันได้ที่แน่นอนได้ใน เอเจนต์ย่อย
โดยค่าเริ่มต้น เอเจนต์ย่อยปลายทางจะไม่ได้รับเครื่องมือเซสชัน เมื่อ maxSpawnDepth >= 2 เอเจนต์ย่อยผู้ประสานงานระดับความลึก 1 จะได้รับ sessions_spawn, subagents, sessions_list และ sessions_history เพิ่มเติม เพื่อให้สามารถจัดการเซสชันลูกของตนเองได้ การทำงานปลายทางยังคงไม่ได้รับเครื่องมือการประสานงานแบบเรียกซ้ำ
หลังจากเสร็จสิ้น ขั้นตอนการประกาศจะโพสต์ผลลัพธ์ไปยังช่องทางของผู้ร้องขอ การส่งมอบเมื่อเสร็จสิ้นจะรักษาการกำหนดเส้นทางเธรด/หัวข้อที่ผูกไว้เมื่อมี และหากต้นทางของผลลัพธ์ที่เสร็จสิ้นระบุได้เพียงช่องทาง OpenClaw ยังคงสามารถนำเส้นทางที่จัดเก็บไว้ของเซสชันผู้ร้องขอ (lastChannel / lastTo) กลับมาใช้สำหรับการส่งมอบโดยตรงได้
สำหรับลักษณะการทำงานเฉพาะของ ACP โปรดดู เอเจนต์ ACP
การมองเห็น
เครื่องมือเซสชันถูกจำกัดขอบเขตเพื่อควบคุมสิ่งที่เอเจนต์มองเห็นได้:
| ระดับ | ขอบเขต |
|---|---|
self |
เฉพาะเซสชันปัจจุบัน |
tree |
เซสชันปัจจุบัน + เซสชันที่สร้างขึ้น การอ่านรวมถึงกลุ่มเอเจนต์เดียวกันที่เฝ้าดู |
agent |
เซสชันทั้งหมดของเอเจนต์นี้ |
all |
เซสชันทั้งหมด (ข้ามเอเจนต์หากกำหนดค่าไว้) |
ค่าเริ่มต้นคือ tree เซสชันที่อยู่ในแซนด์บ็อกซ์จะถูกจำกัดไว้ที่ tree โดยไม่คำนึงถึงการกำหนดค่า
เมื่อใช้ session.dmScope: "main" ซึ่งเป็นค่าเริ่มต้น กิจกรรมกลุ่มจะทำให้เซสชันกลุ่ม
ของเอเจนต์เดียวกันที่เฝ้าดูสามารถอ่านได้จากเซสชันหลัก
อ่านเพิ่มเติม
- การจัดการเซสชัน: การกำหนดเส้นทาง วงจรชีวิต การบำรุงรักษา
- เอเจนต์ย่อย: วงจรชีวิตและการส่งมอบของเซสชันลูก
- เอเจนต์ ACP: การสร้างฮาร์เนสภายนอก
- หลายเอเจนต์: สถาปัตยกรรมหลายเอเจนต์
- การกำหนดค่า Gateway: ตัวเลือกการกำหนดค่าเครื่องมือเซสชัน