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:
{ session: { dmScope: "per-channel-peer", },}เมื่อใช้ขอบเขตแบบแยก ผู้ส่งแต่ละรายจะได้รับเซสชันของตนเอง การติดตามกลุ่ม
จากเซสชันหลักจะถูกปิดใช้งาน และการเรียกคืนหน่วยความจำข้ามบทสนทนา
จะปิดเป็นค่าเริ่มต้น openclaw security audit แนะนำให้แยกเซสชันเมื่อตรวจพบ
ผู้ส่ง DM หลายราย เมทริกซ์ขอบเขตทั้งหมด การเชื่อมโยงข้อมูลประจำตัว และการแทนที่
ต่อเส้นทางมีอธิบายไว้ใน การจัดการเซสชัน และ
การกำหนดเส้นทางช่องทาง
เนื้อหาที่เกี่ยวข้อง
- การจัดการเซสชัน — การกำหนดเส้นทาง ขอบเขต และการรีเซ็ต
- การกำหนดเส้นทางช่องทาง — วิธีเลือกเอเจนต์และเซสชัน
- หน่วยความจำ — ชั้นหน่วยความจำที่คงทน
- หลายเอเจนต์ — การเรียกใช้เอเจนต์ที่แยกจากกันหลายตัว