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