Sessions and memory

موتور حافظه داخلی

موتور داخلی، بک‌اند پیش‌فرض حافظه است. این موتور نمایهٔ حافظه را در یک پایگاه دادهٔ SQLite برای هر عامل ذخیره می‌کند و برای شروع به هیچ وابستگی اضافی نیاز ندارد.

امکانات

  • جست‌وجوی کلیدواژه‌ای از طریق نمایه‌سازی متن کامل FTS5 (امتیازدهی BM25).
  • جست‌وجوی برداری از طریق تعبیه‌سازی‌های هر ارائه‌دهندهٔ پشتیبانی‌شده.
  • جست‌وجوی ترکیبی که برای دستیابی به بهترین نتایج، هر دو را ترکیب می‌کند.
  • پشتیبانی از CJK از طریق توکن‌سازی سه‌حرفی برای زبان‌های چینی، ژاپنی و کره‌ای.
  • شتاب‌دهی sqlite-vec برای پرس‌وجوهای برداری درون پایگاه داده (اختیاری).

شروع به کار

موتور داخلی به‌طور پیش‌فرض از تعبیه‌سازی‌های OpenAI استفاده می‌کند. اگر OPENAI_API_KEY یا models.providers.openai.apiKey از قبل پیکربندی شده باشد، جست‌وجوی برداری بدون پیکربندی اضافی حافظه کار می‌کند.

برای تعیین صریح یک ارائه‌دهنده:

json5
{  memory: {    search: {      provider: "openai",    },  },}

بدون ارائه‌دهندهٔ تعبیه‌سازی، فقط جست‌وجوی کلیدواژه‌ای در دسترس است.

برای اجبار به استفاده از تعبیه‌سازی‌های محلی GGUF، Plugin رسمی ارائه‌دهندهٔ llama.cpp را نصب کنید، سپس local.modelPath را به یک فایل GGUF ارجاع دهید:

bash
openclaw plugins install @openclaw/llama-cpp-provider
json5
{  memory: {    search: {      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، memory.search.provider را تنظیم کنید.

نحوهٔ کار نمایه‌سازی

OpenClaw، MEMORY.md و memory/*.md را به قطعه‌ها (به‌طور پیش‌فرض 400 توکن با هم‌پوشانی 80 توکنی) نمایه‌سازی کرده و آن‌ها را در یک پایگاه دادهٔ SQLite برای هر عامل ذخیره می‌کند.

  • محل نمایه: پایگاه دادهٔ عامل مالک در ~/.openclaw/agents/<agentId>/agent/openclaw-agent.sqlite
  • نگه‌داری فضای ذخیره‌سازی: فایل‌های جانبی WAL مربوط به SQLite با checkpointهای دوره‌ای و هنگام خاموش‌شدن محدود نگه داشته می‌شوند.
  • پایش فایل: تغییرات فایل‌های حافظه، نمایه‌سازی مجدد با تأخیر کنترل‌شده را فعال می‌کنند (پیش‌فرض 1.5 ثانیه).
  • نمایه‌سازی مجدد خودکار: با تغییر ارائه‌دهندهٔ تعبیه‌سازی، مدل، پیکربندی قطعه‌بندی، منابع پیکربندی‌شده یا دامنه، نمایه به‌طور خودکار بازسازی می‌شود.
  • نمایه‌سازی مجدد در صورت درخواست: openclaw memory index --force

موارد استفاده

موتور داخلی برای بیشتر کاربران انتخاب مناسبی است:

  • بدون هیچ وابستگی اضافی، بلافاصله قابل استفاده است.
  • جست‌وجوی کلیدواژه‌ای و برداری را به‌خوبی انجام می‌دهد.
  • از همهٔ ارائه‌دهندگان تعبیه‌سازی پشتیبانی می‌کند.
  • جست‌وجوی ترکیبی، بهترین ویژگی‌های هر دو رویکرد بازیابی را ترکیب می‌کند.

اگر به رتبه‌بندی مجدد، گسترش پرس‌وجو یا نمایه‌سازی پوشه‌های خارج از فضای کاری نیاز دارید، استفاده از QMD را در نظر بگیرید.

اگر حافظهٔ بین‌نشستی با مدل‌سازی خودکار کاربر می‌خواهید، Honcho را در نظر بگیرید.

عیب‌یابی

جست‌وجوی حافظه غیرفعال است؟ openclaw memory status را بررسی کنید. اگر هیچ ارائه‌دهنده‌ای شناسایی نشد، یکی را صریحاً تنظیم کنید یا یک کلید API اضافه کنید.

ارائه‌دهندهٔ محلی شناسایی نمی‌شود؟ مطمئن شوید مسیر محلی وجود دارد و اجرا کنید:

bash
openclaw memory status --deep --agent mainopenclaw memory index --force --agent main

هم فرمان‌های مستقل CLI و هم Gateway از شناسهٔ ارائه‌دهندهٔ یکسان local استفاده می‌کنند. هنگامی که تعبیه‌سازی‌های محلی می‌خواهید، memory.search.provider: "local" را تنظیم کنید.

نتایج قدیمی هستند؟ برای بازسازی، openclaw memory index --force را اجرا کنید. پایشگر ممکن است در موارد مرزی نادر، تغییرات را تشخیص ندهد.

sqlite-vec بارگذاری نمی‌شود؟ OpenClaw به‌طور خودکار به شباهت کسینوسی درون‌فرایندی بازمی‌گردد. openclaw memory status --deep مخزن برداری محلی را جدا از ارائه‌دهندهٔ تعبیه‌سازی گزارش می‌کند؛ بنابراین Vector store: unavailable به بارگذاری sqlite-vec اشاره دارد، درحالی‌که Embeddings: unavailable به آمادگی ارائه‌دهنده/احراز هویت یا مدل اشاره می‌کند. برای خطای بارگذاری مشخص، گزارش‌ها را بررسی کنید.

پیکربندی

برای راه‌اندازی ارائه‌دهندهٔ تعبیه‌سازی، تنظیم جست‌وجوی ترکیبی (وزن‌ها، MMR، زوال زمانی)، نمایه‌سازی دسته‌ای، حافظهٔ چندوجهی، sqlite-vec، مسیرهای اضافی و همهٔ گزینه‌های پیکربندی دیگر، به مرجع پیکربندی حافظه مراجعه کنید.

مرتبط

Was this useful?
On this page

On this page