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

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

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

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

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

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

ความครอบคลุมของรายงานการทดลองเงา QA

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

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

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

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

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

การกวาดรวมเวิร์กสเปซรันไทม์หลักและเวิร์กสเปซเอเจนต์ที่กำหนดค่าไว้ใด ๆ โดยลบซ้ำตามพาธ ดังนั้นการกระจายเวิร์กสเปซของซับเอเจนต์จะไม่ทำให้ 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 * * *"          }        }      }    }  }}

คำสั่ง Slash

Code
/dreaming status/dreaming on/dreaming off/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

การแทนที่โมเดลซับเอเจนต์บันทึกความฝันแบบไม่บังคับ ใช้ค่า provider/model แบบแคนนอนิคัลเมื่อตั้งค่ารายการอนุญาต allowedModels ของซับเอเจนต์ด้วย

phases.deep.maxPromotedSnippetTokensnumberdefault: 160

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

UI Dreams

เมื่อเปิดใช้ แท็บ Dreams ของ 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