Technical reference

مرجع پیکربندی حافظه

این صفحه همه گزینه‌های پیکربندی جست‌وجوی حافظه OpenClaw را فهرست می‌کند. برای مرورهای مفهومی، ببینید:

همه تنظیمات مشترک حافظه در سطح بالای memory در openclaw.json قرار دارند. پیش‌فرض‌های جست‌وجو از memory.search و بازنویسی‌های جست‌وجوی مختص هر عامل از agents.entries.*.memory.search استفاده می‌کنند.


به‌خاطرسپاری میان مکالمات

کلید نوع پیش‌فرض توضیحات
rememberAcrossConversations boolean برای نصب‌های شخصی روشن؛ با جداسازی پیکربندی‌شده پیام مستقیم خاموش استفاده از زمینه مرتبطِ سایر مکالمات خصوصی شناخته‌شده این عامل.

وقتی فقط یک عامل شخصی مورداعتماد باید از یادآوری رونوشت میان مکالمات استفاده کند، آن را برای همان عامل پیکربندی کنید:

json5
{  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 یا چند میزبان امکان می‌دهد تعبیه‌سازی‌های حافظه را به یک نقطه پایانی محلی مشخص اختصاص دهند:

json5
{  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 اضافی (ادغام‌شده با پیش‌فرض‌های ارائه‌دهنده).

json5
{  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 را بازنویسی می‌کند
json5
{  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 اجرا می‌شود، فقط ارائه‌دهنده و مدل را تنظیم کنید:

json5
{  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 می‌رود:

  1. متغیرهای محیطی (AWS_ACCESS_KEY_ID + AWS_SECRET_ACCESS_KEY)، مگر اینکه AWS_PROFILE نیز تنظیم شده باشد
  2. SSO (فقط هنگامی که فیلدهای SSO پیکربندی شده باشند)
  3. فایل‌های اشتراکی اعتبارنامه و پیکربندی (fromIni، شامل AWS_PROFILE)
  4. فرایند اعتبارنامه (credential_process در فایل پیکربندی AWS)
  5. اعتبارنامه‌های توکن هویت وب
  6. اعتبارنامه‌های فرادادهٔ نمونهٔ ECS یا EC2

مجوزهای IAM: نقش یا کاربر IAM به موارد زیر نیاز دارد:

json
{  "Effect": "Allow",  "Action": "bedrock:InvokeModel",  "Resource": "*"}

برای رعایت اصل حداقل سطح دسترسی، دامنهٔ InvokeModel را به مدل مشخص محدود کنید:

text
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 مستقل استفاده کنید:

bash
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 و کاهش زمانی طبق سیاست داخلی موتور غیرفعال باقی می‌مانند.

نمونهٔ کامل

json5
{  memory: {    search: {      query: {        maxResults: 6,        minScore: 0.35,      },    },  },}

مسیرهای حافظهٔ اضافی

کلید نوع توضیحات
extraPaths string[] پوشه‌ها یا فایل‌های اضافی برای نمایه‌سازی
json5
{  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 به پیام خصوصی:

بک‌اند داخلی

json5
{  memory: {    search: {      experimental: { sessionMemory: true },      sources: ["memory", "sessions"],    },  },  tools: {    sessions: { visibility: "agent" },  },}

بک‌اند QMD

json5
{  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 است:

json5
{  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

json5
{  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 ارتقا می‌یابد؛ فراداده منشأ قابل‌مشاهده باقی می‌ماند

مثال

json5
{  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",          },        },      },    },  },}

مرتبط

Was this useful?
On this page

On this page