Memory
OpenClaw memory is plain Markdown in the agent workspace. Fayllar — haqiqatning yagona manbai; model faqat diskka yozilgan narsalarnigina “eslab qoladi”.- Xotira qidiruv vositalari faol xotira plagini tomonidan taqdim etiladi (standart:
memory-core). 12. Xotira plaginlariniplugins.slots.memory = "none"bilan o‘chiring.
13. Xotira fayllari (Markdown)
Standart ish muhiti joylashuvi ikki xotira qatlamidan foydalanadi:memory/YYYY-MM-DD.md- 16. Kundalik jurnal (faqat qo‘shib boriladi).
-
- Sessiya boshida bugun + kecha o‘qiladi.
-
MEMORY.md(ixtiyoriy)
- Saralangan uzoq muddatli xotira.
-
- Faqat asosiy, shaxsiy sessiyada yuklanadi (hech qachon guruh kontekstlarida emas).
- Bu fayllar workspace ostida joylashgan (
agents.defaults.workspace, standart~/.openclaw/workspace). 22. To‘liq tuzilma uchun Agent workspace ga qarang.
23. Qachon xotiraga yozish
-
- Qarorlar, afzalliklar va barqaror faktlar
MEMORY.mdga yoziladi.
- Qarorlar, afzalliklar va barqaror faktlar
-
- Kundalik eslatmalar va davomiy kontekst
memory/YYYY-MM-DD.mdga yoziladi.
- Kundalik eslatmalar va davomiy kontekst
-
- Agar kimdir “buni eslab qol” desa, uni yozib qo‘ying (RAM’da saqlamang).
-
- Bu soha hali ham rivojlanmoqda. 28. Modelga xotirani saqlashni eslatib turish foydali; u nima qilishni biladi.
-
- Agar biror narsa mustahkam saqlanishini istasangiz, botdan uni xotiraga yozishni so‘rang.
30. Avtomatik xotira flush (pre-kompaktsiya ping)
-
Sessiya avto-kompaktsiyaga yaqinlashganda, OpenClaw jim, agentlik burilishini ishga tushiradi va kontekst ixchamlashtirilishidan oldin barqaror xotirani yozishni eslatadi. 32. Standart promptlar model _javob berishi mumkin_ligini aniq aytadi, ammo odatda
NO_REPLYto‘g‘ri javob bo‘ladi, shunda foydalanuvchi bu burilishni ko‘rmaydi. -
Bu
agents.defaults.compaction.memoryFlushorqali boshqariladi:
- Tafsilotlar:
-
- Yumshoq chegarasi: flush sessiya tokenlar taxmini
contextWindow - reserveTokensFloor - softThresholdTokensdan oshganda ishga tushadi.
- Yumshoq chegarasi: flush sessiya tokenlar taxmini
-
- Jim standart holatda: promptlar
NO_REPLYni o‘z ichiga oladi, shuning uchun hech narsa yetkazilmaydi.
- Jim standart holatda: promptlar
-
- Ikki prompt: foydalanuvchi prompti va tizim prompti eslatmani qo‘shib yuboradi.
-
- Har bir kompaktsiya sikliga bitta flush (
sessions.jsonda kuzatiladi).
- Har bir kompaktsiya sikliga bitta flush (
-
- Workspace yoziladigan bo‘lishi kerak: agar sessiya
workspaceAccess: "ro"yoki"none"bilan sandbox’da ishlasa, flush o‘tkazib yuboriladi.
- Workspace yoziladigan bo‘lishi kerak: agar sessiya
42. Vektorli xotira qidiruvi
-
OpenClaw
MEMORY.mdvamemory/*.mdustida kichik vektor indeksini qurishi mumkin, shunda semantik so‘rovlar ifoda boshqacha bo‘lsa ham bog‘liq yozuvlarni topa oladi. - Standart sozlamalar:
-
- Standart holatda yoqilgan.
-
- Xotira fayllaridagi o‘zgarishlarni kuzatadi (debounced).
agents.defaults.memorySearchostida memory qidiruvini sozlang (yuqori darajadagimemorySearchemas).-
- Standart holatda masofaviy embeddinglardan foydalanadi. 48. Agar
memorySearch.providero‘rnatilmagan bo‘lsa, OpenClaw avtomatik tanlaydi: -
local— agarmemorySearch.local.modelPathsozlangan bo‘lsa va fayl mavjud bo‘lsa.
-
openai— agar OpenAI kalitini aniqlash mumkin bo‘lsa.
gemini, agar Gemini kalitini aniqlash mumkin bo‘lsa.voyage, agar Voyage kalitini aniqlash mumkin bo‘lsa.- Aks holda, sozlanmaguncha xotira qidiruvi o‘chirilgan holatda qoladi.
- Standart holatda masofaviy embeddinglardan foydalanadi. 48. Agar
- Mahalliy rejim node-llama-cpp’dan foydalanadi va
pnpm approve-buildstalab qilinishi mumkin. - SQLite ichida vektor qidiruvini tezlashtirish uchun (mavjud bo‘lsa) sqlite-vec’dan foydalanadi.
models.providers.*.apiKey yoki muhit o‘zgaruvchilaridan aniqlaydi. Codex OAuth faqat chat/completions’ni qamrab oladi va xotira qidiruvi uchun embedding talablarini qondirmaydi. Gemini uchun GEMINI_API_KEY yoki
models.providers.google.apiKey dan foydalaning. Voyage uchun VOYAGE_API_KEY yoki
models.providers.voyage.apiKey dan foydalaning. Maxsus OpenAI-mos endpoint’dan foydalanganda,
memorySearch.remote.apiKey (va ixtiyoriy memorySearch.remote.headers) ni sozlang.
QMD backend (eksperimental)
O‘rnatilgan SQLite indeksatorini QMD bilan almashtirish uchunmemory.backend = "qmd" ni sozlang: bu BM25 + vektorlar + qayta reytinglashni birlashtiruvchi
mahalliy-first qidiruv sidecar’idir. Markdown haqiqatning yagona manbai bo‘lib qoladi; OpenClaw
qidiruv uchun QMD’ga murojaat qiladi. Asosiy nuqtalar:
Sidecar qanday ishlaydi
- Standart holatda o‘chirilgan. Har bir konfiguratsiya bo‘yicha yoqiladi (
memory.backend = "qmd"). - Kolleksiyalar
memory.qmd.pathsdanqmd collection addorqali yaratiladi (hamda standart ish maydoni xotira fayllari), so‘ngqmd update+qmd embedishga tushishda va sozlanadigan intervalda (memory.qmd.update.interval, standart 5 daq) bajariladi. - Endi ishga tushishdagi yangilash standart bo‘yicha fon rejimida ishlaydi, shunda chat ishga tushishi bloklanmaydi;
oldingi bloklovchi xatti-harakatni saqlash uchun
memory.qmd.update.waitForBootSync = trueni sozlang. - QMD to‘liq mahalliy tarzda Bun +
node-llama-cpporqali ishlaydi va birinchi ishga tushishda HuggingFace’dan GGUF modellarini avtomatik yuklab oladi (alohida Ollama demoni talab qilinmaydi). - OpenClaw hozircha QMD embedding batch-size sozlamalarini ochib bermaydi; batch xatti-harakati QMD’ning o‘zi tomonidan boshqariladi.
- OS qo‘llab-quvvatlashi: Bun + SQLite o‘rnatilgach, macOS va Linux darhol ishlaydi. Windows eng yaxshi WSL2 orqali qo‘llab-quvvatlanadi.
memory.qmd.*)
command(standartqmd): bajariladigan fayl yo‘lini almashtirish.includeDefaultMemory(standarttrue):MEMORY.md+memory/**/*.mdni avtomatik indekslash.paths[]: qo‘shimcha kataloglar/fayllarni qo‘shish (path, ixtiyoriypattern, ixtiyoriy barqarorname).sessions: sessiya JSONL indekslashiga qo‘shilish (enabled,retentionDays,exportDir).- Qidiruvlar
memory.qmd.searchModeorqali bajariladi (standartqmd search --json; shuningdekvsearchvaqueryni ham qo‘llab-quvvatlaydi). Agar tanlangan rejim sizning QMD build’ingizda flag’larni rad etsa, OpenClawqmd querybilan qayta urinib ko‘radi. Agar QMD ishlamay qolsa yoki binary mavjud bo‘lmasa, OpenClaw avtomatik ravishda ichki SQLite manager’ga o‘tadi, shunda memory toollari ishlashda davom etadi. limits: recall yuklamasini cheklash (maxResults,maxSnippetChars,maxInjectedChars,timeoutMs).- Birinchi qidiruv sekin bo‘lishi mumkin: birinchi
qmd queryishga tushirilganda QMD mahalliy GGUF modellarini (reranker/query expansion) yuklab olishi mumkin.-
OpenClaw QMD’ni ishga tushirganda
XDG_CONFIG_HOME/XDG_CACHE_HOMEni avtomatik sozlaydi. -
Agar modellarni qo‘lda oldindan yuklab olishni xohlasangiz (va OpenClaw ishlatadigan ayni indeksni qizdirsangiz),
agentning XDG kataloglari bilan bir martalik so‘rovni ishga tushiring.
OpenClaw’ning QMD holati state dir ostida joylashadi (standart
~/.openclaw). Xuddi shu indeksgaqmdni yo‘naltirish uchun OpenClaw ishlatadigan XDG o‘zgaruvchilarini eksport qilishingiz mumkin:
-
OpenClaw QMD’ni ishga tushirganda
command(standartqmd): bajariladigan fayl yo‘lini almashtirish.searchMode(standartsearch):memory_searchuchun qaysi QMD buyrug‘i ishlatilishini tanlang (search,vsearch,query).includeDefaultMemory(standarttrue):MEMORY.md+memory/**/*.mdni avtomatik indekslash.paths[]: qo‘shimcha kataloglar/fayllarni qo‘shish (path, ixtiyoriypattern, ixtiyoriy barqarorname).sessions: sessiya JSONL indekslashiga qo‘shilish (enabled,retentionDays,exportDir).update: yangilash davriyligi va texnik xizmat bajarilishini boshqaradi: (interval,debounceMs,onBoot,waitForBootSync,embedInterval,commandTimeoutMs,updateTimeoutMs,embedTimeoutMs).limits: recall yuklamasini cheklash (maxResults,maxSnippetChars,maxInjectedChars,timeoutMs).scope:session.sendPolicybilan bir xil sxema. Standart holatda faqat DM (denyhammasi,allowto‘g‘ridan-to‘g‘ri chatlar); guruhlar/kanallarda QMD natijalarini ko‘rsatish uchun uni bo‘shating.match.keyPrefixnormallashtirilgan session key bilan mos keladi (kichik harflarga o‘tkazilgan va boshidagiagent:<id>:olib tashlangan). Misol:discord:channel:.match.rawKeyPrefixxom session key bilan mos keladi (kichik harflarga o‘tkazilgan),agent:<id>:ni o‘z ichiga oladi. Misol:agent:main:discord:.- Legacy:
match.keyPrefix: "agent:..."hali ham raw-key prefix sifatida qabul qilinadi, ammo aniqlik uchunrawKeyPrefixdan foydalanish tavsiya etiladi.
-
- Jo‘natuvchi E.164 (masalan
+15551234567) bo‘yichapeer.kind: "direct"bilan moslang.
- Jo‘natuvchi E.164 (masalan
- Ish maydonidan tashqaridan olingan snippet’lar
memory_searchnatijalaridaqmd/<collection>/<relative-path>ko‘rinishida paydo bo‘ladi;memory_getbu prefiksni tushunadi va sozlangan QMD kolleksiya ildizidan o‘qiydi. memory.qmd.sessions.enabled = truebo‘lganda, OpenClaw tozalangan sessiya transkriptlarini (User/Assistant navbatlari) alohida QMD kolleksiyasiga~/.openclaw/agents/<id>/qmd/sessions/ostiga eksport qiladi, shundamemory_searcho‘rnatilgan SQLite indeksiga tegmasdan yaqinda bo‘lgan suhbatlarni eslab qolishi mumkin.memory_searchsnippet’lari endimemory.citationsauto/onbo‘lgandaSource: <path#line>pastki izohini o‘z ichiga oladi; yo‘l metama’lumotini ichki saqlab qolish uchunmemory.citations = "off"ni sozlang (agent baribirmemory_getuchun yo‘lni oladi, ammo snippet matni pastki izohsiz bo‘ladi va tizim prompti agentni uni keltirmaslik haqida ogohlantiradi).
memory.citationsbackend’dan qat’i nazar qo‘llanadi (auto/on/off).qmdishga tushganda, diagnostika natijalarni qaysi dvigatel berganini ko‘rsatishi uchunstatus().backend = "qmd"deb belgilaymiz. Agar QMD subprocessi to‘xtasa yoki JSON chiqishini tahlil qilib bo‘lmasa, qidiruv menejeri ogohlantirishni logga yozadi va QMD tiklanguncha o‘rnatilgan provayderni (mavjud Markdown embeddinglari) qaytaradi.
Qo‘shimcha xotira yo‘llari
Eslatmalar:- Yo‘llar mutlaq yoki ish maydoniga nisbatan bo‘lishi mumkin.
- Kataloglar
.mdfayllar uchun rekursiv tarzda skan qilinadi. - Faqat Markdown fayllari indekslanadi.
- Symlinklar (fayl yoki kataloglar) e’tiborga olinmaydi.
Gemini embeddinglari (mahalliy)
Eslatmalar:remote konfiguratsiyasidan foydalanishingiz mumkin:
remote.baseUrlixtiyoriy (standart bo‘yicha Gemini API bazaviy URL’i).remote.headerskerak bo‘lsa qo‘shimcha sarlavhalarni qo‘shish imkonini beradi.- Standart model:
gemini-embedding-001.
memorySearch.provider = "local" dan foydalaning yoki memorySearch.fallback = "none" qilib qo‘ying.
memorySearch.provider = "local" dan foydalaning yoki memorySearch.fallback = "none" qilib qo‘ying.
Paketli indekslash (OpenAI + Gemini):
memorySearch.fallbackopenai,gemini,localyokinonebo‘lishi mumkin.- Standart xatti-harakat paket yakunlanishini kutadi; kerak bo‘lsa
remote.batch.wait,remote.batch.pollIntervalMsvaremote.batch.timeoutMinutesni sozlang.
- Standart bo‘yicha o‘chiq. Katta korpuslarni indekslash uchun yoqish maqsadida
agents.defaults.memorySearch.remote.batch.enabled = trueni o‘rnating (OpenAI, Gemini va Voyage). - OpenAI Batch API ish yuklamalari uchun chegirmali narxlarni taklif qiladi, shuning uchun katta indekslash ishlarida bir xil so‘rovlarni sinxron yuborishga qaraganda odatda arzonroq bo‘ladi.
- Batafsil ma’lumot uchun OpenAI Batch API hujjatlari va narxlariga qarang:
- Paket rejimi
memorySearch.provider = "openai"yoki"gemini"bo‘lganda qo‘llanadi va mos API kalitidan foydalanadi. - Gemini paketli ishlar async embedding batch endpoint’dan foydalanadi va Gemini Batch API mavjud bo‘lishini talab qiladi.
- Katta hajmdagi backfilllar uchun OpenAI odatda biz qo‘llab-quvvatlaydigan eng tez variant, chunki ko‘plab embedding so‘rovlarini bitta paketli ishda yuborib, ularni OpenAI tomonidan asinxron qayta ishlashga topshira olamiz.
- OpenAI Batch API ish yuklamalari uchun chegirmali narxlarni taklif qiladi, shuning uchun katta indekslash ishlarida bir xil so‘rovlarni sinxron yuborishga qaraganda odatda arzonroq bo‘ladi.
- Batafsil ma’lumot uchun OpenAI Batch API hujjatlari va narxlariga qarang:
agents.defaults.memorySearch.provider = "local"qilib sozlang.agents.defaults.memorySearch.local.modelPathni taqdim eting (GGUF yokihf:URI).
agents.defaults.memorySearch.provider = "local"qilib sozlang.agents.defaults.memorySearch.local.modelPathni taqdim eting (GGUF yokihf:URI).- Ixtiyoriy: masofaviy zaxiraga o‘tishni oldini olish uchun
agents.defaults.memorySearch.fallback = "none"ni sozlang.
Xotira asboblari qanday ishlaydi
memory_searchMEMORY.md+memory/**/*.mddan Markdown bo‘laklarini (~400 token maqsad, 80-token overlap) semantik qidiradi. 1. U parcha matnini (taxminan ~700 belgigacha cheklangan), fayl yo‘li, qatorlar oralig‘i, ball, provayder/model va lokal → masofaviy embeddinglarga qaytish bo‘lgan-bo‘lmaganini qaytaradi. 2. To‘liq fayl yuklamasi qaytarilmaydi.-
memory_getma’lum bir xotira Markdown faylini (workspace-ga nisbiy) o‘qiydi, ixtiyoriy ravishda boshlang‘ich qatordan va N qator uchun. Session management + compaction.
-
- Ikkala vosita ham faqat
memorySearch.enabledagent uchun true bo‘lib hal bo‘lganda yoqiladi.
- Ikkala vosita ham faqat
Agar ulardan birortasi o‘zgarsa, OpenClaw avtomatik ravishda butun omborni qayta tiklaydi va qayta indekslaydi.
- Yoqilganda, OpenClaw quyidagilarni birlashtiradi:
-
- Indeks saqlanishi: har bir agent uchun SQLite
~/.openclaw/memory/<agentId>.sqliteda (agents.defaults.memorySearch.store.pathorqali sozlanadi,{agentId}tokenini qo‘llab-quvvatlaydi).
- Indeks saqlanishi: har bir agent uchun SQLite
-
- Yangilanish:
MEMORY.md+memory/uchun kuzatuvchi indeksni “iflos” deb belgilaydi (debounce 1.5s). 10. Sinxronlash sessiya boshlanishida, qidiruvda yoki interval bo‘yicha rejalashtiriladi va asinxron ishlaydi. 11. Sessiya transkriptlari fon sinxronlashni ishga tushirish uchun delta chegaralaridan foydalanadi.
- Yangilanish:
-
- Qayta indekslash triggerlari: indeks embedding provayder/model + endpoint fingerprint + bo‘laklash (chunking) parametrlari ni saqlaydi.
MEMORY.md/memory/tashqarisidagi yo‘llar rad etiladi.
- Qayta indekslash triggerlari: indeks embedding provayder/model + endpoint fingerprint + bo‘laklash (chunking) parametrlari ni saqlaydi.
Agar ulardan birortasi o‘zgarsa, OpenClaw avtomatik ravishda butun omborni qayta tiklaydi va qayta indekslaydi.
- Yoqilganda, OpenClaw quyidagilarni birlashtiradi:
- Gibrid qidiruv (BM25 + vektor)
-
- BM25 kalit-so‘z dolzarbligi (IDlar, muhit o‘zgaruvchilari, kod belgilariga o‘xshash aniq tokenlar)
- Agar platformangizda to‘liq matnli qidiruv mavjud bo‘lmasa, OpenClaw faqat vektorli qidiruvga qaytadi.
19. Nega gibrid?
- Vektorli qidiruv “bu xuddi shu ma’noni anglatadi” holatlarida juda zo‘r:
-
- “Mac Studio gateway host” va “gateway’ni ishga tushirayotgan mashina”
-
- “debounce file updates” va “har bir yozishda indekslashdan qochish”
- Ammo u aniq, yuqori signalga ega tokenlarda kuchsiz bo‘lishi mumkin:
-
- IDlar (
a828e60,b3b9895a…)
- IDlar (
-
- kod belgilari (
memorySearch.query.hybrid)
- kod belgilari (
-
- xato satrlari (“sqlite-vec unavailable”)
- BM25 (to‘liq matn) buning teskarisi: aniq tokenlarda kuchli, parafrazalarda kuchsizroq.
- Gibrid qidiruv — amaliy o‘rtacha yechim: ikkala retrieval signalidan foydalanish, shunda ham “tabiiy til” so‘rovlari, ham “pichan ichidagi igna” so‘rovlari uchun yaxshi natijalar olinadi.
29. Natijalarni qanday birlashtiramiz (joriy dizayn)
- Amalga oshirish eskizi:
-
- Har ikki tomondan nomzodlar havzasini olish:
-
- Vektor: kosinus o‘xshashligi bo‘yicha
maxResults * candidateMultiplierta eng yuqori natija.
- Vektor: kosinus o‘xshashligi bo‘yicha
-
- BM25: FTS5 BM25 reytingi bo‘yicha
maxResults * candidateMultiplierta eng yuqori natija (kichikroq — yaxshiroq).
- BM25: FTS5 BM25 reytingi bo‘yicha
-
- BM25 reytingini 0..1 ga o‘xshash ballga aylantirish:
textScore = 1 / (1 + max(0, bm25Rank))
-
- Nomzodlarni bo‘lak (chunk) ID bo‘yicha birlashtirib, og‘irliklangan ballni hisoblash:
finalScore = vectorWeight * vectorScore + textWeight * textScore
- Izohlar:
-
vectorWeight+textWeightkonfiguratsiyani hal qilishda 1.0 ga normallashtiriladi, shuning uchun og‘irliklar foiz sifatida ishlaydi.
-
- Agar embeddinglar mavjud bo‘lmasa (yoki provayder nol-vektor qaytarsa), biz baribir BM25 ni ishga tushiramiz va kalit-so‘z mosliklarini qaytaramiz.
-
- Agar FTS5 yaratilmasa, vektor-only qidiruvni saqlab qolamiz (qat’iy xato yo‘q).
- Bu “IR-nazariya bo‘yicha mukammal” emas, lekin sodda, tez va real yozuvlarda eslab qolish/aniqlikni yaxshilashga moyil.
- Keyinroq yanada murakkablashtirmoqchi bo‘lsak, odatiy keyingi qadamlar — Reciprocal Rank Fusion (RRF) yoki aralashtirishdan oldin ballarni normallashtirish (min/max yoki z-score).
- Konfiguratsiya:
46. Embedding keshi
- OpenClaw bo‘lak embeddinglarini SQLite’da keshlashi mumkin, shunda qayta indekslash va tez-tez yangilanishlar (ayniqsa sessiya transkriptlari) o‘zgarmagan matnni qayta embedding qilmaydi.
- Konfiguratsiya:
50. Sessiya xotirasi bo‘yicha qidiruv (eksperimental)
- Ixtiyoriy ravishda sessiya transkriptlarini indekslashingiz va ularni
memory_searchorqali ko‘rsatishingiz mumkin. - Bu tajriba (experimental) flagi ortida yashiringan.
- Eslatmalar:
-
- Sessiyani indekslash ixtiyoriy (sukut bo‘yicha o‘chiq).
-
- Sessiya yangilanishlari debounce qilinadi va delta chegaralaridan oshgach asinxron tarzda indekslanadi (best-effort).
-
memory_searchhech qachon indekslashni kutib turmaydi; fon sinxronlash tugaguncha natijalar biroz eskirgan bo‘lishi mumkin.
-
- Natijalar hanuz faqat parchalarni (snippets) o‘z ichiga oladi;
memory_getfaqat xotira fayllari bilan cheklangan.
- Natijalar hanuz faqat parchalarni (snippets) o‘z ichiga oladi;
-
- Sessiya indekslash har bir agent uchun alohida (faqat o‘sha agentning sessiya jurnallari indekslanadi).
-
- Sessiya jurnallari diskda joylashadi (
~/.openclaw/agents/<agentId>/sessions/*.jsonl). 11. Fayl tizimiga kirish huquqiga ega bo‘lgan har qanday jarayon/foydalanuvchi ularni o‘qishi mumkin, shuning uchun diskka kirishni ishonch chegarasi sifatida ko‘ring. 12. Qattiqroq izolyatsiya uchun agentlarni alohida OS foydalanuvchilari yoki xostlar ostida ishga tushiring.
- Sessiya jurnallari diskda joylashadi (
- Delta chegaralari (ko‘rsatilgan sukut bo‘yicha qiymatlar):
15. SQLite vektor tezlatilishi (sqlite-vec)
-
sqlite-vec kengaytmasi mavjud bo‘lganda, OpenClaw embeddinglarni
SQLite virtual jadvalida (
vec0) saqlaydi va vektor masofa so‘rovlarini ma’lumotlar bazasida bajaradi. 17. Bu barcha embeddinglarni JS ichiga yuklamasdan qidiruvni tez saqlaydi. - Konfiguratsiya (ixtiyoriy):
- Eslatmalar:
-
enabledsukut bo‘yicha true; o‘chirilganda qidiruv saqlangan embeddinglar ustida jarayon ichidagi kosinus o‘xshashligiga qaytadi.
-
- Agar sqlite-vec kengaytmasi yo‘q bo‘lsa yoki yuklanmasa, OpenClaw xatoni logga yozadi va JS fallback bilan davom etadi (vektor jadvalsiz).
-
extensionPathbiriktirilgan sqlite-vec yo‘lini bekor qiladi (maxsus buildlar yoki noodatiy o‘rnatish joylari uchun foydali).
24. Mahalliy embeddingni avtomatik yuklab olish
- Standart lokal embedding modeli:
hf:ggml-org/embeddinggemma-300m-qat-q8_0-GGUF/embeddinggemma-300m-qat-Q8_0.gguf(~0.6 GB). -
memorySearch.provider = "local"bo‘lganda,node-llama-cppmodelPathni aniqlaydi; agar GGUF yo‘q bo‘lsa, u avtomatik yuklab olinadi (keshga yokilocal.modelCacheDiro‘rnatilgan bo‘lsa o‘sha joyga), so‘ng yuklanadi. 27. Yuklab olishlar qayta urinishda davom ettiriladi.
-
- Native build talabi:
pnpm approve-buildsni ishga tushiring,node-llama-cppni tanlang, so‘ngpnpm rebuild node-llama-cpp.
- Native build talabi:
-
- Fallback: agar mahalliy sozlama muvaffaqiyatsiz bo‘lsa va
memorySearch.fallback = "openai"bo‘lsa, biz avtomatik ravishda masofaviy embeddinglarga o‘tamiz (openai/text-embedding-3-small, agar o‘zgartirilmagan bo‘lsa) va sababini qayd etamiz.
- Fallback: agar mahalliy sozlama muvaffaqiyatsiz bo‘lsa va
30. Maxsus OpenAI-mos endpoint misoli
- Eslatmalar:
-
remote.*models.providers.openai.*dan ustun turadi.
-
remote.headersOpenAI headerlari bilan birlashtiriladi; kalitlar to‘qnashganda remote ustun bo‘ladi. 35. OpenAI sukut bo‘yicha qiymatlaridan foydalanish uchunremote.headersni tashlab yuboring.