diff --git a/docs/uk/cli/memory.md b/docs/uk/cli/memory.md index 163cda74c..1f0329065 100644 --- a/docs/uk/cli/memory.md +++ b/docs/uk/cli/memory.md @@ -2,14 +2,14 @@ read_when: - Ви хочете індексувати або шукати семантичну пам’ять - Ви налагоджуєте доступність пам’яті або індексування - - Ви хочете перенести відновлену короткочасну пам’ять до `MEMORY.md` -summary: Довідка CLI для `openclaw memory` (status/index/search/promote/promote-explain/rem-harness) + - Ви хочете перенести відновлену короткострокову пам’ять до `MEMORY.md` +summary: Довідник CLI для `openclaw memory` (status/index/search/promote/promote-explain/rem-harness) title: Пам’ять x-i18n: - generated_at: "2026-04-27T12:59:58Z" + generated_at: "2026-04-27T13:13:07Z" model: gpt-5.4 provider: openai - source_hash: 965bcd0373e0146a0b1dac7e8166cab84e0d368c1d7d186e78a335f971917974 + source_hash: 53301e82d4ebe72b161b3a58078e7b75b9e499bc55cbceec5032c7e410619bd4 source_path: cli/memory.md workflow: 15 --- @@ -22,7 +22,7 @@ x-i18n: Пов’язане: - Концепція Memory: [Пам’ять](/uk/concepts/memory) -- Вікі Memory: [Вікі пам’яті](/uk/plugins/memory-wiki) +- Вікі Memory: [Вікі Memory](/uk/plugins/memory-wiki) - CLI вікі: [wiki](/uk/cli/wiki) - Плагіни: [Плагіни](/uk/tools/plugin) @@ -53,97 +53,97 @@ openclaw memory index --agent main --verbose `memory status` і `memory index`: -- `--agent `: обмежити одним агентом. Без цього параметра ці команди виконуються для кожного налаштованого агента; якщо список агентів не налаштовано, вони повертаються до типового агента. -- `--verbose`: виводити докладні журнали під час перевірок та індексування. +- `--agent `: обмежити однією агентою. Без цього ці команди виконуються для кожної налаштованої агенти; якщо список агентів не налаштовано, вони повертаються до типової агенти. +- `--verbose`: виводити докладні журнали під час перевірок і індексування. `memory status`: -- `--deep`: перевірити доступність векторів і embedding. Звичайна команда `memory status` залишається швидкою і не виконує живий ping embedding. -- `--index`: виконати повторне індексування, якщо сховище забруднене (має на увазі `--deep`). -- `--fix`: виправити застарілі блокування recall і нормалізувати метадані перенесення. -- `--json`: вивести результат у форматі JSON. +- `--deep`: перевірити доступність векторів і вбудовувань. Звичайний `memory status` лишається швидким і не виконує живий ping вбудовувань. Лексичний QMD `searchMode: "search"` пропускає перевірки семантичних векторів і обслуговування вбудовувань навіть із `--deep`. +- `--index`: запустити переіндексацію, якщо сховище брудне (має на увазі `--deep`). +- `--fix`: виправити застарілі блокування відновлення та нормалізувати метадані просування. +- `--json`: вивести JSON. -Якщо `memory status` показує `Dreaming status: blocked`, це означає, що керований Cron Dreaming увімкнено, але Heartbeat, який його запускає, не спрацьовує для типового агента. Див. [Dreaming never runs](/uk/concepts/dreaming#dreaming-never-runs-status-shows-blocked) для двох найпоширеніших причин. +Якщо `memory status` показує `Dreaming status: blocked`, керований Cron Dreaming увімкнений, але Heartbeat, який його запускає, не спрацьовує для типової агенти. Див. [Dreaming never runs](/uk/concepts/dreaming#dreaming-never-runs-status-shows-blocked) щодо двох поширених причин. `memory index`: -- `--force`: примусово виконати повне повторне індексування. +- `--force`: примусово виконати повну переіндексацію. `memory search`: - Вхід запиту: передайте або позиційний `[query]`, або `--query `. -- Якщо передано обидва, перевагу має `--query`. -- Якщо не передано жодного, команда завершується з помилкою. -- `--agent `: обмежити одним агентом (типово: типовий агент). +- Якщо вказано обидва, пріоритет має `--query`. +- Якщо не вказано жодного, команда завершується з помилкою. +- `--agent `: обмежити однією агентою (типово: типова агента). - `--max-results `: обмежити кількість повернених результатів. -- `--min-score `: відфільтрувати збіги з низьким балом. -- `--json`: вивести результати у форматі JSON. +- `--min-score `: відфільтрувати збіги з низькою оцінкою. +- `--json`: вивести результати у JSON. `memory promote`: -Попередній перегляд і застосування перенесення короткочасної пам’яті. +Попередній перегляд і застосування просування короткострокової пам’яті. ```bash openclaw memory promote [--apply] [--limit ] [--include-promoted] ``` -- `--apply` -- записати перенесення до `MEMORY.md` (типово: лише попередній перегляд). +- `--apply` -- записати просування до `MEMORY.md` (типово: лише попередній перегляд). - `--limit ` -- обмежити кількість показаних кандидатів. -- `--include-promoted` -- включити записи, уже перенесені в попередніх циклах. +- `--include-promoted` -- включити записи, уже просунуті в попередніх циклах. Повні параметри: -- Ранжує короткочасних кандидатів із `memory/YYYY-MM-DD.md` за допомогою зважених сигналів перенесення (`frequency`, `relevance`, `query diversity`, `recency`, `consolidation`, `conceptual richness`). -- Використовує короткочасні сигнали як із recall пам’яті, так і з щоденних проходів ingest, а також легкі сигнали підкріплення фаз light/REM. -- Коли Dreaming увімкнено, `memory-core` автоматично керує одним завданням Cron, яке запускає повний цикл (`light -> REM -> deep`) у фоновому режимі (ручне `openclaw cron add` не потрібне). -- `--agent `: обмежити одним агентом (типово: типовий агент). +- Ранжує короткострокових кандидатів із `memory/YYYY-MM-DD.md` за зваженими сигналами просування (`frequency`, `relevance`, `query diversity`, `recency`, `consolidation`, `conceptual richness`). +- Використовує короткострокові сигнали як із відновлень пам’яті, так і з щоденних проходів поглинання, а також сигнали підсилення фаз light/REM. +- Коли Dreaming увімкнено, `memory-core` автоматично керує одним завданням Cron, яке запускає повний цикл (`light -> REM -> deep`) у фоновому режимі (ручний `openclaw cron add` не потрібен). +- `--agent `: обмежити однією агентою (типово: типова агента). - `--limit `: максимальна кількість кандидатів для повернення/застосування. -- `--min-score `: мінімальний зважений бал перенесення. -- `--min-recall-count `: мінімальна кількість recall, потрібна для кандидата. -- `--min-unique-queries `: мінімальна кількість унікальних запитів, потрібна для кандидата. -- `--apply`: додати вибраних кандидатів до `MEMORY.md` і позначити їх як перенесені. -- `--include-promoted`: включити до виводу кандидатів, уже перенесених раніше. -- `--json`: вивести результат у форматі JSON. +- `--min-score `: мінімальна зважена оцінка просування. +- `--min-recall-count `: мінімальна кількість відновлень, потрібна для кандидата. +- `--min-unique-queries `: мінімальна кількість різних запитів, потрібна для кандидата. +- `--apply`: додати вибраних кандидатів до `MEMORY.md` і позначити їх як просунуті. +- `--include-promoted`: включити вивід уже просунутих кандидатів. +- `--json`: вивести JSON. `memory promote-explain`: -Пояснити конкретного кандидата на перенесення і розбивку його оцінки. +Пояснити конкретного кандидата на просування та розклад його оцінки. ```bash openclaw memory promote-explain [--agent ] [--include-promoted] [--json] ``` - ``: ключ кандидата, фрагмент шляху або фрагмент уривка для пошуку. -- `--agent `: обмежити одним агентом (типово: типовий агент). -- `--include-promoted`: включити вже перенесених кандидатів. -- `--json`: вивести результат у форматі JSON. +- `--agent `: обмежити однією агентою (типово: типова агента). +- `--include-promoted`: включити вже просунутих кандидатів. +- `--json`: вивести JSON. `memory rem-harness`: -Попередньо переглянути REM-рефлексії, кандидатів на істини та результат deep-перенесення без жодного запису. +Попередньо переглянути REM-рефлексії, кандидатні істини та вивід deep-просування без будь-якого запису. ```bash openclaw memory rem-harness [--agent ] [--include-promoted] [--json] ``` -- `--agent `: обмежити одним агентом (типово: типовий агент). -- `--include-promoted`: включити вже перенесених deep-кандидатів. -- `--json`: вивести результат у форматі JSON. +- `--agent `: обмежити однією агентою (типово: типова агента). +- `--include-promoted`: включити вже просунутих deep-кандидатів. +- `--json`: вивести JSON. ## Dreaming Dreaming — це фонова система консолідації пам’яті з трьома кооперативними -фазами: **light** (сортування/підготовка короткочасного матеріалу), **deep** (перенесення -стійких фактів до `MEMORY.md`) і **REM** (рефлексія та виявлення тем). +фазами: **light** (сортування/підготовка короткострокового матеріалу), **deep** (просування +сталих фактів до `MEMORY.md`) і **REM** (рефлексія та виявлення тем). - Увімкніть через `plugins.entries.memory-core.config.dreaming.enabled: true`. -- Перемикайте з чату командою `/dreaming on|off` (або переглядайте через `/dreaming status`). -- Dreaming працює за одним керованим розкладом циклів (`dreaming.frequency`) і виконує фази в порядку: light, REM, deep. -- Лише фаза deep записує стійку пам’ять до `MEMORY.md`. -- Зрозумілий для людини вивід фаз і записи щоденника записуються до `DREAMS.md` (або наявного `dreams.md`), з необов’язковими звітами по фазах у `memory/dreaming//YYYY-MM-DD.md`. -- Ранжування використовує зважені сигнали: частоту recall, релевантність отримання, різноманітність запитів, часову давність, консолідацію між днями та похідну концептуальну насиченість. -- Перед записом до `MEMORY.md` перенесення повторно зчитує актуальну щоденну нотатку, тож відредаговані або видалені короткочасні уривки не будуть перенесені зі застарілих знімків сховища recall. -- Заплановані й ручні запуски `memory promote` використовують однакові типові значення фази deep, якщо ви не передасте перевизначення порогів через CLI. +- Перемикайте з чату за допомогою `/dreaming on|off` (або перевіряйте через `/dreaming status`). +- Dreaming працює за одним керованим розкладом циклу (`dreaming.frequency`) і виконує фази в порядку: light, REM, deep. +- Лише фаза deep записує сталу пам’ять до `MEMORY.md`. +- Людинозрозумілий вивід фаз і записи щоденника пишуться до `DREAMS.md` (або наявного `dreams.md`), з необов’язковими звітами по фазах у `memory/dreaming//YYYY-MM-DD.md`. +- Ранжування використовує зважені сигнали: частота відновлення, релевантність витягування, різноманіття запитів, часова новизна, міжденна консолідація та похідне концептуальне багатство. +- Під час просування перед записом до `MEMORY.md` повторно читається жива щоденна нотатка, тож відредаговані або видалені короткострокові уривки не будуть просунуті зі застарілих знімків сховища відновлень. +- Заплановані та ручні запуски `memory promote` використовують однакові типові значення фази deep, якщо ви не передасте перевизначення порогів через CLI. - Автоматичні запуски розподіляються між налаштованими робочими просторами пам’яті. Типовий розклад: @@ -173,16 +173,16 @@ Dreaming — це фонова система консолідації пам’ - `memory index --verbose` виводить подробиці по фазах (провайдер, модель, джерела, активність пакетів). - `memory status` включає всі додаткові шляхи, налаштовані через `memorySearch.extraPaths`. -- Якщо фактично активні поля ключів віддаленого API пам’яті налаштовані як SecretRefs, команда розв’язує ці значення з активного знімка Gateway. Якщо Gateway недоступний, команда завершується помилкою одразу. -- Примітка щодо розсинхронізації версій Gateway: цей шлях команди потребує Gateway, який підтримує `secrets.resolve`; старіші Gateway повертають помилку unknown-method. -- Налаштовуйте частоту запланованих циклів через `dreaming.frequency`. Політика deep-перенесення інакше є внутрішньою; використовуйте прапорці CLI в `memory promote`, коли потрібні одноразові ручні перевизначення. -- `memory rem-harness --path --grounded` попередньо переглядає прив’язані до джерела `What Happened`, `Reflections` і `Possible Lasting Updates` з історичних щоденних нотаток без жодного запису. -- `memory rem-backfill --path ` записує зворотні прив’язані до джерела записи щоденника в `DREAMS.md` для перегляду в UI. -- `memory rem-backfill --path --stage-short-term` також додає прив’язаних до джерела стійких кандидатів до активного короткочасного сховища перенесення, щоб звичайна фаза deep могла їх ранжувати. -- `memory rem-backfill --rollback` видаляє раніше записані прив’язані до джерела записи щоденника, а `memory rem-backfill --rollback-short-term` видаляє раніше підготовлених прив’язаних до джерела короткочасних кандидатів. -- Див. [Dreaming](/uk/concepts/dreaming) для повних описів фаз і довідки з конфігурації. +- Якщо поля ключів віддаленого API active memory, які фактично використовуються, налаштовані як SecretRefs, команда отримує ці значення з активного знімка Gateway. Якщо Gateway недоступний, команда швидко завершується з помилкою. +- Примітка про розсинхронізацію версій Gateway: цей шлях команди потребує Gateway, який підтримує `secrets.resolve`; старіші Gateway повертають помилку unknown-method. +- Налаштуйте частоту запланованого циклу через `dreaming.frequency`. Політика deep-просування в іншому разі є внутрішньою; використовуйте прапорці CLI в `memory promote`, коли потрібні разові ручні перевизначення. +- `memory rem-harness --path --grounded` попередньо переглядає прив’язані до джерела `What Happened`, `Reflections` і `Possible Lasting Updates` з історичних щоденних нотаток без будь-якого запису. +- `memory rem-backfill --path ` записує оборотні прив’язані до джерела записи щоденника в `DREAMS.md` для перегляду в інтерфейсі. +- `memory rem-backfill --path --stage-short-term` також засіває прив’язаних до джерела сталих кандидатів до живого короткострокового сховища просування, щоб звичайна фаза deep могла їх ранжувати. +- `memory rem-backfill --rollback` видаляє раніше записані прив’язані до джерела записи щоденника, а `memory rem-backfill --rollback-short-term` видаляє раніше підготовлених прив’язаних до джерела короткострокових кандидатів. +- Див. [Dreaming](/uk/concepts/dreaming) для повного опису фаз і довідника з налаштування. ## Пов’язане -- [Довідка CLI](/uk/cli) +- [Довідник CLI](/uk/cli) - [Огляд пам’яті](/uk/concepts/memory) diff --git a/docs/uk/concepts/memory-qmd.md b/docs/uk/concepts/memory-qmd.md index e23771d8b..de2d2141d 100644 --- a/docs/uk/concepts/memory-qmd.md +++ b/docs/uk/concepts/memory-qmd.md @@ -1,40 +1,41 @@ --- read_when: - Ви хочете налаштувати QMD як свій бекенд пам’яті - - Вам потрібні розширені функції пам’яті, як-от переранжування або додаткові проіндексовані шляхи -summary: Локальний насамперед пошуковий sidecar із BM25, векторами, переранжуванням і розширенням запиту -title: рушій пам’яті QMD + - Вам потрібні розширені можливості пам’яті, як-от reranking або додаткові індексовані шляхи +summary: Локальний sidecar для пошуку з BM25, векторами, reranking і розширенням запиту +title: Рушій пам’яті QMD x-i18n: - generated_at: "2026-04-25T07:28:36Z" + generated_at: "2026-04-27T13:13:08Z" model: gpt-5.4 provider: openai - source_hash: 89e6a5e0c8f5fb8507dffd08975fec0ca6fda03883079a27c2a28a1d09e95368 + source_hash: f19cfee3cd94ee0bfff97f2758e788790ade628f89ecdf99bf954e2894a2e7e8 source_path: concepts/memory-qmd.md workflow: 15 --- -[QMD](https://github.com/tobi/qmd) — це локальний насамперед пошуковий sidecar, який працює -поруч із OpenClaw. Він поєднує BM25, векторний пошук і переранжування в одному -бінарному файлі, а також може індексувати вміст за межами файлів пам’яті вашого робочого простору. +[QMD](https://github.com/tobi/qmd) — це локальний sidecar для пошуку, який працює +поруч з OpenClaw. Він поєднує BM25, векторний пошук і reranking в одному +бінарному файлі та може індексувати вміст поза файлами пам’яті вашого робочого +простору. -## Що він додає понад вбудоване рішення +## Що він додає порівняно з вбудованим рушієм -- **Переранжування та розширення запиту** для кращого охоплення результатів. -- **Індексування додаткових директорій** — документація проєкту, нотатки команди, будь-що на диску. -- **Індексування транскриптів сесій** — відтворення попередніх розмов. -- **Повністю локальна робота** — працює з додатковим runtime-пакетом node-llama-cpp і +- **Reranking і розширення запиту** для кращого охоплення. +- **Індексація додаткових директорій** — документація проєкту, нотатки команди, будь-що на диску. +- **Індексація транскриптів сесій** — для згадування попередніх розмов. +- **Повністю локально** — працює з необов’язковим пакетом середовища виконання node-llama-cpp і автоматично завантажує моделі GGUF. -- **Автоматичний резервний перехід** — якщо QMD недоступний, OpenClaw безшовно повертається - до вбудованого рушія. +- **Автоматичний fallback** — якщо QMD недоступний, OpenClaw безшовно повертається до + вбудованого рушія. -## Початок роботи +## Швидкий початок ### Передумови -- Встановіть QMD: `npm install -g @tobilu/qmd` або `bun install -g @tobilu/qmd` +- Установіть QMD: `npm install -g @tobilu/qmd` або `bun install -g @tobilu/qmd` - Збірка SQLite, яка дозволяє розширення (`brew install sqlite` на macOS). -- QMD має бути в `PATH` Gateway. -- macOS і Linux працюють одразу. Windows найкраще підтримується через WSL2. +- QMD має бути в `PATH` шлюзу. +- macOS і Linux працюють одразу. На Windows найкраща підтримка через WSL2. ### Увімкнення @@ -46,35 +47,36 @@ x-i18n: } ``` -OpenClaw створює самодостатню домашню директорію QMD у +OpenClaw створює самодостатній домашній каталог QMD у `~/.openclaw/agents//qmd/` і автоматично керує життєвим циклом sidecar — -колекції, оновлення та запуск вбудовування обробляються автоматично. -Він надає перевагу поточним формам колекцій QMD і запитів MCP, але за потреби -все одно повертається до застарілих прапорців колекцій `--mask` і старіших -імен інструментів MCP. -Узгодження під час запуску також відтворює застарілі керовані колекції до їхніх -канонічних шаблонів, коли ще присутня старіша колекція QMD з тією самою назвою. +колекції, оновлення та запуск embedding обробляються автоматично. +Він надає перевагу актуальним формам колекцій QMD і запитів MCP, але за потреби +все одно повертається до застарілих прапорців колекцій `--mask` і старіших назв інструментів MCP. +Погодження під час запуску також повторно створює застарілі керовані колекції за їхніми +канонічними шаблонами, якщо старіша колекція QMD з тією самою назвою все ще присутня. ## Як працює sidecar -- OpenClaw створює колекції з файлів пам’яті вашого робочого простору та будь-яких - налаштованих `memory.qmd.paths`, після чого запускає `qmd update` + `qmd embed` під час запуску - і періодично (типово кожні 5 хвилин). +- OpenClaw створює колекції з файлів пам’яті вашого робочого простору та всіх + налаштованих `memory.qmd.paths`, потім запускає `qmd update` під час запуску й + періодично (типово кожні 5 хвилин). У семантичних режимах також запускається `qmd embed`. - Типова колекція робочого простору відстежує `MEMORY.md` і дерево `memory/`. `memory.md` у нижньому регістрі не індексується як кореневий файл пам’яті. -- Оновлення під час запуску виконується у фоновому режимі, тому запуск чату не блокується. -- Пошук використовує налаштований `searchMode` (типово: `search`; також підтримуються - `vsearch` і `query`). Якщо якийсь режим завершується з помилкою, OpenClaw повторює спробу з `qmd query`. -- Якщо QMD повністю не працює, OpenClaw повертається до вбудованого рушія SQLite. +- Оновлення під час запуску виконується у фоновому режимі, щоб не блокувати старт чату. +- Для пошуку використовується налаштований `searchMode` (типово: `search`; також підтримуються + `vsearch` і `query`). `search` використовує лише BM25, тому OpenClaw пропускає перевірки + готовності семантичних векторів і підтримку embedding у цьому режимі. Якщо режим дає збій, + OpenClaw повторює спробу з `qmd query`. +- Якщо QMD повністю виходить з ладу, OpenClaw повертається до вбудованого рушія SQLite. Перший пошук може бути повільним — QMD автоматично завантажує моделі GGUF (~2 ГБ) для -переранжування та розширення запиту під час першого запуску `qmd query`. +reranking і розширення запиту під час першого запуску `qmd query`. ## Перевизначення моделей -Змінні середовища моделей QMD передаються без змін із процесу Gateway, +Змінні середовища моделей QMD передаються без змін із процесу шлюзу, тому ви можете глобально налаштовувати QMD без додавання нової конфігурації OpenClaw: ```bash @@ -83,10 +85,10 @@ export QMD_RERANK_MODEL="/absolute/path/to/reranker.gguf" export QMD_GENERATE_MODEL="/absolute/path/to/generator.gguf" ``` -Після зміни моделі вбудовування повторно запустіть вбудовування, щоб індекс відповідав +Після зміни моделі embedding повторно запустіть embedding, щоб індекс відповідав новому векторному простору. -## Індексування додаткових шляхів +## Індексація додаткових шляхів Спрямуйте QMD на додаткові директорії, щоб зробити їх доступними для пошуку: @@ -105,9 +107,9 @@ export QMD_GENERATE_MODEL="/absolute/path/to/generator.gguf" результатах пошуку. `memory_get` розуміє цей префікс і читає з правильного кореня колекції. -## Індексування транскриптів сесій +## Індексація транскриптів сесій -Увімкніть індексування сесій, щоб відтворювати попередні розмови: +Увімкніть індексацію сесій, щоб згадувати попередні розмови: ```json5 { @@ -120,8 +122,8 @@ export QMD_GENERATE_MODEL="/absolute/path/to/generator.gguf" } ``` -Транскрипти експортуються як очищені ходи User/Assistant в окрему -колекцію QMD у `~/.openclaw/agents//qmd/sessions/`. +Транскрипти експортуються як санітизовані ходи User/Assistant в окрему колекцію QMD +у `~/.openclaw/agents//qmd/sessions/`. ## Область пошуку @@ -141,58 +143,61 @@ export QMD_GENERATE_MODEL="/absolute/path/to/generator.gguf" } ``` -Коли область дії забороняє пошук, OpenClaw записує попередження з похідними channel і +Коли область видимості забороняє пошук, OpenClaw записує попередження з похідними channel і типом чату, щоб порожні результати було легше налагоджувати. -## Цитування +## Цитати -Коли `memory.citations` має значення `auto` або `on`, пошукові фрагменти містять +Коли `memory.citations` має значення `auto` або `on`, фрагменти пошуку містять нижній колонтитул `Source: `. Установіть `memory.citations = "off"`, щоб прибрати нижній колонтитул, -але при цьому все одно передавати шлях агенту внутрішньо. +водночас усе одно передаючи шлях агенту внутрішньо. -## Коли використовувати +## Коли варто використовувати -Вибирайте QMD, коли вам потрібно: +Обирайте QMD, коли вам потрібно: -- Переранжування для вищої якості результатів. -- Шукати в документації проєкту або нотатках поза робочим простором. -- Відтворювати розмови з минулих сесій. +- Reranking для результатів вищої якості. +- Шукати документацію проєкту або нотатки поза межами робочого простору. +- Згадувати розмови з минулих сесій. - Повністю локальний пошук без API-ключів. -Для простіших сценаріїв [вбудований рушій](/uk/concepts/memory-builtin) добре підходить -і не потребує додаткових залежностей. +Для простіших налаштувань добре підходить [вбудований рушій](/uk/concepts/memory-builtin) +без додаткових залежностей. ## Усунення несправностей -**QMD не знайдено?** Переконайтеся, що бінарний файл є в `PATH` Gateway. Якщо OpenClaw +**QMD не знайдено?** Переконайтеся, що бінарний файл є в `PATH` шлюзу. Якщо OpenClaw працює як сервіс, створіть символічне посилання: `sudo ln -s ~/.bun/bin/qmd /usr/local/bin/qmd`. **Перший пошук дуже повільний?** QMD завантажує моделі GGUF під час першого використання. Попередньо прогрійте -його за допомогою `qmd query "test"` із тими самими директоріями XDG, які використовує OpenClaw. +через `qmd query "test"` з тими самими каталогами XDG, які використовує OpenClaw. + +**QMD лише з BM25 усе ще намагається зібрати llama.cpp?** Установіть +`memory.qmd.searchMode = "search"`. OpenClaw трактує цей режим як суто лексичний, +не запускає перевірки стану векторів QMD або підтримку embedding і залишає +перевірки семантичної готовності для конфігурацій `vsearch` або `query`. **Пошук завершується за тайм-аутом?** Збільште `memory.qmd.limits.timeoutMs` (типово: 4000 мс). Для повільнішого обладнання встановіть `120000`. -**Порожні результати в групових чатах?** Перевірте `memory.qmd.scope` — типово -дозволені лише прямі сесії та сесії каналів. +**Порожні результати в групових чатах?** Перевірте `memory.qmd.scope` — типово він +дозволяє лише прямі сесії та сесії каналів. -**Пошук кореневої пам’яті раптом став надто широким?** Перезапустіть Gateway або дочекайтеся -наступного узгодження під час запуску. OpenClaw відтворює застарілі керовані колекції -до канонічних шаблонів `MEMORY.md` і `memory/`, коли виявляє конфлікт -з однаковою назвою. +**Пошук кореневої пам’яті раптом став надто широким?** Перезапустіть шлюз або дочекайтеся +наступного погодження під час запуску. OpenClaw повторно створює застарілі керовані колекції +за канонічними шаблонами `MEMORY.md` і `memory/`, коли виявляє конфлікт однакових назв. -**Тимчасові репозиторії, видимі в робочому просторі, спричиняють `ENAMETOOLONG` або зламане індексування?** -Обхід QMD зараз дотримується поведінки базового сканера QMD, а не -правил символьних посилань вбудованого рушія OpenClaw. Тримайте тимчасові monorepo checkout-и в -прихованих директоріях, як-от `.tmp/`, або поза індексованими коренями QMD, доки QMD не надасть -безпечний щодо циклів обхід або явні засоби керування виключеннями. +**Тимчасові репозиторії, видимі в робочому просторі, спричиняють `ENAMETOOLONG` або зламану індексацію?** +Обхід QMD наразі дотримується поведінки базового сканера QMD, а не правил символьних посилань +вбудованого рушія OpenClaw. Тримайте тимчасові checkout-и монорепозиторіїв у +прихованих директоріях, таких як `.tmp/`, або поза індексованими коренями QMD, доки QMD не надасть +безпечний до циклів обхід або явні засоби керування виключеннями. ## Конфігурація Щоб переглянути повну поверхню конфігурації (`memory.qmd.*`), режими пошуку, інтервали оновлення, -правила області дії та всі інші параметри, дивіться -[довідник із конфігурації пам’яті](/uk/reference/memory-config). +правила області видимості та всі інші параметри, див. [довідник з конфігурації пам’яті](/uk/reference/memory-config). ## Пов’язане diff --git a/docs/uk/reference/memory-config.md b/docs/uk/reference/memory-config.md index a44cc2895..b1adf6da6 100644 --- a/docs/uk/reference/memory-config.md +++ b/docs/uk/reference/memory-config.md @@ -1,66 +1,66 @@ --- read_when: - - Ви хочете налаштувати провайдерів memory search або embedding-моделі. - - Ви хочете налаштувати QMD backend. - - Ви хочете налаштувати hybrid search, MMR або temporal decay. - - Ви хочете ввімкнути multimodal indexing пам’яті. + - Ви хочете налаштувати провайдерів пошуку в пам’яті або моделі ембедингів + - Ви хочете налаштувати бекенд QMD + - Ви хочете налаштувати гібридний пошук, MMR або часове згасання + - Ви хочете увімкнути мультимодальну індексацію пам’яті sidebarTitle: Memory config -summary: Усі параметри config для memory search, embedding providers, QMD, hybrid search і multimodal indexing -title: довідник з config пам’яті +summary: Усі параметри конфігурації для пошуку в пам’яті, провайдерів ембедингів, QMD, гібридного пошуку та мультимодальної індексації +title: Довідник із конфігурації пам’яті x-i18n: - generated_at: "2026-04-27T11:04:15Z" + generated_at: "2026-04-27T13:13:08Z" model: gpt-5.4 provider: openai - source_hash: 14d879353014792d7a18e26b838519be8c52b2755e7a10f5f8e5ddf5b1ac09cc + source_hash: e063a62b44b7d4fa2df017301cf675678ab71a65f53c78af85f0aa925bb79277 source_path: reference/memory-config.md workflow: 15 --- -На цій сторінці перелічено всі параметри config для memory search в OpenClaw. Концептуальні огляди див. тут: +На цій сторінці перелічено всі параметри конфігурації для пошуку в пам’яті OpenClaw. Для концептуальних оглядів див.: Як працює пам’ять. - Типовий backend SQLite. + Типовий бекенд SQLite. - Локальний sidecar у стилі local-first. + Локально-орієнтований sidecar. Конвеєр пошуку та налаштування. - Субагент пам’яті для інтерактивних сесій. + Підагент пам’яті для інтерактивних сеансів. -Усі налаштування memory search живуть у `agents.defaults.memorySearch` у `openclaw.json`, якщо не зазначено інше. +Усі налаштування пошуку в пам’яті знаходяться в `agents.defaults.memorySearch` у `openclaw.json`, якщо не вказано інше. -Якщо ви шукаєте перемикач функції **Active Memory** і config субагента, він знаходиться в `plugins.entries.active-memory`, а не в `memorySearch`. +Якщо ви шукаєте перемикач функції **active memory** і конфігурацію підагента, вони знаходяться в `plugins.entries.active-memory`, а не в `memorySearch`. -Active Memory використовує модель із двома шлюзами: +Active memory використовує двоетапну модель: -1. Plugin має бути ввімкнений і націлений на поточний id агента -2. запит має належати до придатної інтерактивної постійної сесії чату +1. plugin має бути увімкнений і націлений на поточний id агента +2. запит має бути придатним інтерактивним постійним сеансом чату -Див. [Active Memory](/uk/concepts/active-memory), щоб дізнатися про модель активації, config на боці Plugin, збереження transcript і безпечний шаблон поступового впровадження. +Див. [Active Memory](/uk/concepts/active-memory) щодо моделі активації, конфігурації, якою керує plugin, збереження транскриптів і безпечної схеми розгортання. --- ## Вибір провайдера -| Ключ | Тип | Типове значення | Опис | -| --------- | --------- | --------------- | -------------------------------------------------------------------------------------------------------------- | -| `provider` | `string` | auto-detected | ID embedding adapter: `bedrock`, `gemini`, `github-copilot`, `local`, `mistral`, `ollama`, `openai`, `voyage` | -| `model` | `string` | типове значення провайдера | Назва embedding-моделі | -| `fallback` | `string` | `"none"` | ID fallback adapter, якщо основний завершується помилкою | -| `enabled` | `boolean` | `true` | Увімкнути або вимкнути memory search | +| Ключ | Тип | Типово | Опис | +| ---------- | --------- | ---------------- | ------------------------------------------------------------------------------------------------------------- | +| `provider` | `string` | автоматично визначається | ID адаптера ембедингів: `bedrock`, `gemini`, `github-copilot`, `local`, `mistral`, `ollama`, `openai`, `voyage` | +| `model` | `string` | типове значення провайдера | Назва моделі ембедингів | +| `fallback` | `string` | `"none"` | ID резервного адаптера, якщо основний завершується помилкою | +| `enabled` | `boolean` | `true` | Увімкнути або вимкнути пошук у пам’яті | -### Порядок автовиявлення +### Порядок автовизначення Коли `provider` не задано, OpenClaw вибирає перший доступний: @@ -69,56 +69,56 @@ Active Memory використовує модель із двома шлюзам Вибирається, якщо налаштовано `memorySearch.local.modelPath` і файл існує. - Вибирається, якщо можна визначити токен GitHub Copilot (змінна env або auth profile). + Вибирається, якщо вдається визначити токен GitHub Copilot (змінна середовища або профіль автентифікації). - Вибирається, якщо можна визначити ключ OpenAI. + Вибирається, якщо вдається визначити ключ OpenAI. - Вибирається, якщо можна визначити ключ Gemini. + Вибирається, якщо вдається визначити ключ Gemini. - Вибирається, якщо можна визначити ключ Voyage. + Вибирається, якщо вдається визначити ключ Voyage. - Вибирається, якщо можна визначити ключ Mistral. + Вибирається, якщо вдається визначити ключ Mistral. - Вибирається, якщо ланцюжок credentials AWS SDK успішно визначається (роль інстансу, ключі доступу, profile, SSO, web identity або shared config). + Вибирається, якщо ланцюжок облікових даних AWS SDK успішно визначається (роль екземпляра, ключі доступу, профіль, SSO, веб-ідентичність або спільна конфігурація). `ollama` підтримується, але не визначається автоматично (задайте його явно). -### Визначення API key +### Визначення API-ключа -Для віддалених embeddings потрібен API key. Натомість Bedrock використовує типовий ланцюжок credentials AWS SDK (ролі інстансу, SSO, ключі доступу). +Для віддалених ембедингів потрібен API-ключ. Натомість Bedrock використовує типовий ланцюжок облікових даних AWS SDK (ролі екземпляра, SSO, ключі доступу). -| Провайдер | Змінна env | Ключ config | -| -------------- | -------------------------------------------------- | --------------------------------- | -| Bedrock | ланцюжок credentials AWS | API key не потрібен | -| Gemini | `GEMINI_API_KEY` | `models.providers.google.apiKey` | -| GitHub Copilot | `COPILOT_GITHUB_TOKEN`, `GH_TOKEN`, `GITHUB_TOKEN` | Auth profile через device login | -| Mistral | `MISTRAL_API_KEY` | `models.providers.mistral.apiKey` | -| Ollama | `OLLAMA_API_KEY` (placeholder) | -- | -| OpenAI | `OPENAI_API_KEY` | `models.providers.openai.apiKey` | -| Voyage | `VOYAGE_API_KEY` | `models.providers.voyage.apiKey` | +| Провайдер | Змінна середовища | Ключ конфігурації | +| -------------- | ------------------------------------------------- | -------------------------------- | +| Bedrock | ланцюжок облікових даних AWS | API-ключ не потрібен | +| 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` | -Codex OAuth покриває лише chat/completions і не задовольняє embedding-запити. +Codex OAuth покриває лише chat/completions і не задовольняє запити ембедингів. --- -## Config віддаленого endpoint +## Конфігурація віддаленої кінцевої точки -Для кастомних OpenAI-compatible endpoint або перевизначення типових значень провайдера: +Для користувацьких OpenAI-сумісних кінцевих точок або перевизначення типових значень провайдера: - Кастомний базовий URL API. + Користувацька базова URL-адреса API. - Перевизначає API key. + Перевизначити API-ключ. Додаткові HTTP-заголовки (об’єднуються з типовими значеннями провайдера). @@ -143,28 +143,28 @@ Codex OAuth покриває лише chat/completions і не задоволь --- -## Специфічний для провайдера config +## Конфігурація для окремих провайдерів - | Ключ | Тип | Типове значення | Опис | - | ---------------------- | -------- | --------------------- | ------------------------------------------ | - | `model` | `string` | `gemini-embedding-001` | Також підтримує `gemini-embedding-2-preview` | - | `outputDimensionality` | `number` | `3072` | Для Embedding 2: 768, 1536 або 3072 | + | Ключ | Тип | Типово | Опис | + | ---------------------- | -------- | ---------------------- | ------------------------------------------ | + | `model` | `string` | `gemini-embedding-001` | Також підтримується `gemini-embedding-2-preview` | + | `outputDimensionality` | `number` | `3072` | Для Embedding 2: 768, 1536 або 3072 | - Зміна `model` або `outputDimensionality` запускає автоматичне повне переіндексування. + Зміна моделі або `outputDimensionality` запускає автоматичну повну переіндексацію. - OpenAI-compatible embedding endpoint можуть використовувати специфічні для провайдера поля запиту `input_type`. Це корисно для асиметричних embedding-моделей, яким потрібні різні мітки для query embeddings і document embeddings. + OpenAI-сумісні кінцеві точки ембедингів можуть використовувати специфічні для провайдера поля запиту `input_type`. Це корисно для асиметричних моделей ембедингів, яким потрібні різні мітки для ембедингів запиту та документа. - | Ключ | Тип | Типове значення | Опис | - | ------------------- | -------- | --------------- | ----------------------------------------------------- | - | `inputType` | `string` | не задано | Спільний `input_type` для query і document embeddings | - | `queryInputType` | `string` | не задано | `input_type` під час query; перевизначає `inputType` | - | `documentInputType` | `string` | не задано | `input_type` для індексу/документа; перевизначає `inputType` | + | Ключ | Тип | Типово | Опис | + | ------------------- | -------- | ------ | ----------------------------------------------------- | + | `inputType` | `string` | не задано | Спільний `input_type` для ембедингів запиту й документа | + | `queryInputType` | `string` | не задано | `input_type` під час запиту; перевизначає `inputType` | + | `documentInputType` | `string` | не задано | `input_type` для індексу/документа; перевизначає `inputType` | ```json5 { @@ -185,11 +185,11 @@ Codex OAuth покриває лише chat/completions і не задоволь } ``` - Зміна цих значень впливає на ідентичність кешу embeddings для batch-індексування провайдера, і після цього слід виконати переіндексування пам’яті, якщо upstream-модель по-різному обробляє ці мітки. + Зміна цих значень впливає на ідентичність кешу ембедингів для пакетної індексації провайдера, і після цього слід виконати переіндексацію пам’яті, якщо вищерозташована модель по-різному обробляє ці мітки. - Bedrock використовує типовий ланцюжок credentials AWS SDK — API key не потрібні. Якщо OpenClaw працює на EC2 з роллю інстансу Bedrock, достатньо просто вказати провайдера та модель: + Bedrock використовує типовий ланцюжок облікових даних AWS SDK — API-ключі не потрібні. Якщо OpenClaw працює на EC2 з роллю екземпляра, у якої ввімкнено Bedrock, просто задайте провайдера і модель: ```json5 { @@ -204,12 +204,12 @@ Codex OAuth покриває лише chat/completions і не задоволь } ``` - | Ключ | Тип | Типове значення | Опис | - | ---------------------- | -------- | ------------------------------- | --------------------------------- | - | `model` | `string` | `amazon.titan-embed-text-v2:0` | Будь-який ID embedding-моделі Bedrock | - | `outputDimensionality` | `number` | типове значення моделі | Для Titan V2: 256, 512 або 1024 | + | Ключ | Тип | Типово | Опис | + | ---------------------- | -------- | ------------------------------ | -------------------------------- | + | `model` | `string` | `amazon.titan-embed-text-v2:0` | Будь-який ID моделі ембедингів Bedrock | + | `outputDimensionality` | `number` | типове значення моделі | Для Titan V2: 256, 512 або 1024 | - **Підтримувані моделі** (з визначенням сімейства та типовими розмірностями): + **Підтримувані моделі** (із визначенням сімейства та типовими розмірностями): | ID моделі | Провайдер | Типові розмірності | Налаштовувані розмірності | | ------------------------------------------ | ---------- | ------------------ | ------------------------- | @@ -224,19 +224,19 @@ Codex OAuth покриває лише chat/completions і не задоволь | `twelvelabs.marengo-embed-3-0-v1:0` | TwelveLabs | 512 | -- | | `twelvelabs.marengo-embed-2-7-v1:0` | TwelveLabs | 1024 | -- | - Варіанти з суфіксом throughput (наприклад, `amazon.titan-embed-text-v1:2:8k`) успадковують конфігурацію базової моделі. + Варіанти з суфіксом пропускної здатності (наприклад, `amazon.titan-embed-text-v1:2:8k`) успадковують конфігурацію базової моделі. - **Автентифікація:** auth Bedrock використовує стандартний порядок визначення credentials AWS SDK: + **Автентифікація:** автентифікація Bedrock використовує стандартний порядок визначення облікових даних AWS SDK: 1. Змінні середовища (`AWS_ACCESS_KEY_ID` + `AWS_SECRET_ACCESS_KEY`) 2. Кеш токенів SSO - 3. Credentials токена web identity - 4. Shared credentials і config-файли - 5. Credentials метаданих ECS або EC2 + 3. Облікові дані токена веб-ідентичності + 4. Спільні файли облікових даних і конфігурації + 5. Облікові дані метаданих ECS або EC2 - Регіон визначається з `AWS_REGION`, `AWS_DEFAULT_REGION`, `baseUrl` провайдера `amazon-bedrock` або типово дорівнює `us-east-1`. + Регіон визначається з `AWS_REGION`, `AWS_DEFAULT_REGION`, `baseUrl` провайдера `amazon-bedrock` або за замовчуванням використовується `us-east-1`. - **Права IAM:** ролі або користувачу IAM потрібно: + **Дозволи IAM:** роль або користувач IAM мають мати: ```json { @@ -246,7 +246,7 @@ Codex OAuth покриває лише chat/completions і не задоволь } ``` - Для мінімально необхідних привілеїв обмежте `InvokeModel` конкретною моделлю: + Для принципу найменших привілеїв обмежте `InvokeModel` конкретною моделлю: ``` arn:aws:bedrock:*::foundation-model/amazon.titan-embed-text-v2:0 @@ -254,13 +254,13 @@ Codex OAuth покриває лише chat/completions і не задоволь - | Ключ | Тип | Типове значення | Опис | - | --------------------- | ------------------ | --------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | - | `local.modelPath` | `string` | автоматично завантажується | Шлях до файлу моделі GGUF | - | `local.modelCacheDir` | `string` | типове значення node-llama-cpp | Каталог кешу для завантажених моделей | - | `local.contextSize` | `number \| "auto"` | `4096` | Розмір вікна контексту для embedding-контексту. 4096 покриває типові chunks (128–512 токенів), водночас обмежуючи VRAM, не пов’язану з вагами. На обмежених хостах знижуйте до 1024–2048. `"auto"` використовує натренований максимум моделі — не рекомендується для моделей 8B+ (Qwen3-Embedding-8B: 40 960 токенів → ~32 GB VRAM проти ~8.8 GB при 4096). | + | Ключ | Тип | Типово | Опис | + | --------------------- | ------------------ | ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | + | `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 токенів → ~32 ГБ VRAM проти ~8.8 ГБ при 4096). | - Типова модель: `embeddinggemma-300m-qat-Q8_0.gguf` (~0.6 GB, завантажується автоматично). Потребує нативної збірки: `pnpm approve-builds`, потім `pnpm rebuild node-llama-cpp`. + Типова модель: `embeddinggemma-300m-qat-Q8_0.gguf` (~0.6 ГБ, завантажується автоматично). Потрібна нативна збірка: `pnpm approve-builds`, потім `pnpm rebuild node-llama-cpp`. Використовуйте окремий CLI, щоб перевірити той самий шлях провайдера, який використовує Gateway: @@ -274,41 +274,41 @@ Codex OAuth покриває лише chat/completions і не задоволь -### Timeout вбудованих embeddings +### Тайм-аут вбудованих ембедингів - Перевизначає timeout для вбудованих пакетів embeddings під час індексування пам’яті. + Перевизначити тайм-аут для вбудованих пакетів ембедингів під час індексації пам’яті. -Якщо не задано, використовується типове значення провайдера: 600 секунд для локальних/self-hosted провайдерів, таких як `local`, `ollama` і `lmstudio`, і 120 секунд для hosted-провайдерів. Збільшуйте це значення, якщо локальні пакети embeddings, обмежені CPU, працюють коректно, але повільно. +Якщо не задано, використовується типове значення провайдера: 600 секунд для локальних/self-hosted провайдерів, таких як `local`, `ollama` і `lmstudio`, та 120 секунд для хостингових провайдерів. Збільшуйте це значення, якщо локальні CPU-обмежені пакети ембедингів працюють коректно, але повільно. --- -## Config hybrid search +## Конфігурація гібридного пошуку -Усе розташовано в `memorySearch.query.hybrid`: +Усе знаходиться в `memorySearch.query.hybrid`: -| Ключ | Тип | Типове значення | Опис | -| --------------------- | --------- | --------------- | ---------------------------------- | -| `enabled` | `boolean` | `true` | Увімкнути hybrid BM25 + vector search | -| `vectorWeight` | `number` | `0.7` | Вага для vector-оцінок (0-1) | -| `textWeight` | `number` | `0.3` | Вага для BM25-оцінок (0-1) | -| `candidateMultiplier` | `number` | `4` | Множник розміру пулу кандидатів | +| Ключ | Тип | Типово | Опис | +| --------------------- | --------- | ------ | ---------------------------------- | +| `enabled` | `boolean` | `true` | Увімкнути гібридний пошук BM25 + векторний пошук | +| `vectorWeight` | `number` | `0.7` | Вага для векторних оцінок (0-1) | +| `textWeight` | `number` | `0.3` | Вага для оцінок BM25 (0-1) | +| `candidateMultiplier` | `number` | `4` | Множник розміру пулу кандидатів | - | Ключ | Тип | Типове значення | Опис | - | ------------- | --------- | --------------- | ------------------------------------- | - | `mmr.enabled` | `boolean` | `false` | Увімкнути MMR re-ranking | - | `mmr.lambda` | `number` | `0.7` | 0 = максимум різноманітності, 1 = максимум релевантності | + | Ключ | Тип | Типово | Опис | + | ------------- | --------- | ------ | ------------------------------------ | + | `mmr.enabled` | `boolean` | `false` | Увімкнути повторне ранжування MMR | + | `mmr.lambda` | `number` | `0.7` | 0 = максимальна різноманітність, 1 = максимальна релевантність | - - | Ключ | Тип | Типове значення | Опис | - | ---------------------------- | --------- | --------------- | ------------------------------ | - | `temporalDecay.enabled` | `boolean` | `false` | Увімкнути boost за давністю | - | `temporalDecay.halfLifeDays` | `number` | `30` | Оцінка зменшується вдвічі кожні N днів | + + | Ключ | Тип | Типово | Опис | + | ---------------------------- | --------- | ------ | ------------------------- | + | `temporalDecay.enabled` | `boolean` | `false` | Увімкнути буст за новизною | + | `temporalDecay.halfLifeDays` | `number` | `30` | Оцінка зменшується вдвічі кожні N днів | - Evergreen-файли (`MEMORY.md`, файли без дати в `memory/`) ніколи не піддаються decay. + Для незмінних файлів (`MEMORY.md`, файли без дат у `memory/`) згасання ніколи не застосовується. @@ -338,8 +338,8 @@ Codex OAuth покриває лише chat/completions і не задоволь ## Додаткові шляхи пам’яті -| Ключ | Тип | Опис | -| ----------- | ---------- | ---------------------------------------- | +| Ключ | Тип | Опис | +| ----------- | ---------- | ------------------------------------- | | `extraPaths` | `string[]` | Додаткові каталоги або файли для індексації | ```json5 @@ -354,21 +354,21 @@ Codex OAuth покриває лише chat/completions і не задоволь } ``` -Шляхи можуть бути абсолютними або відносними до workspace. Каталоги скануються рекурсивно на наявність файлів `.md`. Обробка symlink залежить від активного backend: вбудований рушій ігнорує symlink, тоді як QMD наслідує поведінку сканера QMD. +Шляхи можуть бути абсолютними або відносними до робочого простору. Каталоги скануються рекурсивно на наявність файлів `.md`. Обробка символьних посилань залежить від активного бекенда: вбудований рушій ігнорує символьні посилання, тоді як QMD дотримується поведінки базового сканера QMD. -Для пошуку transcript між агентами в межах області агента використовуйте `agents.list[].memorySearch.qmd.extraCollections` замість `memory.qmd.paths`. Ці додаткові collections мають ту саму форму `{ path, name, pattern? }`, але об’єднуються окремо для кожного агента й можуть зберігати явні спільні назви, коли шлях вказує поза межі поточного workspace. Якщо той самий визначений шлях з’являється і в `memory.qmd.paths`, і в `memorySearch.qmd.extraCollections`, QMD зберігає перший запис і пропускає дублікат. +Для пошуку транскриптів між агентами в межах області агента використовуйте `agents.list[].memorySearch.qmd.extraCollections` замість `memory.qmd.paths`. Ці додаткові колекції мають ту саму форму `{ path, name, pattern? }`, але об’єднуються для кожного агента окремо й можуть зберігати явно задані спільні назви, коли шлях указує за межі поточного робочого простору. Якщо той самий розв’язаний шлях з’являється і в `memory.qmd.paths`, і в `memorySearch.qmd.extraCollections`, QMD зберігає перший запис і пропускає дублікат. --- -## Multimodal memory (Gemini) +## Мультимодальна пам’ять (Gemini) Індексуйте зображення й аудіо разом із Markdown за допомогою Gemini Embedding 2: -| Ключ | Тип | Типове значення | Опис | -| ------------------------- | ---------- | --------------- | ------------------------------------ | -| `multimodal.enabled` | `boolean` | `false` | Увімкнути multimodal indexing | -| `multimodal.modalities` | `string[]` | -- | `["image"]`, `["audio"]` або `["all"]` | -| `multimodal.maxFileBytes` | `number` | `10000000` | Максимальний розмір файлу для індексації | +| Ключ | Тип | Типово | Опис | +| ------------------------- | ---------- | ---------- | ------------------------------------- | +| `multimodal.enabled` | `boolean` | `false` | Увімкнути мультимодальну індексацію | +| `multimodal.modalities` | `string[]` | -- | `["image"]`, `["audio"]` або `["all"]` | +| `multimodal.maxFileBytes` | `number` | `10000000` | Максимальний розмір файлу для індексації | Застосовується лише до файлів у `extraPaths`. Типові корені пам’яті залишаються лише для Markdown. Потрібен `gemini-embedding-2-preview`. `fallback` має бути `"none"`. @@ -378,113 +378,115 @@ Codex OAuth покриває лише chat/completions і не задоволь --- -## Кеш embeddings +## Кеш ембедингів -| Ключ | Тип | Типове значення | Опис | -| ------------------ | --------- | --------------- | -------------------------------- | -| `cache.enabled` | `boolean` | `false` | Кешувати embeddings chunks у SQLite | -| `cache.maxEntries` | `number` | `50000` | Максимальна кількість кешованих embeddings | +| Ключ | Тип | Типово | Опис | +| ------------------ | --------- | ------ | -------------------------------- | +| `cache.enabled` | `boolean` | `false` | Кешувати ембединги фрагментів у SQLite | +| `cache.maxEntries` | `number` | `50000` | Максимальна кількість кешованих ембедингів | -Запобігає повторному створенню embeddings для незміненого тексту під час переіндексації або оновлень transcript. +Запобігає повторному створенню ембедингів для незмінного тексту під час переіндексації або оновлень транскриптів. --- ## Пакетна індексація -| Ключ | Тип | Типове значення | Опис | -| ---------------------------- | --------- | --------------- | ------------------------------ | -| `remote.batch.enabled` | `boolean` | `false` | Увімкнути API пакетних embeddings | -| `remote.batch.concurrency` | `number` | `2` | Паралельні пакетні завдання | -| `remote.batch.wait` | `boolean` | `true` | Чекати завершення пакета | -| `remote.batch.pollIntervalMs` | `number` | -- | Інтервал опитування | -| `remote.batch.timeoutMinutes` | `number` | -- | Timeout пакета | +| Ключ | Тип | Типово | Опис | +| ----------------------------- | --------- | ------ | ------------------------ | +| `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 зазвичай найшвидший і найдешевший для великих backfill. +Доступно для `openai`, `gemini` і `voyage`. Пакетний режим OpenAI зазвичай є найшвидшим і найдешевшим для великих заповнень. -Це окремо від `sync.embeddingBatchTimeoutSeconds`, який керує вбудованими викликами embeddings, що використовуються локальними/self-hosted провайдерами та hosted-провайдерами, коли пакетні API провайдера не активні. +Це окремо від `sync.embeddingBatchTimeoutSeconds`, який керує вбудованими викликами ембедингів, що використовуються локальними/self-hosted провайдерами та хостинговими провайдерами, коли API пакетної обробки провайдера не активні. --- -## Пошук пам’яті сесії (експериментально) +## Пошук у пам’яті сеансів (експериментально) -Індексувати transcripts сесій і показувати їх через `memory_search`: +Індексуйте транскрипти сеансів і показуйте їх через `memory_search`: -| Ключ | Тип | Типове значення | Опис | -| ----------------------------- | ---------- | --------------- | -------------------------------------- | -| `experimental.sessionMemory` | `boolean` | `false` | Увімкнути індексацію сесій | -| `sources` | `string[]` | `["memory"]` | Додайте `"sessions"`, щоб включити transcripts | -| `sync.sessions.deltaBytes` | `number` | `100000` | Поріг байтів для переіндексації | -| `sync.sessions.deltaMessages` | `number` | `50` | Поріг повідомлень для переіндексації | +| Ключ | Тип | Типово | Опис | +| --------------------------- | ---------- | ------------ | ---------------------------------------- | +| `experimental.sessionMemory` | `boolean` | `false` | Увімкнути індексацію сеансів | +| `sources` | `string[]` | `["memory"]` | Додайте `"sessions"`, щоб включити транскрипти | +| `sync.sessions.deltaBytes` | `number` | `100000` | Поріг байтів для переіндексації | +| `sync.sessions.deltaMessages` | `number` | `50` | Поріг повідомлень для переіндексації | -Індексація сесій є opt-in і виконується асинхронно. Результати можуть бути трохи застарілими. Журнали сесій зберігаються на диску, тож вважайте доступ до файлової системи межею довіри. +Індексація сеансів вмикається за бажанням і виконується асинхронно. Результати можуть бути трохи застарілими. Журнали сеансів зберігаються на диску, тому вважайте доступ до файлової системи межею довіри. --- ## Прискорення векторів SQLite (sqlite-vec) -| Ключ | Тип | Типове значення | Опис | -| ---------------------------- | --------- | --------------- | ------------------------------------- | -| `store.vector.enabled` | `boolean` | `true` | Використовувати sqlite-vec для vector queries | -| `store.vector.extensionPath` | `string` | bundled | Перевизначити шлях до sqlite-vec | +| Ключ | Тип | Типово | Опис | +| ---------------------------- | --------- | ------ | --------------------------------- | +| `store.vector.enabled` | `boolean` | `true` | Використовувати sqlite-vec для векторних запитів | +| `store.vector.extensionPath` | `string` | bundled | Перевизначити шлях до sqlite-vec | -Коли sqlite-vec недоступний, OpenClaw автоматично переходить на in-process cosine similarity. +Коли sqlite-vec недоступний, OpenClaw автоматично переходить до обчислення косинусної схожості в процесі. --- -## Зберігання індексу +## Сховище індексу -| Ключ | Тип | Типове значення | Опис | -| ------------------- | -------- | ------------------------------------ | ----------------------------------------- | +| Ключ | Тип | Типово | Опис | +| ------------------- | -------- | ------------------------------------- | --------------------------------------------- | | `store.path` | `string` | `~/.openclaw/memory/{agentId}.sqlite` | Розташування індексу (підтримує токен `{agentId}`) | -| `store.fts.tokenizer` | `string` | `unicode61` | Токенізатор FTS5 (`unicode61` або `trigram`) | +| `store.fts.tokenizer` | `string` | `unicode61` | Токенізатор FTS5 (`unicode61` або `trigram`) | --- -## Config backend QMD +## Конфігурація бекенда QMD -Установіть `memory.backend = "qmd"`, щоб увімкнути. Усі налаштування QMD живуть у `memory.qmd`: +Установіть `memory.backend = "qmd"` для ввімкнення. Усі налаштування QMD знаходяться в `memory.qmd`: -| Ключ | Тип | Типове значення | Опис | -| ------------------------ | --------- | --------------- | -------------------------------------------- | -| `command` | `string` | `qmd` | Шлях до виконуваного файла QMD | -| `searchMode` | `string` | `search` | Команда пошуку: `search`, `vsearch`, `query` | -| `includeDefaultMemory` | `boolean` | `true` | Автоматично індексувати `MEMORY.md` + `memory/**/*.md` | -| `paths[]` | `array` | -- | Додаткові шляхи: `{ name, path, pattern? }` | -| `sessions.enabled` | `boolean` | `false` | Індексувати transcripts сесій | -| `sessions.retentionDays` | `number` | -- | Термін зберігання transcript | -| `sessions.exportDir` | `string` | -- | Каталог експорту | +| Ключ | Тип | Типово | Опис | +| ------------------------ | --------- | -------- | ------------------------------------------- | +| `command` | `string` | `qmd` | Шлях до виконуваного файла QMD | +| `searchMode` | `string` | `search` | Команда пошуку: `search`, `vsearch`, `query` | +| `includeDefaultMemory` | `boolean` | `true` | Автоматично індексувати `MEMORY.md` + `memory/**/*.md` | +| `paths[]` | `array` | -- | Додаткові шляхи: `{ name, path, pattern? }` | +| `sessions.enabled` | `boolean` | `false` | Індексувати транскрипти сеансів | +| `sessions.retentionDays` | `number` | -- | Термін зберігання транскриптів | +| `sessions.exportDir` | `string` | -- | Каталог експорту | -OpenClaw надає перевагу поточним формам QMD collection і MCP query, але зберігає працездатність старіших випусків QMD, за потреби переходячи на застарілі прапорці collection `--mask` і старіші назви MCP tools. +`searchMode: "search"` — це лише лексичний/BM25-пошук. OpenClaw не запускає перевірки готовності семантичних векторів або обслуговування ембедингів QMD для цього режиму, зокрема під час `memory status --deep`; для `vsearch` і `query` і далі потрібні готовність векторів QMD та ембединги. + +OpenClaw надає перевагу поточним формам колекцій QMD і запитів MCP, але зберігає працездатність старіших випусків QMD, повертаючись до застарілих прапорців колекцій `--mask` і старіших назв інструментів MCP, коли це потрібно. -Перевизначення моделей QMD лишаються на боці QMD, а не в config OpenClaw. Якщо вам потрібно глобально перевизначити моделі QMD, установіть змінні середовища, такі як `QMD_EMBED_MODEL`, `QMD_RERANK_MODEL` і `QMD_GENERATE_MODEL`, у runtime-середовищі gateway. +Перевизначення моделей QMD залишаються на боці QMD, а не в конфігурації OpenClaw. Якщо вам потрібно глобально перевизначити моделі QMD, установіть змінні середовища, такі як `QMD_EMBED_MODEL`, `QMD_RERANK_MODEL` і `QMD_GENERATE_MODEL`, у середовищі виконання Gateway. - - | Ключ | Тип | Типове значення | Опис | - | ------------------------- | --------- | --------------- | ---------------------------------- | - | `update.interval` | `string` | `5m` | Інтервал оновлення | - | `update.debounceMs` | `number` | `15000` | Debounce для змін файлів | - | `update.onBoot` | `boolean` | `true` | Оновлювати під час startup | - | `update.waitForBootSync` | `boolean` | `false` | Блокувати startup, доки оновлення не завершиться | - | `update.embedInterval` | `string` | -- | Окрема cadence для embeddings | - | `update.commandTimeoutMs` | `number` | -- | Timeout для команд QMD | - | `update.updateTimeoutMs` | `number` | -- | Timeout для операцій оновлення QMD | - | `update.embedTimeoutMs` | `number` | -- | Timeout для операцій embeddings QMD | + + | Ключ | Тип | Типово | Опис | + | ------------------------- | --------- | ------ | ------------------------------------ | + | `update.interval` | `string` | `5m` | Інтервал оновлення | + | `update.debounceMs` | `number` | `15000` | Debounce для змін файлів | + | `update.onBoot` | `boolean` | `true` | Оновлювати під час запуску | + | `update.waitForBootSync` | `boolean` | `false` | Блокувати запуск до завершення оновлення | + | `update.embedInterval` | `string` | -- | Окремий інтервал ембедингів | + | `update.commandTimeoutMs` | `number` | -- | Тайм-аут для команд QMD | + | `update.updateTimeoutMs` | `number` | -- | Тайм-аут для операцій оновлення QMD | + | `update.embedTimeoutMs` | `number` | -- | Тайм-аут для операцій ембедингів QMD | - | Ключ | Тип | Типове значення | Опис | - | ------------------------- | -------- | --------------- | ----------------------------- | - | `limits.maxResults` | `number` | `6` | Максимум результатів пошуку | - | `limits.maxSnippetChars` | `number` | -- | Обмеження довжини snippet | - | `limits.maxInjectedChars` | `number` | -- | Обмеження загальної кількості вставлених символів | - | `limits.timeoutMs` | `number` | `4000` | Timeout пошуку | + | Ключ | Тип | Типово | Опис | + | ------------------------- | -------- | ------ | ---------------------------- | + | `limits.maxResults` | `number` | `6` | Максимальна кількість результатів пошуку | + | `limits.maxSnippetChars` | `number` | -- | Обмежити довжину фрагмента | + | `limits.maxInjectedChars` | `number` | -- | Обмежити загальну кількість вставлених символів | + | `limits.timeoutMs` | `number` | `4000` | Тайм-аут пошуку | - Керує тим, які сесії можуть отримувати результати пошуку QMD. Та сама схема, що й у [`session.sendPolicy`](/uk/gateway/config-agents#session): + Керує тим, які сеанси можуть отримувати результати пошуку QMD. Та сама схема, що й у [`session.sendPolicy`](/uk/gateway/config-agents#session): ```json5 { @@ -499,19 +501,19 @@ OpenClaw надає перевагу поточним формам QMD collectio } ``` - Типове shipped-значення дозволяє direct- і channel-сесії, але все ще забороняє групи. + Типова конфігурація в постачанні дозволяє прямі сеанси та сеанси каналів, але все одно забороняє групи. - Типове значення — лише DM. `match.keyPrefix` зіставляється з нормалізованим ключем сесії; `match.rawKeyPrefix` зіставляється з сирим ключем, включно з `agent::`. + Типове значення — лише DM. `match.keyPrefix` відповідає нормалізованому ключу сеансу; `match.rawKeyPrefix` відповідає сирому ключу, включно з `agent::`. - `memory.citations` застосовується до всіх backend: + `memory.citations` застосовується до всіх бекендів: - | Значення | Поведінка | - | ---------------- | -------------------------------------------------------- | - | `auto` (типово) | Додає footer `Source: ` у snippets | - | `on` | Завжди додає footer | - | `off` | Не додає footer (шлях усе одно передається агенту всередині) | + | Значення | Поведінка | + | ---------------- | ----------------------------------------------------- | + | `auto` (типово) | Додавати нижній колонтитул `Source: ` у фрагменти | + | `on` | Завжди додавати нижній колонтитул | + | `off` | Не додавати нижній колонтитул (шлях усе одно внутрішньо передається агенту) | @@ -543,17 +545,17 @@ OpenClaw надає перевагу поточним формам QMD collectio Dreaming налаштовується в `plugins.entries.memory-core.config.dreaming`, а не в `agents.defaults.memorySearch`. -Dreaming виконується як один запланований прохід і використовує внутрішні фази light/deep/REM як деталь реалізації. +Dreaming працює як один запланований прохід і використовує внутрішні фази light/deep/REM як деталь реалізації. -Концептуальну поведінку та slash-команди див. у [Dreaming](/uk/concepts/dreaming). +Щодо концептуальної поведінки та slash-команд див. [Dreaming](/uk/concepts/dreaming). ### Налаштування користувача -| Ключ | Тип | Типове значення | Опис | -| ----------- | --------- | --------------- | --------------------------------------------------- | -| `enabled` | `boolean` | `false` | Повністю вмикає або вимикає Dreaming | -| `frequency` | `string` | `0 3 * * *` | Необов’язкова Cron-cadence для повного проходу Dreaming | -| `model` | `string` | типова модель | Необов’язкове перевизначення моделі субагента Dream Diary | +| Ключ | Тип | Типово | Опис | +| ---------- | --------- | -------------- | --------------------------------------------------- | +| `enabled` | `boolean` | `false` | Увімкнути або повністю вимкнути dreaming | +| `frequency` | `string` | `0 3 * * *` | Необов’язковий розклад Cron для повного проходу dreaming | +| `model` | `string` | типова модель | Необов’язкове перевизначення моделі підагента Dream Diary | ### Приклад @@ -581,13 +583,13 @@ Dreaming виконується як один запланований прох - Dreaming записує машинний стан у `memory/.dreams/`. -- Dreaming записує зрозумілий людині наративний вивід у `DREAMS.md` (або наявний `dreams.md`). -- `dreaming.model` використовує наявний шлюз довіри subagent Plugin; установіть `plugins.entries.memory-core.subagent.allowModelOverride: true`, перш ніж увімкнути його. -- Політика фаз light/deep/REM і пороги є внутрішньою поведінкою, а не user-facing config. +- Dreaming записує зрозумілий для людини наративний вивід у `DREAMS.md` (або наявний `dreams.md`). +- `dreaming.model` використовує наявний trust gate підагента plugin; установіть `plugins.entries.memory-core.subagent.allowModelOverride: true` перед його ввімкненням. +- Політика фаз light/deep/REM і пороги є внутрішньою поведінкою, а не користувацькою конфігурацією. -## Пов’язані матеріали +## Пов’язане -- [Довідник з config](/uk/gateway/configuration-reference) +- [Довідник із конфігурації](/uk/gateway/configuration-reference) - [Огляд пам’яті](/uk/concepts/memory) - [Пошук у пам’яті](/uk/concepts/memory-search)