Sessions and memory
เอนจินหน่วยความจำในตัว
เอนจินในตัวคือแบ็กเอนด์หน่วยความจำค่าเริ่มต้น ซึ่งจัดเก็บดัชนีหน่วยความจำของคุณไว้ใน ฐานข้อมูล SQLite แยกตามเอเจนต์ และไม่ต้องมีการพึ่งพาเพิ่มเติมเพื่อเริ่มต้นใช้งาน
สิ่งที่มีให้
- การค้นหาด้วยคีย์เวิร์ด ผ่านดัชนีข้อความเต็ม FTS5 (การให้คะแนน BM25)
- การค้นหาแบบเวกเตอร์ ผ่าน embeddings จากผู้ให้บริการที่รองรับใดก็ได้
- การค้นหาแบบไฮบริด ที่รวมทั้งสองแบบเพื่อให้ได้ผลลัพธ์ที่ดีที่สุด
- การรองรับ CJK ผ่านการตัดคำแบบ trigram สำหรับภาษาจีน ญี่ปุ่น และเกาหลี
- การเร่งความเร็วด้วย sqlite-vec สำหรับคิวรีเวกเตอร์ภายในฐานข้อมูล (ไม่บังคับ)
เริ่มต้นใช้งาน
หากคุณมีคีย์ API สำหรับ OpenAI, Gemini, Voyage, Mistral หรือ DeepInfra เอนจินในตัว จะตรวจพบโดยอัตโนมัติและเปิดใช้การค้นหาแบบเวกเตอร์ ไม่ต้องตั้งค่าใดๆ
หากต้องการตั้งค่าผู้ให้บริการอย่างชัดเจน:
{
agents: {
defaults: {
memorySearch: {
provider: "openai",
},
},
},
}
หากไม่มีผู้ให้บริการ embedding จะใช้ได้เฉพาะการค้นหาด้วยคีย์เวิร์ดเท่านั้น
หากต้องการบังคับใช้ผู้ให้บริการ embedding ในเครื่องแบบในตัว ให้ติดตั้งแพ็กเกจรันไทม์
node-llama-cpp แบบไม่บังคับไว้ข้าง OpenClaw จากนั้นชี้ local.modelPath
ไปยังไฟล์ GGUF:
{
agents: {
defaults: {
memorySearch: {
provider: "local",
fallback: "none",
local: {
modelPath: "~/.node-llama-cpp/models/embeddinggemma-300m-qat-Q8_0.gguf",
},
},
},
},
}
ผู้ให้บริการ embedding ที่รองรับ
| ผู้ให้บริการ | ID | ตรวจพบอัตโนมัติ | หมายเหตุ |
|---|---|---|---|
| OpenAI | openai |
ใช่ | ค่าเริ่มต้น: text-embedding-3-small |
| Gemini | gemini |
ใช่ | รองรับมัลติโหมด (ภาพ + เสียง) |
| Voyage | voyage |
ใช่ | |
| Mistral | mistral |
ใช่ | |
| DeepInfra | deepinfra |
ใช่ | ค่าเริ่มต้น: BAAI/bge-m3 |
| Ollama | ollama |
ไม่ใช่ | ในเครื่อง ตั้งค่าอย่างชัดเจน |
| Local | local |
ใช่ (เป็นอันดับแรก) | รันไทม์ node-llama-cpp แบบไม่บังคับ |
การตรวจพบอัตโนมัติจะเลือกผู้ให้บริการรายแรกที่สามารถระบุคีย์ API ได้ ตาม
ลำดับที่แสดง ตั้งค่า memorySearch.provider เพื่อแทนที่
การจัดทำดัชนีทำงานอย่างไร
OpenClaw จัดทำดัชนี MEMORY.md และ memory/*.md เป็นชังก์ (~400 โทเค็นพร้อม
ส่วนทับซ้อน 80 โทเค็น) และจัดเก็บไว้ในฐานข้อมูล SQLite แยกตามเอเจนต์
- ตำแหน่งดัชนี:
~/.openclaw/memory/<agentId>.sqlite - การบำรุงรักษาพื้นที่จัดเก็บ: ไฟล์เสริม SQLite WAL ถูกจำกัดขนาดด้วย checkpoint เป็นระยะและ ตอนปิดระบบ
- การเฝ้าดูไฟล์: การเปลี่ยนแปลงไฟล์หน่วยความจำจะทริกเกอร์การจัดทำดัชนีใหม่แบบ debounce (1.5 วินาที)
- การจัดทำดัชนีใหม่อัตโนมัติ: เมื่อผู้ให้บริการ embedding, โมเดล หรือค่าการตั้งค่าการแบ่งชังก์ เปลี่ยนแปลง ดัชนีทั้งหมดจะถูกสร้างใหม่โดยอัตโนมัติ
- จัดทำดัชนีใหม่ตามต้องการ:
openclaw memory index --force
ควรใช้เมื่อใด
เอนจินในตัวเป็นตัวเลือกที่เหมาะสำหรับผู้ใช้ส่วนใหญ่:
- ใช้งานได้ทันทีโดยไม่ต้องมีการพึ่งพาเพิ่มเติม
- จัดการการค้นหาด้วยคีย์เวิร์ดและแบบเวกเตอร์ได้ดี
- รองรับผู้ให้บริการ embedding ทั้งหมด
- การค้นหาแบบไฮบริดรวมข้อดีที่สุดของทั้งสองแนวทางการดึงข้อมูล
พิจารณาเปลี่ยนไปใช้ QMD หากคุณต้องการ reranking, query expansion หรือต้องการจัดทำดัชนีไดเรกทอรีนอกพื้นที่ทำงาน
พิจารณา Honcho หากคุณต้องการหน่วยความจำข้ามเซสชันพร้อม การสร้างโมเดลผู้ใช้โดยอัตโนมัติ
การแก้ไขปัญหา
การค้นหาหน่วยความจำถูกปิดใช้อยู่หรือไม่ ตรวจสอบ openclaw memory status หากไม่พบผู้ให้บริการ
ให้ตั้งค่ารายหนึ่งอย่างชัดเจนหรือเพิ่มคีย์ API
ตรวจไม่พบผู้ให้บริการในเครื่องหรือไม่ ยืนยันว่าเส้นทางในเครื่องมีอยู่และเรียกใช้:
openclaw memory status --deep --agent main
openclaw memory index --force --agent main
ทั้งคำสั่ง CLI แบบสแตนด์อโลนและ Gateway ใช้ id ผู้ให้บริการ local เดียวกัน
หากตั้งค่าผู้ให้บริการเป็น auto embeddings ในเครื่องจะถูกพิจารณาเป็นอันดับแรกเฉพาะเมื่อ
memorySearch.local.modelPath ชี้ไปยังไฟล์ในเครื่องที่มีอยู่
ผลลัพธ์เก่าหรือไม่ เรียกใช้ openclaw memory index --force เพื่อสร้างใหม่ ตัวเฝ้าดู
อาจพลาดการเปลี่ยนแปลงในกรณีพิเศษที่พบได้ยาก
sqlite-vec ไม่โหลดหรือไม่ OpenClaw จะถอยกลับไปใช้ cosine similarity ภายในโปรเซส
โดยอัตโนมัติ openclaw memory status --deep รายงานที่เก็บเวกเตอร์ในเครื่อง
แยกจากผู้ให้บริการ embedding ดังนั้น Vector store: unavailable ชี้
ไปที่การโหลด sqlite-vec ขณะที่ Embeddings: unavailable ชี้ไปที่ provider/auth
หรือความพร้อมของโมเดล ตรวจสอบบันทึกเพื่อดูข้อผิดพลาดการโหลดที่เฉพาะเจาะจง
การตั้งค่า
สำหรับการตั้งค่าผู้ให้บริการ embedding, การปรับแต่งการค้นหาแบบไฮบริด (น้ำหนัก, MMR, temporal decay), การจัดทำดัชนีแบบแบตช์, หน่วยความจำมัลติโหมด, sqlite-vec, เส้นทางเพิ่มเติม และปุ่มตั้งค่า อื่นๆ ทั้งหมด ดู ข้อมูลอ้างอิงการตั้งค่าหน่วยความจำ