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 phase
เฟส Light นำเข้าสัญญาณความจำรายวันล่าสุดและร่องรอยการเรียกคืน ขจัดข้อมูลซ้ำ และเตรียมบรรทัดตัวเลือก
- อ่านจากสถานะการเรียกคืนระยะสั้น, ไฟล์ความจำรายวันล่าสุด, และทรานสคริปต์เซสชันที่ปกปิดข้อมูลแล้วเมื่อมี
- เขียนบล็อก
## Light Sleepที่มีการจัดการเมื่อพื้นที่จัดเก็บรวมเอาต์พุตแบบอินไลน์ - บันทึกสัญญาณเสริมแรงสำหรับการจัดอันดับ Deep ภายหลัง
- ไม่เขียนไปยัง
MEMORY.md
Deep phase
เฟส Deep ตัดสินว่าสิ่งใดจะกลายเป็นความจำระยะยาว
- จัดอันดับตัวเลือกโดยใช้การให้คะแนนแบบถ่วงน้ำหนักและเกณฑ์ผ่าน
- ต้องผ่าน
minScore,minRecallCount, และminUniqueQueries - เติมข้อมูลส่วนย่อยกลับจากไฟล์รายวันสดก่อนเขียน เพื่อข้ามส่วนย่อยที่ล้าสมัยหรือถูกลบ
- เพิ่มรายการที่เลื่อนขั้นแล้วไปยัง
MEMORY.md - เขียนสรุป
## Deep SleepลงในDREAMS.mdและอาจเขียนmemory/dreaming/deep/YYYY-MM-DD.md
REM phase
เฟส REM แยกรูปแบบและสัญญาณเชิงสะท้อน
- สร้างสรุปธีมและการสะท้อนจากร่องรอยระยะสั้นล่าสุด
- เขียนบล็อก
## REM Sleepที่มีการจัดการเมื่อพื้นที่จัดเก็บรวมเอาต์พุตแบบอินไลน์ - บันทึกสัญญาณเสริมแรง REM ที่ใช้โดยการจัดอันดับ Deep
- ไม่เขียนไปยัง
MEMORY.md
การนำเข้าทรานสคริปต์เซสชัน
Dreaming สามารถนำเข้าทรานสคริปต์เซสชันที่ปกปิดข้อมูลแล้วเข้าสู่คลัง Dreaming ได้ เมื่อมีทรานสคริปต์ ทรานสคริปต์จะถูกป้อนเข้าเฟส Light พร้อมกับสัญญาณความจำรายวันและร่องรอยการเรียกคืน เนื้อหาส่วนบุคคลและละเอียดอ่อนจะถูกปกปิดก่อนนำเข้า
Dream Diary
Dreaming ยังเก็บ Dream Diary แบบบรรยายไว้ใน DREAMS.md ด้วย หลังจากแต่ละเฟสมีเนื้อหาเพียงพอ memory-core จะรันรอบ subagent เบื้องหลังแบบพยายามให้ดีที่สุด และเพิ่มรายการไดอารีสั้น ๆ ระบบใช้โมเดลรันไทม์เริ่มต้น เว้นแต่จะกำหนดค่า dreaming.model หากโมเดลที่กำหนดค่าไว้ใช้งานไม่ได้ Dream Diary จะลองใหม่หนึ่งครั้งด้วยโมเดลเริ่มต้นของเซสชัน
ยังมีเลนเติมข้อมูลย้อนหลังที่มีหลักฐานรองรับสำหรับงานตรวจทานและกู้คืน:
Backfill commands
memory rem-harness --path ... --groundedแสดงตัวอย่างเอาต์พุตไดอารีที่มีหลักฐานรองรับจากโน้ตYYYY-MM-DD.mdในอดีตmemory rem-backfill --path ...เขียนรายการไดอารีที่มีหลักฐานรองรับและย้อนกลับได้ลงในDREAMS.mdmemory rem-backfill --path ... --stage-short-termเตรียมตัวเลือกที่คงทนและมีหลักฐานรองรับเข้าสู่ที่เก็บหลักฐานระยะสั้นเดียวกับที่เฟส Deep ปกติใช้อยู่แล้วmemory rem-backfill --rollbackและ--rollback-short-termลบอาร์ติแฟกต์ backfill ที่เตรียมไว้เหล่านั้นโดยไม่แตะรายการไดอารีปกติหรือการเรียกคืนระยะสั้นสด
Control UI เปิดเผยโฟลว์ backfill/reset ของไดอารีแบบเดียวกัน เพื่อให้คุณตรวจสอบผลลัพธ์ในฉาก Dreams ก่อนตัดสินใจว่าตัวเลือกที่มีหลักฐานรองรับสมควรได้รับการเลื่อนขั้นหรือไม่ Scene ยังแสดงเลนที่มีหลักฐานรองรับแยกต่างหาก เพื่อให้คุณเห็นว่ารายการระยะสั้นที่เตรียมไว้ใดมาจากการเล่นซ้ำประวัติ รายการที่เลื่อนขั้นใดนำโดยหลักฐานรองรับ และล้างเฉพาะรายการที่เตรียมไว้แบบมีหลักฐานรองรับเท่านั้นโดยไม่แตะสถานะระยะสั้นสดปกติ
สัญญาณการจัดอันดับ Deep
การจัดอันดับ Deep ใช้สัญญาณฐานถ่วงน้ำหนักหกชนิดพร้อมการเสริมแรงตามเฟส:
| สัญญาณ | น้ำหนัก | คำอธิบาย |
|---|---|---|
| ความถี่ | 0.24 | จำนวนสัญญาณระยะสั้นที่รายการสะสมได้ |
| ความเกี่ยวข้อง | 0.30 | คุณภาพการดึงข้อมูลเฉลี่ยสำหรับรายการ |
| ความหลากหลายของคำค้น | 0.15 | บริบทคำค้น/วันที่แตกต่างกันที่ทำให้รายการปรากฏ |
| ความใหม่ | 0.15 | คะแนนความสดใหม่ที่ลดค่าตามเวลา |
| การรวมความจำ | 0.10 | ความแข็งแรงของการเกิดซ้ำหลายวัน |
| ความสมบูรณ์เชิงแนวคิด | 0.06 | ความหนาแน่นของแท็กแนวคิดจากส่วนย่อย/พาธ |
การพบในเฟส Light และ REM จะเพิ่มบูสต์เล็กน้อยที่ลดค่าตามความใหม่จาก memory/.dreams/phase-signals.json
การกำหนดเวลา
เมื่อเปิดใช้งาน memory-core จะจัดการงาน cron หนึ่งงานโดยอัตโนมัติสำหรับการกวาด Dreaming แบบเต็ม แต่ละการกวาดจะรันเฟสตามลำดับ: light → REM → deep
การกวาดรวม workspace รันไทม์หลักและ agent workspaces ที่กำหนดค่าไว้ โดยขจัดรายการซ้ำตามพาธ ดังนั้นการกระจาย workspace ของ subagent จะไม่ตัด DREAMS.md และสถานะความจำของ agent หลักออก
พฤติกรรมจังหวะเริ่มต้น:
| การตั้งค่า | ค่าเริ่มต้น |
|---|---|
dreaming.frequency |
0 3 * * * |
dreaming.model |
โมเดลเริ่มต้น |
เริ่มต้นอย่างรวดเร็ว
Enable dreaming
{
"plugins": {
"entries": {
"memory-core": {
"config": {
"dreaming": {
"enabled": true
}
}
}
}
}
}
Custom sweep cadence
{
"plugins": {
"entries": {
"memory-core": {
"config": {
"dreaming": {
"enabled": true,
"timezone": "America/Los_Angeles",
"frequency": "0 */6 * * *"
}
}
}
}
}
}
คำสั่ง Slash
/dreaming status
/dreaming on
/dreaming off
/dreaming help
เวิร์กโฟลว์ CLI
Promotion preview / apply
openclaw memory promote
openclaw memory promote --apply
openclaw memory promote --limit 5
openclaw memory status --deep
memory promote แบบแมนนวลใช้เกณฑ์ของเฟส Deep โดยค่าเริ่มต้น เว้นแต่จะถูกแทนที่ด้วยแฟล็ก CLI
Explain promotion
อธิบายว่าเหตุใดตัวเลือกเฉพาะจึงจะได้รับหรือไม่ได้รับการเลื่อนขั้น:
openclaw memory promote-explain "router vlan"
openclaw memory promote-explain "router vlan" --json
REM harness preview
แสดงตัวอย่างการสะท้อน REM, candidate truths, และเอาต์พุตการเลื่อนขั้น Deep โดยไม่เขียนสิ่งใด:
openclaw memory rem-harness
openclaw memory rem-harness --json
ค่าเริ่มต้นสำคัญ
การตั้งค่าทั้งหมดอยู่ภายใต้ plugins.entries.memory-core.config.dreaming
enabledbooleanเปิดหรือปิดการกวาด Dreaming
frequencystringจังหวะ Cron สำหรับการกวาด Dreaming แบบเต็ม
modelstringการแทนที่โมเดล subagent ของ Dream Diary แบบเสริม ใช้ค่า provider/model มาตรฐานเมื่อกำหนดรายการอนุญาต allowedModels ของ subagent ด้วย
UI Dreams
เมื่อเปิดใช้งาน แท็บ Dreams ของ Gateway จะแสดง:
- สถานะเปิดใช้งาน Dreaming ปัจจุบัน
- สถานะระดับเฟสและการมีอยู่ของ managed-sweep
- จำนวนระยะสั้น, มีหลักฐานรองรับ, สัญญาณ, และที่เลื่อนขั้นวันนี้
- เวลาของการรันตามกำหนดครั้งถัดไป
- เลน Scene ที่มีหลักฐานรองรับแยกต่างหากสำหรับรายการ replay ประวัติที่เตรียมไว้
- ตัวอ่าน Dream Diary ที่ขยายได้ ซึ่งรองรับโดย
doctor.memory.dreamDiary
Dreaming ไม่เคยรัน: สถานะแสดงว่าถูกบล็อก
หาก openclaw memory status รายงาน Dreaming status: blocked แสดงว่า cron ที่มีการจัดการมีอยู่ แต่ Heartbeat ของ agent เริ่มต้นไม่ทำงาน ตรวจสอบว่าเปิดใช้งาน Heartbeat สำหรับ agent เริ่มต้นแล้ว และ target ไม่ใช่ none จากนั้นรัน openclaw memory status --deep อีกครั้งหลังช่วง Heartbeat ถัดไป