Почему Hermes - это агент с долговременной памятью, а не просто чат-бот
Классические LLM-чаты теряют контекст при перезапуске сессии. Вы начинаете диалог заново, объясняете задачу с нуля, повторяете предпочтения. Hermes от Nous Research решает эту проблему через три механизма самообучения: файловую память для хранения фактов, автоматическую генерацию навыков и полнотекстовый поиск по всей истории диалогов. Агент запоминает среду, адаптируется к пользователю и восстанавливает контекст даже недельной давности.
Архитектурно Hermes отличается от связки «LLM + векторная база» тем, что использует структурированные Markdown-файлы как долговременное хранилище. Это даёт прозрачность: вы видите, что именно агент запомнил, и можете корректировать память вручную. Для тех, кто проектирует собственных агентов, будет полезен разбор архитектуры самописного AI-агента с метриками latency, cost и reliability - там детально сравниваются подходы к управлению памятью.
Файловая память: MEMORY.md и USER.md как основа контекста
Hermes хранит два типа информации в отдельных файлах. MEMORY.md содержит факты о среде: пути к проектам, конфигурации сервера, версии установленных пакетов, сетевые настройки. USER.md фиксирует предпочтения пользователя: любимый стиль кода, формат ответов, рабочие привычки, часто используемые команды.
Агент обновляет эти файлы автоматически в процессе взаимодействия. Вы сообщаете, что работаете над проектом на Python 3.12 с линтером ruff - запись появляется в MEMORY.md. Просите отвечать коротко, без маркдауна - правило фиксируется в USER.md. При следующем диалоге Hermes читает оба файла и восстанавливает контекст без повторных объяснений.
Пример содержимого MEMORY.md:
## Среда разработки
- Проект: api-gateway
- Язык: Rust 1.85
- Линтер: clippy
- Сервер: 192.168.1.15, порт 22
- Рабочая директория: /home/user/projects/api-gatewayПример USER.md:
## Предпочтения
- Отвечать без маркдауна
- Команды shell выводить в одну строку
- Не использовать эмодзи
- Перед выполнением опасных операций запрашивать подтверждениеТакой подход даёт детерминированность: память не зависит от эмбеддингов и векторного поиска, которые могут выдавать размытые результаты. Файлы читаются целиком при старте сессии, и агент точно знает контекст.
Самообучение через навыки: формат SKILL.md
Когда Hermes успешно выполняет последовательность действий, он анализирует её и создаёт переиспользуемый навык в формате SKILL.md. Это ключевой механизм расширения возможностей без ручного программирования.
Процесс выглядит так. Вы просите агента собрать сводку новостей по AI за день: найти пять источников, извлечь заголовки, сгруппировать по темам, отправить в Telegram. Hermes выполняет задачу, фиксирует шаги и формирует навык. В следующий раз вы говорите «сводка новостей», и агент применяет сохранённый SKILL.md без повторного уточнения деталей.
Пример простого навыка:
# SKILL: daily-ai-news
## Триггер
Запрос на сводку новостей по AI
## Шаги
1. Поиск по ключевым словам: LLM, transformer, agent, open-source AI
2. Извлечение заголовков и первых абзацев
3. Группировка: модели, инструменты, исследования
4. Формирование сообщения с тремя категориями
5. Отправка в Telegram через бота
## Параметры
- Источники: arxiv, hackernews, reddit/r/MachineLearning
- Время: сегодня, 24 часа
- Формат: маркдаун, не более 10 новостейНавыки накапливаются, и агент со временем обрастает библиотекой автоматизаций под конкретного пользователя. Это принципиально иной подход по сравнению с промпт-инжинирингом: вы не пишете инструкции, а обучаете агента через демонстрацию.
Полнотекстовый поиск по истории сессий
Все диалоги с Hermes индексируются. Агент может искать по ним релевантную информацию, даже если обсуждение происходило неделю или месяц назад. Вы спрашиваете: «Помнишь, мы настраивали деплой через Docker Compose, какой порт тогда использовали для мониторинга?». Hermes находит сессию, извлекает номер порта и отвечает.
Поиск работает на уровне полнотекстового индекса, а не эмбеддингов. Это даёт точное совпадение по ключевым словам и фразам. Индекс обновляется после каждой сессии, поэтому история доступна сразу. Механизм решает проблему «забывчивости», характерную для stateless чат-ботов, и позволяет агенту выступать в роли внешней памяти разработчика.
Инструментарий агента: что Hermes умеет без дополнительной настройки
Hermes поставляется с набором встроенных инструментов, которые покрывают основные сценарии автоматизации. В отличие от фреймворков, где каждый инструмент нужно подключать отдельно, здесь всё работает из коробки после указания API-ключей в переменных окружения. Для понимания более широкого контекста агентных архитектур рекомендую технический обзор Google Antigravity - там разбираются принципы мультиагентной оркестровки, применимые и к Hermes.
Работа с кодом и консолью
Агент генерирует код на Python, JavaScript, Rust, Bash и других языках по текстовому описанию. Вы пишете: «Скрипт для парсинга логов nginx, подсчёт количества 500-х ошибок за последний час». Hermes создаёт скрипт, предлагает запустить его и возвращает результат.
Консольные команды выполняются в изолированном окружении. Агент проверяет статус сервера, устанавливает пакеты, перезапускает службы. Опасные операции требуют подтверждения: перед выполнением rm -rf или shutdown Hermes запросит явное согласие. Это настраивается в USER.md.
Пример сессии:
Пользователь: Проверь, сколько места на диске и какие процессы жрут CPU
Агент: Выполняю df -h и top -bn1 | head -20
Результат: /dev/sda1 занят на 78%, процесс python3 с PID 4521 потребляет 94% CPU
Рекомендация: процесс похож на утечку памяти, показать последние логи?Поиск в интернете и планирование задач
Hermes использует поисковые API для сбора данных. Вы указываете тему, и агент находит релевантные источники, извлекает ключевую информацию, суммаризирует. Планировщик cron позволяет автоматизировать повторяющиеся задачи: ежедневный мониторинг новостей, проверка статуса сервисов, сбор метрик.
Пример cron-задачи: каждое утро в 9:00 агент ищет новости по ключевым словам «open-source LLM», «AI regulation», «NVIDIA GPU», формирует сводку из пяти пунктов и отправляет в Telegram. Настройка делается одной командой:
schedule daily 09:00 "Поиск новостей по AI, топ-5, отправить в Telegram"Сабагенты и MCP-серверы
Для сложных задач Hermes создаёт сабагентов - мини-агентов, которые решают подзадачи параллельно. Вы говорите: «Проанализируй три репозитория на GitHub и сравни архитектуру». Агент запускает три сабагента, каждый клонирует и изучает свой репозиторий, затем агрегирует результаты.
MCP (Model Context Protocol) - стандарт для подключения внешних инструментов и источников данных. Hermes поддерживает MCP-серверы, что позволяет расширять его возможности без модификации кода агента. Подключили MCP-сервер для работы с базой данных - агент научился выполнять SQL-запросы. Добавили сервер для Jira - получили интеграцию с таск-трекером. Архитектура MCP детально разбирается в кейсе Apollo с Deep Agents и LangSmith, где headless-режим через MCP используют более 40 000 команд.
Пошаговое развертывание Hermes на удаленном сервере
Развернуть Hermes можно на VPS с Ubuntu 22.04 или 24.04. Минимальная конфигурация: 2 vCPU, 4 ГБ RAM, 20 ГБ SSD. Агент работает как фоновый процесс, взаимодействие - через Telegram-бота. Ниже инструкция от установки зависимостей до первого сообщения в мессенджере.
Системные требования и установка зависимостей
| Компонент | Версия | Назначение |
|---|---|---|
| Node.js | 22.x LTS | Среда выполнения агента |
| Rust | stable (1.80+) | Сборка Tauri-компонентов |
| Tauri dependencies | webkit2gtk-4.1, libgtk-3, libayatana-appindicator3 | Системные библиотеки для desktop-режима |
| WebView2 | Предустановлен в Windows; на Linux - через webkit2gtk | Рендеринг интерфейса |
Установка на Ubuntu/Debian одной командой:
sudo apt update && sudo apt install -y curl build-essential libwebkit2gtk-4.1-dev libgtk-3-dev libayatana-appindicator3-dev && curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash - && sudo apt install -y nodejs && curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y && source "$HOME/.cargo/env"Проверьте версии:
node --version # должно быть v22.x
rustc --version # должно быть 1.80 или вышеНастройка переменных окружения
Создайте файл .env в корне проекта. Обязательные переменные:
# LLM API
LLM_API_KEY=sk-your-openai-or-anthropic-key
LLM_MODEL=claude-sonnet-4-20250514
LLM_PROVIDER=anthropic
# Telegram
TELEGRAM_BOT_TOKEN=123456:ABC-DEF1234ghikl-zyx57W2v1u123ew11
TELEGRAM_ALLOWED_USERS=your_telegram_user_id
# Память
MEMORY_PATH=./memory
USER_MD_PATH=./memory/USER.md
MEMORY_MD_PATH=./memory/MEMORY.md
# Дополнительно
SEARCH_API_KEY=your-serpapi-or-brave-key
LOG_LEVEL=infoТокен Telegram-бота получите у @BotFather: команда /newbot, выбор имени, получение токена. ID пользователя узнайте у @userinfobot. Переменная TELEGRAM_ALLOWED_USERS ограничивает доступ к агенту - указывайте свой ID для безопасности.
Запуск агента и подключение Telegram-бота
Клонирование репозитория и сборка:
git clone https://github.com/NousResearch/hermes-agent.git
cd hermes-agent
npm install
npm run buildПервый запуск:
npm startАгент запустится в фоновом режиме и подключится к Telegram. Отправьте тестовое сообщение боту: «Привет, проверка связи». Hermes ответит и создаст файлы MEMORY.md и USER.md в директории ./memory.
Для продакшен-запуска используйте systemd-сервис:
[Unit]
Description=Hermes AI Agent
After=network.target
[Service]
Type=simple
User=ubuntu
WorkingDirectory=/home/ubuntu/hermes-agent
EnvironmentFile=/home/ubuntu/hermes-agent/.env
ExecStart=/usr/bin/npm start
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.targetСохраните файл как /etc/systemd/system/hermes.service, выполните sudo systemctl enable --now hermes. Агент будет автоматически перезапускаться при падении и после перезагрузки сервера.
Типичные проблемы первого запуска и их решение
При развертывании Hermes возникают ошибки, связанные с зависимостями Tauri, версиями Node.js и блокировками Telegram API. Ниже - симптомы и способы исправления.
Ошибки сборки и зависимостей
Симптом: error: linking with `cc` failed: exit status: 1 и упоминание webkit2gtk.
Причина: отсутствуют системные библиотеки для Tauri. На Ubuntu 24.04 пакет называется libwebkit2gtk-4.1-dev, на 22.04 - libwebkit2gtk-4.0-dev.
Решение: установите пакеты командой из раздела выше. Если ошибка сохраняется, проверьте архитектуру пакетов: dpkg -l | grep webkit.
Симптом: node: /lib/x86_64-linux-gnu/libc.so.6: version 'GLIBC_2.28' not found.
Причина: версия Node.js несовместима с системной glibc.
Решение: используйте Node.js 22 LTS, установленный через официальный репозиторий NodeSource, а не через snap или системный пакетный менеджер.
Проблемы с Telegram-интеграцией
Симптом: бот не отвечает на сообщения, в логах ошибки подключения к Telegram API.
Причина: на территории РФ и в некоторых других регионах Telegram API блокируется через DPI. Публичные MTProto-ключи живут 2-3 часа, после чего соединение обрывается.
Решение: используйте полноценный VPN с раздельным туннелем (split tunneling), направляя через него только трафик до Telegram API. Альтернатива - SOCKS5-прокси с параметром TELEGRAM_PROXY=socks5://user:pass@host:port в .env. Без стабильного канала агент будет терять связь каждые несколько часов.
Симптом: команды в меню бота отображаются на английском, хотя язык интерфейса изменён.
Причина: система i18n в Hermes не покрывает описания команд Telegram BotCommand. Это известное ограничение текущей версии.
Решение: временное - смириться с английскими описаниями. Разработчики обсуждают два варианта исправления: добавление описаний в locale-файлы или использование параметра language_code из Telegram API для автоматического переключения. В ближайших релизах проблема должна быть закрыта.
Hermes в действии: сценарии использования и первые шаги
После запуска агента начните с заполнения MEMORY.md и USER.md. Это базовое обучение, которое определит поведение Hermes. В MEMORY.md опишите среду: операционную систему, основные проекты, пути к репозиториям, серверы. В USER.md зафиксируйте предпочтения по стилю ответов и правила безопасности.
Три реалистичных сценария после настройки:
Персональный ассистент разработчика. Вы работаете над микросервисом на Go. Hermes помнит структуру проекта, находит документацию по нужным библиотекам, генерирует boilerplate-код, запускает тесты, проверяет покрытие. Вы пишете: «Добавь эндпоинт /health с проверкой подключения к Redis», агент создаёт код, тесты и делает коммит.
Автоматический исследователь. Агент собирает информацию по заданной теме, фильтрует дубликаты, группирует по подтемам, формирует структурированный отчёт. Полезно для конкурентного анализа, обзора научных статей, мониторинга технологических трендов. Навык daily-ai-news из примера выше - частный случай этого сценария.
Менеджер задач с cron. Hermes отслеживает дедлайны, присылает напоминания, проверяет статус серверов по расписанию. Задача «каждый понедельник в 10:00 собирай статистику по ответам API за неделю и присылай график» настраивается одной командой. Агент сам выполнит запросы к базе, построит визуализацию и отправит в Telegram.
Для тех, кто рассматривает агентные архитектуры в более широком контексте, полезен обзор Google Antigravity 2.0 - десктопного приложения с автономными агентами и планировщиком Scheduled Tasks. Сравнение подходов поможет выбрать инструмент под конкретные задачи. Отдельного внимания заслуживает разбор двух кейсов Vecmory, где память агента самостоятельно отменяла ошибочные решения - механизм, концептуально близкий к тому, как Hermes использует MEMORY.md для самокоррекции.