diff --git a/docs/uk/concepts/active-memory.md b/docs/uk/concepts/active-memory.md
index 8bf4fe2ad..54bed964d 100644
--- a/docs/uk/concepts/active-memory.md
+++ b/docs/uk/concepts/active-memory.md
@@ -1,35 +1,35 @@
---
read_when:
- Ви хочете зрозуміти, для чого потрібна Active Memory
- - Ви хочете ввімкнути Active Memory для розмовного агента
+ - Ви хочете увімкнути Active Memory для розмовного агента
- Ви хочете налаштувати поведінку Active Memory, не вмикаючи її всюди
-summary: Блокувальний під-агент пам’яті, що належить Plugin і впроваджує релевантну пам’ять в інтерактивні сеанси чату
+summary: Блокувальний субагент пам’яті, що належить Plugin і впроваджує релевантну пам’ять в інтерактивні сеанси чату
title: Active Memory
x-i18n:
- generated_at: "2026-05-03T11:35:36Z"
+ generated_at: "2026-05-03T11:45:37Z"
model: gpt-5.5
provider: openai
- source_hash: 2755c6c9a5228268555a58963817d515e01dfecd88ba0241dad36c6e36f5c67b
+ source_hash: 7ea7bc021c7a67f7a7df5987a37bbf7cc3e8afc75dbadcf3fbff849a9b6f7473
source_path: concepts/active-memory.md
workflow: 16
---
-Active Memory — це необов’язковий блокувальний під-агент пам’яті, що належить Plugin і запускається
-перед основною відповіддю для відповідних розмовних сеансів.
+Active Memory — це необов'язковий блокувальний під-агент пам'яті під керуванням Plugin, який запускається
+перед основною відповіддю для придатних розмовних сеансів.
-Він існує тому, що більшість систем пам’яті функціональні, але реактивні. Вони покладаються на те,
-що основний агент вирішить, коли шукати в пам’яті, або на те, що користувач скаже щось
-на кшталт "remember this" чи "search memory." На той момент мить, коли пам’ять могла б
-зробити відповідь природною, уже минула.
+Ця функція існує, тому що більшість систем пам'яті потужні, але реактивні. Вони покладаються на те,
+що основний агент вирішить, коли шукати в пам'яті, або що користувач скаже щось
+на кшталт "запам'ятай це" чи "пошукай у пам'яті". На той момент мить, коли пам'ять
+могла б зробити відповідь природною, уже минула.
-Active Memory дає системі одну обмежену можливість показати релевантну пам’ять
-до генерації основної відповіді.
+Active Memory дає системі одну обмежену можливість підняти релевантну інформацію з пам'яті
+до того, як буде згенеровано основну відповідь.
-## Швидкий старт
+## Швидкий початок
Вставте це в `openclaw.json` для налаштування з безпечними типовими параметрами — Plugin увімкнено, обмежено
-агентом `main`, лише сеанси прямих повідомлень, успадковує модель сеансу,
-коли вона доступна:
+агентом `main`, лише сеанси прямих повідомлень, модель сеансу успадковується
+за наявності:
```json5
{
@@ -61,7 +61,7 @@ Active Memory дає системі одну обмежену можливіст
openclaw gateway
```
-Щоб переглянути це наживо в розмові:
+Щоб перевірити це наживо в розмові:
```text
/verbose on
@@ -71,28 +71,28 @@ openclaw gateway
Що роблять ключові поля:
- `plugins.entries.active-memory.enabled: true` вмикає Plugin
-- `config.agents: ["main"]` підключає до Active Memory лише агента `main`
-- `config.allowedChatTypes: ["direct"]` обмежує це сеансами прямих повідомлень (групи/канали потрібно вмикати явно)
-- `config.model` (необов’язково) закріплює спеціальну модель пригадування; якщо не задано, успадковується поточна модель сеансу
-- `config.modelFallback` використовується лише тоді, коли явна або успадкована модель не визначається
+- `config.agents: ["main"]` вмикає Active Memory лише для агента `main`
+- `config.allowedChatTypes: ["direct"]` обмежує це сеансами прямих повідомлень (групи/канали вмикайте явно)
+- `config.model` (необов'язково) закріплює окрему модель пригадування; якщо не задано, успадковується поточна модель сеансу
+- `config.modelFallback` використовується лише тоді, коли не вдається визначити ні явну, ні успадковану модель
- `config.promptStyle: "balanced"` є типовим значенням для режиму `recent`
-- Active Memory все одно запускається лише для відповідних інтерактивних постійних чат-сеансів
+- Active Memory усе одно запускається лише для придатних інтерактивних постійних чат-сеансів
## Рекомендації щодо швидкості
-Найпростіше налаштування — залишити `config.model` незаданим і дати Active Memory використовувати
-ту саму модель, яку ви вже використовуєте для звичайних відповідей. Це найбезпечніший типовий варіант,
-оскільки він відповідає вашим наявним параметрам провайдера, автентифікації та моделі.
+Найпростіше налаштування — залишити `config.model` незаданим і дозволити Active Memory використовувати
+ту саму модель, яку ви вже використовуєте для звичайних відповідей. Це найбезпечніше типове налаштування,
+оскільки воно відповідає вашим наявним параметрам провайдера, автентифікації та моделі.
-Якщо ви хочете, щоб Active Memory працювала швидше, використовуйте спеціальну модель інференсу
+Якщо ви хочете, щоб Active Memory відчувалася швидшою, використовуйте окрему модель інференсу
замість запозичення основної чат-моделі. Якість пригадування важлива, але затримка
-важливіша, ніж для основного шляху відповіді, а поверхня інструментів Active Memory
-вузька (вона викликає лише доступні інструменти пригадування пам’яті).
+важливіша, ніж для основного шляху відповіді, а інструментальний інтерфейс Active Memory
+вузький (вона викликає лише доступні інструменти пригадування пам'яті).
-Добрі варіанти швидких моделей:
+Хороші варіанти швидких моделей:
-- `cerebras/gpt-oss-120b` для спеціальної моделі пригадування з низькою затримкою
-- `google/gemini-3-flash` як резервний варіант із низькою затримкою без зміни вашої основної чат-моделі
+- `cerebras/gpt-oss-120b` як окрема низьколатентна модель пригадування
+- `google/gemini-3-flash` як низьколатентний резервний варіант без зміни вашої основної чат-моделі
- ваша звичайна модель сеансу, якщо залишити `config.model` незаданим
### Налаштування Cerebras
@@ -122,14 +122,14 @@ openclaw gateway
}
```
-Переконайтеся, що ключ API Cerebras справді має доступ `chat/completions` для
-вибраної моделі — сама лише видимість у `/v1/models` цього не гарантує.
+Переконайтеся, що API-ключ Cerebras справді має доступ `chat/completions` для
+вибраної моделі — сама лише видимість `/v1/models` цього не гарантує.
## Як це побачити
-Active Memory вставляє прихований ненадійний префікс промпта для моделі. Вона не
-показує необроблені теги `...` у
-звичайній видимій для клієнта відповіді.
+Active Memory додає прихований недовірений префікс промпту для моделі. Вона
+не показує сирі теги `...` у
+звичайній видимій клієнту відповіді.
## Перемикач сеансу
@@ -142,8 +142,8 @@ Active Memory вставляє прихований ненадійний пре
/active-memory on
```
-Це діє в межах сеансу. Це не змінює
-`plugins.entries.active-memory.enabled`, націлювання на агентів чи іншу глобальну
+Це обмежено сеансом. Це не змінює
+`plugins.entries.active-memory.enabled`, вибір цільових агентів або іншу глобальну
конфігурацію.
Якщо ви хочете, щоб команда записала конфігурацію та призупинила або відновила Active Memory для
@@ -156,7 +156,7 @@ Active Memory вставляє прихований ненадійний пре
```
Глобальна форма записує `plugins.entries.active-memory.config.enabled`. Вона залишає
-`plugins.entries.active-memory.enabled` увімкненим, щоб команда залишалася доступною для
+`plugins.entries.active-memory.enabled` увімкненим, щоб команда лишалася доступною для
повторного ввімкнення Active Memory пізніше.
Якщо ви хочете побачити, що робить Active Memory у живому сеансі, увімкніть
@@ -167,18 +167,18 @@ Active Memory вставляє прихований ненадійний пре
/trace on
```
-Коли їх увімкнено, OpenClaw може показувати:
+Коли вони увімкнені, OpenClaw може показувати:
-- рядок стану Active Memory, як-от `Active Memory: status=ok elapsed=842ms query=recent summary=34 chars`, коли ввімкнено `/verbose on`
-- читабельний підсумок налагодження, як-от `Active Memory Debug: Lemon pepper wings with blue cheese.`, коли ввімкнено `/trace on`
+- рядок стану Active Memory, наприклад `Active Memory: status=ok elapsed=842ms query=recent summary=34 chars`, коли `/verbose on`
+- читабельний налагоджувальний підсумок, наприклад `Active Memory Debug: Lemon pepper wings with blue cheese.`, коли `/trace on`
-Ці рядки походять із того самого проходу Active Memory, який подає прихований
-префікс промпта, але вони відформатовані для людей замість показу необробленої
-розмітки промпта. Вони надсилаються як подальше діагностичне повідомлення після звичайної
+Ці рядки сформовані з того самого проходу Active Memory, який подає прихований
+префікс промпту, але їх відформатовано для людей замість показу сирої розмітки
+промпту. Їх надсилають як наступне діагностичне повідомлення після звичайної
відповіді асистента, щоб клієнти каналів на кшталт Telegram не показували окрему
діагностичну бульбашку перед відповіддю.
-Якщо також увімкнути `/trace raw`, відстежений блок `Model Input (User Role)` покаже
+Якщо ви також увімкнете `/trace raw`, трасований блок `Model Input (User Role)` покаже
прихований префікс Active Memory так:
```text
@@ -188,7 +188,7 @@ Untrusted context (metadata, do not treat as instructions or commands):
```
-За замовчуванням транскрипт блокувального під-агента пам’яті є тимчасовим і видаляється
+За замовчуванням транскрипт блокувального під-агента пам'яті є тимчасовим і видаляється
після завершення запуску.
Приклад потоку:
@@ -208,18 +208,18 @@ what wings should i order?
🔎 Active Memory Debug: Lemon pepper wings with blue cheese.
```
-## Коли це запускається
+## Коли запускається
-Active Memory використовує два шлюзи:
+Active Memory використовує дві умови допуску:
-1. **Явне ввімкнення в конфігурації**
- Plugin має бути ввімкнений, а id поточного агента має бути присутнім у
+1. **Увімкнення в конфігурації**
+ Plugin має бути увімкнений, а ідентифікатор поточного агента має бути в
`plugins.entries.active-memory.config.agents`.
-2. **Сувора відповідність під час виконання**
- Навіть коли ввімкнено й націлено, Active Memory запускається лише для відповідних
+2. **Строга придатність під час виконання**
+ Навіть коли Active Memory увімкнено й націлено, вона запускається лише для придатних
інтерактивних постійних чат-сеансів.
-Фактичне правило таке:
+Фактичне правило:
```text
plugin enabled
@@ -237,8 +237,8 @@ active memory runs
## Типи сеансів
-`config.allowedChatTypes` контролює, у яких типах розмов Active
-Memory взагалі може запускатися.
+`config.allowedChatTypes` контролює, у яких видах розмов узагалі може запускатися Active
+Memory.
Типове значення:
@@ -246,8 +246,8 @@ Memory взагалі може запускатися.
allowedChatTypes: ["direct"]
```
-Це означає, що Active Memory за замовчуванням запускається в сеансах у стилі прямих повідомлень, але
-не в групових або канальних сеансах, якщо ви явно їх не ввімкнете.
+Це означає, що Active Memory типово запускається в сеансах прямих повідомлень, але
+не в групових або канальних сеансах, якщо ви не ввімкнете їх явно.
Приклади:
@@ -267,21 +267,21 @@ allowedChatTypes: ["direct", "group", "channel"]
`config.deniedChatIds` після вибору дозволених типів сеансів.
`allowedChatIds` — це явний список дозволених визначених ідентифікаторів розмов. Коли він
-не порожній, Active Memory запускається лише тоді, коли id розмови сеансу є в
+не порожній, Active Memory запускається лише тоді, коли ідентифікатор розмови сеансу є в
цьому списку. Це одночасно звужує кожен дозволений тип чату, включно з прямими
повідомленнями. Якщо ви хочете всі прямі повідомлення плюс лише конкретні групи, додайте
-id прямих співрозмовників у `allowedChatIds` або тримайте `allowedChatTypes` зосередженим на
-розгортанні для груп/каналів, яке ви тестуєте.
+ідентифікатори прямих співрозмовників у `allowedChatIds` або залиште `allowedChatTypes` зосередженим на
+розгортанні груп/каналів, яке ви тестуєте.
`deniedChatIds` — це явний список заборон. Він завжди має пріоритет над
`allowedChatTypes` і `allowedChatIds`, тому відповідна розмова пропускається
навіть тоді, коли її тип сеансу інакше дозволений.
-Ідентифікатори беруться з ключа постійного сеансу каналу: наприклад Feishu
-`chat_id` / `open_id`, id чату Telegram або id каналу Slack. Зіставлення
-нечутливе до регістру. Якщо `allowedChatIds` не порожній і OpenClaw не може визначити
-id розмови для сеансу, Active Memory пропускає цей хід замість того, щоб
-здогадуватися.
+Ідентифікатори походять із ключа постійного сеансу каналу: наприклад Feishu
+`chat_id` / `open_id`, ідентифікатор чату Telegram або ідентифікатор каналу Slack. Зіставлення
+не враховує регістр. Якщо `allowedChatIds` не порожній і OpenClaw не може визначити
+ідентифікатор розмови для сеансу, Active Memory пропускає цю репліку замість того, щоб
+вгадувати.
Приклад:
@@ -291,17 +291,17 @@ allowedChatIds: ["ou_operator_open_id", "oc_small_ops_group"],
deniedChatIds: ["oc_large_public_group"]
```
-## Де це запускається
+## Де запускається
-Active Memory — це функція збагачення розмови, а не загальноплатформна
-функція інференсу.
+Active Memory — це функція збагачення розмови, а не функція інференсу на рівні всієї
+платформи.
-| Поверхня | Чи запускає Active Memory? |
+| Поверхня | Запускає Active Memory? |
| ------------------------------------------------------------------- | ------------------------------------------------------- |
-| Постійні сеанси Control UI / вебчату | Так, якщо Plugin увімкнено й агент націлений |
-| Інші інтерактивні сеанси каналів на тому самому шляху постійного чату | Так, якщо Plugin увімкнено й агент націлений |
-| Headless одноразові запуски | Ні |
-| Heartbeat/фонові запуски | Ні |
+| Інтерфейс керування / постійні сеанси вебчату | Так, якщо Plugin увімкнено й агент входить до цільових |
+| Інші інтерактивні сеанси каналів на тому самому шляху постійного чату | Так, якщо Plugin увімкнено й агент входить до цільових |
+| Одноразові запуски без інтерфейсу | Ні |
+| Запуски Heartbeat/фонові запуски | Ні |
| Загальні внутрішні шляхи `agent-command` | Ні |
| Виконання під-агента/внутрішнього допоміжного процесу | Ні |
@@ -310,25 +310,25 @@ Active Memory — це функція збагачення розмови, а н
Використовуйте Active Memory, коли:
- сеанс є постійним і орієнтованим на користувача
-- агент має змістовну довготривалу пам’ять для пошуку
-- безперервність і персоналізація важливіші за чистий детермінізм промпта
+- агент має змістовну довгострокову пам'ять для пошуку
+- безперервність і персоналізація важливіші за необроблений детермінізм промпту
Це особливо добре працює для:
-- сталих уподобань
+- стабільних уподобань
- повторюваних звичок
-- довготривалого контексту користувача, який має природно з’являтися
+- довгострокового користувацького контексту, який має з'являтися природно
Це погано підходить для:
- автоматизації
-- внутрішніх виконавців
+- внутрішніх воркерів
- одноразових API-завдань
- місць, де прихована персоналізація була б несподіваною
## Як це працює
-Форма виконання така:
+Форма під час виконання:
```mermaid
flowchart LR
@@ -339,19 +339,19 @@ flowchart LR
I --> M["Main Reply"]
```
-Блокувальний під-агент пам’яті може використовувати лише доступні інструменти пригадування пам’яті:
+Блокувальний під-агент пам'яті може використовувати лише доступні інструменти пригадування з пам'яті:
- `memory_recall`
- `memory_search`
- `memory_get`
-Якщо зв’язок слабкий, він має повернути `NONE`.
+Якщо зв'язок слабкий, він має повернути `NONE`.
## Режими запиту
-`config.queryMode` контролює, скільки розмови бачить блокувальний під-агент пам’яті.
-Виберіть найменший режим, який усе ще добре відповідає на подальші запитання;
-бюджети тайм-ауту мають зростати разом із розміром контексту (`message` < `recent` < `full`).
+`config.queryMode` контролює, який обсяг розмови бачить блокувальний під-агент пам'яті.
+Вибирайте найменший режим, який усе ще добре відповідає на уточнювальні запитання;
+бюджети тайм-ауту мають збільшуватися разом із розміром контексту (`message` < `recent` < `full`).
@@ -361,18 +361,18 @@ flowchart LR
Latest user message only
```
- Використовуйте це, коли:
+ Використовуйте цей режим, коли:
- - ви хочете найшвидшу поведінку
- - ви хочете найсильніший ухил у бік пригадування сталих уподобань
- - подальші ходи не потребують розмовного контексту
+ - вам потрібна найшвидша поведінка
+ - вам потрібне найсильніше зміщення в бік пригадування стабільних уподобань
+ - наступним реплікам не потрібен контекст розмови
- Почніть приблизно з `3000` до `5000` мс для `config.timeoutMs`.
+ Починайте приблизно з `3000` до `5000` мс для `config.timeoutMs`.
- Надсилається останнє повідомлення користувача плюс невеликий недавній хвіст розмови.
+ Надсилається останнє повідомлення користувача плюс невеликий останній фрагмент розмови.
```text
Recent conversation tail:
@@ -384,17 +384,17 @@ flowchart LR
...
```
- Використовуйте це, коли:
+ Використовуйте цей режим, коли:
- - ви хочете кращий баланс швидкості та розмовного підґрунтя
- - подальші запитання часто залежать від кількох останніх ходів
+ - вам потрібен кращий баланс між швидкістю та прив'язкою до контексту розмови
+ - уточнювальні запитання часто залежать від кількох останніх реплік
- Почніть приблизно з `15000` мс для `config.timeoutMs`.
+ Починайте приблизно з `15000` мс для `config.timeoutMs`.
- Повна розмова надсилається блокувальному під-агенту пам’яті.
+ Уся розмова надсилається блокувальному під-агенту пам'яті.
```text
Full conversation context:
@@ -404,31 +404,31 @@ flowchart LR
...
```
- Використовуйте це, коли:
+ Використовуйте цей режим, коли:
- найвища якість пригадування важливіша за затримку
- - розмова містить важливі початкові умови далеко раніше в гілці
+ - розмова містить важливий вступний контекст значно раніше в ланцюжку
- Почніть приблизно з `15000` мс або вище залежно від розміру гілки.
+ Починайте приблизно з `15000` мс або вище залежно від розміру ланцюжка.
-## Стилі промпта
+## Стилі промпту
-`config.promptStyle` контролює, наскільки охочим або суворим є блокувальний під-агент пам’яті
-під час рішення, чи повертати пам’ять.
+`config.promptStyle` контролює, наскільки охочим або суворим є блокувальний під-агент пам'яті,
+коли вирішує, чи повертати дані з пам'яті.
Доступні стилі:
-- `balanced`: стандартний варіант загального призначення для режиму `recent`
-- `strict`: найменш активний; найкращий, коли потрібно мінімізувати просочування із сусіднього контексту
-- `contextual`: найкраще підтримує безперервність; найкращий, коли історія розмови має більше значення
-- `recall-heavy`: охочіше показує пам’ять за м’якших, але все ще правдоподібних збігів
+- `balanced`: універсальне значення за замовчуванням для режиму `recent`
+- `strict`: найменш охочий; найкраще, коли потрібно дуже мало змішування із сусіднім контекстом
+- `contextual`: найкраще підтримує безперервність; найкраще, коли історія розмови має більше значення
+- `recall-heavy`: охочіше показує пам’ять для м’якших, але все ще правдоподібних збігів
- `precision-heavy`: агресивно віддає перевагу `NONE`, якщо збіг не є очевидним
-- `preference-only`: оптимізовано для улюблених речей, звичок, рутин, смаків і повторюваних особистих фактів
+- `preference-only`: оптимізовано для улюбленого, звичок, рутин, смаків і повторюваних особистих фактів
-Стандартне зіставлення, коли `config.promptStyle` не задано:
+Зіставлення за замовчуванням, коли `config.promptStyle` не задано:
```text
message -> strict
@@ -464,7 +464,7 @@ modelFallback: "google/gemini-3-flash"
```
Якщо явну, успадковану або налаштовану резервну модель не вдається визначити, Active Memory
-пропускає згадування для цього ходу.
+пропускає пригадування для цього ходу.
`config.modelFallbackPolicy` збережено лише як застаріле поле сумісності
для старіших конфігурацій. Воно більше не змінює поведінку під час виконання.
@@ -473,49 +473,49 @@ modelFallback: "google/gemini-3-flash"
Ці параметри навмисно не входять до рекомендованого налаштування.
-`config.thinking` може перевизначити рівень мислення блокувального під-агента пам’яті:
+`config.thinking` може перевизначати рівень thinking блокувального під-агента пам’яті:
```json5
thinking: "medium"
```
-Стандартне значення:
+За замовчуванням:
```json5
thinking: "off"
```
-Не вмикайте це за замовчуванням. Active Memory працює в шляху відповіді, тому додатковий
-час мислення безпосередньо збільшує затримку, видиму користувачу.
+Не вмикайте це за замовчуванням. Active Memory працює на шляху відповіді, тому додатковий
+час thinking безпосередньо збільшує затримку, видиму користувачу.
-`config.promptAppend` додає додаткові інструкції оператора після стандартного промпта Active
+`config.promptAppend` додає додаткові операторські інструкції після стандартного prompt Active
Memory і перед контекстом розмови:
```json5
promptAppend: "Prefer stable long-term preferences over one-off events."
```
-`config.promptOverride` замінює стандартний промпт Active Memory. OpenClaw
-усе одно додає контекст розмови після нього:
+`config.promptOverride` замінює стандартний prompt Active Memory. OpenClaw
+все одно додає контекст розмови після нього:
```json5
promptOverride: "You are a memory search agent. Return NONE or one compact user fact."
```
-Налаштування промпта не рекомендоване, якщо ви не тестуєте навмисно
-інший контракт згадування. Стандартний промпт налаштований так, щоб повертати або `NONE`,
-або стислий контекст факту про користувача для основної моделі.
+Налаштування prompt не рекомендоване, якщо ви навмисно не тестуєте інший
+контракт пригадування. Стандартний prompt налаштовано так, щоб повертати або `NONE`,
+або компактний контекст факту про користувача для основної моделі.
-## Збереження транскриптів
+## Збереження транскрипта
-Запуски блокувального під-агента пам’яті Active Memory створюють справжній транскрипт
+Запуски блокувального під-агента пам’яті Active Memory створюють реальний транскрипт
`session.jsonl` під час виклику блокувального під-агента пам’яті.
За замовчуванням цей транскрипт тимчасовий:
-- його записують у тимчасовий каталог
-- його використовують лише для запуску блокувального під-агента пам’яті
-- його видаляють одразу після завершення запуску
+- він записується до тимчасового каталогу
+- він використовується лише для запуску блокувального під-агента пам’яті
+- він видаляється одразу після завершення запуску
Якщо ви хочете зберігати ці транскрипти блокувального під-агента пам’яті на диску для налагодження або
перегляду, явно ввімкніть збереження:
@@ -538,22 +538,22 @@ promptOverride: "You are a memory search agent. Return NONE or one compact user
```
Коли це ввімкнено, Active Memory зберігає транскрипти в окремому каталозі під
-папкою сеансів цільового агента, а не в шляху транскрипта основної розмови
+текою сеансів цільового агента, а не в основному шляху транскрипта розмови
користувача.
-Стандартна структура концептуально така:
+Типова структура концептуально така:
```text
agents//sessions/active-memory/.jsonl
```
-Ви можете змінити відносний підкаталог за допомогою `config.transcriptDir`.
+Відносний підкаталог можна змінити за допомогою `config.transcriptDir`.
Використовуйте це обережно:
- транскрипти блокувального під-агента пам’яті можуть швидко накопичуватися в активних сеансах
- режим запиту `full` може дублювати багато контексту розмови
-- ці транскрипти містять прихований контекст промпта та згадані спогади
+- ці транскрипти містять прихований контекст prompt і пригадані спогади
## Конфігурація
@@ -565,38 +565,38 @@ plugins.entries.active-memory
Найважливіші поля:
-| Ключ | Тип | Значення |
-| ---------------------------- | ---------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| `enabled` | `boolean` | Вмикає сам Plugin |
-| `config.agents` | `string[]` | Ідентифікатори агентів, які можуть використовувати Active Memory |
-| `config.model` | `string` | Необов’язкове посилання на модель блокувального під-агента пам’яті; якщо не задано, Active Memory використовує модель поточного сеансу |
-| `config.allowedChatTypes` | `("direct" \| "group" \| "channel")[]` | Типи сеансів, які можуть запускати Active Memory; за замовчуванням це сеанси на кшталт прямих повідомлень |
-| `config.allowedChatIds` | `string[]` | Необов’язковий список дозволених розмов, що застосовується після `allowedChatTypes`; непорожні списки забороняють усе інше |
-| `config.deniedChatIds` | `string[]` | Необов’язковий список заборонених розмов, який перевизначає дозволені типи сеансів і дозволені ідентифікатори |
-| `config.queryMode` | `"message" \| "recent" \| "full"` | Керує тим, скільки розмови бачить блокувальний під-агент пам’яті |
-| `config.promptStyle` | `"balanced" \| "strict" \| "contextual" \| "recall-heavy" \| "precision-heavy" \| "preference-only"` | Керує тим, наскільки охочим або строгим є блокувальний під-агент пам’яті під час рішення, чи повертати пам’ять |
-| `config.thinking` | `"off" \| "minimal" \| "low" \| "medium" \| "high" \| "xhigh" \| "adaptive" \| "max"` | Розширене перевизначення мислення для блокувального під-агента пам’яті; стандартно `off` для швидкості |
-| `config.promptOverride` | `string` | Розширена повна заміна промпта; не рекомендовано для звичайного використання |
-| `config.promptAppend` | `string` | Розширені додаткові інструкції, додані до стандартного або перевизначеного промпта |
-| `config.timeoutMs` | `number` | Жорсткий тайм-аут для блокувального під-агента пам’яті, обмежений 120000 мс |
-| `config.setupGraceTimeoutMs` | `number` | Розширений додатковий бюджет налаштування до завершення тайм-ауту згадування; стандартно 0 і обмежено 30000 мс. Див. [пільговий період холодного старту](#cold-start-grace) для вказівок з оновлення v2026.4.x |
-| `config.maxSummaryChars` | `number` | Максимальна загальна кількість символів, дозволена в підсумку Active Memory |
-| `config.logging` | `boolean` | Виводить журнали Active Memory під час налаштування |
-| `config.persistTranscripts` | `boolean` | Зберігає транскрипти блокувального під-агента пам’яті на диску замість видалення тимчасових файлів |
-| `config.transcriptDir` | `string` | Відносний каталог транскриптів блокувального під-агента пам’яті під папкою сеансів агента |
+| Ключ | Тип | Значення |
+| ---------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `enabled` | `boolean` | Вмикає сам plugin |
+| `config.agents` | `string[]` | Ідентифікатори агентів, які можуть використовувати Active Memory |
+| `config.model` | `string` | Необов’язкове посилання на модель блокувального під-агента пам’яті; якщо не задано, Active Memory використовує модель поточного сеансу |
+| `config.allowedChatTypes` | `("direct" \| "group" \| "channel")[]` | Типи сеансів, які можуть запускати Active Memory; за замовчуванням це сеанси у стилі прямих повідомлень |
+| `config.allowedChatIds` | `string[]` | Необов’язковий allowlist для окремих розмов, який застосовується після `allowedChatTypes`; непорожні списки закриті за замовчуванням |
+| `config.deniedChatIds` | `string[]` | Необов’язковий denylist для окремих розмов, який перевизначає дозволені типи сеансів і дозволені ідентифікатори |
+| `config.queryMode` | `"message" \| "recent" \| "full"` | Керує тим, скільки розмови бачить блокувальний під-агент пам’яті |
+| `config.promptStyle` | `"balanced" \| "strict" \| "contextual" \| "recall-heavy" \| "precision-heavy" \| "preference-only"` | Керує тим, наскільки охочим або суворим є блокувальний під-агент пам’яті, коли вирішує, чи повертати пам’ять |
+| `config.thinking` | `"off" \| "minimal" \| "low" \| "medium" \| "high" \| "xhigh" \| "adaptive" \| "max"` | Розширене перевизначення thinking для блокувального під-агента пам’яті; за замовчуванням `off` для швидкості |
+| `config.promptOverride` | `string` | Розширена повна заміна prompt; не рекомендовано для звичайного використання |
+| `config.promptAppend` | `string` | Розширені додаткові інструкції, що додаються до стандартного або перевизначеного prompt |
+| `config.timeoutMs` | `number` | Жорсткий тайм-аут для блокувального під-агента пам’яті, обмежений 120000 мс |
+| `config.setupGraceTimeoutMs` | `number` | Розширений додатковий бюджет налаштування до завершення тайм-ауту пригадування; за замовчуванням 0 і обмежено 30000 мс. Див. [Пільговий період холодного старту](#cold-start-grace) щодо вказівок з оновлення до v2026.4.x |
+| `config.maxSummaryChars` | `number` | Максимальна загальна кількість символів, дозволена в підсумку active-memory |
+| `config.logging` | `boolean` | Виводить журнали active memory під час налаштування |
+| `config.persistTranscripts` | `boolean` | Зберігає транскрипти блокувального під-агента пам’яті на диску замість видалення тимчасових файлів |
+| `config.transcriptDir` | `string` | Відносний каталог транскриптів блокувального під-агента пам’яті під текою сеансів агента |
Корисні поля налаштування:
-| Ключ | Тип | Значення |
-| ---------------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| `config.maxSummaryChars` | `number` | Максимальна загальна кількість символів, дозволена у зведенні Active Memory |
-| `config.recentUserTurns` | `number` | Попередні звернення користувача, які потрібно включати, коли `queryMode` має значення `recent` |
-| `config.recentAssistantTurns` | `number` | Попередні відповіді асистента, які потрібно включати, коли `queryMode` має значення `recent` |
-| `config.recentUserChars` | `number` | Максимальна кількість символів для кожного нещодавнього звернення користувача |
-| `config.recentAssistantChars` | `number` | Максимальна кількість символів для кожної нещодавньої відповіді асистента |
-| `config.cacheTtlMs` | `number` | Повторне використання кешу для повторюваних ідентичних запитів (діапазон: 1000-120000 мс; стандартно: 15000) |
-| `config.circuitBreakerMaxTimeouts` | `number` | Пропуск recall після такої кількості послідовних тайм-аутів для того самого агента/моделі. Скидається після успішного recall або після завершення періоду охолодження (діапазон: 1-20; стандартно: 3). |
-| `config.circuitBreakerCooldownMs` | `number` | Як довго пропускати recall після спрацювання circuit breaker, у мс (діапазон: 5000-600000; стандартно: 60000). |
+| Ключ | Тип | Значення |
+| ---------------------------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `config.maxSummaryChars` | `number` | Максимальна загальна кількість символів, дозволена у підсумку active-memory |
+| `config.recentUserTurns` | `number` | Попередні репліки користувача, які потрібно включити, коли `queryMode` має значення `recent` |
+| `config.recentAssistantTurns` | `number` | Попередні репліки асистента, які потрібно включити, коли `queryMode` має значення `recent` |
+| `config.recentUserChars` | `number` | Максимальна кількість символів на кожну нещодавню репліку користувача |
+| `config.recentAssistantChars` | `number` | Максимальна кількість символів на кожну нещодавню репліку асистента |
+| `config.cacheTtlMs` | `number` | Повторне використання кешу для повторюваних ідентичних запитів (діапазон: 1000-120000 мс; типово: 15000) |
+| `config.circuitBreakerMaxTimeouts` | `number` | Пропускати пригадування після такої кількості послідовних тайм-аутів для того самого агента/моделі. Скидається після успішного пригадування або завершення cooldown (діапазон: 1-20; типово: 3). |
+| `config.circuitBreakerCooldownMs` | `number` | Як довго пропускати пригадування після спрацювання circuit breaker, у мс (діапазон: 5000-600000; типово: 60000). |
## Рекомендоване налаштування
@@ -622,28 +622,28 @@ plugins.entries.active-memory
}
```
-Якщо ви хочете перевіряти живу поведінку під час налаштування, використовуйте `/verbose on` для
-звичайного рядка стану та `/trace on` для налагоджувального зведення Active Memory замість
-пошуку окремої налагоджувальної команди Active Memory. У чат-каналах ці
+Якщо під час налаштування ви хочете перевіряти поточну поведінку, використовуйте `/verbose on` для
+звичайного рядка стану та `/trace on` для налагоджувального підсумку active-memory замість
+пошуку окремої команди налагодження active-memory. У чат-каналах ці
діагностичні рядки надсилаються після основної відповіді асистента, а не перед нею.
Потім перейдіть до:
-- `message`, якщо потрібна нижча затримка
+- `message`, якщо хочете нижчу затримку
- `full`, якщо вирішите, що додатковий контекст вартий повільнішого блокувального під-агента пам’яті
### Пільговий період холодного запуску
-До v2026.5.2 Plugin без повідомлення подовжував налаштований вами `timeoutMs` ще на
-30000 мс під час холодного запуску, щоб прогрівання моделі, завантаження індексу embeddings і
-перший recall могли спільно використовувати один більший бюджет. У v2026.5.2 цей пільговий період
+До v2026.5.2 Plugin непомітно подовжував налаштований вами `timeoutMs` на
+додаткові 30000 мс під час холодного запуску, щоб прогрів моделі, завантаження індексу embedding
+і перше пригадування могли спільно використовувати більший бюджет. У v2026.5.2 цей пільговий період
перенесено за явну конфігурацію `setupGraceTimeoutMs` — тепер налаштований вами `timeoutMs`
-є бюджетом за замовчуванням, якщо ви не ввімкнете це явно.
+є бюджетом за замовчуванням, якщо ви явно не ввімкнете інше.
Якщо ви оновилися з v2026.4.x і встановили `timeoutMs` на значення, підібране для
-старого світу з неявним пільговим періодом (рекомендований початковий `timeoutMs: 15000` є одним
-із прикладів), задайте `setupGraceTimeoutMs: 30000`, щоб подовжити бюджети хуку prompt-build і
-зовнішнього watchdog до ефективних значень до v5.2:
+старого світу неявного пільгового періоду (рекомендований стартовий `timeoutMs: 15000` є одним
+прикладом), установіть `setupGraceTimeoutMs: 30000`, щоб розширити бюджети hook для побудови prompt
+і зовнішнього watchdog до ефективних значень до v5.2:
```json5
{
@@ -660,90 +660,85 @@ plugins.entries.active-memory
}
```
-Згідно зі списком змін v2026.5.2: _"використовувати налаштований тайм-аут recall як
-бюджет блокувального хуку prompt-build за замовчуванням і перенести пільговий період налаштування
-холодного запуску за явну конфігурацію `setupGraceTimeoutMs`, щоб Plugin більше не подовжував
-без повідомлення конфігурації 15000 мс до 45000 мс на основному lane."_
+Згідно з changelog v2026.5.2: _"використовувати налаштований тайм-аут пригадування як
+бюджет блокувального hook для побудови prompt за замовчуванням і перенести пільговий період налаштування
+холодного запуску за явну конфігурацію `setupGraceTimeoutMs`, тож Plugin більше не подовжує непомітно
+конфігурації 15000 мс до 45000 мс на головній лінії."_
-Вбудований runner recall наразі все ще отримує сире значення `timeoutMs`
-як свій внутрішній бюджет; виправлення, що перебуває в роботі, для подовження цього значення через `setupGraceTimeoutMs`
-відстежується в [#74480](https://github.com/openclaw/openclaw/pull/74480). Доки
-воно не потрапить у реліз, перші recall після дуже холодного запуску все ще можуть завершуватися тайм-аутом на внутрішньому рівні навіть
-із заданим `setupGraceTimeoutMs` — хоча налаштування зовнішнього рівня все одно
-суттєво пом’якшує симптом, даючи хуку prompt-build простір для
-покриття вікна прогрівання.
+Вбудований runner пригадування використовує той самий ефективний бюджет тайм-ауту, тому
+`setupGraceTimeoutMs` покриває як зовнішній watchdog побудови prompt, так і внутрішній
+блокувальний запуск пригадування.
-Для gateway з обмеженими ресурсами, де затримка холодного запуску є відомим компромісом,
-нижчі значення (5000–15000 мс) також працюють — компромісом є вища ймовірність, що
-найперший recall після перезапуску gateway повернеться порожнім, поки прогрівання
+Для ресурсно обмежених Gateway, де затримка холодного запуску є відомим компромісом,
+нижчі значення (5000–15000 мс) також працюють — компромісом є вища ймовірність того,
+що найперше пригадування після перезапуску Gateway поверне порожній результат, поки прогрів
завершується.
## Налагодження
-Якщо Active Memory не з’являється там, де ви очікуєте:
+Якщо активна пам’ять не з’являється там, де ви очікуєте:
1. Переконайтеся, що Plugin увімкнено в `plugins.entries.active-memory.enabled`.
-2. Переконайтеся, що поточний id агента зазначено в `config.agents`.
-3. Переконайтеся, що тестуєте через інтерактивну постійну чат-сесію.
-4. Увімкніть `config.logging: true` і стежте за журналами gateway.
+2. Переконайтеся, що поточний id агента перелічено в `config.agents`.
+3. Переконайтеся, що ви тестуєте через інтерактивну постійну чат-сесію.
+4. Увімкніть `config.logging: true` і стежте за журналами Gateway.
5. Перевірте, що сам пошук пам’яті працює, за допомогою `openclaw memory status --deep`.
-Якщо влучання пам’яті надто шумні, зменште:
+Якщо збіги пам’яті надто шумні, зменште:
- `maxSummaryChars`
-Якщо Active Memory надто повільна:
+Якщо активна пам’ять надто повільна:
- знизьте `queryMode`
- знизьте `timeoutMs`
-- зменште кількість нещодавніх звернень
-- зменште ліміти символів на звернення
+- зменште кількість нещодавніх реплік
+- зменште ліміти символів на репліку
## Поширені проблеми
-Active Memory працює поверх налаштованого recall-конвеєра Plugin пам’яті, тож більшість
-неочікуваних ситуацій із recall є проблемами embedding-провайдера, а не вадами Active Memory. Стандартний
+Active Memory працює поверх налаштованого pipeline пригадування Plugin пам’яті, тому більшість
+несподіванок пригадування є проблемами provider embedding, а не помилками Active Memory. Стандартний
шлях `memory-core` використовує `memory_search`; `memory-lancedb` використовує
`memory_recall`.
-
- Якщо `memorySearch.provider` не задано, OpenClaw автоматично визначає перший
- доступний embedding-провайдер. Новий API-ключ, вичерпання квоти або
- rate-limited розміщений провайдер можуть змінити те, який провайдер визначається між
- запусками. Якщо жоден провайдер не визначається, `memory_search` може перейти до retrieval лише за лексикою;
- runtime-збої після того, як провайдера вже вибрано, автоматично
- не перемикаються на fallback.
+
+ Якщо `memorySearch.provider` не задано, OpenClaw автоматично виявляє перший
+ доступний provider embedding. Новий API-ключ, вичерпання квоти або
+ rate-limited hosted provider можуть змінити, який provider визначається між
+ запусками. Якщо жоден provider не визначено, `memory_search` може деградувати до
+ пошуку лише за лексичними збігами; runtime-помилки після того, як provider уже вибрано, не
+ перемикаються на fallback автоматично.
- Явно зафіксуйте провайдера (і необов’язковий fallback), щоб зробити вибір
+ Явно закріпіть provider (і необов’язковий fallback), щоб зробити вибір
детермінованим. Див. [Пошук пам’яті](/uk/concepts/memory-search) для повного
- списку провайдерів і прикладів фіксації.
+ списку provider і прикладів закріплення.
-
- - Увімкніть `/trace on`, щоб показати у сесії налагоджувальне
- зведення Active Memory, яким володіє Plugin.
+
+ - Увімкніть `/trace on`, щоб показати у сесії налагоджувальний
+ підсумок Active Memory, яким володіє Plugin.
- Увімкніть `/verbose on`, щоб також бачити рядок стану `🧩 Active Memory: ...`
після кожної відповіді.
- - Стежте за журналами gateway для `active-memory: ... start|done`,
- `memory sync failed (search-bootstrap)` або embedding-помилок провайдера.
+ - Стежте за журналами Gateway щодо `active-memory: ... start|done`,
+ `memory sync failed (search-bootstrap)` або помилок embedding provider.
- Запустіть `openclaw memory status --deep`, щоб перевірити backend пошуку пам’яті
та стан індексу.
- - Якщо ви використовуєте `ollama`, переконайтеся, що embedding-модель установлена
+ - Якщо ви використовуєте `ollama`, переконайтеся, що модель embedding встановлена
(`ollama list`).
-
- У v2026.5.2 і новіших версіях, якщо налаштування холодного запуску (прогрівання моделі + завантаження
- embedding-індексу) не завершилося до моменту запуску першого recall, виконання
- може досягти налаштованого бюджету `timeoutMs` і повернути `status=timeout`
- з порожнім виводом. Журнали gateway показують `active-memory timeout after Nms`
+
+ У v2026.5.2 і пізніших версіях, якщо налаштування холодного запуску (прогрів моделі + завантаження
+ індексу embedding) не завершилося до моменту запуску першого пригадування, виконання
+ може вичерпати налаштований бюджет `timeoutMs` і повернути `status=timeout`
+ з порожнім виводом. Журнали Gateway показують `active-memory timeout after Nms`
біля першої придатної відповіді після перезапуску.
- Див. [Пільговий період холодного запуску](#cold-start-grace) у розділі Рекомендоване налаштування щодо
- рекомендованого значення `setupGraceTimeoutMs` (і відкритого застереження щодо
- вбудованого бюджету recall, який відстежується в #74480).
+ Див. [Пільговий період холодного запуску](#cold-start-grace) у розділі «Рекомендоване налаштування» щодо
+ рекомендованого значення `setupGraceTimeoutMs`.