Sessions and memory
موتور حافظه داخلی
موتور داخلی، بکاند پیشفرض حافظه است. این موتور نمایهٔ حافظهٔ شما را در یک پایگاه دادهٔ SQLite مختص هر عامل ذخیره میکند و برای شروع به هیچ وابستگی اضافی نیاز ندارد.
امکانات
- جستوجوی کلیدواژهای از طریق نمایهسازی متن کامل FTS5 (امتیازدهی BM25).
- جستوجوی برداری از طریق تعبیهسازیهای هر ارائهدهندهٔ پشتیبانیشده.
- جستوجوی ترکیبی که برای دستیابی به بهترین نتایج، هر دو روش را ترکیب میکند.
- پشتیبانی از CJK از طریق توکنسازی سهحرفی برای زبانهای چینی، ژاپنی و کرهای.
- شتابدهی sqlite-vec برای پرسوجوهای برداری درون پایگاه داده (اختیاری).
شروع به کار
موتور داخلی بهطور پیشفرض از تعبیهسازیهای OpenAI استفاده میکند. اگر OPENAI_API_KEY یا
models.providers.openai.apiKey از قبل پیکربندی شده باشد، جستوجوی برداری
بدون نیاز به پیکربندی اضافی حافظه کار میکند.
برای تعیین صریح یک ارائهدهنده:
{ agents: { defaults: { memorySearch: { provider: "openai", }, }, },}بدون ارائهدهندهٔ تعبیهسازی، فقط جستوجوی کلیدواژهای در دسترس است.
برای اجبار به استفاده از تعبیهسازیهای محلی GGUF، Plugin رسمی ارائهدهندهٔ llama.cpp را
نصب کنید، سپس local.modelPath را به یک فایل GGUF ارجاع دهید:
openclaw plugins install @openclaw/llama-cpp-provider{ agents: { defaults: { memorySearch: { provider: "local", fallback: "none", local: { modelPath: "~/.node-llama-cpp/models/embeddinggemma-300m-qat-Q8_0.gguf", }, }, }, },}ارائهدهندگان تعبیهسازی پشتیبانیشده
| ارائهدهنده | شناسه | توضیحات |
|---|---|---|
| Bedrock | bedrock |
از زنجیرهٔ اعتبارنامهٔ AWS استفاده میکند |
| DeepInfra | deepinfra |
پیشفرض: BAAI/bge-m3 |
| Gemini | gemini |
از چندرسانهای (تصویر + صدا) پشتیبانی میکند |
| GitHub Copilot | github-copilot |
از اشتراک Copilot شما استفاده میکند |
| LM Studio | lmstudio |
محلی/خودمیزبان |
| محلی | local |
@openclaw/llama-cpp-provider |
| Mistral | mistral |
|
| Ollama | ollama |
محلی/خودمیزبان |
| OpenAI | openai |
پیشفرض: text-embedding-3-small |
| سازگار با OpenAI | openai-compatible |
نقطهٔ پایانی عمومی /v1/embeddings |
| Voyage | voyage |
برای تغییر ارائهدهنده از OpenAI، مقدار memorySearch.provider را تنظیم کنید.
نحوهٔ کار نمایهسازی
OpenClaw فایلهای MEMORY.md و memory/*.md را به قطعهها (بهطور پیشفرض ۴۰۰ توکن با
همپوشانی ۸۰ توکنی) تقسیم و نمایهسازی میکند و آنها را در یک پایگاه دادهٔ SQLite مختص هر عامل ذخیره میکند.
- محل نمایه: پایگاه دادهٔ عامل مالک در
~/.openclaw/agents/<agentId>/agent/openclaw-agent.sqlite - نگهداری فضای ذخیرهسازی: فایلهای جانبی WAL مربوط به SQLite با نقاط وارسی دورهای و هنگام خاموششدن، در اندازهای محدود نگه داشته میشوند.
- پایش فایلها: تغییرات فایلهای حافظه، نمایهسازی مجدد با تأخیر کنترلشده را فعال میکنند (پیشفرض ۱٫۵ ثانیه).
- نمایهسازی مجدد خودکار: با تغییر ارائهدهندهٔ تعبیهسازی، مدل، پیکربندی قطعهبندی، منابع پیکربندیشده یا دامنه، نمایه بهطور خودکار بازسازی میشود.
- نمایهسازی مجدد در صورت نیاز:
openclaw memory index --force
زمان مناسب استفاده
موتور داخلی برای بیشتر کاربران انتخاب مناسبی است:
- بدون نیاز به وابستگی اضافی، بلافاصله قابل استفاده است.
- جستوجوی کلیدواژهای و برداری را بهخوبی انجام میدهد.
- از همهٔ ارائهدهندگان تعبیهسازی پشتیبانی میکند.
- جستوجوی ترکیبی، بهترین قابلیتهای هر دو رویکرد بازیابی را با هم ترکیب میکند.
اگر به رتبهبندی مجدد، گسترش پرسوجو یا نمایهسازی پوشههای خارج از فضای کاری نیاز دارید، استفاده از QMD را در نظر بگیرید.
اگر حافظهٔ میاننشستی با مدلسازی خودکار کاربر میخواهید، Honcho را در نظر بگیرید.
عیبیابی
جستوجوی حافظه غیرفعال است؟ openclaw memory status را بررسی کنید. اگر هیچ ارائهدهندهای
شناسایی نشد، یکی را بهصراحت تنظیم کنید یا یک کلید API اضافه کنید.
ارائهدهندهٔ محلی شناسایی نمیشود؟ از وجود مسیر محلی مطمئن شوید و این دستورها را اجرا کنید:
openclaw memory status --deep --agent mainopenclaw memory index --force --agent mainهم دستورهای مستقل CLI و هم Gateway از شناسهٔ ارائهدهندهٔ local یکسانی استفاده میکنند.
هنگامی که تعبیهسازی محلی میخواهید، memorySearch.provider: "local" را تنظیم کنید.
نتایج قدیمی هستند؟ برای بازسازی، openclaw memory index --force را اجرا کنید. پایشگر
ممکن است در موارد مرزی نادر برخی تغییرات را تشخیص ندهد.
sqlite-vec بارگیری نمیشود؟ OpenClaw بهطور خودکار به محاسبهٔ شباهت کسینوسی
درونفرایندی بازمیگردد. openclaw memory status --deep مخزن برداری محلی را
جدا از ارائهدهندهٔ تعبیهسازی گزارش میکند؛ بنابراین Vector store: unavailable نشاندهندهٔ مشکل در بارگیری sqlite-vec است، درحالیکه Embeddings: unavailable
به مشکل ارائهدهنده/احراز هویت یا آمادهنبودن مدل اشاره دارد. برای مشاهدهٔ خطای مشخص
بارگیری، گزارشها را بررسی کنید.
پیکربندی
برای راهاندازی ارائهدهندهٔ تعبیهسازی، تنظیم جستوجوی ترکیبی (وزنها، MMR، زوال زمانی)، نمایهسازی دستهای، حافظهٔ چندرسانهای، sqlite-vec، مسیرهای اضافی و همهٔ گزینههای پیکربندی دیگر، به مرجع پیکربندی حافظه مراجعه کنید.