Активна пам’ять
Активна пам’ять — це необов’язковий підлеглий агент блокувальної пам’яті, що належить плагіну та запускається перед основною відповіддю для придатних розмовних сеансів. Вона існує тому, що більшість систем пам’яті є потужними, але реактивними. Вони покладаються на те, що основний агент сам вирішить, коли шукати в пам’яті, або на те, що користувач скаже щось на кшталт «запам’ятай це» чи «пошукай у пам’яті». На той момент мить, коли пам’ять могла б зробити відповідь природнішою, уже минула. Активна пам’ять дає системі одну обмежену можливість показати релевантну пам’ять до того, як буде згенеровано основну відповідь.Вставте це у свого агента
Вставте це у свого агента, якщо хочете ввімкнути Активну пам’ять із самодостатнім налаштуванням із безпечними значеннями за замовчуванням:main, за замовчуванням обмежує його лише
сеансами у стилі прямих повідомлень, дозволяє спершу успадковувати поточну модель сеансу, а
також зберігає вбудований віддалений резервний варіант, якщо явна або успадкована модель недоступна.
Після цього перезапустіть gateway:
Увімкнення активної пам’яті
Найбезпечніше налаштування:- увімкнути плагін
- націлити його на одного розмовного агента
- залишити журналювання ввімкненим лише на час налаштування
openclaw.json:
plugins.entries.active-memory.enabled: trueвмикає плагінconfig.agents: ["main"]підключає до активної пам’яті лише агентаmainconfig.allowedChatTypes: ["direct"]за замовчуванням залишає активну пам’ять увімкненою лише для сеансів у стилі прямих повідомлень- якщо
config.modelне задано, активна пам’ять спочатку успадковує поточну модель сеансу config.modelFallbackPolicy: "default-remote"зберігає вбудований віддалений резервний варіант за замовчуванням, якщо явна або успадкована модель недоступнаconfig.promptStyle: "balanced"використовує типовий універсальний стиль запиту для режимуrecent- активна пам’ять однаково запускається лише в придатних інтерактивних постійних чат-сеансах
Як це побачити
Активна пам’ять впроваджує прихований системний контекст для моделі. Вона не показує необроблені теги<active_memory_plugin>...</active_memory_plugin> клієнту.
Перемикач сеансу
Використовуйте команду плагіна, якщо хочете призупинити або відновити активну пам’ять для поточного чат-сеансу без редагування конфігурації:plugins.entries.active-memory.enabled, націлювання агента чи іншу глобальну
конфігурацію.
Якщо ви хочете, щоб команда записувала конфігурацію та призупиняла або відновлювала активну пам’ять для
всіх сеансів, використовуйте явну глобальну форму:
plugins.entries.active-memory.config.enabled. Вона залишає
plugins.entries.active-memory.enabled увімкненим, щоб команда й надалі була доступна для
повторного ввімкнення активної пам’яті пізніше.
Якщо ви хочете побачити, що робить активна пам’ять у поточному сеансі, увімкніть докладний
режим для цього сеансу:
- рядок стану активної пам’яті, наприклад
Active Memory: ok 842ms recent 34 chars - зрозумілий налагоджувальний підсумок, наприклад
Active Memory Debug: Lemon pepper wings with blue cheese.
Коли вона запускається
Активна пам’ять використовує два етапи перевірки:- Явне ввімкнення в конфігурації
Плагін має бути ввімкнений, а поточний ідентифікатор агента має бути присутній у
plugins.entries.active-memory.config.agents. - Сувора придатність під час виконання Навіть коли активна пам’ять увімкнена й націлена, вона запускається лише для придатних інтерактивних постійних чат-сеансів.
Типи сеансів
config.allowedChatTypes визначає, у яких типах розмов взагалі може працювати Активна
пам’ять.
Значення за замовчуванням:
Де вона запускається
Активна пам’ять — це функція покращення розмови, а не загальноплатформова функція інференсу.| Поверхня | Активна пам’ять запускається? |
|---|---|
| Постійні сеанси Control UI / вебчату | Так, якщо плагін увімкнено і агента націлено |
| Інші інтерактивні сеанси каналів на тому самому шляху постійного чату | Так, якщо плагін увімкнено і агента націлено |
| Безголові одноразові запуски | Ні |
| Запуски heartbeat/у фоновому режимі | Ні |
Загальні внутрішні шляхи agent-command | Ні |
| Виконання підлеглих агентів/внутрішніх допоміжних компонентів | Ні |
Навіщо її використовувати
Використовуйте активну пам’ять, коли:- сеанс є постійним і орієнтованим на користувача
- агент має змістовну довгострокову пам’ять для пошуку
- безперервність і персоналізація важливіші за чистий детермінізм запиту
- стабільних уподобань
- повторюваних звичок
- довгострокового контексту користувача, який має природно з’являтися
- автоматизації
- внутрішніх робітників
- одноразових API-завдань
- місць, де прихована персоналізація була б неочікуваною
Як це працює
Форма під час виконання така: Підлеглий агент блокувальної пам’яті може використовувати лише:memory_searchmemory_get
NONE.
Режими запиту
config.queryMode визначає, який обсяг розмови бачить підлеглий агент блокувальної пам’яті.
Стилі запиту
config.promptStyle визначає, наскільки охоче або суворо підлеглий агент блокувальної пам’яті
вирішує, чи повертати пам’ять.
Доступні стилі:
balanced: універсальне значення за замовчуванням для режимуrecentstrict: найменш охочий; найкраще, коли ви хочете мінімального проникнення з навколишнього контекстуcontextual: найсприятливіший для безперервності; найкраще, коли історія розмови має більше значенняrecall-heavy: охочіше показує пам’ять за слабших, але все ще правдоподібних збігівprecision-heavy: агресивно віддає перевагуNONE, якщо збіг не є очевиднимpreference-only: оптимізований для обраного, звичок, рутин, смаків і повторюваних особистих фактів
config.promptStyle не задано:
config.promptStyle, це перевизначення матиме пріоритет.
Приклад:
Політика резервного вибору моделі
Якщоconfig.model не задано, Активна пам’ять намагається визначити модель у такому порядку:
config.modelFallbackPolicy керує останнім кроком.
Значення за замовчуванням:
resolved-only, якщо хочете, щоб Активна пам’ять пропускала пригадування замість
переходу до вбудованого віддаленого значення за замовчуванням, коли явна або успадкована модель
недоступна.
Розширені варіанти обходу
Ці параметри навмисно не входять до рекомендованого налаштування.config.thinking може перевизначати рівень мислення підлеглого агента блокувальної пам’яті:
config.promptAppend додає додаткові інструкції оператора після типового запиту Активної
пам’яті й перед контекстом розмови:
config.promptOverride замінює типовий запит Активної пам’яті. OpenClaw
усе одно додає контекст розмови після нього:
NONE,
або компактний контекст фактів про користувача для основної моделі.
message
Надсилається лише останнє повідомлення користувача.
- вам потрібна найвища швидкість роботи
- вам потрібен найсильніший ухил у бік пригадування стабільних уподобань
- наступні ходи не потребують розмовного контексту
- починайте приблизно з
3000до5000мс
recent
Надсилається останнє повідомлення користувача та невеликий хвіст нещодавньої розмови.
- вам потрібен кращий баланс між швидкістю та прив’язкою до розмови
- подальші запитання часто залежать від кількох останніх ходів
- починайте приблизно з
15000мс
full
Уся розмова надсилається підлеглому агенту блокувальної пам’яті.
- найвища якість пригадування важливіша за затримку
- розмова містить важливу підготовчу інформацію далеко вище по гілці
- суттєво збільшуйте його порівняно з
messageабоrecent - починайте приблизно з
15000мс або вище залежно від розміру гілки
Збереження стенограм
Запуски підлеглого агента блокувальної пам’яті активної пам’яті створюють справжню стенограмуsession.jsonl під час виклику підлеглого агента блокувальної пам’яті.
За замовчуванням ця стенограма є тимчасовою:
- вона записується до тимчасового каталогу
- вона використовується лише для запуску підлеглого агента блокувальної пам’яті
- вона видаляється одразу після завершення запуску
config.transcriptDir.
Використовуйте це обережно:
- стенограми підлеглого агента блокувальної пам’яті можуть швидко накопичуватися в активних сеансах
- режим запиту
fullможе дублювати велику частину контексту розмови - ці стенограми містять прихований контекст запиту та пригадані спогади
Конфігурація
Уся конфігурація активної пам’яті розміщена в:| Ключ | Тип | Значення |
|---|---|---|
enabled | boolean | Вмикає сам плагін |
config.agents | string[] | Ідентифікатори агентів, які можуть використовувати активну пам’ять |
config.model | string | Необов’язкове посилання на модель підлеглого агента блокувальної пам’яті; якщо не задано, активна пам’ять використовує поточну модель сеансу |
config.queryMode | "message" | "recent" | "full" | Керує тим, який обсяг розмови бачить підлеглий агент блокувальної пам’яті |
config.promptStyle | "balanced" | "strict" | "contextual" | "recall-heavy" | "precision-heavy" | "preference-only" | Керує тим, наскільки охоче або суворо підлеглий агент блокувальної пам’яті вирішує, чи повертати пам’ять |
config.thinking | "off" | "minimal" | "low" | "medium" | "high" | "xhigh" | "adaptive" | Розширене перевизначення рівня мислення для підлеглого агента блокувальної пам’яті; типово off для швидкості |
config.promptOverride | string | Розширена повна заміна запиту; не рекомендується для звичайного використання |
config.promptAppend | string | Розширені додаткові інструкції, що додаються до типового або перевизначеного запиту |
config.timeoutMs | number | Жорсткий тайм-аут для підлеглого агента блокувальної пам’яті |
config.maxSummaryChars | number | Максимальна загальна кількість символів, дозволена в підсумку active-memory |
config.logging | boolean | Виводить журнали активної пам’яті під час налаштування |
config.persistTranscripts | boolean | Зберігає стенограми підлеглого агента блокувальної пам’яті на диску замість видалення тимчасових файлів |
config.transcriptDir | string | Відносний каталог стенограм підлеглого агента блокувальної пам’яті в папці сеансів агента |
| Ключ | Тип | Значення |
|---|---|---|
config.maxSummaryChars | number | Максимальна загальна кількість символів, дозволена в підсумку active-memory |
config.recentUserTurns | number | Попередні ходи користувача, які слід включити, коли queryMode має значення recent |
config.recentAssistantTurns | number | Попередні ходи помічника, які слід включити, коли queryMode має значення recent |
config.recentUserChars | number | Максимальна кількість символів на кожен недавній хід користувача |
config.recentAssistantChars | number | Максимальна кількість символів на кожен недавній хід помічника |
config.cacheTtlMs | number | Повторне використання кешу для повторюваних однакових запитів |
Рекомендоване налаштування
Почніть ізrecent.
/verbose on у
сеансі замість пошуку окремої команди налагодження active-memory.
Потім перейдіть до:
message, якщо вам потрібна менша затримкаfull, якщо ви вирішите, що додатковий контекст вартий повільнішого підлеглого агента блокувальної пам’яті
Налагодження
Якщо активна пам’ять не з’являється там, де ви очікуєте:- Переконайтеся, що плагін увімкнено в
plugins.entries.active-memory.enabled. - Переконайтеся, що поточний ідентифікатор агента вказано в
config.agents. - Переконайтеся, що ви тестуєте через інтерактивний постійний чат-сеанс.
- Увімкніть
config.logging: trueі перегляньте журнали gateway. - Перевірте, що сам пошук у пам’яті працює, за допомогою
openclaw memory status --deep.
maxSummaryChars
- зменште
queryMode - зменште
timeoutMs - зменште кількість недавніх ходів
- зменште ліміти символів на хід