# Как устроен ИИ-агент Hermes: разбор архитектуры от Hugging Face

Источник: https://www.youtube.com/watch?v=n32qq7Kwzh0
Канал: Hugging Face
Опубликовано: 17.06.2026

---

Разработчик и автор канала Hugging Face Алехандро АО (Alejandro AO) представил детальный технический разбор архитектуры Hermes — ИИ-агента, предназначенного для непрерывной работы. В материале рассматривается жизненный цикл агента, механизмы формирования контекста, интеграция с внешними мессенджерами и система долгосрочной памяти.

## 🏗️ Общая архитектура системы: взгляд с высоты птичьего полёта
[[JUMP:00:57]]

Архитектура Hermes отличается модульностью и простотой компонентов, что делает её доступной для изучения и воспроизведения [01:12]. В центре системы находится «ядро» агента (AI Agent Core), реализующее основной агентский цикл.

Взаимодействие с ядром осуществляется через три основных интерфейса:

*   **CLI (Command Line Interface):** классический терминальный доступ.
*   **Gateway (Шлюз):** система, обеспечивающая подключение к внешним мессенджерам (Telegram, Slack, Discord, электронная почта) [01:38].
*   **API:** программный интерфейс для интеграции с другими сервисами.

Из коробки Hermes оснащён набором инструментов (Tools) и навыков (Skills), а также системой памяти [02:22]. По словам Алехандро АО (Alejandro AO), память в Hermes разделена на два типа:

1.  **Внутренняя память:** включает в себя историю текущих сессий и специальные файлы конфигурации, такие как `soul.md` (описание личности агента) и `user.md` (информация о пользователе) [03:07].
2.  **Внешняя память:** поддержка интеграций с такими сервисами, как Mem0 или SuperMemory [02:53].

## 🔄 Агентский цикл: как Hermes обрабатывает сообщения
[[JUMP:03:49]]

Цикл работы Hermes активируется при каждом входящем сообщении пользователя и состоит из строго последовательных этапов [04:26]:

1.  **Сбор контекста:** Агент объединяет системные промпты, файлы личности, информацию о пользователе и историю переписки.
2.  **Обращение к LLM:** Сформированный контекст отправляется в большую языковую модель.
3.  **Вызов инструментов:** Если модель решает, что для ответа ей нужны внешние данные (например, поиск в интернете или запись файла), она инициирует вызов соответствующего инструмента [06:02]. Результат выполнения возвращается в модель для формирования финального ответа.
4.  **Финальный ответ:** Пользователь получает результат работы.
5.  **Обновление памяти (Memory Update):** Это критически важный этап, на котором агент анализирует прошедшее взаимодействие [06:50]. Если в ходе беседы появилась важная информация, она записывается в память, чтобы агент мог «учиться» и совершенствоваться при каждом использовании [07:15].

## 🧠 Формирование контекста и «душа» агента
[[JUMP:07:31]]

Контекст в Hermes строится на основе простых текстовых файлов в формате Markdown, что упрощает их редактирование человеком.

Основные файлы контекста:

*   **soul.md:** Описывает характер, тон общения и цели агента [08:20]. Если файл пуст, Hermes использует стандартный системный промпт, представляющий его как виртуального помощника [09:12].
*   **user.md:** Файл, который Hermes обновляет автоматически. В него заносится всё, что агент узнаёт о пользователе (профессия, предпочтения, текущие задачи) [10:01].
*   **memory.md:** Сюда записываются произвольные факты, рабочие процессы и полезные сведения, извлечённые из диалогов [10:42].

Помимо этих файлов, в контекст включаются описания доступных навыков и инструментов, а также история сообщений [12:38]. Если настроена внешняя память, в контекст добавляются выжимки из прошлых сессий, релевантные текущей теме [12:00].

## 📉 Сжатие контекста: борьба с ограничениями токенов
[[JUMP:13:28]]

Поскольку окна контекста LLM ограничены, в Hermes реализован механизм автоматического сжатия истории сообщений. По умолчанию сжатие срабатывает, когда занято 50% доступного окна контекста (это значение можно настроить до 70–80% для моделей с малым объёмом памяти) [14:21].

Проверка необходимости сжатия происходит в два момента:

*   Перед каждым обращением к модели.
*   При возникновении ошибки переполнения контекста [15:37].

Интересна методика оценки объёма данных: для первого сообщения агент использует упрощённую формулу (количество символов, делённое на 4), а для последующих — точные данные об использовании токенов (usage parameters), возвращаемые API модели [17:00].

При сжатии используется специальный промпт, который заставляет LLM структурировать итог беседы по разделам: глобальная цель, ограничения, выполненные действия, текущее состояние и ключевые решения [19:02]. Алехандро АО (Alejandro AO) отмечает, что этот подход гораздо богаче и эффективнее, чем в более минималистичных агентах [19:42].

## 🌐 Шлюз (Gateway): связь с внешним миром
[[JUMP:19:59]]

Шлюз — это асинхронная система на базе `asyncio`, которая позволяет Hermes взаимодействовать с Telegram, Discord, Slack и другими сервисами [21:52].

Особенности работы шлюза:

*   **Независимая конфигурация:** Каждая интеграция настраивается отдельно (например, через команду `hermes setup gateway telegram`) [23:11].
*   **Использование SQLite:** Поскольку мессенджеры часто присылают только одно последнее сообщение, шлюз обращается к локальной базе данных SQLite для восстановления истории всей переписки по ID сессии [25:35].
*   **Менеджер сессий:** Управляет приоритетами сообщений. Если пользователь пишет новое сообщение, когда агент ещё занят предыдущим, система решает, нужно ли прервать работу, поставить сообщение в очередь или изменить направление мыслей (steer) [26:49].

## 💾 Три уровня памяти Hermes
[[JUMP:28:00]]

Алехандро АО (Alejandro AO) выделяет три уровня хранения информации в системе:

1.  **Markdown-файлы:** Статичные данные о личности и пользователе [28:35].
2.  **База SQLite:** Хранит полные транскрипты всех сессий. В базе также есть отдельная таблица с чистым текстом (bare text) для быстрого поиска по сходству [30:40].
3.  **Внешние провайдеры:** Поддержка специализированных сервисов (Mem0, Honcho, SuperMemory), которые используют векторный поиск или LLM для извлечения нужных воспоминаний [31:25].

Важный нюанс работы с внешней памятью: запрос к ней происходит не перед первым сообщением, а сразу после него [33:03]. Агент сначала анализирует текущий вопрос пользователя, а затем «вспоминает» релевантные детали из прошлого для использования в последующих ответах. Это имитирует человеческое поведение, когда мы сначала реагируем на вопрос, а потом начинаем глубже копаться в памяти [33:46].

## ⏰ Cron-задачи: автоматизация по расписанию
[[JUMP:34:37]]

Hermes поддерживает выполнение периодических задач (Cron jobs), таких как рассылка ежедневных новостей или еженедельных отчётов [35:54].

Техническая реализация:

*   Это не системный процесс ОС, а внутренний цикл Hermes, который «тикает» (функция `tick`) каждую минуту [35:25].
*   Задачи хранятся в файле `jobs.json` в директории `.hermes/cron/` [37:23].
*   Результаты каждого запуска сохраняются в формате Markdown в папке `output` [38:07].
*   Уведомления о выполнении задач приходят на «домашний» шлюз пользователя (например, в его личный Telegram-аккаунт), указанный при настройке [39:10].

В завершение Алехандро АО (Alejandro AO) подчеркнул, что Hermes — это пример того, как сочетание простых текстовых файлов и продуманного цикла обработки сообщений позволяет создать мощного и обучаемого ИИ-ассистента [39:51].