Hermes Agent — агент, который обучается с вами, Дам попробовать

от автора

Начнем с основ. Современные ИИ-агенты кардинально отличаются от классических чат-ботов. Если обычный бот просто реагирует на текстовые запросы, то агент способен самостоятельно ставить цели, планировать последовательность действий, работать с файлами, браузером, API и выполнять сложные многоэтапные задачи.

Такие агенты чаще всего разворачивают на сервере или в контейнере, где у них есть доступ к необходимому окружению, и интегрируют в привычные пользователям мессенджеры: Telegram, WhatsApp, Discord, iMessage и другие. Именно это сочетание — «личный помощник, живущий в твоих любимых приложениях» — сейчас и задаёт тренд.


Всем известный OpenClaw

Если вы хоть немного следили за темой локальных агентов в 2025 году, то наверняка встречали название OpenClaw. Этот проект стал настоящим прорывом и во многом определил направление развития всей индустрии.

Как сказано в самом репозитории:

OpenClaw — это личный ИИ-помощник, который работает на ваших собственных устройствах. Он отвечает вам в тех мессенджерах, которыми вы уже пользуетесь. Может говорить и слушать на macOS, iOS и Android, а также отображать интерактивный Canvas, которым вы управляете. Gateway — это всего лишь интерфейс управления, а сам продукт — это помощник.


Hermes Agent

Hermes Agent — это проект от Nous Research, который многие сейчас считают одним из самых интересных агентов.

OpenClaw в первую очередь решил задачу агента в мессенджере, а Hermes решил проблему потери контекста и этой забывчивости.

Основные моменты, которые выделяют его среди остальных:

  • У него действительно хорошая долгосрочная память. 

  • Есть механизм рефлексии, после выполнения задачи он может проанализировать результат и сохранить полезный опыт в виде новых навыков.

  • Не привязан к одной модели или каким-то SDK

Из репы:

Это не coding copilot и не простой чат-бот. Это автономный агент, который живёт на твоём сервере, постепенно накапливает знания и со временем становится заметно полезнее.


Как работает память и рефлексия Hermes

Большинство современных агентов по-прежнему живут в рамках контекстного окна модели. Пока нужная информация помещается в историю сообщений, агент её помнит. Как только контекст заканчивается или начинается новая сессия — большая часть знаний теряется.

Hermes пытается решить эту проблему через систему долговременной памяти.

Память

Во время общения агент постоянно анализирует происходящее и выделяет факты, которые могут пригодиться позже.

Например:

  • предпочтения пользователя

  • особенности инфраструктуры

  • долгосрочные задачи

  • полезные решения найденных проблем

  • результаты прошлых экспериментов

Такие записи сохраняются отдельно от истории чата и могут быть извлечены спустя дни или недели после первоначального разговора.

Поэтому агент способен отвечать не только на основании последних сообщений, но и учитывать события из предыдущих сессий.

Рефлексия

Ещё интереснее устроен механизм рефлексии.

После завершения некоторых задач Hermes может запускать дополнительный этап анализа своей работы. На этом этапе агент оценивает:

  • была ли задача решена успешно

  • какие действия оказались полезными

  • какие ошибки были допущены

  • можно ли сформулировать новое правило или навык для будущих задач

Результатом такого анализа становятся навыки (skills) — структурированные инструкции, которые агент может использовать в дальнейшем.


Демо

Когда я достаточно наигрался с Hermes Agent локально, захотелось дать возможность другим людям тоже попробовать его вживую. Из коробки проект представляет собой CLI-инструмент для одного пользователя, поэтому я решил сделать публичного Telegram-бота.

Получился Hermes Agent | На Дерево — обычный Telegram-бот, за которым стоит полноценный Hermes Agent. Требование лишь одно — подписаться на мой канал) (Ну а что, баш на баш)


Как устроен бот внутри

Я не стал городить отдельного бота. Вместо этого написал небольшой плагин для Hermes Gateway — рантайма, который отвечает за общение с мессенджерами.

Плагин цепляется к внутренним событиям (хукам) Hermes и добавляет всю нужную бизнес-логику: проверку подписки, лимиты, rate limit и сбор статистики. Благодаря этому всё работает в рамках одного процесса.

Плагин подписывается на четыре основных хука:

  • pre_gateway_dispatch — здесь происходит основная проверка: подписка на канал, остаток лимита запросов, антиспам (6 сообщений в минуту) и обработка команд.

  • pre_llm_call — сбрасывает и финализирует прерванные ходы агента.

  • post_api_request — собирает реальные данные по использованию токенов после каждого запроса.

  • post_llm_call — завершает ход, записывает данные в SQLite и обновляет лимит пользователя.

Главные ограничения

С самого начала было понятно: если дать людям полный доступ, обязательно найдётся тот, кто начнёт специально ломать систему. Поэтому пришлось ввести довольно жёсткие рамки:

  • Обязательная подписка на канал. Без неё сообщения просто не доходят до агента.

  • Лимит в 30 запросов на пользователя.

  • Запрет на работу в группах — только личные сообщения.

  • Отключены терминал, браузер и некоторые инструменты поиска по истории. (Хотя он все равно может ходить по сайтам, но слишком топорно)

  • Сильно урезан набор команд. Пользователь видит только самые необходимые: /start, /status и /help.

  • И самое главное, полная изоляция пользователей. Каждый работает в своей собственной сессии с отдельной памятью, но при этом в одном боте

Что сделал для демо

Изоляция пользователей

Hermes изначально рассчитан на одного человека. Чтобы несколько пользователей не пересекались, пришлось внедрить многослойную изоляцию:

  • Каждая сессия привязана к telegram_id.

  • Патчи на memory_tool.py, session_search_tool.py и hermes_state.py — память хранится в отдельных папках memories/{user_id}/, поиск по истории и сессиям тоже фильтруется по пользователю.

  • И еще глобальная память отключена, в SOUL.md добавлены правила запрещающие ссылаться на чужие разговоры.

Прерванные ходы

Агент часто делает несколько инструментных вызовов внутри одного хода. Если пользователь написал /stop или соединение оборвалось — ход мог остаться незавершённым и данные терялись.

Решение: в pre_llm_call проверяем наличие незавершённого хода и принудительно закрываем его с меткой flush_interrupted.

Меню команд в Telegram

Hermes Gateway при каждом запуске регистрирует больше 30 своих команд. Многие из них раскрывают внутреннюю кухню или просто не нужны.

Чтобы не форкать проект, написал скрипт, который каждые 30 секунд проверяет текущее меню через Telegram API и обрезает его до трёх нужных команд. Решение грубоватое, но надёжное.

Демо-режим

В конфиге жёстко отключены опасные toolsetы и возможности, которые могли бы сломать все нахрен. Многие ограничения вводились именно для того, чтобы защитить систему от целенаправленного исследования на прочность. Хотя наверняка кто-то все равно попытается заговнячить все.


Попробовать

Как и обещал, даю ссылочку попробовать без смс и регистрации: Hermes Agent | На Дерево

ссылка на оригинал статьи https://habr.com/ru/articles/1041874/