Архитектура и эволюция Hermes Agent: Переход от сессионных ИИ-инструментов к автономным цифровым сущностям с персистентной памятью

Архитектура и эволюция Hermes Agent: Переход от сессионных ИИ-инструментов к автономным цифровым сущностям с персистентной памятью

Эпистемологический сдвиг в проектировании систем искусственного интеллекта

За последние годы рынок систем искусственного интеллекта прошел стремительный эволюционный путь, пережив ряд глубоких метаморфоз. Изначальная парадигма взаимодействия базировалась на концепции диалоговых окон и чат-ботов, которые служили универсальными интерфейсами для вопросно-ответных систем. Впоследствии индустрия перешла к моделям специализированных ассистентов (copilots), глубоко интегрированных в среды разработки программного обеспечения и офисные приложения. Следующим этапом стало появление агентных фреймворков, способных к автономному рассуждению, написанию программного кода и автоматизации многошаговых задач. Однако, несмотря на впечатляющий рост вычислительных возможностей и усложнение алгоритмов логического вывода, подавляющее большинство этих систем продолжало страдать от фундаментального архитектурного ограничения, которое можно охарактеризовать как тяжелую форму сессионной амнезии.

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

На фоне этого системного кризиса проект Hermes Agent, выпущенный исследовательским центром Nous Research в феврале 2026 года, представляет собой не просто очередную итерацию агентного фреймворка, а фундаментальную попытку переосмыслить саму природу взаимодействия вычислительных систем и человека. Создатели проекта сформулировали амбициозную и одновременно предельно ясную инженерную цель: агент должен становиться экспоненциально умнее по мере его использования, накапливая уникальный профессиональный опыт, а не начинать свой жизненный цикл заново после каждого перезапуска терминала или обновления страницы браузера.

В отличие от традиционных инструментов, существующих исключительно внутри пользовательского интерфейса, Hermes спроектирован как долгоживущая цифровая сущность, обладающая сложной топологией памяти, механизмами саморефлексии и способностью к процедурному самообучению. Данный отчет представляет собой исчерпывающий технический анализ архитектуры Hermes Agent, охватывающий топологию его развертывания, многоуровневую систему персистентной памяти, механизмы прогрессивного формирования навыков, алгоритмы семантической компрессии контекста, методы строгой оркестрации субагентов, глубокую интеграцию протокола Model Context Protocol (MCP) и технологии эволюционного самообучения на базе генетических алгоритмов.

Топология развертывания и концепция ИИ как системной службы

Большинство современных инструментов на базе искусственного интеллекта жестко привязаны к графическим интерфейсам. Они функционируют в окне браузера, внутри интегрированной среды разработки (IDE) или в виде обособленного локального приложения. Hermes Agent предлагает радикальный архитектурный сдвиг, отказываясь от модели временного собеседника в пользу парадигмы постоянно работающего системного сервиса (daemon), функционирующего на уровне операционной системы.

Вместо локального клиентского приложения пользователь получает в свое распоряжение постоянного цифрового сотрудника, который запускается на виртуальном выделенном сервере (VPS), домашнем кластере графических процессоров или в бессерверной (serverless) облачной инфраструктуре. Этот архитектурный подход гарантирует, что агент продолжает существовать, выполнять фоновые задачи и анализировать данные независимо от того, активно ли устройство самого пользователя. Процесс взаимодействия децентрализуется благодаря мощному компоненту шлюза (Gateway), который связывает ядро агента с множественными внешними интерфейсами. Агент становится одновременно доступен через Telegram, Discord, Slack, WhatsApp, Signal, электронную почту и классическую командную строку (CLI). Такая омниканальность позволяет пользователю инициировать сложную аналитическую задачу с рабочего ноутбука через терминал, а результаты выполнения или запросы на уточнение получить спустя несколько часов в виде сообщения в защищенном мессенджере на мобильном устройстве.

Инфраструктурная гибкость Hermes Agent обеспечивается поддержкой шести различных бэкендов выполнения терминальных команд, каждый из которых предлагает свой уровень изоляции и безопасности. Локальный бэкенд выполняет команды непосредственно на хостовой машине, что обеспечивает максимальную производительность, но несет риски безопасности при исполнении сгенерированного ИИ кода. Для минимизации этих рисков система поддерживает выполнение внутри Docker-контейнеров. В режиме Docker-бэкенда агент запускается на хосте, но каждое действие, требующее взаимодействия с операционной системой, транслируется внутрь единого песочного (sandbox) контейнера. Этот контейнер обладает свойством персистентности: он переживает отдельные вызовы инструментов, перезапуски контекста диалога и создание субагентов, сохраняя установленные зависимости и промежуточные файлы на протяжении всего жизненного цикла главного процесса Hermes.

Кроме того, система поддерживает работу через протокол SSH для управления удаленными машинами, а также интеграцию с современными бессерверными платформами, такими как Singularity, Modal и Daytona. Использование платформ Modal и Daytona открывает доступ к механизмам бессерверной гибернации (serverless persistence). Вычислительная среда агента автоматически приостанавливает свою работу (засыпает) в периоды простоя, сокращая потребление дорогостоящих вычислительных ресурсов практически до нуля, и мгновенно пробуждается по сигналу от шлюза при поступлении нового сообщения от пользователя или наступлении события по расписанию.

Возможности автономного планирования реализуются через интеграцию планировщика задач (cron), который управляется агентом посредством обработки естественного языка. Пользователь может сформулировать задачу в свободной форме, поручив системе ежедневно в заданное время агрегировать логи серверов, анализировать новостные ленты по определенной тематике или создавать резервные копии баз данных. Эти задачи выполняются в автоматическом режиме без вмешательства человека, а результаты доставляются через сконфигурированные каналы связи (например, в виде PDF-отчета в Telegram).

Для обеспечения доступа к вычислительным мощностям нейросетей, разработчики из Nous Research внедрили гибридную систему авторизации. Пользователи могут напрямую подключать ключи от платформ маршрутизации, таких как OpenRouter, или использовать локальные открытые модели (например, Nemotron-Cascade 2 30B), что особенно актуально для обработки конфиденциальных корпоративных данных без риска их утечки в сторонние облака. В качестве альтернативы предлагается подписка Nous Portal, которая устраняет необходимость администрирования десятков разрозненных ключей доступа. Nous Portal предоставляет единый OAuth-шлюз, обеспечивающий доступ к более чем 300 языковым моделям, а также агрегирующий набор критически важных инструментов: веб-поиск через Firecrawl, генерацию изображений через FAL, высококачественный синтез речи и облачную автоматизацию браузеров. В совокупности эти архитектурные решения превращают агента из простого скрипта в своеобразную ИИ-операционную систему, поверх которой конструируются комплексные, долгоживущие рабочие процессы.

Многоуровневая архитектура памяти: От декларативных фактов к глубокому контексту

Фундаментальной проблемой любых систем, базирующихся на больших языковых моделях (LLM), является строгое ограничение размера контекстного окна. Традиционные подходы к решению этой проблемы сводятся либо к линейному усечению (удалению старых сообщений из истории диалога), либо к массивной векторизации всего пула данных с последующим поиском по сходству (RAG). Оба подхода обладают критическими недостатками: первый ведет к потере важного исторического контекста, второй часто страдает от галлюцинаций из-за вырванных из контекста кусков информации. Архитектура памяти Hermes Agent решает эту задачу с помощью элегантной многоуровневой системы, сочетающей жестко лимитированные декларативные файлы локального хранилища, семантический полнотекстовый поиск по архиву прошлых сессий и внешние плагины для сложного диалектического рассуждения.

Локальные хранилища состояний: Механика MEMORY.md и USER.md

Базовый, наиболее критичный уровень персистентной памяти агента реализован посредством двух локальных файлов разметки Markdown, которые сохраняются на жестком диске в директории ~/.hermes/memories/. Эти файлы служат долгосрочным хранилищем фактуальных знаний системы и спроектированы таким образом, чтобы агент всегда имел к ним мгновенный доступ без необходимости инициировать поисковые запросы. На старте каждой новой пользовательской сессии содержимое этих файлов извлекается с диска и внедряется непосредственно в системный промпт большой языковой модели.

Ключевой инновацией здесь является использование паттерна «замороженного снимка» (frozen snapshot). Текст памяти, внедренный в системный промпт на старте, остается абсолютно неизменным на протяжении всей текущей сессии диалога. Если бы агент обновлял системный промпт при каждом малейшем изменении в своей памяти внутри текущего окна общения, система префиксного кэширования (prefix caching), предоставляемая провайдерами моделей (такими как Anthropic), непрерывно сбрасывалась бы. Это привело бы к катастрофическому экспоненциальному росту стоимости токенов и неприемлемым задержкам ответа. Благодаря паттерну замороженного снимка, любые изменения, которые агент вносит в свою базу знаний в ходе диалога, немедленно записываются на физический диск, но фактически вступают в силу и становятся видимыми для модели только при инициализации следующей сессии. Это элегантное инженерное решение позволяет совместить долгосрочное обучение с максимальной экономической эффективностью инференса.

Для предотвращения неконтролируемого разрастания системного промпта (prompt bloat) и деградации качества логического вывода, система накладывает на файлы памяти предельно жесткие ограничения по объему, которые агент обязан соблюдать.

Файл хранилищаСтрогий лимит символовПримерная емкостьНазначение и типичное содержимое хранилища
MEMORY.md2,200 символов~800 токенов (8-15 записей)

Личные заметки агента об операционном окружении. Включает факты о хостовой ОС (наличие утилит Docker, Podman), конвенциях проекта (версии языков, настройки линтеров), обнаруженных программных ошибках, специфических системных обходных путях и хронологии успешно завершенных масштабных задач.

USER.md1,375 символов~500 токенов (5-10 записей)

Динамический профиль пользователя. Фиксирует имя, должностную роль, часовой пояс, коммуникативные предпочтения (например, требование лаконичных ответов), технический бэкграунд, профессиональные привычки, а также жесткие ограничения (pet peeves), которых агент должен избегать при генерации ответов.

Инструментарий агента по управлению этими файлами реализован через специализированную внутреннюю функцию memory. Модель не имеет встроенного действия read (чтение) для этого инструмента, так как все актуальные данные уже присутствуют в ее контексте. Вместо этого агент оперирует тремя детерминированными действиями: add (добавление новой записи), replace (замена существующей записи) и remove (удаление нерелевантной информации). При выполнении операций модификации или удаления алгоритм использует механизм поиска по подстроке (old_text). Это означает, что агенту достаточно предоставить лишь короткую уникальную фразу для идентификации нужного фрагмента, что существенно снижает нагрузку на генерацию токенов и уменьшает вероятность ошибки.

Управление емкостью хранилищ требует от агента проявления аналитических способностей. При достижении 80% заполнения лимита символов, инструмент memory начинает возвращать предупреждения. В ответ на это агент должен проактивно инициировать процедуру семантической консолидации: анализировать множественные разрозненные факты и переписывать их в виде компактных, информационно плотных параграфов, удаляя устаревшие данные и тривиальную информацию. Архитектура также включает многоуровневую систему безопасности. Поскольку данные из памяти инъецируются непосредственно в системный промпт (зона наивысших привилегий LLM), каждый акт сохранения проходит через строгий конвейер сканирования. Система автоматически блокирует сохранение точных дубликатов, выявляет попытки внедрения вредоносных инструкций (prompt injections), пресекает эксфильтрацию учетных данных (например, паролей и приватных ключей) и очищает текст от невидимых управляющих символов Unicode, которые могут нарушить парсинг промпта.

Семантический поиск и долгосрочное архивирование сессий

Декларативные файлы покрывают потребность в базовом контексте, но не могут вместить всю полноту исторических взаимодействий. Для решения этой задачи Hermes Agent ведет непрерывное архивирование всех диалогов в локальной реляционной базе данных SQLite, расположенной в файле state.db. Доступ к этому огромному массиву исторических решений, программного кода и логов терминала обеспечивается через внутренний инструмент агента session_search.

Этот инструмент использует расширение FTS5 (Full-Text Search) для SQLite, позволяя агенту мгновенно находить упоминания специфических терминов, библиотек или принятых ранее архитектурных решений по всем когда-либо состоявшимся беседам. Важной деталью оптимизации, внедренной в версии 0.11, стала система автоматического самообслуживания базы данных. При каждом запуске шлюза система в фоновом режиме выполняет обрезку устаревших сессионных метаданных (auto-prune) и физическую дефрагментацию таблиц (vacuum), гарантируя, что база данных не разрастается до гигантских размеров и сохраняет высокую скорость отклика при полнотекстовых запросах агента.

Диалектическое рассуждение и провайдеры внешних модулей памяти

Архитектура памяти Hermes Agent не ограничивается локальными решениями и предоставляет API для подключения внешних систем через механизм плагинов провайдеров памяти (Memory Provider Plugins). Этот абстрактный слой позволяет исследователям и корпоративным пользователям бесшовно интегрировать сторонние графовые и векторные базы данных, заменяя или дополняя стандартные файлы MEMORY.md и USER.md. Поддерживаются такие решения, как Mem0, Hindsight, Holographic, RetainDB и Supermemory.

Особого внимания заслуживает интеграция системы Honcho — ИИ-нативного бэкенда, который привносит в работу агента совершенно новый когнитивный слой: диалектическое рассуждение и глубокое многоагентное моделирование пользователя. Если стандартная память Hermes управляется самим агентом через явные вызовы инструментов во время диалога, то Honcho функционирует преимущественно в фоновом асинхронном режиме.

Вместо сохранения атомарных фактов или пар «ключ-значение», Honcho поддерживает постоянно развивающуюся ментальную модель человека. После каждого обмена сообщениями (частота которых регулируется конфигурационным параметром dialecticCadence), система Honcho запускает собственную LLM для анализа состоявшегося диалога. Модель пытается извлечь скрытые паттерны: как пользователь принимает решения, какие архитектурные компромиссы он предпочитает, в чем заключаются его истинные долгосрочные цели и как эволюционирует его когнитивный стиль.

Это порождает концепцию «профилей пиров» (peer cards). В инфраструктуре Honcho общение рассматривается как взаимодействие равноправных сущностей (пиров) в рамках единого рабочего пространства (workspace). Пользователь всегда выступает как глобальный, единый пир. Однако, если человек использует профилирование Hermes (команду hermes profile create) для создания нескольких специализированных агентов — например, профиля строгого инженера-архитектора и профиля креативного копирайтера — Honcho создает для каждого из них отдельную идентичность AI-пира. Каждый такой агент строит свою собственную, независимую репрезентацию (peer card) об одном и том же пользователе, базируясь исключительно на специфике своего контекста общения. Таким образом, профиль инженера запоминает приверженность пользователя строгой типизации, в то время как профиль писателя фокусируется на его любви к сложным метафорам.

Honcho наделяет агента Hermes четырьмя специализированными инструментами для взаимодействия с этим сложным семантическим графом :

  • honcho_profile: Инструмент высокоскоростного (без вызовов LLM) извлечения структурированных данных из профиля пользователя (peer card), возвращающий кураторский набор ключевых фактов.
  • honcho_search: Семантический векторный поиск по массиву памяти с продвинутым ранжированием результатов по релевантности.
  • honcho_context: Инструмент диалектического рассуждения (Q&A). Вместо возврата сырых логов, агент может задать вопрос внутренней модели Honcho, которая синтезирует развернутый ответ на основе всей истории взаимодействий пользователя.
  • honcho_conclude: Механизм явной, принудительной записи критически важных выводов в долгосрочное хранилище, минуя асинхронный фоновый анализ.

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

Формирование цифровой идентичности: Метафизика файла SOUL.md

Интеллектуальная система, способная к обучению и накоплению опыта, нуждается в стабильном ядре — системе координат, определяющей ее поведенческие границы и характер. Большинство современных ИИ-продуктов жестко зашивают этот характер в скрытые системные промпты, недоступные для модификации пользователем. Архитектура Hermes Agent полностью демократизирует этот аспект, делегируя контроль над личностью агента файлу конфигурации SOUL.md.

Файл SOUL.md является первичной, фундаментальной идентичностью экземпляра Hermes. На этапе конструирования контекста для языковой модели, содержимое этого файла помещается в самую критичную позицию — первый слот (slot #1) системного промпта, предшествуя всем остальным инструкциям, описаниям инструментов и файлам памяти.

Разработчики строго разделяют концепции памяти и идентичности. Если MEMORY.md предназначен для хранения меняющихся фактов об окружении и проектах, то SOUL.md описывает исключительно мета-уровень: как агент должен мыслить, какую стилистику речи использовать и какие этические или профессиональные ограничения соблюдать. Примеры хорошего наполнения SOUL.md включают директивы вроде «Оптимизируй ответы для максимальной правдивости, избегая перформативной скромности и псевдоуверенности», или «Никогда не предлагай использование облачных баз данных, мы работаем только on-premise».

Логика обработки этого файла обладает рядом важных инженерных особенностей. Файл должен располагаться в корневой директории инстанса HERMES_HOME (которая по умолчанию совпадает с ~/.hermes/, но динамически меняется при переключении профилей). Это означает, что SOUL.md не привязан к конкретному рабочему репозиторию (в отличие от локальных конфигураций IDE), а принадлежит самому агенту, обеспечивая стабильность его «голоса» вне зависимости от того, какой проект он в данный момент анализирует.

При инициализации сессии система считывает файл и внедряет его текст в промпт абсолютно «как есть» (verbatim). Ядро агента не оборачивает эти инструкции в собственные форматирующие теги или смягчающие указания, отдавая полный контроль над тональностью в руки пользователя. Перед инъекцией текст проходит обязательное сканирование на наличие паттернов промпт-инъекций и, при необходимости, принудительно усекается, если его размер угрожает вытеснить рабочие инструкции из окна контекста. Важно отметить, что SOUL.md рассматривается как неизменяемое ядро: система автоматически генерирует стартовый шаблон при первой установке, но в дальнейшем сам агент никогда не перезаписывает этот файл по собственной инициативе без явной директивы пользователя, гарантируя, что личность ИИ не деградирует в процессе неконтролируемого самообучения. При необходимости временно изменить поведение агента в рамках одной сессии, пользователи могут применять команду /personality, которая накладывает динамический оверлей (overlay) поверх глобального характера, не модифицируя сам файл на диске.

Процедурная память и открытый стандарт навыков (Skills System)

Если модификация памяти и идентичности отвечает за накопление фактуальных знаний, то самым революционным компонентом Hermes Agent является его способность к процедурному самообучению. Именно эта функция радикально выделяет систему на фоне конкурентов. Обычная память искусственного интеллекта способна запомнить, что когда-то была исправлена ошибка в конфигурации Kubernetes-кластера. Hermes идет дальше: он способен проанализировать последовательность своих действий, выделить ключевые паттерны успеха и превратить их в воспроизводимую инструкцию собственного авторства — Навык (Skill).

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

Архитектура стандарта agentskills.io и структура навыков

Система навыков Hermes полностью совместима с открытым стандартом agentskills.io, что делает созданные процедуры портируемыми и позволяет обмениваться ими внутри инженерного сообщества. Вся библиотека процедур хранится на диске в директории ~/.hermes/skills/ (и опционально в подключаемых внешних директориях, определенных в config.yaml).

Каждый навык физически представляет собой каталог, ядром которого является документ SKILL.md. Этот документ комбинирует машиночитаемые метаданные в формате YAML (Frontmatter) и человекочитаемые инструкции в формате Markdown. Метаданные YAML управляют поведением навыка в операционной среде. Они позволяют задавать жесткие платформенные ограничения (например, platforms: [macos, linux], чтобы предотвратить загрузку специфичных bash-скриптов на системах Windows), определять зависимости от конкретных инструментов (requires_toolsets), а также программировать сложную логику фоллбэков (fallback_for_toolsets). Например, локальный навык поиска информации может быть сконфигурирован так, чтобы активироваться только в том случае, если премиальный инструментарий веб-поиска недоступен. Тело документа Markdown содержит детальное руководство для самой языковой модели: триггерные условия (когда применять навык), строгую пошаговую процедуру выполнения (Procedure), список известных подводных камней и методов их обхода (Pitfalls), а также критерии верификации успешности результата (Verification).

Прогрессивное раскрытие информации и инструмент skill_manage

Масштабирование библиотеки навыков неминуемо ведет к проблеме исчерпания контекстного окна. Если бы агент загружал полный текст сотен файлов SKILL.md при каждом запросе, ресурсы LLM были бы потрачены впустую. Инженеры Nous Research решили эту проблему через паттерн прогрессивного раскрытия информации (progressive disclosure), который минимизирует потребление токенов на этапе принятия решений.

Процесс разделен на три уровня абстракции :

  1. Уровень 0 (Метаданные и индексация): На старте сессии агент загружает исключительно функцию skills_list(). Эта функция возвращает предельно сжатый массив данных (название, краткое описание, категория), который обходится системе всего примерно в 3,000 токенов, формируя карту доступных возможностей.
  2. Уровень 1 (Полное тело навыка): Сталкиваясь с задачей, агент сканирует карту и, выбрав релевантный навык, вызывает инструмент skill_view(name). Только в этот момент полные инструкции, описанные в Markdown, инъецируются в активный контекст рассуждения.
  3. Уровень 2 (Специфические референсы): Если процедура требует использования сложного вспомогательного кода (например, Python RPC модуля), агент делает дополнительный вызов skill_view(name, file_path) для извлечения узкоспециализированного скрипта из поддиректории навыка.

Помимо автоматического выбора моделью, архитектура позволяет пользователю активировать навыки в виде слэш-команд (например, /architecture-diagram или /github-pr-workflow), мгновенно переводя агента в специализированный режим работы.

Способность к самообучению реализуется через внутренний инструмент агента skill_manage. Агент автоматически инициирует создание или обновление навыка при выполнении сложных задач (потребовавших более 5 вызовов инструментов), при нахождении неочевидных обходных путей после серии неудач или после получения прямых корректирующих инструкций от пользователя. Инструмент поддерживает четыре базовых действия:

  • create: Синтез нового навыка и генерация файлов SKILL.md.
  • patch: Ювелирная корректировка существующего навыка. Используя поиск по строке, агент модифицирует проблемный участок алгоритма, не переписывая весь документ, что драматически экономит токены вывода.
  • edit: Полная структурная перезапись документа.
  • delete: Очистка библиотеки от нерелевантных процедур. Дополнительно агент имеет права доступа write_file и remove_file к директориям навыков для создания вспомогательных исполняемых файлов. Таким образом, спустя месяцы эксплуатации пользователь работает уже не с базовой моделью, загруженной из репозитория, а с глубоко персонализированной версией, чей интеллектуальный потенциал подкреплен уникальной библиотекой отлаженных процедур.

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

В процессе автономного выполнения масштабных задач (например, при рефакторинге крупных кодовых баз), ИИ-агенты неизбежно генерируют огромные объемы данных: они считывают десятки исходных файлов, выполняют сотни терминальных команд и получают длинные стектрейсы ошибок. Рано или поздно наступает момент исчерпания математических лимитов окна контекста языковой модели. Большинство существующих агентов на рынке решают эту проблему примитивным усечением (truncation) — они просто удаляют самые старые сообщения из истории, что неизбежно приводит к тому, что агент забывает изначальную суть задачи и начинает цикличные повторения уже выполненной работы.

Hermes Agent отказывается от слепого усечения в пользу интеллектуальной системы семантического сжатия. Ядром этого механизма является класс ContextCompressor, реализованный в модуле agent/context_compressor.py, который работает в тесной связке с алгоритмами префиксного кэширования (prompt caching) от провайдеров моделей. Двойная система компрессии активируется, когда объем истории диалога достигает конфигурируемого порога (по умолчанию 50% от максимального окна контекста). При срабатывании триггера внутри рабочего цикла агента запускается сложный четырехфазный алгоритм :

Фаза компрессииНазвание этапаМеханизм действия и алгоритмическая логика
Фаза 1Усечение вызовов инструментов (Tool Pruning)

Наименее затратный с вычислительной точки зрения этап. Система сканирует историю и находит старые, объемные выводы инструментов (например, содержимое файлов на 2000 строк). Эти блоки заменяются коротким строковым плейсхолдером: [Old tool output cleared to save context space]. Операция выполняется с алгоритмической сложностью O(n) без дорогостоящих вызовов LLM, мгновенно высвобождая огромные объемы памяти.

Фаза 2Защита семантических границ

Алгоритм маркирует критически важные зоны как неприкосновенные. Системный промпт (содержащий память и личность), первый обмен сообщениями (задающий изначальную цель) и последние ~20,000 токенов (текущий активный фокус) защищаются от изменений. Компрессии подвергается исключительно "середина" диалога.

Фаза 3Структурированная суммаризация

Вместо свободной текстовой генерации, которая часто приводит к потере фактов, система заставляет LLM использовать жесткий шаблон. Модель извлекает из сжимаемого фрагмента: 1. Базовую цель; 2. Ограничения пользователя; 3. Прогресс (какие файлы изменены, какие команды выполнены); 4. Текущий статус работы; 5. Ключевые принятые решения.

Фаза 4Рекомпозиция контекста

Сгенерированный структурированный блок возвращается в историю сообщений на место изъятых данных. Это восстанавливает логическую непрерывность для последующих рассуждений LLM, сохраняя суть без лишнего текстового шума.

Уязвимости алгоритма и оптимизация токеномики

Несмотря на передовой характер архитектуры ContextCompressor, глубокий аудит исходного кода (в рамках репозитория Nous Research) выявляет известную алгоритмическую уязвимость, связанную со статичным планированием бюджета токенов. В методе ContextCompressor._compute_summary_budget() жестко закодирован нижний предел объема генерируемого резюме: _MIN_SUMMARY_TOKENS = 2000.

Эта константа создает системную проблему (bug) для коротких диалогов. Если сессия содержит малый объем истории (например, 500–1000 токенов), но по каким-то причинам искусственно инициирует компрессию, алгоритм выделяет под резюме минимальный бюджет в 2000 токенов. Сгенерированный текст, обремененный обязательными заголовками Markdown, метаданными и хеджирующими формулировками LLM, парадоксальным образом оказывается больше, чем исходный фрагмент, который он должен был сжать. Это порождает порочный цикл (vicious cycle): суммарный объем токенов в контексте возрастает, что на следующей итерации снова заставляет систему запустить компрессию. В результате пользователи могут наблюдать деградацию сессии и так называемые «разрывы сессий» (session splits) каждые ~20 минут. Инженерное сообщество предложило исправление этой проблемы путем добавления защитной логики: система должна вычислять, превышает ли размер исходного текста compressible_tokens сумму summary_budget + min_overhead, и прерывать фазу суммаризации, если сжатие математически нецелесообразно.

Кроме того, для обеспечения отказоустойчивости в распределенных облачных средах, алгоритм содержит механизмы фоллбэка. Если API-провайдер не отвечает во время попытки генерации резюме (таймаут), система не завершает работу с ошибкой. Вместо этого она вставляет текстовый маркер, указывающий, какое количество сообщений было опущено из-за сбоя генерации, позволяя агенту продолжить работу с частичной потерей контекста, но без обрушения всего процесса.

Изоляция контекста и оркестрация субагентов

Масштабные рабочие процессы (например, комплексный рефакторинг или глубокий исследовательский анализ) неизбежно ведут к засорению оперативной памяти агента промежуточными данными: результатами поисковых запросов в интернете, содержимым неудачно прочитанных файлов или длинными отладочными логами. Hermes предлагает элегантное архитектурное решение этой проблемы через механизм жесткой оркестрации. Главный процесс имеет в своем распоряжении инструмент delegate_task, который позволяет ему порождать изолированные дочерние сущности (AIAgent) для независимого выполнения подзадач.

Детерминированность через полную изоляцию

Фундаментальным принципом работы субагентов Hermes является их абсолютная контекстная изоляция. В отличие от многоагентных систем, использующих общую шину состояний (shared state), дочерний агент Hermes запускается в полностью стерильной среде. Он не наследует историю диалогов родителя, не видит предыдущие вызовы инструментов и не имеет неявного понимания общего контекста проекта.

На первый взгляд, это кажется ограничением, но на практике такое архитектурное решение радикально повышает детерминированность вычислений. Поскольку субагент рождается с "чистым листом", родительский агент вынужден максимально четко, явно и исчерпывающе формулировать параметры передачи: атрибуты goal (цель) и context (данные) внутри вызова инструмента delegate_task. Обобщенный запрос вроде «Исправь эту ошибку» приведет к моментальному провалу субагента, так как он не знает, о какой ошибке идет речь. Родитель обязан передать конкретную директиву, например: «Исправь TypeError в файле api/handlers.py на строке 47». Из этих параметров для субагента формируется узкоспециализированный системный промпт. По завершении своей работы субагент не возвращает родителю свои пошаговые логи. Он отправляет обратно лишь краткое структурированное резюме: что было исследовано, какие факты найдены, какие файлы модифицированы и с какими непреодолимыми препятствиями он столкнулся. Это резюме аккуратно встраивается в поток диалога главного агента, сохраняя его контекст прозрачным и чистым от "шума".

Режимы выполнения, ограничения и иерархия

Система делегирования поддерживает два режима работы: одиночный синхронный вызов (Single Task Mode) и мощный асинхронный пакетный режим (Parallel Batch Mode). В пакетном режиме главный агент может инициировать параллельное выполнение нескольких задач (по умолчанию пул потоков, ThreadPoolExecutor, ограничивает конкурентность тремя процессами). Типичным паттерном применения является «Параллельное исследование» (Parallel Research): родительский агент разделяет аналитическую задачу на три потока и отправляет субагентов одновременно анализировать различные сегменты рынка или компоненты технологического стека, после чего агрегирует их выводы в единый отчет.

Свобода дочерних агентов жестко регламентирована многоуровневыми правилами безопасности:

  • Ролевые ограничения (Leaf-агенты): По умолчанию каждый порождаемый субагент классифицируется как листовой узел (leaf). Этим узлам на уровне ядра запрещен доступ к чувствительным инструментам. Они не могут использовать сам инструмент delegation (что исключает неконтролируемое рекурсивное размножение ботов, способное опустошить API-бюджет пользователя), не имеют доступа к инструментам памяти (что защищает файлы MEMORY.md от порчи частичными или ошибочными выводами) и лишены права использовать инструмент clarify, так как они работают в фоновом режиме и не могут вступать в диалог с человеком. Также для них заблокировано выполнение сырого скриптового кода, что принуждает модель использовать пошаговое логическое рассуждение (step-by-step reasoning).
  • Лимиты исполнения и таймауты: Во избежание бесконечных циклов рассуждений, каждый субагент жестко ограничен количеством допустимых итераций вызовов инструментов (по умолчанию 50 циклов). Кроме того, реализован строгий контроль времени жизни (Watchdog). Если дочерний процесс бездействует (не инициирует новых обращений к API языковой модели) в течение 600 секунд (10 минут), система безжалостно прерывает его работу (kills). В этом случае, для облегчения последующей отладки, ядро сбрасывает диагностический дамп состояния в директорию ~/.hermes/logs/subagent-timeout-<session>-<timestamp>.log.
  • Синхронность прерываний: Для родительского агента процесс делегирования является блокирующим синхронным вызовом. При этом система чутко реагирует на действия пользователя на верхнем уровне. Если человек прерывает текущую генерацию ответов главного агента (отправив новое сообщение, команду /stop или /new), этот сигнал аппаратного прерывания каскадно транслируется по дереву процессов. Все активные дочерние субагенты немедленно аннулируются, их промежуточный контекст отбрасывается, и система переходит в статус ожидания новых команд.

Иерархическая (глубокая) оркестрация возможна, если родительский процесс явно наделяет субагента ролью orchestrator при его создании. В таком случае дочерний узел получает доступ к инструменту delegation и может становиться родителем для собственных рабочих потоков. Эта многоуровневая структура контролируется глобальным конфигурационным параметром delegation.max_spawn_depth в файле config.yaml, который по умолчанию установлен в значение 1 (плоская архитектура), но может быть расширен для моделирования работы целого виртуального ИТ-департамента.

Расширение возможностей: Интеграция Model Context Protocol (MCP)

Развитие экосистемы автономных ИИ неизбежно упирается в способность агента взаимодействовать с внешним миром — закрытыми корпоративными сетями, базами данных и специализированными API-сервисами. Вместо того чтобы писать сотни индивидуальных адаптеров на Python для каждого возможного сервиса, разработчики Hermes Agent внедрили поддержку открытого стандарта Model Context Protocol (MCP). Это позволяет Hermes бесшовно подключаться к внешним серверам инструментов (GitHub, файловые хранилища, платформы браузерного тестирования, системы биллинга) и использовать их так, как если бы они были его нативными модулями.

Топология подключений и механизмы авторизации MCP

Интеграция MCP в Hermes архитектурно разделяется на два различных типа подключений, конфигурируемых в файле ~/.hermes/config.yaml :

  1. Stdio Серверы (Локальное выполнение): Эти серверы запускаются как локальные дочерние подпроцессы на той же машине (хосте или VPS), где функционирует ядро Hermes. Коммуникация с ними осуществляется с минимальными задержками через стандартные потоки ввода/вывода (stdin/stdout). Этот тип серверов идеален для выполнения операций с файловой системой, локальными SQL-базами данных или для управления контейнерными инфраструктурами. В конфигурации прописываются пути к исполняемым файлам (ключ command), аргументы вызова (args) и специфичные переменные окружения (env).
  2. HTTP Серверы (Удаленные узлы): Используются для связи с облачными платформами или внутренними защищенными сервисами компании по протоколам HTTP/HTTPS (REST и Server-Sent Events). Конфигурация требует указания url и заголовков headers (например, для передачи токенов Bearer).

Особую инженерную сложность представляет реализация аутентификации для облачных HTTP-серверов, требующих протокола OAuth 2.1 (таких платформ, как Linear, Figma, Sentry или Stripe). Hermes берет на себя все бремя управления состоянием: он осуществляет динамическую регистрацию клиента, генерирует криптографические вызовы по спецификации PKCE и управляет циклами обновления токенов (refresh tokens). Токены авторизации надежно кэшируются в зашифрованном виде в директории ~/.hermes/mcp-tokens/<server>.json. При первоначальном подключении к такому сервису Hermes инициирует открытие веб-браузера пользователя для авторизации, ожидая возврата токена на локальный loopback-порт. Однако, поскольку агенты часто работают на удаленных VPS (headless environments) без графических интерфейсов, разработчики предусмотрели механизмы обхода: систему "paste-back" (когда пользователь вручную копирует строку параметров из адресной строки и вставляет ее в консоль агента) или использование проброса портов (SSH port forwarding). В случае с платформами, отвергающими динамическую регистрацию клиентов (например, Atlassian или Google Drive), конфигурация позволяет разработчикам предоставить статические ключи client_id и client_secret.

Управление пространством имен, гранулярный контроль и реверсивный режим

При подключении к десяткам внешних MCP-серверов неизбежно возникает риск коллизий имен (например, если сервер GitHub и локальный сервер файловой системы оба транслируют инструмент с именем read_file). Для устранения этой проблемы Hermes реализует строгую политику управления пространствами имен (Namespacing). Все инструменты, обнаруживаемые при подключении MCP-сервера, автоматически регистрируются в реестре агента с принудительным добавлением префикса: mcp_<название_сервера>_<имя_инструмента> (например, mcp_filesystem_read_file).

Архитектура протокола поддерживает динамическое обнаружение инструментов. Если внешний MCP-сервер во время работы изменяет конфигурацию своих инструментов, он отправляет событие notifications/tools/list_changed. Ядро Hermes перехватывает этот сигнал и автоматически, «на лету», выполняет ре-регистрацию инструментов в своем реестре, без необходимости перезагрузки основного процесса демона.

Учитывая, что ИИ-агенты могут вести себя непредсказуемо, Hermes предоставляет администраторам мощные механизмы гранулярного контроля безопасности. В конфигурации для каждого MCP-сервера можно определить массивы include (белые списки разрешенных инструментов) и exclude (черные списки запрещенных). Это критически важно в корпоративных интеграциях: например, подключив Stripe, администратор может разрешить агенту инструмент list_invoices, но жестко заблокировать деструктивное действие delete_customer. В случае конфликтов директив, белый список (include) имеет наивысший приоритет. Также Hermes автоматически регистрирует утилитарные инструменты (Ресурсы и Промпты), такие как list_resources и list_prompts, если удаленный сервер их поддерживает, предоставляя агенту доступ к преднастроенным шаблонам внешних систем.

Еще одной уникальной особенностью является возможность обратной интеграции — Reverse MCP Integration. Запустив команду hermes mcp serve, Hermes сам превращается в Stdio MCP-сервер, готовый принимать подключения от сторонних совместимых клиентов, таких как IDE Cursor, Claude Code или OpenAI Codex. В таком режиме Hermes выступает как транзитный шлюз сообщений (Messaging Bridge). Это позволяет стороннему программирующему агенту, запущенному в IDE пользователя, прозрачно читать и отправлять сообщения в рабочие чаты (Slack, Telegram) через инфраструктуру шлюза Hermes, извлекать медиавложения или ожидать подтверждения действий от человека с помощью инструментов асинхронного поллинга событий (events_poll и events_wait). Для удобства пользователей Nous Research поддерживает курируемый, прошедший аудит безопасности каталог официальных MCP-серверов, доступный прямо из CLI через команды группы hermes mcp catalog.

Эволюционная самооптимизация и машинное обучение: Переход к мета-алгоритмам

Рынок искусственного интеллекта традиционно сфокусирован на экстенсивном росте: разработке все более крупных моделей с триллионами параметров и огромными окнами контекста. Проект Hermes меняет вектор конкуренции. Создатели агента внедряют концепт накопления интеллекта в состоянии конкретного инстанса, а не в базовых весах LLM. Вершиной этой архитектуры является подпроект hermes-agent-self-evolution, внедряющий механизмы эволюционной самооптимизации.

Этот подпроект формализует концепцию отражающего эволюционного поиска (reflective evolutionary search). Система решает сложнейшую проблему индустрии: как заставить агента самосовершенствоваться без необходимости использования гигантских вычислительных кластеров графических процессоров (GPU) для тонкой настройки весов (Fine-tuning).

Решение найдено на пересечении двух инновационных алгоритмических фреймворков: DSPy (Declarative Self-Improving Language Programs) и алгоритма GEPA (Genetic-Pareto Prompt Evolution). Вместо изменения нейронных связей самой модели, эволюционный процесс направлен на модификацию промежуточных структур данных агента: системных промптов, текстовых описаний инструментов в реестре и исходного кода процедур в файлах SKILL.md.

Процесс эволюции работает по классическим генетическим принципам:

  1. Мутация и кроссовер: Используя API языковых моделей, фреймворк вносит микроскопические изменения в текст навыка, генерируя десятки различных вариаций одного и того же алгоритма решения задачи.
  2. Оценка и импорт данных: В состав проекта включен специализированный импортер сессий. Он извлекает логи неудачных попыток решения задач из локальной базы данных state.db агента и конвертирует их в наборы тестовых данных (datasets). Эти логи используются как полигон для симуляции: сгенерированные мутанты навыков прогоняются через симулятор, решая те же задачи, на которых агент ранее потерпел неудачу.
  3. Оптимизация на границе Парето: GEPA оценивает результаты прогонов по множеству часто конфликтующих метрик: затратам токенов (скорость и цена), проценту успешного выполнения и уровню галлюцинаций. Алгоритм отбирает версии, находящиеся на границе Парето (оптимальные компромиссы), и сохраняет победивший вариант кода обратно в файл SKILL.md.

Весь процесс выполняется исключительно путем API-вызовов (mutating text, evaluating results), что делает его невероятно дешевым — один глубокий цикл оптимизации обходится пользователю в сумму от $2 до $10, полностью элиминируя потребность в закупке аппаратного обеспечения для ML-разработки.

Более того, архитектура Hermes обладает глубокой ценностью для исследовательских лабораторий. Благодаря интеграции с фреймворком Atropos, агент способен генерировать пакетные траектории данных MLOps (Batch trajectory generation). Каждый шаг рассуждений агента, каждый вызов терминала и реакция среды аккуратно протоколируются и экспортируются в виде массивов данных обучения с подкреплением (RL-траекторий). В перспективе это позволяет исследовательским группам использовать массив децентрализованных развернутых агентов Hermes как распределенный механизм сбора эмпирического опыта для обучения следующего, еще более совершенного поколения языковых моделей.

Стратегические перспективы автономных вычислительных сущностей

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

Архитектурные новации, заложенные в Hermes, доказывают, что проблема ограниченного окна контекста и отсутствия памяти не может быть решена исключительно экстенсивным аппаратным масштабированием базовых моделей. Эффективное решение лежит в плоскости сложной программной инженерии: использовании паттернов «замороженных снимков» для работы с кэшем промптов, интеллектуальной компрессии данных, фонового диалектического анализа с применением графовых моделей пользователя (подобных Honcho) и строгой оркестрации контекстно-изолированных субагентов.

Переход от запоминания сырых фактов к алгоритмизации процедур через открытый стандарт навыков (agentskills.io) наделяет ИИ способностью к истинному инженерному созиданию. Способность системы анализировать свои неудачные попытки в базе данных state.db и применять к ним методы генетической оптимизации DSPy + GEPA переводит процесс улучшения ИИ из закрытых серверных центров корпораций прямо на сервер конечного пользователя.

В результате мы наблюдаем зарождение систем нового класса: ИИ как системной службы (daemon) с независимым жизненным циклом. Оснащенный адаптерами Model Context Protocol для связи с внешним миром и интегрированный через шлюзы с мобильными мессенджерами, такой агент перестает быть просто программой-интерпретатором команд. Он становится автономным узлом обработки информации, который помнит весь контекст вчерашних переговоров, самостоятельно совершенствует свои навыки программирования ночью и просыпается утром математически и логически более эффективным, чем был накануне. Именно эта кривая накопления индивидуальной ценности — где интеллектуальный капитал хранится в состоянии самого агента, а не в API провайдера модели — определит облик персональных и корпоративных вычислительных систем в ближайшем будущем.

Dmitriy Nyashkin

Dmitriy Nyashkin

Веб разработчик, промпт-инженер
Saint-Petersburg