Technical reference
مرجع پیکربندی حافظه
این صفحه همهٔ گزینههای پیکربندی برای جستوجوی حافظهٔ OpenClaw را فهرست میکند. برای مرورهای مفهومی، ببینید:
حافظه چگونه کار میکند.
بکاند پیشفرض SQLite.
سایدکار local-first.
خط لولهٔ جستوجو و تنظیم.
زیربرنامهٔ عامل حافظه برای نشستهای تعاملی.
همهٔ تنظیمات جستوجوی حافظه، مگر اینکه خلافش ذکر شده باشد، زیر agents.defaults.memorySearch در openclaw.json قرار دارند.
انتخاب ارائهدهنده
| کلید | نوع | پیشفرض | توضیح |
|---|---|---|---|
provider |
string |
"openai" |
شناسهٔ آداپتر embedding مانند bedrock، deepinfra، gemini، github-copilot، local، mistral، ollama، openai، openai-compatible، یا voyage؛ همچنین میتواند یک models.providers.<id> پیکربندیشده باشد که api آن به یک آداپتر embedding حافظه یا API مدل سازگار با OpenAI اشاره میکند |
model |
string |
پیشفرض ارائهدهنده | نام مدل embedding |
fallback |
string |
"none" |
شناسهٔ آداپتر جایگزین هنگامی که مورد اصلی شکست میخورد |
enabled |
boolean |
true |
فعال یا غیرفعال کردن جستوجوی حافظه |
وقتی provider تنظیم نشده باشد، OpenClaw از embeddingهای OpenAI استفاده میکند. برای استفاده از Gemini، Voyage، Mistral، DeepInfra، Bedrock، GitHub Copilot،
Ollama، یک مدل GGUF محلی، یا یک endpoint سازگار با OpenAI در /v1/embeddings، provider
را صراحتاً تنظیم کنید.
پیکربندیهای قدیمی که هنوز provider: "auto" دارند به openai حل میشوند.
وقتی provider تنظیم نشده باشد، provider: "auto" قدیمی وجود داشته باشد، یا
provider: "none" عمداً حالت فقط FTS را انتخاب کند، فراخوانی حافظه همچنان میتواند
وقتی embeddingها در دسترس نیستند از رتبهبندی واژگانی FTS استفاده کند.
ارائهدهندههای غیرمحلی صریح بهصورت بسته شکست میخورند. اگر memorySearch.provider را روی
یک ارائهدهندهٔ مشخص مبتنی بر راه دور مانند OpenAI، Gemini، Voyage، Mistral،
Bedrock، GitHub Copilot، DeepInfra، Ollama، LM Studio، یا یک ارائهدهندهٔ سفارشی سازگار با OpenAI
تنظیم کنید و آن ارائهدهنده هنگام اجرا در دسترس نباشد، memory_search
بهجای اینکه بیصدا از فراخوانی فقط FTS استفاده کند، نتیجهٔ در دسترس نبودن را برمیگرداند. پیکربندی
ارائهدهنده/احراز هویت را اصلاح کنید، به یک ارائهدهندهٔ قابل دسترس تغییر دهید، یا اگر فراخوانی فقط FTS
تعمدی میخواهید provider: "none" را تنظیم کنید.
شناسههای ارائهدهندهٔ سفارشی
memorySearch.provider میتواند برای آداپترهای ارائهدهندهٔ مخصوص حافظه مانند ollama، یا برای APIهای مدل سازگار با OpenAI مانند openai-responses / openai-completions، به یک ورودی سفارشی models.providers.<id> اشاره کند. OpenClaw مالک api آن ارائهدهنده را برای آداپتر embedding حل میکند، درحالیکه شناسهٔ ارائهدهندهٔ سفارشی را برای مدیریت endpoint، احراز هویت، و پیشوند مدل حفظ میکند. این به راهاندازیهای چند-GPU یا چندمیزبان اجازه میدهد embeddingهای حافظه را به یک endpoint محلی مشخص اختصاص دهند:
{ models: { providers: { "ollama-5080": { api: "ollama", baseUrl: "http://gpu-box.local:11435", apiKey: "ollama-local", models: [{ id: "qwen3-embedding:0.6b" }], }, }, }, agents: { defaults: { memorySearch: { provider: "ollama-5080", model: "qwen3-embedding:0.6b", }, }, },}حل کلید API
embeddingهای راه دور به کلید API نیاز دارند. Bedrock در عوض از زنجیرهٔ پیشفرض اعتبارنامهٔ AWS SDK استفاده میکند (نقشهای نمونه، SSO، کلیدهای دسترسی).
| ارائهدهنده | متغیر محیطی | کلید پیکربندی |
|---|---|---|
| Bedrock | زنجیرهٔ اعتبارنامهٔ AWS | نیازی به کلید 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 |
پیکربندی endpoint راه دور
برای یک سرور عمومی سازگار با OpenAI در
/v1/embeddings که نباید اعتبارنامههای گفتوگوی سراسری OpenAI را به ارث ببرد، از provider: "openai-compatible" استفاده کنید.
remote.baseUrlstringURL پایهٔ سفارشی API.
remote.apiKeystringبازنویسی کلید API.
remote.headersobjectهدرهای HTTP اضافی (با پیشفرضهای ارائهدهنده ادغام میشوند).
{ agents: { defaults: { memorySearch: { 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-compatible input types
endpointهای embedding سازگار با OpenAI میتوانند فیلدهای درخواست input_type ویژهٔ ارائهدهنده را فعال کنند. این برای مدلهای embedding نامتقارن که برای embeddingهای پرسوجو و سند به برچسبهای متفاوت نیاز دارند مفید است.
| کلید | نوع | پیشفرض | توضیح |
|---|---|---|---|
inputType |
string |
تنظیمنشده | input_type مشترک برای embeddingهای پرسوجو و سند |
queryInputType |
string |
تنظیمنشده | input_type زمان پرسوجو؛ inputType را بازنویسی میکند |
documentInputType |
string |
تنظیمنشده | input_type شاخص/سند؛ inputType را بازنویسی میکند |
{ agents: { defaults: { memorySearch: { provider: "openai-compatible", remote: { baseUrl: "https://embeddings.example/v1", apiKey: "${EMBEDDINGS_API_KEY}", }, model: "asymmetric-embedder", queryInputType: "query", documentInputType: "passage", }, }, },}تغییر این مقادیر بر هویت کش embedding برای شاخصگذاری دستهای ارائهدهنده اثر میگذارد و وقتی مدل بالادستی با برچسبها رفتار متفاوتی دارد، باید پس از آن بازشاخصگذاری حافظه انجام شود.
Bedrock
پیکربندی embedding در Bedrock
Bedrock از زنجیرهٔ پیشفرض اعتبارنامهٔ AWS SDK استفاده میکند؛ به کلیدهای API نیازی نیست. اگر OpenClaw روی EC2 با نقش نمونهٔ دارای Bedrock فعال اجرا میشود، فقط ارائهدهنده و مدل را تنظیم کنید:
{ agents: { defaults: { memorySearch: { provider: "bedrock", model: "amazon.titan-embed-text-v2:0", }, }, },}| کلید | نوع | پیشفرض | توضیح |
|---|---|---|---|
model |
string |
amazon.titan-embed-text-v2:0 |
هر شناسهٔ مدل embedding در 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-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) پیکربندی مدل پایه را به ارث میبرند.
احراز هویت: احراز هویت Bedrock از ترتیب استاندارد حل اعتبارنامه AWS SDK استفاده میکند:
- متغیرهای محیطی (
AWS_ACCESS_KEY_ID+AWS_SECRET_ACCESS_KEY) - کش توکن SSO
- اعتبارنامههای توکن هویت وب
- فایلهای اعتبارنامه و پیکربندی مشترک
- اعتبارنامههای فراداده ECS یا EC2
منطقه از AWS_REGION، AWS_DEFAULT_REGION، مقدار baseUrl ارائهدهنده amazon-bedrock حل میشود، یا بهطور پیشفرض us-east-1 در نظر گرفته میشود.
مجوزهای IAM: نقش یا کاربر IAM به این موارد نیاز دارد:
{ "Effect": "Allow", "Action": "bedrock:InvokeModel", "Resource": "*"}برای حداقلسازی سطح دسترسی، دامنه InvokeModel را به مدل مشخص محدود کنید:
arn:aws:bedrock:*::foundation-model/amazon.titan-embed-text-v2:0Local (GGUF + llama.cpp)
| کلید | نوع | پیشفرض | توضیح |
|---|---|---|---|
local.modelPath |
string |
دانلود خودکار | مسیر فایل مدل GGUF |
local.modelCacheDir |
string |
پیشفرض node-llama-cpp | پوشه کش برای مدلهای دانلودشده |
local.contextSize |
number | "auto" |
4096 |
اندازه پنجره زمینه برای زمینه embedding. مقدار 4096 قطعههای رایج (128 تا 512 توکن) را پوشش میدهد و در عین حال VRAM غیرمرتبط با وزنها را محدود میکند. روی میزبانهای محدود، آن را به 1024 تا 2048 کاهش دهید. "auto" از بیشینه آموزشدیده مدل استفاده میکند؛ برای مدلهای 8B+ توصیه نمیشود (Qwen3-Embedding-8B: 40 960 توکن → حدود 32 GB VRAM در برابر حدود 8.8 GB در 4096). |
ابتدا ارائهدهنده رسمی llama.cpp را نصب کنید: openclaw plugins install @openclaw/llama-cpp-provider.
مدل پیشفرض: embeddinggemma-300m-qat-Q8_0.gguf (حدود 0.6 GB، دانلود خودکار). checkoutهای منبع همچنان به تأیید ساخت بومی نیاز دارند: pnpm approve-builds سپس pnpm rebuild node-llama-cpp.
از CLI مستقل برای تأیید همان مسیر ارائهدهندهای استفاده کنید که Gateway استفاده میکند:
openclaw memory status --deep --agent mainopenclaw memory index --force --agent mainبرای embeddingهای محلی GGUF مقدار provider: "local" را صراحتاً تنظیم کنید. ارجاعهای مدل hf: و HTTP(S) برای پیکربندیهای محلی صریح پشتیبانی میشوند، اما ارائهدهنده پیشفرض را تغییر نمیدهند.
مهلت زمانی embedding درونخطی
sync.embeddingBatchTimeoutSecondsnumberمهلت زمانی دستههای embedding درونخطی را هنگام نمایهسازی حافظه بازنویسی کنید.
در صورت تنظیمنبودن، از پیشفرض ارائهدهنده استفاده میشود: 600 ثانیه برای ارائهدهندههای محلی/خودمیزبان مانند local، ollama، و lmstudio، و 120 ثانیه برای ارائهدهندههای میزبانیشده. وقتی دستههای embedding وابسته به CPU محلی سالم اما کند هستند، این مقدار را افزایش دهید.
پیکربندی جستوجوی ترکیبی
همه موارد زیر memorySearch.query.hybrid قرار دارند:
| کلید | نوع | پیشفرض | توضیح |
|---|---|---|---|
enabled |
boolean |
true |
فعالسازی جستوجوی ترکیبی BM25 + برداری |
vectorWeight |
number |
0.7 |
وزن امتیازهای برداری (0-1) |
textWeight |
number |
0.3 |
وزن امتیازهای BM25 (0-1) |
candidateMultiplier |
number |
4 |
ضریب اندازه مجموعه نامزدها |
MMR (diversity)
| کلید | نوع | پیشفرض | توضیح |
|---|---|---|---|
mmr.enabled |
boolean |
false |
فعالسازی بازرتبهبندی MMR |
mmr.lambda |
number |
0.7 |
0 = بیشینه تنوع، 1 = بیشینه ارتباط |
Temporal decay (recency)
| کلید | نوع | پیشفرض | توضیح |
|---|---|---|---|
temporalDecay.enabled |
boolean |
false |
فعالسازی تقویت تازگی |
temporalDecay.halfLifeDays |
number |
30 |
امتیاز هر N روز نصف میشود |
فایلهای همیشهسبز (MEMORY.md، فایلهای بدون تاریخ در memory/) هرگز دچار افت نمیشوند.
مثال کامل
{ agents: { defaults: { memorySearch: { query: { hybrid: { vectorWeight: 0.7, textWeight: 0.3, mmr: { enabled: true, lambda: 0.7 }, temporalDecay: { enabled: true, halfLifeDays: 30 }, }, }, }, }, },}مسیرهای حافظهٔ اضافی
| کلید | نوع | توضیح |
|---|---|---|
extraPaths |
string[] |
دایرکتوریها یا فایلهای اضافی برای نمایهسازی |
{ agents: { defaults: { memorySearch: { extraPaths: ["../team-docs", "/srv/shared-notes"], }, }, },}مسیرها میتوانند مطلق یا نسبی به فضای کاری باشند. دایرکتوریها بهصورت بازگشتی برای فایلهای .md پویش میشوند. نحوهٔ مدیریت پیوندهای نمادین به backend فعال بستگی دارد: موتور داخلی پیوندهای نمادین را نادیده میگیرد، در حالی که QMD از رفتار پویشگر زیربنایی QMD پیروی میکند.
برای جستوجوی رونوشت میانعاملی با دامنهٔ عامل، بهجای memory.qmd.paths از agents.list[].memorySearch.qmd.extraCollections استفاده کنید. این مجموعههای اضافی همان شکل { path, name, pattern? } را دنبال میکنند، اما بهازای هر عامل ادغام میشوند و وقتی مسیر به بیرون از فضای کاری فعلی اشاره میکند، میتوانند نامهای مشترک صریح را حفظ کنند. اگر همان مسیر حلشده هم در memory.qmd.paths و هم در memorySearch.qmd.extraCollections ظاهر شود، QMD اولین ورودی را نگه میدارد و مورد تکراری را نادیده میگیرد.
حافظهٔ چندوجهی (Gemini)
تصاویر و صدا را در کنار Markdown با استفاده از Gemini Embedding 2 نمایهسازی کنید:
| کلید | نوع | پیشفرض | توضیح |
|---|---|---|---|
multimodal.enabled |
boolean |
false |
فعالسازی نمایهسازی چندوجهی |
multimodal.modalities |
string[] |
-- | ["image"]، ["audio"]، یا ["all"] |
multimodal.maxFileBytes |
number |
10000000 |
بیشینهٔ اندازهٔ فایل برای نمایهسازی |
قالبهای پشتیبانیشده: .jpg، .jpeg، .png، .webp، .gif، .heic، .heif (تصاویر)؛ .mp3، .wav، .ogg، .opus، .m4a، .aac، .flac (صدا).
کش تعبیه
| کلید | نوع | پیشفرض | توضیح |
|---|---|---|---|
cache.enabled |
boolean |
true |
کش کردن تعبیههای قطعهها در SQLite |
cache.maxEntries |
number |
50000 |
بیشینهٔ تعبیههای کششده |
از تعبیهسازی دوبارهٔ متن بدون تغییر هنگام نمایهسازی دوباره یا بهروزرسانی رونوشت جلوگیری میکند.
نمایهسازی دستهای
| کلید | نوع | پیشفرض | توضیح |
|---|---|---|---|
remote.nonBatchConcurrency |
number |
4 |
تعبیههای درونخطی موازی |
remote.batch.enabled |
boolean |
false |
فعالسازی API تعبیهٔ دستهای |
remote.batch.concurrency |
number |
2 |
کارهای دستهای موازی |
remote.batch.wait |
boolean |
true |
انتظار برای تکمیل دسته |
remote.batch.pollIntervalMs |
number |
-- | فاصلهٔ نظرسنجی |
remote.batch.timeoutMinutes |
number |
-- | مهلت زمانی دسته |
برای openai، gemini و voyage در دسترس است. دستهای OpenAI معمولاً برای پرکردنهای بزرگ سریعترین و ارزانترین گزینه است.
remote.nonBatchConcurrency فراخوانیهای تعبیهٔ درونخطی را کنترل میکند که توسط ارائهدهندگان محلی/خودمیزبان و ارائهدهندگان میزبانیشده، وقتی APIهای دستهای ارائهدهنده فعال نیستند، استفاده میشوند. مقدار پیشفرض Ollama برای نمایهسازی غیردستهای 1 است تا از فشار بیش از حد به میزبانهای محلی کوچکتر جلوگیری شود؛ روی ماشینهای بزرگتر مقدار بالاتری تنظیم کنید.
این گزینه جدا از sync.embeddingBatchTimeoutSeconds است که مهلت زمانی فراخوانیهای تعبیهٔ درونخطی را کنترل میکند.
جستوجوی حافظهٔ نشست (آزمایشی)
رونوشتهای نشست را نمایهسازی کنید و آنها را از طریق memory_search نمایش دهید:
| کلید | نوع | پیشفرض | توضیح |
|---|---|---|---|
experimental.sessionMemory |
boolean |
false |
فعالسازی نمایهسازی نشست |
sources |
string[] |
["memory"] |
افزودن "sessions" برای شامل کردن رونوشتها |
sync.sessions.deltaBytes |
number |
100000 |
آستانهٔ بایت برای نمایهسازی دوباره |
sync.sessions.deltaMessages |
number |
50 |
آستانهٔ پیام برای نمایهسازی دوباره |
برخوردهای رونوشت نشست نیز از
tools.sessions.visibility پیروی میکنند. قابلیت دید پیشفرض
tree فقط نشست فعلی و نشستهایی را که از آن ایجاد شدهاند آشکار میکند. برای
یادآوری یک نشست نامرتبطِ همان عامل که از طریق Gateway اعزام شده و از نشستی دیگر،
مانند یک DM، آمده است، قابلیت دید را عمداً به agent گسترش دهید (یا فقط زمانی
که یادآوری بینعاملی نیز لازم است و سیاست عاملبهعامل اجازه میدهد، به all).
نمونههای زیر این تنظیمات را زیر agents.defaults قرار میدهند. همچنین میتوانید
تنظیمات معادل memorySearch را در یک بازنویسی ویژهٔ هر عامل اعمال کنید، زمانی که فقط یک
عامل باید رونوشتهای نشست را نمایهسازی و جستوجو کند.
برای یادآوری Gateway به DM در همان عامل:
Builtin backend
{ agents: { defaults: { memorySearch: { experimental: { sessionMemory: true }, sources: ["memory", "sessions"], }, }, }, tools: { sessions: { visibility: "agent" }, },}QMD backend
{ agents: { defaults: { memorySearch: { experimental: { sessionMemory: true }, sources: ["memory", "sessions"], }, }, }, memory: { backend: "qmd", qmd: { sessions: { enabled: true }, }, }, tools: { sessions: { visibility: "agent" }, },}هنگام استفاده از QMD، agents.defaults.memorySearch.experimental.sessionMemory و
sources: ["sessions"] بهتنهایی رونوشتها را به QMD صادر نمیکنند. همچنین
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) |
پیکربندی backend در QMD
برای فعالسازی، memory.backend = "qmd" را تنظیم کنید. همهٔ تنظیمات QMD زیر memory.qmd قرار دارند:
| کلید | نوع | پیشفرض | توضیح |
|---|---|---|---|
command |
string |
qmd |
مسیر فایل اجرایی QMD؛ وقتی PATH سرویس با پوستهٔ شما متفاوت است، یک مسیر مطلق تنظیم کنید |
searchMode |
string |
search |
فرمان جستوجو: search، vsearch، query |
rerank |
boolean |
-- | با searchMode: "query" و QMD 2.1+ روی false تنظیم کنید تا بازرتبهبندی QMD رد شود |
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، کاوشگرهای آمادگی برداری معنایی یا نگهداری embedding در QMD را اجرا نمیکند؛ vsearch و query همچنان به آمادگی برداری QMD و embeddingها نیاز دارند.
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 مسیر سازگاری بهازای هر مجموعه را نگه میدارند. هممنبع یعنی مجموعههای حافظهٔ پایدار با هم گروهبندی میشوند، در حالی که مجموعههای رونوشت نشست یک گروه جدا میمانند تا تنوعبخشی منبع همچنان هر دو ورودی را داشته باشد.
زمانبندی بهروزرسانی
| کلید | نوع | پیشفرض | توضیح |
|---|---|---|---|
update.interval |
string |
5m |
بازه بازخوانی |
update.debounceMs |
number |
15000 |
تغییرات فایل را debounce میکند |
update.onBoot |
boolean |
true |
هنگام باز شدن مدیر QMD بلندمدت بازخوانی میکند؛ برای رد کردن بهروزرسانی فوری هنگام راهاندازی، روی false بگذارید |
update.startup |
string |
off |
مقداردهی اولیه اختیاری QMD هنگام شروع Gateway: off، idle، یا immediate |
update.startupDelayMs |
number |
120000 |
تاخیر پیش از اجرای بازخوانی startup: "idle" |
update.waitForBootSync |
boolean |
false |
باز شدن مدیر را تا کامل شدن بازخوانی اولیه آن مسدود میکند |
update.embedInterval |
string |
-- | آهنگ جداگانه embed |
update.commandTimeoutMs |
number |
-- | مهلت زمانی برای دستورهای QMD |
update.updateTimeoutMs |
number |
-- | مهلت زمانی برای عملیات بهروزرسانی QMD |
update.embedTimeoutMs |
number |
-- | مهلت زمانی برای عملیات embed در QMD |
محدودیتها
| کلید | نوع | پیشفرض | توضیح |
|---|---|---|---|
limits.maxResults |
number |
6 |
حداکثر نتایج جستوجو |
limits.maxSnippetChars |
number |
-- | طول snippet را محدود میکند |
limits.maxInjectedChars |
number |
-- | کل نویسههای تزریقشده را محدود میکند |
limits.timeoutMs |
number |
4000 |
مهلت زمانی جستوجو |
دامنه
کنترل میکند کدام نشستها میتوانند نتایج جستوجوی QMD را دریافت کنند. همان schema مانند session.sendPolicy است:
{ memory: { qmd: { scope: { default: "deny", rules: [{ action: "allow", match: { chatType: "direct" } }], }, }, },}پیشفرض ارسالشده، نشستهای مستقیم و کانال را مجاز میکند، در حالی که همچنان گروهها را رد میکند.
پیشفرض فقط DM است. match.keyPrefix با کلید نشست نرمالسازیشده مطابقت میدهد؛ match.rawKeyPrefix با کلید خام شامل agent:<id>: مطابقت میدهد.
ارجاعها
memory.citations روی همه backendها اعمال میشود:
| مقدار | رفتار |
|---|---|
auto (پیشفرض) |
پاصفحه Source: <path#line> را در snippetها درج میکند |
on |
همیشه پاصفحه را درج میکند |
off |
پاصفحه را حذف میکند (مسیر همچنان بهصورت داخلی به عامل داده میشود) |
وقتی مقداردهی اولیه QMD هنگام شروع Gateway فعال باشد، OpenClaw فقط برای عاملهای واجد شرایط QMD را شروع میکند. اگر update.onBoot برابر true باشد و نگهداری interval/embed پیکربندی نشده باشد، startup از یک مدیر یکباره برای بازخوانی هنگام راهاندازی استفاده میکند و سپس آن را میبندد. اگر یک بازه بهروزرسانی یا embed پیکربندی شده باشد، startup مدیر QMD بلندمدت را باز میکند تا مالک watcher و تایمرهای interval باشد؛ update.onBoot: false فقط بازخوانی فوری هنگام راهاندازی را رد میکند.
نمونه کامل QMD
{ memory: { backend: "qmd", citations: "auto", qmd: { includeDefaultMemory: true, update: { interval: "5m", debounceMs: 15000 }, limits: { maxResults: 6, 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 پیکربندی میشود، نه زیر agents.defaults.memorySearch.
Dreaming بهصورت یک sweep زمانبندیشده اجرا میشود و از فازهای داخلی سبک/عمیق/REM بهعنوان جزئیات پیادهسازی استفاده میکند.
برای رفتار مفهومی و دستورهای اسلش، Dreaming را ببینید.
تنظیمات کاربر
| کلید | نوع | پیشفرض | توضیح |
|---|---|---|---|
enabled |
boolean |
false |
Dreaming را بهطور کامل فعال یا غیرفعال میکند |
frequency |
string |
0 3 * * * |
ریتم اختیاری Cron برای sweep کامل Dreaming |
model |
string |
مدل پیشفرض | بازنویسی اختیاری مدل زیرعامل دفترچه رویا |
phases.deep.maxPromotedSnippetTokens |
number |
160 |
حداکثر tokenهای تخمینی نگهداشتهشده از هر snippet فراخوانی کوتاهمدت که به MEMORY.md ارتقا یافته است؛ metadata منشأ همچنان قابل مشاهده میماند |
نمونه
{ 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", }, }, }, }, },}