# Сесії та пам'ять ## Сесії ### Як працюють сесії Кожна розмова з агентом відбувається в **сесії**. Сесії ідентифікуються ключами, що кодують контекст, який агент, який канал, який чат. Сесії підтримують повний транскрипт (лише додавання JSONL) всіх повідомлень, викликів інструментів та результатів. Цей транскрипт дає агентам контекст поточної розмови. ### Ключі сесій Сесії маршрутизуються автоматично на основі контексту: | Шаблон | Значення | |---------|---------| | `agent:main:main` | Основна пряма розмова | | `agent:::group:` | Груповий чат на конкретному каналі | | `agent:::channel:` | Розмова в каналі/кімнаті | | `cron:` | Виконання запланованого завдання | | `hook:` | Виконання, ініційоване вебхуком | ### Життєвий цикл сесії - **Щоденне скидання**, Сесії автоматично скидаються у конфігурований час (за замовчуванням 4:00 за місцевим часом). Це створює свіжий контекст розмови щодня, зберігаючи при цьому історію. - **Закінчення через неактивність**, Сесії, що не були активними протягом конфігурованого часу, можуть автоматично скидатися. - **Ручне скидання**, Починайте з початку в будь-який час командою `/new` або `/reset`. ### Відстеження токенів Сесії відстежують накопичене використання токенів (вхідні, вихідні, читання кешу, запис кешу) для моніторингу витрат та управління контекстним вікном. --- ## Ущільнення ### Що таке ущільнення? Коли розмова наближається до ліміту контекстного вікна моделі, Neotask **ущільнює** її, підсумовуючи старіші повідомлення в конденсований огляд та починаючи нову сесію з цим резюме плюс останні повідомлення. ### Як це працює 1. **Виявлення**, Моніторинг використання контексту (стандартний тригер: 80% контекстного вікна) 2. **Підсумування**, Старіші повідомлення підсумовуються в запис ущільнення 3. **Нова сесія**, Починається свіжа сесія з резюме, вставленим на початку 4. **Збереження**, Старі транскрипти зберігаються для перегляду історії, але більше не завантажуються в контекст ### Конфігурація - **Увімкнено/вимкнено**, Перемикання автоматичного ущільнення - **Поріг**, Відсоток контекстного вікна, що запускає ущільнення (за замовчуванням 80%) - **Мінімальна кількість повідомлень**, Не ущільнювати, якщо повідомлень менше N ### Ручне ущільнення Ви можете ініціювати ущільнення вручну в будь-який час командою `/compact`. Це корисно, коли ви хочете скинути контекст без втрати важливої інформації. --- ## Пам'ять ### Пам'ять агента Кожен агент має систему пам'яті для зберігання важливої інформації між сесіями: - **MEMORY.md**, Markdown-файл у просторі роботи агента, де зберігаються важливі факти, уподобання та контекст - **Директорія пам'яті**, Додаткові файли у `memory/` для структурованих знань ### Векторний пошук Neotask підтримує векторний пошук за схожістю в пам'яті агента: 1. **Індексування**, Файли пам'яті індексуються за допомогою embeddings 2. **Пошук**, Агенти запитують пам'ять природною мовою («Що користувач говорив про свої вподобання щодо API?») 3. **Відтворення**, Відповідні спогади повертаються відсортованими за схожістю ### Плагін пам'яті (LanceDB) Плагін пам'яті LanceDB забезпечує розширене векторне сховище: - Постійна векторна база даних - Конфігурований розмір фрагмента та перекриття - Ефективний пошук за схожістю - Автоматична переіндексація при зміні файлів пам'яті ### Автоматичне відтворення На початку сесії відповідні спогади можуть автоматично відтворюватися та вставлятися в контекст агента. Це забезпечує безперервність агентів між сесіями без завантаження цілих історій розмов. --- ## Збереження сесій Всі дані сесій зберігаються локально: - **Метадані сесії**, `sessions.json` відстежує активні сесії, останню активність, кількість токенів та конфігурацію - **Транскрипти**, Окремі транскрипти сесій зберігаються як файли `.jsonl` - **Відновлення**, Сесії переживають перезапуски Gateway без втрати даних ### Очищення - Сесії, до яких не зверталися протягом конфігурованого часу (за замовчуванням 30 днів), підлягають очищенню - Ручне управління сесіями доступне через інтерфейс або API - Ущільнені транскрипти архівуються, але можуть бути переглянуті