Sessions and memory

เซสชันหลัก

OpenClaw คือเอเจนต์ส่วนตัวเป็นหลัก เมื่อพร้อมใช้งานทันที ทุกข้อความโดยตรงที่คุณ ส่งถึงเอเจนต์ — ไม่ว่าจะจาก Telegram, WhatsApp, iMessage, DM ของ Slack, เว็บแอป หรือที่ใดก็ตาม — จะรวมอยู่ใน บทสนทนาต่อเนื่องเดียว ซึ่งก็คือเซสชันหลัก ถามบางอย่างผ่าน โทรศัพท์ แล้วถามต่อจากแล็ปท็อป เอเจนต์ก็จะมีบริบทเดียวกันในทั้งสอง ที่ มีสมองเพียงหนึ่งเดียว และที่นี่คือพื้นที่ที่เอเจนต์ใช้คิด

ภายใต้ระบบ เซสชันหลักคือเซสชันทั่วไปที่มีคีย์ agent:<agentId>:main (ตัวอย่างเช่น agent:main:main) สิ่งที่ทำให้เซสชันนี้พิเศษ คือขอบเขต DM เริ่มต้นจะรวมข้อความโดยตรงทั้งหมดไว้ในเซสชันนี้ และ ส่วนอื่นของระบบจะถือว่าเซสชันนี้เป็นรากของเอเจนต์: Heartbeat จะปลุกเซสชันนี้ งานเบื้องหลังจะรายงานกลับมายังเซสชันนี้ และกิจกรรมจากที่อื่นจะไหลมารวมที่นี่

หน้าหลัก

ในเว็บแอป เซสชันหลักคือหน้า หน้าหลัก ซึ่งเป็นรายการแรกใน แถบด้านข้าง แถวข้อมูลประจำตัวด้านบนคือเอเจนต์ของคุณ (คลิกเพื่อเปิดเมนู เอเจนต์) ส่วนหน้าหลักคือที่ที่คุณสนทนากับเอเจนต์ เซสชันที่แยกแขนงจากบทสนทนา หลักจะปรากฏใต้ เธรด แชตกลุ่มจะอยู่ใต้ กลุ่ม และ เซสชันการเขียนโค้ด/CLI จะอยู่ใต้ การเขียนโค้ด

สิ่งที่ไหลเข้าสู่เซสชันหลัก

เซสชันหลักไม่ได้เป็นเพียงบันทึกการแชต แต่เป็นพื้นที่ที่โลกของเอเจนต์ มาบรรจบกัน:

  • กิจกรรมกลุ่ม เซสชันกลุ่มและห้องจะยังคงแยกจากกัน (ดูด้านล่าง) แต่ ภายใต้ขอบเขต DM เริ่มต้น เซสชันหลักจะติดตามเซสชันเหล่านั้นโดยอัตโนมัติ กิจกรรมจะเข้าคิวเป็นการแจ้งเตือนแบบกระชับ โดยรวมต่อบทสนทนาและไม่ ปลุกหนึ่งครั้งต่อหนึ่งข้อความ และเอเจนต์จะเห็นกิจกรรมเหล่านี้ในครั้งถัดไปที่ทำงาน: เมื่อ คุณส่งข้อความถัดไปหรือเมื่อถึง Heartbeat ตามกำหนดการ เอเจนต์ยังสามารถอ่าน เซสชันที่ติดตามได้ด้วย ดังนั้นคำถามว่า "ฉันพลาดอะไรในกลุ่มครอบครัวไปบ้าง?" จึงใช้งานได้
  • งานเบื้องหลัง เอเจนต์ย่อยและเซสชันที่สร้างขึ้นจะประกาศผลลัพธ์ กลับไปยังเซสชันที่เริ่มต้นงาน ดังนั้นงานที่เอเจนต์เริ่มจาก หน้าหลักจะรายงานกลับไปยังหน้าหลัก
  • Heartbeat Heartbeat ตามกำหนดการจะกำหนดเป้าหมายไปยังเซสชันหลัก ซึ่งเป็นสิ่งที่ เปลี่ยนการแจ้งเตือนในคิวให้กลายเป็นการรับรู้ แม้ว่าคุณจะยังไม่ได้เขียนอะไรเลย

หน่วยความจำระหว่างการรีเซ็ตและบทสนทนา

บทสนทนาต่อเนื่องถูกจำกัดด้วยหน้าต่างบริบทของโมเดล ดังนั้น ความต่อเนื่องจึงมาจากชั้นต่าง ๆ ที่อยู่รอบบทสนทนา:

  • MEMORY.md ซึ่งเป็นหน่วยความจำระยะยาวที่เอเจนต์คัดสรร จะถูกโหลดเข้าไปในทุก เซสชันใหม่ บันทึกรายวัน (memory/YYYY-MM-DD.md) สามารถค้นหาได้เมื่อต้องการ และบันทึกล่าสุดจะถูกป้อนกลับเป็นบริบทอีกครั้งหลัง /new หรือ /reset ก่อน Compaction เอเจนต์จะบันทึกข้อเท็จจริงที่ต้องเก็บถาวรลงในบันทึกรายวัน เพื่อให้บทสนทนา ที่ยาวนานไม่ทำให้ข้อมูลเหล่านั้นสูญหายไปโดยไม่มีการแจ้งเตือน
  • การเรียกคืนหน่วยความจำข้ามบทสนทนา ช่วยให้เอเจนต์เรียกคืนเนื้อหาจาก เซสชันส่วนตัวอื่น ๆ ได้ ในการตั้งค่าส่วนบุคคล — เมื่อ session.dmScope ส่วนกลางแปลงค่าเป็น main โดยไม่มีการแทนที่ DM รายการเชื่อมโยง — คุณลักษณะนี้ จะเปิดใช้งานโดยค่าเริ่มต้น ส่วนการแยก DM ใด ๆ ที่กำหนดค่าไว้จะปิดคุณลักษณะนี้ เว้นแต่คุณ จะเลือกเปิดใช้อย่างชัดเจน ดู การกำหนดค่าหน่วยความจำ

เซสชันต่อเนื่องพร้อมประวัติที่คงทน

เซสชันหลักจะดำเนินต่อไปผ่านการรีเซ็ตและ Compaction แทนที่จะ ให้โมเดลแบกรับประวัติทั้งหมดพร้อมกัน:

  • โดยค่าเริ่มต้นจะไม่มีการรีเซ็ตอัตโนมัติ Compaction จะจำกัดบริบทที่ใช้งาน พร้อมรักษาเซสชันต่อเนื่องไว้ การรีเซ็ตรายวันและเมื่อไม่มีการใช้งาน ต้องเลือกเปิดใช้ (ดู การจัดการเซสชัน) เมื่อใช้ /new และ /reset ส่วนท้ายของบทสนทนาที่สิ้นสุดจะถูกบันทึกลงในบันทึกหน่วยความจำรายวัน และ เซสชันถัดไปจะป้อนบันทึกล่าสุดกลับเป็นบริบทอีกครั้ง การรีเซ็ตจะกำหนด ID เซสชันที่ใช้งานใหม่ แต่ ยังคงให้ค้นหาทรานสคริปต์ SQLite ก่อนหน้าได้ภายใต้คีย์เซสชันหลัก เดิม
  • เมื่อบทสนทนาเข้าใกล้ขีดจำกัดหน้าต่างบริบท Compaction จะสรุป และดำเนินต่อในที่เดิม โดยประวัติทรานสคริปต์จะยังคงอยู่ในพื้นที่จัดเก็บเซสชัน
  • รายการเซสชันจะแสดงบทสนทนาที่ใช้งานอยู่ในปัจจุบัน ไม่ใช่ ID เซสชัน ในอดีตทั้งหมดที่อยู่เบื้องหลัง
  • เมื่อฐานข้อมูลจริง, WAL และอาร์ติแฟกต์เซสชัน ของพื้นที่จัดเก็บต่อเอเจนต์มีขนาดเกินงบประมาณดิสก์ (ค่าเริ่มต้น 10 GB) OpenClaw จะสกัดประวัติ ที่เก่าที่สุดซึ่งไม่มีการอ้างอิงไปยังไฟล์เก็บถาวรแบบบีบอัดที่ผ่านการตรวจสอบ ก่อนลบแถว ในฐานข้อมูล เซสชันที่ใช้งานอยู่ มีการกำหนดเส้นทาง และอยู่ระหว่างดำเนินการจะไม่ถูกลบเพราะข้อจำกัดงบประมาณ

เมื่อต้องการแยกเซสชัน

เซสชันหลักที่ใช้ร่วมกันเป็นค่าเริ่มต้นที่เหมาะสมสำหรับเอเจนต์ที่มีเพียงคุณเท่านั้นที่ สนทนาด้วย หากมีหลายคนส่งข้อความถึงเอเจนต์ได้ ให้แยก DM:

json5
{  session: {    dmScope: "per-channel-peer",  },}

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

เนื้อหาที่เกี่ยวข้อง

Was this useful?
On this page

On this page