chore(i18n): refresh uk translations

This commit is contained in:
openclaw-docs-i18n[bot] 2026-04-29 07:19:48 +00:00
parent 70b811c945
commit 9ad99b4ce3
2 changed files with 318 additions and 308 deletions

View File

@ -1,40 +1,40 @@
---
read_when:
- Ви хочете налаштувати QMD як бекенд пам’яті
- Вам потрібні розширені можливості пам’яті, як-от переранжування або додаткові індексовані шляхи
summary: Локальний пошуковий сайдкар із підтримкою BM25, векторів, переранжування та розширення запитів
- Вам потрібні розширені функції пам’яті, як-от переранжування або додаткові індексовані шляхи
summary: Локально-орієнтований пошуковий сайдкар із BM25, векторами, повторним ранжуванням і розширенням запитів
title: Рушій пам’яті QMD
x-i18n:
generated_at: "2026-04-28T03:20:30Z"
model: gpt-5.4
generated_at: "2026-04-29T07:17:52Z"
model: gpt-5.5
provider: openai
source_hash: 09de0490a2584d1c7eeccd4ba8613d63ea4c69e62e5eb5a0492a8baa1a6c7eea
source_hash: 4932e1fdf6aaecb1c97de3a7111d0447ae15d44db1e3f6aefe106e765070b5e4
source_path: concepts/memory-qmd.md
workflow: 15
workflow: 16
---
[QMD](https://github.com/tobi/qmd) — це локальний пошуковий сайдкар, який працює
[QMD](https://github.com/tobi/qmd) — це локально-орієнтований пошуковий сайдкар, який працює
поруч з OpenClaw. Він поєднує BM25, векторний пошук і переранжування в одному
бінарному файлі, а також може індексувати вміст за межами файлів пам’яті вашого робочого простору.
виконуваному файлі та може індексувати вміст поза файлами пам'яті вашого робочого простору.
## Що він додає порівняно з вбудованим рушієм
## Що він додає порівняно з вбудованим
- **Переранжування та розширення запитів** для кращої повноти пошуку.
- **Індексація додаткових каталогів** — документація проєкту, командні нотатки, будь-що на диску.
- **Індексація транскриптів сеансів** — для відновлення попередніх розмов.
- **Повністю локальний** — працює з необов’язковим пакетом середовища виконання node-llama-cpp і
- **Переранжування та розширення запиту** для кращої повноти пошуку.
- **Індексування додаткових каталогів** -- документація проєкту, нотатки команди, будь-що на диску.
- **Індексування стенограм сесій** -- пригадування попередніх розмов.
- **Повністю локальний** -- працює з додатковим пакетом середовища виконання node-llama-cpp і
автоматично завантажує моделі GGUF.
- **Автоматичний резервний перехід** — якщо QMD недоступний, OpenClaw безшовно переходить на
- **Автоматичний резервний варіант** -- якщо 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` шлюзу.
- macOS і Linux працюють одразу. На Windows найкраща підтримка через WSL2.
- QMD має бути в `PATH` Gateway.
- macOS і Linux працюють одразу. Windows найкраще підтримується через WSL2.
### Увімкнення
@ -46,76 +46,82 @@ x-i18n:
}
```
OpenClaw створює ізольований домашній каталог QMD у
`~/.openclaw/agents/<agentId>/qmd/` і автоматично керує життєвим циклом сайдкара —
колекції, оновлення та запуск ембедингів обробляються за вас.
Він надає перевагу актуальним формам колекцій QMD і запитів MCP, але за потреби
все одно використовує резервні прапорці альтернативних шаблонів колекцій і
старі назви інструментів MCP.
Під час узгодження на старті також повторно створюються застарілі керовані колекції
з поверненням до їхніх канонічних шаблонів, якщо стара колекція QMD з такою самою назвою
ще присутня.
OpenClaw створює самодостатній домашній каталог QMD у
`~/.openclaw/agents/<agentId>/qmd/` і автоматично керує життєвим циклом сайдкара
-- колекції, оновлення та запуски створення ембедингів обробляються за вас.
Він віддає перевагу поточним формам колекцій QMD і запитів MCP, але за потреби
все ще відступає до альтернативних прапорців шаблонів колекцій і старіших назв
інструментів MCP. Узгодження під час запуску також відтворює застарілі керовані
колекції назад до їхніх канонічних шаблонів, коли старіша колекція QMD з тією
самою назвою все ще присутня.
## Як працює сайдкар
- OpenClaw створює колекції з файлів пам’яті вашого робочого простору та всіх
налаштованих `memory.qmd.paths`, потім запускає `qmd update` під час старту і
періодично (типово кожні 5 хвилин). Семантичні режими також запускають `qmd embed`.
- Типова колекція робочого простору відстежує `MEMORY.md` і дерево `memory/`.
`memory.md` у нижньому регістрі не індексується як кореневий файл пам’яті.
- Оновлення під час старту виконується у фоновому режимі, тому запуск чату не блокується.
- Пошук використовує налаштований `searchMode` (типово: `search`; також підтримуються
`vsearch` і `query`). `search` використовує лише BM25, тому OpenClaw пропускає перевірки
готовності семантичних векторів і обслуговування ембедингів у цьому режимі. Якщо режим не спрацьовує,
OpenClaw повторює спробу з `qmd query`.
- У випусках QMD, які оголошують підтримку фільтрів для кількох колекцій, OpenClaw групує
колекції з однаковим джерелом в один виклик пошуку QMD. У старіших випусках QMD
зберігається сумісний резервний варіант із пошуком по одній колекції.
- Якщо QMD повністю не спрацьовує, OpenClaw переходить на вбудований рушій SQLite.
Повторні спроби в межах одного ходу чату після збою відкриття ненадовго сповільнюються,
щоб відсутній бінарний файл або зламана залежність сайдкара не спричинили шторм повторних спроб;
`openclaw memory status` і одноразові перевірки через CLI усе одно напряму повторно перевіряють QMD.
- OpenClaw створює колекції з файлів пам'яті вашого робочого простору та будь-яких
налаштованих `memory.qmd.paths`, потім запускає `qmd update` під час запуску і
періодично (типово кожні 5 хвилин). Ці оновлення виконуються через підпроцеси
QMD, а не через внутрішнє сканування файлової системи в процесі. Семантичні
режими також запускають `qmd embed`.
- Типова колекція робочого простору відстежує `MEMORY.md` плюс дерево `memory/`.
`memory.md` у нижньому регістрі не індексується як кореневий файл пам'яті.
- Власний сканер QMD ігнорує приховані шляхи та поширені каталоги залежностей і
збірки, як-от `.git`, `.cache`, `node_modules`, `vendor`, `dist` і `build`.
Оновлення під час запуску використовують одноразовий шлях підпроцесу QMD замість
створення повного довготривалого внутрішньопроцесного спостерігача під час запуску Gateway.
- Оновлення під час запуску виконується у фоні, тож запуск чату не блокується.
- Пошук використовує налаштований `searchMode` (типово: `search`; також підтримує
`vsearch` і `query`). `search` працює лише з BM25, тому OpenClaw пропускає
перевірки готовності семантичних векторів і обслуговування ембедингів у цьому режимі.
Якщо режим зазнає помилки, OpenClaw повторює спробу з `qmd query`.
- З випусками QMD, які оголошують фільтри для кількох колекцій, OpenClaw групує
колекції з одного джерела в один виклик пошуку QMD. Старіші випуски QMD
зберігають сумісний резервний варіант для окремих колекцій.
- Якщо QMD повністю не спрацьовує, OpenClaw повертається до вбудованого рушія SQLite.
Повторні спроби під час ходу чату ненадовго відкладаються після помилки відкриття,
щоб відсутній виконуваний файл або зламана залежність сайдкара не створювали
шторм повторних спроб; `openclaw memory status` і одноразові CLI-перевірки все ще
перевіряють QMD напряму.
<Info>
Перший пошук може бути повільним — QMD автоматично завантажує моделі GGUF (~2 ГБ) для
переранжування і розширення запитів під час першого запуску `qmd query`.
Перший пошук може бути повільним -- QMD автоматично завантажує моделі GGUF (~2 ГБ) для
переранжування та розширення запиту під час першого запуску `qmd query`.
</Info>
## Продуктивність пошуку та сумісність
OpenClaw зберігає сумісність шляху пошуку QMD як з актуальними, так і зі старішими
OpenClaw зберігає шлях пошуку QMD сумісним як з поточними, так і зі старішими
встановленнями QMD.
Під час запуску OpenClaw один раз для кожного менеджера перевіряє текст довідки встановленого QMD. Якщо
бінарний файл оголошує підтримку кількох фільтрів колекцій, OpenClaw виконує пошук в усіх
колекціях з однаковим джерелом однією командою:
Під час запуску OpenClaw один раз для кожного менеджера перевіряє довідковий текст
установленого QMD. Якщо виконуваний файл оголошує підтримку фільтрів кількох
колекцій, OpenClaw шукає в усіх колекціях з одного джерела однією командою:
```bash
qmd search "router notes" --json -n 10 -c memory-root-main -c memory-dir-main
```
Це дозволяє уникнути запуску окремого підпроцесу QMD для кожної колекції довготривалої пам’яті.
Колекції транскриптів сеансів залишаються у власній групі джерел, тому змішані пошуки
`memory` + `sessions` усе одно дають вхідні дані для диверсифікатора результатів з обох
джерел.
Це уникає запуску окремого підпроцесу QMD для кожної колекції довготривалої
пам'яті. Колекції стенограм сесій залишаються у власній групі джерела, тому змішані
пошуки `memory` + `sessions` усе ще дають диверсифікатору результатів вхідні дані
з обох джерел.
Старіші збірки QMD приймають лише один фільтр колекції. Коли OpenClaw виявляє одну з
таких збірок, він зберігає шлях сумісності та виконує пошук по кожній колекції окремо
перед обєднанням і дедуплікацією результатів.
Старіші збірки QMD приймають лише один фільтр колекції. Коли OpenClaw виявляє одну
з таких збірок, він зберігає шлях сумісності та шукає кожну колекцію окремо перед
об'єднанням і дедуплікацією результатів.
Щоб вручну перевірити контракт установленої версії, виконайте:
Щоб вручну перевірити встановлений контракт, виконайте:
```bash
qmd --help | grep -i collection
```
У поточній довідці QMD зазначено, що фільтри колекцій можуть націлюватися на одну або кілька колекцій.
Старіша довідка зазвичай описує одну колекцію.
Поточна довідка QMD каже, що фільтри колекцій можуть націлюватися на одну або
кілька колекцій. Старіша довідка зазвичай описує одну колекцію.
## Перевизначення моделей
Змінні середовища моделей QMD передаються без змін із процесу шлюзу,
тому ви можете глобально налаштовувати QMD без додавання нової конфігурації OpenClaw:
Змінні середовища моделей QMD передаються без змін із процесу Gateway, тож ви
можете налаштовувати QMD глобально без додавання нової конфігурації OpenClaw:
```bash
export QMD_EMBED_MODEL="hf:Qwen/Qwen3-Embedding-0.6B-GGUF/Qwen3-Embedding-0.6B-Q8_0.gguf"
@ -123,10 +129,10 @@ export QMD_RERANK_MODEL="/absolute/path/to/reranker.gguf"
export QMD_GENERATE_MODEL="/absolute/path/to/generator.gguf"
```
Після зміни моделі ембедингів повторно запустіть побудову ембедингів, щоб індекс відповідав
Після зміни моделі ембедингів повторно запустіть ембединги, щоб індекс відповідав
новому векторному простору.
## Індексація додаткових шляхів
## Індексування додаткових шляхів
Спрямуйте QMD на додаткові каталоги, щоб зробити їх доступними для пошуку:
@ -141,13 +147,13 @@ export QMD_GENERATE_MODEL="/absolute/path/to/generator.gguf"
}
```
Фрагменти з додаткових шляхів з’являються як `qmd/<collection>/<relative-path>` у
результатах пошуку. `memory_get` розуміє цей префікс і читає дані з правильного
кореня колекції.
Фрагменти з додаткових шляхів відображаються як `qmd/<collection>/<relative-path>` у
результатах пошуку. `memory_get` розуміє цей префікс і читає з правильного кореня
колекції.
## Індексація транскриптів сеансів
## Індексування стенограм сесій
Увімкніть індексацію сеансів, щоб відновлювати попередні розмови:
Увімкніть індексування сесій, щоб пригадувати попередні розмови:
```json5
{
@ -160,13 +166,13 @@ export QMD_GENERATE_MODEL="/absolute/path/to/generator.gguf"
}
```
Транскрипти експортуються як очищені ходи User/Assistant в окрему колекцію QMD
у `~/.openclaw/agents/<id>/qmd/sessions/`.
Стенограми експортуються як очищені ходи User/Assistant у спеціальну колекцію QMD
під `~/.openclaw/agents/<id>/qmd/sessions/`.
## Область пошуку
Типово результати пошуку QMD відображаються в прямих сеансах і сеансах каналів
(але не в групах). Щоб змінити це, налаштуйте `memory.qmd.scope`:
Типово результати пошуку QMD показуються у прямих і канальних сесіях
(не в групах). Налаштуйте `memory.qmd.scope`, щоб змінити це:
```json5
{
@ -181,36 +187,36 @@ export QMD_GENERATE_MODEL="/absolute/path/to/generator.gguf"
}
```
Коли область видимості забороняє пошук, OpenClaw записує попередження з похідними значеннями каналу та
типу чату, щоб порожні результати було легше діагностувати.
Коли область забороняє пошук, OpenClaw записує попередження з виведеним каналом і
типом чату, щоб порожні результати було легше налагоджувати.
## Цитати
## Цитування
Коли `memory.citations` має значення `auto` або `on`, фрагменти пошуку містять
нижній колонтитул `Source: <path#line>`. Установіть `memory.citations = "off"`, щоб прибрати
цей нижній колонтитул і водночас продовжити внутрішню передачу шляху агенту.
нижній колонтитул `Source: <path#line>`. Установіть `memory.citations = "off"`, щоб
прибрати нижній колонтитул, усе ще передаючи шлях агенту внутрішньо.
## Коли використовувати
Обирайте QMD, коли вам потрібно:
Вибирайте QMD, коли вам потрібно:
- Переранжування для вищої якості результатів.
- Шукати документацію проєкту або нотатки поза межами робочого простору.
- Відновлювати попередні розмови із сеансів.
- Переранжування для якісніших результатів.
- Пошук у документації проєкту або нотатках поза робочим простором.
- Пригадування розмов із минулих сесій.
- Повністю локальний пошук без API-ключів.
Для простіших налаштувань добре підходить [вбудований рушій](/uk/concepts/memory-builtin)
без додаткових залежностей.
Для простіших налаштувань [вбудований рушій](/uk/concepts/memory-builtin) добре
працює без додаткових залежностей.
## Усунення несправностей
**QMD не знайдено?** Переконайтеся, що бінарний файл є в `PATH` шлюзу. Якщо OpenClaw
працює як сервіс, створіть символьне посилання:
**QMD не знайдено?** Переконайтеся, що виконуваний файл є в `PATH` Gateway. Якщо OpenClaw
працює як сервіс, створіть символічне посилання:
`sudo ln -s ~/.bun/bin/qmd /usr/local/bin/qmd`.
Якщо `qmd --version` працює у вашій оболонці, але OpenClaw усе ще повідомляє про
`spawn qmd ENOENT`, імовірно, процес шлюзу має інший `PATH`, ніж ваша
інтерактивна оболонка. Явно зафіксуйте шлях до бінарного файла:
Якщо `qmd --version` працює у вашій оболонці, але OpenClaw усе ще повідомляє
`spawn qmd ENOENT`, процес Gateway, імовірно, має інший `PATH`, ніж ваша
інтерактивна оболонка. Закріпіть виконуваний файл явно:
```json5
{
@ -223,47 +229,49 @@ export QMD_GENERATE_MODEL="/absolute/path/to/generator.gguf"
}
```
Використайте `command -v qmd` у середовищі, де встановлено QMD, а потім повторно перевірте
через `openclaw memory status --deep`.
Використайте `command -v qmd` у середовищі, де встановлено QMD, потім повторно
перевірте за допомогою `openclaw memory status --deep`.
**Перший пошук дуже повільний?** QMD завантажує моделі GGUF під час першого використання. Попередньо прогрійте
його за допомогою `qmd query "test"` з тими самими каталогами XDG, які використовує OpenClaw.
**Перший пошук дуже повільний?** QMD завантажує моделі GGUF під час першого
використання. Попередньо прогрійте його за допомогою `qmd query "test"`, використовуючи
ті самі каталоги XDG, що й OpenClaw.
**Під час пошуку запускається багато підпроцесів QMD?** За можливості оновіть QMD. OpenClaw використовує
один процес для пошуків по кількох колекціях з однаковим джерелом лише тоді, коли встановлений
QMD оголошує підтримку кількох фільтрів `-c`; інакше він зберігає старий резервний
варіант по одній колекції для коректності.
**Багато підпроцесів QMD під час пошуку?** Оновіть QMD, якщо можливо. OpenClaw
використовує один процес для пошуків у кількох колекціях з одного джерела лише
тоді, коли встановлений QMD оголошує підтримку кількох фільтрів `-c`; інакше він
зберігає старіший резервний варіант для окремих колекцій заради коректності.
**QMD лише з BM25 усе ще намагається зібрати llama.cpp?** Установіть
`memory.qmd.searchMode = "search"`. OpenClaw трактує цей режим як суто лексичний,
не запускає перевірки стану векторів QMD чи обслуговування ембедингів і залишає
перевірки семантичної готовності для конфігурацій `vsearch` або `query`.
**QMD лише з BM25 все ще намагається зібрати llama.cpp?** Установіть
`memory.qmd.searchMode = "search"`. OpenClaw розглядає цей режим як лише лексичний,
не запускає перевірки стану векторів QMD або обслуговування ембедингів і залишає
перевірки семантичної готовності для налаштувань `vsearch` або `query`.
**Пошук завершується за тайм-аутом?** Збільште `memory.qmd.limits.timeoutMs` (типово: 4000 мс).
Для повільнішого обладнання встановіть `120000`.
**Пошук завершується за тайм-аутом?** Збільште `memory.qmd.limits.timeoutMs` (типово: 4000ms).
Установіть `120000` для повільнішого обладнання.
**Порожні результати в групових чатах?** Перевірте `memory.qmd.scope` — типове значення дозволяє
лише прямі сеанси й сеанси каналів.
**Порожні результати в групових чатах?** Перевірте `memory.qmd.scope` -- типово
дозволені лише прямі та канальні сесії.
**Пошук у кореневій пам’яті раптом став надто широким?** Перезапустіть шлюз або дочекайтеся
наступного узгодження під час запуску. OpenClaw повторно створює застарілі керовані колекції,
повертаючи їх до канонічних шаблонів `MEMORY.md` і `memory/`, коли виявляє конфлікт
однойменних колекцій.
**Пошук у кореневій пам'яті раптом став надто широким?** Перезапустіть Gateway або
дочекайтеся наступного узгодження під час запуску. OpenClaw відтворює застарілі
керовані колекції назад до канонічних шаблонів `MEMORY.md` і `memory/`, коли
виявляє конфлікт з однаковою назвою.
**Тимчасові репозиторії, видимі в робочому просторі, спричиняють `ENAMETOOLONG` або ламане індексування?**
Обхід QMD наразі наслідує поведінку базового сканера QMD, а не правила символьних посилань
вбудованого рушія OpenClaw. Тримайте тимчасові checkout-и монорепозиторіїв у
прихованих каталогах, як-от `.tmp/`, або поза індексованими коренями QMD, доки QMD не надасть
безпечний щодо циклів обхід або явні засоби виключення.
**Тимчасові репозиторії, видимі з робочого простору, спричиняють `ENAMETOOLONG` або зламане індексування?**
Обхід QMD наразі відповідає поведінці базового сканера QMD, а не вбудованим
правилам символічних посилань OpenClaw. Тримайте тимчасові checkout монорепозиторіїв
у прихованих каталогах на кшталт `.tmp/` або поза індексованими коренями QMD,
доки QMD не надасть безпечний щодо циклів обхід або явні засоби керування
виключеннями.
## Конфігурація
Повний опис поверхні конфігурації (`memory.qmd.*`), режимів пошуку, інтервалів оновлення,
правил області видимості та всіх інших параметрів дивіться в
[довіднику з конфігурації пам’яті](/uk/reference/memory-config).
Повну поверхню конфігурації (`memory.qmd.*`), режими пошуку, інтервали оновлення,
правила області та всі інші параметри дивіться в
[довіднику конфігурації пам'яті](/uk/reference/memory-config).
## Повязане
## Пов'язане
- [Огляд памяті](/uk/concepts/memory)
- [Вбудований рушій памяті](/uk/concepts/memory-builtin)
- [Рушій пам’яті Honcho](/uk/concepts/memory-honcho)
- [Огляд пам'яті](/uk/concepts/memory)
- [Вбудований рушій пам'яті](/uk/concepts/memory-builtin)
- [Пам'ять Honcho](/uk/concepts/memory-honcho)

View File

@ -1,64 +1,64 @@
---
read_when:
- Ви хочете налаштувати постачальників пошуку в пам’яті або моделі вбудовування
- Ви хочете налаштувати провайдерів пошуку в пам’яті або моделі ембедингів
- Ви хочете налаштувати бекенд QMD
- Ви хочете налаштувати гібридний пошук, MMR або часове згасання
- Ви хочете увімкнути індексування мультимодальної пам’яті
- Ви хочете увімкнути мультимодальне індексування пам’яті
sidebarTitle: Memory config
summary: Усі параметри конфігурації для пошуку в пам’яті, провайдерів ембедингів, QMD, гібридного пошуку та мультимодального індексування
title: Довідник конфігурації пам’яті
summary: Усі параметри конфігурації для пошуку в пам’яті, постачальників ембедингів, QMD, гібридного пошуку та мультимодального індексування
title: Довідник із конфігурації пам’яті
x-i18n:
generated_at: "2026-04-28T11:24:54Z"
generated_at: "2026-04-29T07:18:03Z"
model: gpt-5.5
provider: openai
source_hash: 552a024fe20577311f235571a79c2f847c466d713ae99628fb63abf8a07e2b32
source_hash: d076cd1c34ac3cee45cb17633b06a79f87ba4da922e6a141409585258a28e355
source_path: reference/memory-config.md
workflow: 16
---
Ця сторінка перелічує всі параметри конфігурації для пошуку в пам’яті OpenClaw. Концептуальні огляди дивіться тут:
Ця сторінка перелічує всі параметри конфігурації для пошуку пам’яті OpenClaw. Концептуальні огляди дивіться тут:
<CardGroup cols={2}>
<Card title="Огляд пам’яті" href="/uk/concepts/memory">
<Card title="Memory overview" href="/uk/concepts/memory">
Як працює пам’ять.
</Card>
<Card title="Вбудований рушій" href="/uk/concepts/memory-builtin">
<Card title="Builtin engine" href="/uk/concepts/memory-builtin">
Типовий бекенд SQLite.
</Card>
<Card title="Рушій QMD" href="/uk/concepts/memory-qmd">
Локальний sidecar.
<Card title="QMD engine" href="/uk/concepts/memory-qmd">
Локальний допоміжний процес.
</Card>
<Card title="Пошук у пам’яті" href="/uk/concepts/memory-search">
Пошуковий конвеєр і налаштування.
<Card title="Memory search" href="/uk/concepts/memory-search">
Конвеєр пошуку й налаштування.
</Card>
<Card title="Активна пам’ять" href="/uk/concepts/active-memory">
<Card title="Active memory" href="/uk/concepts/active-memory">
Під-агент пам’яті для інтерактивних сеансів.
</Card>
</CardGroup>
Усі налаштування пошуку в пам’яті розміщені в `agents.defaults.memorySearch` у `openclaw.json`, якщо не зазначено інше.
Усі налаштування пошуку пам’яті розташовані в `agents.defaults.memorySearch` у `openclaw.json`, якщо не зазначено інше.
<Note>
Якщо ви шукаєте перемикач функції **активної пам’яті** та конфігурацію під-агента, вони розміщені в `plugins.entries.active-memory`, а не в `memorySearch`.
Якщо ви шукаєте перемикач функції **Active Memory** і конфігурацію під-агента, вони розташовані в `plugins.entries.active-memory`, а не в `memorySearch`.
Активна пам’ять використовує модель із двома шлюзами:
Active Memory використовує модель із двома шлюзами:
1. Plugin має бути ввімкнений і націлений на ідентифікатор поточного агента
2. запит має бути придатним інтерактивним постійним сеансом чату
Дивіться [Active Memory](/uk/concepts/active-memory), щоб дізнатися про модель активації, конфігурацію, якою володіє Plugin, збереження транскриптів і безпечний шаблон розгортання.
Дивіться [Active Memory](/uk/concepts/active-memory), щоб ознайомитися з моделлю активації, конфігурацією, що належить Plugin, збереженням транскриптів і безпечним шаблоном розгортання.
</Note>
---
## Вибір провайдера
| Ключ | Тип | Типове значення | Опис |
| ---------- | --------- | ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `provider` | `string` | автовизначення | ID адаптера вбудовувань, як-от `bedrock`, `deepinfra`, `gemini`, `github-copilot`, `local`, `mistral`, `ollama`, `openai` або `voyage`; також може бути налаштованим `models.providers.<id>`, чий `api` вказує на один із цих адаптерів |
| `model` | `string` | типове для провайдера | Назва моделі вбудовувань |
| `fallback` | `string` | `"none"` | ID резервного адаптера, коли основний не спрацьовує |
| `enabled` | `boolean` | `true` | Увімкнути або вимкнути пошук у пам’яті |
| Ключ | Тип | Типово | Опис |
| ---------- | --------- | ------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `provider` | `string` | автовизначення | Ідентифікатор адаптера ембедингів, наприклад `bedrock`, `deepinfra`, `gemini`, `github-copilot`, `local`, `mistral`, `ollama`, `openai` або `voyage`; також може бути налаштованим `models.providers.<id>`, чий `api` вказує на один із цих адаптерів |
| `model` | `string` | типово провайдера | Назва моделі ембедингів |
| `fallback` | `string` | `"none"` | Ідентифікатор резервного адаптера, коли основний завершується невдало |
| `enabled` | `boolean` | `true` | Увімкнути або вимкнути пошук пам’яті |
### Порядок автовизначення
@ -87,7 +87,7 @@ x-i18n:
Вибирається, якщо ключ DeepInfra можна визначити.
</Step>
<Step title="bedrock">
Вибирається, якщо ланцюжок облікових даних AWS SDK визначається (роль інстанса, ключі доступу, профіль, SSO, web identity або спільна конфігурація).
Вибирається, якщо ланцюг облікових даних AWS SDK успішно визначається (роль інстансу, ключі доступу, профіль, SSO, веб-ідентичність або спільна конфігурація).
</Step>
</Steps>
@ -95,7 +95,7 @@ x-i18n:
### Власні ідентифікатори провайдерів
`memorySearch.provider` може вказувати на власний запис `models.providers.<id>`. OpenClaw визначає власника `api` цього провайдера для адаптера вбудовувань, зберігаючи власний ID провайдера для endpoint, автентифікації та обробки префікса моделі. Це дає змогу конфігураціям із кількома GPU або кількома хостами виділити вбудовування пам’яті для конкретного локального endpoint:
`memorySearch.provider` може вказувати на власний запис `models.providers.<id>`. OpenClaw визначає власника `api` цього провайдера для адаптера ембедингів, зберігаючи власний ідентифікатор провайдера для обробки кінцевої точки, автентифікації та префікса моделі. Це дає змогу конфігураціям із кількома GPU або кількома хостами виділити ембединги пам’яті для конкретної локальної кінцевої точки:
```json5
{
@ -122,28 +122,28 @@ x-i18n:
### Визначення ключа API
Віддалені вбудовування потребують ключ API. Натомість Bedrock використовує стандартний ланцюжок облікових даних AWS SDK (ролі інстансів, SSO, ключі доступу).
Віддалені ембединги потребують ключа API. Натомість Bedrock використовує типовий ланцюг облікових даних AWS SDK (ролі інстансів, SSO, ключі доступу).
| Провайдер | Змінна середовища | Ключ конфігурації |
| -------------- | -------------------------------------------------- | ----------------------------------- |
| Bedrock | Ланцюжок облікових даних AWS | Ключ API не потрібен |
| DeepInfra | `DEEPINFRA_API_KEY` | `models.providers.deepinfra.apiKey` |
| Gemini | `GEMINI_API_KEY` | `models.providers.google.apiKey` |
| GitHub Copilot | `COPILOT_GITHUB_TOKEN`, `GH_TOKEN`, `GITHUB_TOKEN` | Профіль автентифікації через device login |
| 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` |
| Провайдер | Змінна середовища | Ключ конфігурації |
| -------------- | ------------------------------------------------ | ---------------------------------- |
| Bedrock | ланцюг облікових даних AWS | Ключ API не потрібен |
| DeepInfra | `DEEPINFRA_API_KEY` | `models.providers.deepinfra.apiKey` |
| Gemini | `GEMINI_API_KEY` | `models.providers.google.apiKey` |
| GitHub Copilot | `COPILOT_GITHUB_TOKEN`, `GH_TOKEN`, `GITHUB_TOKEN` | Профіль автентифікації через вхід із пристрою |
| Mistral | `MISTRAL_API_KEY` | `models.providers.mistral.apiKey` |
| Ollama | `OLLAMA_API_KEY` (заповнювач) | -- |
| OpenAI | `OPENAI_API_KEY` | `models.providers.openai.apiKey` |
| Voyage | `VOYAGE_API_KEY` | `models.providers.voyage.apiKey` |
<Note>
OAuth Codex покриває лише chat/completions і не задовольняє запити вбудовувань.
OAuth Codex покриває лише чат/завершення і не задовольняє запити ембедингів.
</Note>
---
## Конфігурація віддаленого endpoint
## Конфігурація віддаленої кінцевої точки
Для власних OpenAI-сумісних endpoint або перевизначення типових значень провайдера:
Для власних OpenAI-сумісних кінцевих точок або перевизначення типових налаштувань провайдера:
<ParamField path="remote.baseUrl" type="string">
Власна базова URL-адреса API.
@ -152,7 +152,7 @@ OAuth Codex покриває лише chat/completions і не задоволь
Перевизначити ключ API.
</ParamField>
<ParamField path="remote.headers" type="object">
Додаткові HTTP-заголовки (об’єднуються з типовими значеннями провайдера).
Додаткові HTTP-заголовки (об’єднуються з типовими заголовками провайдера).
</ParamField>
```json5
@ -174,28 +174,28 @@ OAuth Codex покриває лише chat/completions і не задоволь
---
## Конфігурація для окремих провайдерів
## Конфігурація, специфічна для провайдера
<AccordionGroup>
<Accordion title="Gemini">
| Ключ | Тип | Типове значення | Опис |
| ---------------------- | -------- | ---------------------- | ----------------------------------------- |
| Ключ | Тип | Типово | Опис |
| ---------------------- | -------- | ---------------------- | ------------------------------------------ |
| `model` | `string` | `gemini-embedding-001` | Також підтримує `gemini-embedding-2-preview` |
| `outputDimensionality` | `number` | `3072` | Для Embedding 2: 768, 1536 або 3072 |
| `outputDimensionality` | `number` | `3072` | Для Embedding 2: 768, 1536 або 3072 |
<Warning>
Зміна моделі або `outputDimensionality` запускає автоматичне повне переіндексування.
Зміна моделі або `outputDimensionality` запускає автоматичну повну переіндексацію.
</Warning>
</Accordion>
<Accordion title="OpenAI-сумісні типи вводу">
OpenAI-сумісні endpoint вбудовувань можуть увімкнути специфічні для провайдера поля запиту `input_type`. Це корисно для асиметричних моделей вбудовувань, які потребують різних міток для вбудовувань запитів і документів.
<Accordion title="OpenAI-compatible input types">
OpenAI-сумісні кінцеві точки ембедингів можуть увімкнути специфічні для провайдера поля запиту `input_type`. Це корисно для асиметричних моделей ембедингів, яким потрібні різні мітки для ембедингів запитів і документів.
| Ключ | Тип | Типове значення | Опис |
| ------------------- | -------- | --------------- | -------------------------------------------------- |
| `inputType` | `string` | не задано | Спільний `input_type` для вбудовувань запитів і документів |
| `queryInputType` | `string` | не задано | `input_type` під час запиту; перевизначає `inputType` |
| `documentInputType` | `string` | не задано | `input_type` індексу/документа; перевизначає `inputType` |
| Ключ | Тип | Типово | Опис |
| ------------------- | -------- | ------------ | -------------------------------------------------------- |
| `inputType` | `string` | не задано | Спільний `input_type` для ембедингів запитів і документів |
| `queryInputType` | `string` | не задано | `input_type` під час запиту; перевизначає `inputType` |
| `documentInputType` | `string` | не задано | `input_type` індексу/документа; перевизначає `inputType` |
```json5
{
@ -216,11 +216,11 @@ OAuth Codex покриває лише chat/completions і не задоволь
}
```
Зміна цих значень впливає на ідентичність кешу вбудовувань для пакетного індексування провайдера, і після неї слід виконати переіндексування пам’яті, якщо upstream-модель по-різному обробляє ці мітки.
Зміна цих значень впливає на ідентичність кешу ембедингів для пакетного індексування провайдера, і після неї слід виконати переіндексацію пам’яті, коли upstream-модель обробляє мітки по-різному.
</Accordion>
<Accordion title="Bedrock">
Bedrock використовує стандартний ланцюжок облікових даних AWS SDK — ключі API не потрібні. Якщо OpenClaw працює на EC2 з роллю інстанса, для якої ввімкнено Bedrock, просто задайте провайдера й модель:
Bedrock використовує типовий ланцюг облікових даних AWS SDK — ключі API не потрібні. Якщо OpenClaw працює на EC2 з роллю інстансу, увімкненою для Bedrock, просто задайте провайдера й модель:
```json5
{
@ -235,14 +235,14 @@ OAuth Codex покриває лише chat/completions і не задоволь
}
```
| Ключ | Тип | Типове значення | Опис |
| ---------------------- | -------- | ---------------------------- | ------------------------------ |
| `model` | `string` | `amazon.titan-embed-text-v2:0` | Будь-який ID моделі вбудовувань Bedrock |
| `outputDimensionality` | `number` | типове для моделі | Для Titan V2: 256, 512 або 1024 |
| Ключ | Тип | Типово | Опис |
| ---------------------- | -------- | ------------------------------ | ----------------------------- |
| `model` | `string` | `amazon.titan-embed-text-v2:0` | Будь-який ідентифікатор моделі ембедингів Bedrock |
| `outputDimensionality` | `number` | типово моделі | Для Titan V2: 256, 512 або 1024 |
**Підтримувані моделі** (з визначенням сімейства та типовими розмірностями):
**Підтримувані моделі** (з визначенням сімейства й типовими розмірностями):
| ID моделі | Провайдер | Типові розмірності | Налаштовувані розмірності |
| Ідентифікатор моделі | Провайдер | Типові розмірності | Налаштовувані розмірності |
| ------------------------------------------ | ---------- | ------------------ | -------------------------- |
| `amazon.titan-embed-text-v2:0` | Amazon | 1024 | 256, 512, 1024 |
| `amazon.titan-embed-text-v1` | Amazon | 1536 | -- |
@ -261,11 +261,11 @@ OAuth Codex покриває лише chat/completions і не задоволь
1. Змінні середовища (`AWS_ACCESS_KEY_ID` + `AWS_SECRET_ACCESS_KEY`)
2. Кеш токенів SSO
3. Облікові дані токена web identity
4. Спільні облікові дані та файли конфігурації
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 потребує:
@ -277,40 +277,40 @@ OAuth Codex покриває лише chat/completions і не задоволь
}
```
Для принципу найменших привілеїв обмежте `InvokeModel` конкретною моделлю:
Для принципу найменших привілеїв обмежте область `InvokeModel` конкретною моделлю:
```
arn:aws:bedrock:*::foundation-model/amazon.titan-embed-text-v2:0
```
</Accordion>
<Accordion title="Локально (GGUF + node-llama-cpp)">
| Ключ | Тип | Типово | Опис |
| --------------------- | ------------------ | ---------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `local.modelPath` | `string` | автоматично завантажується | Шлях до файлу моделі GGUF |
| `local.modelCacheDir` | `string` | типово для node-llama-cpp | Каталог кешу для завантажених моделей |
| `local.contextSize` | `number \| "auto"` | `4096` | Розмір контекстного вікна для контексту ембедингів. 4096 покриває типові фрагменти (128512 токенів), обмежуючи VRAM поза вагами. Зменште до 10242048 на обмежених хостах. `"auto"` використовує навчений максимум моделі — не рекомендовано для моделей 8B+ (Qwen3-Embedding-8B: 40 960 токенів → ~32 ГБ VRAM проти ~8.8 ГБ за 4096). |
<Accordion title="Local (GGUF + node-llama-cpp)">
| Ключ | Тип | Типове значення | Опис |
| --------------------- | ------------------ | ---------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `local.modelPath` | `string` | автоматично завантажується | Шлях до файлу моделі GGUF |
| `local.modelCacheDir` | `string` | типове для node-llama-cpp | Каталог кешу для завантажених моделей |
| `local.contextSize` | `number \| "auto"` | `4096` | Розмір вікна контексту для контексту embedding. 4096 покриває типові фрагменти (128512 токенів), обмежуючи VRAM, не зайняту вагами. Зменште до 10242048 на обмежених хостах. `"auto"` використовує навчений максимум моделі — не рекомендовано для моделей 8B+ (Qwen3-Embedding-8B: 40 960 токенів → ~32 GB VRAM проти ~8.8 GB при 4096). |
Типова модель: `embeddinggemma-300m-qat-Q8_0.gguf` (~0.6 ГБ, автоматично завантажується). Потребує нативного складання: `pnpm approve-builds`, потім `pnpm rebuild node-llama-cpp`.
Типова модель: `embeddinggemma-300m-qat-Q8_0.gguf` (~0.6 GB, завантажується автоматично). Потрібне нативне складання: `pnpm approve-builds`, потім `pnpm rebuild node-llama-cpp`.
Використовуйте окремий CLI, щоб перевірити той самий шлях провайдера, який використовує Gateway:
Використайте автономний CLI, щоб перевірити той самий шлях провайдера, який використовує Gateway:
```bash
openclaw memory status --deep --agent main
openclaw memory index --force --agent main
```
Якщо `provider` дорівнює `auto`, `local` вибирається лише тоді, коли `local.modelPath` вказує на наявний локальний файл. Посилання на моделі `hf:` і HTTP(S) усе ще можна використовувати явно з `provider: "local"`, але вони не змушують `auto` вибирати локальний провайдер до того, як модель стане доступною на диску.
Якщо `provider` має значення `auto`, `local` вибирається лише тоді, коли `local.modelPath` вказує на наявний локальний файл. Посилання на моделі `hf:` і HTTP(S) усе ще можна явно використовувати з `provider: "local"`, але вони не змушують `auto` вибирати local до того, як модель стане доступною на диску.
</Accordion>
</AccordionGroup>
### Таймаут вбудованих ембедингів
### Таймаут inline embedding
<ParamField path="sync.embeddingBatchTimeoutSeconds" type="number">
Перевизначає таймаут для вбудованих пакетів ембедингів під час індексування пам’яті.
Перевизначає таймаут для inline-пакетів embedding під час індексування памʼяті.
Якщо не задано, використовується типове значення провайдера: 600 секунд для локальних/самостійно розміщених провайдерів, як-от `local`, `ollama` і `lmstudio`, та 120 секунд для розміщених провайдерів. Збільште це значення, коли локальні пакети ембедингів, обмежені CPU, працюють коректно, але повільно.
Якщо не задано, використовується типове значення провайдера: 600 секунд для локальних/self-hosted провайдерів, як-от `local`, `ollama` і `lmstudio`, та 120 секунд для hosted-провайдерів. Збільште це значення, коли локальні CPU-bound пакети embedding працюють коректно, але повільно.
</ParamField>
---
@ -319,27 +319,27 @@ OAuth Codex покриває лише chat/completions і не задоволь
Усе в `memorySearch.query.hybrid`:
| Ключ | Тип | Типово | Опис |
| -------------------- | --------- | ------ | -------------------------------------- |
| `enabled` | `boolean` | `true` | Увімкнути гібридний пошук BM25 + векторний пошук |
| `vectorWeight` | `number` | `0.7` | Вага для векторних оцінок (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` | Множник розміру пулу кандидатів |
<Tabs>
<Tab title="MMR (різноманітність)">
| Ключ | Тип | Типово | Опис |
| ------------- | --------- | ------- | ------------------------------------------------ |
| `mmr.enabled` | `boolean` | `false` | Увімкнути повторне ранжування MMR |
| `mmr.lambda` | `number` | `0.7` | 0 = максимальна різноманітність, 1 = максимальна релевантність |
<Tab title="MMR (diversity)">
| Ключ | Тип | Типове значення | Опис |
| ------------- | --------- | --------------- | -------------------------------------------- |
| `mmr.enabled` | `boolean` | `false` | Увімкнути повторне ранжування MMR |
| `mmr.lambda` | `number` | `0.7` | 0 = максимальна різноманітність, 1 = максимальна релевантність |
</Tab>
<Tab title="Часове згасання (свіжість)">
| Ключ | Тип | Типово | Опис |
| ---------------------------- | --------- | ------ | ---------------------------- |
| `temporalDecay.enabled` | `boolean` | `false` | Увімкнути підсилення свіжості |
| `temporalDecay.halfLifeDays` | `number` | `30` | Оцінка зменшується вдвічі кожні N днів |
<Tab title="Temporal decay (recency)">
| Ключ | Тип | Типове значення | Опис |
| ---------------------------- | --------- | --------------- | ------------------------------------- |
| `temporalDecay.enabled` | `boolean` | `false` | Увімкнути підсилення за новизною |
| `temporalDecay.halfLifeDays` | `number` | `30` | Оцінка зменшується вдвічі кожні N днів |
Вічнозелені файли (`MEMORY.md`, файли без дат у `memory/`) ніколи не згасають.
Evergreen-файли (`MEMORY.md`, файли без дат у `memory/`) ніколи не зазнають decay.
</Tab>
</Tabs>
@ -367,7 +367,7 @@ OAuth Codex покриває лише chat/completions і не задоволь
---
## Додаткові шляхи памяті
## Додаткові шляхи памʼяті
| Ключ | Тип | Опис |
| ------------ | ---------- | ----------------------------------------- |
@ -385,83 +385,83 @@ OAuth Codex покриває лише chat/completions і не задоволь
}
```
Шляхи можуть бути абсолютними або відносними до робочого простору. Каталоги рекурсивно скануються на файли `.md`. Обробка символьних посилань залежить від активного бекенда: вбудований рушій ігнорує символьні посилання, тоді як QMD дотримується поведінки базового сканера QMD.
Шляхи можуть бути абсолютними або відносними до робочого простору. Каталоги рекурсивно скануються на наявність файлів `.md`. Обробка symlink залежить від активного backend: вбудований рушій ігнорує symlink, тоді як QMD дотримується поведінки базового сканера QMD.
Для пошуку транскриптів між агентами в межах агента використовуйте `agents.list[].memorySearch.qmd.extraCollections` замість `memory.qmd.paths`. Ці додаткові колекції мають ту саму форму `{ path, name, pattern? }`, але об’єднуються окремо для кожного агента й можуть зберігати явні спільні імена, коли шлях вказує за межі поточного робочого простору. Якщо той самий розв’язаний шлях з’являється і в `memory.qmd.paths`, і в `memorySearch.qmd.extraCollections`, QMD залишає перший запис і пропускає дублікат.
Для пошуку транскриптів між агентами в межах агента використовуйте `agents.list[].memorySearch.qmd.extraCollections` замість `memory.qmd.paths`. Ці додаткові колекції мають таку саму форму `{ path, name, pattern? }`, але обʼєднуються для кожного агента й можуть зберігати явні спільні назви, коли шлях вказує за межі поточного робочого простору. Якщо той самий resolved path є і в `memory.qmd.paths`, і в `memorySearch.qmd.extraCollections`, QMD зберігає перший запис і пропускає дублікат.
---
## Мультимодальна память (Gemini)
## Мультимодальна памʼять (Gemini)
Індексуйте зображення й аудіо разом із Markdown за допомогою Gemini Embedding 2:
| Ключ | Тип | Типово | Опис |
| ------------------------- | ---------- | ---------- | ----------------------------------------- |
| `multimodal.enabled` | `boolean` | `false` | Увімкнути мультимодальну індексацію |
| `multimodal.modalities` | `string[]` | -- | `["image"]`, `["audio"]` або `["all"]` |
| `multimodal.maxFileBytes` | `number` | `10000000` | Максимальний розмір файлу для індексації |
| Ключ | Тип | Типове значення | Опис |
| ------------------------- | ---------- | --------------- | ------------------------------------- |
| `multimodal.enabled` | `boolean` | `false` | Увімкнути мультимодальне індексування |
| `multimodal.modalities` | `string[]` | -- | `["image"]`, `["audio"]`, або `["all"]` |
| `multimodal.maxFileBytes` | `number` | `10000000` | Максимальний розмір файлу для індексування |
<Note>
Застосовується лише до файлів у `extraPaths`. Типові корені пам'яті залишаються лише Markdown. Потрібен `gemini-embedding-2-preview`. `fallback` має бути `"none"`.
Застосовується лише до файлів у `extraPaths`. Типові корені памяті залишаються лише Markdown. Потрібен `gemini-embedding-2-preview`. `fallback` має бути `"none"`.
</Note>
Підтримувані формати: `.jpg`, `.jpeg`, `.png`, `.webp`, `.gif`, `.heic`, `.heif` (зображення); `.mp3`, `.wav`, `.ogg`, `.opus`, `.m4a`, `.aac`, `.flac` (аудіо).
---
## Кеш вбудовувань
## Кеш embedding
| Ключ | Тип | За замовчуванням | Опис |
| ----------------- | --------- | ---------------- | ---------------------------------- |
| `cache.enabled` | `boolean` | `false` | Кешувати вбудовування фрагментів у SQLite |
| `cache.maxEntries` | `number` | `50000` | Максимум кешованих вбудовувань |
| Ключ | Тип | Типово | Опис |
| ----------------- | --------- | ------- | ------------------------------------- |
| `cache.enabled` | `boolean` | `false` | Кешувати embedding фрагментів у SQLite |
| `cache.maxEntries` | `number` | `50000` | Максимум кешованих embedding |
Запобігає повторному вбудовуванню незміненого тексту під час повторного індексування або оновлень транскриптів.
Запобігає повторному embedding незміненого тексту під час повторної індексації або оновлень стенограм.
---
## Пакетне індексування
## Пакетна індексація
| Ключ | Тип | За замовчуванням | Опис |
| ----------------------------- | --------- | ---------------- | ---------------------------- |
| `remote.nonBatchConcurrency` | `number` | `4` | Паралельні вбудовування inline |
| `remote.batch.enabled` | `boolean` | `false` | Увімкнути API пакетних вбудовувань |
| `remote.batch.concurrency` | `number` | `2` | Паралельні пакетні завдання |
| `remote.batch.wait` | `boolean` | `true` | Чекати завершення пакета |
| `remote.batch.pollIntervalMs` | `number` | -- | Інтервал опитування |
| `remote.batch.timeoutMinutes` | `number` | -- | Тайм-аут пакета |
| Ключ | Тип | Типово | Опис |
| ----------------------------- | --------- | ------ | -------------------------- |
| `remote.nonBatchConcurrency` | `number` | `4` | Паралельні inline embedding |
| `remote.batch.enabled` | `boolean` | `false` | Увімкнути API пакетного embedding |
| `remote.batch.concurrency` | `number` | `2` | Паралельні пакетні завдання |
| `remote.batch.wait` | `boolean` | `true` | Чекати завершення пакета |
| `remote.batch.pollIntervalMs` | `number` | -- | Інтервал опитування |
| `remote.batch.timeoutMinutes` | `number` | -- | Тайм-аут пакета |
Доступно для `openai`, `gemini` і `voyage`. Пакетна обробка OpenAI зазвичай найшвидша й найдешевша для великих зворотних заповнень.
Доступно для `openai`, `gemini` і `voyage`. Пакетний режим OpenAI зазвичай найшвидший і найдешевший для великих зворотних заповнень.
`remote.nonBatchConcurrency` керує викликами вбудовувань inline, які використовують локальні/самостійно розміщені провайдери та розміщені провайдери, коли пакетні API провайдера не активні. Ollama за замовчуванням використовує `1` для непакетного індексування, щоб не перевантажувати менші локальні хости; установіть вище значення на більших машинах.
`remote.nonBatchConcurrency` керує inline-викликами embedding, які використовують локальні/самостійно розгорнуті провайдери та хостингові провайдери, коли пакетні API провайдера не активні. Ollama типово використовує `1` для непакетної індексації, щоб не перевантажувати менші локальні хости; встановіть більше значення на потужніших машинах.
Це окремо від `sync.embeddingBatchTimeoutSeconds`, який керує тайм-аутом для викликів вбудовувань inline.
Це окремо від `sync.embeddingBatchTimeoutSeconds`, який керує тайм-аутом для inline-викликів embedding.
---
## Пошук у пам'яті сесій (експериментально)
## Пошук пам’яті сеансів (експериментально)
Індексуйте транскрипти сесій і показуйте їх через `memory_search`:
Індексуйте стенограми сеансів і показуйте їх через `memory_search`:
| Ключ | Тип | За замовчуванням | Опис |
| ----------------------------- | ---------- | ---------------- | ----------------------------------------- |
| `experimental.sessionMemory` | `boolean` | `false` | Увімкнути індексування сесій |
| `sources` | `string[]` | `["memory"]` | Додайте `"sessions"`, щоб включити транскрипти |
| `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` | Поріг повідомлень для повторної індексації |
<Warning>
Індексування сесій є опційним і виконується асинхронно. Результати можуть бути трохи застарілими. Журнали сесій зберігаються на диску, тож вважайте доступ до файлової системи межею довіри.
Індексація сеансів вмикається явно й виконується асинхронно. Результати можуть бути трохи застарілими. Журнали сеансів зберігаються на диску, тому вважайте доступ до файлової системи межею довіри.
</Warning>
---
## Векторне прискорення SQLite (sqlite-vec)
| Ключ | Тип | За замовчуванням | Опис |
| ---------------------------- | --------- | ---------------- | ----------------------------------- |
| `store.vector.enabled` | `boolean` | `true` | Використовувати sqlite-vec для векторних запитів |
| `store.vector.extensionPath` | `string` | вбудований | Перевизначити шлях sqlite-vec |
| Ключ | Тип | Типово | Опис |
| ---------------------------- | --------- | ------- | --------------------------------------- |
| `store.vector.enabled` | `boolean` | `true` | Використовувати sqlite-vec для векторних запитів |
| `store.vector.extensionPath` | `string` | bundled | Перевизначити шлях до sqlite-vec |
Коли sqlite-vec недоступний, OpenClaw автоматично повертається до косинусної подібності в процесі.
@ -469,55 +469,55 @@ OAuth Codex покриває лише chat/completions і не задоволь
## Сховище індексу
| Ключ | Тип | За замовчуванням | Опис |
| --------------------- | -------- | ------------------------------------ | ------------------------------------------- |
| Ключ | Тип | Типово | Опис |
| --------------------- | -------- | ------------------------------------- | ----------------------------------------- |
| `store.path` | `string` | `~/.openclaw/memory/{agentId}.sqlite` | Розташування індексу (підтримує токен `{agentId}`) |
| `store.fts.tokenizer` | `string` | `unicode61` | Токенізатор FTS5 (`unicode61` або `trigram`) |
| `store.fts.tokenizer` | `string` | `unicode61` | Токенізатор FTS5 (`unicode61` або `trigram`) |
---
## Конфігурація бекенда QMD
## Конфігурація бекенду QMD
Установіть `memory.backend = "qmd"`, щоб увімкнути. Усі налаштування QMD розташовані в `memory.qmd`:
| Ключ | Тип | За замовчуванням | Опис |
| ------------------------ | --------- | ---------------- | ------------------------------------------------------------------------------------- |
| `command` | `string` | `qmd` | Шлях до виконуваного файлу QMD; установіть абсолютний шлях, коли службовий `PATH` відрізняється від вашої оболонки |
| `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` | -- | Каталог експорту |
| Ключ | Тип | Типово | Опис |
| ------------------------ | --------- | -------- | ------------------------------------------------------------------------------------- |
| `command` | `string` | `qmd` | Шлях до виконуваного файлу QMD; задайте абсолютний шлях, коли `PATH` сервісу відрізняється від вашої оболонки |
| `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` | -- | Каталог експорту |
`searchMode: "search"` є лише лексичним/BM25. OpenClaw не запускає перевірки готовності семантичних векторів або обслуговування QMD-ембедингів для цього режиму, зокрема під час `memory status --deep`; `vsearch` і `query` надалі потребують готовності QMD-векторів та ембедингів.
`searchMode: "search"` є лише лексичним/BM25. OpenClaw не запускає перевірки готовності семантичних векторів або обслуговування QMD-вбудовувань для цього режиму, зокрема під час `memory status --deep`; `vsearch` і `query` надалі потребують готовності QMD-векторів і вбудовувань.
OpenClaw надає перевагу поточним формам колекцій QMD і запитів MCP, але зберігає роботу старіших випусків QMD, за потреби пробуючи сумісні прапорці шаблонів колекцій і старіші назви інструментів MCP. Коли QMD оголошує підтримку кількох фільтрів колекцій, колекції з одного джерела шукаються одним процесом QMD; старіші збірки QMD зберігають шлях сумісності для кожної колекції. Одне джерело означає, що колекції постійної памʼяті групуються разом, тоді як колекції стенограм сесій залишаються окремою групою, щоб диверсифікація джерел і надалі мала обидва входи.
OpenClaw надає перевагу поточним формам колекцій QMD і запитів MCP, але зберігає працездатність старіших випусків QMD, за потреби пробуючи сумісні прапорці шаблонів колекцій і старіші назви інструментів MCP. Коли QMD повідомляє про підтримку кількох фільтрів колекцій, колекції з тим самим джерелом шукаються одним процесом QMD; старіші збірки QMD зберігають шлях сумісності для кожної колекції. Те саме джерело означає, що колекції довготривалої пам'яті групуються разом, тоді як колекції стенограм сесій залишаються окремою групою, щоб диверсифікація джерел і надалі мала обидва входи.
<Note>
Перевизначення моделей QMD залишаються на боці QMD, а не в конфігурації OpenClaw. Якщо потрібно глобально перевизначити моделі QMD, задайте змінні середовища, як-от `QMD_EMBED_MODEL`, `QMD_RERANK_MODEL` і `QMD_GENERATE_MODEL`, у середовищі виконання Gateway.
Перевизначення моделей QMD залишаються на боці QMD, а не в конфігурації OpenClaw. Якщо потрібно глобально перевизначити моделі QMD, задайте змінні середовища, як-от `QMD_EMBED_MODEL`, `QMD_RERANK_MODEL` і `QMD_GENERATE_MODEL`, у runtime-середовищі Gateway.
</Note>
<AccordionGroup>
<Accordion title="Розклад оновлення">
| Ключ | Тип | Типове значення | Опис |
| ------------------------ | --------- | --------------- | ---------------------------------------------- |
| `update.interval` | `string` | `5m` | Інтервал оновлення |
| `update.debounceMs` | `number` | `15000` | Усунення брязкоту змін файлів |
| `update.onBoot` | `boolean` | `true` | Оновлювати під час запуску |
| `update.waitForBootSync` | `boolean` | `false` | Блокувати запуск до завершення оновлення |
| `update.embedInterval` | `string` | -- | Окрема періодичність ембедингів |
| `update.commandTimeoutMs` | `number` | -- | Тайм-аут для команд QMD |
| `update.updateTimeoutMs` | `number` | -- | Тайм-аут для операцій оновлення QMD |
| `update.embedTimeoutMs` | `number` | -- | Тайм-аут для операцій ембедингів QMD |
| Ключ | Тип | Типово | Опис |
| ------------------------- | --------- | ------- | ------------------------------------- |
| `update.interval` | `string` | `5m` | Інтервал оновлення |
| `update.debounceMs` | `number` | `15000` | Усунення брязкоту змін файлів |
| `update.onBoot` | `boolean` | `true` | Оновлювати під час запуску в підпроцесі QMD |
| `update.waitForBootSync` | `boolean` | `false` | Блокувати запуск до завершення оновлення |
| `update.embedInterval` | `string` | -- | Окрема періодичність вбудовування |
| `update.commandTimeoutMs` | `number` | -- | Тайм-аут для команд QMD |
| `update.updateTimeoutMs` | `number` | -- | Тайм-аут для операцій оновлення QMD |
| `update.embedTimeoutMs` | `number` | -- | Тайм-аут для операцій вбудовування QMD |
</Accordion>
<Accordion title="Ліміти">
| Ключ | Тип | Типове значення | Опис |
| ------------------------- | -------- | --------------- | ----------------------------------------- |
| `limits.maxResults` | `number` | `6` | Максимальна кількість результатів пошуку |
| `limits.maxSnippetChars` | `number` | -- | Обмежити довжину фрагмента |
| `limits.maxInjectedChars` | `number` | -- | Обмежити загальну кількість вставлених символів |
| `limits.timeoutMs` | `number` | `4000` | Тайм-аут пошуку |
<Accordion title="Обмеження">
| Ключ | Тип | Типово | Опис |
| ------------------------- | -------- | ------ | ------------------------------------- |
| `limits.maxResults` | `number` | `6` | Максимум результатів пошуку |
| `limits.maxSnippetChars` | `number` | -- | Обмежити довжину фрагмента |
| `limits.maxInjectedChars` | `number` | -- | Обмежити загальну кількість вставлених символів |
| `limits.timeoutMs` | `number` | `4000` | Тайм-аут пошуку |
</Accordion>
<Accordion title="Область дії">
Керує тим, які сесії можуть отримувати результати пошуку QMD. Та сама схема, що й [`session.sendPolicy`](/uk/gateway/config-agents#session):
@ -535,23 +535,25 @@ OpenClaw надає перевагу поточним формам колекц
}
```
Постачене типове значення дозволяє прямі сесії та сесії каналів, водночас усе ще забороняючи групи.
Постачене типове значення дозволяє прямі й канальні сесії, водночас усе ще забороняючи групи.
Типове значення — лише DM. `match.keyPrefix` зіставляється з нормалізованим ключем сесії; `match.rawKeyPrefix` зіставляється з необробленим ключем, включно з `agent:<id>:`.
Типово лише для DM. `match.keyPrefix` зіставляється з нормалізованим ключем сесії; `match.rawKeyPrefix` зіставляється з сирим ключем, включно з `agent:<id>:`.
</Accordion>
<Accordion title="Цитування">
`memory.citations` застосовується до всіх бекендів:
| Значення | Поведінка |
| --------------- | ----------------------------------------------------------- |
| `auto` (типово) | Додавати нижній колонтитул `Source: <path#line>` у фрагменти |
| `on` | Завжди додавати нижній колонтитул |
| `off` | Не додавати нижній колонтитул (шлях усе одно передається агенту внутрішньо) |
| Значення | Поведінка |
| ---------------- | --------------------------------------------------- |
| `auto` (типово) | Додавати футер `Source: <path#line>` у фрагменти |
| `on` | Завжди додавати футер |
| `off` | Не додавати футер (шлях усе одно передається агенту внутрішньо) |
</Accordion>
</AccordionGroup>
Оновлення QMD під час завантаження використовують одноразовий шлях підпроцесу під час запуску Gateway. Довготривалий менеджер QMD усе ще відповідає за звичайний спостерігач файлів і таймери інтервалів, коли пошук у пам'яті відкривається для інтерактивного використання.
### Повний приклад QMD
```json5
@ -581,15 +583,15 @@ Dreaming налаштовується в `plugins.entries.memory-core.config.dre
Dreaming виконується як один запланований прохід і використовує внутрішні фази light/deep/REM як деталь реалізації.
Концептуальну поведінку та slash-команди див. у [Dreaming](/uk/concepts/dreaming).
Концептуальну поведінку й slash-команди див. у [Dreaming](/uk/concepts/dreaming).
### Налаштування користувача
| Ключ | Тип | Типове значення | Опис |
| ----------- | --------- | --------------- | ------------------------------------------------------ |
| `enabled` | `boolean` | `false` | Повністю ввімкнути або вимкнути dreaming |
| `frequency` | `string` | `0 3 * * *` | Необовʼязкова cron-періодичність для повного проходу dreaming |
| `model` | `string` | типова модель | Необовʼязкове перевизначення моделі під-агента Dream Diary |
| Ключ | Тип | Типово | Опис |
| ----------- | --------- | ------------- | ------------------------------------------------ |
| `enabled` | `boolean` | `false` | Повністю ввімкнути або вимкнути dreaming |
| `frequency` | `string` | `0 3 * * *` | Необов'язкова Cron-періодичність для повного проходу dreaming |
| `model` | `string` | типова модель | Необов'язкове перевизначення моделі субагента Dream Diary |
### Приклад
@ -617,15 +619,15 @@ Dreaming виконується як один запланований прох
<Note>
- Dreaming записує машинний стан у `memory/.dreams/`.
- Dreaming записує людиночитний наративний вихід у `DREAMS.md` (або наявний `dreams.md`).
- `dreaming.model` використовує наявний шлюз довіри під-агента Plugin; задайте `plugins.entries.memory-core.subagent.allowModelOverride: true`, перш ніж вмикати його.
- Dream Diary повторює спробу один раз із типовою моделлю сесії, коли налаштована модель недоступна. Помилки довіри або allowlist журналюються й не повторюються непомітно.
- Політика фаз light/deep/REM і порогові значення є внутрішньою поведінкою, а не користувацькою конфігурацією.
- Dreaming записує людиночитаний наративний вивід у `DREAMS.md` (або наявний `dreams.md`).
- `dreaming.model` використовує наявний шлюз довіри субагента Plugin; задайте `plugins.entries.memory-core.subagent.allowModelOverride: true`, перш ніж вмикати його.
- Dream Diary повторює спробу один раз із типовою моделлю сесії, коли налаштована модель недоступна. Збої довіри або allowlist журналюються й не повторюються мовчки.
- Політика й пороги фаз light/deep/REM є внутрішньою поведінкою, а не користувацькою конфігурацією.
</Note>
## Повʼязане
## Пов'язане
- [Довідник конфігурації](/uk/gateway/configuration-reference)
- [Огляд памʼяті](/uk/concepts/memory)
- [Пошук у памʼяті](/uk/concepts/memory-search)
- [Огляд пам'яті](/uk/concepts/memory)
- [Пошук у пам'яті](/uk/concepts/memory-search)