Sessions and memory
محرك الذاكرة المدمج
المحرّك المضمّن هو الواجهة الخلفية الافتراضية للذاكرة. يخزّن فهرس الذاكرة في قاعدة بيانات SQLite لكل وكيل، ولا يحتاج إلى تبعيات إضافية للبدء.
ما يوفّره
- البحث بالكلمات المفتاحية عبر فهرسة النص الكامل FTS5 (تسجيل BM25).
- البحث المتجهي عبر التضمينات من أي مزوّد مدعوم.
- البحث الهجين الذي يجمع بينهما للحصول على أفضل النتائج.
- دعم CJK عبر تجزئة الثلاثيات للصينية واليابانية والكورية.
- تسريع sqlite-vec لاستعلامات المتجهات داخل قاعدة البيانات (اختياري).
البدء
إذا كان لديك مفتاح API لـ OpenAI أو Gemini أو Voyage أو Mistral أو DeepInfra، فإن المحرّك المضمّن يكتشفه تلقائياً ويفعّل البحث المتجهي. لا يلزم أي إعداد.
لتعيين مزوّد صراحةً:
{
agents: {
defaults: {
memorySearch: {
provider: "openai",
},
},
},
}
من دون مزوّد تضمينات، يتوفر البحث بالكلمات المفتاحية فقط.
لفرض مزوّد التضمينات المحلي المضمّن، ثبّت حزمة وقت التشغيل الاختيارية
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",
},
},
},
},
}
مزوّدو التضمينات المدعومون
| المزوّد | المعرّف | يُكتشف تلقائياً | ملاحظات |
|---|---|---|---|
| OpenAI | openai |
نعم | الافتراضي: text-embedding-3-small |
| Gemini | gemini |
نعم | يدعم الوسائط المتعددة (الصورة + الصوت) |
| Voyage | voyage |
نعم | |
| Mistral | mistral |
نعم | |
| DeepInfra | deepinfra |
نعم | الافتراضي: BAAI/bge-m3 |
| Ollama | ollama |
لا | محلي، عيّنه صراحةً |
| محلي | local |
نعم (أولاً) | وقت تشغيل node-llama-cpp اختياري |
يختار الاكتشاف التلقائي أول مزوّد يمكن حلّ مفتاح API الخاص به، وفق
الترتيب المعروض. عيّن memorySearch.provider للتجاوز.
كيفية عمل الفهرسة
يفهرس OpenClaw ملفات MEMORY.md وmemory/*.md إلى مقاطع (~400 رمز مع
تداخل 80 رمزاً) ويخزنها في قاعدة بيانات SQLite لكل وكيل.
- موقع الفهرس:
~/.openclaw/memory/<agentId>.sqlite - صيانة التخزين: تُقيَّد ملفات SQLite WAL الجانبية بنقاط تحقق دورية وعند الإيقاف.
- مراقبة الملفات: تؤدي التغييرات في ملفات الذاكرة إلى إعادة فهرسة مؤجلة (1.5 ثانية).
- إعادة الفهرسة التلقائية: عند تغيّر مزوّد التضمينات أو النموذج أو إعدادات التقسيم إلى مقاطع، يُعاد بناء الفهرس بالكامل تلقائياً.
- إعادة الفهرسة عند الطلب:
openclaw memory index --force
متى تستخدمه
المحرّك المضمّن هو الخيار المناسب لمعظم المستخدمين:
- يعمل مباشرةً بلا تبعيات إضافية.
- يتعامل جيداً مع البحث بالكلمات المفتاحية والبحث المتجهي.
- يدعم جميع مزوّدي التضمينات.
- يجمع البحث الهجين أفضل ما في نهجي الاسترجاع.
فكّر في الانتقال إلى QMD إذا كنت تحتاج إلى إعادة الترتيب أو توسيع الاستعلام، أو تريد فهرسة أدلة خارج مساحة العمل.
فكّر في Honcho إذا كنت تريد ذاكرة عبر الجلسات مع نمذجة تلقائية للمستخدم.
استكشاف الأخطاء وإصلاحها
هل بحث الذاكرة معطّل؟ تحقق من openclaw memory status. إذا لم يُكتشف أي مزوّد،
فعيّن واحداً صراحةً أو أضف مفتاح API.
لم يُكتشف المزوّد المحلي؟ تأكد من وجود المسار المحلي وشغّل:
openclaw memory status --deep --agent main
openclaw memory index --force --agent main
تستخدم أوامر CLI المستقلة وGateway معرّف المزوّد نفسه local.
إذا عُيّن المزوّد إلى auto، فلن تُؤخذ التضمينات المحلية في الاعتبار أولاً إلا
عندما يشير memorySearch.local.modelPath إلى ملف محلي موجود.
نتائج قديمة؟ شغّل openclaw memory index --force لإعادة البناء. قد تفوّت المراقبة
التغييرات في حالات طرفية نادرة.
لا يتم تحميل sqlite-vec؟ يعود OpenClaw تلقائياً إلى تشابه جيب التمام داخل العملية.
يعرض openclaw memory status --deep مخزن المتجهات المحلي منفصلاً عن مزوّد التضمينات،
لذلك يشير Vector store: unavailable إلى تحميل sqlite-vec بينما يشير
Embeddings: unavailable إلى جاهزية المزوّد/المصادقة أو النموذج. تحقق من السجلات لمعرفة خطأ التحميل المحدد.
الإعدادات
لإعداد مزوّد التضمينات، وضبط البحث الهجين (الأوزان، MMR، التضاؤل الزمني)، وفهرسة الدفعات، والذاكرة متعددة الوسائط، وsqlite-vec، والمسارات الإضافية، وكل مفاتيح الإعدادات الأخرى، راجع مرجع إعدادات الذاكرة.