Technical reference
مرجع پیکربندی حافظه
این صفحه همه گزینههای پیکربندی جستوجوی حافظه OpenClaw را فهرست میکند. برای مرورهای مفهومی، ببینید:
نحوه کار حافظه.
بکاند پیشفرض SQLite.
مؤلفه جانبی با اولویت اجرای محلی.
پایپلاین جستوجو و تنظیم آن.
زیرعامل حافظه برای نشستهای تعاملی.
همه تنظیمات مشترک حافظه در سطح بالای memory در openclaw.json قرار دارند. پیشفرضهای جستوجو از memory.search و بازنویسیهای جستوجوی مختص هر عامل از agents.entries.*.memory.search استفاده میکنند.
بهخاطرسپاری میان مکالمات
| کلید | نوع | پیشفرض | توضیحات |
|---|---|---|---|
rememberAcrossConversations |
boolean |
برای نصبهای شخصی روشن؛ با جداسازی پیکربندیشده پیام مستقیم خاموش | استفاده از زمینه مرتبطِ سایر مکالمات خصوصی شناختهشده این عامل. |
وقتی فقط یک عامل شخصی مورداعتماد باید از یادآوری رونوشت میان مکالمات استفاده کند، آن را برای همان عامل پیکربندی کنید:
{ agents: { entries: { personal: { memory: { search: { rememberAcrossConversations: true, }, }, }, }, },}این مقدار از وراثت عادی memory.search همراه با یک
بازنویسی مختص عامل پیروی میکند. وقتی تنظیم نشده باشد، فقط در صورتی بهطور پیشفرض
روشن است که session.dmScope سراسری تنظیم نشده باشد یا "main" باشد و هیچ اتصالی بازنویسی
session.dmScope نداشته باشد. هرگونه جداسازی پیکربندیشده پیام مستقیم، آن را بهطور پیشفرض خاموش میکند. مقدار صریح true یا
false همیشه اولویت دارد. فعالسازی آن مستلزم نمایهسازی رونوشت نشست است و
sessions را به منابع حافظه حلشده عامل اضافه میکند. با QMD، خروجیگیری نشست آن عامل را نیز
فعال میکند؛ برای این حالت به تنظیم جداگانه
memory.qmd.sessions.enabled نیازی نیست.
ارائهدهنده حافظه داخلی OpenClaw این مسیر محافظتشده را با هر دو بکاند
داخلی و QMD پشتیبانی میکند. ارائهدهندگان جایگزین حافظه میتوانند همچنان از
قلابهای یادآوری و ابزارهای پیشرفته Active Memory خود استفاده کنند، اما این تنظیم
نادیده گرفته میشود، مگر آنکه ارائهدهنده فعلی از یادآوری محافظتشده رونوشت خصوصی پشتیبانی کند.
openclaw doctor ارائهدهنده پشتیبانینشده یا فهرست صریح toolsAllow در Active Memory
را که شامل memory_search نیست، گزارش میکند.
مرز بازیابی محدودتر از جستوجوی عمومی نشست است:
- فقط مکالمات خصوصی شناختهشده همان عامل واجد شرایط هستند
- مکالمهای که به آن پاسخ داده میشود مستثنا است
- گروهها و کانالها بهعنوان مبدأ و مقصد مستثنا هستند
- گونههای ناشناخته مکالمه بهصورت بسته رد میشوند
- یادآوری در محیط ایزوله نمیتواند از مجوز ویژه میان مکالمات استفاده کند
این تنظیم tools.sessions.visibility، کلیدهای نشست،
ذخیرهسازی رونوشت، مسیریابی تحویل یا مجوزهای sessions_list،
sessions_history و sessions_send را تغییر نمیدهد. Active Memory یک مرحله بازیابی
فقطخواندنی و محدود انجام میدهد؛ در دسترس نبودن یا پایان مهلت بازیابی، پاسخ را
مسدود نمیکند.
انتخاب ارائهدهنده
| کلید | نوع | پیشفرض | توضیحات |
|---|---|---|---|
enabled |
boolean |
true |
فعال یا غیرفعالکردن جستوجوی حافظه |
provider |
string |
"openai" |
شناسه آداپتور تعبیهسازی مانند bedrock، deepinfra، gemini، github-copilot، local، mistral، ollama، openai، openai-compatible یا voyage؛ همچنین میتواند یک models.providers.<id> پیکربندیشده باشد که api آن به یک آداپتور تعبیهسازی حافظه یا API مدل سازگار با OpenAI اشاره میکند |
model |
string |
پیشفرض ارائهدهنده | نام مدل تعبیهسازی |
fallback |
string |
"none" |
شناسه آداپتور جایگزین هنگام شکست آداپتور اصلی |
وقتی provider تنظیم نشده باشد، OpenClaw از تعبیهسازیهای OpenAI استفاده میکند. برای استفاده از Bedrock، DeepInfra، Gemini، GitHub Copilot، Mistral، Ollama،
Voyage، یک مدل محلی GGUF یا نقطه پایانی /v1/embeddings سازگار با OpenAI، مقدار provider
را صریحاً تنظیم کنید.
پیکربندیهای قدیمی که هنوز provider: "auto" را دارند، به openai حل میشوند.
وقتی provider تنظیم نشده، provider: "auto" قدیمی موجود است یا
provider: "none" عمداً حالت فقط FTS را انتخاب میکند، یادآوری حافظه میتواند در صورت
در دسترس نبودن تعبیهسازیها همچنان از رتبهبندی واژگانی FTS استفاده کند.
ارائهدهندگان غیرمحلی صریح بهصورت بسته شکست میخورند. اگر memory.search.provider را روی
یک ارائهدهنده مشخص با پشتوانه راهدور، مانند Bedrock، DeepInfra، Gemini، GitHub
Copilot، LM Studio، Mistral، Ollama، OpenAI، Voyage یا یک ارائهدهنده سفارشی
سازگار با OpenAI تنظیم کنید و آن ارائهدهنده هنگام اجرا در دسترس نباشد، memory_search
بهجای استفاده بیسروصدا از یادآوری فقط FTS، نتیجه «در دسترس نیست» برمیگرداند. پیکربندی
ارائهدهنده/احراز هویت را اصلاح کنید، به ارائهدهندهای قابلدسترسی تغییر دهید یا اگر
عمداً یادآوری فقط FTS میخواهید، provider: "none" را تنظیم کنید.
شناسههای ارائهدهنده سفارشی
memory.search.provider میتواند برای آداپتورهای ارائهدهنده مختص حافظه مانند ollama، یا APIهای مدل سازگار با OpenAI مانند openai-responses / openai-completions به یک ورودی سفارشی models.providers.<id> اشاره کند. OpenClaw مالک api آن ارائهدهنده را برای آداپتور تعبیهسازی حل میکند و در عین حال شناسه ارائهدهنده سفارشی را برای مدیریت نقطه پایانی، احراز هویت و پیشوند مدل حفظ میکند. این کار به راهاندازیهای چند GPU یا چند میزبان امکان میدهد تعبیهسازیهای حافظه را به یک نقطه پایانی محلی مشخص اختصاص دهند:
{ models: { providers: { "ollama-5080": { api: "ollama", baseUrl: "http://gpu-box.local:11435", apiKey: "ollama-local", models: [{ id: "qwen3-embedding:0.6b", name: "Qwen3 Embedding 0.6B" }], }, }, }, memory: { search: { provider: "ollama-5080", model: "qwen3-embedding:0.6b", }, },}حل کلید API
تعبیهسازیهای راهدور به کلید API نیاز دارند. Bedrock در عوض از زنجیره پیشفرض اعتبارنامه AWS SDK استفاده میکند (نقشهای نمونه، SSO، کلیدهای دسترسی یا کلید API مربوط به Bedrock).
| ارائهدهنده | متغیر محیطی | کلید پیکربندی |
|---|---|---|
| Bedrock | زنجیره اعتبارنامه AWS یا AWS_BEARER_TOKEN_BEDROCK |
به کلید API نیازی نیست |
| DeepInfra | DEEPINFRA_API_KEY |
models.providers.deepinfra.apiKey |
| Gemini | GEMINI_API_KEY |
models.providers.google.apiKey |
| GitHub Copilot | COPILOT_GITHUB_TOKEN، GH_TOKEN، GITHUB_TOKEN |
نمایه احراز هویت از طریق ورود دستگاه |
| Mistral | MISTRAL_API_KEY |
models.providers.mistral.apiKey |
| Ollama | OLLAMA_API_KEY (جاینگهدار) |
-- |
| OpenAI | OPENAI_API_KEY |
models.providers.openai.apiKey |
| Voyage | VOYAGE_API_KEY |
models.providers.voyage.apiKey |
پیکربندی نقطه پایانی راهدور
برای یک سرور عمومی /v1/embeddings سازگار با OpenAI که نباید
اعتبارنامههای سراسری چت OpenAI را به ارث ببرد، از provider: "openai-compatible" استفاده کنید.
remote.baseUrlstringنشانی پایه سفارشی API.
remote.apiKeystringبازنویسی کلید API.
remote.headersobjectسرآیندهای HTTP اضافی (ادغامشده با پیشفرضهای ارائهدهنده).
{ memory: { search: { provider: "openai-compatible", model: "text-embedding-3-small", remote: { baseUrl: "https://api.example.com/v1/", apiKey: "YOUR_KEY", }, }, },}پیکربندی مختص ارائهدهنده
Gemini
| کلید | نوع | پیشفرض | توضیحات |
|---|---|---|---|
model |
string |
gemini-embedding-001 |
از gemini-embedding-2-preview نیز پشتیبانی میکند |
outputDimensionality |
number |
3072 |
برای Embedding 2: 768، 1536 یا 3072 |
انواع ورودی سازگار با OpenAI
نقاط پایانی تعبیهسازی سازگار با OpenAI میتوانند استفاده از فیلدهای درخواست input_type مختص ارائهدهنده را فعال کنند. این قابلیت برای مدلهای تعبیهسازی نامتقارنی مفید است که برای تعبیهسازی پرسوجو و سند به برچسبهای متفاوت نیاز دارند.
| کلید | نوع | پیشفرض | توضیحات |
|---|---|---|---|
inputType |
string |
تنظیمنشده | input_type مشترک برای تعبیهسازی پرسوجو و سند |
queryInputType |
string |
تنظیمنشده | input_type هنگام پرسوجو؛ inputType را بازنویسی میکند |
documentInputType |
string |
تنظیمنشده | input_type نمایه/سند؛ inputType را بازنویسی میکند |
{ memory: { search: { provider: "openai-compatible", remote: { baseUrl: "https://embeddings.example/v1", apiKey: "${EMBEDDINGS_API_KEY}", }, model: "asymmetric-embedder", queryInputType: "query", documentInputType: "passage", }, },}تغییر این مقادیر بر شناسهٔ کش تعبیهسازی برای نمایهسازی دستهای ارائهدهنده تأثیر میگذارد و اگر مدل بالادستی با برچسبها بهشکل متفاوتی رفتار میکند، پس از آن باید حافظه دوباره نمایهسازی شود.
Bedrock
پیکربندی تعبیهسازی Bedrock
Bedrock از زنجیرهٔ پیشفرض اعتبارنامهٔ AWS SDK بههمراه توکن حامل بررسیشده توسط OpenClaw استفاده میکند؛ بنابراین هیچ کلید API در پیکربندی ذخیره نمیشود. اگر OpenClaw روی EC2 با نقش نمونهای دارای دسترسی Bedrock اجرا میشود، فقط ارائهدهنده و مدل را تنظیم کنید:
{ memory: { search: { provider: "bedrock", model: "amazon.titan-embed-text-v2:0", }, },}| کلید | نوع | پیشفرض | توضیحات |
|---|---|---|---|
model |
string |
amazon.titan-embed-text-v2:0 |
هر شناسهٔ مدل تعبیهسازی Bedrock |
outputDimensionality |
number |
پیشفرض مدل | برای Titan V2: 256، 512 یا 1024 |
مدلهای پشتیبانیشده (با تشخیص خانواده و ابعاد پیشفرض):
| شناسهٔ مدل | ارائهدهنده | ابعاد پیشفرض | ابعاد قابلپیکربندی |
|---|---|---|---|
amazon.titan-embed-text-v2:0 |
Amazon | 1024 | 256, 512, 1024 |
amazon.titan-embed-text-v1 |
Amazon | 1536 | -- |
amazon.titan-embed-g1-text-02 |
Amazon | 1536 | -- |
amazon.titan-embed-image-v1 |
Amazon | 1024 | -- |
amazon.nova-2-multimodal-embeddings-v1:0 |
Amazon | 1024 | 256, 384, 1024, 3072 |
cohere.embed-english-v3 |
Cohere | 1024 | -- |
cohere.embed-multilingual-v3 |
Cohere | 1024 | -- |
cohere.embed-v4:0 |
Cohere | 1536 | 256, 384, 512, 768, 1024, 1536 |
twelvelabs.marengo-embed-3-0-v1:0 |
TwelveLabs | 512 | -- |
twelvelabs.marengo-embed-2-7-v1:0 |
TwelveLabs | 1024 | -- |
گونههای دارای پسوند توان عملیاتی (برای مثال، amazon.titan-embed-text-v1:2:8k) و شناسههای پروفایل استنتاج دارای پیشوند منطقه (برای مثال، us.amazon.titan-embed-text-v2:0) پیکربندی مدل پایه را به ارث میبرند.
منطقه: به این ترتیب تعیین میشود: بازنویسی memory.search.remote.baseUrl، پیکربندی models.providers.amazon-bedrock.baseUrl، AWS_REGION، AWS_DEFAULT_REGION و سپس مقدار پیشفرض us-east-1.
احراز هویت: OpenClaw ابتدا AWS_ACCESS_KEY_ID + AWS_SECRET_ACCESS_KEY یا AWS_BEARER_TOKEN_BEDROCK را بررسی میکند و سپس به زنجیرهٔ استاندارد ارائهدهندگان پیشفرض اعتبارنامهٔ AWS SDK میرود:
- متغیرهای محیطی (
AWS_ACCESS_KEY_ID+AWS_SECRET_ACCESS_KEY)، مگر اینکهAWS_PROFILEنیز تنظیم شده باشد - SSO (فقط هنگامی که فیلدهای SSO پیکربندی شده باشند)
- فایلهای اشتراکی اعتبارنامه و پیکربندی (
fromIni، شاملAWS_PROFILE) - فرایند اعتبارنامه (
credential_processدر فایل پیکربندی AWS) - اعتبارنامههای توکن هویت وب
- اعتبارنامههای فرادادهٔ نمونهٔ ECS یا EC2
مجوزهای IAM: نقش یا کاربر IAM به موارد زیر نیاز دارد:
{ "Effect": "Allow", "Action": "bedrock:InvokeModel", "Resource": "*"}برای رعایت اصل حداقل سطح دسترسی، دامنهٔ InvokeModel را به مدل مشخص محدود کنید:
arn:aws:bedrock:*::foundation-model/amazon.titan-embed-text-v2:0محلی (GGUF + llama.cpp)
| کلید | نوع | پیشفرض | توضیحات |
|---|---|---|---|
local.modelPath |
string |
بارگیری خودکار | مسیر فایل مدل GGUF |
local.modelCacheDir |
string |
پیشفرض node-llama-cpp | پوشهٔ کش مدلهای بارگیریشده |
local.contextSize |
number | "auto" |
4096 |
اندازهٔ پنجرهٔ زمینه برای زمینهٔ تعبیهسازی. 4096 قطعههای معمول (128-512 توکن) را پوشش میدهد و در عین حال VRAM غیرمرتبط با وزنها را محدود میکند. در میزبانهای دارای منابع محدود، آن را به 1024-2048 کاهش دهید. "auto" از حداکثر آموزشدیدهٔ مدل استفاده میکند -- برای مدلهای 8B+ توصیه نمیشود (Qwen3-Embedding-8B: حداکثر 40 960 توکن میتواند مصرف VRAM را به حدود 32 GB برساند). |
ابتدا ارائهدهندهٔ رسمی llama.cpp را نصب کنید: openclaw plugins install @openclaw/llama-cpp-provider.
مدل پیشفرض: embeddinggemma-300m-qat-Q8_0.gguf (حدود 0.6 GB، با بارگیری خودکار). نسخههای دریافتشده از کد منبع همچنان به تأیید ساخت بومی نیاز دارند: pnpm approve-builds و سپس pnpm rebuild node-llama-cpp.
برای تأیید همان مسیر ارائهدهندهای که Gateway استفاده میکند، از CLI مستقل استفاده کنید:
openclaw memory status --deep --agent mainopenclaw memory index --force --agent mainمقادیر عددی local.contextSize همچنین جانمایی خودکار لایههای GPU در node-llama-cpp را هدایت میکنند تا وزنهای مدل و زمینهٔ تعبیهسازی درخواستی با هم در حافظه جای بگیرند. openclaw memory status --deep پس از بارگیری محیط اجرا، آخرین اطلاعات شناختهشده دربارهٔ بکاند llama.cpp، دستگاه، برونسپاری، زمینهٔ درخواستی و دادههای حافظهٔ دارای برچسب زمانی را گزارش میکند؛ وضعیت غیرفعال مدلی را بارگیری نمیکند.
برای تعبیهسازیهای محلی GGUF، provider: "local" را صریحاً تنظیم کنید. hf: و ارجاعهای مدل HTTP(S) برای پیکربندیهای محلی صریح پشتیبانی میشوند (از طریق تفکیک مدل node-llama-cpp)، اما ارائهدهندهٔ پیشفرض را تغییر نمیدهند.
رفتار نمایهسازی
موتورهای حافظه مسئول همگامسازی، دستهبندی، پایش و روشهای ابتکاری نمایهسازی پس از Compaction هستند. OpenClaw این رفتارها را بهجای ارائهٔ تنظیمات زمانبندی برای هر نصب، با پیشفرضهای نگهداریشده فعال نگه میدارد.
پیکربندی جستوجوی ترکیبی
همه در زیرمجموعهٔ memory.search.query:
| کلید | نوع | پیشفرض | توضیحات |
|---|---|---|---|
maxResults |
number |
6 |
حداکثر نتایج حافظه که پیش از تزریق بازگردانده میشوند |
minScore |
number |
0.35 |
حداقل امتیاز ارتباط برای گنجاندن یک نتیجه |
بازیابی ترکیبی فعال باقی میماند؛ MMR و کاهش زمانی طبق سیاست داخلی موتور غیرفعال باقی میمانند.
نمونهٔ کامل
{ memory: { search: { query: { maxResults: 6, minScore: 0.35, }, }, },}مسیرهای حافظهٔ اضافی
| کلید | نوع | توضیحات |
|---|---|---|
extraPaths |
string[] |
پوشهها یا فایلهای اضافی برای نمایهسازی |
{ memory: { search: { extraPaths: ["../team-docs", "/srv/shared-notes"], }, },}مسیرها میتوانند مطلق یا نسبت به فضای کاری باشند. پوشهها برای یافتن فایلهای .md بهصورت بازگشتی پویش میشوند. نحوهٔ مدیریت پیوندهای نمادین به بکاند فعال بستگی دارد: موتور داخلی از پیوندهای نمادین عبور میکند، درحالیکه QMD از رفتار پویشگر زیربنایی QMD پیروی میکند.
برای جستوجوی رونوشت میانعاملی با دامنهٔ عامل، بهجای memory.qmd.paths از agents.entries.*.memory.search.qmd.extraCollections استفاده کنید. آن مجموعههای اضافی از همان ساختار { path, name, pattern? } پیروی میکنند، اما برای هر عامل ادغام میشوند و هنگامی که مسیر به خارج از فضای کاری فعلی اشاره دارد، میتوانند نامهای اشتراکی صریح را حفظ کنند. اگر مسیر تفکیکشدهٔ یکسانی هم در memory.qmd.paths و هم در memory.search.qmd.extraCollections ظاهر شود، QMD نخستین ورودی را نگه میدارد و از مورد تکراری عبور میکند.
حافظهٔ چندوجهی (Gemini)
تصاویر و صدا را با استفاده از Gemini Embedding 2 در کنار Markdown نمایهسازی کنید:
| کلید | نوع | پیشفرض | توضیحات |
|---|---|---|---|
multimodal.enabled |
boolean |
false |
فعالسازی نمایهسازی چندوجهی |
multimodal.modalities |
string[] |
-- | ["image"]، ["audio"] یا ["all"] |
multimodal.maxFileBytes |
number |
10485760 |
حداکثر اندازهٔ فایل برای نمایهسازی (10 MiB) |
قالبهای پشتیبانیشده: .jpg، .jpeg، .png، .webp، .gif، .heic، .heif (تصاویر)؛ .mp3، .wav، .ogg، .opus، .m4a، .aac، .flac (صدا).
کش تعبیهسازی
| کلید | نوع | پیشفرض | توضیحات |
|---|---|---|---|
cache.enabled |
boolean |
true |
کشکردن تعبیهسازی قطعهها در SQLite |
از تعبیهسازی مجدد متن بدون تغییر هنگام نمایهسازی مجدد یا بهروزرسانی رونوشت جلوگیری میکند.
نمایهسازی دستهای
| کلید | نوع | پیشفرض | توضیحات |
|---|---|---|---|
remote.nonBatchConcurrency |
number |
4 |
تعبیهسازیهای درونخطی موازی |
remote.batch.enabled |
boolean |
false |
فعالسازی API تعبیهسازی دستهای |
برای gemini، openai و voyage در دسترس است. پردازش دستهای OpenAI معمولاً برای پرکردن انبوه دادههای پیشین سریعتر و ارزانتر است.
رفتار همزمانی، نظرسنجی و مهلت زمانی در اختیار ارائهدهنده است.
جستوجوی حافظهٔ نشست
رونوشتهای نشست را نمایهسازی کنید و آنها را از طریق memory_search ارائه دهید:
| کلید | نوع | پیشفرض | توضیحات |
|---|---|---|---|
rememberAcrossConversations |
boolean |
false |
اجازهٔ یادآوری خصوصی میان مکالمهها |
sources |
string[] |
["memory"] |
افزودن "sessions" برای گنجاندن رونوشتها |
جستوجوی معمول رونوشت نشست که مدل فراخوانی میکند، از
tools.sessions.visibility پیروی میکند. قابلیت مشاهده پیشفرض
tree نشست جاری، نشستهایی که ایجاد کرده است و
نشستهای گروهی همان عامل را که از طریق آگاهی محیطی از گروه پایش میشوند، در دسترس قرار میدهد. سایر
نشستهای نامرتبط به قابلیت مشاهده agent نیاز دارند (یا فقط زمانی که یادآوری
میانعاملی نیز لازم است و خطمشی عاملبهعامل آن را مجاز میداند، به all نیاز دارند).
rememberAcrossConversations این تنظیم را گستردهتر نمیکند. این گزینه یک
مجوز جداگانه و مختص زمان اجرا فراهم میکند که در گذر محدود Active Memory، فقط به
رونوشتهای خصوصی همان عامل محدود است.
مثالهای زیر این تنظیمات را زیر memory.search سطحبالا قرار میدهند. همچنین میتوانید
تنظیمات معادل را در یک بازنویسی memory.search مختص هر عامل اعمال کنید، زمانی که فقط یک
عامل باید رونوشتهای نشست را نمایهسازی و جستوجو کند.
برای یادآوری همان عامل از Gateway به پیام خصوصی:
بکاند داخلی
{ memory: { search: { experimental: { sessionMemory: true }, sources: ["memory", "sessions"], }, }, tools: { sessions: { visibility: "agent" }, },}بکاند QMD
{ memory: { backend: "qmd", search: { experimental: { sessionMemory: true }, sources: ["memory", "sessions"], }, qmd: { sessions: { enabled: true }, }, }, tools: { sessions: { visibility: "agent" }, },}هنگام استفاده از QMD، sources: ["sessions"] بهتنهایی رونوشتها را به QMD صادر نمیکند.
memory.qmd.sessions.enabled: true را نیز تنظیم کنید. تنظیم سطحبالاتر
rememberAcrossConversations: true یک استثنا است: این تنظیم، صدور لازم نشست QMD برای آن عامل را
بهطور ضمنی فعال میکند. خروجیهای ضمنی خصوصی میمانند:
آنها همیشه از محل داخلی پیشفرض صدور استفاده میکنند (یک
sessions.exportDir پیکربندیشده فقط برای خروجیهای صریح اعمال میشود)، فقط
هنگام یادآوری میانگفتوگویی آن عامل جستوجو میشوند و memory_get معمولی
نمیتواند آنها را بخواند. memory.qmd.sessions.enabled: true صریح
رفتار موجود خود را حفظ میکند و رونوشتهای صادرشده را بخشی از پیکره معمول حافظه
قرار میدهد.
شتابدهی برداری SQLite (sqlite-vec)
| کلید | نوع | پیشفرض | توضیحات |
|---|---|---|---|
store.vector.enabled |
boolean |
true |
استفاده از sqlite-vec برای پرسوجوهای برداری |
store.vector.extensionPath |
string |
همراه بسته | بازنویسی مسیر sqlite-vec |
وقتی sqlite-vec در دسترس نباشد، OpenClaw بهطور خودکار به شباهت کسینوسی درونفرایندی بازمیگردد.
محل ذخیره نمایه
نمایههای حافظه داخلی در پایگاهداده SQLite مربوط به OpenClaw هر عامل در
agents/<agentId>/agent/openclaw-agent.sqlite قرار دارند.
| کلید | نوع | پیشفرض | توضیحات |
|---|---|---|---|
store.fts.tokenizer |
string |
unicode61 |
توکنساز FTS5 (unicode61 یا trigram) |
پیکربندی بکاند QMD
برای فعالسازی، memory.backend = "qmd" را تنظیم کنید. همه تنظیمات QMD زیر memory.qmd قرار دارند:
| کلید | نوع | پیشفرض | توضیحات |
|---|---|---|---|
command |
string |
qmd |
مسیر فایل اجرایی QMD؛ وقتی PATH سرویس با پوسته شما متفاوت است، یک مسیر مطلق تنظیم کنید |
searchMode |
string |
search |
فرمان جستوجو: search، vsearch، query |
rerank |
boolean |
-- | برای رد شدن از رتبهبندی مجدد QMD، همراه با searchMode: "query" و QMD 2.1+ روی false تنظیم کنید |
includeDefaultMemory |
boolean |
true |
نمایهسازی خودکار MEMORY.md + memory/**/*.md |
paths[] |
array |
-- | مسیرهای اضافی: { name, path, pattern? } |
sessions.enabled |
boolean |
false |
صدور رونوشتهای نشست به QMD |
sessions.retentionDays |
number |
-- | نگهداری رونوشت |
sessions.exportDir |
string |
-- | دایرکتوری صدور |
searchMode: "search" فقط واژگانی/BM25 است. OpenClaw برای این حالت، از جمله هنگام memory status --deep، بررسیهای آمادگی بردار معنایی یا نگهداری تعبیههای QMD را اجرا نمیکند؛ vsearch و query همچنان به آمادگی برداری و تعبیههای QMD نیاز دارند.
rerank: false فقط حالت query در QMD را تغییر میدهد و به QMD 2.1 یا جدیدتر نیاز دارد. در حالت مستقیم CLI، OpenClaw گزینه --no-rerank را ارسال میکند؛ در حالت MCP مبتنی بر mcporter، گزینه rerank: false را به ابزار یکپارچه پرسوجوی QMD میفرستد. برای استفاده از رفتار پیشفرض رتبهبندی مجدد پرسوجوی QMD، آن را تنظیمنشده باقی بگذارید.
OpenClaw شکلهای فعلی مجموعه و پرسوجوی MCP در QMD را ترجیح میدهد، اما با آزمودن پرچمهای سازگار الگوی مجموعه و نامهای قدیمیتر ابزار MCP در صورت نیاز، نسخههای قدیمیتر QMD را نیز فعال نگه میدارد. وقتی QMD پشتیبانی از چند فیلتر مجموعه را اعلام کند، مجموعههای هممنبع با یک فرایند QMD جستوجو میشوند؛ ساختهای قدیمیتر QMD مسیر سازگاری بهازای هر مجموعه را حفظ میکنند. هممنبع یعنی مجموعههای حافظه پایدار (فایلهای حافظه پیشفرض بهاضافه مسیرهای سفارشی) با هم گروهبندی میشوند، درحالیکه مجموعههای رونوشت نشست گروهی جداگانه باقی میمانند تا تنوعبخشی منبع همچنان هر دو ورودی را داشته باشد.
محدودیتها
| کلید | نوع | پیشفرض | توضیحات |
|---|---|---|---|
limits.maxResults |
number |
4 |
حداکثر نتایج جستوجو |
limits.maxSnippetChars |
number |
450 |
محدود کردن طول قطعه |
limits.maxInjectedChars |
number |
2200 |
محدود کردن کل نویسههای تزریقشده |
limits.timeoutMs |
number |
4000 |
مهلت فرمان QMD هنگام جستوجوی مبتنی بر QMD، از جمله memory_search؛ راهاندازی، همگامسازی، بازگشت داخلی و کارهای تکمیلی مهلت پیشفرض ابزار را حفظ میکنند |
دامنه
تعیین میکند کدام نشستها میتوانند نتایج جستوجوی QMD را دریافت کنند. طرحواره همان session.sendPolicy است:
{ memory: { qmd: { scope: { default: "deny", rules: [{ action: "allow", match: { chatType: "direct" } }], }, }, },}پیشفرض عرضهشده فقط پیام خصوصی/مستقیم را مجاز میداند و گروهها و سایر انواع کانال را رد میکند. match.keyPrefix با کلید عادیسازیشده نشست تطبیق دارد؛ match.rawKeyPrefix با کلید خام، شامل agent:<id>:، تطبیق دارد.
ارجاعها
memory.citations برای همه بکاندها اعمال میشود:
| مقدار | رفتار |
|---|---|
auto (پیشفرض) |
گنجاندن پاورقی Source: <path#line> در قطعهها |
on |
همیشه پاورقی را بگنجانید |
off |
حذف پاورقی (مسیر همچنان بهصورت داخلی به عامل داده میشود) |
QMD هنگام نخستین استفاده از حافظه بهصورت تنبل مقداردهی اولیه میشود؛ آداپتور آن زمانبندیهای نوسازی و تعبیه را مدیریت میکند.
مثال کامل QMD
{ memory: { backend: "qmd", citations: "auto", qmd: { includeDefaultMemory: true, update: { interval: "5m", debounceMs: 15000 }, limits: { maxResults: 4, timeoutMs: 4000 }, scope: { default: "deny", rules: [{ action: "allow", match: { chatType: "direct" } }], }, paths: [{ name: "docs", path: "~/notes", pattern: "**/*.md" }], }, },}Dreaming
Dreaming زیر plugins.entries.memory-core.config.dreaming پیکربندی میشود، نه زیر memory.search.
Dreaming بهصورت یک پیمایش زمانبندیشده اجرا میشود و از مرحلههای داخلی سبک/عمیق/REM بهعنوان جزئیات پیادهسازی استفاده میکند.
برای رفتار مفهومی و فرمانهای اسلش، به Dreaming مراجعه کنید.
تنظیمات کاربر
| کلید | نوع | پیشفرض | توضیحات |
|---|---|---|---|
enabled |
boolean |
false |
فعال یا غیرفعال کردن کامل Dreaming |
frequency |
string |
0 3 * * * |
آهنگ اختیاری Cron برای پیمایش کامل Dreaming |
model |
string |
مدل پیشفرض | بازنویسی اختیاری مدل زیرعامل Dream Diary |
phases.deep.maxPromotedSnippetTokens |
number |
160 |
حداکثر توکنهای تخمینی نگهداریشده از هر قطعه یادآوری کوتاهمدت که به MEMORY.md ارتقا مییابد؛ فراداده منشأ قابلمشاهده باقی میماند |
مثال
{ plugins: { entries: { "memory-core": { subagent: { allowModelOverride: true, allowedModels: ["anthropic/claude-sonnet-4-6"], }, config: { dreaming: { enabled: true, frequency: "0 3 * * *", model: "anthropic/claude-sonnet-4-6", }, }, }, }, },}