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) เมื่อต้องการประวัติการแสดงผลแบบรวมดังกล่าว
มุมมองที่ส่งคืนถูกจำกัดขนาดและกรองเพื่อความปลอดภัยโดยตั้งใจ:
- ข้อความของผู้ช่วยจะถูกทำให้เป็นรูปแบบมาตรฐานก่อนเรียกคืน:
- แท็กการคิดจะถูกตัดออก
- บล็อกโครงสร้าง
<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 เพื่อเรียกคืนแบบเต็มข้อความอย่างแม่นยำจากข้อความบันทึกบทสนทนาของผู้ใช้และผู้ช่วยที่มองเห็น ผลลัพธ์จะมี 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 สามารถเรียกใช้ วงจรตอบกลับ ซึ่งเอเจนต์จะสลับกันส่งข้อความจนถึงขีดจำกัดในตัว เอเจนต์เป้าหมายสามารถตอบ 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: ตัวเลือกการกำหนดค่าของเครื่องมือเซสชัน