diff --git a/docs/uk/concepts/active-memory.md b/docs/uk/concepts/active-memory.md
index da681f300..72ffb11c0 100644
--- a/docs/uk/concepts/active-memory.md
+++ b/docs/uk/concepts/active-memory.md
@@ -3,29 +3,29 @@ read_when:
- Ви хочете зрозуміти, для чого потрібна Active Memory
- Ви хочете увімкнути Active Memory для розмовного агента
- Ви хочете налаштувати поведінку Active Memory, не вмикаючи її всюди
-summary: Підагент блокувальної пам’яті, що належить Plugin, який впроваджує релевантну пам’ять в інтерактивні сеанси чату
+summary: Підагент блокувальної пам’яті, яким володіє Plugin і який впроваджує релевантну пам’ять в інтерактивні сеанси чату
title: Active Memory
x-i18n:
- generated_at: "2026-04-12T19:24:37Z"
+ generated_at: "2026-04-12T19:29:14Z"
model: gpt-5.4
provider: openai
- source_hash: 10fd37790ef54498679d10718c4874b3683824a4a198542e9851f219e736b58b
+ source_hash: 11665dbc888b6d4dc667a47624cc1f2e4cc71e1d58e1f7d9b5fe4057ec4da108
source_path: concepts/active-memory.md
workflow: 15
---
# Active Memory
-Active Memory — це необов’язковий підагент блокувальної пам’яті, що належить Plugin і запускається
+Active Memory — це необов’язковий блокувальний підагент пам’яті, яким володіє Plugin і який запускається
перед основною відповіддю для відповідних розмовних сеансів.
Він існує тому, що більшість систем пам’яті є потужними, але реактивними. Вони покладаються на
-те, що головний агент сам вирішить, коли шукати в пам’яті, або на те, що користувач скаже щось на кшталт
-«запам’ятай це» чи «пошукай у пам’яті». На той момент мить, коли пам’ять могла б зробити відповідь природною,
-вже минає.
+те, що головний агент вирішить, коли шукати в пам’яті, або на те, що користувач скаже щось
+на кшталт «запам’ятай це» чи «пошукай у пам’яті». На той момент мить, коли пам’ять могла б
+зробити відповідь природнішою, уже минула.
Active Memory дає системі одну обмежену можливість підняти релевантну пам’ять
-до того, як буде згенерована основна відповідь.
+до того, як буде згенеровано основну відповідь.
## Вставте це у свого агента
@@ -56,9 +56,10 @@ Active Memory дає системі одну обмежену можливіст
}
```
-Це вмикає Plugin для агента `main`, за замовчуванням обмежує його
-сеансами у стилі прямих повідомлень, дозволяє спочатку успадкувати поточну модель сеансу, а
-налаштовану резервну модель використовує лише тоді, коли немає явно заданої або успадкованої моделі.
+Це вмикає Plugin для агента `main`, за замовчуванням обмежує його сеансами
+у стилі прямих повідомлень, дозволяє йому спочатку успадковувати модель поточного сеансу та
+використовує налаштовану резервну модель лише тоді, коли немає доступної
+ані явно заданої, ані успадкованої моделі.
Після цього перезапустіть Gateway:
@@ -66,14 +67,14 @@ Active Memory дає системі одну обмежену можливіст
openclaw gateway
```
-Щоб переглядати це наживо в розмові:
+Щоб спостерігати за ним наживо в розмові:
```text
/verbose on
/trace on
```
-## Увімкнення active memory
+## Увімкніть active memory
Найбезпечніше налаштування таке:
@@ -116,20 +117,20 @@ openclaw gateway
- `plugins.entries.active-memory.enabled: true` вмикає Plugin
- `config.agents: ["main"]` підключає до active memory лише агента `main`
-- `config.allowedChatTypes: ["direct"]` за замовчуванням залишає active memory ввімкненою лише для сеансів у стилі прямих повідомлень
-- якщо `config.model` не задано, active memory спочатку успадковує поточну модель сеансу
-- `config.modelFallback` за бажанням задає власного резервного провайдера/модель для пошуку
-- `config.promptStyle: "balanced"` використовує типовий універсальний стиль підказки для режиму `recent`
-- active memory однаково запускається лише в придатних інтерактивних постійних сеансах чату
+- `config.allowedChatTypes: ["direct"]` за замовчуванням залишає active memory увімкненою лише для сеансів у стилі прямих повідомлень
+- якщо `config.model` не задано, active memory спочатку успадковує модель поточного сеансу
+- `config.modelFallback` за бажанням надає власну резервну модель постачальника/модель для відновлення пам’яті
+- `config.promptStyle: "balanced"` використовує типовий універсальний стиль запиту для режиму `recent`
+- active memory, як і раніше, запускається лише для відповідних інтерактивних постійних сеансів чату
## Як це побачити
Active Memory впроваджує прихований системний контекст для моделі. Вона не показує
-клієнту сирі теги `...`.
+сирі теги `...` клієнту.
## Перемикач сеансу
-Використовуйте команду Plugin, якщо хочете призупинити або відновити active memory для
+Використовуйте команду Plugin, коли хочете призупинити або відновити active memory для
поточного сеансу чату без редагування конфігурації:
```text
@@ -138,12 +139,12 @@ Active Memory впроваджує прихований системний ко
/active-memory on
```
-Це діє в межах сеансу. Воно не змінює
-`plugins.entries.active-memory.enabled`, націлювання агента чи іншу глобальну
+Це діє в межах сеансу. Це не змінює
+`plugins.entries.active-memory.enabled`, націлювання на агентів чи іншу глобальну
конфігурацію.
-Якщо ви хочете, щоб команда записувала конфігурацію та призупиняла або відновлювала active memory для
-усіх сеансів, використовуйте явну глобальну форму:
+Якщо ви хочете, щоб команда записувала конфігурацію та призупиняла або відновлювала active memory
+для всіх сеансів, використовуйте явну глобальну форму:
```text
/active-memory status --global
@@ -152,7 +153,7 @@ Active Memory впроваджує прихований системний ко
```
Глобальна форма записує `plugins.entries.active-memory.config.enabled`. Вона залишає
-`plugins.entries.active-memory.enabled` увімкненим, щоб команда й надалі була доступна для
+`plugins.entries.active-memory.enabled` увімкненим, щоб команда залишалася доступною для
повторного ввімкнення active memory пізніше.
Якщо ви хочете бачити, що робить active memory у живому сеансі, увімкніть
@@ -163,21 +164,21 @@ Active Memory впроваджує прихований системний ко
/trace on
```
-Коли вони ввімкнені, OpenClaw може показувати:
+Коли їх увімкнено, OpenClaw може показувати:
-- рядок стану active memory на кшталт `Active Memory: ok 842ms recent 34 chars`, коли ввімкнено `/verbose on`
-- зрозуміле налагоджувальне резюме на кшталт `Active Memory Debug: Lemon pepper wings with blue cheese.`, коли ввімкнено `/trace on`
+- рядок стану active memory, наприклад `Active Memory: ok 842ms recent 34 chars`, коли ввімкнено `/verbose on`
+- читабельний підсумок налагодження, наприклад `Active Memory Debug: Lemon pepper wings with blue cheese.`, коли ввімкнено `/trace on`
-Ці рядки походять із того самого проходу Active Memory, який подає прихований
-системний контекст, але вони відформатовані для людей, а не для показу сирої розмітки
-підказки. Вони надсилаються як діагностичне повідомлення після
-звичайної відповіді помічника, щоб клієнти каналів на кшталт Telegram не показували окрему
-діагностичну бульбашку до відповіді.
+Ці рядки походять із того самого проходу active memory, який формує прихований
+системний контекст, але вони відформатовані для людей, а не для показу сирої
+розмітки запиту. Вони надсилаються як додаткове діагностичне повідомлення після звичайної
+відповіді асистента, щоб клієнти каналів, як-от Telegram, не показували окрему
+діагностичну бульбашку перед відповіддю.
-За замовчуванням стенограма підагента блокувальної пам’яті є тимчасовою й видаляється
+За замовчуванням стенограма блокувального підагента пам’яті є тимчасовою і видаляється
після завершення виконання.
-Приклад потоку:
+Приклад сценарію:
```text
/verbose on
@@ -194,16 +195,16 @@ what wings should i order?
🔎 Active Memory Debug: Lemon pepper wings with blue cheese.
```
-## Коли вона запускається
+## Коли це запускається
-Active Memory використовує два фільтри:
+Active Memory використовує два шлюзи:
-1. **Увімкнення через конфігурацію**
- Plugin має бути ввімкнений, а поточний ідентифікатор агента має бути присутній у
+1. **Явне ввімкнення в конфігурації**
+ Plugin має бути ввімкнений, а ідентифікатор поточного агента має бути присутній у
`plugins.entries.active-memory.config.agents`.
-2. **Сувора придатність під час виконання**
- Навіть якщо Active Memory ввімкнена й націлена, вона запускається лише для придатних
- інтерактивних постійних сеансів чату.
+2. **Сувора відповідність під час виконання**
+ Навіть коли active memory ввімкнено й націлено, вона запускається лише для
+ відповідних інтерактивних постійних сеансів чату.
Фактичне правило таке:
@@ -233,7 +234,7 @@ allowedChatTypes: ["direct"]
```
Це означає, що Active Memory за замовчуванням запускається в сеансах у стилі прямих повідомлень, але
-не в групових сеансах або сеансах каналів, якщо ви явно не ввімкнете їх.
+не в групових сеансах або сеансах каналу, якщо ви не ввімкнете їх явно.
Приклади:
@@ -249,44 +250,44 @@ allowedChatTypes: ["direct", "group"]
allowedChatTypes: ["direct", "group", "channel"]
```
-## Де вона запускається
+## Де це запускається
-Active Memory — це функція збагачення розмови, а не загальноплатформна
+Active memory — це функція покращення розмов, а не загальноплатформна
функція інференсу.
-| Поверхня | Active Memory запускається? |
-| ------------------------------------------------------------------- | -------------------------------------------------------- |
-| Постійні сеанси чату в Control UI / вебчаті | Так, якщо Plugin увімкнений і агент націлений |
-| Інші інтерактивні сеанси каналів на тому самому шляху постійного чату | Так, якщо Plugin увімкнений і агент націлений |
-| Безголові одноразові запуски | Ні |
-| Запуски Heartbeat/фонові запуски | Ні |
-| Загальні внутрішні шляхи `agent-command` | Ні |
-| Виконання підагента/внутрішнього допоміжного компонента | Ні |
+| Surface | Запускає active memory? |
+| ------------------------------------------------------------------- | ------------------------------------------------------- |
+| Постійні сеанси чату в Control UI / вебчаті | Так, якщо Plugin увімкнений і агент націлений |
+| Інші інтерактивні сеанси каналів на тому самому шляху постійного чату | Так, якщо Plugin увімкнений і агент націлений |
+| Безголові одноразові запуски | Ні |
+| Запуски Heartbeat/фонові запуски | Ні |
+| Загальні внутрішні шляхи `agent-command` | Ні |
+| Виконання підагента/внутрішнього помічника | Ні |
## Навіщо це використовувати
Використовуйте active memory, коли:
- сеанс є постійним і орієнтованим на користувача
-- агент має змістовну довгострокову пам’ять для пошуку
-- безперервність і персоналізація важливіші за чисту детермінованість підказки
+- агент має змістовну довготривалу пам’ять для пошуку
+- безперервність і персоналізація важливіші за чисту детермінованість запиту
-Вона особливо добре працює для:
+Особливо добре це працює для:
-- сталих уподобань
+- стабільних уподобань
- повторюваних звичок
- довгострокового контексту користувача, який має з’являтися природно
-Вона погано підходить для:
+Погано підходить для:
- автоматизації
-- внутрішніх виконавців
+- внутрішніх воркерів
- одноразових API-завдань
- місць, де прихована персоналізація була б несподіваною
## Як це працює
-Форма виконання така:
+Форма під час виконання така:
```mermaid
flowchart LR
@@ -297,7 +298,7 @@ flowchart LR
I --> M["Main Reply"]
```
-Підагент блокувальної пам’яті може використовувати лише:
+Блокувальний підагент пам’яті може використовувати лише:
- `memory_search`
- `memory_get`
@@ -306,19 +307,19 @@ flowchart LR
## Режими запиту
-`config.queryMode` визначає, яку частину розмови бачить підагент блокувальної пам’яті.
+`config.queryMode` визначає, скільки розмови бачить блокувальний підагент пам’яті.
-## Стилі підказок
+## Стилі запиту
-`config.promptStyle` визначає, наскільки охоче або суворо підагент блокувальної пам’яті
+`config.promptStyle` визначає, наскільки охоче чи суворо блокувальний підагент пам’яті
вирішує, чи повертати пам’ять.
Доступні стилі:
-- `balanced`: універсальний варіант за замовчуванням для режиму `recent`
-- `strict`: найменш охочий; найкраще підходить, коли ви хочете мінімального просочування з близького контексту
-- `contextual`: найбільш дружній до безперервності; найкраще підходить, коли історія розмови має більше значення
-- `recall-heavy`: охочіше піднімає пам’ять навіть за слабших, але все ще правдоподібних збігів
+- `balanced`: універсальне значення за замовчуванням для режиму `recent`
+- `strict`: найменш охочий; найкраще, коли ви хочете якнайменше впливу сусіднього контексту
+- `contextual`: найбільш дружній до безперервності; найкраще, коли історія розмови має мати більше значення
+- `recall-heavy`: охочіше піднімає пам’ять за м’якших, але все ще правдоподібних збігів
- `precision-heavy`: агресивно віддає перевагу `NONE`, якщо збіг не є очевидним
- `preference-only`: оптимізований для фаворитів, звичок, рутин, смаків і повторюваних особистих фактів
@@ -330,7 +331,7 @@ recent -> balanced
full -> contextual
```
-Якщо ви явно задаєте `config.promptStyle`, цей пріоритетний параметр має силу.
+Якщо ви явно задасте `config.promptStyle`, це перевизначення матиме пріоритет.
Приклад:
@@ -357,47 +358,47 @@ explicit plugin model
modelFallback: "google/gemini-3-flash"
```
-Якщо не вдається визначити жодну явну, успадковану або налаштовану резервну модель, Active Memory
-пропускає пошук для цього ходу.
+Якщо не вдається визначити ані явну, ані успадковану, ані налаштовану резервну модель,
+Active Memory пропускає відновлення пам’яті для цього ходу.
`config.modelFallbackPolicy` збережено лише як застаріле поле сумісності
для старіших конфігурацій. Воно більше не змінює поведінку під час виконання.
-## Додаткові аварійні параметри
+## Розширені аварійні варіанти
Ці параметри навмисно не входять до рекомендованого налаштування.
-`config.thinking` може перевизначити рівень thinking для підагента блокувальної пам’яті:
+`config.thinking` може перевизначити рівень thinking блокувального підагента пам’яті:
```json5
thinking: "medium"
```
-Значення за замовчуванням:
+За замовчуванням:
```json5
thinking: "off"
```
-Не вмикайте це за замовчуванням. Active Memory працює на шляху відповіді, тож додатковий
-час на thinking безпосередньо збільшує видиму для користувача затримку.
+Не вмикайте це за замовчуванням. Active Memory запускається в шляху відповіді, тому додатковий
+час на thinking напряму збільшує затримку, видиму користувачу.
-`config.promptAppend` додає додаткові інструкції оператора після стандартної підказки Active
+`config.promptAppend` додає додаткові інструкції оператора після типового запиту Active
Memory і перед контекстом розмови:
```json5
promptAppend: "Prefer stable long-term preferences over one-off events."
```
-`config.promptOverride` замінює стандартну підказку Active Memory. OpenClaw
-усе одно додає контекст розмови після неї:
+`config.promptOverride` замінює типовий запит Active Memory. OpenClaw
+усе одно додає контекст розмови після нього:
```json5
promptOverride: "You are a memory search agent. Return NONE or one compact user fact."
```
-Налаштування підказки не рекомендується, якщо тільки ви свідомо не тестуєте
-інший контракт пошуку. Стандартну підказку налаштовано так, щоб вона повертала або `NONE`,
+Налаштування запиту не рекомендується, якщо ви не тестуєте свідомо
+інший контракт відновлення пам’яті. Типовий запит налаштовано так, щоб повертати або `NONE`,
або компактний контекст фактів про користувача для основної моделі.
### `message`
@@ -411,8 +412,8 @@ Latest user message only
Використовуйте це, коли:
- вам потрібна найшвидша поведінка
-- вам потрібен найсильніший ухил у бік пошуку сталих уподобань
-- подальшим ходам не потрібен розмовний контекст
+- вам потрібний найсильніший ухил у бік відновлення стабільних уподобань
+- наступні ходи не потребують розмовного контексту
Рекомендований тайм-аут:
@@ -420,7 +421,7 @@ Latest user message only
### `recent`
-Надсилається останнє повідомлення користувача разом із невеликим хвостом недавньої розмови.
+Надсилається останнє повідомлення користувача плюс невеликий хвіст недавньої розмови.
```text
Recent conversation tail:
@@ -434,8 +435,8 @@ Latest user message:
Використовуйте це, коли:
-- вам потрібен кращий баланс між швидкістю та прив’язкою до розмовного контексту
-- уточнювальні запитання часто залежать від кількох останніх ходів
+- вам потрібен кращий баланс між швидкістю та розмовним контекстом
+- запитання в наступних ходах часто залежать від кількох останніх ходів
Рекомендований тайм-аут:
@@ -443,7 +444,7 @@ Latest user message:
### `full`
-Уся розмова надсилається підагенту блокувальної пам’яті.
+До блокувального підагента пам’яті надсилається вся розмова.
```text
Full conversation context:
@@ -455,15 +456,15 @@ user: ...
Використовуйте це, коли:
-- найвища якість пошуку важливіша за затримку
-- розмова містить важливі налаштування далеко вище по гілці
+- найвища якість відновлення пам’яті важливіша за затримку
+- розмова містить важливі налаштування далеко вище в гілці
Рекомендований тайм-аут:
-- суттєво збільшуйте його порівняно з `message` або `recent`
+- суттєво збільште його порівняно з `message` або `recent`
- починайте приблизно з `15000` мс або вище залежно від розміру гілки
-Загалом тайм-аут має зростати разом із розміром контексту:
+Загалом тайм-аут має збільшуватися разом із розміром контексту:
```text
message < recent < full
@@ -471,17 +472,17 @@ message < recent < full
## Збереження стенограм
-Запуски підагента блокувальної пам’яті Active memory створюють реальну
-стенограму `session.jsonl` під час виклику підагента блокувальної пам’яті.
+Запуски блокувального підагента пам’яті Active Memory створюють реальну
+стенограму `session.jsonl` під час виклику блокувального підагента пам’яті.
За замовчуванням ця стенограма є тимчасовою:
- вона записується до тимчасового каталогу
-- вона використовується лише для запуску підагента блокувальної пам’яті
+- вона використовується лише для запуску блокувального підагента пам’яті
- вона видаляється одразу після завершення запуску
-Якщо ви хочете зберігати ці стенограми підагента блокувальної пам’яті на диску для налагодження або
-перевірки, явно увімкніть збереження:
+Якщо ви хочете зберігати ці стенограми блокувального підагента пам’яті на диску для налагодження або
+перевірки, явно ввімкніть збереження:
```json5
{
@@ -500,11 +501,11 @@ message < recent < full
}
```
-Коли це ввімкнено, active memory зберігає стенограми в окремому каталозі в
-папці сеансів цільового агента, а не в основному шляху стенограми
-розмови користувача.
+Коли це ввімкнено, active memory зберігає стенограми в окремому каталозі в межах
+папки сеансів цільового агента, а не в основному шляху стенограми розмови
+користувача.
-Типове компонування концептуально виглядає так:
+Типова структура концептуально виглядає так:
```text
agents//sessions/active-memory/.jsonl
@@ -514,13 +515,13 @@ agents//sessions/active-memory/.jso
Використовуйте це обережно:
-- стенограми підагента блокувальної пам’яті можуть швидко накопичуватися в активних сеансах
-- режим запиту `full` може дублювати великий обсяг контексту розмови
-- ці стенограми містять прихований контекст підказки та відновлені спогади
+- стенограми блокувального підагента пам’яті можуть швидко накопичуватися в активних сеансах
+- режим запиту `full` може дублювати значну частину контексту розмови
+- ці стенограми містять прихований контекст запиту та відновлені спогади
## Конфігурація
-Уся конфігурація active memory розташована в:
+Уся конфігурація active memory розміщена в:
```text
plugins.entries.active-memory
@@ -528,32 +529,32 @@ plugins.entries.active-memory
Найважливіші поля:
-| Key | Type | Meaning |
-| --------------------------- | ---------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- |
-| `enabled` | `boolean` | Вмикає сам Plugin |
-| `config.agents` | `string[]` | Ідентифікатори агентів, які можуть використовувати active memory |
-| `config.model` | `string` | Необов’язкове посилання на модель підагента блокувальної пам’яті; якщо не задано, active memory використовує поточну модель сеансу |
-| `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"` | Додаткове перевизначення thinking для підагента блокувальної пам’яті; за замовчуванням `off` для швидкості |
-| `config.promptOverride` | `string` | Розширена повна заміна підказки; не рекомендовано для звичайного використання |
-| `config.promptAppend` | `string` | Додаткові розширені інструкції, додані до типової або перевизначеної підказки |
-| `config.timeoutMs` | `number` | Жорсткий тайм-аут для підагента блокувальної пам’яті |
-| `config.maxSummaryChars` | `number` | Максимальна загальна кількість символів, дозволена в резюме active-memory |
-| `config.logging` | `boolean` | Виводить журнали active memory під час налаштування |
-| `config.persistTranscripts` | `boolean` | Зберігає стенограми підагента блокувальної пам’яті на диску замість видалення тимчасових файлів |
-| `config.transcriptDir` | `string` | Відносний каталог стенограм підагента блокувальної пам’яті в папці сеансів агента |
+| Key | Type | Значення |
+| --------------------------- | ---------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------ |
+| `enabled` | `boolean` | Вмикає сам Plugin |
+| `config.agents` | `string[]` | Ідентифікатори агентів, які можуть використовувати active memory |
+| `config.model` | `string` | Необов’язкове посилання на модель блокувального підагента пам’яті; якщо не задано, active memory використовує модель поточного сеансу |
+| `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"` | Розширене перевизначення рівня thinking для блокувального підагента пам’яті; типове значення `off` для швидкості |
+| `config.promptOverride` | `string` | Розширена повна заміна запиту; не рекомендується для звичайного використання |
+| `config.promptAppend` | `string` | Розширені додаткові інструкції, що додаються до типового або перевизначеного запиту |
+| `config.timeoutMs` | `number` | Жорсткий тайм-аут для блокувального підагента пам’яті |
+| `config.maxSummaryChars` | `number` | Максимальна загальна кількість символів, дозволена в підсумку active-memory |
+| `config.logging` | `boolean` | Виводить журнали active memory під час налаштування |
+| `config.persistTranscripts` | `boolean` | Зберігає стенограми блокувального підагента пам’яті на диску замість видалення тимчасових файлів |
+| `config.transcriptDir` | `string` | Відносний каталог стенограм блокувального підагента пам’яті в папці сеансів агента |
-Корисні поля для налаштування:
+Корисні поля налаштування:
-| Key | Type | Meaning |
+| Key | Type | Значення |
| ----------------------------- | -------- | ------------------------------------------------------------ |
-| `config.maxSummaryChars` | `number` | Максимальна загальна кількість символів, дозволена в резюме active-memory |
-| `config.recentUserTurns` | `number` | Попередні ходи користувача, які слід включати, коли `queryMode` має значення `recent` |
-| `config.recentAssistantTurns` | `number` | Попередні ходи помічника, які слід включати, коли `queryMode` має значення `recent` |
-| `config.recentUserChars` | `number` | Максимум символів на один нещодавній хід користувача |
-| `config.recentAssistantChars` | `number` | Максимум символів на один нещодавній хід помічника |
-| `config.cacheTtlMs` | `number` | Повторне використання кешу для повторюваних однакових запитів |
+| `config.maxSummaryChars` | `number` | Максимальна загальна кількість символів, дозволена в підсумку active-memory |
+| `config.recentUserTurns` | `number` | Попередні ходи користувача, які слід включити, коли `queryMode` має значення `recent` |
+| `config.recentAssistantTurns` | `number` | Попередні ходи асистента, які слід включити, коли `queryMode` має значення `recent` |
+| `config.recentUserChars` | `number` | Максимум символів на один недавній хід користувача |
+| `config.recentAssistantChars` | `number` | Максимум символів на один недавній хід асистента |
+| `config.cacheTtlMs` | `number` | Повторне використання кешу для однакових повторних запитів |
## Рекомендоване налаштування
@@ -580,26 +581,26 @@ plugins.entries.active-memory
```
Якщо ви хочете перевіряти поведінку наживо під час налаштування, використовуйте `/verbose on` для
-звичайного рядка стану та `/trace on` для налагоджувального резюме active-memory замість
-пошуку окремої команди налагодження active-memory. У чат-каналах ці
-діагностичні рядки надсилаються після основної відповіді помічника, а не до неї.
+звичайного рядка стану і `/trace on` для підсумку налагодження active-memory замість
+пошуку окремої команди налагодження active-memory. У каналах чату ці
+діагностичні рядки надсилаються після основної відповіді асистента, а не перед нею.
Потім переходьте до:
-- `message`, якщо вам потрібна менша затримка
-- `full`, якщо ви вирішили, що додатковий контекст вартий повільнішого підагента блокувальної пам’яті
+- `message`, якщо хочете нижчу затримку
+- `full`, якщо вирішите, що додатковий контекст вартий повільнішого блокувального підагента пам’яті
## Налагодження
Якщо active memory не з’являється там, де ви очікуєте:
-1. Підтвердьте, що Plugin увімкнений у `plugins.entries.active-memory.enabled`.
-2. Підтвердьте, що ідентифікатор поточного агента вказаний у `config.agents`.
-3. Підтвердьте, що ви тестуєте через інтерактивний постійний сеанс чату.
-4. Увімкніть `config.logging: true` і переглядайте журнали Gateway.
-5. Переконайтеся, що сам пошук у пам’яті працює, за допомогою `openclaw memory status --deep`.
+1. Переконайтеся, що Plugin увімкнений у `plugins.entries.active-memory.enabled`.
+2. Переконайтеся, що ідентифікатор поточного агента вказаний у `config.agents`.
+3. Переконайтеся, що ви тестуєте через інтерактивний постійний сеанс чату.
+4. Увімкніть `config.logging: true` і перегляньте журнали Gateway.
+5. Перевірте, що сам пошук у пам’яті працює, за допомогою `openclaw memory status --deep`.
-Якщо результати пам’яті зашумлені, зробіть жорсткішим:
+Якщо збіги пам’яті шумні, посильте обмеження:
- `maxSummaryChars`
@@ -608,46 +609,64 @@ plugins.entries.active-memory
- зменште `queryMode`
- зменште `timeoutMs`
- зменште кількість недавніх ходів
-- зменште ліміти символів на хід
+- зменште обмеження символів на хід
## Поширені проблеми
-### Провайдер embeddings неочікувано змінився
+### Постачальник embedding неочікувано змінився
Active Memory використовує звичайний конвеєр `memory_search` у
-`agents.defaults.memorySearch`. Це означає, що налаштування провайдера embeddings є
-вимогою лише тоді, коли ваше налаштування `memorySearch` вимагає embeddings для бажаної вами поведінки.
+`agents.defaults.memorySearch`. Це означає, що налаштування постачальника embedding є
+вимогою лише тоді, коли ваша конфігурація `memorySearch` потребує embedding для бажаної
+поведінки.
На практиці:
-- явне налаштування провайдера **обов’язкове**, якщо вам потрібен провайдер, який не
- визначається автоматично, наприклад `ollama`
-- явне налаштування провайдера **обов’язкове**, якщо автоматичне визначення не знаходить
- жодного придатного провайдера embeddings для вашого середовища
-- явне налаштування провайдера **настійно рекомендоване**, якщо ви хочете детермінований
- вибір провайдера замість принципу «перший доступний перемагає»
-- явне налаштування провайдера зазвичай **не є обов’язковим**, якщо автоматичне визначення вже
- знаходить потрібного вам провайдера і цей провайдер стабільний у вашому розгортанні
+- явне налаштування постачальника **обов’язкове**, якщо ви хочете постачальника, який
+ не визначається автоматично, наприклад `ollama`
+- явне налаштування постачальника **обов’язкове**, якщо автоматичне визначення не знаходить
+ жодного придатного постачальника embedding для вашого середовища
+- явне налаштування постачальника **дуже рекомендоване**, якщо ви хочете
+ детермінований вибір постачальника замість моделі «перший доступний перемагає»
+- явне налаштування постачальника зазвичай **не обов’язкове**, якщо автоматичне визначення вже
+ знаходить потрібного вам постачальника і цей постачальник стабільний у вашому розгортанні
-Якщо `memorySearch.provider` не задано, OpenClaw автоматично визначає перший доступний
-провайдер embeddings.
+Якщо `memorySearch.provider` не задано, OpenClaw автоматично визначає першого доступного
+постачальника embedding.
У реальних розгортаннях це може збивати з пантелику:
-- новий доступний API-ключ може змінити провайдера, якого використовує пошук у пам’яті
-- одна команда або діагностична поверхня може створювати враження, що вибраний провайдер
- відрізняється від того шляху, який ви фактично використовуєте під час живої синхронізації пам’яті або
- початкового завантаження пошуку
-- хостовані провайдери можуть завершуватися помилками квоти або обмеження швидкості, які проявляються лише
- коли Active Memory починає надсилати пошукові запити перед кожною відповіддю
+- новий доступний API-ключ може змінити те, який постачальник використовує пошук у пам’яті
+- одна команда або поверхня діагностики може показувати вибраного постачальника
+ інакше, ніж шлях, який ви фактично використовуєте під час живої синхронізації пам’яті або
+ ініціалізації пошуку
+- розміщені постачальники можуть завершуватися помилками квоти або обмеження швидкості, які проявляються
+ лише тоді, коли Active Memory починає виконувати пошуки відновлення пам’яті перед кожною відповіддю
-Active Memory все ще може працювати, коли embeddings недоступні, якщо ваше
-налаштування `memorySearch` може перейти до суто лексичного пошуку, але якість
-семантичного відновлення зазвичай погіршується. Якщо ви залежите від відновлення на основі embeddings,
-мультимодальної індексації або конкретного локального/віддаленого провайдера, закріпіть провайдера
-явно замість покладання на автоматичне визначення.
+Active Memory усе ще може працювати без embedding, коли `memory_search` може працювати
+в деградованому режимі лише з лексичним пошуком, що зазвичай трапляється, коли не вдається
+визначити жодного постачальника embedding.
-Поширені приклади закріплення:
+Не припускайте такого самого резервного механізму для збоїв постачальника під час виконання, як-от вичерпання квоти,
+обмеження швидкості, помилки мережі/постачальника або відсутність локальних/віддалених
+моделей після того, як постачальника вже було вибрано.
+
+На практиці:
+
+- якщо не вдається визначити постачальника embedding, `memory_search` може перейти
+ до вилучення лише за лексичним пошуком
+- якщо постачальника embedding визначено, а потім він зазнає збою під час виконання, OpenClaw
+ наразі не гарантує лексичний резервний варіант для цього запиту
+- якщо вам потрібен детермінований вибір постачальника, зафіксуйте
+ `agents.defaults.memorySearch.provider`
+- якщо вам потрібне переключення на резервного постачальника у разі помилок під час виконання, явно налаштуйте
+ `agents.defaults.memorySearch.fallback`
+
+Якщо ви залежите від відновлення пам’яті на основі embedding, мультимодальної індексації або конкретного
+локального/віддаленого постачальника, явно зафіксуйте постачальника замість покладання на
+автоматичне визначення.
+
+Поширені приклади фіксації:
OpenAI:
@@ -694,8 +713,8 @@ Ollama:
}
```
-Якщо ви очікуєте автоматичне перемикання провайдера при помилках під час виконання, таких як вичерпання квоти,
-самого закріплення провайдера недостатньо. Налаштуйте також явний резервний варіант:
+Якщо ви очікуєте переключення на резервного постачальника в разі помилок під час виконання, таких як вичерпання квоти,
+простого фіксування постачальника недостатньо. Також налаштуйте явний резервний варіант:
```json5
{
@@ -710,30 +729,30 @@ Ollama:
}
```
-### Налагодження проблем із провайдером
+### Налагодження проблем із постачальником
-Якщо Active Memory працює повільно, повертає порожній результат або здається, що неочікувано перемикає провайдерів:
+Якщо Active Memory повільна, порожня або здається, що вона неочікувано перемикає постачальників:
- переглядайте журнали Gateway під час відтворення проблеми; шукайте рядки на кшталт
`active-memory: ... start|done`, `memory sync failed (search-bootstrap)` або
- помилки embeddings, специфічні для провайдера
-- увімкніть `/trace on`, щоб показувати в сеансі налагоджувальне резюме Active Memory, що належить Plugin
-- увімкніть `/verbose on`, якщо ви також хочете бачити звичайний рядок стану
- `🧩 Active Memory: ...` після кожної відповіді
+ помилки embedding, специфічні для постачальника
+- увімкніть `/trace on`, щоб показати у сеансі підсумок налагодження Active Memory, яким володіє Plugin
+- увімкніть `/verbose on`, якщо ви також хочете бачити звичайний рядок стану `🧩 Active Memory: ...`
+ після кожної відповіді
- виконайте `openclaw memory status --deep`, щоб перевірити поточний
бекенд пошуку в пам’яті та стан індексу
- перевірте `agents.defaults.memorySearch.provider` і пов’язану автентифікацію/конфігурацію, щоб
- переконатися, що провайдер, якого ви очікуєте, справді може визначатися під час виконання
-- якщо ви використовуєте `ollama`, переконайтеся, що налаштовану модель embeddings встановлено, наприклад через `ollama list`
+ упевнитися, що постачальник, якого ви очікуєте, справді може бути визначений під час виконання
+- якщо ви використовуєте `ollama`, перевірте, що налаштована модель embedding встановлена, наприклад через `ollama list`
Приклад циклу налагодження:
```text
1. Запустіть Gateway і переглядайте його журнали
2. У сеансі чату виконайте /trace on
-3. Надішліть одне повідомлення, яке має запустити Active Memory
+3. Надішліть одне повідомлення, яке має активувати Active Memory
4. Порівняйте видимий у чаті рядок налагодження з рядками журналу Gateway
-5. Якщо вибір провайдера неоднозначний, явно закріпіть agents.defaults.memorySearch.provider
+5. Якщо вибір постачальника неоднозначний, явно зафіксуйте agents.defaults.memorySearch.provider
```
Приклад:
@@ -751,7 +770,7 @@ Ollama:
}
```
-Або, якщо ви хочете embeddings Gemini:
+Або, якщо ви хочете embedding від Gemini:
```json5
{
@@ -765,11 +784,11 @@ Ollama:
}
```
-Після зміни провайдера перезапустіть Gateway і виконайте новий тест із
-`/trace on`, щоб рядок налагодження Active Memory відображав новий шлях embeddings.
+Після зміни постачальника перезапустіть Gateway і виконайте новий тест із
+`/trace on`, щоб рядок налагодження Active Memory відображав новий шлях embedding.
## Пов’язані сторінки
-- [Пошук у пам’яті](/uk/concepts/memory-search)
+- [Memory Search](/uk/concepts/memory-search)
- [Довідник із конфігурації пам’яті](/uk/reference/memory-config)
- [Налаштування Plugin SDK](/uk/plugins/sdk-setup)