chore(i18n): refresh uk translations
Some checks are pending
Translate uk / translate (push) Waiting to run
Translate zh-CN / translate (push) Waiting to run

This commit is contained in:
openclaw-docs-i18n[bot] 2026-04-12 19:30:37 +00:00
parent a41a27e10e
commit c7d21f0a79

View File

@ -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 впроваджує прихований системний контекст для моделі. Вона не показує
клієнту сирі теги `<active_memory_plugin>...</active_memory_plugin>`.
сирі теги `<active_memory_plugin>...</active_memory_plugin>` клієнту.
## Перемикач сеансу
Використовуйте команду 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/<agent>/sessions/active-memory/<blocking-memory-sub-agent-session-id>.jsonl
@ -514,13 +515,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,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)