Сессии в Hermes Agent — это автоматически сохраняемые разговоры, которые обеспечивают возобновление диалогов, поиск по истории и полное управление контекстом. Каждый чат — будь то CLI, Telegram, Discord, Slack, WhatsApp, Signal, Matrix или другая платформа — сохраняется как отдельная сессия с полной историей сообщений.
Как работают сессии
Все сессии отслеживаются двумя взаимодополняющими системами:
- SQLite-база данных (
~/.hermes/state.db) — структурированные метаданные с полнотекстовым поиском FTS5 - JSONL-транскрипты (
~/.hermes/sessions/) — сырые стенограммы разговоров, включая вызовы инструментов
В SQLite хранятся: идентификатор сессии, платформа, ID пользователя, название сессии, модель и конфигурация, системный промпт, полная история сообщений, количество токенов и метки времени.
Типы сессий
Interactive
Интерактивные сессии создаются при общении через CLI (hermes или hermes chat) или мессенджеры. Каждое сообщение пользователя и ответ агента фиксируются в реальном времени. Поддерживаются команды --continue и --resume для возобновления предыдущих диалогов.
Cron
Сессии типа cron запускаются по расписанию. Используются для автоматических задач — мониторинга, генерации отчётов, периодических проверок. Запускаются без участия пользователя и работают автономно.
Background
Фоновые сессии (batch) предназначены для пакетной обработки. Агент выполняет задачи в фоновом режиме, не блокируя интерфейс. Подходит для длительных операций — обработки файлов, массовых запросов, генерации контента.
Платформенные сессии
Каждая сессия помечается источником платформы. Поддерживаемые источники:
cli— интерактивный CLItelegram,discord,slack,whatsapp,signal,matrix— мессенджерыemail,sms— электронная почта и SMSwebhook,api-server— программные интерфейсыcron,batch— автоматические запуски
Сессии можно передавать между платформами с помощью команды /handoff. Например, начав разговор в CLI, можно перенести его в Telegram — история, контекст и вызовы инструментов сохраняются полностью.
Названия сессий
Hermes автоматически генерирует краткие названия (3–7 слов) после первого обмена сообщениями. Генерация происходит в фоновом потоке и не добавляет задержки. Установить название вручную можно командой /title в любом чате или через CLI: hermes sessions rename <id> "Название".
Правила названий: уникальность, максимум 100 символов, автоматическая очистка от спецсимволов. При сжатии контекста создаётся продолжение с нумерованным названием.
Управление сессиями (CLI)
Hermes предоставляет полный набор команд для управления хранилищем сессий:
Просмотр
hermes sessions list # список всех сессий с названиями и превью
hermes sessions browse # интерактивный просмотр с выбором
Экспорт
hermes sessions export output.jsonl # экспорт всех сессий в JSONL-файл
hermes sessions export backup.jsonl # можно использовать для бэкапов и миграции
Экспорт создаёт JSONL-файл, где каждая строка — одна сессия с полной историей сообщений. Формат удобен для анализа, бэкапа и переноса между инстансами.
Статистика
hermes sessions stats # статистика хранилища сессий
Показывает: общее количество сессий, общий размер хранилища, количество сообщений, среднюю длину сессии и распределение по платформам.
Очистка
hermes sessions prune --older-than 30 # удалить сессии старше 30 дней
hermes sessions prune --older-than 7 # удалить сессии старше 7 дней
Команда prune удаляет устаревшие сессии из обоих хранилищ — SQLite-базы и JSONL-транскриптов. Помогает контролировать размер дискового пространства. Без флага --older-than будет запрошено подтверждение.
Переименование и удаление
hermes sessions rename <id> "Новое название" # переименовать сессию
hermes sessions delete <id> # удалить конкретную сессию
Поиск по сессиям
Поиск выполняется через FTS5-индекс в SQLite-базе. В интерактивной сессии используется инструмент session_search с четырьмя режимами:
- Discovery — поиск по ключевым словам с возвратом релевантных сессий
- Scroll — навигация внутри конкретной сессии по окну сообщений
- Read — чтение полного содержимого сессии по ID
- Browse — хронологический просмотр последних сессий
Синтаксис FTS5 поддерживает: AND (по умолчанию), OR, точные фразы в кавычках, NOT и wildcard-суффиксы.
Сжатие контекста (Compression)
Каждая модель имеет ограничение на длину контекстного окна. Hermes автоматически отслеживает заполненность контекста и выполняет сжатие при приближении к лимиту.
Автоматическое сжатие
Когда объём токенов приближается к лимиту, Hermes автоматически сжимает раннюю часть диалога, сохраняя ключевую информацию. Настройки в config.yaml:
compression:
enabled: true # включить автоматическое сжатие
threshold: 0.50 # сжатие при 50% заполнения контекста
target_ratio: 0.20 # целевой размер после сжатия (20% от контекста)
При сжатии создаётся продолжение сессии с нумерованным названием (например, «Мой чат (2)»), чтобы можно было найти полную историю.
Ручное сжатие
/compress # сжать контекст текущей сессии вручную
Полезно перед длинными задачами, когда нужно освободить контекстное окно. Агент сформирует краткое содержание предыдущего диалога и продолжит работу с уменьшенным контекстом.
Команды управления сессией (Slash-команды)
Во время интерактивного чата доступны следующие команды:
/new (/reset) # начать новую сессию
/title [name] # переименовать текущую сессию
/compress # сжать контекст вручную
/undo # удалить последний обмен (user + assistant)
/retry # повторно отправить последнее сообщение
/clear # очистить экран + новая сессия (CLI)
/stop # остановить фоновые процессы
/undo — отмена последнего обмена
Команда /undo удаляет последнюю пару «сообщение пользователя → ответ агента» из контекста. Полезно, если агент пошёл по неверному пути и нужно вернуться на шаг назад без потери остальной истории.
/retry — повторная отправка
Команда /retry повторно отправляет последнее сообщение пользователя, давая агенту шанс сгенерировать другой ответ. Параметры и контекст остаются теми же.
/title — переименование
Команда /title без аргументов показывает текущее название. С аргументом — устанавливает новое:
/title # показать текущее название
/title Мой проект # переименовать сессию
Возобновление сессий (Resume)
Hermes позволяет продолжить любой предыдущий диалог с полным сохранением контекста, истории сообщений и вызовов инструментов.
Через CLI-флаги
hermes --continue # возобновить последнюю сессию
hermes --continue "название" # возобновить по имени сессии
hermes --resume SESSION_ID # возобновить по ID сессии
hermes -c # краткая форма --continue
hermes -r SESSION_ID # краткая форма --resume
Через slash-команду
/resume # показать список недавних сессий для выбора
/resume Название # возобновить сессию по имени
Формат ID сессий: YYYYMMDD_HHMMSS_<hex> — для CLI используется 6-символьный суффикс, для gateway — 8-символьный.
Worktree-режим
Флаг -w (--worktree) запускает Hermes в изолированном git worktree. Это позволяет запускать несколько параллельных агентов, работающих с одним репозиторием, без конфликтов в файлах.
hermes -w # запуск в worktree-режиме
hermes --worktree # то же самое, полная форма
Зачем нужен worktree
- Параллельная работа — несколько агентов одновременно редактируют код в одном репозитории
- Изоляция — каждый агент работает в своей ветке и рабочей директории
- Без конфликтов — изменения одного агента не мешают другому
Мультиагентная координация
# Агент A: backend
hermes -w → "Build REST API for user management"
# Агент B: frontend
hermes -w → "Build React dashboard for user management"
Каждый агент получает свой git worktree с отдельной веткой. После завершения задач ветки можно смержить через стандартный git merge.
Хранение и пути
- База данных:
~/.hermes/state.db(глобальная) или~/.hermes/profiles/<name>/state.db(профиль) - Транскрипты:
~/.hermes/sessions/— JSONL-файлы с полной историей - Логи:
~/.hermes/logs/gateway.log— логи gateway и ошибок
При использовании профилей (hermes -p name) каждая профильная сессия хранится изолированно в директории профиля.