Sessions and memory

ภาพรวมหน่วยความจำ

OpenClaw จดจำสิ่งต่าง ๆ โดยเขียนลงในไฟล์ Markdown แบบข้อความธรรมดาภายใน พื้นที่ทำงานของเอเจนต์ (ค่าเริ่มต้นคือ ~/.openclaw/workspace) โมเดลจะจดจำเฉพาะสิ่งที่ บันทึกลงดิสก์เท่านั้น โดยไม่มีสถานะที่ซ่อนอยู่

วิธีการทำงาน

เอเจนต์ของคุณมีไฟล์ที่เกี่ยวข้องกับหน่วยความจำสามไฟล์:

  • MEMORY.md — หน่วยความจำระยะยาว ประกอบด้วยข้อเท็จจริงที่คงทน ค่ากำหนด และ การตัดสินใจ โดยจะโหลดเมื่อเริ่มเซสชัน
  • memory/YYYY-MM-DD.md (หรือ memory/YYYY-MM-DD-<slug>.md) — บันทึกประจำวัน ประกอบด้วยบริบทต่อเนื่องและข้อสังเกต บันทึกที่ระบุวันที่ของวันนี้และเมื่อวานจะโหลด โดยอัตโนมัติเมื่อใช้ /new หรือ /reset แบบไม่มีอาร์กิวเมนต์ ส่วนไฟล์รูปแบบที่มี slug เช่น ไฟล์ที่เขียนโดย hook หน่วยความจำเซสชันที่รวมมาให้ จะถูกโหลดควบคู่กับ ไฟล์ที่มีเฉพาะวันที่
  • DREAMS.md (ไม่บังคับ) — บันทึก Dream Diary และสรุปการกวาดข้อมูลจาก Dreaming สำหรับให้มนุษย์ตรวจสอบ รวมถึงรายการเติมข้อมูลย้อนหลังที่อ้างอิงหลักฐานทางประวัติศาสตร์

ข้อมูลแต่ละประเภทควรอยู่ที่ใด

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

ไฟล์ memory/YYYY-MM-DD.md คือชั้นข้อมูลสำหรับการทำงาน ซึ่งประกอบด้วยบันทึกประจำวันโดยละเอียด ข้อสังเกต สรุปเซสชัน และบริบทดิบที่อาจยังมีประโยชน์ ในภายหลัง ไฟล์เหล่านี้จะถูกจัดทำดัชนีสำหรับ memory_search และ memory_get แต่จะไม่ถูก แทรกลงในพรอมต์เริ่มต้นทุกครั้งที่มีการโต้ตอบ

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

หาก MEMORY.md มีขนาดเกินงบประมาณของไฟล์เริ่มต้น OpenClaw จะเก็บไฟล์ต้นฉบับบน ดิสก์ไว้อย่างครบถ้วน แต่จะตัดทอนสำเนาที่แทรกลงในบริบท ให้ถือว่านี่เป็น สัญญาณว่าควรย้ายเนื้อหาโดยละเอียดไปไว้ใน memory/*.md เก็บเฉพาะ สรุปที่คงทนไว้ใน MEMORY.md หรือเพิ่มขีดจำกัดของข้อมูลเริ่มต้นหากคุณต้องการใช้ งบประมาณพรอมต์มากขึ้น ใช้ /context list, /context detail หรือ openclaw doctor เพื่อ ดูขนาดข้อมูลดิบเทียบกับขนาดที่แทรก และสถานะการตัดทอน

หน่วยความจำที่มีผลต่อการดำเนินการ

หน่วยความจำส่วนใหญ่เป็นบันทึก Markdown ทั่วไป แต่บางรายการมีผลต่อสิ่งที่เอเจนต์ควร ทำในภายหลัง สำหรับรายการเหล่านั้น ให้บันทึกด้วยว่าเมื่อใดจึงปลอดภัยที่จะดำเนินการตามบันทึก ไม่ใช่เพียง ข้อเท็จจริงเท่านั้น

ให้บันทึกขอบเขตการดำเนินการดังกล่าวเมื่อบันทึกเกี่ยวข้องกับ:

  • ข้อกำหนดด้านการอนุมัติหรือการอนุญาต
  • ข้อจำกัดชั่วคราว
  • การส่งต่องานไปยังเซสชัน เธรด หรือบุคคลอื่น
  • เงื่อนไขการหมดอายุ
  • ช่วงเวลาที่ปลอดภัยต่อการดำเนินการ
  • อำนาจของแหล่งข้อมูลหรือเจ้าของ
  • คำสั่งให้หลีกเลี่ยงการดำเนินการที่อาจน่าทำ

หน่วยความจำที่มีผลต่อการดำเนินการซึ่งมีประโยชน์ควรระบุให้ชัดเจนว่า:

  • สิ่งใดเปลี่ยนแปลงพฤติกรรมในอนาคต
  • มีผลเมื่อใดหรือภายใต้เงื่อนไขใด
  • หมดอายุเมื่อใด หรือสิ่งใดปลดล็อกให้ดำเนินการได้
  • เอเจนต์ควรหลีกเลี่ยงการทำสิ่งใด
  • ใครคือแหล่งข้อมูลหรือเจ้าของ หากมีผลต่อความน่าเชื่อถือหรืออำนาจ

หน่วยความจำสามารถเก็บรักษาบริบทการอนุมัติไว้ได้ แต่ไม่ได้บังคับใช้นโยบาย ให้ใช้ การตั้งค่าการอนุมัติของ OpenClaw การแยกทำงานในแซนด์บ็อกซ์ และงานตามกำหนดเวลาสำหรับการควบคุม การปฏิบัติงานที่ต้องบังคับใช้อย่างเคร่งครัด

ตัวอย่าง:

md
The API migration is being designed in another session. Future turns shouldnot edit the API implementation from this thread; use findings here only asdesign input until the migration plan lands.

อีกตัวอย่างหนึ่ง:

md
A report from an untrusted source needs review before promotion. Future turnsshould treat it as evidence only; do not store it as durable memory until atrusted reviewer confirms the contents.

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

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

ข้อผูกพันที่อนุมานขึ้น

การติดตามผลในอนาคตบางอย่างไม่ใช่ข้อเท็จจริงที่คงทน หากคุณกล่าวถึงการสัมภาษณ์ ในวันพรุ่งนี้ หน่วยความจำที่มีประโยชน์อาจเป็น "ติดตามผลหลังการสัมภาษณ์" ไม่ใช่ "เก็บ สิ่งนี้ไว้ตลอดไปใน MEMORY.md"

ข้อผูกพัน คือหน่วยความจำสำหรับการติดตามผลระยะสั้นแบบเลือกใช้ สำหรับกรณีดังกล่าว OpenClaw จะอนุมานข้อมูลเหล่านี้ในกระบวนการเบื้องหลังที่ซ่อนอยู่ จำกัดขอบเขตไว้ที่เอเจนต์และช่องทางเดียวกัน และส่งการติดตามผลเมื่อถึงกำหนดผ่าน Heartbeat ส่วนการแจ้งเตือนที่ระบุไว้อย่างชัดเจนยังคงใช้ งานตามกำหนดเวลา

เครื่องมือหน่วยความจำ

เอเจนต์มีเครื่องมือสองรายการสำหรับทำงานกับหน่วยความจำ:

  • memory_search — ค้นหาบันทึกที่เกี่ยวข้องด้วยการค้นหาเชิงความหมาย แม้ว่า ถ้อยคำจะแตกต่างจากต้นฉบับ
  • memory_get — อ่านไฟล์หน่วยความจำหรือช่วงบรรทัดที่ระบุ

เครื่องมือทั้งสองมาจาก Plugin หน่วยความจำที่ใช้งานอยู่ (ค่าเริ่มต้นคือ memory-core)

การค้นหาหน่วยความจำ

เมื่อกำหนดค่าผู้ให้บริการเวกเตอร์ฝังแล้ว memory_search จะใช้การค้นหาแบบผสม: ความคล้ายคลึงของเวกเตอร์ (ความหมายเชิงอรรถศาสตร์) ร่วมกับการจับคู่คำสำคัญ (คำที่ตรงกัน ทุกประการ เช่น ID และสัญลักษณ์ในโค้ด) วิธีนี้พร้อมใช้งานได้ทันทีด้วยคีย์ API ของผู้ให้บริการที่รองรับรายใดก็ได้

ดู การค้นหาหน่วยความจำ เพื่อศึกษาวิธีการทำงานของการค้นหา ตัวเลือก การปรับแต่ง และการตั้งค่าผู้ให้บริการ

แบ็กเอนด์หน่วยความจำ

ในตัว (ค่าเริ่มต้น)

ใช้ SQLite พร้อมใช้งานได้ทันทีด้วยการค้นหาคำสำคัญ ความคล้ายคลึงของเวกเตอร์ และ การค้นหาแบบผสม โดยไม่ต้องมีการขึ้นต่อกันเพิ่มเติม

QMD

ส่วนประกอบข้างเคียงที่เน้นการทำงานภายในเครื่อง พร้อมการจัดอันดับใหม่ การขยายคำค้น และความสามารถในการจัดทำดัชนี ไดเรกทอรีภายนอกพื้นที่ทำงาน

Honcho

หน่วยความจำข้ามเซสชันที่ออกแบบมาสำหรับ AI พร้อมการสร้างแบบจำลองผู้ใช้ การค้นหาเชิงความหมาย และ การรับรู้หลายเอเจนต์ ต้องติดตั้ง Plugin

LanceDB

หน่วยความจำที่ใช้ LanceDB พร้อมเวกเตอร์ฝังที่เข้ากันได้กับ OpenAI การเรียกคืนอัตโนมัติ การบันทึกอัตโนมัติ และการรองรับเวกเตอร์ฝังจาก Ollama ภายในเครื่อง ต้องติดตั้ง Plugin

ชั้นวิกิความรู้

หากต้องการให้หน่วยความจำที่คงทนทำงานคล้ายฐานความรู้ที่ได้รับการดูแล มากกว่าบันทึกดิบ ให้ใช้ Plugin memory-wiki ที่รวมมาให้ Plugin นี้จะคอมไพล์ความรู้ที่คงทน เป็นคลังวิกิที่มีโครงสร้างหน้ากำหนดแน่นอน ข้อกล่าวอ้างและหลักฐานแบบมีโครงสร้าง การติดตาม ข้อขัดแย้งและความใหม่ แดชบอร์ดที่สร้างขึ้น บทสรุปที่คอมไพล์แล้ว และเครื่องมือสำหรับวิกิโดยเฉพาะ (wiki_status, wiki_search, wiki_get, wiki_apply, wiki_lint)

memory-wiki ไม่ได้แทนที่ Plugin หน่วยความจำที่ใช้งานอยู่ โดย Plugin หน่วยความจำที่ใช้งานอยู่ ยังคงเป็นเจ้าของการเรียกคืน การเลื่อนระดับ และ Dreaming ส่วน memory-wiki จะเพิ่ม ชั้นความรู้ที่อุดมด้วยข้อมูลแหล่งที่มาไว้ข้างกัน

การถ่ายข้อมูลหน่วยความจำอัตโนมัติ

ก่อนที่ Compaction จะสรุปการสนทนา OpenClaw จะดำเนินการโต้ตอบแบบเงียบหนึ่งครั้งเพื่อเตือนให้เอเจนต์บันทึกบริบทสำคัญ ลงในไฟล์หน่วยความจำ ความสามารถนี้เปิดใช้งานเป็นค่าเริ่มต้น ตั้งค่า agents.defaults.compaction.memoryFlush.enabled: false เพื่อปิดใช้งาน

หากต้องการให้รอบการดูแลดังกล่าวทำงานด้วยโมเดลภายในเครื่อง ให้กำหนดค่าทับที่เจาะจง และมีผลเฉพาะรอบถ่ายข้อมูลหน่วยความจำเท่านั้น (รอบนี้จะไม่สืบทอดลำดับโมเดลสำรองของ เซสชันที่ใช้งานอยู่):

json
{  "agents": {    "defaults": {      "compaction": {        "memoryFlush": {          "model": "ollama/qwen3:8b"        }      }    }  }}

Dreaming

Dreaming คือกระบวนการรวบรวมหน่วยความจำเบื้องหลังแบบเลือกใช้ ซึ่งจะรวบรวม สัญญาณการเรียกคืนระยะสั้น ให้คะแนนรายการที่เป็นไปได้ และเลื่อนระดับเฉพาะรายการที่ผ่านเกณฑ์ ไปยังหน่วยความจำระยะยาว (MEMORY.md):

  • เลือกใช้: ปิดใช้งานเป็นค่าเริ่มต้น
  • ตามกำหนดเวลา: เมื่อเปิดใช้งาน memory-core จะจัดการงาน Cron ที่เกิดซ้ำหนึ่งงาน โดยอัตโนมัติสำหรับการกวาดข้อมูล Dreaming แบบเต็มรูปแบบ
  • มีเกณฑ์ขั้นต่ำ: การเลื่อนระดับต้องผ่านเกณฑ์คะแนน ความถี่ในการเรียกคืน และ ความหลากหลายของคำค้น
  • ตรวจสอบได้: สรุปแต่ละระยะและรายการบันทึกจะถูกเขียนลงใน DREAMS.md เพื่อให้มนุษย์ตรวจสอบ

ดู Dreaming สำหรับพฤติกรรมแต่ละระยะ สัญญาณการให้คะแนน และ รายละเอียด Dream Diary

การเติมข้อมูลย้อนหลังที่อ้างอิงหลักฐานและการเลื่อนระดับแบบสด

ระบบ Dreaming มีช่องทางการตรวจสอบที่เกี่ยวข้องกันสองช่องทาง:

  • Dreaming แบบสด ทำงานจากที่เก็บ Dreaming ระยะสั้นภายใต้ memory/.dreams/ และเป็นช่องทางที่ระยะเชิงลึกตามปกติใช้ตัดสินใจว่าอะไร จะผ่านเข้าสู่ MEMORY.md
  • การเติมข้อมูลย้อนหลังที่อ้างอิงหลักฐาน อ่านบันทึก memory/YYYY-MM-DD.md ในอดีตเป็น ไฟล์รายวันแบบแยกเดี่ยว และเขียนผลการตรวจสอบแบบมีโครงสร้างลงใน DREAMS.md

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

bash
openclaw memory rem-backfill --path ./memory --stage-short-term

แฟล็ก --stage-short-term จะจัดเตรียมรายการที่คงทนและอ้างอิงหลักฐานไว้ในที่เก็บ Dreaming ระยะสั้นเดียวกับที่ระยะเชิงลึกตามปกติใช้อยู่แล้ว โดยจะไม่ เลื่อนระดับรายการเหล่านั้นโดยตรง ดังนั้น:

  • DREAMS.md ยังคงเป็นพื้นที่สำหรับการตรวจสอบโดยมนุษย์
  • ที่เก็บระยะสั้นยังคงเป็นพื้นที่จัดอันดับสำหรับระบบ
  • MEMORY.md ยังคงถูกเขียนโดยการเลื่อนระดับเชิงลึกเท่านั้น

หากต้องการย้อนการเล่นซ้ำโดยไม่แตะต้องรายการบันทึกทั่วไปหรือสถานะการเรียกคืน ตามปกติ:

bash
openclaw memory rem-backfill --rollbackopenclaw memory rem-backfill --rollback-short-term

CLI

bash
openclaw memory status          # Check index status and provideropenclaw memory search "query"  # Search from the command lineopenclaw memory index --force   # Rebuild the index

อ่านเพิ่มเติม

Was this useful?
On this page

On this page