Clawdbot จัดการความทรงจำอย่างไร: สถาปัตยกรรมหน่วยความจำแบบไฮบริดบนพื้นฐาน Markdown
(manthanguptaa.in)สรุป:
- Clawdbot เป็นผู้ช่วย AI แบบโลคัลโอเพนซอร์ส ที่จัดเก็บและบริหารความทรงจำระยะยาวของผู้ใช้ในรูปแบบไฟล์ Markdown ภายในสภาพแวดล้อมโลคัลของผู้ใช้ โดยไม่ต้องพึ่งพาคลาวด์
- ด้วยระบบหน่วยความจำ 2 ชั้น (บันทึกรายวันและองค์ความรู้ระยะยาว) และการค้นหาแบบไฮบริด (เวกเตอร์ + คีย์เวิร์ด) จึงสามารถดึงคืนข้อมูลได้อย่างมีประสิทธิภาพแม้ในคอนเท็กซ์ขนาดใหญ่
- เพื่อก้าวข้ามข้อจำกัดของ context window ระบบใช้เทคนิค 'Compaction' และ 'Pruning' เพื่อให้ได้ทั้งการปรับต้นทุนให้เหมาะสมและการคงประสิทธิภาพไว้พร้อมกัน
สรุปโดยละเอียด:
-
ภาพรวมและปรัชญาการออกแบบ
Clawdbot จัดการความทรงจำทั้งหมดเป็นไฟล์ Markdown ภายใน workspace โลคัล เพื่อคืนความเป็นเจ้าของข้อมูลให้กับผู้ใช้ โดยยึดความโปร่งใส (Transparency) เป็นคุณค่าหลัก จึงออกแบบให้ผู้ใช้สามารถอ่าน แก้ไข และจัดการเวอร์ชันของไฟล์หน่วยความจำได้โดยตรง -
โครงสร้างหน่วยความจำ 2 ชั้น
หน่วยความจำแบ่งออกเป็น 2 เลเยอร์หลัก:
- Layer 1 (Daily Logs): บันทึกสรุปบทสนทนาของวันนั้น ข้อสรุปการตัดสินใจ และความชอบของผู้ใช้ไว้ในไฟล์
memory/YYYY-MM-DD.md - Layer 2 (Long-term Knowledge): เก็บข้อเท็จจริงสำคัญที่ต้องคงอยู่ข้ามหลายเซสชัน ข้อสรุปของโปรเจกต์ และโปรไฟล์ผู้ใช้แบบคงที่ ไว้ในไฟล์
MEMORY.md
- เอนจินค้นหาแบบไฮบริด (Hybrid Search)
เอเจนต์จะใช้เครื่องมือmemory_searchเพื่อค้นหาหน่วยความจำเฉพาะเมื่อจำเป็น:
- การค้นหาเชิงความหมาย (Vector Search): ใช้ embedding เพื่อค้นหาเนื้อหาที่มีความหมายใกล้เคียงกัน (ใช้ SQLite-vec)
- การค้นหาด้วยคีย์เวิร์ด (BM25): ใช้เอนจิน FTS5 ควบคู่กันเพื่อค้นหาคำนามเฉพาะ วันที่ ID และข้อมูลที่ต้องตรงเป๊ะ
- การคำนวณคะแนนสุดท้าย: ใช้วิธีถ่วงน้ำหนัก
(0.7 * คะแนนเวกเตอร์) + (0.3 * คะแนนข้อความ)เพื่อเพิ่มความแม่นยำ
- เทคนิคการจัดการคอนเท็กซ์
- Compaction: เมื่อถึงข้อจำกัดของคอนเท็กซ์ ระบบจะนำบทสนทนาก่อนหน้าไปแทนที่ด้วยฉบับสรุป โดยเฉพาะในขั้นตอน 'Memory Flush' จะมีการบันทึกข้อมูลสำคัญลงไฟล์ Markdown แบบถาวรก่อนสรุป เพื่อป้องกันการสูญหายของข้อมูล
- Pruning: ตัดผลลัพธ์การรันเครื่องมือที่ยาวเกินความจำเป็น เช่น เอาต์พุตล็อกขนาดใหญ่ เพื่อประหยัดโทเคน และมีตรรกะการลบอย่างชาญฉลาดโดยคำนึงถึงค่า TTL ของ prompt caching ของ Anthropic
- เทคโนโลยีสแต็กและการไหลของข้อมูล
- ที่เก็บข้อมูล: ไฟล์ Markdown แบบโลคัล (Source of Truth) และ SQLite (สำหรับทำดัชนี)
- เวิร์กโฟลว์: ตรวจจับการเปลี่ยนแปลงของไฟล์ (Chokidar) -> แบ่งชังก์ (หน่วยละ 400 โทเคน, ซ้อนทับ 80 โทเคน) -> embedding -> บันทึกลง SQLite
ยังไม่มีความคิดเห็น