Sessions and memory

Dreaming

Dreaming คือระบบรวมหน่วยความจำพื้นหลังใน memory-core ซึ่งช่วยให้ OpenClaw ย้ายสัญญาณระยะสั้นที่มีน้ำหนักสูงเข้าสู่หน่วยความจำถาวร พร้อมคงให้กระบวนการอธิบายและตรวจทานได้

สิ่งที่ Dreaming เขียน

Dreaming เก็บผลลัพธ์ไว้สองชนิด:

  • สถานะของเครื่อง ใน memory/.dreams/ (ที่เก็บการเรียกคืน, สัญญาณระยะ, จุดตรวจการนำเข้า, ล็อก)
  • ผลลัพธ์ที่มนุษย์อ่านได้ ใน DREAMS.md (หรือ dreams.md ที่มีอยู่) และไฟล์รายงานระยะที่เลือกได้ภายใต้ memory/dreaming/<phase>/YYYY-MM-DD.md

การเลื่อนชั้นระยะยาวยังคงเขียนเฉพาะไปที่ MEMORY.md

โมเดลของระยะ

Dreaming ใช้สามระยะที่ทำงานร่วมกัน:

ระยะ วัตถุประสงค์ การเขียนแบบถาวร
Light จัดเรียงและเตรียมวัสดุระยะสั้นล่าสุด ไม่
Deep ให้คะแนนและเลื่อนชั้นผู้สมัครที่คงทน ใช่ (MEMORY.md)
REM สะท้อนธีมและแนวคิดที่เกิดซ้ำ ไม่

ระยะเหล่านี้เป็นรายละเอียดการทำงานภายใน ไม่ใช่ "โหมด" แยกต่างหากที่ผู้ใช้กำหนดค่า

ระยะ Light

ระยะ Light นำเข้าสัญญาณหน่วยความจำรายวันล่าสุดและร่องรอยการเรียกคืน ตัดรายการซ้ำ และเตรียมบรรทัดผู้สมัคร

  • อ่านจากสถานะการเรียกคืนระยะสั้น ไฟล์หน่วยความจำรายวันล่าสุด และทรานสคริปต์เซสชันที่ปกปิดข้อมูลแล้วเมื่อมี
  • เขียนบล็อก ## Light Sleep ที่มีการจัดการเมื่อที่เก็บข้อมูลรวมเอาต์พุตแบบอินไลน์
  • บันทึกสัญญาณเสริมแรงสำหรับการจัดอันดับ Deep ภายหลัง
  • ไม่เขียนไปที่ MEMORY.md
ระยะ Deep

ระยะ Deep ตัดสินใจว่าสิ่งใดจะกลายเป็นหน่วยความจำระยะยาว

  • จัดอันดับผู้สมัครด้วยการให้คะแนนแบบถ่วงน้ำหนักและเกตเกณฑ์
  • ต้องผ่าน minScore, minRecallCount และ minUniqueQueries
  • คืนสภาพสแนปเพ็ตจากไฟล์รายวันสดก่อนเขียน เพื่อข้ามสแนปเพ็ตที่ล้าสมัยหรือถูกลบ
  • เพิ่มรายการที่เลื่อนชั้นแล้วไปยัง MEMORY.md
  • เขียนสรุป ## Deep Sleep ลงใน DREAMS.md และเลือกเขียน memory/dreaming/deep/YYYY-MM-DD.md ได้
ระยะ REM

ระยะ REM สกัดรูปแบบและสัญญาณเชิงสะท้อน

  • สร้างสรุปธีมและการสะท้อนจากร่องรอยระยะสั้นล่าสุด
  • เขียนบล็อก ## REM Sleep ที่มีการจัดการเมื่อที่เก็บข้อมูลรวมเอาต์พุตแบบอินไลน์
  • บันทึกสัญญาณเสริมแรง REM ที่ใช้โดยการจัดอันดับ Deep
  • ไม่เขียนไปที่ MEMORY.md

การนำเข้าทรานสคริปต์เซสชัน

Dreaming สามารถนำเข้าทรานสคริปต์เซสชันที่ปกปิดข้อมูลแล้วเข้าสู่คอร์ปัส Dreaming ได้ เมื่อมีทรานสคริปต์ ทรานสคริปต์จะถูกป้อนเข้าสู่ระยะ Light ควบคู่กับสัญญาณหน่วยความจำรายวันและร่องรอยการเรียกคืน เนื้อหาส่วนบุคคลและละเอียดอ่อนจะถูกปกปิดก่อนนำเข้า

ไดอารี่ความฝัน

Dreaming ยังเก็บ ไดอารี่ความฝัน แบบเล่าเรื่องไว้ใน DREAMS.md หลังจากแต่ละระยะมีเนื้อหาเพียงพอ memory-core จะรันเทิร์น subagent พื้นหลังแบบพยายามอย่างดีที่สุดและเพิ่มรายการไดอารี่สั้น ๆ โดยใช้โมเดลรันไทม์เริ่มต้น เว้นแต่กำหนดค่า dreaming.model ไว้ หากโมเดลที่กำหนดค่าไม่พร้อมใช้งาน ไดอารี่ความฝันจะลองอีกครั้งหนึ่งด้วยโมเดลเริ่มต้นของเซสชัน

ยังมีเลนเติมย้อนหลังตามหลักฐานสำหรับงานตรวจทานและกู้คืน:

คำสั่งเติมย้อนหลัง
  • memory rem-harness --path ... --grounded แสดงตัวอย่างเอาต์พุตไดอารี่ตามหลักฐานจากบันทึกย้อนหลัง YYYY-MM-DD.md
  • memory rem-backfill --path ... เขียนรายการไดอารี่ตามหลักฐานที่ย้อนกลับได้ลงใน DREAMS.md
  • memory rem-backfill --path ... --stage-short-term เตรียมผู้สมัครแบบถาวรที่มีหลักฐานเข้าสู่ที่เก็บหลักฐานระยะสั้นเดียวกับที่ระยะ Deep ปกติใช้อยู่แล้ว
  • memory rem-backfill --rollback และ --rollback-short-term นำอาร์ทิแฟกต์เติมย้อนหลังที่เตรียมไว้ออกโดยไม่แตะรายการไดอารี่ทั่วไปหรือการเรียกคืนระยะสั้นสด

Control UI เปิดเผยโฟลว์เติมย้อนหลัง/รีเซ็ตไดอารี่เดียวกัน เพื่อให้คุณตรวจสอบผลลัพธ์ในซีนความฝันก่อนตัดสินใจว่าผู้สมัครที่มีหลักฐานควรได้รับการเลื่อนชั้นหรือไม่ ซีนยังแสดงเลนตามหลักฐานที่แยกชัดเจน เพื่อให้คุณเห็นว่ารายการระยะสั้นที่เตรียมไว้รายการใดมาจากการเล่นซ้ำย้อนหลัง รายการที่เลื่อนชั้นรายการใดนำโดยหลักฐาน และล้างเฉพาะรายการที่เตรียมไว้ซึ่งเป็นแบบมีหลักฐานเท่านั้นโดยไม่แตะสถานะระยะสั้นสดทั่วไป

สัญญาณการจัดอันดับ Deep

การจัดอันดับ Deep ใช้สัญญาณฐานแบบถ่วงน้ำหนักหกรายการบวกการเสริมแรงของระยะ:

สัญญาณ น้ำหนัก คำอธิบาย
ความถี่ 0.24 จำนวนสัญญาณระยะสั้นที่รายการสะสมไว้
ความเกี่ยวข้อง 0.30 คุณภาพการดึงคืนโดยเฉลี่ยของรายการ
ความหลากหลายของคำค้น 0.15 บริบทคำค้น/วันที่แตกต่างกันที่ทำให้รายการปรากฏ
ความใหม่ 0.15 คะแนนความสดใหม่ที่ลดค่าตามเวลา
การรวมความจำ 0.10 ความแรงของการเกิดซ้ำหลายวัน
ความมั่งคั่งเชิงแนวคิด 0.06 ความหนาแน่นของแท็กแนวคิดจากสแนปเพ็ต/พาธ

การพบในระยะ Light และ REM เพิ่มบูสต์เล็กน้อยที่ลดค่าตามความใหม่จาก memory/.dreams/phase-signals.json

ผลลัพธ์ shadow trial สามารถวางทับบนคะแนนฐานนั้นเป็นสัญญาณตรวจทาน ก่อนการเขียนแบบถาวรใด ๆ การทดลองที่มีประโยชน์ให้บูสต์เล็กน้อย แบบมีขอบเขตแก่ผู้สมัคร การทดลองที่เป็นกลางจะคงไว้ให้รอก่อน และการทดลองที่เป็นอันตรายจะทำเครื่องหมายว่า ถูกปฏิเสธสำหรับรอบการให้คะแนนนั้น สัญญาณนี้ยังคงเป็นแบบรายงานเท่านั้น: สามารถ เปลี่ยนลำดับผู้สมัครหรือเมตาดาต้าการตรวจทานได้ แต่จะไม่เขียนไปยัง MEMORY.md หรือเลื่อนชั้นผู้สมัครด้วยตัวเอง

ความครอบคลุมรายงาน shadow trial ของ QA

QA Lab มีสถานการณ์แบบรายงานเท่านั้นสำหรับสำรวจว่า shadow trial ของ Dreaming ในอนาคตอาจตรวจทานหน่วยความจำผู้สมัครก่อนเลื่อนชั้นอย่างไร สถานการณ์จะขอให้ เอเจนต์เปรียบเทียบคำตอบฐานกับคำตอบที่สามารถใช้หน่วยความจำผู้สมัคร แล้วเขียนรายงานภายในเครื่องพร้อมคำตัดสิน เหตุผล และแฟล็กความเสี่ยง

ความครอบคลุมนี้ตั้งใจจำกัดไว้ที่ QA โดยตรวจสอบว่าอาร์ทิแฟกต์รายงาน แยกจาก MEMORY.md และเอเจนต์ไม่อ้างว่าผู้สมัคร ถูกเลื่อนชั้นแล้ว สิ่งนี้ไม่ได้เพิ่มพฤติกรรม shadow-trial ในโปรดักชันหรือเปลี่ยน เอนจินการเลื่อนชั้นระยะ Deep

ตัวรัน shadow-trial ของ memory-core คงสัญญาแบบรายงานเท่านั้นเดียวกันนั้นไว้สำหรับ พาธโค้ดที่ต้องการอาร์ทิแฟกต์ที่เสถียร โดยรับผู้สมัคร พรอมป์ทดลอง ผลลัพธ์ฐาน ผลลัพธ์ผู้สมัคร คำตัดสิน เหตุผล แฟล็กความเสี่ยง และการอ้างอิง หลักฐาน จากนั้นเขียนรายงานด้วย promotion action: report-only คำตัดสินที่มีประโยชน์ แมปเป็นคำแนะนำ promote คำตัดสินที่เป็นกลางแมปเป็น defer และ คำตัดสินที่เป็นอันตรายแมปเป็น reject; ไม่มีคำแนะนำใดเขียนไปยัง MEMORY.md หรือใช้การเลื่อนชั้นระยะ Deep

การจัดกำหนดการ

เมื่อเปิดใช้ memory-core จะจัดการงาน Cron หนึ่งงานโดยอัตโนมัติสำหรับการกวาด Dreaming เต็มรูปแบบ การกวาดแต่ละครั้งรันระยะตามลำดับ: light → REM → deep

การกวาดรวมเวิร์กสเปซรันไทม์หลักและเวิร์กสเปซเอเจนต์ที่กำหนดค่าไว้ โดยตัดรายการซ้ำตามพาธ เพื่อให้การกระจายเวิร์กสเปซของ subagent ไม่ตัด DREAMS.md และสถานะหน่วยความจำของเอเจนต์หลักออก

พฤติกรรมจังหวะเริ่มต้น:

การตั้งค่า ค่าเริ่มต้น
dreaming.frequency 0 3 * * *
dreaming.model โมเดลเริ่มต้น

เริ่มต้นอย่างรวดเร็ว

เปิดใช้ Dreaming

json
{  "plugins": {    "entries": {      "memory-core": {        "config": {          "dreaming": {            "enabled": true          }        }      }    }  }}

จังหวะการกวาดแบบกำหนดเอง

json
{  "plugins": {    "entries": {      "memory-core": {        "config": {          "dreaming": {            "enabled": true,            "timezone": "America/Los_Angeles",            "frequency": "0 */6 * * *"          }        }      }    }  }}

คำสั่งสแลช

Code
/dreaming status/dreaming on/dreaming off/dreaming help

/dreaming on และ /dreaming off เปลี่ยนการกำหนดค่าทั่วทั้ง Gateway ผู้เรียกผ่านช่องทาง ต้องเป็นเจ้าของ และไคลเอนต์ Gateway ต้องมี operator.admin /dreaming status และ /dreaming help ยังคงเป็นแบบอ่านอย่างเดียว

เวิร์กโฟลว์ CLI

แสดงตัวอย่าง / ใช้การเลื่อนชั้น

bash
openclaw memory promoteopenclaw memory promote --applyopenclaw memory promote --limit 5openclaw memory status --deep

memory promote แบบแมนนวลใช้เกณฑ์ระยะ Deep เป็นค่าเริ่มต้น เว้นแต่ถูกเขียนทับด้วยแฟล็ก CLI

อธิบายการเลื่อนชั้น

อธิบายว่าทำไมผู้สมัครเฉพาะรายจึงจะเลื่อนชั้นหรือไม่เลื่อนชั้น:

bash
openclaw memory promote-explain "router vlan"openclaw memory promote-explain "router vlan" --json

ตัวอย่างฮาร์เนส REM

แสดงตัวอย่างการสะท้อน REM ความจริงของผู้สมัคร และเอาต์พุตการเลื่อนชั้น Deep โดยไม่เขียนสิ่งใด:

bash
openclaw memory rem-harnessopenclaw memory rem-harness --json

ค่าเริ่มต้นสำคัญ

การตั้งค่าทั้งหมดอยู่ภายใต้ plugins.entries.memory-core.config.dreaming

enabledbooleandefault: false

เปิดหรือปิดการกวาด Dreaming

frequencystringdefault: 0 3 * * *

จังหวะ Cron สำหรับการกวาด Dreaming เต็มรูปแบบ

modelstring

การเขียนทับโมเดล subagent ของไดอารี่ความฝันแบบเลือกได้ ใช้ค่า provider/model แบบบัญญัติเมื่อกำหนด allowlist ของ subagent allowedModels ด้วย

phases.deep.maxPromotedSnippetTokensnumberdefault: 160

จำนวนโทเค็นโดยประมาณสูงสุดที่เก็บจากแต่ละสแนปเพ็ตการเรียกคืนระยะสั้นที่เลื่อนชั้นเข้าสู่ MEMORY.md ที่มาของการจัดอันดับยังคงมองเห็นได้

UI ความฝัน

เมื่อเปิดใช้ แท็บ ความฝัน ของ Gateway จะแสดง:

  • สถานะเปิดใช้ Dreaming ปัจจุบัน
  • สถานะระดับระยะและการมีอยู่ของการกวาดที่มีการจัดการ
  • จำนวนระยะสั้น แบบมีหลักฐาน สัญญาณ และที่เลื่อนชั้นวันนี้
  • เวลารันตามกำหนดการครั้งถัดไป
  • เลนซีนแบบมีหลักฐานที่แยกชัดเจนสำหรับรายการเล่นซ้ำย้อนหลังที่เตรียมไว้
  • ตัวอ่านไดอารี่ความฝันแบบขยายได้ที่รองรับโดย doctor.memory.dreamDiary

Dreaming ไม่เคยรัน: สถานะแสดงว่าถูกบล็อก

หาก openclaw memory status รายงาน Dreaming status: blocked แสดงว่า Cron ที่มีการจัดการมีอยู่ แต่ Heartbeat ของเอเจนต์เริ่มต้นไม่ทำงาน ตรวจสอบว่า Heartbeat เปิดใช้สำหรับเอเจนต์เริ่มต้นและเป้าหมายไม่ใช่ none จากนั้นรัน openclaw memory status --deep อีกครั้งหลังช่วง Heartbeat ถัดไป

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

Was this useful?
On this page

On this page