chore(i18n): refresh uk translations

This commit is contained in:
openclaw-docs-i18n[bot] 2026-04-12 19:25:59 +00:00
parent e02bbb27f5
commit ffe0bf5560

View File

@ -1,36 +1,36 @@
---
read_when:
- Ви хочете зрозуміти, для чого потрібна Active Memory
- Ви хочете ввімкнути Active Memory для розмовного агента
- Ви хочете увімкнути Active Memory для розмовного агента
- Ви хочете налаштувати поведінку Active Memory, не вмикаючи її всюди
summary: Керований Plugin блокувальний підагент пам’яті, який впроваджує релевантну пам’ять в інтерактивні сеанси чату
summary: Підагент блокувальної пам’яті, що належить Plugin, який впроваджує релевантну пам’ять в інтерактивні сеанси чату
title: Active Memory
x-i18n:
generated_at: "2026-04-12T18:22:02Z"
generated_at: "2026-04-12T19:24:37Z"
model: gpt-5.4
provider: openai
source_hash: dc15b2139618d9dbb0ba4d9951fb82a4d86076f7b8dc1a6bf2013bcce61878c4
source_hash: 10fd37790ef54498679d10718c4874b3683824a4a198542e9851f219e736b58b
source_path: concepts/active-memory.md
workflow: 15
---
# Active Memory
Active Memory — це необов’язковий керований Plugin блокувальний підагент пам’яті, який запускається
перед основною відповіддю для придатних розмовних сеансів.
Active Memory — це необов’язковий підагент блокувальної пам’яті, що належить Plugin і запускається
перед основною відповіддю для відповідних розмовних сеансів.
Він існує тому, що більшість систем пам’яті є потужними, але реактивними. Вони покладаються на те,
що головний агент вирішить, коли шукати в пам’яті, або на те, що користувач скаже щось на кшталт
«запам’ятай це» чи «пошукай у пам’яті». На той момент мить, коли пам’ять могла б зробити відповідь
природною, уже минула.
Він існує тому, що більшість систем пам’яті є потужними, але реактивними. Вони покладаються на
те, що головний агент сам вирішить, коли шукати в пам’яті, або на те, що користувач скаже щось на кшталт
«запам’ятай це» чи «пошукай у пам’яті». На той момент мить, коли пам’ять могла б зробити відповідь природною,
вже минає.
Active Memory дає системі одну обмежену можливість показати релевантну пам’ять
до того, як буде згенеровано основну відповідь.
Active Memory дає системі одну обмежену можливість підняти релевантну пам’ять
до того, як буде згенерована основна відповідь.
## Вставте це у свій агент
## Вставте це у свого агента
Вставте це у свій агент, якщо хочете ввімкнути Active Memory із
самодостатнім і безпечним типово налаштуванням:
Вставте це у свого агента, якщо хочете ввімкнути Active Memory із
самодостатнім налаштуванням із безпечними значеннями за замовчуванням:
```json5
{
@ -56,9 +56,9 @@ Active Memory дає системі одну обмежену можливіст
}
```
Це вмикає Plugin для агента `main`, типово обмежує його сеансами
у стилі прямих повідомлень, дає йому змогу спочатку успадковувати модель поточного сеансу та
використовує налаштовану резервну модель лише якщо жодна явна або успадкована модель недоступна.
Це вмикає Plugin для агента `main`, за замовчуванням обмежує його
сеансами у стилі прямих повідомлень, дозволяє спочатку успадкувати поточну модель сеансу, а
налаштовану резервну модель використовує лише тоді, коли немає явно заданої або успадкованої моделі.
Після цього перезапустіть Gateway:
@ -66,7 +66,7 @@ Active Memory дає системі одну обмежену можливіст
openclaw gateway
```
Щоб переглянути це наживо в розмові:
Щоб переглядати це наживо в розмові:
```text
/verbose on
@ -75,11 +75,11 @@ openclaw gateway
## Увімкнення active memory
Найбезпечніше налаштування:
Найбезпечніше налаштування таке:
1. увімкнути Plugin
2. націлити його на одного розмовного агента
3. залишати журналювання увімкненим лише під час налаштування
3. залишати журналювання ввімкненим лише під час налаштування
Почніть із цього в `openclaw.json`:
@ -116,20 +116,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.allowedChatTypes: ["direct"]` за замовчуванням залишає active memory ввімкненою лише для сеансів у стилі прямих повідомлень
- якщо `config.model` не задано, active memory спочатку успадковує поточну модель сеансу
- `config.modelFallback` за бажанням задає власного резервного провайдера/модель для пошуку
- `config.promptStyle: "balanced"` використовує типовий універсальний стиль підказки для режиму `recent`
- active memory однаково запускається лише в придатних інтерактивних постійних сеансах чату
## Як це побачити
Active Memory впроваджує прихований системний контекст для моделі. Вона не показує
сирі теги `<active_memory_plugin>...</active_memory_plugin>` клієнту.
клієнту сирі теги `<active_memory_plugin>...</active_memory_plugin>`.
## Перемикач сеансу
Використовуйте команду Plugin, коли хочете призупинити або відновити active memory для
Використовуйте команду Plugin, якщо хочете призупинити або відновити active memory для
поточного сеансу чату без редагування конфігурації:
```text
@ -138,12 +138,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,10 +152,10 @@ Active Memory впроваджує прихований системний ко
```
Глобальна форма записує `plugins.entries.active-memory.config.enabled`. Вона залишає
`plugins.entries.active-memory.enabled` увімкненим, щоб команда залишалася доступною для
`plugins.entries.active-memory.enabled` увімкненим, щоб команда й надалі була доступна для
повторного ввімкнення active memory пізніше.
Якщо ви хочете побачити, що active memory робить у живому сеансі, увімкніть
Якщо ви хочете бачити, що робить active memory у живому сеансі, увімкніть
перемикачі сеансу, які відповідають потрібному вам виводу:
```text
@ -166,15 +166,15 @@ Active Memory впроваджує прихований системний ко
Коли вони ввімкнені, 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 Debug: Lemon pepper wings with blue cheese.`, коли ввімкнено `/trace on`
Ці рядки походять із того самого проходу active memory, який подає прихований
системний контекст, але вони відформатовані для людей замість показу сирої
розмітки підказки. Вони надсилаються як діагностичне повідомлення після
звичайної відповіді асистента, щоб клієнти каналів, як-от Telegram, не показували окрему
діагностичну бульбашку перед відповіддю.
Ці рядки походять із того самого проходу Active Memory, який подає прихований
системний контекст, але вони відформатовані для людей, а не для показу сирої розмітки
підказки. Вони надсилаються як діагностичне повідомлення після
звичайної відповіді помічника, щоб клієнти каналів на кшталт Telegram не показували окрему
діагностичну бульбашку до відповіді.
Типово транскрипт блокувального підагента пам’яті є тимчасовим і видаляється
За замовчуванням стенограма підагента блокувальної пам’яті є тимчасовою й видаляється
після завершення виконання.
Приклад потоку:
@ -194,15 +194,15 @@ 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 ввімкнено й націлено, вона запускається лише для придатних
Навіть якщо Active Memory ввімкнена й націлена, вона запускається лише для придатних
інтерактивних постійних сеансів чату.
Фактичне правило таке:
@ -223,17 +223,17 @@ active memory runs
## Типи сеансів
`config.allowedChatTypes` керує тим, у яких типах розмов узагалі може запускатися Active
`config.allowedChatTypes` визначає, у яких типах розмов узагалі може запускатися Active
Memory.
Типове значення:
Значення за замовчуванням:
```json5
allowedChatTypes: ["direct"]
```
Це означає, що Active Memory типово працює в сеансах у стилі прямих повідомлень, але
не в групових сеансах чи сеансах каналів, якщо ви не ввімкнете їх явно.
Це означає, що Active Memory за замовчуванням запускається в сеансах у стилі прямих повідомлень, але
не в групових сеансах або сеансах каналів, якщо ви явно не ввімкнете їх.
Приклади:
@ -249,17 +249,17 @@ allowedChatTypes: ["direct", "group"]
allowedChatTypes: ["direct", "group", "channel"]
```
## Де це працює
## Де вона запускається
Active memory — це функція покращення розмов, а не загальноплатформна
Active Memory — це функція збагачення розмови, а не загальноплатформна
функція інференсу.
| Поверхня | Active memory запускається? |
| Поверхня | Active Memory запускається? |
| ------------------------------------------------------------------- | -------------------------------------------------------- |
| Постійні сеанси Control UI / вебчату | Так, якщо Plugin увімкнено та агент націлено |
| Інші інтерактивні сеанси каналів на тому самому шляху постійного чату | Так, якщо Plugin увімкнено та агент націлено |
| Headless одноразові запуски | Ні |
| Запуски Heartbeat/у фоновому режимі | Ні |
| Постійні сеанси чату в Control UI / вебчаті | Так, якщо Plugin увімкнений і агент націлений |
| Інші інтерактивні сеанси каналів на тому самому шляху постійного чату | Так, якщо Plugin увімкнений і агент націлений |
| Безголові одноразові запуски | Ні |
| Запуски Heartbeat/фонові запуски | Ні |
| Загальні внутрішні шляхи `agent-command` | Ні |
| Виконання підагента/внутрішнього допоміжного компонента | Ні |
@ -267,20 +267,20 @@ Active memory — це функція покращення розмов, а не
Використовуйте active memory, коли:
- сеанс є постійним і призначеним для користувача
- агент має змістовну довготривалу пам’ять для пошуку
- безперервність і персоналізація важливіші за чистий детермінізм підказок
- сеанс є постійним і орієнтованим на користувача
- агент має змістовну довгострокову пам’ять для пошуку
- безперервність і персоналізація важливіші за чисту детермінованість підказки
Це особливо добре працює для:
Вона особливо добре працює для:
- стабільних уподобань
- сталих уподобань
- повторюваних звичок
- довготривалого контексту користувача, який має проявлятися природно
- довгострокового контексту користувача, який має з’являтися природно
Це погано підходить для:
Вона погано підходить для:
- автоматизації
- внутрішніх воркерів
- внутрішніх виконавців
- одноразових API-завдань
- місць, де прихована персоналізація була б несподіваною
@ -297,32 +297,32 @@ flowchart LR
I --> M["Main Reply"]
```
Блокувальний підагент пам’яті може використовувати лише:
Підагент блокувальної пам’яті може використовувати лише:
- `memory_search`
- `memory_get`
Якщо з’єднання слабке, він має повертати `NONE`.
Якщо з’єднання слабке, він має повернути `NONE`.
## Режими запиту
`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`: оптимізований для улюбленого, звичок, рутин, смаків і повторюваних особистих фактів
- `preference-only`: оптимізований для фаворитів, звичок, рутин, смаків і повторюваних особистих фактів
Типове зіставлення, якщо `config.promptStyle` не задано:
Типове зіставлення, коли `config.promptStyle` не задано:
```text
message -> strict
@ -330,7 +330,7 @@ recent -> balanced
full -> contextual
```
Якщо ви явно задаєте `config.promptStyle`, саме це перевизначення і використовується.
Якщо ви явно задаєте `config.promptStyle`, цей пріоритетний параметр має силу.
Приклад:
@ -349,7 +349,7 @@ explicit plugin model
-> optional configured fallback model
```
`config.modelFallback` керує кроком налаштованої резервної моделі.
`config.modelFallback` керує кроком із налаштованою резервною моделлю.
Необов’язкова власна резервна модель:
@ -357,47 +357,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`
@ -410,9 +410,9 @@ Latest user message only
Використовуйте це, коли:
- ви хочете найшвидшої поведінки
- ви хочете найсильнішого ухилу в бік відновлення стабільних уподобань
- наступні ходи не потребують контексту розмови
- вам потрібна найшвидша поведінка
- вам потрібен найсильніший ухил у бік пошуку сталих уподобань
- подальшим ходам не потрібен розмовний контекст
Рекомендований тайм-аут:
@ -434,7 +434,7 @@ Latest user message:
Використовуйте це, коли:
- ви хочете кращого балансу між швидкістю та прив’язкою до розмовного контексту
- вам потрібен кращий баланс між швидкістю та прив’язкою до розмовного контексту
- уточнювальні запитання часто залежать від кількох останніх ходів
Рекомендований тайм-аут:
@ -443,7 +443,7 @@ Latest user message:
### `full`
До блокувального підагента пам’яті надсилається вся розмова.
Уся розмова надсилається підагенту блокувальної пам’яті.
```text
Full conversation context:
@ -455,8 +455,8 @@ user: ...
Використовуйте це, коли:
- найвища якість відновлення пам’яті важливіша за затримку
- розмова містить важливий вступний контекст далеко вище в гілці
- найвища якість пошуку важливіша за затримку
- розмова містить важливі налаштування далеко вище по гілці
Рекомендований тайм-аут:
@ -469,19 +469,19 @@ user: ...
message < recent < full
```
## Збереження транскриптів
## Збереження стенограм
Запуски блокувального підагента пам’яті active memory створюють реальний
транскрипт `session.jsonl` під час виклику блокувального підагента пам’яті.
Запуски підагента блокувальної пам’яті Active memory створюють реальну
стенограму `session.jsonl` під час виклику підагента блокувальної пам’яті.
Типово цей транскрипт є тимчасовим:
За замовчуванням ця стенограма є тимчасовою:
- він записується до тимчасового каталогу
- він використовується лише для запуску блокувального підагента пам’яті
- він видаляється одразу після завершення запуску
- вона записується до тимчасового каталогу
- вона використовується лише для запуску підагента блокувальної пам’яті
- вона видаляється одразу після завершення запуску
Якщо ви хочете зберігати ці транскрипти блокувального підагента пам’яті на диску для налагодження або
перевірки, явно ввімкніть збереження:
Якщо ви хочете зберігати ці стенограми підагента блокувальної пам’яті на диску для налагодження або
перевірки, явно увімкніть збереження:
```json5
{
@ -500,11 +500,11 @@ message < recent < full
}
```
Коли це ввімкнено, active memory зберігає транскрипти в окремому каталозі в
теці сеансів цільового агента, а не в основному шляху транскрипту
Коли це ввімкнено, active memory зберігає стенограми в окремому каталозі в
папці сеансів цільового агента, а не в основному шляху стенограми
розмови користувача.
Типова структура концептуально виглядає так:
Типове компонування концептуально виглядає так:
```text
agents/<agent>/sessions/active-memory/<blocking-memory-sub-agent-session-id>.jsonl
@ -514,13 +514,13 @@ agents/<agent>/sessions/active-memory/<blocking-memory-sub-agent-session-id>.jso
Використовуйте це обережно:
- транскрипти блокувального підагента пам’яті можуть швидко накопичуватися в активних сеансах
- режим запиту `full` може дублювати велику кількість контексту розмови
- ці транскрипти містять прихований контекст підказки та відновлені спогади
- стенограми підагента блокувальної пам’яті можуть швидко накопичуватися в активних сеансах
- режим запиту `full` може дублювати великий обсяг контексту розмови
- ці стенограми містять прихований контекст підказки та відновлені спогади
## Конфігурація
Уся конфігурація active memory розміщується в:
Уся конфігурація active memory розташована в:
```text
plugins.entries.active-memory
@ -528,36 +528,36 @@ 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 | 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 | Meaning |
| ----------------------------- | -------- | ---------------------------------------------------------------- |
| `config.maxSummaryChars` | `number` | Максимальна загальна кількість символів, дозволена в підсумку active-memory |
| `config.recentUserTurns` | `number` | Попередні ходи користувача, які слід включити, коли `queryMode` дорівнює `recent` |
| `config.recentAssistantTurns` | `number` | Попередні ходи асистента, які слід включити, коли `queryMode` дорівнює `recent` |
| `config.recentUserChars` | `number` | Максимум символів на один нещодавній хід користувача |
| `config.recentAssistantChars` | `number` | Максимум символів на один нещодавній хід асистента |
| `config.cacheTtlMs` | `number` | Повторне використання кешу для повторюваних ідентичних запитів |
| Key | Type | Meaning |
| ----------------------------- | -------- | ------------------------------------------------------------ |
| `config.maxSummaryChars` | `number` | Максимальна загальна кількість символів, дозволена в резюме active-memory |
| `config.recentUserTurns` | `number` | Попередні ходи користувача, які слід включати, коли `queryMode` має значення `recent` |
| `config.recentAssistantTurns` | `number` | Попередні ходи помічника, які слід включати, коли `queryMode` має значення `recent` |
| `config.recentUserChars` | `number` | Максимум символів на один нещодавній хід користувача |
| `config.recentAssistantChars` | `number` | Максимум символів на один нещодавній хід помічника |
| `config.cacheTtlMs` | `number` | Повторне використання кешу для повторюваних однакових запитів |
## Рекомендоване налаштування
Починайте з `recent`.
Почніть із `recent`.
```json5
{
@ -580,55 +580,161 @@ 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`
Якщо active memory працює надто повільно:
Якщо active memory надто повільна:
- зменште `queryMode`
- зменште `timeoutMs`
- зменште кількість нещодавніх ходів
- зменште кількість недавніх ходів
- зменште ліміти символів на хід
## Поширені проблеми
### Провайдер вбудовувань неочікувано змінився
### Провайдер embeddings неочікувано змінився
Active Memory покладається на звичайний провайдер вбудовувань для пошуку в пам’яті в
`agents.defaults.memorySearch`. Якщо ви не задаєте цей провайдер явно,
OpenClaw автоматично виявляє перший доступний провайдер вбудовувань.
Active Memory використовує звичайний конвеєр `memory_search` у
`agents.defaults.memorySearch`. Це означає, що налаштування провайдера embeddings є
вимогою лише тоді, коли ваше налаштування `memorySearch` вимагає embeddings для бажаної вами поведінки.
Це може збивати з пантелику в реальних розгортаннях:
На практиці:
- новий доступний API-ключ може змінити провайдера, який використовує пошук у пам’яті
- одна команда або поверхня діагностики може створювати враження, що вибраний провайдер
інший, ніж шлях, який ви фактично використовуєте під час живої синхронізації пам’яті або
ініціалізації пошуку
- явне налаштування провайдера **обов’язкове**, якщо вам потрібен провайдер, який не
визначається автоматично, наприклад `ollama`
- явне налаштування провайдера **обов’язкове**, якщо автоматичне визначення не знаходить
жодного придатного провайдера embeddings для вашого середовища
- явне налаштування провайдера **настійно рекомендоване**, якщо ви хочете детермінований
вибір провайдера замість принципу «перший доступний перемагає»
- явне налаштування провайдера зазвичай **не є обов’язковим**, якщо автоматичне визначення вже
знаходить потрібного вам провайдера і цей провайдер стабільний у вашому розгортанні
Якщо `memorySearch.provider` не задано, OpenClaw автоматично визначає перший доступний
провайдер embeddings.
У реальних розгортаннях це може збивати з пантелику:
- новий доступний API-ключ може змінити провайдера, якого використовує пошук у пам’яті
- одна команда або діагностична поверхня може створювати враження, що вибраний провайдер
відрізняється від того шляху, який ви фактично використовуєте під час живої синхронізації пам’яті або
початкового завантаження пошуку
- хостовані провайдери можуть завершуватися помилками квоти або обмеження швидкості, які проявляються лише
коли Active Memory починає надсилати запити на відновлення пам’яті перед кожною відповіддю
коли Active Memory починає надсилати пошукові запити перед кожною відповіддю
Якщо для вас важлива передбачувана поведінка, явно закріпіть провайдера вбудовувань для пам’яті
замість покладання на автовиявлення.
Active Memory все ще може працювати, коли embeddings недоступні, якщо ваше
налаштування `memorySearch` може перейти до суто лексичного пошуку, але якість
семантичного відновлення зазвичай погіршується. Якщо ви залежите від відновлення на основі embeddings,
мультимодальної індексації або конкретного локального/віддаленого провайдера, закріпіть провайдера
явно замість покладання на автоматичне визначення.
Поширені приклади закріплення:
OpenAI:
```json5
{
agents: {
defaults: {
memorySearch: {
provider: "openai",
model: "text-embedding-3-small",
},
},
},
}
```
Gemini:
```json5
{
agents: {
defaults: {
memorySearch: {
provider: "gemini",
model: "gemini-embedding-001",
},
},
},
}
```
Ollama:
```json5
{
agents: {
defaults: {
memorySearch: {
provider: "ollama",
model: "nomic-embed-text",
},
},
},
}
```
Якщо ви очікуєте автоматичне перемикання провайдера при помилках під час виконання, таких як вичерпання квоти,
самого закріплення провайдера недостатньо. Налаштуйте також явний резервний варіант:
```json5
{
agents: {
defaults: {
memorySearch: {
provider: "openai",
fallback: "gemini",
},
},
},
}
```
### Налагодження проблем із провайдером
Якщо Active Memory працює повільно, повертає порожній результат або здається, що неочікувано перемикає провайдерів:
- переглядайте журнали Gateway під час відтворення проблеми; шукайте рядки на кшталт
`active-memory: ... start|done`, `memory sync failed (search-bootstrap)` або
помилки embeddings, специфічні для провайдера
- увімкніть `/trace on`, щоб показувати в сеансі налагоджувальне резюме Active Memory, що належить Plugin
- увімкніть `/verbose on`, якщо ви також хочете бачити звичайний рядок стану
`🧩 Active Memory: ...` після кожної відповіді
- виконайте `openclaw memory status --deep`, щоб перевірити поточний
бекенд пошуку в пам’яті та стан індексу
- перевірте `agents.defaults.memorySearch.provider` і пов’язану автентифікацію/конфігурацію, щоб
переконатися, що провайдер, якого ви очікуєте, справді може визначатися під час виконання
- якщо ви використовуєте `ollama`, переконайтеся, що налаштовану модель embeddings встановлено, наприклад через `ollama list`
Приклад циклу налагодження:
```text
1. Запустіть Gateway і переглядайте його журнали
2. У сеансі чату виконайте /trace on
3. Надішліть одне повідомлення, яке має запустити Active Memory
4. Порівняйте видимий у чаті рядок налагодження з рядками журналу Gateway
5. Якщо вибір провайдера неоднозначний, явно закріпіть agents.defaults.memorySearch.provider
```
Приклад:
@ -645,7 +751,7 @@ OpenClaw автоматично виявляє перший доступний
}
```
Або, якщо ви хочете вбудовування Gemini:
Або, якщо ви хочете embeddings Gemini:
```json5
{
@ -659,11 +765,11 @@ OpenClaw автоматично виявляє перший доступний
}
```
Після зміни провайдера перезапустіть Gateway і виконайте новий тест з
`/trace on`, щоб рядок налагодження Active Memory відображав новий шлях вбудовувань.
Після зміни провайдера перезапустіть Gateway і виконайте новий тест із
`/trace on`, щоб рядок налагодження Active Memory відображав новий шлях embeddings.
## Пов’язані сторінки
- [Memory Search](/uk/concepts/memory-search)
- [Пошук у пам’яті](/uk/concepts/memory-search)
- [Довідник із конфігурації пам’яті](/uk/reference/memory-config)
- [Налаштування Plugin SDK](/uk/plugins/sdk-setup)