Sessions and memory
Dreaming
Dreaming คือระบบรวมหน่วยความจำเบื้องหลังใน memory-core ระบบจะย้ายสัญญาณระยะสั้นที่มีความสำคัญไปยังหน่วยความจำถาวร พร้อมคงกระบวนการให้สามารถอธิบายและตรวจสอบได้
สิ่งที่ Dreaming เขียน
- สถานะของเครื่อง ใน
memory/.dreams/(พื้นที่จัดเก็บการเรียกคืน สัญญาณของเฟส จุดตรวจสอบการนำเข้าข้อมูล และล็อก) - ผลลัพธ์ที่มนุษย์อ่านได้ ใน
DREAMS.md(หรือdreams.mdที่มีอยู่) และไฟล์รายงานเฟสที่เลือกสร้างได้ภายใต้memory/dreaming/<phase>/YYYY-MM-DD.md
การเลื่อนระดับเป็นหน่วยความจำระยะยาวยังคงเขียนเฉพาะไปยัง MEMORY.md
โมเดลเฟส
Dreaming ทำงานเป็นสามเฟสที่ประสานกันต่อหนึ่งรอบ โดยเรียงตามลำดับ: เบา -> REM -> ลึก เฟสเหล่านี้เป็นเฟสการทำงานภายใน ไม่ใช่โหมดแยกที่ผู้ใช้กำหนดค่าได้
| เฟส | วัตถุประสงค์ | การเขียนแบบถาวร |
|---|---|---|
| เบา | จัดเรียงและพักข้อมูลระยะสั้นล่าสุด | ไม่ |
| REM | ทบทวนธีมและแนวคิดที่เกิดซ้ำ | ไม่ |
| ลึก | ให้คะแนนและเลื่อนระดับรายการที่เหมาะแก่การเก็บถาวร | ใช่ (MEMORY.md) |
เฟสเบา
- อ่านสถานะการเรียกคืนระยะสั้นล่าสุด ไฟล์หน่วยความจำรายวัน และบันทึกถอดความเซสชันที่ลบข้อมูลอ่อนไหวแล้วเมื่อมี
- ขจัดสัญญาณซ้ำและพักบรรทัดที่เป็นตัวเลือก
- เขียนบล็อก
## Light Sleepที่ระบบจัดการเมื่อพื้นที่จัดเก็บรวมผลลัพธ์แบบอินไลน์ - บันทึกสัญญาณการเสริมแรงสำหรับการจัดอันดับในเฟสลึกภายหลัง
- ไม่เขียนไปยัง
MEMORY.mdโดยเด็ดขาด
เฟส REM
- สร้างสรุปธีมและการทบทวนจากร่องรอยระยะสั้นล่าสุด
- เขียนบล็อก
## REM Sleepที่ระบบจัดการเมื่อพื้นที่จัดเก็บรวมผลลัพธ์แบบอินไลน์ - บันทึกสัญญาณการเสริมแรงจาก REM ที่ใช้ในการจัดอันดับเฟสลึก
- ไม่เขียนไปยัง
MEMORY.mdโดยเด็ดขาด
เฟสลึก
- จัดอันดับตัวเลือกด้วยการให้คะแนนแบบถ่วงน้ำหนักและเกณฑ์ขั้นต่ำ (
minScore,minRecallCount,minUniqueQueriesต้องผ่านทั้งหมด) - โหลดส่วนย่อยจากไฟล์รายวันที่ใช้งานอยู่ใหม่ก่อนเขียน เพื่อข้ามส่วนย่อยที่ล้าสมัยหรือถูกลบ
- เพิ่มรายการที่เลื่อนระดับแล้วต่อท้าย
MEMORY.md - เขียนสรุป
## Deep SleepลงในDREAMS.mdและเขียนลงในmemory/dreaming/deep/YYYY-MM-DD.mdได้ตามต้องการ
การนำเข้าบันทึกถอดความเซสชัน
Dreaming สามารถนำเข้าบันทึกถอดความเซสชันที่ลบข้อมูลอ่อนไหวแล้วเข้าสู่คลังข้อมูลของ Dreaming เมื่อมี บันทึกถอดความจะป้อนข้อมูลให้เฟสเบาร่วมกับสัญญาณหน่วยความจำรายวันและร่องรอยการเรียกคืน เนื้อหาส่วนบุคคลและเนื้อหาอ่อนไหวจะถูกลบก่อนนำเข้า
ไดอารีความฝัน
Dreaming เก็บ ไดอารีความฝัน แบบบรรยายไว้ใน DREAMS.md หลังจากแต่ละเฟสมีข้อมูลเพียงพอ memory-core จะเรียกใช้งาน subagent เบื้องหลังแบบพยายามให้ดีที่สุดและเพิ่มบันทึกไดอารีสั้น ๆ ต่อท้าย โดยใช้โมเดลรันไทม์เริ่มต้น เว้นแต่จะกำหนดค่า dreaming.model หากโมเดลที่กำหนดค่าไว้ไม่พร้อมใช้งาน การเรียกใช้ไดอารีจะลองอีกครั้งหนึ่งด้วยโมเดลเริ่มต้นของเซสชัน ส่วนความล้มเหลวด้านความเชื่อถือหรือรายการอนุญาตจะไม่ถูกลองซ้ำ และยังคงปรากฏในบันทึกแทนการย้อนกลับไปใช้รายการไดอารีทั่วไปโดยไม่แจ้งให้ทราบ
นอกจากนี้ยังมีช่องทางเติมข้อมูลย้อนหลังที่มีหลักฐานรองรับสำหรับงานตรวจสอบและกู้คืน:
คำสั่งเติมข้อมูลย้อนหลัง
memory rem-harness --path ... --groundedแสดงตัวอย่างผลลัพธ์ไดอารีที่มีหลักฐานรองรับจากบันทึกYYYY-MM-DD.mdในอดีตmemory rem-backfill --path ...เขียนรายการไดอารีที่มีหลักฐานรองรับและย้อนกลับได้ลงในDREAMS.mdmemory rem-backfill --path ... --stage-short-termพักตัวเลือกสำหรับการเก็บถาวรที่มีหลักฐานรองรับไว้ในพื้นที่จัดเก็บหลักฐานระยะสั้นเดียวกับที่เฟสลึกตามปกติใช้memory rem-backfill --rollbackและ--rollback-short-termลบอาร์ติแฟกต์การเติมข้อมูลย้อนหลังที่พักไว้เหล่านั้น โดยไม่แตะรายการไดอารีทั่วไปหรือการเรียกคืนระยะสั้นที่ใช้งานอยู่
Control UI เปิดให้ใช้ขั้นตอนเติมข้อมูลย้อนหลังและรีเซ็ตไดอารีแบบเดียวกันในแท็บหน่วยความจำของเอเจนต์ (หน้าเอเจนต์) เพื่อให้ตรวจสอบผลลัพธ์ในฉากความฝันได้ก่อนตัดสินใจว่าตัวเลือกที่มีหลักฐานรองรับสมควรได้รับการเลื่อนระดับหรือไม่ ช่องทางฉากที่มีหลักฐานรองรับซึ่งแยกต่างหากจะแสดงว่ารายการระยะสั้นใดที่พักไว้มาจากการเล่นประวัติย้อนหลัง รายการที่เลื่อนระดับใดมีข้อมูลที่มีหลักฐานรองรับเป็นปัจจัยหลัก และให้ล้างเฉพาะรายการที่พักไว้ซึ่งมีเฉพาะหลักฐานรองรับได้โดยไม่แตะสถานะระยะสั้นที่ใช้งานอยู่
สัญญาณการจัดอันดับเฟสลึก
การจัดอันดับเฟสลึกใช้สัญญาณพื้นฐานแบบถ่วงน้ำหนักหกรายการร่วมกับการเสริมแรงจากเฟส:
| สัญญาณ | น้ำหนัก | คำอธิบาย |
|---|---|---|
| ความเกี่ยวข้อง | 0.30 | คุณภาพการเรียกคืนโดยเฉลี่ยของรายการ |
| ความถี่ | 0.24 | จำนวนสัญญาณระยะสั้นที่รายการสะสมได้ |
| ความหลากหลายของคำค้น | 0.15 | บริบทคำค้น/วันที่แตกต่างกันซึ่งทำให้รายการปรากฏ |
| ความใหม่ | 0.15 | คะแนนความใหม่ที่ลดลงตามเวลา |
| การรวมหน่วยความจำ | 0.10 | ความแข็งแกร่งของการเกิดซ้ำหลายวัน |
| ความสมบูรณ์เชิงแนวคิด | 0.06 | ความหนาแน่นของแท็กแนวคิดจากส่วนย่อย/พาธ |
การพบข้อมูลในเฟสเบาและ REM จะเพิ่มคะแนนเล็กน้อยซึ่งลดลงตามความใหม่จาก memory/.dreams/phase-signals.json
ผลการทดลองเงาสามารถซ้อนทับคะแนนพื้นฐานในฐานะสัญญาณสำหรับการตรวจสอบก่อนการเขียนแบบถาวร: การทดลองที่เป็นประโยชน์จะเพิ่มคะแนนให้ตัวเลือกเล็กน้อยภายในขอบเขต การทดลองที่เป็นกลางจะคงสถานะเลื่อนการพิจารณาไว้ และการทดลองที่เป็นอันตรายจะทำเครื่องหมายว่าตัวเลือกถูกปฏิเสธสำหรับรอบการให้คะแนนนั้น สัญญาณนี้ใช้สำหรับรายงานเท่านั้น โดยสามารถเปลี่ยนลำดับตัวเลือกหรือข้อมูลเมตาการตรวจสอบได้ แต่จะไม่เขียนไปยัง MEMORY.md หรือเลื่อนระดับตัวเลือกด้วยตัวเองโดยเด็ดขาด
ความครอบคลุมของรายงานการทดลองเงาใน QA
QA Lab มีสถานการณ์ที่ใช้สำหรับรายงานเท่านั้นเพื่อสำรวจว่าการทดลองเงาของ Dreaming ในอนาคตอาจตรวจสอบหน่วยความจำตัวเลือกก่อนการเลื่อนระดับอย่างไร โดยเอเจนต์จะเปรียบเทียบคำตอบพื้นฐานกับคำตอบที่สามารถใช้หน่วยความจำตัวเลือก แล้วเขียนรายงานในเครื่องซึ่งประกอบด้วยคำตัดสิน เหตุผล และแฟล็กความเสี่ยง ความครอบคลุมนี้จำกัดอยู่ใน QA โดยตรวจสอบว่าอาร์ติแฟกต์รายงานยังคงแยกจาก MEMORY.md และเอเจนต์ไม่อ้างว่าตัวเลือกได้รับการเลื่อนระดับแล้ว การดำเนินการนี้ไม่ได้เพิ่มพฤติกรรมการทดลองเงาในระบบใช้งานจริงหรือเปลี่ยนกลไกการเลื่อนระดับของเฟสลึก
ตัวเรียกใช้การทดลองเงา memory-core คงสัญญารูปแบบใช้สำหรับรายงานเท่านั้นเช่นเดียวกันสำหรับพาธโค้ดที่ต้องการอาร์ติแฟกต์ที่เสถียร โดยรับตัวเลือก พรอมต์การทดลอง ผลลัพธ์พื้นฐาน ผลลัพธ์ของตัวเลือก คำตัดสิน เหตุผล แฟล็กความเสี่ยง และข้อมูลอ้างอิงหลักฐาน จากนั้นเขียนรายงานด้วย promotion action: report-only คำตัดสินที่เป็นประโยชน์จะแมปกับคำแนะนำ promote คำตัดสินที่เป็นกลางจะแมปกับ defer และคำตัดสินที่เป็นอันตรายจะแมปกับ reject โดยไม่มีรายการใดเขียนไปยัง MEMORY.md หรือใช้การเลื่อนระดับของเฟสลึก
การจัดกำหนดการ
เมื่อเปิดใช้งาน memory-core จะจัดการงาน Cron หนึ่งงานโดยอัตโนมัติสำหรับรอบ Dreaming แบบเต็ม พร้อมขจัดรายการซ้ำระหว่างพื้นที่ทำงานรันไทม์หลักกับพื้นที่ทำงานของเอเจนต์ที่กำหนดค่าไว้ เพื่อไม่ให้การกระจายพื้นที่ทำงานของ subagent ตัด DREAMS.md และสถานะหน่วยความจำของเอเจนต์หลักออก
| การตั้งค่า | ค่าเริ่มต้น |
|---|---|
dreaming.frequency |
0 3 * * * |
dreaming.model |
โมเดลเริ่มต้น |
เริ่มต้นอย่างรวดเร็ว
เปิดใช้ Dreaming
{ "plugins": { "entries": { "memory-core": { "config": { "dreaming": { "enabled": true } } } } }}กำหนดรอบการทำงานเอง
{ "plugins": { "entries": { "memory-core": { "config": { "dreaming": { "enabled": true, "timezone": "America/Los_Angeles", "frequency": "0 */6 * * *" } } } } }}คำสั่งเครื่องหมายทับ
/dreaming status/dreaming on/dreaming off/dreaming help/dreaming on และ /dreaming off กำหนดให้ผู้เรียกจากช่องทางต้องมีสถานะเจ้าของ หรือใช้ operator.admin สำหรับไคลเอนต์ Gateway ส่วน /dreaming status และ /dreaming help เป็นแบบอ่านอย่างเดียว
ขั้นตอนการทำงานของ CLI
แสดงตัวอย่าง / ใช้การเลื่อนระดับ
openclaw memory promoteopenclaw memory promote --applyopenclaw memory promote --limit 5openclaw memory status --deepmemory promote แบบดำเนินการเองจะใช้เกณฑ์ของเฟสลึกตามค่าเริ่มต้น เว้นแต่จะเขียนทับด้วยแฟล็ก CLI
อธิบายการเลื่อนระดับ
อธิบายว่าเหตุใดตัวเลือกหนึ่งจึงจะหรือจะไม่ได้รับการเลื่อนระดับ:
openclaw memory promote-explain "router vlan"openclaw memory promote-explain "router vlan" --jsonแสดงตัวอย่างชุดทดสอบ REM
แสดงตัวอย่างการทบทวนของ REM ข้อเท็จจริงตัวเลือก และผลลัพธ์การเลื่อนระดับของเฟสลึกโดยไม่เขียนข้อมูลใด ๆ:
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 มาตรฐานเมื่อกำหนดรายการอนุญาต allowedModels ของ subagent ด้วย
phases.deep.maxPromotedSnippetTokensnumberdefault: 160จำนวนโทเค็นโดยประมาณสูงสุดที่เก็บจากแต่ละส่วนย่อยการเรียกคืนระยะสั้นซึ่งเลื่อนระดับเข้าสู่ MEMORY.md ที่มาของการจัดอันดับยังคงมองเห็นได้
UI ความฝัน
เมื่อเปิดใช้งาน แท็บ ความฝัน ของ Gateway จะแสดง:
- สถานะเปิดใช้งาน Dreaming ปัจจุบัน
- สถานะระดับเฟสและการมีอยู่ของรอบที่ระบบจัดการ
- จำนวนรายการระยะสั้น รายการที่มีหลักฐานรองรับ สัญญาณ และรายการที่เลื่อนระดับวันนี้
- เวลาของการเรียกใช้ตามกำหนดการครั้งถัดไป
- ช่องทางฉากที่มีหลักฐานรองรับซึ่งแยกต่างหากสำหรับรายการเล่นประวัติย้อนหลังที่พักไว้
- ตัวอ่านไดอารีความฝันแบบขยายได้ซึ่งใช้ข้อมูลจาก
doctor.memory.dreamDiary