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" ซึ่งเป็นค่าเริ่มต้น กิจกรรมของกลุ่มจะทำให้เซสชันกลุ่ม ของเอเจนต์เดียวกันที่เฝ้าดูสามารถอ่านได้จากเซสชันหลัก

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

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

Was this useful?
On this page

On this page