From c7d21f0a799cebe55d012c2352612c256e33c55e Mon Sep 17 00:00:00 2001 From: "openclaw-docs-i18n[bot]" Date: Sun, 12 Apr 2026 19:30:37 +0000 Subject: [PATCH] chore(i18n): refresh uk translations --- docs/uk/concepts/active-memory.md | 379 ++++++++++++++++-------------- 1 file changed, 199 insertions(+), 180 deletions(-) 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)